{
  "version": 1,
  "kind": "battle-result-display-branch-review",
  "source": [
    "out/battle_result_layer_trace_review.json",
    "out/battle_per_hit_result_flag_review.json"
  ],
  "status": "target-result-display-branches-grounded",
  "summary": [
    "Target result object script 0x00454578 tests actor sideFlags(+0x62) bit 0x20 first, then bit 0x08.",
    "The 0x20 branch selects WLK id 12, helper operand 0x05(dec 5), and target frame 0. This is the display/sound branch paired with the full miss / HP-apply skip bit.",
    "The 0x08 branch selects WLK id 11, helper operand 0x16(dec 22), and target frame 0. This is the display/sound branch paired with the guard/glancing chip-damage bit.",
    "The normal branch falls through to helper operand 0x02(dec 2) and target frame 4; the 0x004545d0 frame-4 shake loop is a static continuation block.",
    "The helper label/effect binding is now grounded in battle_result_helper_label_review: 0x05 directly renders btl_etc MISS F81 and 0x16 runs btl_efc F56..59."
  ],
  "branchRows": [
    {
      "case": "normal hit",
      "flag": "neither 0x20 nor 0x08",
      "scriptVa": "0x00454588",
      "scriptBytes": "bd 02 00 00; 21 01 08 00 00 00 04 00",
      "effect": "helper 0x02(dec 2), target frame 4 gate 8",
      "wlk": "normal result WLK selected earlier by 0xc2 operand",
      "runnerAction": "show normal hit frame/shake path and damage number from +0x6e",
      "confidence": "확정"
    },
    {
      "case": "0x20 full miss / HP apply skip",
      "flag": "target +0x62 & 0x20",
      "scriptVa": "0x00454578 -> 0x0045459c",
      "scriptBytes": "13 c6 62 20 9c 45 45 00; 24 01 00 0c; bd 05 00 00; 21 01 08 00 00 00 00 00",
      "effect": "WLK id 12, helper 0x05(dec 5), helper body direct btl_etc MISS F81, target frame 0 gate 8",
      "wlk": "WLK id 12 from target result script, while normal 0xc2 sound is suppressed by mask 0x28",
      "runnerAction": "do not apply/show damage; show MISS badge from btl_etc frame 81 and route to miss-style target result branch",
      "confidence": "확정"
    },
    {
      "case": "0x08 guard/glancing chip damage",
      "flag": "target +0x62 & 0x08",
      "scriptVa": "0x00454580 -> 0x004545b4",
      "scriptBytes": "13 c6 62 08 b4 45 45 00; 24 01 00 0b; bd 16 00 00; 21 01 08 00 00 00 00 00",
      "effect": "WLK id 11, helper 0x16(dec 22), btl_efc F56..59, target frame 0 gate 8",
      "wlk": "WLK id 11 from target result script, while normal 0xc2 sound is suppressed by mask 0x28",
      "runnerAction": "show 1..3 guard/glancing chip result from +0x6e with branch-specific WLK/helper effect; do not show MISS label and keep target on normal frame",
      "confidence": "확정"
    },
    {
      "case": "hit-frame4 shake loop",
      "flag": "normal result continuation / repeated hit display",
      "scriptVa": "0x004545d0",
      "scriptBytes": "21 frame 4 gates, helper 0x07(dec 7), alternating arithmetic writes, AD mask 0x20",
      "effect": "target frame 4 held with shake-style arithmetic writes",
      "wlk": "no separate WLK in this block",
      "runnerAction": "keep target in hit frame and shake during repeated-hit windows",
      "confidence": "정적 분기 + 오프닝 자동 재생 보조 확인"
    }
  ],
  "runnerRules": [
    {
      "priority": 1,
      "rule": "If target has 0x20, skip HP apply and suppress the skill normal result WLK; execute target branch WLK id 12/helper 0x05(dec 5)/frame0.",
      "reason": "0x4340ae returns before HP apply, and target result script tests 0x20 first."
    },
    {
      "priority": 2,
      "rule": "If target has 0x08, use +0x6e=1..3, suppress the skill normal result WLK, then execute WLK id 11/helper 0x16(dec 22)/frame0 without MISS text.",
      "reason": "0x43414d sets 1..3 and clears +0x6c, while 0x40ef1b suppresses normal sound through mask 0x28."
    },
    {
      "priority": 3,
      "rule": "If attacker has 0x10 and was not downgraded, alternate sound/effect is consumed before normal branch handling.",
      "reason": "0x40ef1b checks 0x10 first, spawns 0x402321, and clears 0x10."
    },
    {
      "priority": 4,
      "rule": "Otherwise use skill 0xc2 normal result WLK and normal target frame4/shake path.",
      "reason": "Target result script falls through to helper 0x02(dec 2)/frame4, and static continuation block 0x004545d0 handles the repeated-hit shake path."
    }
  ],
  "targetEvidenceRows": [
    {
      "va": 4539768,
      "vaHex": "0x00454578",
      "opcode": "0x13",
      "name": "conditional branch",
      "length": 8,
      "bytes": "13 c6 62 20 9c 45 45 00",
      "summary": "if mode=0xc6 field=0x62 mask/value=0x20 -> 0x0045459c",
      "targetVa": 4539804,
      "targetVaHex": "0x0045459c",
      "wlkNo": null,
      "helperId": null,
      "frame": null,
      "gate": null,
      "branchMode": "0xc6",
      "flagMask": "0x20"
    },
    {
      "va": 4539776,
      "vaHex": "0x00454580",
      "opcode": "0x13",
      "name": "conditional branch",
      "length": 8,
      "bytes": "13 c6 62 08 b4 45 45 00",
      "summary": "if mode=0xc6 field=0x62 mask/value=0x08 -> 0x004545b4",
      "targetVa": 4539828,
      "targetVaHex": "0x004545b4",
      "wlkNo": null,
      "helperId": null,
      "frame": null,
      "gate": null,
      "branchMode": "0xc6",
      "flagMask": "0x08"
    },
    {
      "va": 4539784,
      "vaHex": "0x00454588",
      "opcode": "0xbd",
      "name": "helper dispatch",
      "length": 4,
      "bytes": "bd 02 00 00",
      "summary": "helper id 0x02",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": 2,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539788,
      "vaHex": "0x0045458c",
      "opcode": "0x21",
      "name": "sprite/frame write",
      "length": 8,
      "bytes": "21 01 08 00 00 00 04 00",
      "summary": "set target frame=4, gate=8, mode=1",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": null,
      "frame": 4,
      "gate": 8,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539804,
      "vaHex": "0x0045459c",
      "opcode": "0x24",
      "name": "effect/cast cue",
      "length": 4,
      "bytes": "24 01 00 0c",
      "summary": "effect/cast cue WLK id 12",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": 12,
      "helperId": null,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539808,
      "vaHex": "0x004545a0",
      "opcode": "0xbd",
      "name": "helper dispatch",
      "length": 4,
      "bytes": "bd 05 00 00",
      "summary": "helper id 0x05",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": 5,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539812,
      "vaHex": "0x004545a4",
      "opcode": "0x21",
      "name": "sprite/frame write",
      "length": 8,
      "bytes": "21 01 08 00 00 00 00 00",
      "summary": "set target frame=0, gate=8, mode=1",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": null,
      "frame": 0,
      "gate": 8,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539828,
      "vaHex": "0x004545b4",
      "opcode": "0x24",
      "name": "effect/cast cue",
      "length": 4,
      "bytes": "24 01 00 0b",
      "summary": "effect/cast cue WLK id 11",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": 11,
      "helperId": null,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539832,
      "vaHex": "0x004545b8",
      "opcode": "0xbd",
      "name": "helper dispatch",
      "length": 4,
      "bytes": "bd 16 00 00",
      "summary": "helper id 0x16",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": 22,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539836,
      "vaHex": "0x004545bc",
      "opcode": "0x21",
      "name": "sprite/frame write",
      "length": 8,
      "bytes": "21 01 08 00 00 00 00 00",
      "summary": "set target frame=0, gate=8, mode=1",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": null,
      "frame": 0,
      "gate": 8,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539844,
      "vaHex": "0x004545c4",
      "opcode": "0xad",
      "name": "actor flag set/clear",
      "length": 8,
      "bytes": "ad 00 00 00 04 00 00 00",
      "summary": "actor flag mode=0x00, mask=0x00000004",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": null,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": "0x04"
    },
    {
      "va": 4539864,
      "vaHex": "0x004545d8",
      "opcode": "0x21",
      "name": "sprite/frame write",
      "length": 8,
      "bytes": "21 01 08 00 00 00 04 00",
      "summary": "set target frame=4, gate=8, mode=1",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": null,
      "frame": 4,
      "gate": 8,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539872,
      "vaHex": "0x004545e0",
      "opcode": "0xbd",
      "name": "helper dispatch",
      "length": 4,
      "bytes": "bd 07 00 00",
      "summary": "helper id 0x07",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": 7,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": ""
    },
    {
      "va": 4539948,
      "vaHex": "0x0045462c",
      "opcode": "0xad",
      "name": "actor flag set/clear",
      "length": 8,
      "bytes": "ad 00 00 00 20 00 00 00",
      "summary": "actor flag mode=0x00, mask=0x00000020",
      "targetVa": null,
      "targetVaHex": "",
      "wlkNo": null,
      "helperId": null,
      "frame": null,
      "gate": null,
      "branchMode": "",
      "flagMask": "0x20"
    }
  ],
  "perHitFlagSummary": [
    "Bits 0x08/0x10/0x20 are per-hit result bits cleared at hit-unit reset by +0x62 &= 0xc3.",
    "0x20 is the strongest conclusion: target full miss / HP-apply skip. 0x4340ae returns before HP/recovery apply.",
    "0x08 is a guard/glancing chip-damage target result: the normal formula is skipped and attacker +0x6e becomes random(3)+1.",
    "0x10 belongs to the attacker and selects the critical/alternate damage path and alternate result sound/effect; the result layer clears it after consumption.",
    "The 0x10 consumer path is statically grounded: stream operand +3 selects alternate WLK, helper runner 0x402321 is spawned, child script table [0x442da1+0x150] is attached, and +0x10 is cleared.",
    "0x10 can be downgraded by the alternate formula when the computed result is below 3, so the bit is not simply a permanent critical label.",
    "0x08/0x20 display bindings are grounded. 0x08 is not a MISS label path; it displays low damage over the normal target frame with a weak hit sound. Critical is not expected to have a text label; it is a flash/sound/high-damage presentation path."
  ]
}
