-- This file is generated by tools/json2lua.js

local ffxiv_ipc_player_stats = Proto("ffxiv_ipc_player_stats", "FFXIV-IPC Player Stats")

local player_stats_fields = {
  strength              = ProtoField.uint32("ffxiv_ipc_player_stats.strength", "strength", base.DEC),
  dexterity             = ProtoField.uint32("ffxiv_ipc_player_stats.dexterity", "dexterity", base.DEC),
  vitality              = ProtoField.uint32("ffxiv_ipc_player_stats.vitality", "vitality", base.DEC),
  intelligence          = ProtoField.uint32("ffxiv_ipc_player_stats.intelligence", "intelligence", base.DEC),
  mind                  = ProtoField.uint32("ffxiv_ipc_player_stats.mind", "mind", base.DEC),
  piety                 = ProtoField.uint32("ffxiv_ipc_player_stats.piety", "piety", base.DEC),
  hp                    = ProtoField.uint32("ffxiv_ipc_player_stats.hp", "hp", base.DEC),
  mp                    = ProtoField.uint32("ffxiv_ipc_player_stats.mp", "mp", base.DEC),
  tp                    = ProtoField.uint32("ffxiv_ipc_player_stats.tp", "tp", base.DEC),
  gp                    = ProtoField.uint32("ffxiv_ipc_player_stats.gp", "gp", base.DEC),
  cp                    = ProtoField.uint32("ffxiv_ipc_player_stats.cp", "cp", base.DEC),
  delay                 = ProtoField.uint32("ffxiv_ipc_player_stats.delay", "delay", base.DEC),
  tenacity              = ProtoField.uint32("ffxiv_ipc_player_stats.tenacity", "tenacity", base.DEC),
  attack_power          = ProtoField.uint32("ffxiv_ipc_player_stats.attack_power", "attackPower", base.DEC),
  defense               = ProtoField.uint32("ffxiv_ipc_player_stats.defense", "defense", base.DEC),
  direct_hit_rate       = ProtoField.uint32("ffxiv_ipc_player_stats.direct_hit_rate", "directHitRate", base.DEC),
  evasion               = ProtoField.uint32("ffxiv_ipc_player_stats.evasion", "evasion", base.DEC),
  magic_defense         = ProtoField.uint32("ffxiv_ipc_player_stats.magic_defense", "magicDefense", base.DEC),
  critical_hit          = ProtoField.uint32("ffxiv_ipc_player_stats.critical_hit", "criticalHit", base.DEC),
  attack_magic_potency  = ProtoField.uint32("ffxiv_ipc_player_stats.attack_magic_potency", "attackMagicPotency", base.DEC),
  healing_magic_potency = ProtoField.uint32("ffxiv_ipc_player_stats.healing_magic_potency", "healingMagicPotency", base.DEC),
  elemental_bonus       = ProtoField.uint32("ffxiv_ipc_player_stats.elemental_bonus", "elementalBonus", base.DEC),
  determination         = ProtoField.uint32("ffxiv_ipc_player_stats.determination", "determination", base.DEC),
  skill_speed           = ProtoField.uint32("ffxiv_ipc_player_stats.skill_speed", "skillSpeed", base.DEC),
  spell_speed           = ProtoField.uint32("ffxiv_ipc_player_stats.spell_speed", "spellSpeed", base.DEC),
  haste                 = ProtoField.uint32("ffxiv_ipc_player_stats.haste", "haste", base.DEC),
  craftsmanship         = ProtoField.uint32("ffxiv_ipc_player_stats.craftsmanship", "craftsmanship", base.DEC),
  control               = ProtoField.uint32("ffxiv_ipc_player_stats.control", "control", base.DEC),
  gathering             = ProtoField.uint32("ffxiv_ipc_player_stats.gathering", "gathering", base.DEC),
  perception            = ProtoField.uint32("ffxiv_ipc_player_stats.perception", "perception", base.DEC),
  unknown0              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown0", "unknown0", base.DEC),
  unknown1              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown1", "unknown1", base.DEC),
  unknown2              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown2", "unknown2", base.DEC),
  unknown3              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown3", "unknown3", base.DEC),
  unknown4              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown4", "unknown4", base.DEC),
  unknown5              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown5", "unknown5", base.DEC),
  unknown6              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown6", "unknown6", base.DEC),
  unknown7              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown7", "unknown7", base.DEC),
  unknown8              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown8", "unknown8", base.DEC),
  unknown9              = ProtoField.uint32("ffxiv_ipc_player_stats.unknown9", "unknown9", base.DEC),
  unknown10             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown10", "unknown10", base.DEC),
  unknown11             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown11", "unknown11", base.DEC),
  unknown12             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown12", "unknown12", base.DEC),
  unknown13             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown13", "unknown13", base.DEC),
  unknown14             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown14", "unknown14", base.DEC),
  unknown15             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown15", "unknown15", base.DEC),
  unknown16             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown16", "unknown16", base.DEC),
  unknown17             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown17", "unknown17", base.DEC),
  unknown18             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown18", "unknown18", base.DEC),
  unknown19             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown19", "unknown19", base.DEC),
  unknown20             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown20", "unknown20", base.DEC),
  unknown21             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown21", "unknown21", base.DEC),
  unknown22             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown22", "unknown22", base.DEC),
  unknown23             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown23", "unknown23", base.DEC),
  unknown24             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown24", "unknown24", base.DEC),
  unknown25             = ProtoField.uint32("ffxiv_ipc_player_stats.unknown25", "unknown25", base.DEC),
}

ffxiv_ipc_player_stats.fields = player_stats_fields

function ffxiv_ipc_player_stats.dissector(tvbuf, pktinfo, root)
  local tree = root:add(ffxiv_ipc_player_stats, tvbuf)
  pktinfo.cols.info:set("Player Stats")

  local len = tvbuf:len()

  -- dissect the strength field
  local strength_tvbr = tvbuf:range(0, 4)
  local strength_val  = strength_tvbr:le_uint()
  tree:add_le(player_stats_fields.strength, strength_tvbr, strength_val)

  -- dissect the dexterity field
  local dexterity_tvbr = tvbuf:range(4, 4)
  local dexterity_val  = dexterity_tvbr:le_uint()
  tree:add_le(player_stats_fields.dexterity, dexterity_tvbr, dexterity_val)

  -- dissect the vitality field
  local vitality_tvbr = tvbuf:range(8, 4)
  local vitality_val  = vitality_tvbr:le_uint()
  tree:add_le(player_stats_fields.vitality, vitality_tvbr, vitality_val)

  -- dissect the intelligence field
  local intelligence_tvbr = tvbuf:range(12, 4)
  local intelligence_val  = intelligence_tvbr:le_uint()
  tree:add_le(player_stats_fields.intelligence, intelligence_tvbr, intelligence_val)

  -- dissect the mind field
  local mind_tvbr = tvbuf:range(16, 4)
  local mind_val  = mind_tvbr:le_uint()
  tree:add_le(player_stats_fields.mind, mind_tvbr, mind_val)

  -- dissect the piety field
  local piety_tvbr = tvbuf:range(20, 4)
  local piety_val  = piety_tvbr:le_uint()
  tree:add_le(player_stats_fields.piety, piety_tvbr, piety_val)

  -- dissect the hp field
  local hp_tvbr = tvbuf:range(24, 4)
  local hp_val  = hp_tvbr:le_uint()
  tree:add_le(player_stats_fields.hp, hp_tvbr, hp_val)

  -- dissect the mp field
  local mp_tvbr = tvbuf:range(28, 4)
  local mp_val  = mp_tvbr:le_uint()
  tree:add_le(player_stats_fields.mp, mp_tvbr, mp_val)

  -- dissect the tp field
  local tp_tvbr = tvbuf:range(32, 4)
  local tp_val  = tp_tvbr:le_uint()
  tree:add_le(player_stats_fields.tp, tp_tvbr, tp_val)

  -- dissect the gp field
  local gp_tvbr = tvbuf:range(36, 4)
  local gp_val  = gp_tvbr:le_uint()
  tree:add_le(player_stats_fields.gp, gp_tvbr, gp_val)

  -- dissect the cp field
  local cp_tvbr = tvbuf:range(40, 4)
  local cp_val  = cp_tvbr:le_uint()
  tree:add_le(player_stats_fields.cp, cp_tvbr, cp_val)

  -- dissect the delay field
  local delay_tvbr = tvbuf:range(44, 4)
  local delay_val  = delay_tvbr:le_uint()
  tree:add_le(player_stats_fields.delay, delay_tvbr, delay_val)

  -- dissect the tenacity field
  local tenacity_tvbr = tvbuf:range(48, 4)
  local tenacity_val  = tenacity_tvbr:le_uint()
  tree:add_le(player_stats_fields.tenacity, tenacity_tvbr, tenacity_val)

  -- dissect the attack_power field
  local attack_power_tvbr = tvbuf:range(52, 4)
  local attack_power_val  = attack_power_tvbr:le_uint()
  tree:add_le(player_stats_fields.attack_power, attack_power_tvbr, attack_power_val)

  -- dissect the defense field
  local defense_tvbr = tvbuf:range(56, 4)
  local defense_val  = defense_tvbr:le_uint()
  tree:add_le(player_stats_fields.defense, defense_tvbr, defense_val)

  -- dissect the direct_hit_rate field
  local direct_hit_rate_tvbr = tvbuf:range(60, 4)
  local direct_hit_rate_val  = direct_hit_rate_tvbr:le_uint()
  tree:add_le(player_stats_fields.direct_hit_rate, direct_hit_rate_tvbr, direct_hit_rate_val)

  -- dissect the evasion field
  local evasion_tvbr = tvbuf:range(64, 4)
  local evasion_val  = evasion_tvbr:le_uint()
  tree:add_le(player_stats_fields.evasion, evasion_tvbr, evasion_val)

  -- dissect the magic_defense field
  local magic_defense_tvbr = tvbuf:range(68, 4)
  local magic_defense_val  = magic_defense_tvbr:le_uint()
  tree:add_le(player_stats_fields.magic_defense, magic_defense_tvbr, magic_defense_val)

  -- dissect the critical_hit field
  local critical_hit_tvbr = tvbuf:range(72, 4)
  local critical_hit_val  = critical_hit_tvbr:le_uint()
  tree:add_le(player_stats_fields.critical_hit, critical_hit_tvbr, critical_hit_val)

  -- dissect the attack_magic_potency field
  local attack_magic_potency_tvbr = tvbuf:range(76, 4)
  local attack_magic_potency_val  = attack_magic_potency_tvbr:le_uint()
  tree:add_le(player_stats_fields.attack_magic_potency, attack_magic_potency_tvbr, attack_magic_potency_val)

  -- dissect the healing_magic_potency field
  local healing_magic_potency_tvbr = tvbuf:range(80, 4)
  local healing_magic_potency_val  = healing_magic_potency_tvbr:le_uint()
  tree:add_le(player_stats_fields.healing_magic_potency, healing_magic_potency_tvbr, healing_magic_potency_val)

  -- dissect the elemental_bonus field
  local elemental_bonus_tvbr = tvbuf:range(84, 4)
  local elemental_bonus_val  = elemental_bonus_tvbr:le_uint()
  tree:add_le(player_stats_fields.elemental_bonus, elemental_bonus_tvbr, elemental_bonus_val)

  -- dissect the determination field
  local determination_tvbr = tvbuf:range(88, 4)
  local determination_val  = determination_tvbr:le_uint()
  tree:add_le(player_stats_fields.determination, determination_tvbr, determination_val)

  -- dissect the skill_speed field
  local skill_speed_tvbr = tvbuf:range(92, 4)
  local skill_speed_val  = skill_speed_tvbr:le_uint()
  tree:add_le(player_stats_fields.skill_speed, skill_speed_tvbr, skill_speed_val)

  -- dissect the spell_speed field
  local spell_speed_tvbr = tvbuf:range(96, 4)
  local spell_speed_val  = spell_speed_tvbr:le_uint()
  tree:add_le(player_stats_fields.spell_speed, spell_speed_tvbr, spell_speed_val)

  -- dissect the haste field
  local haste_tvbr = tvbuf:range(100, 4)
  local haste_val  = haste_tvbr:le_uint()
  tree:add_le(player_stats_fields.haste, haste_tvbr, haste_val)

  -- dissect the craftsmanship field
  local craftsmanship_tvbr = tvbuf:range(104, 4)
  local craftsmanship_val  = craftsmanship_tvbr:le_uint()
  tree:add_le(player_stats_fields.craftsmanship, craftsmanship_tvbr, craftsmanship_val)

  -- dissect the control field
  local control_tvbr = tvbuf:range(108, 4)
  local control_val  = control_tvbr:le_uint()
  tree:add_le(player_stats_fields.control, control_tvbr, control_val)

  -- dissect the gathering field
  local gathering_tvbr = tvbuf:range(112, 4)
  local gathering_val  = gathering_tvbr:le_uint()
  tree:add_le(player_stats_fields.gathering, gathering_tvbr, gathering_val)

  -- dissect the perception field
  local perception_tvbr = tvbuf:range(116, 4)
  local perception_val  = perception_tvbr:le_uint()
  tree:add_le(player_stats_fields.perception, perception_tvbr, perception_val)

  -- dissect the unknown0 field
  local unknown0_tvbr = tvbuf:range(120, 4)
  local unknown0_val  = unknown0_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown0, unknown0_tvbr, unknown0_val)

  -- dissect the unknown1 field
  local unknown1_tvbr = tvbuf:range(124, 4)
  local unknown1_val  = unknown1_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown1, unknown1_tvbr, unknown1_val)

  -- dissect the unknown2 field
  local unknown2_tvbr = tvbuf:range(128, 4)
  local unknown2_val  = unknown2_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown2, unknown2_tvbr, unknown2_val)

  -- dissect the unknown3 field
  local unknown3_tvbr = tvbuf:range(132, 4)
  local unknown3_val  = unknown3_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown3, unknown3_tvbr, unknown3_val)

  -- dissect the unknown4 field
  local unknown4_tvbr = tvbuf:range(136, 4)
  local unknown4_val  = unknown4_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown4, unknown4_tvbr, unknown4_val)

  -- dissect the unknown5 field
  local unknown5_tvbr = tvbuf:range(140, 4)
  local unknown5_val  = unknown5_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown5, unknown5_tvbr, unknown5_val)

  -- dissect the unknown6 field
  local unknown6_tvbr = tvbuf:range(144, 4)
  local unknown6_val  = unknown6_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown6, unknown6_tvbr, unknown6_val)

  -- dissect the unknown7 field
  local unknown7_tvbr = tvbuf:range(148, 4)
  local unknown7_val  = unknown7_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown7, unknown7_tvbr, unknown7_val)

  -- dissect the unknown8 field
  local unknown8_tvbr = tvbuf:range(152, 4)
  local unknown8_val  = unknown8_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown8, unknown8_tvbr, unknown8_val)

  -- dissect the unknown9 field
  local unknown9_tvbr = tvbuf:range(156, 4)
  local unknown9_val  = unknown9_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown9, unknown9_tvbr, unknown9_val)

  -- dissect the unknown10 field
  local unknown10_tvbr = tvbuf:range(160, 4)
  local unknown10_val  = unknown10_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown10, unknown10_tvbr, unknown10_val)

  -- dissect the unknown11 field
  local unknown11_tvbr = tvbuf:range(164, 4)
  local unknown11_val  = unknown11_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown11, unknown11_tvbr, unknown11_val)

  -- dissect the unknown12 field
  local unknown12_tvbr = tvbuf:range(168, 4)
  local unknown12_val  = unknown12_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown12, unknown12_tvbr, unknown12_val)

  -- dissect the unknown13 field
  local unknown13_tvbr = tvbuf:range(172, 4)
  local unknown13_val  = unknown13_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown13, unknown13_tvbr, unknown13_val)

  -- dissect the unknown14 field
  local unknown14_tvbr = tvbuf:range(176, 4)
  local unknown14_val  = unknown14_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown14, unknown14_tvbr, unknown14_val)

  -- dissect the unknown15 field
  local unknown15_tvbr = tvbuf:range(180, 4)
  local unknown15_val  = unknown15_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown15, unknown15_tvbr, unknown15_val)

  -- dissect the unknown16 field
  local unknown16_tvbr = tvbuf:range(184, 4)
  local unknown16_val  = unknown16_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown16, unknown16_tvbr, unknown16_val)

  -- dissect the unknown17 field
  local unknown17_tvbr = tvbuf:range(188, 4)
  local unknown17_val  = unknown17_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown17, unknown17_tvbr, unknown17_val)

  -- dissect the unknown18 field
  local unknown18_tvbr = tvbuf:range(192, 4)
  local unknown18_val  = unknown18_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown18, unknown18_tvbr, unknown18_val)

  -- dissect the unknown19 field
  local unknown19_tvbr = tvbuf:range(196, 4)
  local unknown19_val  = unknown19_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown19, unknown19_tvbr, unknown19_val)

  -- dissect the unknown20 field
  local unknown20_tvbr = tvbuf:range(200, 4)
  local unknown20_val  = unknown20_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown20, unknown20_tvbr, unknown20_val)

  -- dissect the unknown21 field
  local unknown21_tvbr = tvbuf:range(204, 4)
  local unknown21_val  = unknown21_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown21, unknown21_tvbr, unknown21_val)

  -- dissect the unknown22 field
  local unknown22_tvbr = tvbuf:range(208, 4)
  local unknown22_val  = unknown22_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown22, unknown22_tvbr, unknown22_val)

  -- dissect the unknown23 field
  local unknown23_tvbr = tvbuf:range(212, 4)
  local unknown23_val  = unknown23_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown23, unknown23_tvbr, unknown23_val)

  -- dissect the unknown24 field
  local unknown24_tvbr = tvbuf:range(216, 4)
  local unknown24_val  = unknown24_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown24, unknown24_tvbr, unknown24_val)

  -- dissect the unknown25 field
  local unknown25_tvbr = tvbuf:range(220, 4)
  local unknown25_val  = unknown25_tvbr:le_uint()
  tree:add_le(player_stats_fields.unknown25, unknown25_tvbr, unknown25_val)

  return len
end