{
  "version": 1,
  "kind": "hwanse-battle-damage-formula-trace-review",
  "source": "tools/build_battle_damage_formula_trace_review.py",
  "status": "partial-formula-trace",
  "exe": {
    "path": "Hwanse2.exe",
    "imageBaseHex": "0x00400000",
    "familyTableVaHex": "0x00546970"
  },
  "summary": {
    "confirmed": [
      "0x433f0e가 hit unit payload를 선택하고 unit byte 0..2/5/7을 전투 결과 필드로 넘기는 지점이다.",
      "hit unit byte[3]은 현재 추출된 모든 unit에서 0x00으로 고정되어 reserved/unused로 둔다.",
      "hit unit byte[4]는 target scope id다. 0x01 self/setup, 0x05 all allies, 0x06 all enemies, 0x09 one ally, 0x0a one enemy로 분리된다.",
      "0x433649는 payload hit-unit byte[4]를 읽고, 0x433545/0x4335c6은 이를 runtime actor +0x67 target selector에 쓴다.",
      "0x40fa6d는 target scope bit 0x08로 selected-target branch를 가르고, 0x40f57c action setup은 selected target latch 0x0059e347을 actor +0x61로 복사한다.",
      "0x433c99/0x433dc0은 actor +0x67 low nibble과 +0x61 selected target index로 target loop의 start/end actor index를 계산하고, 0x435538은 같은 selector로 hit-unit target loop를 돈다.",
      "hit unit byte[6]은 hit/avoid class index다. 0x4342e8..0x4342ee가 unit[6]을 읽어 target +0x36+index 명중 보정 테이블을 참조한다.",
      "byte[6] 0..3은 내부 명중 판정 class로 승격한다. 0=상단/공중/상승, 1=일반, 2=하단/지면/다운, 3=잡기/밀착 특수 판정이다.",
      "actor row +0x28..+0x2b는 target +0x36..+0x39 hit/avoid class table과 같은 계열의 전투 보정 테이블로 쓰인다.",
      "0x00546970은 hit unit family byte로 인덱싱되는 family handler table이다.",
      "0x4340ae는 target +0x6d result mode dispatcher이다. mode 0은 HP damage, mode 2는 HP recovery로 분기한다.",
      "0x4353f8은 target +0x08 current HP 감소 함수, 0x435295는 target +0x08 HP 회복 함수, 0x435356은 MP 회복 함수로 확인된다.",
      "payload status byte target +0x6c는 0x4344ab에서 성공/실패 검사를 거쳐 실패 시 0으로 지워진다.",
      "target +0x62 bit 0x20/0x08의 표시 분기는 battle_result_display_branch_review와 battle_result_helper_label_review에서 각각 full miss / guard-glancing chip result로 확정됐다.",
      "target +0x6e result value는 battle_damage_digit_display_review에서 btl_etc F54..F63 숫자 표시 입력으로 확정됐다.",
      "attacker +0x62 bit 0x10은 stat/random gate로 세워지는 alternate result bit이며, alternate damage formula와 0xc2 alt result sound/helper를 선택한 뒤 소비 시 지워진다.",
      "actor +0x28은 0x4343db에서 attacker-side RNG range/base로 쓰여 +0x62 bit 0x10 critical/alternate 판정을 만들고, 0x4344ab 상태 성공 gate에서도 attacker-side 계수로 참여한다. 상태창/장비/레벨업 운 경로와 분리된 숨은 전투 발동률 계수다.",
      "0x40ef16 result consumer는 +0x10일 때 stream +3 WLK를 읽고 helper runner 0x402321 / child script table [0x442da1+0x150] 경로를 사용한 뒤 +0x10을 지운다.",
      "battle_stat_flag_status_semantics_review에서 actor +0x1c/+0x20/+0x22/+0x24/+0x26은 공격력/방어력/기술력/순발력/운으로 승격됐다.",
      "critical은 별도 텍스트가 아니라 섬광·전용 사운드·높은 데미지로 인지된다는 수동 관찰이 있고, 이는 0x10의 alternate damage/result sound/helper 경로와 맞다."
    ],
    "notYetConfirmed": [
      "critical alternate WLK id 14와 palette flash/fade child script는 확인됐다. 남은 것은 브라우저 러너에서 VM tick을 wall-clock ms로 환산하는 미세 타이밍이다."
    ],
    "familyHandlerUniqueCount": 17,
    "familyRows": 64,
    "functionRows": 13
  },
  "pipeline": [
    "a6 target loop",
    "0x433a30 target eligibility",
    "0x433f0e hit unit select: payload + 0x16 + hitIndex*8",
    "unit byte0..2 × attacker +0x80/+0x82/+0x84 -> attacker +0x70/+0x72/+0x74",
    "unit byte3 -> reserved/unused constant 0x00 in current records",
    "unit byte4 -> 0x433649 -> actor +0x67 target selector; selected target latch 0x0059e347 -> actor +0x61",
    "unit byte5 -> target +0x6b family -> 0x00546970[family]",
    "unit byte6 -> hit/avoid class index used against runtime actor +0x36 table",
    "unit byte7 -> target +0x6c status effect id",
    "family handler computes result into temporary +0x6e and target +0x6d mode",
    "0x4340ae applies target result: damage/recover/display state",
    "target +0x68 display update spawns target result object script and 0xc2 result sound"
  ],
  "fieldEvidence": [
    {
      "offset": "+0x08",
      "role": "current HP",
      "evidence": "0x4353f8 subtracts from it; 0x435295 adds to it"
    },
    {
      "offset": "+0x0a",
      "role": "max HP",
      "evidence": "0x435295 clamps +0x08 to it"
    },
    {
      "offset": "+0x0e",
      "role": "current MP",
      "evidence": "0x435356 adds to it"
    },
    {
      "offset": "+0x10",
      "role": "max MP",
      "evidence": "0x435356 clamps +0x0e to it"
    },
    {
      "offset": "+0x28",
      "role": "숨은 상태/크리티컬 발동률 계수",
      "evidence": "0x4343db에서 attacker-side RNG range/base로 쓰이고 +0x62 bit 0x10 판정을 만든다. 0x4344ab 상태 성공 gate에서도 attacker-side 계수로 읽힌다. 상태창/장비/레벨업 운 경로에는 나타나지 않는다"
    },
    {
      "offset": "+0x58",
      "role": "special action family switch",
      "evidence": "0x433f0e alternate table 0x546a38 path if nonzero"
    },
    {
      "offset": "+0x59",
      "role": "skill id",
      "evidence": "0x433f0e payload table index"
    },
    {
      "offset": "+0x61",
      "role": "selected target actor index",
      "evidence": "0x40f65f copies selected target latch 0x0059e347 into actor +0x61; 0x433c99/0x433dc0/0x435538 consume it as a single-target range"
    },
    {
      "offset": "+0x62",
      "role": "battle result/status flags",
      "evidence": "0x20/0x08 branch flags, 0x10 alternate-result, 0x40 zero-HP/death, 0x80 unavailable/down state"
    },
    {
      "offset": "+0x68",
      "role": "display update flag",
      "evidence": "state/result functions set it to 1"
    },
    {
      "offset": "+0x6a",
      "role": "target last skill id",
      "evidence": "0x433f0e copies attacker +0x59 into target +0x6a"
    },
    {
      "offset": "+0x6b",
      "role": "hit family id",
      "evidence": "unit byte5 is copied here and indexes target resistance table"
    },
    {
      "offset": "+0x6c",
      "role": "status effect/result id",
      "evidence": "unit byte7 copied here; 0x4344ab may clear it when the status gate fails"
    },
    {
      "offset": "+0x6d",
      "role": "result apply mode",
      "evidence": "0x4340ae switch: 0 damage, 1 no apply, 2 recovery"
    },
    {
      "offset": "+0x6e",
      "role": "result value",
      "evidence": "runtime damage number; 0x4353f8/0x435295 consume it"
    },
    {
      "offset": "unit byte[4]",
      "role": "target scope id",
      "evidence": "0x433649 reads payload +0x16 + hitIndex*8 + 4, 0x433545/0x4335c6 write it to actor +0x67, 0x40fa6d uses bit 0x08 to branch into nested target-selection script"
    },
    {
      "offset": "unit byte[6]",
      "role": "hit/avoid class index",
      "evidence": "0x4342e8 reads unit[6], then 0x4342ee indexes target actor +0x36+unitByte6. Labels: 0=상단/공중/상승, 1=일반, 2=하단/지면/다운, 3=잡기/밀착 특수"
    },
    {
      "offset": "+0x70/+0x72/+0x74",
      "role": "unit-scaled attack components",
      "evidence": "unit bytes 0..2 multiply attacker +0x80/+0x82/+0x84"
    },
    {
      "offset": "+0x80/+0x82/+0x84",
      "role": "skill/context coefficients",
      "evidence": "source operands for unit byte0..2 scaling"
    }
  ],
  "unitSummary": {
    "skillRecordCount": 281,
    "unitCount": 452,
    "familyCounts": {
      "0x10": 154,
      "0x12": 76,
      "0x16": 58,
      "0x11": 27,
      "0x13": 25,
      "0x15": 24,
      "0x14": 14,
      "0x17": 13,
      "0x19": 9,
      "0x20": 7,
      "0x28": 6,
      "0x21": 5,
      "0x29": 4,
      "0x25": 4,
      "0x18": 3,
      "0x01": 3,
      "0x02": 3,
      "0x2f": 3,
      "0x03": 3,
      "0x24": 2,
      "0x27": 2,
      "0x26": 1,
      "0x2a": 1,
      "0x2c": 1,
      "0x23": 1,
      "0x2e": 1,
      "0x22": 1,
      "0x2d": 1
    },
    "statusCounts": {
      "0x00 none": 366,
      "0x02 휙날아감": 27,
      "0x01 넘어짐": 26,
      "0x03 행동정지": 22,
      "0x04 독": 6,
      "0x05 마비": 5
    },
    "targetScopeCounts": {
      "0x0a": 263,
      "0x06": 140,
      "0x01": 46,
      "0x09": 2,
      "0x05": 1
    },
    "hitClassCounts": {
      "0x01": 361,
      "0x00": 43,
      "0x02": 31,
      "0x03": 17
    },
    "commonPowerTriples": [
      {
        "triple": "0/0/33",
        "count": 33
      },
      {
        "triple": "100/100/15",
        "count": 15
      },
      {
        "triple": "75/0/12",
        "count": 12
      },
      {
        "triple": "70/0/9",
        "count": 9
      },
      {
        "triple": "65/0/8",
        "count": 8
      },
      {
        "triple": "70/0/8",
        "count": 8
      },
      {
        "triple": "95/100/7",
        "count": 7
      },
      {
        "triple": "90/100/7",
        "count": 7
      },
      {
        "triple": "60/0/6",
        "count": 6
      },
      {
        "triple": "80/0/5",
        "count": 5
      },
      {
        "triple": "60/0/5",
        "count": 5
      },
      {
        "triple": "65/0/5",
        "count": 5
      },
      {
        "triple": "70/0/5",
        "count": 5
      },
      {
        "triple": "70/0/5",
        "count": 5
      },
      {
        "triple": "105/0/5",
        "count": 5
      },
      {
        "triple": "110/110/4",
        "count": 4
      }
    ],
    "examples": [
      {
        "owner": "아타호",
        "skill": "정권",
        "skillIdHex": "0x01",
        "unit": "64 64 64 00 0a 10 01 00",
        "familyHex": "0x10",
        "statusHex": "0x00",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "돌려차기",
        "skillIdHex": "0x02",
        "unit": "6e 6e 5a 00 0a 10 01 00",
        "familyHex": "0x10",
        "statusHex": "0x00",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "던지기",
        "skillIdHex": "0x03",
        "unit": "78 4b 3c 00 0a 10 03 02",
        "familyHex": "0x10",
        "statusHex": "0x02",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x03"
      },
      {
        "owner": "아타호",
        "skill": "다리후리기",
        "skillIdHex": "0x04",
        "unit": "5a 41 69 00 0a 10 02 01",
        "familyHex": "0x10",
        "statusHex": "0x01",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x02"
      },
      {
        "owner": "아타호",
        "skill": "마시기",
        "skillIdHex": "0x05",
        "unit": "00 00 00 00 01 26 01 00",
        "familyHex": "0x26",
        "statusHex": "0x00",
        "targetScopeHex": "0x01",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "마시기",
        "skillIdHex": "0x06",
        "unit": "00 00 00 00 01 28 01 00",
        "familyHex": "0x28",
        "statusHex": "0x00",
        "targetScopeHex": "0x01",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "마시기",
        "skillIdHex": "0x07",
        "unit": "00 00 00 00 01 29 01 00",
        "familyHex": "0x29",
        "statusHex": "0x00",
        "targetScopeHex": "0x01",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "마시기",
        "skillIdHex": "0x08",
        "unit": "00 00 00 00 01 2a 01 00",
        "familyHex": "0x2a",
        "statusHex": "0x00",
        "targetScopeHex": "0x01",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "마시기",
        "skillIdHex": "0x09",
        "unit": "00 00 00 00 01 2c 01 00",
        "familyHex": "0x2c",
        "statusHex": "0x00",
        "targetScopeHex": "0x01",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "호격권",
        "skillIdHex": "0x0a",
        "unit": "78 78 9b 00 0a 10 01 00",
        "familyHex": "0x10",
        "statusHex": "0x00",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "호격권",
        "skillIdHex": "0x0b",
        "unit": "7e 7d a5 00 0a 10 01 00",
        "familyHex": "0x10",
        "statusHex": "0x00",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x01"
      },
      {
        "owner": "아타호",
        "skill": "호격권",
        "skillIdHex": "0x0c",
        "unit": "84 82 af 00 0a 10 01 00",
        "familyHex": "0x10",
        "statusHex": "0x00",
        "targetScopeHex": "0x0a",
        "hitClassHex": "0x01"
      }
    ]
  },
  "familyGroups": [
    {
      "handlerVaHex": "0x004357d0",
      "count": 22,
      "families": [
        "0x00",
        "0x02",
        "0x03",
        "0x04",
        "0x05",
        "0x06",
        "0x07",
        "0x08",
        "0x09",
        "0x0a",
        "0x0b",
        "0x0c",
        "0x0d",
        "0x0e",
        "0x0f",
        "0x1a",
        "0x1b",
        "0x1c",
        "0x1d",
        "0x1e",
        "0x1f",
        "0x30"
      ],
      "labels": [
        "default/no-op or shared fallback"
      ]
    },
    {
      "handlerVaHex": "0x0043414d",
      "count": 10,
      "families": [
        "0x10",
        "0x11",
        "0x12",
        "0x13",
        "0x14",
        "0x15",
        "0x16",
        "0x17",
        "0x18",
        "0x19"
      ],
      "labels": [
        "common physical damage family"
      ]
    },
    {
      "handlerVaHex": "0x00434a4a",
      "count": 9,
      "families": [
        "0x24",
        "0x25",
        "0x26",
        "0x27",
        "0x28",
        "0x29",
        "0x2a",
        "0x2b",
        "0x2c"
      ],
      "labels": [
        "character mode/buff gauge family"
      ]
    },
    {
      "handlerVaHex": "0x004357db",
      "count": 8,
      "families": [
        "0x32",
        "0x39",
        "0x3a",
        "0x3b",
        "0x3c",
        "0x3d",
        "0x3e",
        "0x3f"
      ],
      "labels": [
        "small special handler family"
      ]
    },
    {
      "handlerVaHex": "0x0043487a",
      "count": 3,
      "families": [
        "0x20",
        "0x21",
        "0x23"
      ],
      "labels": [
        "recovery-like family: HP/MP branch by family"
      ]
    },
    {
      "handlerVaHex": "0x0043485e",
      "count": 1,
      "families": [
        "0x01"
      ],
      "labels": [
        "simple flag set family"
      ]
    },
    {
      "handlerVaHex": "0x0043497d",
      "count": 1,
      "families": [
        "0x22"
      ],
      "labels": [
        "pose/state reset family"
      ]
    },
    {
      "handlerVaHex": "0x00434cbb",
      "count": 1,
      "families": [
        "0x2d"
      ],
      "labels": [
        "pose cycle family"
      ]
    },
    {
      "handlerVaHex": "0x00434d8d",
      "count": 1,
      "families": [
        "0x2e"
      ],
      "labels": [
        "random pose/timer family"
      ]
    },
    {
      "handlerVaHex": "0x00434e29",
      "count": 1,
      "families": [
        "0x2f"
      ],
      "labels": [
        "clear fields +0x2f..+0x31"
      ]
    },
    {
      "handlerVaHex": "0x00000000",
      "count": 1,
      "families": [
        "0x31"
      ],
      "labels": [
        "unclassified family"
      ]
    },
    {
      "handlerVaHex": "0x004357e6",
      "count": 1,
      "families": [
        "0x33"
      ],
      "labels": [
        "small special handler family"
      ]
    },
    {
      "handlerVaHex": "0x00435810",
      "count": 1,
      "families": [
        "0x34"
      ],
      "labels": [
        "small special handler family"
      ]
    },
    {
      "handlerVaHex": "0x0043583c",
      "count": 1,
      "families": [
        "0x35"
      ],
      "labels": [
        "small special handler family"
      ]
    },
    {
      "handlerVaHex": "0x004358ab",
      "count": 1,
      "families": [
        "0x36"
      ],
      "labels": [
        "small special handler family"
      ]
    },
    {
      "handlerVaHex": "0x004358d5",
      "count": 1,
      "families": [
        "0x37"
      ],
      "labels": [
        "small special handler family"
      ]
    },
    {
      "handlerVaHex": "0x0043590d",
      "count": 1,
      "families": [
        "0x38"
      ],
      "labels": [
        "small special handler family"
      ]
    }
  ],
  "familyRows": [
    {
      "family": 0,
      "familyHex": "0x00",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 1,
      "familyHex": "0x01",
      "handlerVa": 4409438,
      "handlerVaHex": "0x0043485e",
      "label": "simple flag set family",
      "sampleCount": 3,
      "statuses": [
        "0x00 none x3"
      ],
      "targetScopes": [
        "0x01 x3"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 도주 0x3a :: 00 00 00 00 01 01 01 00",
        "린샹 도주 0x2f :: 00 00 00 00 01 01 01 00",
        "스마슈 도주 0x23 :: 00 00 00 00 01 01 01 00"
      ]
    },
    {
      "family": 2,
      "familyHex": "0x02",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 3,
      "statuses": [
        "0x00 none x3"
      ],
      "targetScopes": [
        "0x01 x3"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 방어 0x3b :: 00 00 00 00 01 02 01 00",
        "린샹 방어 0x30 :: 00 00 00 00 01 02 01 00",
        "스마슈 방어 0x24 :: 00 00 00 00 01 02 01 00"
      ]
    },
    {
      "family": 3,
      "familyHex": "0x03",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 3,
      "statuses": [
        "0x00 none x3"
      ],
      "targetScopes": [
        "0x01 x3"
      ],
      "powerSamples": [
        "70/0/0",
        "0/0/0",
        "70/0/0"
      ],
      "samples": [
        "스마슈 인법·몸감추기 0x26 :: 46 00 00 00 01 03 01 00",
        "공용/적 몸감추기 0x03 :: 00 00 00 00 01 03 01 00",
        "공용/적 인법·몸감추기 0x7a :: 46 00 00 00 01 03 01 00"
      ]
    },
    {
      "family": 4,
      "familyHex": "0x04",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 5,
      "familyHex": "0x05",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 6,
      "familyHex": "0x06",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 7,
      "familyHex": "0x07",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 8,
      "familyHex": "0x08",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 9,
      "familyHex": "0x09",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 10,
      "familyHex": "0x0a",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 11,
      "familyHex": "0x0b",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 12,
      "familyHex": "0x0c",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 13,
      "familyHex": "0x0d",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 14,
      "familyHex": "0x0e",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 15,
      "familyHex": "0x0f",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 16,
      "familyHex": "0x10",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 154,
      "statuses": [
        "0x00 none x122",
        "0x01 넘어짐 x14",
        "0x02 휙날아감 x16",
        "0x03 행동정지 x2"
      ],
      "targetScopes": [
        "0x06 x46",
        "0x0a x108"
      ],
      "powerSamples": [
        "100/100/100",
        "110/110/90",
        "120/75/60",
        "90/65/105",
        "120/120/155",
        "126/125/165"
      ],
      "samples": [
        "아타호 정권 0x01 :: 64 64 64 00 0a 10 01 00",
        "아타호 돌려차기 0x02 :: 6e 6e 5a 00 0a 10 01 00",
        "아타호 던지기 0x03 :: 78 4b 3c 00 0a 10 03 02",
        "아타호 다리후리기 0x04 :: 5a 41 69 00 0a 10 02 01",
        "아타호 호격권 0x0a :: 78 78 9b 00 0a 10 01 00",
        "아타호 호격권 0x0b :: 7e 7d a5 00 0a 10 01 00",
        "아타호 호격권 0x0c :: 84 82 af 00 0a 10 01 00",
        "아타호 호격권 0x0d :: 8a 87 b9 00 0a 10 01 00"
      ]
    },
    {
      "family": 17,
      "familyHex": "0x11",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 27,
      "statuses": [
        "0x00 none x16",
        "0x01 넘어짐 x1",
        "0x02 휙날아감 x6",
        "0x04 독 x2",
        "0x05 마비 x2"
      ],
      "targetScopes": [
        "0x0a x27"
      ],
      "powerSamples": [
        "100/100/100",
        "65/0/125",
        "65/0/125",
        "75/100/115",
        "70/0/125",
        "70/0/125"
      ],
      "samples": [
        "린샹 손톱공격 0x01 :: 64 64 64 00 0a 11 01 00",
        "린샹 안면백조권 0x09 :: 41 00 7d 00 0a 11 01 00",
        "린샹 안면백조권 0x09 :: 41 00 7d 00 0a 11 01 00",
        "린샹 안면백조권 0x09 :: 4b 64 73 00 0a 11 01 00",
        "린샹 안면백조권 0x0a :: 46 00 7d 00 0a 11 01 00",
        "린샹 안면백조권 0x0a :: 46 00 7d 00 0a 11 01 00",
        "린샹 안면백조권 0x0a :: 50 6e 6e 00 0a 11 01 00",
        "린샹 안면백조권 0x0b :: 4b 00 7d 00 0a 11 01 00"
      ]
    },
    {
      "family": 18,
      "familyHex": "0x12",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 76,
      "statuses": [
        "0x00 none x63",
        "0x01 넘어짐 x6",
        "0x02 휙날아감 x3",
        "0x03 행동정지 x4"
      ],
      "targetScopes": [
        "0x06 x30",
        "0x0a x46"
      ],
      "powerSamples": [
        "85/120/110",
        "90/130/105",
        "142/100/175",
        "103/125/155",
        "108/130/165",
        "113/135/175"
      ],
      "samples": [
        "린샹 안면백조권 0x0b :: 55 78 6e 00 0a 12 01 00",
        "린샹 안면백조권 0x0c :: 5a 82 69 00 0a 12 01 00",
        "린샹 맹호열지조 0x1b :: 8e 64 af 00 0a 12 02 01",
        "린샹 유미쌍조 0x20 :: 67 7d 9b 00 06 12 00 00",
        "린샹 유미쌍조 0x21 :: 6c 82 a5 00 06 12 00 00",
        "린샹 유미쌍조 0x22 :: 71 87 af 00 06 12 00 00",
        "린샹 유미쌍조 0x23 :: 76 8c b9 00 06 12 00 00",
        "린샹 맹호단공아 0x2e :: 83 c8 fa 00 06 12 00 00"
      ]
    },
    {
      "family": 19,
      "familyHex": "0x13",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 25,
      "statuses": [
        "0x00 none x21",
        "0x01 넘어짐 x4"
      ],
      "targetScopes": [
        "0x06 x15",
        "0x0a x10"
      ],
      "powerSamples": [
        "145/0/250",
        "120/135/150",
        "125/140/175",
        "130/145/200",
        "135/150/225",
        "120/0/200"
      ],
      "samples": [
        "아타호 염가열소 0x21 :: 91 00 fa 00 0a 13 01 00",
        "아타호 비기·맹호유성각 0x33 :: 78 87 96 00 06 13 01 01",
        "아타호 비기·맹호유성각 0x34 :: 7d 8c af 00 06 13 01 01",
        "아타호 비기·맹호유성각 0x35 :: 82 91 c8 00 06 13 01 01",
        "아타호 비기·맹호유성각 0x36 :: 87 96 e1 00 06 13 01 01",
        "아타호 취호염무 0x38 :: 78 00 c8 00 06 13 01 00",
        "린샹 열화폭염권 0x11 :: 7b 00 c8 00 0a 13 01 00",
        "린샹 열화폭염권 0x12 :: 81 00 c8 00 0a 13 01 00"
      ]
    },
    {
      "family": 20,
      "familyHex": "0x14",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 14,
      "statuses": [
        "0x00 none x13",
        "0x01 넘어짐 x1"
      ],
      "targetScopes": [
        "0x06 x11",
        "0x0a x3"
      ],
      "powerSamples": [
        "110/100/95",
        "130/0/200",
        "112/0/150",
        "110/110/90",
        "125/0/200",
        "95/100/200"
      ],
      "samples": [
        "린샹 꼬챙이 꿰기 0x06 :: 6e 64 5f 00 0a 14 01 00",
        "린샹 빙조권 0x19 :: 82 00 c8 00 0a 14 01 00",
        "린샹 창룡파 0x2c :: 70 00 96 00 06 14 01 00",
        "스마슈 마구베기 0x03 :: 6e 6e 5a 00 0a 14 01 00",
        "스마슈 냉도투무 0x21 :: 7d 00 c8 00 06 14 01 00",
        "공용/적 냉기 0x0c :: 5f 64 c8 00 06 14 01 00",
        "공용/적 냉기 0x13 :: 5a 64 c8 00 06 14 01 00",
        "공용/적 빙참축 0x20 :: 64 73 73 00 06 14 01 00"
      ]
    },
    {
      "family": 21,
      "familyHex": "0x15",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 24,
      "statuses": [
        "0x00 none x18",
        "0x02 휙날아감 x1",
        "0x03 행동정지 x5"
      ],
      "targetScopes": [
        "0x06 x18",
        "0x0a x6"
      ],
      "powerSamples": [
        "111/15/125",
        "116/30/130",
        "121/45/145",
        "126/60/140",
        "122/0/200",
        "129/0/200"
      ],
      "samples": [
        "아타호 호포권 0x2b :: 6f 0f 7d 00 06 15 01 00",
        "아타호 호포권 0x2c :: 74 1e 82 00 06 15 01 00",
        "아타호 호포권 0x2d :: 79 2d 91 00 06 15 01 00",
        "아타호 호포권 0x2e :: 7e 3c 8c 00 06 15 01 00",
        "린샹 암각·영상뢰화 0x28 :: 7a 00 c8 00 06 15 01 03",
        "린샹 암각·영상뢰화 0x29 :: 81 00 c8 00 06 15 01 03",
        "린샹 암각·영상뢰화 0x2a :: 88 00 c8 00 06 15 01 03",
        "린샹 암각·영상뢰화 0x2b :: 90 00 c8 00 06 15 01 03"
      ]
    },
    {
      "family": 22,
      "familyHex": "0x16",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 58,
      "statuses": [
        "0x00 none x58"
      ],
      "targetScopes": [
        "0x0a x58"
      ],
      "powerSamples": [
        "90/175/200",
        "80/0/200",
        "70/0/200",
        "100/200/225",
        "85/0/225",
        "70/0/225"
      ],
      "samples": [
        "아타호 비기·맹호광파참 0x1a :: 5a af c8 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1a :: 50 00 c8 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1a :: 46 00 c8 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1b :: 64 c8 e1 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1b :: 55 00 e1 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1b :: 46 00 e1 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1c :: 69 e1 fa 00 0a 16 01 00",
        "아타호 비기·맹호광파참 0x1c :: 55 00 fa 00 0a 16 01 00"
      ]
    },
    {
      "family": 23,
      "familyHex": "0x17",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 13,
      "statuses": [
        "0x00 none x1",
        "0x03 행동정지 x10",
        "0x05 마비 x2"
      ],
      "targetScopes": [
        "0x06 x10",
        "0x0a x3"
      ],
      "powerSamples": [
        "55/50/200",
        "70/55/200",
        "85/60/200",
        "100/65/200",
        "130/120/180",
        "110/100/95"
      ],
      "samples": [
        "아타호 맹호의 울부짖음 0x27 :: 37 32 c8 00 06 17 01 03",
        "아타호 맹호의 울부짖음 0x28 :: 46 37 c8 00 06 17 01 03",
        "아타호 맹호의 울부짖음 0x29 :: 55 3c c8 00 06 17 01 03",
        "아타호 맹호의 울부짖음 0x2a :: 64 41 c8 00 06 17 01 03",
        "아타호 노익장 대폭발 0x39 :: 82 78 b4 00 06 17 01 03",
        "린샹 꼬챙이 꿰기 0x08 :: 6e 64 5f 00 0a 17 01 00",
        "린샹 고양이달래기 0x1c :: 1e 1e b4 00 06 17 01 03",
        "린샹 고양이달래기 0x1d :: 32 28 b4 00 06 17 01 03"
      ]
    },
    {
      "family": 24,
      "familyHex": "0x18",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 3,
      "statuses": [
        "0x00 none x1",
        "0x03 행동정지 x1",
        "0x04 독 x1"
      ],
      "targetScopes": [
        "0x06 x2",
        "0x0a x1"
      ],
      "powerSamples": [
        "75/50/125",
        "100/100/100",
        "95/100/200"
      ],
      "samples": [
        "아타호 주구격 0x37 :: 4b 32 7d 00 06 18 01 03",
        "공용/적 썩은 점액 0x08 :: 64 64 64 00 0a 18 01 00",
        "공용/적 독액 0x0e :: 5f 64 c8 00 06 18 01 04"
      ]
    },
    {
      "family": 25,
      "familyHex": "0x19",
      "handlerVa": 4407629,
      "handlerVaHex": "0x0043414d",
      "label": "common physical damage family",
      "sampleCount": 9,
      "statuses": [
        "0x00 none x4",
        "0x02 휙날아감 x1",
        "0x04 독 x3",
        "0x05 마비 x1"
      ],
      "targetScopes": [
        "0x06 x8",
        "0x0a x1"
      ],
      "powerSamples": [
        "115/110/150",
        "90/100/200",
        "95/100/200",
        "70/0/120",
        "70/0/110",
        "70/0/100"
      ],
      "samples": [
        "린샹 흑영권 0x1a :: 73 6e 96 00 0a 19 02 02",
        "공용/적 장궁 0x1b :: 5a 64 c8 00 06 19 03 04",
        "공용/적 장궁 0x58 :: 5f 64 c8 00 06 19 01 05",
        "공용/적 마권사암각 0x66 :: 46 00 78 00 06 19 01 00",
        "공용/적 마권사암각 0x66 :: 46 00 6e 00 06 19 01 00",
        "공용/적 마권사암각 0x66 :: 46 00 64 00 06 19 01 00",
        "공용/적 마권사암각 0x66 :: 64 32 5a 00 06 19 01 00",
        "공용/적 장궁 0x67 :: 5f 64 c8 00 06 19 01 04"
      ]
    },
    {
      "family": 26,
      "familyHex": "0x1a",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 27,
      "familyHex": "0x1b",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 28,
      "familyHex": "0x1c",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 29,
      "familyHex": "0x1d",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 30,
      "familyHex": "0x1e",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 31,
      "familyHex": "0x1f",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 32,
      "familyHex": "0x20",
      "handlerVa": 4409466,
      "handlerVaHex": "0x0043487a",
      "label": "recovery-like family: HP/MP branch by family",
      "sampleCount": 7,
      "statuses": [
        "0x00 none x7"
      ],
      "targetScopes": [
        "0x01 x5",
        "0x05 x1",
        "0x09 x1"
      ],
      "powerSamples": [
        "110/0/0",
        "130/0/0",
        "120/0/0",
        "125/0/0",
        "110/125/200",
        "110/0/0"
      ],
      "samples": [
        "아타호 기합일발 0x3c :: 6e 00 00 00 01 20 01 00",
        "린샹 기공회복 0x31 :: 82 00 00 00 09 20 01 00",
        "린샹 기공대회복 0x33 :: 78 00 00 00 05 20 01 00",
        "스마슈 신격방어 0x27 :: 7d 00 00 00 01 20 01 00",
        "공용/적 회복 0x04 :: 6e 7d c8 00 01 20 01 00",
        "공용/적 기합일발 0x72 :: 6e 00 00 00 01 20 01 00",
        "공용/적 회복 0x7b :: 78 00 00 00 01 20 01 00"
      ]
    },
    {
      "family": 33,
      "familyHex": "0x21",
      "handlerVa": 4409466,
      "handlerVaHex": "0x0043487a",
      "label": "recovery-like family: HP/MP branch by family",
      "sampleCount": 5,
      "statuses": [
        "0x00 none x5"
      ],
      "targetScopes": [
        "0x01 x5"
      ],
      "powerSamples": [
        "50/0/0",
        "60/0/0",
        "70/0/0",
        "80/0/0",
        "60/0/0"
      ],
      "samples": [
        "아타호 천조족 0x3d :: 32 00 00 00 01 21 01 00",
        "아타호 천조족 0x3e :: 3c 00 00 00 01 21 01 00",
        "아타호 천조족 0x40 :: 46 00 00 00 01 21 01 00",
        "아타호 천조족 0x41 :: 50 00 00 00 01 21 01 00",
        "공용/적 천조족 0x71 :: 3c 00 00 00 01 21 01 00"
      ]
    },
    {
      "family": 34,
      "familyHex": "0x22",
      "handlerVa": 4409725,
      "handlerVaHex": "0x0043497d",
      "label": "pose/state reset family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x09 x1"
      ],
      "powerSamples": [
        "0/0/0"
      ],
      "samples": [
        "린샹 기공독치료 0x32 :: 00 00 00 00 09 22 01 00"
      ]
    },
    {
      "family": 35,
      "familyHex": "0x23",
      "handlerVa": 4409466,
      "handlerVaHex": "0x0043487a",
      "label": "recovery-like family: HP/MP branch by family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x01 x1"
      ],
      "powerSamples": [
        "145/0/0"
      ],
      "samples": [
        "아타호 주 백약지장 0x3f :: 91 00 00 00 01 23 01 00"
      ]
    },
    {
      "family": 36,
      "familyHex": "0x24",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 2,
      "statuses": [
        "0x00 none x2"
      ],
      "targetScopes": [
        "0x01 x2"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 조금 취한 철권 0x1e :: 00 00 00 00 01 24 01 00",
        "아타호 천조족 0x3d :: 00 00 00 00 01 24 01 00"
      ]
    },
    {
      "family": 37,
      "familyHex": "0x25",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 4,
      "statuses": [
        "0x00 none x4"
      ],
      "targetScopes": [
        "0x01 x4"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0",
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 지옥 다리후리기 0x1f :: 00 00 00 00 01 25 01 00",
        "아타호 주구격 0x37 :: 00 00 00 00 01 25 01 00",
        "아타호 천조족 0x3e :: 00 00 00 00 01 25 01 00",
        "공용/적 천조족 0x71 :: 00 00 00 00 01 25 01 00"
      ]
    },
    {
      "family": 38,
      "familyHex": "0x26",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x01 x1"
      ],
      "powerSamples": [
        "0/0/0"
      ],
      "samples": [
        "아타호 마시기 0x05 :: 00 00 00 00 01 26 01 00"
      ]
    },
    {
      "family": 39,
      "familyHex": "0x27",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 2,
      "statuses": [
        "0x00 none x2"
      ],
      "targetScopes": [
        "0x01 x2"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 만취한 철권 0x20 :: 00 00 00 00 01 27 01 00",
        "아타호 주 백약지장 0x3f :: 00 00 00 00 01 27 01 00"
      ]
    },
    {
      "family": 40,
      "familyHex": "0x28",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 6,
      "statuses": [
        "0x00 none x6"
      ],
      "targetScopes": [
        "0x01 x6"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0",
        "0/0/0",
        "0/0/0",
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 마시기 0x06 :: 00 00 00 00 01 28 01 00",
        "아타호 염가열소 0x21 :: 00 00 00 00 01 28 01 00",
        "아타호 취호염무 0x38 :: 00 00 00 00 01 28 01 00",
        "아타호 천조족 0x40 :: 00 00 00 00 01 28 01 00",
        "공용/적 취호염무 0x6f :: 00 00 00 00 01 28 01 00",
        "공용/적 염가열소 0x70 :: 00 00 00 00 01 28 01 00"
      ]
    },
    {
      "family": 41,
      "familyHex": "0x29",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 4,
      "statuses": [
        "0x00 none x4"
      ],
      "targetScopes": [
        "0x01 x4"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0",
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "아타호 마시기 0x07 :: 00 00 00 00 01 29 01 00",
        "아타호 인사불성 철권 0x22 :: 00 00 00 00 01 29 01 00",
        "아타호 노익장 대폭발 0x39 :: 00 00 00 00 01 29 01 00",
        "아타호 천조족 0x41 :: 00 00 00 00 01 29 01 00"
      ]
    },
    {
      "family": 42,
      "familyHex": "0x2a",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x01 x1"
      ],
      "powerSamples": [
        "0/0/0"
      ],
      "samples": [
        "아타호 마시기 0x08 :: 00 00 00 00 01 2a 01 00"
      ]
    },
    {
      "family": 43,
      "familyHex": "0x2b",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 44,
      "familyHex": "0x2c",
      "handlerVa": 4409930,
      "handlerVaHex": "0x00434a4a",
      "label": "character mode/buff gauge family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x01 x1"
      ],
      "powerSamples": [
        "0/0/0"
      ],
      "samples": [
        "아타호 마시기 0x09 :: 00 00 00 00 01 2c 01 00"
      ]
    },
    {
      "family": 45,
      "familyHex": "0x2d",
      "handlerVa": 4410555,
      "handlerVaHex": "0x00434cbb",
      "label": "pose cycle family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x01 x1"
      ],
      "powerSamples": [
        "0/0/0"
      ],
      "samples": [
        "스마슈 눈요기 0x25 :: 00 00 00 00 01 2d 01 00"
      ]
    },
    {
      "family": 46,
      "familyHex": "0x2e",
      "handlerVa": 4410765,
      "handlerVaHex": "0x00434d8d",
      "label": "random pose/timer family",
      "sampleCount": 1,
      "statuses": [
        "0x00 none x1"
      ],
      "targetScopes": [
        "0x01 x1"
      ],
      "powerSamples": [
        "10/250/250"
      ],
      "samples": [
        "린샹 도발 0x05 :: 0a fa fa 00 01 2e 01 00"
      ]
    },
    {
      "family": 47,
      "familyHex": "0x2f",
      "handlerVa": 4410921,
      "handlerVaHex": "0x00434e29",
      "label": "clear fields +0x2f..+0x31",
      "sampleCount": 3,
      "statuses": [
        "0x00 none x3"
      ],
      "targetScopes": [
        "0x01 x3"
      ],
      "powerSamples": [
        "0/0/0",
        "0/0/0",
        "0/0/0"
      ],
      "samples": [
        "린샹 수경 0x34 :: 00 00 00 00 01 2f 01 00",
        "공용/적 수경 0x25 :: 00 00 00 00 01 2f 01 00",
        "공용/적 수경 0x3c :: 00 00 00 00 01 2f 01 00"
      ]
    },
    {
      "family": 48,
      "familyHex": "0x30",
      "handlerVa": 4413392,
      "handlerVaHex": "0x004357d0",
      "label": "default/no-op or shared fallback",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 49,
      "familyHex": "0x31",
      "handlerVa": 0,
      "handlerVaHex": "0x00000000",
      "label": "unclassified family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 50,
      "familyHex": "0x32",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 51,
      "familyHex": "0x33",
      "handlerVa": 4413414,
      "handlerVaHex": "0x004357e6",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 52,
      "familyHex": "0x34",
      "handlerVa": 4413456,
      "handlerVaHex": "0x00435810",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 53,
      "familyHex": "0x35",
      "handlerVa": 4413500,
      "handlerVaHex": "0x0043583c",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 54,
      "familyHex": "0x36",
      "handlerVa": 4413611,
      "handlerVaHex": "0x004358ab",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 55,
      "familyHex": "0x37",
      "handlerVa": 4413653,
      "handlerVaHex": "0x004358d5",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 56,
      "familyHex": "0x38",
      "handlerVa": 4413709,
      "handlerVaHex": "0x0043590d",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 57,
      "familyHex": "0x39",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 58,
      "familyHex": "0x3a",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 59,
      "familyHex": "0x3b",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 60,
      "familyHex": "0x3c",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 61,
      "familyHex": "0x3d",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 62,
      "familyHex": "0x3e",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    },
    {
      "family": 63,
      "familyHex": "0x3f",
      "handlerVa": 4413403,
      "handlerVaHex": "0x004357db",
      "label": "small special handler family",
      "sampleCount": 0,
      "statuses": [],
      "targetScopes": [],
      "powerSamples": [],
      "samples": []
    }
  ],
  "functionRows": [
    {
      "va": 4405808,
      "end": 4405962,
      "label": "target eligibility gate",
      "meaning": "a6가 대상에게 0x433f0e를 호출하기 전에 쓰는 대상 가능 여부 검사. target +0x62 bit 0x80과 attacker +0x58/+0x59를 본다.",
      "confidence": "confirmed path helper",
      "vaHex": "0x00433a30",
      "endHex": "0x00433aca",
      "refs": {
        "calls": [],
        "actorOffsetsHex": [
          "+0x08",
          "+0x0c",
          "+0x58",
          "+0x59",
          "+0x62"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "433a3e:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]"
        ],
        "lineCount": 46
      },
      "excerpt": "  433a30:\t55                   \tpush   ebp\n  433a31:\t8b ec                \tmov    ebp,esp\n  433a33:\t83 ec 08             \tsub    esp,0x8\n  433a36:\t53                   \tpush   ebx\n  433a37:\t56                   \tpush   esi\n  433a38:\t57                   \tpush   edi\n  433a39:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]\n  433a3c:\t33 c9                \txor    ecx,ecx\n...\n  433a3e:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]"
    },
    {
      "va": 4407054,
      "end": 4407470,
      "label": "hit unit loader and family dispatcher",
      "meaning": "skill payload를 찾고 hitIndex(0x0059e2a4)로 8-byte hit unit을 고른다. unit byte0..2를 attacker +0x80/+0x82/+0x84와 곱해 +0x70/+0x72/+0x74에 저장하고, family table 0x00546970으로 분기한다.",
      "confidence": "strong static evidence",
      "vaHex": "0x00433f0e",
      "endHex": "0x004340ae",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00546a38",
            "line": "433f69:\tff 14 8d 38 6a 54 00 \tcall   DWORD PTR [ecx*4+0x546a38]"
          },
          {
            "targetVaHex": "0x00546970",
            "line": "43409f:\tff 14 8d 70 69 54 00 \tcall   DWORD PTR [ecx*4+0x546970]"
          }
        ],
        "actorOffsetsHex": [
          "+0x01",
          "+0x02",
          "+0x04",
          "+0x05",
          "+0x07",
          "+0x08",
          "+0x0c",
          "+0x58",
          "+0x59",
          "+0x62",
          "+0x6a",
          "+0x6b",
          "+0x6c",
          "+0x6e",
          "+0x70",
          "+0x72",
          "+0x74",
          "+0x80",
          "+0x82",
          "+0x84",
          "+0x4d2488",
          "+0x546970",
          "+0x546a38"
        ],
        "dataRefsHex": [
          "0x004d2488",
          "0x004d2494",
          "0x00546970",
          "0x00546a38",
          "0x0059e2a4"
        ],
        "flagOps": [
          "433f1c:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "433f25:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl",
          "433f2d:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "433f36:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
        ],
        "lineCount": 136
      },
      "excerpt": "  433f0e:\t55                   \tpush   ebp\n  433f0f:\t8b ec                \tmov    ebp,esp\n  433f11:\t83 ec 0c             \tsub    esp,0xc\n  433f14:\t53                   \tpush   ebx\n  433f15:\t56                   \tpush   esi\n  433f16:\t57                   \tpush   edi\n  433f17:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  433f1a:\t33 c9                \txor    ecx,ecx\n...\n  433f1c:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  433f25:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  433f2d:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  433f36:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  433f43:\t66 c7 40 6e 00 00    \tmov    WORD PTR [eax+0x6e],0x0\n  433f69:\tff 14 8d 38 6a 54 00 \tcall   DWORD PTR [ecx*4+0x546a38]\n  433f90:\t8b 04 8d 88 24 4d 00 \tmov    eax,DWORD PTR [ecx*4+0x4d2488]\n  433fb2:\ta1 94 24 4d 00       \tmov    eax,ds:0x4d2494\n  433fe2:\t66 a1 a4 e2 59 00    \tmov    ax,ds:0x59e2a4\n  434080:\t88 41 6b             \tmov    BYTE PTR [ecx+0x6b],al\n  43408c:\t88 41 6c             \tmov    BYTE PTR [ecx+0x6c],al\n  43409f:\tff 14 8d 70 69 54 00 \tcall   DWORD PTR [ecx*4+0x546970]"
    },
    {
      "va": 4407470,
      "end": 4407629,
      "label": "target result mode dispatcher",
      "meaning": "target +0x6d가 0이면 0x4353f8(HP 감소) 후 0x434e84(상태/피격 자세), 2이면 0x435295(HP 회복), 1이면 적용 없이 종료한다.",
      "confidence": "strong static evidence",
      "vaHex": "0x004340ae",
      "endHex": "0x0043414d",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x004353f8",
            "line": "4340e9:\te8 0a 13 00 00       \tcall   0x4353f8"
          },
          {
            "targetVaHex": "0x00434e84",
            "line": "4340f5:\te8 8a 0d 00 00       \tcall   0x434e84"
          },
          {
            "targetVaHex": "0x00435295",
            "line": "434113:\te8 7d 11 00 00       \tcall   0x435295"
          }
        ],
        "actorOffsetsHex": [
          "+0x08",
          "+0x62",
          "+0x6d",
          "+0x6e"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "4340bc:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]"
        ],
        "lineCount": 51
      },
      "excerpt": "  4340ae:\t55                   \tpush   ebp\n  4340af:\t8b ec                \tmov    ebp,esp\n  4340b1:\t83 ec 04             \tsub    esp,0x4\n  4340b4:\t53                   \tpush   ebx\n  4340b5:\t56                   \tpush   esi\n  4340b6:\t57                   \tpush   edi\n  4340b7:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  4340ba:\t33 c9                \txor    ecx,ecx\n...\n  4340bc:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4340d2:\t8a 48 6d             \tmov    cl,BYTE PTR [eax+0x6d]\n  4340e0:\t66 8b 40 6e          \tmov    ax,WORD PTR [eax+0x6e]\n  4340e9:\te8 0a 13 00 00       \tcall   0x4353f8\n  4340f5:\te8 8a 0d 00 00       \tcall   0x434e84\n  43410a:\t66 8b 40 6e          \tmov    ax,WORD PTR [eax+0x6e]\n  434113:\te8 7d 11 00 00       \tcall   0x435295"
    },
    {
      "va": 4407629,
      "end": 4407832,
      "label": "common physical family coordinator",
      "meaning": "family 0x10..0x19의 공통 진입점. result value를 초기화하고, branch flag 0x20/0x08, alt-result flag 0x10, status byte +0x6c, damage routine을 순서대로 처리한다.",
      "confidence": "strong static evidence",
      "vaHex": "0x0043414d",
      "endHex": "0x00434218",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00434218",
            "line": "434164:\te8 af 00 00 00       \tcall   0x434218"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434190:\te8 9b 35 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x004343db",
            "line": "4341b7:\te8 1f 02 00 00       \tcall   0x4343db"
          },
          {
            "targetVaHex": "0x00434737",
            "line": "4341d8:\te8 5a 05 00 00       \tcall   0x434737"
          },
          {
            "targetVaHex": "0x0043461f",
            "line": "4341ed:\te8 2d 04 00 00       \tcall   0x43461f"
          },
          {
            "targetVaHex": "0x004344ab",
            "line": "4341fd:\te8 a9 02 00 00       \tcall   0x4344ab"
          }
        ],
        "actorOffsetsHex": [
          "+0x08",
          "+0x0c",
          "+0x62",
          "+0x6c",
          "+0x6e"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "434171:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "434182:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "4341c4:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]"
        ],
        "lineCount": 72
      },
      "excerpt": "  43414d:\t55                   \tpush   ebp\n  43414e:\t8b ec                \tmov    ebp,esp\n  434150:\t53                   \tpush   ebx\n  434151:\t56                   \tpush   esi\n  434152:\t57                   \tpush   edi\n  434153:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  434156:\t66 c7 40 6e 00 00    \tmov    WORD PTR [eax+0x6e],0x0\n  43415c:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]\n...\n  434156:\t66 c7 40 6e 00 00    \tmov    WORD PTR [eax+0x6e],0x0\n  434164:\te8 af 00 00 00       \tcall   0x434218\n  434171:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434182:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434190:\te8 9b 35 ff ff       \tcall   0x427730\n  43419f:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax\n  4341a6:\tc6 40 6c 00          \tmov    BYTE PTR [eax+0x6c],0x0\n  4341b7:\te8 1f 02 00 00       \tcall   0x4343db\n  4341c4:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4341d8:\te8 5a 05 00 00       \tcall   0x434737\n  4341ed:\te8 2d 04 00 00       \tcall   0x43461f\n  4341fd:\te8 a9 02 00 00       \tcall   0x4344ab\n  434208:\t66 8b 40 6e          \tmov    ax,WORD PTR [eax+0x6e]\n  43420f:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax"
    },
    {
      "va": 4407832,
      "end": 4408283,
      "label": "hit/avoid branch flag test",
      "meaning": "attacker/target 전투 수치와 random(0x427730)을 비교해 target +0x62 bit 0x20 또는 0x08을 세운다. unit byte[6]을 target +0x36+index 명중 보정 테이블에 사용한다. 표시 분기는 full miss / guard-glancing chip result로 승격됐다.",
      "confidence": "confirmed hit/avoid branch",
      "vaHex": "0x00434218",
      "endHex": "0x004343db",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00427730",
            "line": "43432e:\te8 fd 33 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434343:\te8 e8 33 ff ff       \tcall   0x427730"
          }
        ],
        "actorOffsetsHex": [
          "+0x04",
          "+0x05",
          "+0x06",
          "+0x08",
          "+0x0c",
          "+0x22",
          "+0x24",
          "+0x36",
          "+0x59",
          "+0x62",
          "+0x74",
          "+0x7c",
          "+0x4d2488"
        ],
        "dataRefsHex": [
          "0x004d2488",
          "0x004d2494",
          "0x0059e2a4"
        ],
        "flagOps": [
          "4343b4:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "4343bd:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl",
          "4343ca:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "4343d3:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
        ],
        "lineCount": 138
      },
      "excerpt": "  434218:\t55                   \tpush   ebp\n  434219:\t8b ec                \tmov    ebp,esp\n  43421b:\t83 ec 20             \tsub    esp,0x20\n  43421e:\t53                   \tpush   ebx\n  43421f:\t56                   \tpush   esi\n  434220:\t57                   \tpush   edi\n  434221:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  434224:\t33 c9                \txor    ecx,ecx\n...\n  434239:\t8b 04 8d 88 24 4d 00 \tmov    eax,DWORD PTR [ecx*4+0x4d2488]\n  43425b:\ta1 94 24 4d 00       \tmov    eax,ds:0x4d2494\n  43428b:\t66 a1 a4 e2 59 00    \tmov    ax,ds:0x59e2a4\n  43432e:\te8 fd 33 ff ff       \tcall   0x427730\n  434343:\te8 e8 33 ff ff       \tcall   0x427730\n  4343b4:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4343bd:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  4343ca:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4343d3:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
    },
    {
      "va": 4408283,
      "end": 4408491,
      "label": "alternate result / critical flag gate",
      "meaning": "성공 시 attacker +0x62 bit 0x10을 세운다. 0xc2 handler가 이 비트로 normal/alt WLK operand를 고르고, user observation의 critical presentation(텍스트 없음, 섬광/전용음/높은 데미지)과 일치한다.",
      "confidence": "static critical/alternate path grounded",
      "vaHex": "0x004343db",
      "endHex": "0x004344ab",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00427730",
            "line": "434421:\te8 0a 33 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434446:\te8 e5 32 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "43445b:\te8 d0 32 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434468:\te8 c3 32 ff ff       \tcall   0x427730"
          }
        ],
        "actorOffsetsHex": [
          "+0x08",
          "+0x0c",
          "+0x26",
          "+0x28",
          "+0x62",
          "+0x72",
          "+0x7e"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "43449a:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "4344a3:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
        ],
        "lineCount": 72
      },
      "excerpt": "  4343db:\t55                   \tpush   ebp\n  4343dc:\t8b ec                \tmov    ebp,esp\n  4343de:\t83 ec 0c             \tsub    esp,0xc\n  4343e1:\t53                   \tpush   ebx\n  4343e2:\t56                   \tpush   esi\n  4343e3:\t57                   \tpush   edi\n  4343e4:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  4343e7:\t66 8b 40 28          \tmov    ax,WORD PTR [eax+0x28]\n...\n  434421:\te8 0a 33 ff ff       \tcall   0x427730\n  434446:\te8 e5 32 ff ff       \tcall   0x427730\n  43445b:\te8 d0 32 ff ff       \tcall   0x427730\n  434468:\te8 c3 32 ff ff       \tcall   0x427730\n  43449a:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4344a3:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
    },
    {
      "va": 4408491,
      "end": 4408863,
      "label": "status success gate",
      "meaning": "payload status byte target +0x6c가 있으면 attacker/target 수치 및 target status resistance table(+0x39+status)을 비교한다. 실패하면 target +0x6c를 0으로 지운다.",
      "confidence": "strong static evidence",
      "vaHex": "0x004344ab",
      "endHex": "0x0043461f",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00427730",
            "line": "43456e:\te8 bd 31 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434588:\te8 a3 31 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "4345b3:\te8 78 31 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "4345c0:\te8 6b 31 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "4345cf:\te8 5c 31 ff ff       \tcall   0x427730"
          }
        ],
        "actorOffsetsHex": [
          "+0x08",
          "+0x0c",
          "+0x22",
          "+0x26",
          "+0x28",
          "+0x39",
          "+0x6c",
          "+0x72",
          "+0x74",
          "+0x7e"
        ],
        "dataRefsHex": [],
        "flagOps": [],
        "lineCount": 124
      },
      "excerpt": "  4344ab:\t55                   \tpush   ebp\n  4344ac:\t8b ec                \tmov    ebp,esp\n  4344ae:\t83 ec 14             \tsub    esp,0x14\n  4344b1:\t53                   \tpush   ebx\n  4344b2:\t56                   \tpush   esi\n  4344b3:\t57                   \tpush   edi\n  4344b4:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]\n  4344b7:\t33 c9                \txor    ecx,ecx\n...\n  4344b9:\t8a 48 6c             \tmov    cl,BYTE PTR [eax+0x6c]\n  43455a:\t8a 48 6c             \tmov    cl,BYTE PTR [eax+0x6c]\n  43456e:\te8 bd 31 ff ff       \tcall   0x427730\n  434588:\te8 a3 31 ff ff       \tcall   0x427730\n  43459e:\tc6 40 6c 00          \tmov    BYTE PTR [eax+0x6c],0x0\n  4345b3:\te8 78 31 ff ff       \tcall   0x427730\n  4345c0:\te8 6b 31 ff ff       \tcall   0x427730\n  4345cf:\te8 5c 31 ff ff       \tcall   0x427730\n  434611:\tc6 40 6c 00          \tmov    BYTE PTR [eax+0x6c],0x0"
    },
    {
      "va": 4408863,
      "end": 4409143,
      "label": "normal damage formula",
      "meaning": "attacker +0x70, +0x1c, target +0x7a, +0x20, target resistance table(+0x1c+family) 등을 사용해 temporary result +0x6e를 만든다. 최소값 보정 random(1..3)이 있다.",
      "confidence": "strong static evidence",
      "vaHex": "0x0043461f",
      "endHex": "0x00434737",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00427730",
            "line": "4346d3:\te8 58 30 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "4346e4:\te8 47 30 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "43471f:\te8 0c 30 ff ff       \tcall   0x427730"
          }
        ],
        "actorOffsetsHex": [
          "+0x06",
          "+0x08",
          "+0x0c",
          "+0x1c",
          "+0x20",
          "+0x6b",
          "+0x6e",
          "+0x70",
          "+0x7a"
        ],
        "dataRefsHex": [],
        "flagOps": [],
        "lineCount": 95
      },
      "excerpt": "  43461f:\t55                   \tpush   ebp\n  434620:\t8b ec                \tmov    ebp,esp\n  434622:\t83 ec 14             \tsub    esp,0x14\n  434625:\t53                   \tpush   ebx\n  434626:\t56                   \tpush   esi\n  434627:\t57                   \tpush   edi\n  434628:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  43462b:\t33 c9                \txor    ecx,ecx\n...\n  434693:\t8a 48 6b             \tmov    cl,BYTE PTR [eax+0x6b]\n  4346d3:\te8 58 30 ff ff       \tcall   0x427730\n  4346e4:\te8 47 30 ff ff       \tcall   0x427730\n  434709:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax\n  434710:\t0f bf 40 6e          \tmovsx  eax,WORD PTR [eax+0x6e]\n  43471f:\te8 0c 30 ff ff       \tcall   0x427730\n  43472e:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax"
    },
    {
      "va": 4409143,
      "end": 4409438,
      "label": "alternate/critical damage formula",
      "meaning": "normal damage와 유사하지만 계산 비율이 다르고, 낮은 결과에서 random(1..5) 보정 후 attacker +0x62 bit 0x10을 끈다. 0x10 result sound/helper 소비와 연결되는 critical/alternate damage formula다.",
      "confidence": "static critical/alternate formula grounded",
      "vaHex": "0x00434737",
      "endHex": "0x0043485e",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00427730",
            "line": "4347e9:\te8 42 2f ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "4347fa:\te8 31 2f ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434835:\te8 f6 2e ff ff       \tcall   0x427730"
          }
        ],
        "actorOffsetsHex": [
          "+0x06",
          "+0x08",
          "+0x0c",
          "+0x1c",
          "+0x20",
          "+0x62",
          "+0x6b",
          "+0x6e",
          "+0x70",
          "+0x7a"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "43484d:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "434856:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
        ],
        "lineCount": 101
      },
      "excerpt": "  434737:\t55                   \tpush   ebp\n  434738:\t8b ec                \tmov    ebp,esp\n  43473a:\t83 ec 14             \tsub    esp,0x14\n  43473d:\t53                   \tpush   ebx\n  43473e:\t56                   \tpush   esi\n  43473f:\t57                   \tpush   edi\n  434740:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  434743:\t33 c9                \txor    ecx,ecx\n...\n  4347ab:\t8a 48 6b             \tmov    cl,BYTE PTR [eax+0x6b]\n  4347e9:\te8 42 2f ff ff       \tcall   0x427730\n  4347fa:\te8 31 2f ff ff       \tcall   0x427730\n  43481f:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax\n  434826:\t0f bf 40 6e          \tmovsx  eax,WORD PTR [eax+0x6e]\n  434835:\te8 f6 2e ff ff       \tcall   0x427730\n  434844:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax\n  43484d:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434856:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
    },
    {
      "va": 4411012,
      "end": 4411694,
      "label": "target state/pose display after damage",
      "meaning": "target +0x6c 상태 byte와 +0x62 flags를 보고 target +0x2a pose, +0x64 timer, +0x68 display update flag를 설정한다.",
      "confidence": "strong static evidence",
      "vaHex": "0x00434e84",
      "endHex": "0x0043512e",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x00427730",
            "line": "434f90:\te8 9b 27 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "434fca:\te8 61 27 ff ff       \tcall   0x427730"
          },
          {
            "targetVaHex": "0x00427730",
            "line": "4350d3:\te8 58 26 ff ff       \tcall   0x427730"
          }
        ],
        "actorOffsetsHex": [
          "+0x04",
          "+0x08",
          "+0x2a",
          "+0x43",
          "+0x5e",
          "+0x62",
          "+0x64",
          "+0x66",
          "+0x68",
          "+0x6c",
          "+0x435119"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "434e92:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "434ea8:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "434fa9:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "434fb2:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl",
          "434fed:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "434ff6:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl",
          "435028:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "43505c:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "435065:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl",
          "435087:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "435090:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl",
          "4350b2:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "4350bb:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
        ],
        "lineCount": 206
      },
      "excerpt": "  434e84:\t55                   \tpush   ebp\n  434e85:\t8b ec                \tmov    ebp,esp\n  434e87:\t83 ec 0c             \tsub    esp,0xc\n  434e8a:\t53                   \tpush   ebx\n  434e8b:\t56                   \tpush   esi\n  434e8c:\t57                   \tpush   edi\n  434e8d:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  434e90:\t33 c9                \txor    ecx,ecx\n...\n  434e92:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434ea8:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434f50:\t8a 48 6c             \tmov    cl,BYTE PTR [eax+0x6c]\n  434f7c:\t8a 48 6c             \tmov    cl,BYTE PTR [eax+0x6c]\n  434f90:\te8 9b 27 ff ff       \tcall   0x427730\n  434fa9:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434fb2:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  434fca:\te8 61 27 ff ff       \tcall   0x427730\n  434fed:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  434ff6:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  435028:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  43503e:\t8a 48 6c             \tmov    cl,BYTE PTR [eax+0x6c]\n  43505c:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  435065:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  435087:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  435090:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  4350b2:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4350bb:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  4350d3:\te8 58 26 ff ff       \tcall   0x427730"
    },
    {
      "va": 4412053,
      "end": 4412246,
      "label": "HP recovery apply",
      "meaning": "target +0x08 current HP를 +0x0a max HP까지 증가시키고, trace mode에서는 applied value를 +0x6e에 쓴다.",
      "confidence": "confirmed by field writes",
      "vaHex": "0x00435295",
      "endHex": "0x00435356",
      "refs": {
        "calls": [],
        "actorOffsetsHex": [
          "+0x08",
          "+0x0a",
          "+0x0c",
          "+0x62",
          "+0x6e"
        ],
        "dataRefsHex": [
          "0x0059e34d"
        ],
        "flagOps": [
          "4352ea:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]"
        ],
        "lineCount": 62
      },
      "excerpt": "  435295:\t55                   \tpush   ebp\n  435296:\t8b ec                \tmov    ebp,esp\n  435298:\t83 ec 04             \tsub    esp,0x4\n  43529b:\t53                   \tpush   ebx\n  43529c:\t56                   \tpush   esi\n  43529d:\t57                   \tpush   edi\n  43529e:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  4352a1:\t33 c9                \txor    ecx,ecx\n...\n  4352ea:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  4352f9:\t66 c7 40 6e 00 00    \tmov    WORD PTR [eax+0x6e],0x0\n  43530b:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax"
    },
    {
      "va": 4412246,
      "end": 4412408,
      "label": "MP recovery apply",
      "meaning": "target +0x0e current MP를 +0x10 max MP까지 증가시키고, trace mode에서는 applied value를 +0x6e에 쓴다.",
      "confidence": "confirmed by field writes",
      "vaHex": "0x00435356",
      "endHex": "0x004353f8",
      "refs": {
        "calls": [],
        "actorOffsetsHex": [
          "+0x08",
          "+0x0c",
          "+0x0e",
          "+0x10",
          "+0x6e"
        ],
        "dataRefsHex": [
          "0x0059e34d"
        ],
        "flagOps": [],
        "lineCount": 54
      },
      "excerpt": "  435356:\t55                   \tpush   ebp\n  435357:\t8b ec                \tmov    ebp,esp\n  435359:\t83 ec 04             \tsub    esp,0x4\n  43535c:\t53                   \tpush   ebx\n  43535d:\t56                   \tpush   esi\n  43535e:\t57                   \tpush   edi\n  43535f:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  435362:\t33 c9                \txor    ecx,ecx\n...\n  4353ad:\t66 89 41 6e          \tmov    WORD PTR [ecx+0x6e],ax"
    },
    {
      "va": 4412408,
      "end": 4412651,
      "label": "HP damage apply",
      "meaning": "target +0x08 current HP에서 result를 빼고, 0 이하가 되면 HP 0, target +0x62 bit 0x40, death/knockout cleanup 0x4354eb를 호출한다.",
      "confidence": "confirmed by field writes",
      "vaHex": "0x004353f8",
      "endHex": "0x004354eb",
      "refs": {
        "calls": [
          {
            "targetVaHex": "0x004354eb",
            "line": "43546e:\te8 78 00 00 00       \tcall   0x4354eb"
          }
        ],
        "actorOffsetsHex": [
          "+0x04",
          "+0x06",
          "+0x08",
          "+0x0a",
          "+0x0c",
          "+0x62"
        ],
        "dataRefsHex": [],
        "flagOps": [
          "43545e:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]",
          "435467:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"
        ],
        "lineCount": 78
      },
      "excerpt": "  4353f8:\t55                   \tpush   ebp\n  4353f9:\t8b ec                \tmov    ebp,esp\n  4353fb:\t83 ec 04             \tsub    esp,0x4\n  4353fe:\t53                   \tpush   ebx\n  4353ff:\t56                   \tpush   esi\n  435400:\t57                   \tpush   edi\n  435401:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]\n  435404:\t33 c9                \txor    ecx,ecx\n...\n  43545e:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]\n  435467:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl\n  43546e:\te8 78 00 00 00       \tcall   0x4354eb"
    }
  ],
  "staticEvidence": {
    "actionMappingSummary": {},
    "resultLayerSummary": {
      "targetScriptRows": 31,
      "targetBlocks": 7,
      "runtimeResultRows": 0,
      "targetDamageRows": 0,
      "runtimeWlkCounts": {},
      "targetTailUsage": []
    }
  },
  "nextSteps": [
    "0x10 critical path의 WLK id 14 sound role과 palette flash/fade child script는 확정됐다. 남은 작업은 browser runner에서 VM tick 기반 섬광 지속시간을 wall-clock으로 맞추는 것이다.",
    "browser 전투 엔진 반영은 지금 단계에서 HP/MP apply와 payload family/status/critical presentation 구조를 넣고, +0x28은 숨은 전투 발동률 계수로 표기한다."
  ]
}