MARIO KART DSDECOMPILATION RESEARCH
Research / Research notes
Source: analysis/vm_report.md · Updated 2026-10-07
On this page

VM / dispatcher scan report

Scanned 35 files; 35 contain a switch.

tier count
minor_switch 14
large_switch 6
dispatch_loop 6
text_parser 6
vm_interpreter 3

Candidate functions

function tier score cases cyclo loops/nest IP fetch suspect family
sub_224746C vm_interpreter 25.25 45 110 5/4 a1+0x28 sub_22487F8, sub_2248848 F01
sub_2F838CC vm_interpreter 25.25 45 108 4/4 v36+0x28 sub_2F843F8 F01
sub_209DEAA vm_interpreter 24.5 42 111 4/4 v15+0x28 sub_2148078 ⚠ F01
sub_2147EC0 minor_switch 7.25 5 7 0/0 a1+0x28 sub_2148078 F02
sub_2248640 minor_switch 7.25 5 7 0/0 a1+0x28 sub_22487F8 F02
sub_2F84240 minor_switch 7.25 5 7 0/0 a1+0x28 sub_2F843F8 F02
sub_221D464 minor_switch 6.25 5 15 1/1 F03
sub_2F59064 minor_switch 6.25 5 15 1/1 F03
sub_215EB20 dispatch_loop 6.0 8 31 2/2 F04
sub_2240AE8 dispatch_loop 6.0 8 31 2/2 F04
sub_2F7C6E8 dispatch_loop 6.0 8 31 2/2 F04
sub_21670AC dispatch_loop 5.75 7 33 1/1 F05
sub_226292C dispatch_loop 5.75 7 32 1/1 F05
sub_2F9E52C dispatch_loop 5.75 7 32 1/1 F05
sub_2166D60 large_switch 3.75 15 37 0/0 F06
sub_22625E0 large_switch 3.75 15 37 0/0 F06
sub_2F9E1E0 large_switch 3.75 15 37 0/0 F06
sub_21489FC large_switch 1.75 7 17 4/1 F07
sub_224917C large_switch 1.75 7 17 4/1 F07
sub_2F84D7C large_switch 1.75 7 17 4/1 F07
sub_2160A9C minor_switch 1.25 5 16 1/1 F08
sub_21611A0 minor_switch 1.25 5 14 0/0 F09
sub_225C864 minor_switch 1.25 5 16 1/1 F08
sub_225CF68 minor_switch 1.25 5 14 0/0 F09
sub_2F98464 minor_switch 1.25 5 16 1/1 F08
sub_2F98B68 minor_switch 1.25 5 14 0/0 F09
sub_215DE64 minor_switch 0.75 3 18 1/1 F10
sub_223FBE4 minor_switch 0.75 3 18 1/1 F11
sub_2F7B7E4 minor_switch 0.75 3 18 1/1 F11

Family F01 — representative sub_224746C

Members: sub_224746C, sub_2F838CC, sub_209DEAA

Opcodes (50): 0x80 0x81 0x93 0x94 0x95 0xa0 0xa1 0xa2 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xe0 0xe1 0xe3 0xfc 0xfd 0xff

  • IP: a1+0x28 (u32), fetch: sub_22487F8, sub_2248848
  • operand readers: sub_2248640
  • opcodes tested inline (prefixes / if-chains): 0x80 0x81 0xa0 0xa1 0xa2
  • masked range dispatch groups: 0x80 0x90 0xb0 0xc0 0xd0 0xe0

switch @ line 158 on v13 — 23 cases (in loop) (goto back into loop)

opcode line tags effect end
0xc0 160 ctx_write W a1+0x8:u8 break
0xc1 163 ctx_write W a1+0x4:u8 break
0xc2 166 external_write W a2+0x5:u8 break
0xc3 169 ctx_write W a1+0x13:u8 break
0xc4 172 ctx_write W a1+0x6:u8 break
0xc5 175 ctx_write W a1+0x7:u8 break
0xc6 178 ctx_write W a1+0x12:u8 break
0xc7 181 ctx_write W a1+0x0:u8; R a1+0x0 break
0xc8 184 ctx_write, calls_helper W a1+0x0:u8; R a1+0x0; calls sub_2248418, sub_22483DC break
0xc9 189 ctx_write W a1+0x0:u8, a1+0x14:u8; R a1+0x13 break
0xca 193 ctx_write W a1+0x1a:u8 break
0xcb 196 ctx_write W a1+0x19:u8 break
0xcc 199 ctx_write W a1+0x18:u8 break
0xcd 202 ctx_write W a1+0x1b:u8 break
0xce 205 ctx_write W a1+0x0:u8; R a1+0x0 break
0xcf 208 ctx_write W a1+0x15:u8 break
0xd0 211 ctx_write W a1+0xe:u8 break
0xd1 214 ctx_write W a1+0xf:u8 break
0xd2 217 ctx_write W a1+0x10:u8 break
0xd3 220 ctx_write W a1+0x11:u8 break
0xd4 223 ctx_write, conditional W a1+0x2c[i]:u32, a1+0x38[i]:u8, a1+0x3b:u8; R a1+0x28, a1+0x3b fallthrough
0xd5 231 ctx_write W a1+0x5:u8 break
0xd6 234 calls_helper R a2+0x1, v30+0x0; calls sub_22473A8, sub_2242A44 break
default 238 goto — goto LABEL_158

switch @ line 257 on v13 — 13 cases (in loop) (goto back into loop)

opcode line tags effect end
0xb0 259 external_write W v35+0x0:u16 break
0xb1 262 external_write W v35+0x0:u16 break
0xb2 265 external_write W v35+0x0:u16 break
0xb3 268 external_write W v35+0x0:u16 break
0xb4 271 conditional, calls_helper R v35+0x0; calls sub_224E7F4 break
0xb5 275 external_write, conditional W v37+0x0:u16; R v35+0x0 break
0xb6 282 external_write, conditional, calls_helper W v37+0x0:u16; calls sub_2245F58 break
0xb8 294 ctx_write W a1+0x0:u8; R a1+0x0, v35+0x0 break
0xb9 297 ctx_write W a1+0x0:u8; R a1+0x0, v35+0x0 break
0xba 300 ctx_write W a1+0x0:u8; R a1+0x0, v35+0x0 break
0xbb 303 ctx_write W a1+0x0:u8; R a1+0x0, v35+0x0 break
0xbc 306 ctx_write W a1+0x0:u8; R a1+0x0, v35+0x0 break
0xbd 309 ctx_write W a1+0x0:u8; R a1+0x0, v35+0x0 break
default 312 goto — goto LABEL_158

switch @ line 321 on v13 — 3 cases (in loop)

opcode line tags effect end
0x93 323 ctx_write, conditional, fetches_operand, calls_helper W a1+0x28:u32; R a1+0x24, a1+0x28; ip+=1; operands: sub_22487F8(); calls sub_2248748, sub_22482F0, sub_22482D0, sub_2248538 fallthrough
0x94 341 control_flow, ctx_write, conditional, calls_helper W a1+0x28:u32; R a1+0x24; calls sub_2248748 break
0x95 346 control_flow, ctx_write, conditional, calls_helper W a1+0x28:u32, a1+0x2c[i]:u32, a1+0x3b:u8; R a1+0x24, a1+0x28, a1+0x3b; calls sub_2248748 fallthrough

switch @ line 389 on v13 — 3 cases (in loop)

opcode line tags effect end
0xe0 391 ctx_write W a1+0x1c:u16 break
0xe1 394 external_write W a2+0x18:u16 break
0xe3 397 ctx_write W a1+0x16:u16 break

switch @ line 410 on v13 — 3 cases (goto back into loop)

Prefetch before dispatch: _ = sub_2248848(*((_DWORD *)a1 + 10))

opcode line tags effect end
0xfc 412 control_flow, ctx_write, external_write, conditional W a1+0x28:u32, a1+0x3b:u8, v43+0x38:u8; R a1+-0x1[i], a1+0x28[i], a1+0x3b, v43+0x38 fallthrough
0xfd 430 control_flow, goto, ctx_write, conditional W a1+0x28:u32, a1+0x3b:u8; R a1+0x2c[i], a1+0x3b goto LABEL_158
0xff 434 — break
default 437 goto — goto LABEL_158

Context struct (a1) as observed

off width idx handler R/W touched by
-0x1 u8 y 1/0 0xfc
0x0 u8 9/10 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xc7 0xc8 0xc9 0xce
0x2 u16 0/0
0x4 u8 0/1 0xc1
0x5 u8 0/1 0xd5
0x6 u8 0/1 0xc4
0x7 u8 0/1 0xc5
0x8 u8 0/1 0xc0
0xe u8 0/1 0xd0
0xf u8 0/1 0xd1
0x10 u8 0/1 0xd2
0x11 u8 0/1 0xd3
0x12 u8 0/1 0xc6
0x13 u8 1/1 0xc3 0xc9
0x14 u8 0/1 0xc9
0x15 u8 0/1 0xcf
0x16 u16 0/1 0xe3
0x18 u8 0/1 0xcc
0x19 u8 0/1 0xcb
0x1a u8 0/1 0xca
0x1b u8 0/1 0xcd
0x1c u16 0/1 0xe0
0x20 u32 0/0
0x24 u32 3/0 0x93 0x94 0x95
0x28 u32/u8 y 4/5 0x93 0x94 0x95 0xd4 0xfc 0xfd
0x2c u32/u8 y 1/2 0x95 0xd4 0xfd
0x38 u8 y 0/1 0xd4
0x3b u8 6/4 0x95 0xd4 0xfc 0xfd
0x3c u32 0/0

Helpers referenced

helper role calls fan-in lines in corpus
sub_22487F8 fetch 7 2
sub_2F843F8 fetch 7 2
sub_2148078 fetch 7 2
sub_2248640 operand_reader 5 1 38 y
sub_2F84240 operand_reader 5 1 38 y
sub_2147EC0 operand_reader 5 1 38 y
sub_2248748 helper 3 1
sub_2F84348 helper 3 1
sub_2147FC8 helper 3 1
sub_22473A8 helper 2 2
v59 helper 2 1
sub_2F82FA8 helper 2 2
sub_2146C4C helper 2 2
sub_2248848 fetch 1 1
sub_2247E44 helper 1 1
sub_2248418 helper 1 1
sub_22483DC helper 1 1
sub_2242A44 helper 1 1
sub_224E7F4 helper 1 1
sub_2245F58 helper 1 2
sub_22482F0 helper 1 1
sub_22482D0 helper 1 1
sub_2248538 helper 1 1
sub_2F83A44 helper 1 1
sub_2F84018 helper 1 1
sub_2F83FDC helper 1 1
sub_2F7E644 helper 1 1
sub_2F8A3F4 helper 1 1
sub_2F81B58 helper 1 2
sub_2F83EF0 helper 1 1
sub_2F83ED0 helper 1 1
sub_2F84138 helper 1 1
sub_209E04C helper 1 1
sub_21476C4 helper 1 1
sub_2147C98 helper 1 1
sub_2147C5C helper 1 1
sub_21503B8 helper 1 1
sub_21457FC helper 1 2
sub_2147B70 helper 1 1
sub_2147B50 helper 1 1
sub_2147DB8 helper 1 1

Family F02 — representative sub_2147EC0

Members: sub_2147EC0, sub_2248640, sub_2F84240

Opcodes (5): 0x0 0x1 0x2 0x3 0x4

  • IP: a1+0x28 (u32), fetch: sub_2148078

switch @ line 9 on a3 — 5 cases

opcode line tags effect end
0x0 11 ctx_write, fetches_operand W a1+0x28:u32; R a1+0x28; ip+=1; operands: sub_2148078() break
0x1 15 calls_helper calls sub_2148028 break
0x2 18 calls_helper calls sub_2147F88 break
0x3 21 calls_helper calls sub_2148028, sub_21457FC break
0x4 26 ctx_write, conditional, fetches_operand, calls_helper W a1+0x28:u32; R a1+0x28, v7+0x0; ip+=1; operands: sub_2148078(); calls sub_2146C4C break
default 33 halt_or_return — return v3

Context struct (a1) as observed

off width idx handler R/W touched by
0x28 u32 2/2 0x0 0x4

Helpers referenced

helper role calls fan-in lines in corpus
sub_2148028 helper 3 1
sub_22487A8 helper 3 1
sub_2F843A8 helper 3 1
sub_2148078 fetch 2 2
sub_22487F8 fetch 2 2
sub_2F843F8 fetch 2 2
sub_2147F88 helper 1 1
sub_21457FC helper 1 2
sub_2146C4C helper 1 2
sub_2248708 helper 1 1
sub_2245F58 helper 1 2
sub_22473A8 helper 1 2
sub_2F84308 helper 1 1
sub_2F81B58 helper 1 2
sub_2F82FA8 helper 1 2

Family F03 — representative sub_221D464

Members: sub_221D464, sub_2F59064

Opcodes (5): 0x1 0x2 0x3 0x4 0x5

switch @ line 84 on *a2 — 5 cases (goto back into loop)

opcode line tags effect end
0x1 0x2 0x3 0x4 0x5 86 ctx_write W a2+0x2:u16, a2+0x4:u16, a2+0x6:u16, a2+0x8:u16, a2+0xa:u16…; R v5+0x0, v5+0x2, v5+0x4, v5+0x6… break
default 102 goto — goto LABEL_16

Context struct (a2) as observed

off width idx handler R/W touched by
0x0 u16/u8 0/0
0x2 u16 0/1 0x1 0x2 0x3 0x4 0x5
0x4 u16 0/1 0x1 0x2 0x3 0x4 0x5
0x6 u16 0/1 0x1 0x2 0x3 0x4 0x5
0x8 u16 0/1 0x1 0x2 0x3 0x4 0x5
0xa u16 0/1 0x1 0x2 0x3 0x4 0x5

Family F04 — representative sub_215EB20

Members: sub_215EB20, sub_2240AE8, sub_2F7C6E8

Opcodes (8): 0x0 0x1 0x5 0x8 0xc 0xd 0xe 0xf

switch @ line 48 on v6 & 0xF — 8 cases (in loop) (goto back into loop)

opcode line tags effect end
0x0 50 conditional R v5+0x14 break
0x1 54 conditional, calls_helper R v5+0x14; calls sub_21685B8 break
0x5 58 conditional, calls_helper R v5+0x14; calls sub_2159F38, sub_2159984 fallthrough
0x8 67 conditional, calls_helper R v5+0x14; calls sub_2159F38, sub_2159984 fallthrough
0xc 75 conditional, calls_helper, absolute_memory W loc_380FFF4+0x5ac:u32; R loc_380FFF4+0x354, v5+0x14; calls sub_2168F5C fallthrough
0xd 84 conditional, calls_helper W loc_380FFF4+0x5b0:u32; R v5+0x14; calls sub_2168C80 fallthrough
0xe 0xf 91 conditional, calls_helper R v5+0x14; calls sub_2168D64 break
default 96 nop — break

Helpers referenced

helper role calls fan-in lines in corpus
sub_2159F38 helper 3 1
sub_2159984 helper 3 5
sub_223E900 helper 3 1
sub_223E4BC helper 3 2
sub_2F7A500 helper 3 1
sub_2F7A0BC helper 3 2
sub_215D478 helper 2 1
sub_215A258 helper 2 1
sub_2240818 helper 2 1
sub_2F7C418 helper 2 1
sub_215E8FC helper 1 1
sub_21685B8 helper 1 2
sub_2168F5C helper 1 1
sub_2168C80 helper 1 1
sub_2168D64 helper 1 1
sub_2159FAC helper 1 2
sub_224105C helper 1 1
sub_223E87C helper 1 1
sub_2F7CC5C helper 1 1
sub_2F7A47C helper 1 1

Family F05 — representative sub_21670AC

Members: sub_21670AC, sub_226292C, sub_2F9E52C

Opcodes (7): 0x0 0x1 0x2 0x3 0x4 0x5 0x6

switch @ line 29 on (unsigned int)v5 — 7 cases (in loop)

Prefetch before dispatch: v5 = sub_215A5BC(v2), v8 = sub_215A5BC(v6)

opcode line tags effect end
0x0 31 ctx_write, external_write, conditional, calls_helper W a1+0xa:u16, a1+0x1c:u32, v4+0x0:u16; R a1+0xc; calls sub_215B4AC fallthrough
0x1 48 ctx_write, external_write, conditional, calls_helper W a1+0xa:u16, v4+0x0:u16; R a1+0x14, a1+0x16, loc_380FFF4+0x3a4, loc_380FFF4+0x3a6; calls sub_215B394 fallthrough
0x2 0x6 66 nop — break
0x3 69 ctx_write, external_write, conditional, calls_helper W a1+0xa:u16, a1+0x12:u16, v4+0x0:u16; R a1+0xa, a1+0x12, loc_380FFF4+0x41c; calls sub_215A5BC fallthrough
0x4 81 ctx_write, conditional W a1+0xc:u16, a1+0x20:u32 fallthrough
0x5 88 ctx_write, conditional W a1+0xc:u16, a1+0x24:u32 fallthrough
default 95 ctx_write, conditional, calls_helper W a1+0xc:u16, a1+0x18:u16, a1+0x1a:u16, a1+0x28:u32; calls sub_215A5BC fallthrough

Context struct (a1) as observed

off width idx handler R/W touched by
0x4 u16 0/0
0x6 u16 0/0
0x8 u16 0/0
0xa u16 2/6 0x0 0x1 0x3
0xc u16 1/3 0x0 0x4 0x5 default
0x12 u16 1/1 0x3
0x14 u16 1/0 0x1
0x16 u16 1/0 0x1
0x18 u16 0/2 default
0x1a u16 0/2 default
0x1c u32 0/1 0x0
0x20 u32 0/1 0x4
0x24 u32 0/1 0x5
0x28 u32 0/1 default

Helpers referenced

helper role calls fan-in lines in corpus
sub_215A5BC helper 7 3
sub_2258A6C helper 7 3
sub_2F9466C helper 7 3
sub_215B4AC helper 1 1
sub_215B394 helper 1 1
sub_22593C8 helper 1 1
sub_22592B0 helper 1 1
sub_2262C5C helper 1 1
sub_2262C48 helper 1 1
sub_2F94FC8 helper 1 1
sub_2F94EB0 helper 1 1
sub_2F9E85C helper 1 1
sub_2F9E848 helper 1 1

Family F06 — representative sub_2166D60

Members: sub_2166D60, sub_22625E0, sub_2F9E1E0

Opcodes (12): 0x0 0x1 0x2 0x3 0x4 0x5 0x8 0xa 0xb 0xc 0xe 0xf

  • opcodes tested inline (prefixes / if-chains): 0x4 0xa 0xb 0xe 0xf

switch @ line 87 on v7 — 8 cases

opcode line tags effect end
0x0 89 goto — goto LABEL_13
0x2 91 calls_helper calls sub_2168034 break
0x4 94 goto — goto LABEL_12
0x5 96 calls_helper calls sub_2167A44 break
0x8 100 calls_helper calls sub_21685B8 break
0xa 104 calls_helper calls sub_21684C8 break
0xb 108 goto — goto LABEL_11
0xc 110 calls_helper calls sub_2167458 break
default 114 goto — goto LABEL_40

switch @ line 128 on v7 — 7 cases

opcode line tags effect end
0x1 130 calls_helper calls sub_21681D0 break
0x3 133 calls_helper calls sub_2167F00 break
0x5 136 goto — goto LABEL_26
0x8 138 goto — goto LABEL_24
0xa 140 goto — goto LABEL_27
0xb 142 goto — goto LABEL_11
0xc 144 goto — goto LABEL_28
default 146 goto — goto LABEL_40

Helpers referenced

helper role calls fan-in lines in corpus
sub_21524B4 helper 1 2
sub_215FCE0 helper 1 1
sub_2167E44 helper 1 1
sub_2167514 helper 1 1
sub_21682FC helper 1 1
sub_215F950 helper 1 1
sub_215FA9C helper 1 1
sub_215F77C helper 1 1
sub_2159FAC helper 1 2
sub_2159984 helper 1 5
sub_215F98C helper 1 1
sub_215FA38 helper 1 1
sub_21673F0 helper 1 1
sub_2168034 helper 1 1
sub_2167A44 helper 1 1
sub_21685B8 helper 1 2
sub_21684C8 helper 1 1
sub_2167458 helper 1 1
nullsub_5 helper 1 1
sub_21681D0 helper 1 1
sub_2167F00 helper 1 1
loc_327825C helper 1 2
sub_225BE50 helper 1 1
sub_22636C4 helper 1 1
sub_2262D94 helper 1 1
sub_2263B7C helper 1 1
sub_225BAC0 helper 1 1
sub_225BC0C helper 1 1
sub_225B8EC helper 1 1
loc_32682E4 helper 1 1
loc_3267F24 helper 1 3
sub_225BAFC helper 1 1
sub_225BBA8 helper 1 1
sub_2262C70 helper 1 1
sub_22638B4 helper 1 1
sub_22632C4 helper 1 1
sub_2263E38 helper 1 1
sub_2263D48 helper 1 1
sub_2262CD8 helper 1 1
nullsub_13 helper 1 1
sub_2263A50 helper 1 1
sub_2263780 helper 1 1
unk_3FB3E5C helper 1 2
sub_2F97A50 helper 1 1
sub_2F9F2C4 helper 1 1
sub_2F9E994 helper 1 1
sub_2F9F77C helper 1 1
sub_2F976C0 helper 1 1
sub_2F9780C helper 1 1
sub_2F974EC helper 1 1
unk_3FA3EE4 helper 1 1
unk_3FA3B24 helper 1 3
sub_2F976FC helper 1 1
sub_2F977A8 helper 1 1
sub_2F9E870 helper 1 1
sub_2F9F4B4 helper 1 1
sub_2F9EEC4 helper 1 1
sub_2F9FA38 helper 1 1
sub_2F9F948 helper 1 1
sub_2F9E8D8 helper 1 1
nullsub_21 helper 1 1
sub_2F9F650 helper 1 1
sub_2F9F380 helper 1 1

Family F07 — representative sub_21489FC

Members: sub_21489FC, sub_224917C, sub_2F84D7C

Opcodes (7): 0x1 0x2 0x3 0x4 0x5 0x10 0x11

switch @ line 32 on *a4 — 7 cases

opcode line tags effect end
0x1 0x2 0x3 0x4 0x5 34 goto W v10+0x0:u16, v11+0x0:u16 goto LABEL_20
0x10 50 goto, ctx_write, conditional W a4+0x0:u16; R v14+0x0, v14+0x1, v14+0x2[i], v16+0x0 goto LABEL_20
0x11 67 — break
default 71 goto — goto LABEL_16

Context struct (a4) as observed

off width idx handler R/W touched by
0x0 u16/u8 0/1 0x10

Helpers referenced

helper role calls fan-in lines in corpus
nullsub_2 helper 2 1
nullsub_11 helper 2 1
nullsub_19 helper 2 1
nullsub_3 helper 1 1
nullsub_12 helper 1 1
nullsub_20 helper 1 1

Family F08 — representative sub_2160A9C

Members: sub_2160A9C, sub_225C864, sub_2F98464

Opcodes (5): 0x80 0x81 0x82 0x83 0x84

switch @ line 18 on *(_WORD *)(loc_380FFF4 + 1028) — 5 cases

opcode line tags effect end
0x80 20 goto, external_write, calls_helper W loc_380FFF4+0x350:u16, loc_380FFF4+0x412:u16, loc_380FFF4+0x414:u16, loc_380FFF4+0x418:u16, loc_380FFF4+0x41a:u16; R loc_380FFF4+0x41c; calls sub_215AD90, sub_215C6A4 goto LABEL_3
0x81 30 halt_or_return, external_write, conditional, calls_helper, absolute_memory W loc_380FFF4+0x408:u32, loc_380FFF4+0x40c:u32, loc_380FFF4+0x410:u16, loc_380FFF4+0x41a:u16, v4+0x0:u16; R loc_380FFF4+0x418, loc_380FFF4+0x41c, v4+0x0; calls sub_215A5BC, sub_21697EC, sub_215BE74, sub_215AE7C, sub_215BCE4, sub_215A7CC, sub_2159984 return
0x82 72 goto — goto LABEL_12
0x83 74 goto, external_write, conditional, calls_helper W v4+0x0:u16; R loc_380FFF4+0x408, loc_380FFF4+0x40c, loc_380FFF4+0x418, loc_380FFF4+0x41c…; calls sub_215A5BC, sub_21547BC goto LABEL_24
0x84 94 goto, external_write, calls_helper W loc_380FFF4+0x350:u16, v4+0x0:u16; R loc_380FFF4+0x32e, loc_380FFF4+0x404, loc_380FFF4+0x410, loc_380FFF4+0x412…; calls sub_215ADC4, sub_215AD50, sub_215BCE4, sub_21609F4 goto LABEL_24
default 106 goto — goto LABEL_24

Helpers referenced

helper role calls fan-in lines in corpus
sub_215AD90 helper 2 1
sub_215A5BC helper 2 3
sub_215BE74 helper 2 2
sub_215BCE4 helper 2 1
sub_215AD50 helper 2 1
sub_2259230 helper 2 1
sub_2258A6C helper 2 3
sub_2259CEC helper 2 2
sub_22591F0 helper 2 1
sub_2F94E30 helper 2 1
sub_2F9466C helper 2 3
sub_2F958EC helper 2 2
sub_2F9575C helper 2 1
sub_2F94DF0 helper 2 1
sub_215C6A4 helper 1 1
sub_21697EC helper 1 2
sub_215AE7C helper 1 2
sub_215A7CC helper 1 2
sub_2159984 helper 1 5
sub_21547BC helper 1 1
sub_215ADC4 helper 1 2
sub_21609F4 helper 1 2
sub_225A51C helper 1 1
sub_2265044 helper 1 2
sub_3268820 helper 1 2
sub_2258C7C helper 1 2
loc_3267F24 helper 1 3
unk_3278468 helper 1 1
loc_3268CE4 helper 1 2
sub_2259B5C helper 1 1
sub_225C7BC helper 1 2
sub_2F9611C helper 1 1
sub_2FA0C44 helper 1 2
unk_3FA4420 helper 1 2
sub_2F9487C helper 1 2
unk_3FA3B24 helper 1 3
unk_3FB4068 helper 1 1
unk_3FA48E4 helper 1 2
sub_2F983BC helper 1 2

Family F09 — representative sub_21611A0

Members: sub_21611A0, sub_225CF68, sub_2F98B68

Opcodes (5): 0x10 0x11 0x12 0x13 0x15

switch @ line 18 on *(_WORD *)(loc_380FFF4 + 1028) — 5 cases

opcode line tags effect end
0x10 20 goto, external_write, conditional, calls_helper W loc_380FFF4+0x350:u16, loc_380FFF4+0x40a:u16, loc_380FFF4+0x40c:u16, loc_380FFF4+0x410:u16; R loc_380FFF4+0x410, loc_380FFF4+0x41c, loc_380FFF4+0x420, v7+0x38…; calls sub_215B868, sub_21524B4 goto LABEL_8
0x11 41 halt_or_return, external_write, conditional, calls_helper W loc_380FFF4+0x40a:u16, loc_380FFF4+0x40e:u16, v4+0x0:u16; R loc_380FFF4+0x40a, loc_380FFF4+0x410, loc_380FFF4+0x41c, loc_380FFF4+0x420…; calls sub_215A5BC, sub_21697EC, sub_215BE74, sub_215AE7C, loc_216474C, sub_21652A4, sub_215A7CC, sub_2159984 return
0x12 0x13 90 goto — goto LABEL_16
0x15 93 goto, external_write, calls_helper W loc_380FFF4+0x350:u16, v4+0x0:u16; R loc_380FFF4+0x32e; calls sub_215ADC4, sub_21609F4 goto LABEL_22
default 99 goto — goto LABEL_22

Helpers referenced

helper role calls fan-in lines in corpus
sub_215BE74 helper 2 2
sub_2259CEC helper 2 2
sub_2F958EC helper 2 2
sub_215B868 helper 1 1
sub_21524B4 helper 1 2
sub_215A5BC helper 1 3
sub_21697EC helper 1 2
sub_215AE7C helper 1 2
loc_216474C helper 1 1
sub_21652A4 helper 1 1
sub_215A7CC helper 1 2
sub_2159984 helper 1 5
sub_215ADC4 helper 1 2
sub_21609F4 helper 1 2
loc_3268D9C helper 1 1
loc_327825C helper 1 2
sub_2258A6C helper 1 3
sub_2265044 helper 1 2
sub_3268820 helper 1 2
sub_2260158 helper 1 1
sub_2260CB0 helper 1 1
sub_2258C7C helper 1 2
loc_3267F24 helper 1 3
loc_3268CE4 helper 1 2
sub_225C7BC helper 1 2
unk_3FA499C helper 1 1
unk_3FB3E5C helper 1 2
sub_2F9466C helper 1 3
sub_2FA0C44 helper 1 2
unk_3FA4420 helper 1 2
sub_2F9BD58 helper 1 1
sub_2F9C8B0 helper 1 1
sub_2F9487C helper 1 2
unk_3FA3B24 helper 1 3
unk_3FA48E4 helper 1 2
sub_2F983BC helper 1 2

Family F10 — representative sub_215DE64

Members: sub_215DE64

Opcodes (3): 0x300 0x800 0xb00

  • opcodes tested inline (prefixes / if-chains): 0x800

switch @ line 16 on v0 — 3 cases

opcode line tags effect end
0x300 18 conditional, calls_helper W loc_380FFF4+0x558:u32; R loc_380FFF4+0x4b8; calls sub_215D50C, sub_2159984 break
0x800 24 conditional, absolute_memory W loc_380FFF4+0x4d4:u16; R loc_380FFF4+0x470, loc_380FFF4+0x4bc, loc_380FFF4+0x4ca break
0xb00 33 conditional, absolute_memory W v3+0x6:u16; R loc_380FFF4+0x33a, loc_380FFF4+0x470, loc_380FFF4+0x4bc, loc_380FFF4+0x4c4… fallthrough

Helpers referenced

helper role calls fan-in lines in corpus
sub_2159984 helper 2 5
sub_2162DA0 helper 1 1
sub_215D50C helper 1 1
sub_215D910 helper 1 1

Family F11 — representative sub_223FBE4

Members: sub_223FBE4, sub_2F7B7E4

Opcodes (3): 0x300 0x800 0xb00

  • opcodes tested inline (prefixes / if-chains): 0x800

switch @ line 12 on v1 — 3 cases

opcode line tags effect end
0x300 14 conditional, calls_helper W loc_380FFF4+0x558:u32; R loc_380FFF4+0x4b8; calls sub_22406D8, sub_223E4BC break
0x800 20 conditional, absolute_memory W loc_380FFF4+0x4d4:u16; R loc_380FFF4+0x470, loc_380FFF4+0x4bc, loc_380FFF4+0x4ca break
0xb00 29 conditional, absolute_memory W v4+0x6:u16; R loc_380FFF4+0x33a, loc_380FFF4+0x470, loc_380FFF4+0x4bc, loc_380FFF4+0x4c4… fallthrough

Helpers referenced

helper role calls fan-in lines in corpus
sub_223E4BC helper 2 2
sub_2F7A0BC helper 2 2
sub_22406D8 helper 1 1
sub_2240298 helper 1 1
sub_2F7C2D8 helper 1 1
sub_2F7BE98 helper 1 1