From 9ec6ce3e3daf7b00e8ff32e4fc1b54e3790f3bf9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 1 May 2020 18:03:42 -0400 Subject: Dummy overlays 00, 02, 03 --- .gitignore | 4 ++- arm9/arm9.lcf | 47 ++++++++++++++++++++++++++++++----- arm9/modules/00/asm/module_00_dummy.s | 2 ++ arm9/modules/02/asm/module_02_dummy.s | 2 ++ arm9/modules/03/asm/module_03_dummy.s | 4 +++ 5 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 arm9/modules/00/asm/module_00_dummy.s create mode 100644 arm9/modules/02/asm/module_02_dummy.s create mode 100644 arm9/modules/03/asm/module_03_dummy.s diff --git a/.gitignore b/.gitignore index 16413467..9db5da34 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,6 @@ arm*/baserom.* *.lcf.template # Working files -arm9/modules/module_*.{s,sbin,cfg} +arm9/modules/module_*.s +arm9/modules/module_*.sbin +arm9/modules/module_*.cfg diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 302a83e6..24cd1a5c 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -10,10 +10,10 @@ MEMORY { .ewram (RWX) : ORIGIN=0x023E0000, LENGTH=0 .dtcm (RW) : ORIGIN=0x027E0000, LENGTH=0 .overlay (RX) : ORIGIN=0, LENGTH=0 - MODULE_00 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_00 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_01 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_02 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_03 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_02 (RWX) : ORIGIN=0x021D7520, LENGTH=0 + MODULE_03 (RWX) : ORIGIN=0x01FF8700, LENGTH=0 MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 @@ -334,7 +334,17 @@ SECTIONS { OVERLAY_TABLE(SDK_MODULE_86, 86) } > .overlay - OVERLAY_FILE(00, 0x108400, FILE_10C400.o) + .MODULE.00 : AT (0x108400) + { + module_00_dummy.o (.text) + module_00_dummy.o (.sdata) + module_00_dummy.o (.data) + } > MODULE_00 + .MODULE.00.bss : + { + module_00_dummy.o (.sbss) + module_00_dummy.o (.bss) + } >> MODULE_00 .MODULE.01 : AT (0x108600) { @@ -348,13 +358,36 @@ SECTIONS { module_01.o (.bss) } >> MODULE_01 - OVERLAY_FILE(02, 0x108800, FILE_10C800.o) - OVERLAY_FILE(03, 0x108A00, FILE_10CA00.o) + .MODULE.02 : AT (0x108800) + { + module_02_dummy.o (.text) + module_02_dummy.o (.sdata) + module_02_dummy.o (.data) + } > MODULE_02 + .MODULE.02.bss : + { + module_02_dummy.o (.sbss) + module_02_dummy.o (.bss) + } >> MODULE_02 + + .MODULE.03 : AT (0x108A00) + { + module_03_dummy.o (.text) + module_03_dummy.o (.sdata) + module_03_dummy.o (.data) + } > MODULE_03 + .MODULE.03.bss : + { + module_03_dummy.o (.sbss) + module_03_dummy.o (.bss) + } >> MODULE_03 .MODULE.04 : AT (0x108C00) { thumb_04.o (.text) arm_04.o (.text) + thumb_04.o (.sdata) + arm_04.o (.sdata) thumb_04.o (.data) arm_04.o (.data) } > MODULE_04 @@ -369,6 +402,7 @@ SECTIONS { .MODULE.05 : AT (0x141400) { module_05.o (.text) + module_05.o (.sdata) module_05.o (.data) } > MODULE_05 .MODULE.05.bss : @@ -380,6 +414,7 @@ SECTIONS { .MODULE.06 : AT (0x167600) { module_06.o (.text) + module_06.o (.sdata) module_06.o (.data) } > MODULE_06 .MODULE.06.bss : diff --git a/arm9/modules/00/asm/module_00_dummy.s b/arm9/modules/00/asm/module_00_dummy.s new file mode 100644 index 00000000..e8a42167 --- /dev/null +++ b/arm9/modules/00/asm/module_00_dummy.s @@ -0,0 +1,2 @@ + .section .data + .space 32 diff --git a/arm9/modules/02/asm/module_02_dummy.s b/arm9/modules/02/asm/module_02_dummy.s new file mode 100644 index 00000000..e8a42167 --- /dev/null +++ b/arm9/modules/02/asm/module_02_dummy.s @@ -0,0 +1,2 @@ + .section .data + .space 32 diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s new file mode 100644 index 00000000..70f9f9c2 --- /dev/null +++ b/arm9/modules/03/asm/module_03_dummy.s @@ -0,0 +1,4 @@ + .section .data + .space 32 + .section .bss + .space 32 -- cgit v1.2.3 From dee7f01ac06bd31fe20824d6848139f5b2e6dcf7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 1 May 2020 19:40:11 -0400 Subject: Disassemble module 07 --- arm9/arm9.lcf | 16 +- arm9/global.inc | 27 + arm9/modules/07/asm/module_07.s | 5275 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 5316 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/07/asm/module_07.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 24cd1a5c..b72003a6 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -17,7 +17,7 @@ MEMORY { MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 - MODULE_07 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_08 (RWX) : ORIGIN=0, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 @@ -423,7 +423,19 @@ SECTIONS { module_06.o (.bss) } >> MODULE_06 - OVERLAY_FILE(07, 0x180400, FILE_184400.o) + .MODULE.07 : AT (0x180400) + { + module_07.o (.text) + module_07.o (.sdata) + module_07.o (.data) + } > MODULE_07 + + .MODULE.07.bss : + { + module_07.o (.sbss) + module_07.o (.bss) + } >> MODULE_07 + OVERLAY_FILE(08, 0x183800, FILE_187800.o) OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) diff --git a/arm9/global.inc b/arm9/global.inc index 0c2ce68e..dfc6c236 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4292,3 +4292,30 @@ .extern MTX_RotY43_ .extern thunk_FUN_020ae84c .extern VEC_MultAdd +.extern FUN_0200C334 +.extern FUN_0200C5C0 +.extern FUN_0200CA40 +.extern FUN_02011744 +.extern FUN_020117BC +.extern FUN_020117E8 +.extern FUN_02011870 +.extern FUN_020118C4 +.extern FUN_020119D0 +.extern FUN_02011A60 +.extern FUN_020190EC +.extern FUN_0202930C +.extern FUN_0202934C +.extern FUN_0202938C +.extern FUN_020293EC +.extern FUN_020294B4 +.extern FUN_020313CC +.extern FUN_0206AE00 +.extern FUN_0206B6D4 +.extern FUN_0206B888 +.extern FUN_0206B890 +.extern FUN_0206B89C +.extern FUN_020724D4 +.extern FUN_02079A0C +.extern FUN_02079A54 +.extern FUN_02079A70 +.extern FUN_0207C2D4 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s new file mode 100644 index 00000000..39869410 --- /dev/null +++ b/arm9/modules/07/asm/module_07.s @@ -0,0 +1,5275 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD07_02211E60 +MOD07_02211E60: ; 0x02211E60 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02211E88 ; =FUN_02211E94 + ldr r1, _02211E8C ; =0x00000B84 + ldr r3, [r5, #0x24] + mov r2, #0x64 + bl FUN_020061E8 + bl FUN_0201B6C8 + ldr r2, _02211E8C ; =0x00000B84 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _02211E90 ; =0x00000B7F + str r5, [r4] + mov r1, #0 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02211E88: .word FUN_02211E94 +_02211E8C: .word 0x00000B84 +_02211E90: .word 0x00000B7F + + thumb_func_start FUN_02211E94 +FUN_02211E94: ; 0x02211E94 + push {r4, r5, r6, lr} + ldr r2, _02211F0C ; =0x00000B7F + add r5, r1, #0 + ldrb r2, [r5, r2] + cmp r2, #0 + beq _02211EAA + cmp r2, #1 + beq _02211EB6 + cmp r2, #2 + beq _02211ED8 + b _02211EE0 +_02211EAA: + add r0, r5, #0 + bl FUN_02211F34 + ldr r1, _02211F0C ; =0x00000B7F + strb r0, [r5, r1] + b _02211EE0 +_02211EB6: + mov r4, #0x2e + lsl r4, r4, #6 + add r6, r4, #0 +_02211EBC: + ldrb r1, [r5, r6] + ldr r2, [r5, #4] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + blx r1 + cmp r0, #0 + beq _02211ED2 + ldrb r1, [r5, r4] + add r1, r1, #1 + strb r1, [r5, r4] +_02211ED2: + cmp r0, #2 + beq _02211EBC + b _02211EE0 +_02211ED8: + bl FUN_02212B64 + cmp r0, #1 + beq _02211F0A +_02211EE0: + mov r0, #0x2e + lsl r0, r0, #6 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _02211EFA + add r0, r5, #0 + bl FUN_02212D30 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200BC1C +_02211EFA: + ldr r0, [r5] + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #0 + beq _02211F0A + ldr r0, _02211F10 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02211F0A: + pop {r4, r5, r6, pc} + .align 2, 0 +_02211F0C: .word 0x00000B7F +_02211F10: .word 0x04000540 + + thumb_func_start FUN_02211F14 +FUN_02211F14: ; 0x02211F14 + push {r4, lr} + sub sp, #0x28 + ldr r4, _02211F30 ; =0x02214AD8 + add r3, sp, #0 + mov r2, #5 +_02211F1E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02211F1E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_02211F30: .word 0x02214AD8 + + thumb_func_start FUN_02211F34 +FUN_02211F34: ; 0x02211F34 + push {r4, lr} + ldr r1, _02211FE0 ; =0x04000050 + add r4, r0, #0 + mov r0, #0 + strh r0, [r1] + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _02211FE4 ; =0xFFFFE0FF + ldr r3, _02211FE8 ; =0x04001000 + and r2, r1 + str r2, [r0] + ldr r2, [r3] + add r0, #0x50 + and r1, r2 + str r1, [r3] + mov r1, #0 + strh r1, [r0] + add r3, #0x50 + strh r1, [r3] + bl FUN_02211F14 + ldr r0, [r4] + ldr r0, [r0, #0x24] + bl FUN_02016B94 + str r0, [r4, #0xc] + ldr r0, [r4] + ldr r0, [r0, #0x24] + bl FUN_02002FD0 + str r0, [r4, #8] + ldr r3, [r4] + mov r1, #0 + ldr r3, [r3, #0x24] + mov r2, #0x60 + bl FUN_02003008 + ldr r0, _02211FEC ; =0x00000B82 + mov r3, #0 + strb r3, [r4, r0] + sub r1, r0, #1 + mov r2, #8 + strb r2, [r4, r1] + sub r0, r0, #2 + strb r3, [r4, r0] + ldr r1, [r4] + add r0, r1, #0 + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #0 + beq _02211FB8 + cmp r0, #1 + beq _02211FBE + cmp r0, #2 + beq _02211FC4 + b _02211FDA +_02211FB8: + ldr r0, _02211FF0 ; =0x022149A0 + str r0, [r4, #4] + b _02211FDA +_02211FBE: + ldr r0, _02211FF4 ; =0x022149B4 + str r0, [r4, #4] + b _02211FDA +_02211FC4: + add r1, #0x2a + ldrb r0, [r1] + cmp r0, #3 + bne _02211FD0 + ldr r0, _02211FF8 ; =0x02214B00 + b _02211FD2 +_02211FD0: + ldr r0, _02211FFC ; =0x02214B64 +_02211FD2: + str r0, [r4, #4] + ldr r0, [r4] + bl FUN_02214720 +_02211FDA: + mov r0, #1 + pop {r4, pc} + nop +_02211FE0: .word 0x04000050 +_02211FE4: .word 0xFFFFE0FF +_02211FE8: .word 0x04001000 +_02211FEC: .word 0x00000B82 +_02211FF0: .word 0x022149A0 +_02211FF4: .word 0x022149B4 +_02211FF8: .word 0x02214B00 +_02211FFC: .word 0x02214B64 + + thumb_func_start FUN_02212000 +FUN_02212000: ; 0x02212000 + push {r4, lr} + ldr r1, _02212074 ; =0x00000B82 + add r4, r0, #0 + ldrb r2, [r4, r1] + cmp r2, #0 + beq _02212016 + cmp r2, #1 + beq _02212022 + cmp r2, #2 + beq _0221202E + b _02212068 +_02212016: + bl FUN_02213858 + add r0, r4, #0 + bl FUN_02213924 + b _02212068 +_02212022: + bl FUN_02213D30 + add r0, r4, #0 + bl FUN_02213F28 + b _02212068 +_0221202E: + mov r2, #0 + strb r2, [r4, r1] + mov r2, #0x20 + sub r1, r1, #1 + strb r2, [r4, r1] + bl FUN_022139BC + add r0, r4, #0 + bl FUN_0221424C + add r0, r4, #0 + bl FUN_0221469C + add r0, r4, #0 + bl FUN_02213AEC + bl FUN_02033E74 + ldr r1, [r4] + mov r0, #0 + ldr r1, [r1, #0x24] + bl FUN_02079A70 + ldr r0, _02212078 ; =FUN_02212D68 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + pop {r4, pc} +_02212068: + ldr r0, _02212074 ; =0x00000B82 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02212074: .word 0x00000B82 +_02212078: .word FUN_02212D68 + + thumb_func_start FUN_0221207C +FUN_0221207C: ; 0x0221207C + push {r4, lr} + ldr r1, _022120F4 ; =0x00000B82 + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0 + beq _02212092 + cmp r1, #1 + beq _022120A2 + cmp r1, #2 + beq _022120B8 + b _022120E6 +_02212092: + bl FUN_02212D98 + add r0, r4, #0 + bl FUN_02212E90 + bl FUN_02212F2C + b _022120E6 +_022120A2: + bl FUN_022133B4 + add r0, r4, #0 + bl FUN_02212F44 + bl FUN_02033E74 + add r0, r4, #0 + bl FUN_022136B4 + b _022120E6 +_022120B8: + ldr r1, [r4] + mov r0, #0 + ldr r1, [r1, #0x24] + bl FUN_02079A70 + ldr r0, _022120F8 ; =FUN_02212D68 + add r1, r4, #0 + bl FUN_02015F10 + ldr r1, _022120F4 ; =0x00000B82 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #8 + sub r0, r1, #6 + strb r2, [r4, r0] + sub r0, r1, #5 + mov r2, #4 + strb r2, [r4, r0] + mov r0, #0x10 + sub r1, #0xe + str r0, [r4, r1] + mov r0, #1 + pop {r4, pc} +_022120E6: + ldr r0, _022120F4 ; =0x00000B82 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + nop +_022120F4: .word 0x00000B82 +_022120F8: .word FUN_02212D68 + + thumb_func_start FUN_022120FC +FUN_022120FC: ; 0x022120FC + push {r4, lr} + ldr r1, _0221216C ; =0x00000B82 + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0 + beq _02212112 + cmp r1, #1 + beq _02212122 + cmp r1, #2 + beq _02212132 + b _02212160 +_02212112: + bl FUN_02212D98 + add r0, r4, #0 + bl FUN_02212E90 + bl FUN_02212F2C + b _02212160 +_02212122: + bl FUN_022133B4 + add r0, r4, #0 + bl FUN_02213484 + bl FUN_02033E74 + b _02212160 +_02212132: + ldr r1, [r4] + mov r0, #0 + ldr r1, [r1, #0x24] + bl FUN_02079A70 + ldr r0, _02212170 ; =FUN_02212D68 + add r1, r4, #0 + bl FUN_02015F10 + ldr r1, _0221216C ; =0x00000B82 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #4 + sub r0, r1, #6 + strb r2, [r4, r0] + sub r0, r1, #5 + mov r2, #2 + strb r2, [r4, r0] + mov r0, #0xc + sub r1, #0xe + str r0, [r4, r1] + mov r0, #1 + pop {r4, pc} +_02212160: + ldr r0, _0221216C ; =0x00000B82 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0221216C: .word 0x00000B82 +_02212170: .word FUN_02212D68 + + thumb_func_start FUN_02212174 +FUN_02212174: ; 0x02212174 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + bne _02212184 + mov r0, #0 + pop {r4, pc} +_02212184: + ldr r1, _022121A8 ; =0x00000B81 + add r0, r1, #1 + ldrb r2, [r4, r1] + ldrb r0, [r4, r0] + cmp r2, r0 + bne _0221219A + mov r2, #0 + add r0, r1, #1 + strb r2, [r4, r0] + mov r0, #1 + pop {r4, pc} +_0221219A: + add r0, r1, #1 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #1 + strb r2, [r4, r0] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_022121A8: .word 0x00000B81 + + thumb_func_start FUN_022121AC +FUN_022121AC: ; 0x022121AC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_02017B48 + cmp r0, #0x18 + bgt _02212248 + ldr r1, _02212370 ; =0x00000B82 + mov r2, #0 + add r0, r1, #0 + strb r2, [r4, r1] + sub r0, #0xa + strh r2, [r4, r0] + sub r1, #8 + strh r2, [r4, r1] + ldr r0, [r4, #0xc] + mov r1, #3 + mov r3, #0x18 + bl FUN_0201AEE4 + mov r2, #0 + add r3, r2, #0 + ldr r0, [r4, #0xc] + mov r1, #2 + sub r3, #0x18 + bl FUN_0201AEE4 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0221309C + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_0221309C + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_0221309C + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_0221309C + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02213354 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_02213354 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_02213354 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_02213354 + mov r0, #1 + pop {r3, r4, r5, pc} +_02212248: + ldr r3, _02212374 ; =0x00000B74 + ldr r0, [r4, #0xc] + ldr r3, [r4, r3] + mov r1, #3 + mov r2, #2 + bl FUN_0201AEE4 + ldr r3, _02212374 ; =0x00000B74 + ldr r0, [r4, #0xc] + ldr r3, [r4, r3] + mov r1, #2 + mov r2, #1 + bl FUN_0201AEE4 + ldr r3, _02212370 ; =0x00000B82 + mov r1, #0 + ldrb r0, [r4, r3] + add r2, r3, #0 + sub r2, #0xe + add r0, r0, #1 + strb r0, [r4, r3] + ldr r5, [r4, r2] + ldrb r2, [r4, r3] + add r3, r5, #0 + add r0, r4, #0 + mul r3, r2 + mov r2, #1 + lsl r2, r2, #8 + sub r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r3, r1, #0 + bl FUN_0221309C + ldr r2, _02212374 ; =0x00000B74 + mov r1, #1 + ldr r3, [r4, r2] + add r2, #0xe + add r5, r3, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + mov r3, #0 + mul r5, r2 + add r2, r1, #0 + add r2, #0xff + sub r2, r5, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212374 ; =0x00000B74 + mov r1, #2 + ldr r3, [r4, r2] + add r2, #0xe + add r5, r3, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + mov r3, #0 + mul r5, r2 + add r2, r1, #0 + add r2, #0xfe + sub r2, r2, r5 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212374 ; =0x00000B74 + mov r1, #3 + ldr r3, [r4, r2] + add r2, #0xe + add r5, r3, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + mov r3, #0 + mul r5, r2 + add r2, r1, #0 + add r2, #0xfd + sub r2, r2, r5 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212374 ; =0x00000B74 + mov r1, #0 + ldr r3, [r4, r2] + add r2, #0xe + add r5, r3, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + add r3, r1, #0 + mul r5, r2 + mov r2, #1 + lsl r2, r2, #8 + sub r2, r5, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _02212374 ; =0x00000B74 + mov r1, #1 + ldr r3, [r4, r2] + add r2, #0xe + add r5, r3, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + mov r3, #0 + mul r5, r2 + add r2, r1, #0 + add r2, #0xff + sub r2, r5, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _02212374 ; =0x00000B74 + mov r1, #2 + ldr r3, [r4, r2] + add r2, #0xe + add r5, r3, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + mov r3, #0 + mul r5, r2 + add r2, r1, #0 + add r2, #0xfe + sub r2, r2, r5 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _02212374 ; =0x00000B74 + add r0, r4, #0 + ldr r3, [r4, r2] + add r2, #0xe + ldrb r2, [r4, r2] + add r4, r3, #0 + mov r1, #3 + mul r4, r2 + add r2, r1, #0 + add r2, #0xfd + sub r2, r2, r4 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + mov r3, #0 + bl FUN_02213354 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212370: .word 0x00000B82 +_02212374: .word 0x00000B74 + + thumb_func_start FUN_02212378 +FUN_02212378: ; 0x02212378 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_022137A4 + cmp r0, #0 + bne _02212394 + ldr r0, _02212574 ; =0x00000B82 + ldrb r1, [r5, r0] + cmp r1, #0x18 + bls _02212394 + mov r1, #0 + strb r1, [r5, r0] + mov r0, #1 + pop {r4, r5, r6, pc} +_02212394: + ldr r0, _02212574 ; =0x00000B82 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _022123B4 + ldr r0, [r5] + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #1 + bne _022123AE + ldr r0, _02212578 ; =0x00000715 + bl FUN_020054C8 + b _022123B4 +_022123AE: + ldr r0, _0221257C ; =0x00000852 + bl FUN_020054C8 +_022123B4: + ldr r0, _02212574 ; =0x00000B82 + ldrb r1, [r5, r0] + cmp r1, #0x18 + bne _02212450 + ldr r0, [r5, #0xc] + mov r1, #3 + mov r2, #0 + mov r3, #0x18 + bl FUN_0201AEE4 + mov r2, #0 + add r3, r2, #0 + ldr r0, [r5, #0xc] + mov r1, #2 + sub r3, #0x18 + bl FUN_0201AEE4 + mov r1, #3 + ldr r0, [r5, #0xc] + add r2, r1, #0 + mov r3, #0 + bl FUN_0201AEE4 + ldr r0, [r5, #0xc] + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_0201AEE4 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0221309C + mov r2, #0 + add r0, r5, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_0221309C + mov r2, #0 + add r0, r5, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_0221309C + mov r2, #0 + add r0, r5, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_0221309C + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02213354 + mov r2, #0 + add r0, r5, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_02213354 + mov r2, #0 + add r0, r5, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_02213354 + mov r2, #0 + add r0, r5, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_02213354 + b _02212568 +_02212450: + blo _02212454 + b _02212568 +_02212454: + sub r0, r0, #6 + ldrsb r4, [r5, r0] + bl FUN_0201B9EC + add r1, r4, #0 + bl _s32_div_f + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, _02212580 ; =0x00000B7D + ldrsb r4, [r5, r0] + bl FUN_0201B9EC + add r1, r4, #0 + bl _s32_div_f + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r6, #0 + bge _02212494 + ldr r0, _02212584 ; =0x00000B78 + ldrsh r0, [r5, r0] + cmp r0, #0 + blt _022124A0 +_02212494: + cmp r6, #0 + ble _022124AA + ldr r0, _02212584 ; =0x00000B78 + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022124AA +_022124A0: + mov r0, #0 + mvn r0, r0 + mul r0, r6 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 +_022124AA: + cmp r4, #0 + bge _022124B6 + ldr r0, _02212588 ; =0x00000B7A + ldrsh r0, [r5, r0] + cmp r0, #0 + blt _022124C2 +_022124B6: + cmp r4, #0 + ble _022124CC + ldr r0, _02212588 ; =0x00000B7A + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022124CC +_022124C2: + mov r0, #0 + mvn r0, r0 + mul r0, r4 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_022124CC: + add r3, r6, #0 + ldr r0, [r5, #0xc] + mov r1, #3 + mov r2, #0 + add r3, #0x18 + bl FUN_0201AEE4 + add r3, r6, #0 + ldr r0, [r5, #0xc] + mov r1, #2 + mov r2, #0 + sub r3, #0x18 + bl FUN_0201AEE4 + mov r1, #3 + ldr r0, [r5, #0xc] + add r2, r1, #0 + add r3, r4, #0 + bl FUN_0201AEE4 + ldr r0, [r5, #0xc] + mov r1, #2 + mov r2, #3 + add r3, r4, #0 + bl FUN_0201AEE4 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_0221309C + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_0221309C + add r0, r5, #0 + mov r1, #2 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_0221309C + add r0, r5, #0 + mov r1, #3 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_0221309C + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_02213354 + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_02213354 + add r0, r5, #0 + mov r1, #2 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_02213354 + add r0, r5, #0 + mov r1, #3 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_02213354 + ldr r0, _02212584 ; =0x00000B78 + strh r6, [r5, r0] + add r0, r0, #2 + strh r4, [r5, r0] +_02212568: + ldr r0, _02212574 ; =0x00000B82 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02212574: .word 0x00000B82 +_02212578: .word 0x00000715 +_0221257C: .word 0x00000852 +_02212580: .word 0x00000B7D +_02212584: .word 0x00000B78 +_02212588: .word 0x00000B7A + + thumb_func_start FUN_0221258C +FUN_0221258C: ; 0x0221258C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _022126A4 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #8 + bne _022125B4 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + ldr r3, _022126A8 ; =0x00007FFF + ldr r0, [r0, #0x24] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 +_022125B4: + ldr r0, _022126A4 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #8 + blo _022125D0 + bl FUN_0200E308 + cmp r0, #1 + bne _022125D0 + ldr r0, _022126AC ; =0x00000B7F + mov r1, #2 + strb r1, [r4, r0] + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_022125D0: + ldr r0, _022126A4 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _022125DE + ldr r0, _022126B0 ; =0x00000719 + bl FUN_020054C8 +_022125DE: + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #1 + mov r3, #0x10 + bl FUN_0201AEE4 + mov r1, #2 + ldr r0, [r4, #0xc] + add r2, r1, #0 + mov r3, #0x10 + bl FUN_0201AEE4 + ldr r2, _022126A4 ; =0x00000B82 + mov r1, #0 + ldrb r0, [r4, r2] + add r3, r1, #0 + add r0, r0, #1 + strb r0, [r4, r2] + ldrb r2, [r4, r2] + add r0, r4, #0 + lsl r2, r2, #4 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _022126A4 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #1 + mov r3, #0 + lsl r2, r2, #4 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _022126A4 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #2 + mov r3, #0 + lsl r2, r2, #0x14 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _022126A4 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #3 + mov r3, #0 + lsl r2, r2, #0x14 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _022126A4 ; =0x00000B82 + mov r1, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + add r3, r1, #0 + lsl r2, r2, #4 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _022126A4 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #1 + mov r3, #0 + lsl r2, r2, #4 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _022126A4 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #2 + mov r3, #0 + lsl r2, r2, #0x14 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _022126A4 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #3 + mov r3, #0 + lsl r2, r2, #0x14 + asr r2, r2, #0x10 + bl FUN_02213354 + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + nop +_022126A4: .word 0x00000B82 +_022126A8: .word 0x00007FFF +_022126AC: .word 0x00000B7F +_022126B0: .word 0x00000719 + + thumb_func_start FUN_022126B4 +FUN_022126B4: ; 0x022126B4 + ldr r1, _022126C0 ; =0x00000B81 + mov r2, #0x10 + strb r2, [r0, r1] + mov r0, #2 + bx lr + nop +_022126C0: .word 0x00000B81 + + thumb_func_start FUN_022126C4 +FUN_022126C4: ; 0x022126C4 + push {r4, lr} + add r4, r0, #0 + bl FUN_02212BD4 + cmp r0, #1 + ldr r0, [r4] + bne _022126E8 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #1 + ldr r0, _02212700 ; =0x00000B7E + bne _022126E2 + mov r1, #0 + strb r1, [r4, r0] + b _022126FC +_022126E2: + mov r1, #1 + strb r1, [r4, r0] + b _022126FC +_022126E8: + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #1 + ldr r0, _02212700 ; =0x00000B7E + bne _022126F8 + mov r1, #1 + strb r1, [r4, r0] + b _022126FC +_022126F8: + mov r1, #0 + strb r1, [r4, r0] +_022126FC: + mov r0, #2 + pop {r4, pc} + .align 2, 0 +_02212700: .word 0x00000B7E + + thumb_func_start FUN_02212704 +FUN_02212704: ; 0x02212704 + push {r3, lr} + ldr r1, _0221271C ; =0x00000B7E + ldrb r1, [r0, r1] + cmp r1, #0 + bne _02212714 + bl FUN_02212720 + pop {r3, pc} +_02212714: + bl FUN_02212824 + pop {r3, pc} + nop +_0221271C: .word 0x00000B7E + + thumb_func_start FUN_02212720 +FUN_02212720: ; 0x02212720 + push {r3, r4, r5, lr} + ldr r3, _02212814 ; =0x00000B82 + add r4, r0, #0 + ldrb r3, [r4, r3] + mov r1, #2 + ldr r0, [r4, #0xc] + lsl r5, r3, #1 + ldr r3, _02212818 ; =0x02214960 + add r2, r1, #0 + ldrb r3, [r3, r5] + bl FUN_0201AEE4 + ldr r3, _02212814 ; =0x00000B82 + ldr r0, [r4, #0xc] + ldrb r3, [r4, r3] + mov r1, #3 + mov r2, #2 + lsl r5, r3, #1 + ldr r3, _02212818 ; =0x02214960 + ldrb r3, [r3, r5] + bl FUN_0201AEE4 + ldr r2, _02212814 ; =0x00000B82 + mov r1, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + add r3, r1, #0 + bl FUN_0221309C + ldr r2, _02212814 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #1 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + bl FUN_0221309C + ldr r2, _02212814 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #2 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + bl FUN_0221309C + ldr r2, _02212814 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #3 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + bl FUN_0221309C + ldr r2, _02212814 ; =0x00000B82 + mov r1, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + add r3, r1, #0 + bl FUN_02213354 + ldr r2, _02212814 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #1 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + bl FUN_02213354 + ldr r2, _02212814 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #2 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + bl FUN_02213354 + ldr r2, _02212814 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #3 + lsl r3, r2, #1 + ldr r2, _0221281C ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + bl FUN_02213354 + ldr r0, _02212814 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _022127FA + ldr r0, _02212820 ; =0x00000853 + bl FUN_020054C8 +_022127FA: + ldr r0, _02212814 ; =0x00000B82 + ldrb r1, [r4, r0] + cmp r1, #5 + bne _0221280A + mov r1, #0 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0221280A: + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02212814: .word 0x00000B82 +_02212818: .word 0x02214960 +_0221281C: .word 0x02214961 +_02212820: .word 0x00000853 + + thumb_func_start FUN_02212824 +FUN_02212824: ; 0x02212824 + push {r3, r4, r5, lr} + ldr r3, _02212948 ; =0x00000B82 + add r4, r0, #0 + ldrb r3, [r4, r3] + ldr r0, [r4, #0xc] + mov r1, #2 + lsl r5, r3, #1 + ldr r3, _0221294C ; =0x02214960 + mov r2, #1 + ldrb r3, [r3, r5] + bl FUN_0201AEE4 + ldr r3, _02212948 ; =0x00000B82 + ldr r0, [r4, #0xc] + ldrb r3, [r4, r3] + mov r1, #3 + mov r2, #1 + lsl r5, r3, #1 + ldr r3, _0221294C ; =0x02214960 + ldrb r3, [r3, r5] + bl FUN_0201AEE4 + ldr r2, _02212948 ; =0x00000B82 + mov r1, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + add r3, r1, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212948 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #1 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212948 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #2 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212948 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #3 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0221309C + ldr r2, _02212948 ; =0x00000B82 + mov r1, #0 + ldrb r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + add r3, r1, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _02212948 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #1 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _02212948 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #2 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r2, _02212948 ; =0x00000B82 + add r0, r4, #0 + ldrb r2, [r4, r2] + mov r1, #3 + lsl r3, r2, #1 + ldr r2, _02212950 ; =0x02214961 + ldrb r2, [r2, r3] + mov r3, #0 + neg r2, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_02213354 + ldr r0, _02212948 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0221292E + ldr r0, _02212954 ; =0x00000853 + bl FUN_020054C8 +_0221292E: + ldr r0, _02212948 ; =0x00000B82 + ldrb r1, [r4, r0] + cmp r1, #5 + bne _0221293E + mov r1, #0 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0221293E: + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02212948: .word 0x00000B82 +_0221294C: .word 0x02214960 +_02212950: .word 0x02214961 +_02212954: .word 0x00000853 + + thumb_func_start FUN_02212958 +FUN_02212958: ; 0x02212958 + ldr r1, _02212964 ; =0x00000B81 + mov r2, #0x10 + strb r2, [r0, r1] + mov r0, #2 + bx lr + nop +_02212964: .word 0x00000B81 + + thumb_func_start FUN_02212968 +FUN_02212968: ; 0x02212968 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, _022129F0 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _022129AC + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + lsl r0, r0, #0x1a + add r3, r0, #0 + ldr r2, [r0] + ldr r1, _022129F4 ; =0xFFFF1FFF + add r3, #0x48 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + ldrh r5, [r3] + mov r2, #0x3f + mov r1, #0x1f + bic r5, r2 + orr r5, r1 + mov r1, #0x20 + orr r1, r5 + strh r1, [r3] + add r0, #0x4a + ldrh r3, [r0] + mov r1, #0x1d + bic r3, r2 + orr r1, r3 + strh r1, [r0] +_022129AC: + ldr r3, _022129F0 ; =0x00000B82 + ldrb r1, [r4, r3] + cmp r1, #0x10 + bne _022129CC + mov r0, #0 + mov r1, #0x20 + strb r0, [r4, r3] + sub r0, r3, #1 + strb r1, [r4, r0] + lsl r2, r1, #0x15 + ldr r1, [r2] + ldr r0, _022129F4 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + mov r0, #1 + pop {r4, r5, r6, pc} +_022129CC: + mov r2, #0x5f + sub r2, r2, r1 + add r1, #0x60 + lsl r1, r1, #0x18 + mov r6, #0xff + ldr r0, _022129F8 ; =0x04000040 + lsl r5, r2, #8 + lsl r2, r6, #8 + and r2, r5 + lsr r1, r1, #0x18 + strh r6, [r0] + orr r1, r2 + strh r1, [r0, #4] + ldrb r0, [r4, r3] + add r0, r0, #1 + strb r0, [r4, r3] + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_022129F0: .word 0x00000B82 +_022129F4: .word 0xFFFF1FFF +_022129F8: .word 0x04000040 + + thumb_func_start FUN_022129FC +FUN_022129FC: ; 0x022129FC + push {r4, lr} + add r4, r0, #0 + ldr r0, _02212A34 ; =0x0000071A + bl FUN_020054C8 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, _02212A38 ; =0x00000B81 + mov r1, #0x20 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_02212A34: .word 0x0000071A +_02212A38: .word 0x00000B81 + + thumb_func_start FUN_02212A3C +FUN_02212A3C: ; 0x02212A3C + push {r4, lr} + add r4, r0, #0 + ldr r0, _02212A5C ; =0x0000071A + bl FUN_020054C8 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + ldr r0, _02212A60 ; =0x00000B81 + mov r1, #0x40 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_02212A5C: .word 0x0000071A +_02212A60: .word 0x00000B81 + + thumb_func_start FUN_02212A64 +FUN_02212A64: ; 0x02212A64 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02212BD4 + cmp r0, #1 + ldr r0, [r4] + bne _02212AA8 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #1 + bne _02212A92 + mov r3, #0 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #2 + bl FUN_02003210 + b _02212ADA +_02212A92: + mov r3, #0 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + str r3, [sp, #8] + mov r1, #1 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_02003210 + b _02212ADA +_02212AA8: + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #1 + bne _02212AC6 + mov r3, #0 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + str r3, [sp, #8] + mov r1, #1 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_02003210 + b _02212ADA +_02212AC6: + mov r3, #0 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #2 + bl FUN_02003210 +_02212ADA: + ldr r0, _02212AEC ; =0x0000071B + bl FUN_020054C8 + ldr r0, _02212AF0 ; =0x00000B81 + mov r1, #0x40 + strb r1, [r4, r0] + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02212AEC: .word 0x0000071B +_02212AF0: .word 0x00000B81 + + thumb_func_start FUN_02212AF4 +FUN_02212AF4: ; 0x02212AF4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02212B40 ; =0x00000B82 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _02212B06 + ldr r0, _02212B44 ; =0x00000719 + bl FUN_020054C8 +_02212B06: + ldr r1, _02212B40 ; =0x00000B82 + ldrb r0, [r4, r1] + cmp r0, #0x10 + bne _02212B1C + mov r0, #0 + strb r0, [r4, r1] + mov r2, #0x40 + sub r0, r1, #1 + strb r2, [r4, r0] + mov r0, #1 + pop {r4, pc} +_02212B1C: + add r0, r0, #1 + strb r0, [r4, r1] + ldrb r2, [r4, r1] + mov r1, #0x10 + add r0, r4, #0 + sub r1, r1, r2 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + bl FUN_022141CC + ldr r1, _02212B40 ; =0x00000B82 + add r0, r4, #0 + ldrb r1, [r4, r1] + bl FUN_02213B20 + mov r0, #0 + pop {r4, pc} + nop +_02212B40: .word 0x00000B82 +_02212B44: .word 0x00000719 + + thumb_func_start FUN_02212B48 +FUN_02212B48: ; 0x02212B48 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + mov r0, #1 + ldr r1, [r1, #0x24] + bl FUN_02079A70 + ldr r0, _02212B60 ; =0x00000B7F + mov r1, #2 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_02212B60: .word 0x00000B7F + + thumb_func_start FUN_02212B64 +FUN_02212B64: ; 0x02212B64 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200E308 + cmp r0, #0 + bne _02212B76 + mov r0, #0 + pop {r3, r4, r5, pc} +_02212B76: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #0 + beq _02212B9C + add r0, r4, #0 + bl FUN_02212E64 + add r0, r4, #0 + bl FUN_022137DC + add r0, r4, #0 + bl FUN_02213380 + b _02212BA8 +_02212B9C: + add r0, r4, #0 + bl FUN_022138F8 + add r0, r4, #0 + bl FUN_02214274 +_02212BA8: + add r0, r4, #0 + bl FUN_02212CEC + bl FUN_0201C29C + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #8] + bl FUN_02002FEC + ldr r0, [r4] + mov r1, #1 + add r0, #0x2b + strb r1, [r0] + add r0, r5, #0 + bl FUN_0200621C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start FUN_02212BD4 +FUN_02212BD4: ; 0x02212BD4 + push {r3, lr} + bl FUN_02031190 + bl FUN_020313CC + cmp r0, #3 + bhi _02212BFE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02212BEE: ; jump table + .short _02212BF6 - _02212BEE - 2 ; case 0 + .short _02212BFA - _02212BEE - 2 ; case 1 + .short _02212BF6 - _02212BEE - 2 ; case 2 + .short _02212BFA - _02212BEE - 2 ; case 3 +_02212BF6: + mov r0, #1 + pop {r3, pc} +_02212BFA: + mov r0, #0 + pop {r3, pc} +_02212BFE: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start FUN_02212C04 +FUN_02212C04: ; 0x02212C04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + str r1, [sp] + ldr r1, [r5] + mov r0, #0x40 + ldr r1, [r1, #0x24] + add r4, r2, #0 + bl FUN_0201C24C + ldr r0, [r5] + ldr r0, [r0, #0x24] + bl FUN_0200BB14 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_0200BB34 + mov r1, #0x65 + lsl r1, r1, #2 + add r2, sp, #0x18 + ldr r3, _02212C9C ; =0x02214AB8 + str r0, [r5, r1] + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _02212CA0 ; =0x0221498C + add r2, sp, #4 + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r6, #0 + str r0, [r2] + mov r0, #0x65 + lsl r0, r0, #2 + str r4, [sp, #4] + sub r0, r0, #4 + ldr r0, [r5, r0] + add r2, r7, #0 + mov r3, #0x10 + bl FUN_0200BB6C + mov r1, #0x19 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200BBF0 + mov r1, #0x19 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + ldr r2, [sp] + bl FUN_0200BF60 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02212C9C: .word 0x02214AB8 +_02212CA0: .word 0x0221498C + + thumb_func_start FUN_02212CA4 +FUN_02212CA4: ; 0x02212CA4 + push {lr} + sub sp, #0x34 + add r2, r0, #0 + mov r0, #0 + add r3, sp, #0 + strh r0, [r3] + strh r0, [r3, #2] + strh r0, [r3, #4] + strh r0, [r3, #6] + ldr r3, [r1, #0x14] + str r3, [sp, #8] + ldr r3, [r1, #0x18] + str r3, [sp, #0xc] + mov r3, #1 + str r3, [sp, #0x10] + ldr r3, [r1] + str r3, [sp, #0x14] + ldr r3, [r1, #4] + str r3, [sp, #0x18] + ldr r3, [r1, #8] + str r3, [sp, #0x1c] + ldr r3, [r1, #0xc] + str r3, [sp, #0x20] + ldr r1, [r1, #0x10] + str r1, [sp, #0x2c] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #0x30] + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + add r2, sp, #0 + bl FUN_0200C154 + add sp, #0x34 + pop {pc} + + thumb_func_start FUN_02212CEC +FUN_02212CEC: ; 0x02212CEC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r4, #0 + cmp r0, #0 + bls _02212D16 + mov r7, #0x21 + add r5, r6, #0 + lsl r7, r7, #4 +_02212D02: + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200C3DC + ldr r0, [r6, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _02212D02 +_02212D16: + mov r1, #0x19 + lsl r1, r1, #4 + ldr r0, [r6, r1] + add r1, r1, #4 + ldr r1, [r6, r1] + bl FUN_0200C398 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_0200BD04 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start FUN_02212D30 +FUN_02212D30: ; 0x02212D30 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r4, #0 + cmp r0, #0 + bls _02212D64 + mov r7, #0x66 + lsl r7, r7, #2 + add r6, r7, #0 + add r6, #0x78 +_02212D48: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r7] + mov r1, #1 + ldr r0, [r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _02212D48 +_02212D64: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start FUN_02212D68 +FUN_02212D68: ; 0x02212D68 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0201AB60 + ldr r0, [r4, #8] + bl FUN_0200372C + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r3, _02212D90 ; =0x027E0000 + ldr r1, _02212D94 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_02212D90: .word 0x027E0000 +_02212D94: .word 0x00003FF8 + + thumb_func_start FUN_02212D98 +FUN_02212D98: ; 0x02212D98 + push {r4, r5, lr} + sub sp, #0x64 + ldr r5, _02212E54 ; =0x0221496C + add r3, sp, #0x54 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _02212E58 ; =0x02214A2C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_02018744 + mov r1, #3 + add r3, r1, #0 + ldr r0, [r4, #0xc] + mov r2, #0 + add r3, #0xfd + bl FUN_0201AEE4 + ldr r5, _02212E5C ; =0x02214A48 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_02018744 + mov r3, #0xff + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #0 + mvn r3, r3 + bl FUN_0201AEE4 + ldr r5, _02212E60 ; =0x02214A64 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02018744 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + add sp, #0x64 + pop {r4, r5, pc} + nop +_02212E54: .word 0x0221496C +_02212E58: .word 0x02214A2C +_02212E5C: .word 0x02214A48 +_02212E60: .word 0x02214A64 + + thumb_func_start FUN_02212E64 +FUN_02212E64: ; 0x02212E64 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02212E90 +FUN_02212E90: ; 0x02212E90 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r4, r0, #0 + str r1, [sp, #8] + ldr r0, [r4] + mov r3, #1 + ldr r0, [r0, #0x24] + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x6c + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #4 + ldr r0, [r0, #0x24] + mov r3, #1 + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x6c + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0x24] + add r3, r1, #0 + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x6c + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0, #0x24] + add r3, r1, #0 + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x6c + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #0x6c + bl FUN_02006930 + mov r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0x60 + bl FUN_02003108 + ldr r1, _02212F28 ; =0x000018C6 + mov r0, #1 + bl FUN_02017FE4 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02212F28: .word 0x000018C6 + + thumb_func_start FUN_02212F2C +FUN_02212F2C: ; 0x02212F2C + push {r3, lr} + mov r0, #8 + str r0, [sp] + ldr r0, _02212F40 ; =0x04000050 + mov r1, #3 + mov r2, #0x1c + mov r3, #0x17 + bl G2x_SetBlendAlpha_ + pop {r3, pc} + .align 2, 0 +_02212F40: .word 0x04000050 + + thumb_func_start FUN_02212F44 +FUN_02212F44: ; 0x02212F44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r4, _02213014 ; =0x022149E0 + add r3, sp, #0 + add r6, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r1, r2, #0 + add r0, r6, #0 + mov r2, #0x15 + bl FUN_02212C04 + add r0, r6, #0 + bl FUN_0221301C + ldr r4, _02213018 ; =0x02214C64 + mov r7, #0 + add r5, r6, #0 +_02212F72: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02212CA4 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + add r7, r7, #1 + add r4, #0x1c + add r5, r5, #4 + cmp r7, #0xc + blo _02212F72 + mov r1, #0 + mov r2, #0xff + add r0, r6, #0 + mvn r2, r2 + add r3, r1, #0 + bl FUN_0221309C + mov r2, #0xff + add r0, r6, #0 + mov r1, #1 + mvn r2, r2 + mov r3, #0 + bl FUN_0221309C + mov r1, #2 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfe + mov r3, #0 + bl FUN_0221309C + mov r1, #3 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfd + mov r3, #0 + bl FUN_0221309C + add r0, r6, #0 + bl FUN_022131C0 + mov r0, #0x21 + mov r1, #0xc + lsl r0, r0, #4 + str r1, [r6, r0] + add r0, r6, #0 + bl FUN_022132CC + mov r1, #0 + mov r2, #0xff + add r0, r6, #0 + mvn r2, r2 + add r3, r1, #0 + bl FUN_02213354 + mov r2, #0xff + add r0, r6, #0 + mov r1, #1 + mvn r2, r2 + mov r3, #0 + bl FUN_02213354 + mov r1, #2 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfe + mov r3, #0 + bl FUN_02213354 + mov r1, #3 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfd + mov r3, #0 + bl FUN_02213354 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02213014: .word 0x022149E0 +_02213018: .word 0x02214C64 + + thumb_func_start FUN_0221301C +FUN_0221301C: ; 0x0221301C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02213098 ; =0x0000B807 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x1b + mov r3, #0x90 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, _02213098 ; =0x0000B807 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #0xc] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x6c + mov r3, #8 + bl FUN_0200C06C + mov r0, #1 + str r0, [sp] + ldr r0, _02213098 ; =0x0000B807 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x1b + mov r3, #0x8f + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02213098 ; =0x0000B807 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x1b + mov r3, #0x91 + bl FUN_0200C13C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02213098: .word 0x0000B807 + + thumb_func_start FUN_0221309C +FUN_0221309C: ; 0x0221309C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r4, _022130F8 ; =0x02214950 + str r2, [sp] + ldrb r5, [r4] + str r3, [sp, #4] + add r3, sp, #8 + strb r5, [r3] + ldrb r5, [r4, #1] + add r2, sp, #8 + mov r7, #0 + strb r5, [r3, #1] + ldrb r5, [r4, #2] + ldrb r4, [r4, #3] + add r6, r0, r1 + strb r5, [r3, #2] + strb r4, [r3, #3] + ldrb r2, [r2, r1] + add r4, r7, #0 + lsl r2, r2, #2 + add r5, r0, r2 +_022130C6: + ldr r1, _022130FC ; =0x00000B64 + mov r0, #0x66 + ldrb r1, [r6, r1] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r2, r1, r4 + ldr r1, [sp] + add r1, r1, r2 + ldr r2, _02213100 ; =0x00000B68 + lsl r1, r1, #0x10 + ldrb r3, [r6, r2] + ldr r2, [sp, #4] + asr r1, r1, #0x10 + add r2, r2, r3 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r7, r7, #1 + add r4, #0x13 + add r5, r5, #4 + cmp r7, #3 + blo _022130C6 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022130F8: .word 0x02214950 +_022130FC: .word 0x00000B64 +_02213100: .word 0x00000B68 + + thumb_func_start FUN_02213104 +FUN_02213104: ; 0x02213104 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp] + str r2, [sp, #4] + add r7, r3, #0 + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r5, #0 + ldr r0, [sp, #4] + add r4, r5, #0 + cmp r0, #0 + ble _022131BC + lsl r0, r7, #2 + add r6, r6, r0 +_0221312A: + lsl r0, r4, #2 + add r1, r6, r0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [sp, #8] + cmp r0, r4 + bls _022131B0 + ldr r0, [sp] + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022131B0 + add r0, r7, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _022131B0 + add r0, r7, #0 + bl FUN_0207C2D4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #6 + bne _02213184 + lsl r0, r5, #2 + add r1, r6, r0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #3 + bl FUN_0200C5C0 + b _022131AA +_02213184: + cmp r0, #7 + beq _0221319A + lsl r0, r5, #2 + add r1, r6, r0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_0200C5C0 + b _022131AA +_0221319A: + lsl r0, r5, #2 + add r1, r6, r0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_0200C5C0 +_022131AA: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_022131B0: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #4] + cmp r4, r0 + blt _0221312A +_022131BC: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start FUN_022131C0 +FUN_022131C0: ; 0x022131C0 + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4] + add r1, r2, #0 + add r1, #0x29 + ldrb r1, [r1] + cmp r1, #0 + ldr r1, [r2, #4] + bne _022131EA + mov r2, #6 + mov r3, #0 + bl FUN_02213104 + ldr r1, [r4] + mov r2, #6 + ldr r1, [r1, #8] + add r0, r4, #0 + add r3, r2, #0 + bl FUN_02213104 + pop {r4, pc} +_022131EA: + mov r2, #3 + mov r3, #0 + bl FUN_02213104 + ldr r1, [r4] + mov r2, #3 + ldr r1, [r1, #0xc] + add r0, r4, #0 + add r3, r2, #0 + bl FUN_02213104 + ldr r1, [r4] + add r0, r4, #0 + ldr r1, [r1, #8] + mov r2, #3 + mov r3, #6 + bl FUN_02213104 + ldr r1, [r4] + add r0, r4, #0 + ldr r1, [r1, #0x10] + mov r2, #3 + mov r3, #9 + bl FUN_02213104 + pop {r4, pc} + .align 2, 0 + + thumb_func_start FUN_02213220 +FUN_02213220: ; 0x02213220 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + mov r0, #0 + add r5, r4, #0 + str r0, [sp] + str r0, [sp, #4] + add r7, r2, #0 + add r5, #0x10 + add r6, r1, #0 + ldr r0, [r4, #0xc] + add r1, r5, #0 + mov r2, #8 + mov r3, #2 + bl FUN_020190EC + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #8] + add r0, r5, #0 + add r2, r7, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, _022132C0 ; =0x00000B44 + ldr r0, [r4, r0] + str r0, [sp, #0x10] + mov r0, #0x65 + str r5, [sp, #0x14] + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200CA40 + str r0, [sp, #0x18] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _022132C4 ; =0x0000B807 + bl FUN_0200C334 + mov r1, #0x3e + lsl r2, r6, #4 + lsl r1, r1, #4 + sub r1, r1, r2 + lsl r1, r1, #5 + str r0, [sp, #0x1c] + mov r0, #0 + str r1, [sp, #0x24] + mov r1, #2 + str r0, [sp, #0x20] + str r0, [sp, #0x28] + str r0, [sp, #0x2c] + str r0, [sp, #0x34] + mov r0, #1 + str r1, [sp, #0x30] + str r0, [sp, #0x38] + ldr r0, [r4] + lsl r6, r6, #2 + ldr r0, [r0, #0x24] + str r0, [sp, #0x3c] + ldr r0, _022132C8 ; =0x00000B48 + add r4, r4, r0 + add r0, sp, #0x10 + bl FUN_020117E8 + str r0, [r4, r6] + ldr r0, [r4, r6] + mov r1, #0 + bl FUN_02011A60 + add r0, r5, #0 + bl FUN_02019178 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022132C0: .word 0x00000B44 +_022132C4: .word 0x0000B807 +_022132C8: .word 0x00000B48 + + thumb_func_start FUN_022132CC +FUN_022132CC: ; 0x022132CC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + mov r0, #8 + ldr r1, [r1, #0x24] + bl FUN_02011744 + ldr r1, _02213348 ; =0x00000B44 + str r0, [r4, r1] + ldr r2, [r4] + add r0, r4, #0 + ldr r2, [r2, #0x14] + mov r1, #0 + bl FUN_02213220 + ldr r2, [r4] + add r0, r4, #0 + ldr r2, [r2, #0x18] + mov r1, #2 + bl FUN_02213220 + ldr r2, [r4] + add r0, r2, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #1 + bne _0221331A + ldr r2, [r2, #0x1c] + add r0, r4, #0 + mov r1, #1 + bl FUN_02213220 + ldr r2, [r4] + add r0, r4, #0 + ldr r2, [r2, #0x20] + mov r1, #3 + bl FUN_02213220 + pop {r4, pc} +_0221331A: + ldr r2, [r2, #0x14] + add r0, r4, #0 + mov r1, #1 + bl FUN_02213220 + ldr r2, [r4] + add r0, r4, #0 + ldr r2, [r2, #0x18] + mov r1, #3 + bl FUN_02213220 + ldr r0, _0221334C ; =0x00000B4C + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + ldr r0, _02213350 ; =0x00000B54 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + pop {r4, pc} + nop +_02213348: .word 0x00000B44 +_0221334C: .word 0x00000B4C +_02213350: .word 0x00000B54 + + thumb_func_start FUN_02213354 +FUN_02213354: ; 0x02213354 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + add r4, r0, #0 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r3, _0221337C ; =0x00000B48 + add r4, r4, r5 + add r5, r3, #0 + ldr r0, [r0, r3] + add r5, #0x24 + add r3, #0x28 + ldrb r5, [r4, r5] + ldrb r3, [r4, r3] + add r1, r1, r5 + add r2, r2, r3 + bl FUN_020118C4 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221337C: .word 0x00000B48 + + thumb_func_start FUN_02213380 +FUN_02213380: ; 0x02213380 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7] + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #0 + beq _022133AA + ldr r6, _022133AC ; =0x00000B48 + mov r4, #0 + add r5, r7, #0 +_02213394: + ldr r0, [r5, r6] + bl FUN_02011870 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blo _02213394 + ldr r0, _022133B0 ; =0x00000B44 + ldr r0, [r7, r0] + bl FUN_020117BC +_022133AA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022133AC: .word 0x00000B48 +_022133B0: .word 0x00000B44 + + thumb_func_start FUN_022133B4 +FUN_022133B4: ; 0x022133B4 + push {r3, r4} + ldr r1, [r0] + add r1, #0x29 + ldrb r1, [r1] + cmp r1, #1 + ldr r1, _02213480 ; =0x00000B64 + bne _02213432 + mov r2, #0x18 + strb r2, [r0, r1] + mov r3, #0x8c + add r2, r1, #4 + strb r3, [r0, r2] + mov r3, #0x55 + add r2, r1, #1 + strb r3, [r0, r2] + mov r3, #0xa4 + add r2, r1, #5 + strb r3, [r0, r2] + mov r3, #0x84 + add r2, r1, #2 + strb r3, [r0, r2] + mov r3, #0x2c + add r2, r1, #6 + strb r3, [r0, r2] + mov r3, #0xc1 + add r2, r1, #3 + strb r3, [r0, r2] + mov r3, #0x44 + add r2, r1, #7 + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0xf + add r2, #8 + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x72 + add r2, #0xc + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x4c + add r2, #9 + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x8a + add r2, #0xd + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x7b + add r2, #0xa + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x12 + add r2, #0xe + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0xb8 + add r2, #0xb + strb r3, [r0, r2] + mov r2, #0x2a + add r1, #0xf + strb r2, [r0, r1] + pop {r3, r4} + bx lr +_02213432: + mov r2, #0x18 + strb r2, [r0, r1] + mov r4, #0xa0 + add r2, r1, #4 + strb r4, [r0, r2] + mov r3, #0x51 + add r2, r1, #1 + strb r3, [r0, r2] + add r2, r1, #5 + strb r4, [r0, r2] + mov r3, #0x88 + add r2, r1, #2 + strb r3, [r0, r2] + mov r4, #0x30 + add r2, r1, #6 + strb r4, [r0, r2] + mov r3, #0xc1 + add r2, r1, #3 + strb r3, [r0, r2] + add r2, r1, #7 + strb r4, [r0, r2] + add r2, r1, #0 + mov r3, #0xf + add r2, #8 + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x86 + add r2, #0xc + strb r3, [r0, r2] + add r2, r1, #0 + mov r3, #0x80 + add r2, #0xa + strb r3, [r0, r2] + mov r2, #0x16 + add r1, #0xe + strb r2, [r0, r1] + pop {r3, r4} + bx lr + nop +_02213480: .word 0x00000B64 + + thumb_func_start FUN_02213484 +FUN_02213484: ; 0x02213484 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r4, _02213560 ; =0x022149C8 + add r3, sp, #0 + add r6, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r1, r2, #0 + add r0, r6, #0 + mov r2, #0x17 + bl FUN_02212C04 + add r0, r6, #0 + bl FUN_0221301C + add r0, r6, #0 + bl FUN_02213568 + ldr r4, _02213564 ; =0x02214C64 + mov r7, #0 + add r5, r6, #0 +_022134B8: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02212CA4 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + add r7, r7, #1 + add r4, #0x1c + add r5, r5, #4 + cmp r7, #0xe + blo _022134B8 + mov r1, #0 + mov r2, #0xff + add r0, r6, #0 + mvn r2, r2 + add r3, r1, #0 + bl FUN_0221309C + mov r2, #0xff + add r0, r6, #0 + mov r1, #1 + mvn r2, r2 + mov r3, #0 + bl FUN_0221309C + mov r1, #2 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfe + mov r3, #0 + bl FUN_0221309C + mov r1, #3 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfd + mov r3, #0 + bl FUN_0221309C + add r0, r6, #0 + bl FUN_022131C0 + add r0, r6, #0 + bl FUN_022135C8 + add r0, r6, #0 + bl FUN_022132CC + mov r1, #0 + mov r2, #0xff + add r0, r6, #0 + mvn r2, r2 + add r3, r1, #0 + bl FUN_02213354 + mov r2, #0xff + add r0, r6, #0 + mov r1, #1 + mvn r2, r2 + mov r3, #0 + bl FUN_02213354 + mov r1, #2 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfe + mov r3, #0 + bl FUN_02213354 + mov r1, #3 + add r2, r1, #0 + add r0, r6, #0 + add r2, #0xfd + mov r3, #0 + bl FUN_02213354 + mov r0, #0x21 + mov r1, #0xe + lsl r0, r0, #4 + str r1, [r6, r0] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02213560: .word 0x022149C8 +_02213564: .word 0x02214C64 + + thumb_func_start FUN_02213568 +FUN_02213568: ; 0x02213568 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022135C4 ; =0x0000B808 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x6c + mov r3, #5 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + ldr r0, _022135C4 ; =0x0000B808 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x6c + mov r3, #6 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _022135C4 ; =0x0000B808 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x6c + mov r3, #7 + bl FUN_0200C13C + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_022135C4: .word 0x0000B808 + + thumb_func_start FUN_022135C8 +FUN_022135C8: ; 0x022135C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4] + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #3 + bne _0221360A + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x80 + mov r2, #0x60 + bl FUN_0200C714 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_0200C5C0 + pop {r4, pc} +_0221360A: + bl FUN_02212BD4 + cmp r0, #1 + ldr r0, [r4] + bne _02213658 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #1 + bne _0221363A + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + mov r2, #0x60 + bl FUN_0200C714 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd0 + mov r2, #0x60 + bl FUN_0200C714 + b _0221369A +_0221363A: + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd0 + mov r2, #0x60 + bl FUN_0200C714 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + mov r2, #0x60 + bl FUN_0200C714 + b _0221369A +_02213658: + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #1 + bne _0221367E + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd0 + mov r2, #0x60 + bl FUN_0200C714 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + mov r2, #0x60 + bl FUN_0200C714 + b _0221369A +_0221367E: + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + mov r2, #0x60 + bl FUN_0200C714 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd0 + mov r2, #0x60 + bl FUN_0200C714 +_0221369A: + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C5C0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C5C0 + pop {r4, pc} + + thumb_func_start FUN_022136B4 +FUN_022136B4: ; 0x022136B4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #2 + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + mov r2, #4 + ldr r0, [r0, #0x24] + add r3, r1, #0 + bl FUN_02022318 + ldr r1, _0221378C ; =0x00000B58 + ldr r2, _02213790 ; =0x04000060 + str r0, [r4, r1] + ldrh r1, [r2] + ldr r0, _02213794 ; =0xFFFFCFFF + and r1, r0 + mov r0, #8 + orr r0, r1 + strh r0, [r2] + bl FUN_02012CC8 + ldr r0, [r4] + mov r1, #0x12 + ldr r0, [r0, #0x24] + lsl r1, r1, #0xa + bl FUN_02016998 + mov r2, #0xb6 + lsl r2, r2, #4 + str r0, [r4, r2] + mov r0, #1 + str r0, [sp] + ldr r0, [r4] + mov r3, #0x12 + ldr r0, [r0, #0x24] + ldr r1, _02213798 ; =FUN_02213834 + str r0, [sp, #4] + ldr r0, _0221379C ; =FUN_02213810 + ldr r2, [r4, r2] + lsl r3, r3, #0xa + bl FUN_02012CDC + ldr r1, _022137A0 ; =0x00000B5C + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_0201343C + add r2, r0, #0 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 + ldr r2, [r4] + mov r0, #0x3d + ldr r2, [r2, #0x24] + mov r1, #2 + bl FUN_0201318C + add r1, r0, #0 + ldr r0, _022137A0 ; =0x00000B5C + mov r2, #0xa + ldr r0, [r4, r0] + mov r3, #1 + bl FUN_02013194 + mov r1, #0 + ldr r0, _022137A0 ; =0x00000B5C + add r2, r1, #0 + ldr r0, [r4, r0] + add r3, r1, #0 + bl FUN_020133AC + ldr r0, _022137A0 ; =0x00000B5C + mov r2, #0 + ldr r0, [r4, r0] + mov r1, #1 + add r3, r2, #0 + bl FUN_020133AC + ldr r0, _022137A0 ; =0x00000B5C + mov r2, #0 + ldr r0, [r4, r0] + mov r1, #2 + add r3, r2, #0 + bl FUN_020133AC + ldr r0, _022137A0 ; =0x00000B5C + mov r2, #0 + ldr r0, [r4, r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020133AC + ldr r0, _022137A0 ; =0x00000B5C + mov r2, #0 + ldr r0, [r4, r0] + mov r1, #4 + add r3, r2, #0 + bl FUN_020133AC + add sp, #8 + pop {r4, pc} + nop +_0221378C: .word 0x00000B58 +_02213790: .word 0x04000060 +_02213794: .word 0xFFFFCFFF +_02213798: .word FUN_02213834 +_0221379C: .word FUN_02213810 +_022137A0: .word 0x00000B5C + + thumb_func_start FUN_022137A4 +FUN_022137A4: ; 0x022137A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #1 + beq _022137B6 + mov r0, #0 + pop {r4, pc} +_022137B6: + bl FUN_020222AC + ldr r0, _022137D8 ; =0x00000B5C + ldr r0, [r4, r0] + bl FUN_020133C8 + cmp r0, #0 + bne _022137CA + mov r0, #0 + pop {r4, pc} +_022137CA: + bl FUN_02013364 + bl FUN_02013388 + mov r0, #1 + pop {r4, pc} + nop +_022137D8: .word 0x00000B5C + + thumb_func_start FUN_022137DC +FUN_022137DC: ; 0x022137DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #1 + bne _02213804 + ldr r0, _02213808 ; =0x00000B5C + ldr r0, [r4, r0] + bl FUN_02012DE4 + mov r0, #0xb6 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _0221380C ; =0x00000B58 + ldr r0, [r4, r0] + bl FUN_020223BC +_02213804: + pop {r4, pc} + nop +_02213808: .word 0x00000B5C +_0221380C: .word 0x00000B58 + + thumb_func_start FUN_02213810 +FUN_02213810: ; 0x02213810 + push {r4, lr} + ldr r3, _02213830 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + cmp r4, #0 + bne _02213828 + bl ErrorHandling +_02213828: + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02213830: .word 0x021064B8 + + thumb_func_start FUN_02213834 +FUN_02213834: ; 0x02213834 + push {r4, lr} + ldr r3, _02213854 ; =0x021064C0 + mov r2, #1 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_020132BC + cmp r4, #0 + bne _0221384C + bl ErrorHandling +_0221384C: + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02213854: .word 0x021064C0 + + thumb_func_start FUN_02213858 +FUN_02213858: ; 0x02213858 + push {r4, r5, lr} + sub sp, #0x64 + ldr r5, _022138E8 ; =0x0221497C + add r3, sp, #0x54 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _022138EC ; =0x02214A9C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02018744 + ldr r5, _022138F0 ; =0x02214A10 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_02018744 + ldr r5, _022138F4 ; =0x02214A80 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + add sp, #0x64 + pop {r4, r5, pc} + nop +_022138E8: .word 0x0221497C +_022138EC: .word 0x02214A9C +_022138F0: .word 0x02214A10 +_022138F4: .word 0x02214A80 + + thumb_func_start FUN_022138F8 +FUN_022138F8: ; 0x022138F8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1e + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02213924 +FUN_02213924: ; 0x02213924 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0xf + ldr r0, [r0, #0x24] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x14 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x11 + ldr r0, [r0, #0x24] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x14 + bl FUN_020068C8 + ldr r2, [r5] + mov r0, #0x14 + ldr r2, [r2, #0x24] + mov r1, #0x10 + bl LoadFromNarc_2 + add r1, sp, #0x10 + add r4, r0, #0 + bl FUN_020B0138 + ldr r2, [sp, #0x10] + mov r0, #3 + ldr r1, [r2, #0xc] + ldr r2, [r2, #8] + mov r3, #0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_02017FB4 + ldr r1, [sp, #0x10] + ldr r0, _022139B4 ; =0x000004E4 + ldr r1, [r1, #0xc] + add r0, r5, r0 + add r1, #0x60 + mov r2, #0x60 + bl memcpy + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r2, #0xa9 + lsl r2, r2, #2 + ldr r3, _022139B8 ; =0x00000424 + add r1, r5, r2 + add r2, #0xc0 + ldr r0, [r0, #0x24] + add r2, r5, r2 + add r3, r5, r3 + bl FUN_020724D4 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_022139B4: .word 0x000004E4 +_022139B8: .word 0x00000424 + + thumb_func_start FUN_022139BC +FUN_022139BC: ; 0x022139BC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r6, _02213A90 ; =0x02214954 + mov r4, #0 + add r7, r5, #0 +_022139C8: + cmp r4, #0 + beq _022139D0 + cmp r4, #3 + bne _022139D8 +_022139D0: + mov r0, #0xa9 + lsl r0, r0, #2 + add r1, r5, r0 + b _022139EE +_022139D8: + mov r0, #0x86 + lsl r0, r0, #2 + ldrh r0, [r7, r0] + cmp r0, #0 + bne _022139E8 + ldr r0, _02213A94 ; =0x00000424 + add r1, r5, r0 + b _022139EE +_022139E8: + mov r0, #0xd9 + lsl r0, r0, #2 + add r1, r5, r0 +_022139EE: + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x10 + str r0, [sp, #0x14] + mov r0, #6 + str r0, [sp, #0x18] + ldrb r2, [r6] + ldrb r3, [r6, #1] + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02018170 + mov r0, #0x86 + lsl r0, r0, #2 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _02213A7A + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + add r0, r4, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldrb r2, [r6] + ldrb r3, [r6, #1] + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_020186B4 + cmp r4, #3 + bhs _02213A46 + ldr r0, [r5] + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #1 + beq _02213A54 +_02213A46: + cmp r4, #3 + blo _02213A68 + ldr r0, [r5] + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #0 + bne _02213A68 +_02213A54: + ldr r1, _02213A98 ; =0x00000504 + add r3, r4, #3 + lsl r3, r3, #0x15 + mov r0, #2 + add r1, r5, r1 + mov r2, #0x20 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + b _02213A7A +_02213A68: + ldr r1, _02213A9C ; =0x000004E4 + add r3, r4, #3 + lsl r3, r3, #0x15 + mov r0, #2 + add r1, r5, r1 + mov r2, #0x20 + lsr r3, r3, #0x10 + bl FUN_02017FB4 +_02213A7A: + add r4, r4, #1 + add r7, #0x18 + add r6, r6, #2 + cmp r4, #6 + blo _022139C8 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_0201AC68 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02213A90: .word 0x02214954 +_02213A94: .word 0x00000424 +_02213A98: .word 0x00000504 +_02213A9C: .word 0x000004E4 + + thumb_func_start FUN_02213AA0 +FUN_02213AA0: ; 0x02213AA0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + str r1, [sp] + add r1, r2, #0 + bl FUN_0201886C + add r6, r0, #0 + ldr r0, [r4] + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #0 + bne _02213ABE + mov r7, #0x10 + b _02213AC0 +_02213ABE: + mov r7, #0 +_02213AC0: + mov r5, #0 +_02213AC2: + lsl r0, r5, #5 + add r0, r7, r0 + lsl r4, r0, #1 + ldr r0, [sp] + lsl r1, r5, #5 + add r0, r0, r1 + add r1, r6, r4 + mov r2, #0x20 + bl memcpy + add r0, r6, r4 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x18 + blo _02213AC2 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start FUN_02213AEC +FUN_02213AEC: ; 0x02213AEC + push {r4, lr} + ldr r1, _02213B18 ; =0x00000544 + add r4, r0, #0 + add r1, r4, r1 + mov r2, #1 + bl FUN_02213AA0 + ldr r1, _02213B1C ; =0x00000844 + add r0, r4, #0 + add r1, r4, r1 + mov r2, #2 + bl FUN_02213AA0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0201AC68 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_0201AC68 + pop {r4, pc} + .align 2, 0 +_02213B18: .word 0x00000544 +_02213B1C: .word 0x00000844 + + thumb_func_start FUN_02213B20 +FUN_02213B20: ; 0x02213B20 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #0 + bne _02213B80 + mov r0, #0x20 + sub r6, r0, r4 + ldr r1, _02213BE4 ; =0x00000544 + str r4, [sp] + mov r0, #0x18 + str r0, [sp, #4] + add r1, r5, r1 + str r1, [sp, #8] + mov r3, #0 + str r3, [sp, #0xc] + lsl r2, r6, #0x18 + str r3, [sp, #0x10] + mov r1, #0x10 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #1 + lsr r2, r2, #0x18 + bl FUN_02018170 + ldr r0, _02213BE8 ; =0x00000844 + lsl r2, r6, #0x18 + str r4, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r0, r5, r0 + str r0, [sp, #8] + mov r3, #0 + str r3, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x10 + str r0, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + lsr r2, r2, #0x18 + bl FUN_02018170 + b _02213BCE +_02213B80: + ldr r2, _02213BE4 ; =0x00000544 + mov r0, #0x10 + str r4, [sp] + mov r1, #0x18 + sub r6, r0, r4 + str r1, [sp, #4] + add r2, r5, r2 + str r2, [sp, #8] + lsl r2, r6, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018170 + ldr r1, _02213BE8 ; =0x00000844 + mov r2, #0 + str r4, [sp] + mov r0, #0x18 + str r0, [sp, #4] + add r1, r5, r1 + str r1, [sp, #8] + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + str r2, [sp, #0x10] + mov r1, #0x10 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018170 +_02213BCE: + ldr r0, [r5, #0xc] + mov r1, #1 + bl FUN_0201AC68 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_0201AC68 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_02213BE4: .word 0x00000544 +_02213BE8: .word 0x00000844 + + thumb_func_start FUN_02213BEC +FUN_02213BEC: ; 0x02213BEC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, r1, #0 + str r1, [sp] + add r5, r2, #0 + bl FUN_0206B9AC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0x18 + mul r0, r5 + add r0, r4, r0 + mov r6, #0 + str r0, [sp, #4] +_02213C0C: + ldr r0, [sp, #8] + cmp r0, r6 + bhi _02213C2E + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0206B6D4 + mov r1, #0x18 + add r2, r6, #0 + mul r2, r1 + ldr r1, [sp, #4] + add r2, r1, r2 + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r2, r1] + b _02213D08 +_02213C2E: + ldr r0, [sp] + add r1, r6, #0 + bl FUN_0206B9B0 + mov r1, #0x18 + add r2, r6, #0 + mul r2, r1 + ldr r1, [sp, #4] + add r4, r0, #0 + add r7, r1, r2 + bl FUN_0206B6C8 + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r7, r1] + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x86 + lsl r1, r1, #2 + strh r0, [r7, r1] + add r0, r1, #0 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _02213D08 + mov r0, #0x18 + add r1, r6, #0 + mul r1, r0 + ldr r0, [sp, #4] + mov r2, #0 + add r5, r0, r1 + add r0, r4, #0 + mov r1, #0x4c + bl FUN_020671BC + ldr r1, _02213D18 ; =0x00000223 + mov r2, #0 + strb r0, [r5, r1] + add r0, r4, #0 + mov r1, #0xa2 + bl FUN_020671BC + ldr r1, _02213D1C ; =0x0000021A + mov r2, #0 + strh r0, [r5, r1] + add r0, r4, #0 + mov r1, #0xa3 + bl FUN_020671BC + mov r1, #0x87 + lsl r1, r1, #2 + strh r0, [r5, r1] + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x22 + lsl r1, r1, #4 + strb r0, [r5, r1] + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02213D20 ; =0x0000021E + mov r2, #0 + strh r0, [r5, r1] + add r0, r4, #0 + mov r1, #0xa1 + bl FUN_020671BC + mov r1, #0x89 + lsl r1, r1, #2 + strb r0, [r5, r1] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02213D24 ; =0x00000225 + mov r2, #0 + strb r0, [r5, r1] + add r0, r4, #0 + mov r1, #0xaf + bl FUN_020671BC + cmp r0, #1 + bne _02213CE8 + mov r1, #0 + b _02213CEA +_02213CE8: + mov r1, #1 +_02213CEA: + ldr r0, _02213D28 ; =0x00000222 + strb r1, [r7, r0] + add r0, r4, #0 + bl FUN_020689E0 + ldr r1, _02213D2C ; =0x00000221 + strb r0, [r5, r1] + add r0, r4, #0 + bl FUN_0207C2D4 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x8a + lsl r0, r0, #2 + str r1, [r5, r0] +_02213D08: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #3 + bhs _02213D14 + b _02213C0C +_02213D14: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02213D18: .word 0x00000223 +_02213D1C: .word 0x0000021A +_02213D20: .word 0x0000021E +_02213D24: .word 0x00000225 +_02213D28: .word 0x00000222 +_02213D2C: .word 0x00000221 + + thumb_func_start FUN_02213D30 +FUN_02213D30: ; 0x02213D30 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x85 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x90 + bl Call_FillMemWithValue + ldr r1, [r4] + add r0, r4, #0 + ldr r1, [r1, #4] + mov r2, #0 + bl FUN_02213BEC + ldr r1, [r4] + add r0, r4, #0 + ldr r1, [r1, #0xc] + mov r2, #3 + bl FUN_02213BEC + pop {r4, pc} + + thumb_func_start FUN_02213D5C +FUN_02213D5C: ; 0x02213D5C + push {r4, lr} + add r3, r0, #0 + add r2, r1, #0 + mov r0, #0x18 + mul r2, r0 + ldr r1, _02213DC0 ; =0x0000021A + add r4, r3, r2 + ldrh r0, [r4, r1] + cmp r0, #0 + bne _02213D74 + mov r0, #0 + pop {r4, pc} +_02213D74: + add r1, #0xe + ldr r1, [r4, r1] + cmp r1, #7 + beq _02213D84 + cmp r1, #0 + beq _02213D84 + mov r0, #5 + pop {r4, pc} +_02213D84: + mov r1, #0x87 + add r2, r3, r2 + lsl r1, r1, #2 + ldrh r1, [r2, r1] + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #4 + bhi _02213DBC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213DA2: ; jump table + .short _02213DBC - _02213DA2 - 2 ; case 0 + .short _02213DB8 - _02213DA2 - 2 ; case 1 + .short _02213DB4 - _02213DA2 - 2 ; case 2 + .short _02213DB0 - _02213DA2 - 2 ; case 3 + .short _02213DAC - _02213DA2 - 2 ; case 4 +_02213DAC: + mov r0, #1 + pop {r4, pc} +_02213DB0: + mov r0, #2 + pop {r4, pc} +_02213DB4: + mov r0, #3 + pop {r4, pc} +_02213DB8: + mov r0, #4 + pop {r4, pc} +_02213DBC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02213DC0: .word 0x0000021A + + thumb_func_start FUN_02213DC4 +FUN_02213DC4: ; 0x02213DC4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #8] + str r1, [sp] + add r0, r1, #0 + lsl r1, r0, #2 + ldr r0, [sp] + ldr r2, _02213F1C ; =0x02214B28 + add r7, r0, r1 + lsl r0, r7, #2 + add r4, r5, r0 + ldr r0, [sp] + mov r1, #0xa + mul r1, r0 + str r4, [sp, #4] + add r6, r2, r1 +_02213DE8: + mov r1, #0x1c + add r2, r7, #0 + mul r2, r1 + ldr r1, _02213F20 ; =0x02214DEC + add r0, r5, #0 + add r1, r1, r2 + bl FUN_02212CA4 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldrb r1, [r6] + ldrb r2, [r6, #1] + ldr r0, [r4, r0] + bl FUN_0200C714 + ldr r0, [sp, #8] + add r7, r7, #1 + add r0, r0, #1 + add r4, r4, #4 + add r6, r6, #2 + str r0, [sp, #8] + cmp r0, #5 + blo _02213DE8 + ldr r0, [sp] + mov r3, #0x86 + mov r1, #0x18 + add r6, r0, #0 + mul r6, r1 + add r2, r5, r6 + lsl r3, r3, #2 + ldrh r0, [r2, r3] + cmp r0, #0 + bne _02213E50 + mov r5, #0 + add r4, r3, #0 + add r6, r5, #0 + sub r4, #0x80 +_02213E36: + ldr r0, [sp, #4] + add r1, r6, #0 + ldr r0, [r0, r4] + bl FUN_0200C644 + ldr r0, [sp, #4] + add r5, r5, #1 + add r0, r0, #4 + str r0, [sp, #4] + cmp r5, #5 + blo _02213E36 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02213E50: + ldr r1, [sp] + mov r4, #0x14 + mul r4, r1 + add r1, r3, #0 + sub r1, #0x80 + add r7, r5, r1 + add r1, r3, #0 + add r1, #0xd + add r3, #0xb + ldrb r1, [r2, r1] + ldrb r2, [r2, r3] + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r7, r4] + bl FUN_0200C66C + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02213D5C + add r1, r0, #0 + ldr r0, [r7, r4] + bl FUN_0200C5C0 + ldr r1, _02213F24 ; =0x0000021E + add r0, r5, r6 + ldrh r0, [r0, r1] + cmp r0, #0 + bne _02213E9A + add r0, r5, r4 + sub r1, #0x82 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_0200C644 + b _02213EC0 +_02213E9A: + bl FUN_0206EA98 + cmp r0, #1 + bne _02213EB2 + mov r0, #0x67 + add r1, r5, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_0200C5C0 + b _02213EC0 +_02213EB2: + mov r0, #0x67 + add r1, r5, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C5C0 +_02213EC0: + mov r0, #0x89 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + cmp r1, #0 + bne _02213EDA + add r1, r5, r4 + sub r0, #0x84 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C644 + b _02213EE6 +_02213EDA: + add r1, r5, r4 + sub r0, #0x84 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_0200C5C0 +_02213EE6: + mov r3, #0x8a + add r0, r5, r6 + lsl r3, r3, #2 + ldr r0, [r0, r3] + cmp r0, #7 + bne _02213F02 + add r0, r5, r4 + sub r3, #0x84 + ldr r0, [r0, r3] + mov r1, #0 + bl FUN_0200C644 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02213F02: + add r0, r3, #0 + add r1, r5, r4 + sub r0, #0x84 + ldr r0, [r1, r0] + ldr r1, [sp, #8] + mov r2, #0x18 + mul r2, r1 + add r1, r5, r2 + ldr r1, [r1, r3] + bl FUN_0200C5C0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02213F1C: .word 0x02214B28 +_02213F20: .word 0x02214DEC +_02213F24: .word 0x0000021E + + thumb_func_start FUN_02213F28 +FUN_02213F28: ; 0x02213F28 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r5, _02213F88 ; =0x022149F8 + add r3, sp, #0 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r1, r2, #0 + add r0, r4, #0 + mov r2, #0x1f + bl FUN_02212C04 + add r0, r4, #0 + bl FUN_02213F8C + add r0, r4, #0 + bl FUN_02214034 + add r0, r4, #0 + bl FUN_022140BC + add r0, r4, #0 + bl FUN_02214144 + mov r5, #0 +_02213F64: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02213DC4 + add r5, r5, #1 + cmp r5, #6 + blo _02213F64 + add r0, r4, #0 + mov r1, #0x10 + bl FUN_022141CC + mov r0, #0x21 + mov r1, #0x1e + lsl r0, r0, #4 + str r1, [r4, r0] + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_02213F88: .word 0x022149F8 + + thumb_func_start FUN_02213F8C +FUN_02213F8C: ; 0x02213F8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + bl FUN_0206B888 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, _0221402C ; =0x0000B808 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x13 + bl FUN_0200C06C + bl FUN_0206B890 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02214030 ; =0x0000B809 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B89C + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02214030 ; =0x0000B809 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x13 + bl FUN_0200C13C + mov r4, #0 + add r6, r5, #0 + add r7, r4, #0 +_02213FFA: + str r7, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214030 ; =0x0000B809 + mov r1, #0x65 + add r0, r4, r0 + str r0, [sp, #8] + mov r0, #0x19 + mov r3, #0x85 + lsl r0, r0, #4 + lsl r1, r1, #2 + lsl r3, r3, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r3, [r6, r3] + mov r2, #0x13 + bl FUN_0200C00C + add r4, r4, #1 + add r6, #0x18 + cmp r4, #6 + blo _02213FFA + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221402C: .word 0x0000B808 +_02214030: .word 0x0000B809 + + thumb_func_start FUN_02214034 +FUN_02214034: ; 0x02214034 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022140B0 ; =0x0000B80F + mov r1, #0x19 + mov r2, #0x14 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + add r3, r2, #0 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _022140B4 ; =0x0000B809 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #0xc] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + mov r3, #0x15 + bl FUN_0200C06C + mov r0, #0 + str r0, [sp] + ldr r0, _022140B8 ; =0x0000B80A + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + mov r3, #0x13 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _022140B8 ; =0x0000B80A + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + mov r3, #0x12 + bl FUN_0200C13C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_022140B0: .word 0x0000B80F +_022140B4: .word 0x0000B809 +_022140B8: .word 0x0000B80A + + thumb_func_start FUN_022140BC +FUN_022140BC: ; 0x022140BC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214138 ; =0x0000B810 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x27 + mov r3, #0x40 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _0221413C ; =0x0000B80A + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #0xc] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x27 + mov r3, #0x41 + bl FUN_0200C06C + mov r0, #0 + str r0, [sp] + ldr r0, _02214140 ; =0x0000B80B + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x27 + mov r3, #0x3f + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _02214140 ; =0x0000B80B + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x27 + mov r3, #0x3e + bl FUN_0200C13C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02214138: .word 0x0000B810 +_0221413C: .word 0x0000B80A +_02214140: .word 0x0000B80B + + thumb_func_start FUN_02214144 +FUN_02214144: ; 0x02214144 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022141C0 ; =0x0000B811 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #8] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + mov r3, #2 + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, _022141C4 ; =0x0000B80B + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #0xc] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + mov r3, #8 + bl FUN_0200C06C + mov r0, #0 + str r0, [sp] + ldr r0, _022141C8 ; =0x0000B80C + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + mov r3, #1 + bl FUN_0200C124 + mov r3, #0 + mov r1, #0x19 + ldr r0, _022141C8 ; =0x0000B80C + str r3, [sp] + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0x14 + bl FUN_0200C13C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_022141C0: .word 0x0000B811 +_022141C4: .word 0x0000B80B +_022141C8: .word 0x0000B80C + + thumb_func_start FUN_022141CC +FUN_022141CC: ; 0x022141CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + ldr r0, [r0] + add r7, r1, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #0 + bne _022141E6 + mov r0, #3 + str r0, [sp, #8] + lsl r0, r7, #0x13 + b _022141F0 +_022141E6: + mov r0, #0 + str r0, [sp, #8] + lsl r0, r7, #3 + neg r0, r0 + lsl r0, r0, #0x10 +_022141F0: + asr r7, r0, #0x10 + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + mov r1, #0xa + ldr r2, _02214248 ; =0x02214B28 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #4] +_02214202: + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + ldr r4, [sp, #4] + add r1, r1, r0 + lsl r0, r1, #2 + add r0, r1, r0 + lsl r1, r0, #2 + ldr r0, [sp] + mov r6, #0 + add r5, r0, r1 +_02214216: + ldrb r1, [r4] + mov r0, #0x66 + lsl r0, r0, #2 + add r1, r7, r1 + lsl r1, r1, #0x10 + ldrb r2, [r4, #1] + ldr r0, [r5, r0] + asr r1, r1, #0x10 + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #4 + cmp r6, #5 + blt _02214216 + ldr r0, [sp, #4] + add r0, #0xa + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #3 + blt _02214202 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02214248: .word 0x02214B28 + + thumb_func_start FUN_0221424C +FUN_0221424C: ; 0x0221424C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + ldr r4, _02214270 ; =0x02214BA4 + mov r6, #0 + add r5, #0x10 +_02214258: + ldr r0, [r7, #0xc] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #0x18 + blo _02214258 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214270: .word 0x02214BA4 + + thumb_func_start FUN_02214274 +FUN_02214274: ; 0x02214274 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0221427C: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0x18 + blo _0221427C + pop {r3, r4, r5, pc} + + thumb_func_start FUN_0221428C +FUN_0221428C: ; 0x0221428C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r4, [sp, #0x3c] + add r5, r0, #0 + add r7, r5, #0 + lsl r0, r4, #6 + add r7, #0x10 + str r0, [sp, #0x1c] + str r1, [sp, #0x10] + str r3, [sp, #0x14] + ldr r6, [sp, #0x38] + cmp r4, #3 + ldr r0, [r5] + bhs _022142B4 + ldr r0, [r0, #4] + add r1, r4, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x18] + b _022142BE +_022142B4: + ldr r0, [r0, #0xc] + sub r1, r4, #3 + bl FUN_0206B9B0 + str r0, [sp, #0x18] +_022142BE: + add r1, r4, #0 + ldr r0, [sp, #0x10] + add r1, #8 + bl FUN_0200A914 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0 + bl FUN_0200ACF8 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x20] + add r1, r6, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214370 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r3, r1, #0 + add r0, r7, r0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #0x18 + mul r0, r4 + add r2, r5, r0 + ldr r0, _02214374 ; =0x00000222 + ldrb r1, [r2, r0] + cmp r1, #0 + bne _0221436C + sub r0, r0, #1 + ldrb r0, [r2, r0] + cmp r0, #0 + bne _02214344 + ldr r0, [sp, #0x10] + mov r1, #0x1b + add r2, r6, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r2, r6, #0 + add r0, r7, r0 + mov r3, #0x40 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_02214344: + cmp r0, #1 + bne _0221436C + ldr r0, [sp, #0x10] + mov r1, #0x1c + add r2, r6, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214378 ; =0x00050600 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + mov r3, #0x40 + add r0, r7, r0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_0221436C: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214370: .word 0x000F0E00 +_02214374: .word 0x00000222 +_02214378: .word 0x00050600 + + thumb_func_start FUN_0221437C +FUN_0221437C: ; 0x0221437C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [sp, #0x2c] + add r5, r6, #0 + lsl r0, r0, #2 + add r0, r0, #1 + lsl r4, r0, #4 + mov r0, #5 + add r7, r1, #0 + str r3, [sp, #0x10] + str r0, [sp] + add r5, #0x10 + add r0, r2, #0 + mov r1, #1 + add r2, r5, r4 + mov r3, #0 + bl FUN_0200B9A8 + ldr r1, [sp, #0x2c] + add r0, r7, #0 + add r1, r1, #2 + bl FUN_0200A914 + mov r1, #0 + add r7, r0, #0 + ldr r3, [sp, #0x2c] + mov r2, #0x18 + mul r2, r3 + add r3, r6, r2 + mov r2, #0x22 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r2, r2, #4 + ldrb r2, [r3, r2] + ldr r0, [sp, #0x10] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x28] + add r2, r7, #0 + bl FUN_0200B7B8 + add r0, r7, #0 + bl FUN_02021A20 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022143F8 ; =0x000F0E00 + ldr r2, [sp, #0x28] + str r0, [sp, #8] + add r0, r5, r4 + mov r3, #0x10 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022143F8: .word 0x000F0E00 + + thumb_func_start FUN_022143FC +FUN_022143FC: ; 0x022143FC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + ldr r5, [sp, #0x44] + add r7, r0, #0 + str r0, [sp, #0x10] + lsl r0, r5, #2 + add r0, r0, #2 + lsl r0, r0, #4 + str r0, [sp, #0x28] + str r1, [sp, #0x14] + add r0, r1, #0 + add r1, r5, #0 + add r1, #0x14 + str r3, [sp, #0x18] + ldr r4, [sp, #0x40] + add r7, #0x10 + bl FUN_0200A914 + str r0, [sp, #0x20] + mov r0, #0x18 + mul r0, r5 + str r0, [sp, #0x1c] + mov r1, #0 + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x1c] + str r1, [sp] + mov r0, #1 + add r3, r3, r2 + str r0, [sp, #4] + ldr r2, _02214508 ; =0x0000021A + ldr r0, [sp, #0x18] + ldrh r2, [r3, r2] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x20] + add r1, r4, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov ip, r0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221450C ; =0x000F0E00 + mov r6, ip + str r0, [sp, #8] + ldr r0, [sp, #0x28] + mov r3, #0x1c + add r0, r7, r0 + add r2, r4, #0 + sub r3, r3, r6 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + mov r1, #0x1a + add r2, r4, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221450C ; =0x000F0E00 + add r2, r4, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x28] + mov r3, #0x1c + add r0, r7, r0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + str r0, [sp, #0x24] + add r5, #0xe + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0200A914 + add r5, r0, #0 + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x1c] + mov r1, #0 + add r3, r3, r2 + mov r2, #0x87 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r2, r2, #2 + ldrh r2, [r3, r2] + ldr r0, [sp, #0x18] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [sp, #0x18] + add r1, r4, #0 + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + bl FUN_02021A20 + mov r1, #0 + ldr r3, [sp, #0x24] + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221450C ; =0x000F0E00 + add r3, #0x1c + str r0, [sp, #8] + ldr r0, [sp, #0x28] + add r2, r4, #0 + add r0, r7, r0 + str r1, [sp, #0xc] + str r3, [sp, #0x24] + bl FUN_0201BDE0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_02214508: .word 0x0000021A +_0221450C: .word 0x000F0E00 + + thumb_func_start FUN_02214510 +FUN_02214510: ; 0x02214510 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + lsl r0, r1, #2 + add r2, r5, #0 + add r0, r0, #3 + add r2, #0x10 + lsl r0, r0, #4 + add r4, r2, r0 + mov r0, #0x18 + add r6, r1, #0 + mul r6, r0 + mov r0, #0x87 + lsl r0, r0, #2 + add r7, r5, r0 + sub r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #8] + ldrh r0, [r0, r6] + ldrh r1, [r7, r6] + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #4 + bhi _0221459E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221454E: ; jump table + .short _0221459E - _0221454E - 2 ; case 0 + .short _02214588 - _0221454E - 2 ; case 1 + .short _02214570 - _0221454E - 2 ; case 2 + .short _02214558 - _0221454E - 2 ; case 3 + .short _02214558 - _0221454E - 2 ; case 4 +_02214558: + ldrb r3, [r4, #9] + ldr r1, _022145F4 ; =0x000004F6 + mov r0, #1 + lsl r3, r3, #4 + add r3, #9 + lsl r3, r3, #0x11 + add r1, r5, r1 + mov r2, #4 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + b _0221459E +_02214570: + ldrb r3, [r4, #9] + ldr r1, _022145F8 ; =0x00000516 + mov r0, #1 + lsl r3, r3, #4 + add r3, #9 + lsl r3, r3, #0x11 + add r1, r5, r1 + mov r2, #4 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + b _0221459E +_02214588: + ldrb r3, [r4, #9] + ldr r1, _022145FC ; =0x00000536 + mov r0, #1 + lsl r3, r3, #4 + add r3, #9 + lsl r3, r3, #0x11 + add r1, r5, r1 + mov r2, #4 + lsr r3, r3, #0x10 + bl FUN_02017FB4 +_0221459E: + ldr r0, [sp, #8] + ldrh r1, [r7, r6] + ldrh r0, [r0, r6] + mov r2, #0x30 + bl FUN_02079A0C + add r5, r0, #0 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + mov r3, #2 + bl FUN_020196F4 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + mov r3, #3 + bl FUN_020196F4 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + mov r3, #5 + bl FUN_020196F4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022145F4: .word 0x000004F6 +_022145F8: .word 0x00000516 +_022145FC: .word 0x00000536 + + thumb_func_start FUN_02214600 +FUN_02214600: ; 0x02214600 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + ldr r6, [sp, #0x2c] + add r5, r7, #0 + str r1, [sp, #8] + add r5, #0x10 + lsl r4, r6, #6 + add r0, r5, r4 + mov r1, #0 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + bl FUN_02019620 + add r0, r5, r4 + add r0, #0x10 + mov r1, #0 + bl FUN_02019620 + add r0, r5, r4 + add r0, #0x20 + mov r1, #0 + bl FUN_02019620 + add r0, r5, r4 + add r0, #0x30 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x28] + ldr r1, [sp, #8] + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r7, #0 + str r6, [sp, #4] + bl FUN_0221428C + ldr r0, [sp, #0x28] + ldr r1, [sp, #8] + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r7, #0 + str r6, [sp, #4] + bl FUN_0221437C + ldr r0, [sp, #0x28] + ldr r1, [sp, #8] + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r7, #0 + str r6, [sp, #4] + bl FUN_022143FC + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02214510 + add r0, r5, r4 + bl FUN_02019220 + add r0, r5, r4 + add r0, #0x10 + bl FUN_02019220 + add r0, r5, r4 + add r0, #0x20 + bl FUN_02019220 + add r0, r5, r4 + add r0, #0x30 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start FUN_0221469C +FUN_0221469C: ; 0x0221469C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r3, [r6] + ldr r2, _0221471C ; =0x00000192 + ldr r3, [r3, #0x24] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + ldr r3, [r6] + str r0, [sp, #0x10] + ldr r3, [r3, #0x24] + mov r0, #0xf + mov r1, #0xe + mov r2, #0 + bl FUN_0200B870 + str r0, [sp, #0xc] + ldr r0, [r6] + ldr r0, [r0, #0x24] + bl FUN_0200AA80 + ldr r1, [r6] + str r0, [sp, #8] + ldr r1, [r1, #0x24] + mov r0, #0x20 + bl FUN_020219F4 + add r7, r0, #0 + mov r4, #0 + add r5, r6, #0 +_022146DC: + mov r0, #0x86 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r0, #0 + beq _022146F6 + ldr r1, [sp, #0x10] + str r7, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r6, #0 + str r4, [sp, #4] + bl FUN_02214600 +_022146F6: + add r4, r4, #1 + add r5, #0x18 + cmp r4, #6 + blo _022146DC + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r0, [sp, #0xc] + bl FUN_0200B990 + ldr r0, [sp, #8] + bl FUN_0200AB18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0221471C: .word 0x00000192 + + thumb_func_start FUN_02214720 +FUN_02214720: ; 0x02214720 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _022147A4 + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r4, #0 + add r0, #0x2a + ldrb r0, [r0] + ldr r1, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02034998 + cmp r0, #1 + bne _0221479C + mov r0, #1 + add r7, r5, #0 + eor r7, r0 + mov r0, #0x34 + ldr r1, [r4] + mul r0, r7 + add r0, r1, r0 + add r0, #0x29 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #0x10] + ldr r0, [r4, #0x24] + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_020313CC + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + ldr r1, [sp, #0x10] + ldr r3, [r4, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_020294B4 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02016A18 + b _0221493A +_0221479C: + bl FUN_02033534 + cmp r0, #4 + bls _022147A6 +_022147A4: + b _0221494A +_022147A6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022147B2: ; jump table + .short _02214936 - _022147B2 - 2 ; case 0 + .short _022147BC - _022147B2 - 2 ; case 1 + .short _02214808 - _022147B2 - 2 ; case 2 + .short _02214854 - _022147B2 - 2 ; case 3 + .short _022148A0 - _022147B2 - 2 ; case 4 +_022147BC: + mov r0, #1 + add r7, r5, #0 + eor r7, r0 + mov r0, #0x34 + ldr r1, [r4] + mul r0, r7 + add r0, r1, r0 + add r0, #0x29 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #0x14] + ldr r0, [r4, #0x24] + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_020313CC + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + ldr r1, [sp, #0x14] + ldr r3, [r4, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_0202930C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02016A18 + b _0221493A +_02214808: + mov r0, #1 + add r7, r5, #0 + eor r7, r0 + mov r0, #0x34 + ldr r1, [r4] + mul r0, r7 + add r0, r1, r0 + add r0, #0x29 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #0x18] + ldr r0, [r4, #0x24] + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_020313CC + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + ldr r1, [sp, #0x18] + ldr r3, [r4, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_0202934C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02016A18 + b _0221493A +_02214854: + mov r0, #1 + add r7, r5, #0 + eor r7, r0 + mov r0, #0x34 + ldr r1, [r4] + mul r0, r7 + add r0, r1, r0 + add r0, #0x29 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #0x1c] + ldr r0, [r4, #0x24] + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_020313CC + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + ldr r1, [sp, #0x1c] + ldr r3, [r4, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_020293EC + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02016A18 + b _0221493A +_022148A0: + ldr r0, [r4, #0x24] + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + ldr r0, [r4, #0x24] + mov r1, #0x10 + bl FUN_02016998 + add r7, r0, #0 + bl FUN_02212BD4 + cmp r0, #1 + ldr r0, [r4] + bne _022148EA + add r0, #0x5d + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #8] + ldr r0, [r4] + add r0, #0xc5 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + ldr r0, [r4, #0x20] + add r1, r7, #0 + mov r2, #8 + bl FUN_02021EF0 + b _02214914 +_022148EA: + add r0, #0x29 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #8] + ldr r0, [r4] + add r0, #0x91 + ldrb r0, [r0] + bl FUN_0206AE00 + str r0, [sp, #0xc] + ldr r0, [r4, #0x14] + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + ldr r0, [r4, #0x1c] + add r1, r7, #0 + mov r2, #8 + bl FUN_02021EF0 +_02214914: + str r6, [sp] + ldr r0, [r4, #0x24] + add r1, r7, #0 + str r0, [sp, #4] + ldr r2, [sp, #8] + ldr r3, [sp, #0xc] + add r0, r5, #0 + bl FUN_0202938C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_02016A18 + b _0221493A +_02214936: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_0221493A: + mov r0, #0x52 + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + mov r2, #4 + bl FUN_02028AD4 +_0221494A: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + .section .data + ; 0x02214950 + .incbin "baserom.nds", 0x186EF0, 0x7F0 -- cgit v1.2.3 From e171998bf5f54fac757b3104ef20dfb4349f5720 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 10:40:53 -0400 Subject: Dism more of module 05 --- arm9/global.inc | 5 + arm9/modules/05/asm/module_05.s | 761 +++++++++++++++++++++++++++++++++++++++- arm9/undefined_syms.txt | 1 + 3 files changed, 765 insertions(+), 2 deletions(-) diff --git a/arm9/global.inc b/arm9/global.inc index 73a17530..f66095bf 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4330,3 +4330,8 @@ .extern FUN_02079A54 .extern FUN_02079A70 .extern FUN_0207C2D4 +.extern FUN_02047964 +.extern FUN_02055648 +.extern FUN_02058544 +.extern FUN_02061208 +.extern FUN_0223BD14 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index cc439346..923c69e4 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -62868,9 +62868,766 @@ _021F5C40: add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F5C44 +MOD05_021F5C44: ; 0x021F5C44 + push {r3, r4, r5, lr} + add r0, r1, #0 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021F5C58: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021F5C58 + add r0, r5, #0 + str r5, [r4, #0xc] + bl MOD05_021F61B0 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5C70 +MOD05_021F5C70: ; 0x021F5C70 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021F5C8E + cmp r0, #1 + beq _021F5CBA + b _021F5D28 +_021F5C8E: + ldr r0, [r4, #0x34] + bl FUN_02058780 + mov r0, #0 + str r0, [r5, #0x10] + add r2, r5, #0 + ldr r1, [r5, #0xc] + add r0, r4, #0 + add r2, #0x10 + bl FUN_0223BD14 + str r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r5, #8] + add r0, r4, #0 + bl MOD05_021F5D2C + str r0, [r5, #0x14] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021F5D28 +_021F5CBA: + ldr r0, [r5, #0x14] + bl MOD05_021F5D50 + cmp r0, #1 + bne _021F5D28 + ldr r0, [r5, #0x14] + bl MOD05_021F5D5C + add r7, r0, #0 + ldr r0, [r5, #0x14] + bl MOD05_021F5D68 + cmp r7, #1 + ldr r0, [r5, #0x10] + bne _021F5D10 + ldr r0, [r0, #8] + mov r1, #0 + bl FUN_0206B9B0 + ldr r2, [r5, #4] + add r3, r0, #0 + lsl r2, r2, #0x10 + add r0, r4, #0 + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02061208 + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + mov r1, #0xa + bl FUN_0202A0E8 + ldr r2, [r5, #0x10] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02046A20 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F5D10: + cmp r0, #0 + beq _021F5D18 + bl FUN_02047964 +_021F5D18: + ldr r0, [r4, #0x34] + bl FUN_020587B0 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F5D28: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F5D2C +MOD05_021F5D2C: ; 0x021F5D2C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4c + add r4, r1, #0 + add r6, r2, #0 + bl MOD05_021F6074 + add r1, r0, #0 + str r5, [r1, #0x20] + str r4, [r1, #0x1c] + ldr r0, _021F5D4C ; =MOD05_021F5D7C + mov r2, #0x80 + str r6, [r1] + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_021F5D4C: .word MOD05_021F5D7C + + thumb_func_start MOD05_021F5D50 +MOD05_021F5D50: ; 0x021F5D50 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5D5C +MOD05_021F5D5C: ; 0x021F5D5C + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #8] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5D68 +MOD05_021F5D68: ; 0x021F5D68 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD05_021F5D7C +MOD05_021F5D7C: ; 0x021F5D7C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0x20] + ldr r6, [r0, #0x38] + add r0, r6, #0 + bl FUN_020553A0 + ldr r7, _021F5DA4 ; =0x021FC9B8 + add r4, r0, #0 +_021F5D8E: + ldr r3, [r5, #0xc] + add r0, r5, #0 + lsl r3, r3, #2 + ldr r3, [r7, r3] + add r1, r6, #0 + add r2, r4, #0 + blx r3 + cmp r0, #0 + bne _021F5D8E + pop {r3, r4, r5, r6, r7, pc} + nop +_021F5DA4: .word 0x021FC9B8 + + thumb_func_start MOD05_021F5DA8 +MOD05_021F5DA8: ; 0x021F5DA8 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r0, #0 + bl MOD05_021F60C4 + add r0, r4, #0 + bl FUN_02058914 + mov r0, #1 + str r0, [r5, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5DC0 +MOD05_021F5DC0: ; 0x021F5DC0 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021F5DF2 + add r0, r6, #0 + bl FUN_0205AE50 + add r0, r4, #0 + mov r1, #0x20 + bl MOD05_021E5FD8 + add r0, r4, #0 + bl MOD05_021E5FE0 + add r0, r6, #0 + mov r1, #1 + bl FUN_02058544 + mov r0, #2 + str r0, [r5, #0xc] +_021F5DF2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5DF8 +MOD05_021F5DF8: ; 0x021F5DF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0xa + bne _021F5E0E + mov r0, #0x65 + lsl r0, r0, #4 + bl FUN_020054C8 +_021F5E0E: + ldr r0, [r4, #0x10] + cmp r0, #0x22 + bge _021F5E18 + mov r0, #0 + pop {r4, pc} +_021F5E18: + ldr r0, [r4] + cmp r0, #1 + bne _021F5E22 + mov r0, #3 + b _021F5E24 +_021F5E22: + mov r0, #0xc +_021F5E24: + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5E30 +MOD05_021F5E30: ; 0x021F5E30 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r0, r0, #0x1e + sub r0, r0, r1 + mov r2, #0x1e + ror r0, r2 + add r0, r1, r0 + add r0, r0, #1 + add r1, r0, #0 + mul r1, r2 + str r1, [r4, #0x14] + ldr r0, [r4, #0x1c] + lsl r1, r0, #2 + ldr r0, _021F5E60 ; =0x021FC9AC + ldr r0, [r0, r1] + str r0, [r4, #0x18] + mov r0, #4 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + nop +_021F5E60: .word 0x021FC9AC + + thumb_func_start MOD05_021F5E64 +MOD05_021F5E64: ; 0x021F5E64 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + add r4, r2, #0 + sub r0, r0, #1 + str r0, [r5, #0x14] + bl MOD05_021F6098 + cmp r0, #1 + bne _021F5E80 + mov r0, #0xa + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_021F5E80: + ldr r0, [r5, #0x14] + cmp r0, #0 + ble _021F5E8A + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5E8A: + add r0, r4, #0 + mov r1, #2 + bl FUN_02058544 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD05_021E7AC0 + str r0, [r5, #0x24] + mov r0, #5 + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5EA8 +MOD05_021F5EA8: ; 0x021F5EA8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + sub r0, r0, #1 + str r0, [r4, #0x18] + bl MOD05_021F6098 + cmp r0, #1 + bne _021F5EC2 + mov r0, #6 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} +_021F5EC2: + ldr r0, [r4, #0x18] + cmp r0, #0 + ble _021F5ECC + mov r0, #0 + pop {r4, pc} +_021F5ECC: + mov r0, #0xb + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021F5ED4 +MOD05_021F5ED4: ; 0x021F5ED4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r2, #0 + bl FUN_02064520 + mov r0, #0 + str r0, [r5, #0x24] + add r0, r4, #0 + mov r1, #3 + bl FUN_02058544 + mov r0, #0 + str r0, [r5, #0x10] + mov r1, #7 + str r1, [r5, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5EF8 +MOD05_021F5EF8: ; 0x021F5EF8 + push {r3, lr} + ldr r1, [r0, #0x10] + add r1, r1, #1 + str r1, [r0, #0x10] + cmp r1, #0xf + ble _021F5F12 + mov r1, #0 + str r1, [r0, #0x10] + mov r1, #8 + str r1, [r0, #0xc] + mov r1, #0x39 + bl MOD05_021F6140 +_021F5F12: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5F18 +MOD05_021F5F18: ; 0x021F5F18 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F617C + cmp r0, #0 + bne _021F5F28 + mov r0, #0 + pop {r4, pc} +_021F5F28: + mov r0, #9 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F5F30 +MOD05_021F5F30: ; 0x021F5F30 + mov r2, #1 + str r2, [r0, #8] + mov r1, #0xf + str r1, [r0, #0xc] + add r0, r2, #0 + bx lr + + thumb_func_start MOD05_021F5F3C +MOD05_021F5F3C: ; 0x021F5F3C + push {r4, lr} + add r4, r0, #0 + add r0, r2, #0 + mov r1, #0 + bl FUN_02058544 + add r0, r4, #0 + mov r1, #0x38 + bl MOD05_021F6140 + mov r0, #0x10 + str r0, [r4, #0x10] + mov r0, #0xe + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F5F5C +MOD05_021F5F5C: ; 0x021F5F5C + push {r4, lr} + add r4, r0, #0 + add r0, r2, #0 + mov r1, #0 + bl FUN_02058544 + add r0, r4, #0 + mov r1, #0x37 + bl MOD05_021F6140 + mov r0, #0x10 + str r0, [r4, #0x10] + mov r0, #0xe + str r0, [r4, #0xc] + ldr r0, [r4, #0x20] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x49 + bl FUN_0202A0E8 + ldr r0, [r4, #0x1c] + bl MOD05_021F61B0 + add r2, r0, #0 + mov r1, #0 + ldr r0, [r4, #0x20] + add r3, r1, #0 + bl FUN_02061208 + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F5F9C +MOD05_021F5F9C: ; 0x021F5F9C + mov r1, #0x78 + str r1, [r0, #0x10] + mov r1, #0xd + str r1, [r0, #0xc] + mov r0, #1 + bx lr + + thumb_func_start MOD05_021F5FA8 +MOD05_021F5FA8: ; 0x021F5FA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r2, #0 + sub r0, r0, #1 + str r0, [r5, #0x10] + bl MOD05_021F6098 + cmp r0, #1 + bne _021F5FC4 + mov r0, #0xa + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_021F5FC4: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021F5FCE + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5FCE: + add r0, r4, #0 + mov r1, #0 + bl FUN_02058544 + add r0, r5, #0 + mov r1, #0x36 + bl MOD05_021F6140 + mov r0, #0x10 + str r0, [r5, #0x10] + mov r0, #0xe + str r0, [r5, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F5FEC +MOD05_021F5FEC: ; 0x021F5FEC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x10] + add r1, r1, #1 + str r1, [r4, #0x10] + cmp r1, #0x10 + bge _021F5FFE + mov r0, #0 + pop {r4, pc} +_021F5FFE: + mov r1, #0x10 + str r1, [r4, #0x10] + bl MOD05_021F617C + cmp r0, #0 + bne _021F600E + mov r0, #0 + pop {r4, pc} +_021F600E: + mov r0, #0xf + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6018 +MOD05_021F6018: ; 0x021F6018 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r1, #0 + cmp r0, #0 + beq _021F602C + bl FUN_02064520 + mov r0, #0 + str r0, [r5, #0x24] +_021F602C: + add r0, r5, #0 + bl MOD05_021F60FC + add r0, r4, #0 + bl FUN_020553C4 + bl FUN_02055648 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E5FD8 + add r0, r4, #0 + bl MOD05_021E5FE0 + mov r0, #0 + str r0, [r5, #0x10] + mov r0, #0x10 + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6058 +MOD05_021F6058: ; 0x021F6058 + ldr r1, [r0, #0x10] + add r1, r1, #1 + str r1, [r0, #0x10] + cmp r1, #2 + ble _021F6066 + mov r1, #0x11 + str r1, [r0, #0xc] +_021F6066: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD05_021F606C +MOD05_021F606C: ; 0x021F606C + mov r1, #1 + str r1, [r0, #4] + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F6074 +MOD05_021F6074: ; 0x021F6074 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _021F6088 + bl ErrorHandling +_021F6088: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6098 +MOD05_021F6098: ; 0x021F6098 + ldr r0, _021F60A8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r1, r0 + bne _021F60A4 + mov r0, #0 +_021F60A4: + bx lr + nop +_021F60A8: .word 0x021C48B8 + + thumb_func_start MOD05_021F60AC +MOD05_021F60AC: ; 0x021F60AC + ldr r0, _021F60C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021F60BA + mov r0, #1 + bx lr +_021F60BA: + mov r0, #0 + bx lr + nop +_021F60C0: .word 0x021C48B8 + + thumb_func_start MOD05_021F60C4 +MOD05_021F60C4: ; 0x021F60C4 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xc7 + mov r3, #4 + bl FUN_0200A86C + str r0, [r4, #0x48] + mov r0, #1 + lsl r0, r0, #0xa + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x2c] + mov r0, #1 + lsl r0, r0, #0xa + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x30] + mov r0, #8 + mov r1, #0x40 + mov r2, #4 + bl FUN_0200AA90 + str r0, [r4, #0x34] + pop {r4, pc} + + thumb_func_start MOD05_021F60FC +MOD05_021F60FC: ; 0x021F60FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_0200AB18 + ldr r0, [r4, #0x2c] + bl FUN_02021A20 + ldr r0, [r4, #0x30] + bl FUN_02021A20 + ldr r0, [r4, #0x48] + bl FUN_0200A8B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F611C +MOD05_021F611C: ; 0x021F611C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x20] + add r1, r5, #0 + ldr r0, [r4, #8] + add r1, #0x38 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r4, #0xc] + bl LoadPlayerDataAddress + add r5, #0x38 + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02054608 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F6140 +MOD05_021F6140: ; 0x021F6140 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD05_021F611C + ldr r0, [r5, #0x48] + ldr r2, [r5, #0x30] + add r1, r6, #0 + ldr r4, [r5, #0x20] + bl FUN_0200A8E0 + ldr r0, [r5, #0x34] + ldr r1, [r5, #0x2c] + ldr r2, [r5, #0x30] + bl FUN_0200B7B8 + ldr r0, [r4, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0 + add r0, r5, #0 + ldr r1, [r5, #0x2c] + add r0, #0x38 + mov r3, #1 + bl FUN_02054658 + add r5, #0x28 + strb r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD05_021F617C +MOD05_021F617C: ; 0x021F617C + push {r4, lr} + add r4, r0, #0 + add r0, #0x28 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #1 + bne _021F61AA + bl MOD05_021F60AC + cmp r0, #1 + bne _021F61AA + add r0, r4, #0 + add r0, #0x38 + mov r1, #0 + bl FUN_0200D0E0 + add r4, #0x38 + add r0, r4, #0 + bl FUN_02019178 + mov r0, #1 + pop {r4, pc} +_021F61AA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F61B0 +MOD05_021F61B0: ; 0x021F61B0 + push {r3, lr} + cmp r0, #0 + beq _021F61C2 + cmp r0, #1 + beq _021F61C6 + cmp r0, #2 + beq _021F61CA + bl ErrorHandling +_021F61C2: + ldr r0, _021F61D0 ; =0x000001BD + pop {r3, pc} +_021F61C6: + ldr r0, _021F61D4 ; =0x000001BE + pop {r3, pc} +_021F61CA: + ldr r0, _021F61D8 ; =0x000001BF + pop {r3, pc} + nop +_021F61D0: .word 0x000001BD +_021F61D4: .word 0x000001BE +_021F61D8: .word 0x000001BF + .section .data - ; 0x021F5C44 - .incbin "baserom.nds", 0x163B64, 0x7A3C + ; 0x021F61DC + .incbin "baserom.nds", 0x1640fc, 0x74a4 .section .bss ; 0x021FD680 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index ab1bb25b..77894ad5 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -538,6 +538,7 @@ FUN_022524F4 = 0x022524F4; FUN_02252504 = 0x02252504; FUN_02254A68 = 0x02254A68; FUN_02254AB8 = 0x02254AB8; +FUN_0223BD14 = 0x0223BD14; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; -- cgit v1.2.3 From c35f1055e375cb66c0d231c8eafa39f4aad42da3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 11:05:28 -0400 Subject: Finish module 05 code dism --- arm9/modules/05/asm/module_05.s | 327 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 325 insertions(+), 2 deletions(-) diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 923c69e4..c5cb3088 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -63625,9 +63625,332 @@ _021F61D0: .word 0x000001BD _021F61D4: .word 0x000001BE _021F61D8: .word 0x000001BF + thumb_func_start MOD05_021F61DC +MOD05_021F61DC: ; 0x021F61DC + lsl r1, r0, #2 + ldr r0, _021F61E4 ; =0x021FCA00 + ldrh r0, [r0, r1] + bx lr + .align 2, 0 +_021F61E4: .word 0x021FCA00 + + thumb_func_start MOD05_021F61E8 +MOD05_021F61E8: ; 0x021F61E8 + lsl r1, r0, #2 + ldr r0, _021F61F0 ; =0x021FCA02 + ldrh r0, [r0, r1] + bx lr + .align 2, 0 +_021F61F0: .word 0x021FCA02 + + thumb_func_start MOD05_021F61F4 +MOD05_021F61F4: ; 0x021F61F4 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #0x34 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x34 + bl Call_FillMemWithValue + str r6, [r4] + mov r0, #0 + str r0, [r4, #0xc] + str r5, [r4, #0x2c] + ldr r0, [r5, #0x20] + str r0, [r4, #0x30] + bl FUN_0201F010 + str r0, [r4, #0x10] + str r0, [r4, #0x20] + ldr r0, _021F622C ; =MOD05_021F6270 + ldr r2, _021F6230 ; =0x0000FFFF + add r1, r4, #0 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_021F622C: .word MOD05_021F6270 +_021F6230: .word 0x0000FFFF + + thumb_func_start MOD05_021F6234 +MOD05_021F6234: ; 0x021F6234 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #8] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD05_021F6240 +MOD05_021F6240: ; 0x021F6240 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD05_021F6254 +MOD05_021F6254: ; 0x021F6254 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0201B6C8 + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #8] + str r5, [r0, #0xc] + str r4, [r0, #0x14] + str r6, [r0, #0x1c] + str r1, [r0, #0x24] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F6270 +MOD05_021F6270: ; 0x021F6270 + push {r3, lr} + add r0, r1, #0 + ldr r1, [r1, #0xc] + lsl r2, r1, #2 + ldr r1, _021F6280 ; =0x021FD1B8 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + .align 2, 0 +_021F6280: .word 0x021FD1B8 + + thumb_func_start MOD05_021F6284 +MOD05_021F6284: ; 0x021F6284 + mov r1, #1 + str r1, [r0, #8] + bx lr + .align 2, 0 + + thumb_func_start MOD05_021F628C +MOD05_021F628C: ; 0x021F628C + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021F629C + cmp r1, #1 + beq _021F62A6 + pop {r4, pc} +_021F629C: + bl MOD05_021F630C + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021F62A6: + add r0, r4, #0 + bl MOD05_021F633C + cmp r0, #1 + bne _021F62BA + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #8] +_021F62BA: + add r0, r4, #0 + bl MOD05_021F62FC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F62C4 +MOD05_021F62C4: ; 0x021F62C4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021F62D4 + cmp r1, #1 + beq _021F62DE + pop {r4, pc} +_021F62D4: + bl MOD05_021F6324 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_021F62DE: + add r0, r4, #0 + bl MOD05_021F633C + cmp r0, #1 + bne _021F62F2 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #8] +_021F62F2: + add r0, r4, #0 + bl MOD05_021F62FC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD05_021F62FC +MOD05_021F62FC: ; 0x021F62FC + ldr r3, _021F6308 ; =0x0201EFE1 + add r1, r0, #0 + ldr r0, [r1, #0x20] + ldr r1, [r1, #0x30] + bx r3 + nop +_021F6308: .word 0x0201EFE1 + + thumb_func_start MOD05_021F630C +MOD05_021F630C: ; 0x021F630C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x1c] + bl _s32_div_f + str r0, [r4, #0x28] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start MOD05_021F6324 +MOD05_021F6324: ; 0x021F6324 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + sub r0, r1, r0 + ldr r1, [r4, #0x1c] + bl _s32_div_f + str r0, [r4, #0x28] + ldr r0, [r4, #0x10] + str r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start MOD05_021F633C +MOD05_021F633C: ; 0x021F633C + ldr r2, [r0, #0x20] + ldr r1, [r0, #0x28] + add r1, r2, r1 + str r1, [r0, #0x20] + ldr r1, [r0, #0x24] + add r2, r1, #1 + str r2, [r0, #0x24] + ldr r1, [r0, #0x1c] + cmp r2, r1 + blo _021F635A + str r1, [r0, #0x24] + ldr r1, [r0, #0x18] + str r1, [r0, #0x20] + mov r0, #1 + bx lr +_021F635A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD05_021F6360 +MOD05_021F6360: ; 0x021F6360 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02046528 + str r0, [sp] + add r0, r7, #0 + bl FUN_0204652C + add r6, r0, #0 + add r0, r7, #0 + bl FUN_02046530 + add r4, r0, #0 + ldr r0, [r4] + ldr r5, [r6, #4] + cmp r0, #5 + bhi _021F6424 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F638E: ; jump table + .short _021F639A - _021F638E - 2 ; case 0 + .short _021F63AC - _021F638E - 2 ; case 1 + .short _021F63CC - _021F638E - 2 ; case 2 + .short _021F63EA - _021F638E - 2 ; case 3 + .short _021F6402 - _021F638E - 2 ; case 4 + .short _021F6414 - _021F638E - 2 ; case 5 +_021F639A: + mov r0, #0xb + mov r1, #8 + bl FUN_020169D8 + str r0, [r6, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F63AC: + bl MOD05_021F57EC + add r6, r0, #0 + mov r0, #0xb + add r1, r6, #0 + bl FUN_020169D8 + str r0, [r5, #4] + mov r1, #0 + add r2, r6, #0 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F63CC: + ldr r0, [sp] + ldr r0, [r0, #0x38] + bl FUN_020553E8 + add r3, r0, #0 + ldr r0, [sp] + ldr r2, [r6] + mov r1, #0 + bl FUN_0224666C + str r0, [r5] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F63EA: + ldr r0, [r5] + bl FUN_022466A0 + cmp r0, #0 + beq _021F6424 + ldr r0, [r5] + bl FUN_022466AC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F6402: + ldr r1, _021F6428 ; =MOD05_021F57F0 + ldr r2, [r5, #4] + add r0, r7, #0 + bl FUN_0204640C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021F6424 +_021F6414: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F6424: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F6428: .word MOD05_021F57F0 + .section .data - ; 0x021F61DC - .incbin "baserom.nds", 0x1640fc, 0x74a4 + ; 0x021F642C + .incbin "baserom.nds", 0x16434c, 0x7254 .section .bss ; 0x021FD680 -- cgit v1.2.3 From e4b89fa4efe67fd291d94b3a9de2f92e47e103ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 15:21:52 -0400 Subject: finish dism of module 06 --- arm9/arm9.lcf | 2 + arm9/global.inc | 256 + arm9/modules/06/asm/module_06.s | 44287 +++++++++++++++++++++++++++++++++++++- arm9/undefined_syms.txt | 77 + 4 files changed, 44568 insertions(+), 54 deletions(-) diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index a76bb2c1..b332a790 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -394,6 +394,8 @@ SECTIONS { arm_04.o (.text) thumb_04.o (.sdata) arm_04.o (.sdata) + thumb_04.o (.rodata) + arm_04.o (.rodata) thumb_04.o (.data) arm_04.o (.data) } > MODULE_04 diff --git a/arm9/global.inc b/arm9/global.inc index f66095bf..db7694f5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4335,3 +4335,259 @@ .extern FUN_02058544 .extern FUN_02061208 .extern FUN_0223BD14 +.extern FUN_02001328 +.extern FUN_020021EC +.extern FUN_020090FC +.extern FUN_020091E0 +.extern FUN_02009298 +.extern FUN_020094F0 +.extern FUN_02009BE8 +.extern FUN_02009C5C +.extern FUN_02009E54 +.extern FUN_0201244C +.extern FUN_02012470 +.extern FUN_02012560 +.extern FUN_02012794 +.extern FUN_02013C28 +.extern FUN_02013C6C +.extern FUN_02016B90 +.extern FUN_0201B988 +.extern FUN_0201B9A0 +.extern FUN_0201E720 +.extern FUN_0201E7CC +.extern FUN_0201EB78 +.extern FUN_0201F7F0 +.extern FUN_0201FDB4 +.extern FUN_02020054 +.extern FUN_02020120 +.extern FUN_02021ACC +.extern FUN_02023948 +.extern FUN_02023BA4 +.extern FUN_02023BE8 +.extern FUN_02023C04 +.extern FUN_02029054 +.extern FUN_02029060 +.extern FUN_0202906C +.extern FUN_02029078 +.extern FUN_02029084 +.extern FUN_02029578 +.extern FUN_0202A1E4 +.extern FUN_0202A36C +.extern FUN_0202A3A0 +.extern FUN_0202A40C +.extern FUN_0202A444 +.extern FUN_0202A474 +.extern FUN_0202A4B8 +.extern FUN_0202A744 +.extern FUN_0202A798 +.extern FUN_0202AA90 +.extern FUN_0202AAB8 +.extern FUN_0202AB4C +.extern FUN_0202AB54 +.extern FUN_0202AB80 +.extern FUN_0202AB8C +.extern FUN_0202ABA0 +.extern FUN_0202B40C +.extern FUN_0202B410 +.extern FUN_0202B414 +.extern FUN_0202B440 +.extern FUN_0202B458 +.extern FUN_0202B534 +.extern FUN_0202B538 +.extern FUN_0202B53C +.extern FUN_0202B540 +.extern FUN_0202B544 +.extern FUN_0202B5C8 +.extern FUN_0202B5CC +.extern FUN_0202B678 +.extern FUN_0202B7C8 +.extern FUN_0202B7F4 +.extern FUN_0202B820 +.extern FUN_0202C12C +.extern FUN_0202DEA4 +.extern FUN_0202DEE0 +.extern FUN_0202DF08 +.extern FUN_0202DF28 +.extern FUN_0202E08C +.extern FUN_0202E810 +.extern FUN_0202E844 +.extern FUN_0202E878 +.extern FUN_0202E88C +.extern FUN_0202E9AC +.extern FUN_0202EE84 +.extern FUN_020314E8 +.extern FUN_0203162C +.extern FUN_02031640 +.extern FUN_02031668 +.extern FUN_02031A24 +.extern FUN_020345FC +.extern FUN_020349AC +.extern FUN_020349B8 +.extern FUN_02034CB4 +.extern FUN_02034CE0 +.extern FUN_0203781C +.extern FUN_020469B8 +.extern FUN_020476CC +.extern FUN_020477EC +.extern FUN_020479FC +.extern FUN_02047A78 +.extern FUN_02047BB0 +.extern FUN_020480AC +.extern FUN_020480E4 +.extern FUN_02049494 +.extern FUN_0204A9F0 +.extern FUN_0204AA5C +.extern FUN_0204AAD4 +.extern FUN_0204B2CC +.extern FUN_0204B2E4 +.extern FUN_0204CAE0 +.extern FUN_0204FEB0 +.extern FUN_0204FEF0 +.extern FUN_0204FF30 +.extern FUN_0204FF4C +.extern FUN_0205464C +.extern FUN_02054798 +.extern FUN_02054890 +.extern FUN_0205489C +.extern FUN_020548A8 +.extern FUN_02054AFC +.extern FUN_02055350 +.extern FUN_02055540 +.extern FUN_0205557C +.extern FUN_020572B8 +.extern FUN_020582F8 +.extern FUN_0205845C +.extern FUN_020584C8 +.extern FUN_02058750 +.extern FUN_020587F4 +.extern FUN_02058890 +.extern FUN_020589CC +.extern FUN_02058A00 +.extern FUN_02058B14 +.extern FUN_02058B1C +.extern FUN_02058B24 +.extern FUN_02058B3C +.extern FUN_02058B80 +.extern FUN_0205DD80 +.extern FUN_0205DFE8 +.extern FUN_0205E080 +.extern FUN_0205E098 +.extern FUN_0205E480 +.extern FUN_0205EB14 +.extern FUN_0205F154 +.extern FUN_0205F164 +.extern FUN_0205F1A4 +.extern FUN_0205F6E8 +.extern FUN_0205FC50 +.extern FUN_02060064 +.extern FUN_020600A0 +.extern FUN_020600DC +.extern FUN_020603B0 +.extern FUN_0206043C +.extern FUN_02060D1C +.extern FUN_02060D48 +.extern FUN_02060FBC +.extern FUN_02061904 +.extern FUN_020646DC +.extern FUN_02066D90 +.extern FUN_02066DD4 +.extern FUN_02066EA4 +.extern FUN_02068758 +.extern FUN_02068A80 +.extern FUN_02068AD8 +.extern FUN_0206A094 +.extern FUN_0206A92C +.extern FUN_0206A964 +.extern FUN_0206A984 +.extern FUN_0206ABC4 +.extern FUN_0206B8CC +.extern FUN_0206B9DC +.extern FUN_0206BB5C +.extern FUN_0206BB74 +.extern FUN_0206BE48 +.extern FUN_0206E640 +.extern FUN_0206E790 +.extern FUN_02079AAC +.extern FUN_02085FD0 +.extern FUN_0208603C +.extern FUN_02086060 +.extern FUN_02089368 +.extern FUN_02089394 +.extern FUN_020BC02C +.extern FUN_021D80E4 +.extern FUN_021D9320 +.extern FUN_021D94B4 +.extern FUN_021D9510 +.extern FUN_021DA03C +.extern FUN_021DA080 +.extern FUN_021DA0DC +.extern FUN_021DA0E0 +.extern FUN_021DA0E8 +.extern FUN_021DA118 +.extern FUN_021DA138 +.extern FUN_021DA1A0 +.extern FUN_021DA1A4 +.extern FUN_021DA1A8 +.extern FUN_021DA20C +.extern FUN_021DA4BC +.extern FUN_021DB44C +.extern FUN_021DB4B0 +.extern FUN_021DB52C +.extern FUN_021DB53C +.extern FUN_021DBA40 +.extern FUN_021DBA78 +.extern FUN_021DBAA0 +.extern FUN_021E4BE8 +.extern FUN_021E4C00 +.extern FUN_021E4C08 +.extern FUN_021E4C20 +.extern FUN_021E4C24 +.extern FUN_021E4C6C +.extern FUN_021E4DC4 +.extern FUN_021E4E90 +.extern FUN_021E4EE4 +.extern FUN_021E4EFC +.extern FUN_021E506C +.extern FUN_021E5078 +.extern FUN_021E5094 +.extern FUN_021E50A0 +.extern FUN_021E50AC +.extern FUN_021E50C8 +.extern FUN_021E50D4 +.extern FUN_021E5114 +.extern FUN_021E5198 +.extern FUN_021E51EC +.extern FUN_021E5224 +.extern FUN_021E5260 +.extern FUN_021E5294 +.extern FUN_021E7C80 +.extern FUN_021E7E9C +.extern FUN_021E7EC0 +.extern FUN_021E7ECC +.extern FUN_021E7EEC +.extern FUN_021E8698 +.extern FUN_021F0514 +.extern FUN_021F1C1C +.extern FUN_021F1C30 +.extern FUN_021F1E64 +.extern FUN_021F220C +.extern FUN_021F51D0 +.extern FUN_021F522C +.extern FUN_021F5268 +.extern FUN_021F52C8 +.extern FUN_021F531C +.extern FUN_021F5348 +.extern FUN_021F5358 +.extern FUN_021F5384 +.extern FUN_021F53BC +.extern FUN_021F53F8 +.extern FUN_021F5400 +.extern FUN_021F5424 +.extern FUN_021F5430 +.extern FUN_021F54CC +.extern FUN_021F54D0 +.extern FUN_021F54D8 +.extern FUN_021F61F4 +.extern FUN_021F6234 +.extern FUN_021F6240 +.extern FUN_021F6254 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index cccb02ee..ac7d6b48 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -11,7 +11,7 @@ MOD06_022396A0: ; 0x022396A0 add r4, r2, #0 add r6, r3, #0 str r1, [r5] - bl FUN_0223972C + bl MOD06_0223972C mov r0, #0 str r0, [r5, #0x38] str r4, [r5, #0x30] @@ -19,8 +19,8 @@ MOD06_022396A0: ; 0x022396A0 pop {r4, r5, r6, pc} .align 2, 0 - thumb_func_start FUN_022396BC -FUN_022396BC: ; 0x022396BC + thumb_func_start MOD06_022396BC +MOD06_022396BC: ; 0x022396BC push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0x38] @@ -40,7 +40,7 @@ _022396D2: ; jump table .short _02239708 - _022396D2 - 2 ; case 4 .short _02239712 - _022396D2 - 2 ; case 5 _022396DE: - bl FUN_022397F4 + bl MOD06_022397F4 ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] @@ -48,28 +48,28 @@ _022396DE: _022396EA: ldr r0, [r4, #0x30] ldr r1, [r4, #0x34] - bl FUN_0223987C + bl MOD06_0223987C str r0, [r4, #0x2c] ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] pop {r4, pc} _022396FC: - bl FUN_022398A8 + bl MOD06_022398A8 ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] pop {r4, pc} _02239708: - bl FUN_02239808 + bl MOD06_02239808 ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] _02239712: pop {r4, pc} - thumb_func_start FUN_02239714 -FUN_02239714: ; 0x02239714 + thumb_func_start MOD06_02239714 +MOD06_02239714: ; 0x02239714 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x38] @@ -81,13 +81,13 @@ _02239722: str r0, [r4, #0x38] pop {r4, pc} - thumb_func_start FUN_02239728 -FUN_02239728: ; 0x02239728 + thumb_func_start MOD06_02239728 +MOD06_02239728: ; 0x02239728 ldr r0, [r0, #0x38] bx lr - thumb_func_start FUN_0223972C -FUN_0223972C: ; 0x0223972C + thumb_func_start MOD06_0223972C +MOD06_0223972C: ; 0x0223972C push {r4, lr} add r4, r0, #0 bl GX_GetBankForBGExtPltt_2 @@ -113,8 +113,8 @@ FUN_0223972C: ; 0x0223972C pop {r4, pc} .align 2, 0 - thumb_func_start FUN_02239770 -FUN_02239770: ; 0x02239770 + thumb_func_start MOD06_02239770 +MOD06_02239770: ; 0x02239770 push {r4, lr} sub sp, #0x28 ldr r4, _0223978C ; =0x0224F1F4 @@ -132,8 +132,8 @@ _0223977A: .align 2, 0 _0223978C: .word 0x0224F1F4 - thumb_func_start FUN_02239790 -FUN_02239790: ; 0x02239790 + thumb_func_start MOD06_02239790 +MOD06_02239790: ; 0x02239790 push {r4, r5, lr} sub sp, #0x2c ldr r5, _022397EC ; =0x0224F180 @@ -178,49 +178,49 @@ FUN_02239790: ; 0x02239790 _022397EC: .word 0x0224F180 _022397F0: .word 0x0224F1D8 - thumb_func_start FUN_022397F4 -FUN_022397F4: ; 0x022397F4 - ldr r3, _02239800 ; =FUN_0200CA98 + thumb_func_start MOD06_022397F4 +MOD06_022397F4: ; 0x022397F4 + ldr r3, _02239800 ; =0x0200CA99 mov r2, #1 add r1, r0, #0 - ldr r0, _02239804 ; =FUN_0223981C + ldr r0, _02239804 ; =MOD06_0223981C lsl r2, r2, #0xa bx r3 .align 2, 0 -_02239800: .word FUN_0200CA98 -_02239804: .word FUN_0223981C +_02239800: .word 0x0200CA99 +_02239804: .word MOD06_0223981C - thumb_func_start FUN_02239808 -FUN_02239808: ; 0x02239808 - ldr r3, _02239814 ; =FUN_0200CA98 + thumb_func_start MOD06_02239808 +MOD06_02239808: ; 0x02239808 + ldr r3, _02239814 ; =0x0200CA99 mov r2, #1 add r1, r0, #0 - ldr r0, _02239818 ; =FUN_02239840 + ldr r0, _02239818 ; =MOD06_02239840 lsl r2, r2, #0xa bx r3 .align 2, 0 -_02239814: .word FUN_0200CA98 -_02239818: .word FUN_02239840 +_02239814: .word 0x0200CA99 +_02239818: .word MOD06_02239840 - thumb_func_start FUN_0223981C -FUN_0223981C: ; 0x0223981C + thumb_func_start MOD06_0223981C +MOD06_0223981C: ; 0x0223981C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 - bl FUN_02239770 + bl MOD06_02239770 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02239864 + bl MOD06_02239864 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02239790 + bl MOD06_02239790 add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} .align 2, 0 - thumb_func_start FUN_02239840 -FUN_02239840: ; 0x02239840 + thumb_func_start MOD06_02239840 +MOD06_02239840: ; 0x02239840 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 @@ -228,23 +228,23 @@ FUN_02239840: ; 0x02239840 bl FUN_0201E66C ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02239864 + bl MOD06_02239864 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_0223986C + bl MOD06_0223986C add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} - thumb_func_start FUN_02239864 -FUN_02239864: ; 0x02239864 - ldr r3, _02239868 ; =FUN_021D7A28 + thumb_func_start MOD06_02239864 +MOD06_02239864: ; 0x02239864 + ldr r3, _02239868 ; =0x021D7A29 bx r3 .align 2, 0 -_02239868: .word FUN_021D7A28 + 1 ; TODO: disassemble the module that defines this +_02239868: .word 0x021D7A29 - thumb_func_start FUN_0223986C -FUN_0223986C: ; 0x0223986C + thumb_func_start MOD06_0223986C +MOD06_0223986C: ; 0x0223986C push {r3, lr} bl FUN_021D7A20 mov r0, #1 @@ -252,8 +252,8 @@ FUN_0223986C: ; 0x0223986C bl FUN_0201E6E4 pop {r3, pc} - thumb_func_start FUN_0223987C -FUN_0223987C: ; 0x0223987C + thumb_func_start MOD06_0223987C +MOD06_0223987C: ; 0x0223987C push {r3, r4, r5, r6, lr} sub sp, #0x2c ldr r6, _022398A4 ; =0x0224F21C @@ -277,21 +277,44200 @@ _0223988A: .align 2, 0 _022398A4: .word 0x0224F21C - thumb_func_start FUN_022398A8 -FUN_022398A8: ; 0x022398A8 - ldr r3, _022398B4 ; =FUN_0200CA98 + thumb_func_start MOD06_022398A8 +MOD06_022398A8: ; 0x022398A8 + ldr r3, _022398B4 ; =0x0200CA99 mov r2, #1 add r1, r0, #0 - ldr r0, _022398B8 ; =0x022398BD + ldr r0, _022398B8 ; =MOD06_022398BC lsl r2, r2, #0xa bx r3 .align 2, 0 -_022398B4: .word FUN_0200CA98 -_022398B8: .word 0x022398BD +_022398B4: .word 0x0200CA99 +_022398B8: .word MOD06_022398BC + + thumb_func_start MOD06_022398BC +MOD06_022398BC: ; 0x022398BC + push {r4, lr} + add r1, #0x2c + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + mov r2, #0 + add r3, r1, #0 + bl FUN_021E8698 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022398D8 +MOD06_022398D8: ; 0x022398D8 + push {r4, lr} + ldr r0, [r0, #0x34] + add r4, r2, #0 + bl FUN_02058060 + cmp r4, #1 + bne _022398F0 + mov r1, #1 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r4, pc} +_022398F0: + mov r1, #1 + lsl r1, r1, #0x14 + bl FUN_02058418 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022398FC +MOD06_022398FC: ; 0x022398FC + push {r4, lr} + add r4, r0, #0 + bl FUN_02046528 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02239918 + cmp r0, #1 + beq _02239930 + b _02239940 +_02239918: + ldr r0, [r4] + bl MOD06_0223A4E0 + ldr r0, [r4] + bl MOD06_0223A5B0 + cmp r0, #1 + bne _02239940 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239940 +_02239930: + ldr r0, [r4] + bl MOD06_0223A44C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_02239940: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02239944 +MOD06_02239944: ; 0x02239944 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r2, r5, #0 + mov r1, #0x10 + mov r0, #0 +_02239960: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02239960 + mov r0, #4 + bl MOD06_0223A428 + str r0, [r5] + mov r1, #0x10 + str r1, [sp] + ldr r0, [r4, #0x20] + lsl r1, r1, #9 + str r0, [sp, #4] + ldr r0, [r5] + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r1, _02239994 ; =MOD06_022398FC + add r0, r6, #0 + add r2, r5, #0 + bl FUN_0204640C + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02239994: .word MOD06_022398FC + + thumb_func_start MOD06_02239998 +MOD06_02239998: ; 0x02239998 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + bl MOD06_0223A63C + add r4, r0, #0 + ldr r0, [r5] + bl MOD06_0223A638 + ldr r1, [r5, #8] + cmp r1, r0 + beq _022399C4 + mov r1, #2 + str r0, [r5, #8] + add r0, r4, #0 + lsl r1, r1, #0xe + bl FX_Div + sub r1, r4, r0 + ldr r0, [r5] + bl MOD06_0223A640 +_022399C4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022399C8 +MOD06_022399C8: ; 0x022399C8 + push {r4, lr} + add r4, r0, #0 + bl FUN_02046528 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #7 + bhi _02239AA4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022399EA: ; jump table + .short _022399FA - _022399EA - 2 ; case 0 + .short _02239A0A - _022399EA - 2 ; case 1 + .short _02239A1E - _022399EA - 2 ; case 2 + .short _02239A36 - _022399EA - 2 ; case 3 + .short _02239A60 - _022399EA - 2 ; case 4 + .short _02239A72 - _022399EA - 2 ; case 5 + .short _02239A84 - _022399EA - 2 ; case 6 + .short _02239A94 - _022399EA - 2 ; case 7 +_022399FA: + mov r0, #0 + mov r1, #1 + bl FUN_020053CC + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A0A: + bl FUN_02005404 + cmp r0, #0 + bne _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x10 + str r0, [r4, #4] + b _02239AA4 +_02239A1E: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, _02239AA8 ; =0x0000065C + bl FUN_020054C8 + b _02239AA4 +_02239A36: + ldr r0, [r4] + bl MOD06_0223A4E0 + add r0, r4, #0 + bl MOD06_02239998 + ldr r0, [r4] + bl MOD06_0223A5B0 + cmp r0, #1 + bne _02239AA4 + ldr r0, _02239AA8 ; =0x0000065C + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x10 + str r0, [r4, #4] + b _02239AA4 +_02239A60: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A72: + mov r0, #0x7f + mov r1, #0x10 + mov r2, #0 + bl FUN_0200538C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A84: + bl FUN_02005404 + cmp r0, #0 + bne _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A94: + ldr r0, [r4] + bl MOD06_0223A44C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_02239AA4: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02239AA8: .word 0x0000065C + + thumb_func_start MOD06_02239AAC +MOD06_02239AAC: ; 0x02239AAC + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r2, r5, #0 + mov r1, #0x10 + mov r0, #0 +_02239AC8: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02239AC8 + mov r0, #4 + bl MOD06_0223A428 + str r0, [r5] + mov r0, #0x18 + str r0, [sp] + ldr r0, [r4, #0x20] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [r5] + lsl r1, r1, #0xe + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r5] + bl MOD06_0223A638 + str r0, [r5, #8] + ldr r1, _02239B04 ; =MOD06_022399C8 + add r0, r6, #0 + add r2, r5, #0 + bl FUN_0204640C + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02239B04: .word MOD06_022399C8 + + thumb_func_start MOD06_02239B08 +MOD06_02239B08: ; 0x02239B08 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x74 + bl Call_FillMemWithValue + mov r0, #4 + add r1, r5, #0 + bl MOD06_0223AC78 + str r0, [r4, #0x44] + mov r0, #4 + bl MOD06_0223A428 + str r0, [r4, #0x48] + mov r0, #4 + bl MOD06_0223A644 + str r0, [r4, #0x4c] + mov r0, #0 + str r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02239B38 +MOD06_02239B38: ; 0x02239B38 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x44] + bl MOD06_0223ACC0 + ldr r0, [r4, #0x50] + bl MOD06_0223B8C0 + ldr r0, [r4, #0x48] + bl MOD06_0223A44C + ldr r0, [r4, #0x4c] + bl MOD06_0223A660 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02239B58 +MOD06_02239B58: ; 0x02239B58 + push {r4, r5, r6, lr} + add r4, r2, #0 + ldr r0, [r4] + add r5, r1, #0 + cmp r0, #0xb + bhi _02239BB0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239B70: ; jump table + .short _02239B88 - _02239B70 - 2 ; case 0 + .short _02239B9C - _02239B70 - 2 ; case 1 + .short _02239BBA - _02239B70 - 2 ; case 2 + .short _02239BCE - _02239B70 - 2 ; case 3 + .short _02239BEC - _02239B70 - 2 ; case 4 + .short _02239C16 - _02239B70 - 2 ; case 5 + .short _02239C46 - _02239B70 - 2 ; case 6 + .short _02239C56 - _02239B70 - 2 ; case 7 + .short _02239C72 - _02239B70 - 2 ; case 8 + .short _02239C86 - _02239B70 - 2 ; case 9 + .short _02239CA0 - _02239B70 - 2 ; case 10 + .short _02239CBA - _02239B70 - 2 ; case 11 +_02239B88: + add r0, r4, #0 + mov r2, #8 + add r0, #8 + add r3, r2, #0 + bl MOD06_022396A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239B9C: + add r0, r4, #0 + add r0, #8 + bl MOD06_022396BC + add r0, r4, #0 + add r0, #8 + bl MOD06_02239728 + cmp r0, #2 + beq _02239BB2 +_02239BB0: + b _02239CBA +_02239BB2: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239BBA: + ldr r0, [r4, #0x44] + mov r1, #5 + bl MOD06_0223ACD8 + mov r0, #0xf0 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239BCE: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239CBA + add r0, r4, #0 + ldr r1, [r4, #0x48] + ldr r2, [r4, #0x4c] + ldr r3, [r5, #0x20] + add r0, #0x54 + bl MOD06_02239D18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239BEC: + add r0, r4, #0 + add r0, #0x54 + bl MOD06_02239D2C + add r5, r0, #0 + ldr r0, [r4, #0x44] + bl MOD06_0223AD10 + cmp r5, #1 + bne _02239CBA + cmp r0, #1 + bne _02239CBA + add r0, r4, #0 + ldr r1, [r4, #0x4c] + add r0, #0x68 + bl MOD06_02239E60 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C16: + add r0, r4, #0 + add r0, #0x68 + bl MOD06_02239E6C + add r6, r0, #0 + ldr r0, [r4, #0x68] + cmp r0, #3 + bne _02239C3A + ldr r0, [r4, #0x70] + bl MOD06_0223A748 + cmp r0, #0xd + bne _02239C3A + mov r0, #4 + add r1, r5, #0 + bl MOD06_0223B828 + str r0, [r4, #0x50] +_02239C3A: + cmp r6, #1 + bne _02239CBA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C46: + add r0, r4, #0 + add r0, #8 + bl MOD06_02239714 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C56: + add r0, r4, #0 + add r0, #8 + bl MOD06_022396BC + add r0, r4, #0 + add r0, #8 + bl MOD06_02239728 + cmp r0, #5 + bne _02239CBA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C72: + ldr r0, [r4, #0x50] + mov r1, #5 + bl MOD06_0223B8EC + mov r0, #0x48 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C86: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _02239CA0 + add r0, r5, #0 + mov r1, #5 + mov r2, #1 + bl MOD06_022398D8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02239CA0: + ldr r0, [r4, #0x50] + bl MOD06_0223B924 + cmp r0, #1 + bne _02239CBA + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl MOD06_022398D8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02239CBA: + ldr r0, [r4, #0x44] + bl MOD06_0223AD24 + ldr r0, [r4, #0x48] + bl MOD06_0223A4E0 + ldr r0, [r4, #0x4c] + bl MOD06_0223A6DC + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02239CD0 +MOD06_02239CD0: ; 0x02239CD0 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x44] + bl MOD06_0223AD9C + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _02239CE4 + bl MOD06_0223B93C +_02239CE4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02239CE8 +MOD06_02239CE8: ; 0x02239CE8 + ldr r0, [r0, #4] + ldr r3, _02239CF4 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _02239CF8 ; =0x0224F1C0 + bx r3 + nop +_02239CF4: .word 0x021D8025 +_02239CF8: .word 0x0224F1C0 + + thumb_func_start MOD06_02239CFC +MOD06_02239CFC: ; 0x02239CFC + ldr r3, _02239D00 ; =0x021D80A5 + bx r3 + .align 2, 0 +_02239D00: .word 0x021D80A5 + + thumb_func_start MOD06_02239D04 +MOD06_02239D04: ; 0x02239D04 + push {r3, lr} + bl FUN_021D80E4 + ldr r0, [r0] + cmp r0, #0xb + bne _02239D14 + mov r0, #1 + pop {r3, pc} +_02239D14: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02239D18 +MOD06_02239D18: ; 0x02239D18 + push {r3, r4} + mov r4, #0 + str r4, [r0] + str r4, [r0, #4] + str r1, [r0, #8] + str r2, [r0, #0xc] + str r3, [r0, #0x10] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_02239D2C +MOD06_02239D2C: ; 0x02239D2C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bls _02239D3A + b _02239E58 +_02239D3A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239D46: ; jump table + .short _02239D56 - _02239D46 - 2 ; case 0 + .short _02239D62 - _02239D46 - 2 ; case 1 + .short _02239D82 - _02239D46 - 2 ; case 2 + .short _02239DB6 - _02239D46 - 2 ; case 3 + .short _02239DD6 - _02239D46 - 2 ; case 4 + .short _02239E00 - _02239D46 - 2 ; case 5 + .short _02239E20 - _02239D46 - 2 ; case 6 + .short _02239E52 - _02239D46 - 2 ; case 7 +_02239D56: + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239E58 +_02239D62: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x10 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x50 + str r0, [r4, #4] + b _02239E58 +_02239D82: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x18 + bl MOD06_0223A67C + mov r1, #8 + str r1, [sp] + ldr r0, [r4, #0x10] + lsl r1, r1, #0xa + str r0, [sp, #4] + ldr r0, [r4, #8] + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x20 + str r0, [r4, #4] + b _02239E58 +_02239DB6: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x1b + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x3c + str r0, [r4, #4] + b _02239E58 +_02239DD6: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + mov r0, #0xa + str r0, [sp] + ldr r0, [r4, #0x10] + mov r1, #3 + str r0, [sp, #4] + ldr r0, [r4, #8] + lsl r1, r1, #0xc + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x3c + str r0, [r4, #4] + b _02239E58 +_02239E00: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #8 + mov r3, #0x20 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x28 + str r0, [r4, #4] + b _02239E58 +_02239E20: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x10 + bl MOD06_0223A67C + mov r0, #0xc + str r0, [sp] + ldr r0, [r4, #0x10] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [r4, #8] + lsl r1, r1, #0xe + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239E58 +_02239E52: + add sp, #8 + mov r0, #1 + pop {r4, pc} +_02239E58: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02239E60 +MOD06_02239E60: ; 0x02239E60 + mov r2, #0 + str r2, [r0] + mov r2, #0x20 + str r2, [r0, #4] + str r1, [r0, #8] + bx lr + + thumb_func_start MOD06_02239E6C +MOD06_02239E6C: ; 0x02239E6C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _02239F00 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239E82: ; jump table + .short _02239E8C - _02239E82 - 2 ; case 0 + .short _02239E9C - _02239E82 - 2 ; case 1 + .short _02239EB4 - _02239E82 - 2 ; case 2 + .short _02239ED4 - _02239E82 - 2 ; case 3 + .short _02239EF4 - _02239E82 - 2 ; case 4 +_02239E8C: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239F00 +_02239E9C: + ldr r0, [r4, #8] + mov r1, #0xd + mov r2, #4 + mov r3, #8 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x10 + str r0, [r4, #4] + b _02239F00 +_02239EB4: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + ldr r0, [r4, #8] + mov r1, #0xd + mov r2, #4 + mov r3, #8 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x10 + str r0, [r4, #4] + b _02239F00 +_02239ED4: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + ldr r0, [r4, #8] + mov r1, #0xd + mov r2, #4 + mov r3, #0x20 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x28 + str r0, [r4, #4] + b _02239F00 +_02239EF4: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + mov r0, #1 + pop {r4, pc} +_02239F00: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02239F04 +MOD06_02239F04: ; 0x02239F04 + push {r4, r5, r6, lr} + ldr r0, [r1, #0x34] + mov r1, #5 + add r4, r2, #0 + bl FUN_02058060 + add r5, r0, #0 + bne _02239F18 + bl ErrorHandling +_02239F18: + add r0, r5, #0 + bl FUN_02058B2C + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0 + bl FUN_02058B4C + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + mov r0, #4 + bl MOD06_0223B2F8 + add r1, r6, #0 + mov r2, #0 + add r3, r5, #0 + str r0, [r4] + bl MOD06_0223B30C + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02239F40 +MOD06_02239F40: ; 0x02239F40 + ldr r3, _02239F48 ; =MOD06_0223B304 + ldr r0, [r2] + bx r3 + nop +_02239F48: .word MOD06_0223B304 + + thumb_func_start MOD06_02239F4C +MOD06_02239F4C: ; 0x02239F4C + ldr r3, _02239F54 ; =MOD06_0223B338 + ldr r0, [r2] + bx r3 + nop +_02239F54: .word MOD06_0223B338 + + thumb_func_start MOD06_02239F58 +MOD06_02239F58: ; 0x02239F58 + ldr r3, _02239F60 ; =MOD06_0223B340 + ldr r0, [r2] + bx r3 + nop +_02239F60: .word MOD06_0223B340 + + thumb_func_start MOD06_02239F64 +MOD06_02239F64: ; 0x02239F64 + ldr r0, [r0, #4] + ldr r3, _02239F70 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _02239F74 ; =0x0224F190 + bx r3 + nop +_02239F70: .word 0x021D8025 +_02239F74: .word 0x0224F190 + + thumb_func_start MOD06_02239F78 +MOD06_02239F78: ; 0x02239F78 + ldr r3, _02239F7C ; =0x021D80A5 + bx r3 + .align 2, 0 +_02239F7C: .word 0x021D80A5 + + thumb_func_start MOD06_02239F80 +MOD06_02239F80: ; 0x02239F80 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r0, _0223A008 ; =0x00001701 + ldr r1, [r5, #0x20] + add r4, r2, #0 + bl FUN_0201EEF0 + ldr r0, _0223A00C ; =0x000C8A55 + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldr r0, _0223A010 ; =0x002280EF + str r0, [sp, #8] + ldr r0, _0223A014 ; =0x000CA424 + str r0, [sp, #0xc] + ldr r0, _0223A018 ; =0x00268C50 + str r0, [sp, #0x10] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F04C + ldr r1, _0223A01C ; =0x000022A2 + add r0, sp, #0 + strh r1, [r0] + mov r1, #0x3e + lsl r1, r1, #0xa + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #2 + mov r1, #0x7d + ldr r2, [r5, #0x20] + lsl r0, r0, #0xc + lsl r1, r1, #0x10 + bl FUN_0201EC94 + mov r0, #4 + bl MOD06_0223B574 + str r0, [r4, #4] + mov r0, #4 + bl MOD06_0223B648 + str r0, [r4, #8] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F02C + ldr r0, [r4, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B598 + ldr r0, [r4, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B66C + add sp, #0x14 + pop {r4, r5, pc} + nop +_0223A008: .word 0x00001701 +_0223A00C: .word 0x000C8A55 +_0223A010: .word 0x002280EF +_0223A014: .word 0x000CA424 +_0223A018: .word 0x00268C50 +_0223A01C: .word 0x000022A2 + + thumb_func_start MOD06_0223A020 +MOD06_0223A020: ; 0x0223A020 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r0, _0223A0B8 ; =0x00000F81 + ldr r1, [r5, #0x20] + add r4, r2, #0 + bl FUN_0201EEF0 + ldr r0, _0223A0BC ; =0x0017E532 + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldr r0, _0223A0C0 ; =0x00F99D58 + str r0, [sp, #8] + ldr r0, _0223A0C4 ; =0x000C5502 + str r0, [sp, #0xc] + ldr r0, _0223A0C8 ; =0x028CF549 + str r0, [sp, #0x10] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F04C + ldr r1, _0223A0CC ; =0x00000642 + add r0, sp, #0 + strh r1, [r0] + ldr r1, _0223A0D0 ; =0x0000EDA0 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #0x16 + mov r1, #0x7d + ldr r2, [r5, #0x20] + lsl r0, r0, #0xe + lsl r1, r1, #0x10 + bl FUN_0201EC94 + add r0, r5, #0 + add r0, #0x48 + bl FUN_021DB4B0 + ldr r0, [r5, #0x40] + mov r1, #2 + bl FUN_021DB44C + str r0, [r5, #0x48] + mov r0, #4 + bl MOD06_0223B574 + str r0, [r4, #4] + mov r0, #4 + bl MOD06_0223B648 + str r0, [r4, #8] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F02C + ldr r0, [r4, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B5D0 + ldr r0, [r4, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B6A4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0223A0B8: .word 0x00000F81 +_0223A0BC: .word 0x0017E532 +_0223A0C0: .word 0x00F99D58 +_0223A0C4: .word 0x000C5502 +_0223A0C8: .word 0x028CF549 +_0223A0CC: .word 0x00000642 +_0223A0D0: .word 0x0000EDA0 + + thumb_func_start MOD06_0223A0D4 +MOD06_0223A0D4: ; 0x0223A0D4 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r0, _0223A16C ; =0x000004C1 + ldr r1, [r5, #0x20] + add r4, r2, #0 + bl FUN_0201EEF0 + ldr r0, _0223A170 ; =0x0026BEC1 + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldr r0, _0223A174 ; =0x01DF5DFD + str r0, [sp, #8] + ldr r0, _0223A178 ; =0x00073A0C + str r0, [sp, #0xc] + ldr r0, _0223A17C ; =0x02B9F4A2 + str r0, [sp, #0x10] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F04C + ldr r1, _0223A180 ; =0x000004C2 + add r0, sp, #0 + strh r1, [r0] + mov r1, #0x29 + lsl r1, r1, #6 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #0xb + ldr r1, _0223A184 ; =0x005C8000 + ldr r2, [r5, #0x20] + lsl r0, r0, #0x10 + bl FUN_0201EC94 + add r0, r5, #0 + add r0, #0x48 + bl FUN_021DB4B0 + ldr r0, [r5, #0x40] + mov r1, #2 + bl FUN_021DB44C + str r0, [r5, #0x48] + mov r0, #4 + bl MOD06_0223B574 + str r0, [r4, #4] + mov r0, #4 + bl MOD06_0223B648 + str r0, [r4, #8] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F02C + ldr r0, [r4, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B60C + ldr r0, [r4, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B6E0 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0223A16C: .word 0x000004C1 +_0223A170: .word 0x0026BEC1 +_0223A174: .word 0x01DF5DFD +_0223A178: .word 0x00073A0C +_0223A17C: .word 0x02B9F4A2 +_0223A180: .word 0x000004C2 +_0223A184: .word 0x005C8000 + + thumb_func_start MOD06_0223A188 +MOD06_0223A188: ; 0x0223A188 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #4] + bl MOD06_0223B580 + ldr r0, [r4, #8] + bl MOD06_0223B654 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A19C +MOD06_0223A19C: ; 0x0223A19C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #4] + bl MOD06_0223B588 + ldr r0, [r4, #8] + bl MOD06_0223B65C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A1B0 +MOD06_0223A1B0: ; 0x0223A1B0 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #4] + bl MOD06_0223B590 + ldr r0, [r4, #8] + bl MOD06_0223B664 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A1C4 +MOD06_0223A1C4: ; 0x0223A1C4 + lsl r2, r1, #2 + ldr r1, _0223A1D8 ; =0x0224F174 + ldr r3, _0223A1DC ; =0x021D8025 + ldr r2, [r1, r2] + ldr r1, _0223A1E0 ; =0x02252240 + str r2, [r1, #8] + ldr r0, [r0, #4] + ldr r1, _0223A1E4 ; =0x02252240 + ldr r0, [r0, #4] + bx r3 + .align 2, 0 +_0223A1D8: .word 0x0224F174 +_0223A1DC: .word 0x021D8025 +_0223A1E0: .word 0x02252240 +_0223A1E4: .word 0x02252240 + + thumb_func_start MOD06_0223A1E8 +MOD06_0223A1E8: ; 0x0223A1E8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + add r0, r5, #0 + bl MOD06_0223A75C + str r0, [r4, #8] + mov r0, #4 + add r1, r5, #0 + bl MOD06_0223B71C + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A208 +MOD06_0223A208: ; 0x0223A208 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #8] + bl MOD06_0223A790 + ldr r0, [r4, #0xc] + bl MOD06_0223B73C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A21C +MOD06_0223A21C: ; 0x0223A21C + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4] + cmp r0, #6 + bhi _0223A2CC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223A234: ; jump table + .short _0223A242 - _0223A234 - 2 ; case 0 + .short _0223A26A - _0223A234 - 2 ; case 1 + .short _0223A2CC - _0223A234 - 2 ; case 2 + .short _0223A288 - _0223A234 - 2 ; case 3 + .short _0223A29A - _0223A234 - 2 ; case 4 + .short _0223A2B0 - _0223A234 - 2 ; case 5 + .short _0223A2CC - _0223A234 - 2 ; case 6 +_0223A242: + ldr r1, [r1, #0x20] + add r0, sp, #0 + bl FUN_0201F02C + mov r2, #2 + ldr r3, [sp, #4] + lsl r2, r2, #0xc + add r2, r3, r2 + ldr r0, [r4, #8] + ldr r1, [sp] + ldr r3, [sp, #8] + bl MOD06_0223A7AC + ldr r0, [r4, #0xc] + bl MOD06_0223B744 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A26A: + ldr r0, [r4, #8] + bl MOD06_0223A820 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl MOD06_0223B810 + cmp r5, #2 + bne _0223A2CC + cmp r0, #2 + bne _0223A2CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A288: + ldr r0, [r4, #8] + bl MOD06_0223A7DC + mov r0, #0x40 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A29A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _0223A2CC + ldr r0, [r4, #0xc] + bl MOD06_0223B814 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A2B0: + ldr r0, [r4, #8] + bl MOD06_0223A820 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl MOD06_0223B810 + cmp r5, #5 + bne _0223A2CC + cmp r0, #4 + bne _0223A2CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0223A2CC: + ldr r0, [r4, #8] + bl MOD06_0223A868 + ldr r0, [r4, #0xc] + bl MOD06_0223B768 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0223A2DC +MOD06_0223A2DC: ; 0x0223A2DC + ldr r3, _0223A2E4 ; =MOD06_0223A828 + ldr r0, [r2, #8] + bx r3 + nop +_0223A2E4: .word MOD06_0223A828 + + thumb_func_start MOD06_0223A2E8 +MOD06_0223A2E8: ; 0x0223A2E8 + ldr r0, [r0, #4] + ldr r3, _0223A2F4 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0223A2F8 ; =0x0224F1A8 + bx r3 + nop +_0223A2F4: .word 0x021D8025 +_0223A2F8: .word 0x0224F1A8 + + thumb_func_start MOD06_0223A2FC +MOD06_0223A2FC: ; 0x0223A2FC + ldr r3, _0223A300 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0223A300: .word 0x021D80A5 + + thumb_func_start MOD06_0223A304 +MOD06_0223A304: ; 0x0223A304 + push {r3, lr} + bl FUN_021D80E4 + mov r1, #3 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD06_0223A310 +MOD06_0223A310: ; 0x0223A310 + push {r3, lr} + bl FUN_021D80E4 + ldr r0, [r0] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A31C +MOD06_0223A31C: ; 0x0223A31C + str r1, [r0] + str r1, [r0, #4] + sub r1, r2, r1 + str r1, [r0, #8] + str r3, [r0, #0xc] + bx lr + + thumb_func_start MOD06_0223A328 +MOD06_0223A328: ; 0x0223A328 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r3, [r5, #0xc] + cmp r1, r3 + blt _0223A338 + add r1, r3, #0 + mov r4, #1 + b _0223A33A +_0223A338: + mov r4, #0 +_0223A33A: + ldr r2, [r5, #8] + add r0, r2, #0 + mul r0, r1 + add r1, r3, #0 + bl _s32_div_f + ldr r1, [r5, #4] + add r0, r0, r1 + str r0, [r5] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A350 +MOD06_0223A350: ; 0x0223A350 + str r1, [r0] + str r1, [r0, #4] + sub r1, r2, r1 + str r1, [r0, #8] + str r3, [r0, #0xc] + bx lr + + thumb_func_start MOD06_0223A35C +MOD06_0223A35C: ; 0x0223A35C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r4, [r5, #0xc] + add r2, r1, #0 + cmp r2, r4 + blt _0223A36E + add r2, r4, #0 + mov r6, #1 + b _0223A370 +_0223A36E: + mov r6, #0 +_0223A370: + ldr r0, [r5, #8] + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + lsl r1, r4, #0xc + bl FX_Div + ldr r1, [r5, #4] + add r0, r0, r1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223A39C +MOD06_0223A39C: ; 0x0223A39C + push {r3, lr} + bl FUN_021F5268 + pop {r3, pc} + + thumb_func_start MOD06_0223A3A4 +MOD06_0223A3A4: ; 0x0223A3A4 + ldr r3, _0223A3A8 ; =0x021F52C9 + bx r3 + .align 2, 0 +_0223A3A8: .word 0x021F52C9 + + thumb_func_start MOD06_0223A3AC +MOD06_0223A3AC: ; 0x0223A3AC + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl FUN_021F531C + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0223A3C0 +MOD06_0223A3C0: ; 0x0223A3C0 + ldr r3, _0223A3C4 ; =0x021F5359 + bx r3 + .align 2, 0 +_0223A3C4: .word 0x021F5359 + + thumb_func_start MOD06_0223A3C8 +MOD06_0223A3C8: ; 0x0223A3C8 + ldr r3, _0223A3D0 ; =0x021F5385 + mov r1, #1 + lsl r1, r1, #0xc + bx r3 + .align 2, 0 +_0223A3D0: .word 0x021F5385 + + thumb_func_start MOD06_0223A3D4 +MOD06_0223A3D4: ; 0x0223A3D4 + ldr r3, _0223A3D8 ; =0x021F5385 + bx r3 + .align 2, 0 +_0223A3D8: .word 0x021F5385 + + thumb_func_start MOD06_0223A3DC +MOD06_0223A3DC: ; 0x0223A3DC + ldr r3, _0223A3E4 ; =0x021F53BD + mov r1, #1 + lsl r1, r1, #0xc + bx r3 + .align 2, 0 +_0223A3E4: .word 0x021F53BD + + thumb_func_start MOD06_0223A3E8 +MOD06_0223A3E8: ; 0x0223A3E8 + ldr r3, _0223A3EC ; =0x021F53F9 + bx r3 + .align 2, 0 +_0223A3EC: .word 0x021F53F9 + + thumb_func_start MOD06_0223A3F0 +MOD06_0223A3F0: ; 0x0223A3F0 + ldr r3, _0223A3F4 ; =0x021F5401 + bx r3 + .align 2, 0 +_0223A3F4: .word 0x021F5401 + + thumb_func_start MOD06_0223A3F8 +MOD06_0223A3F8: ; 0x0223A3F8 + ldr r3, _0223A3FC ; =0x021F5425 + bx r3 + .align 2, 0 +_0223A3FC: .word 0x021F5425 + + thumb_func_start MOD06_0223A400 +MOD06_0223A400: ; 0x0223A400 + ldr r3, _0223A404 ; =0x021F5431 + bx r3 + .align 2, 0 +_0223A404: .word 0x021F5431 + + thumb_func_start MOD06_0223A408 +MOD06_0223A408: ; 0x0223A408 + ldr r3, _0223A40C ; =0x021F54CD + bx r3 + .align 2, 0 +_0223A40C: .word 0x021F54CD + + thumb_func_start MOD06_0223A410 +MOD06_0223A410: ; 0x0223A410 + push {r3, lr} + bl FUN_021F54D0 + pop {r3, pc} + + thumb_func_start MOD06_0223A418 +MOD06_0223A418: ; 0x0223A418 + push {r3, lr} + bl FUN_021F54D8 + pop {r3, pc} + + thumb_func_start MOD06_0223A420 +MOD06_0223A420: ; 0x0223A420 + ldr r3, _0223A424 ; =0x021F54E1 + bx r3 + .align 2, 0 +_0223A424: .word 0x021F54E1 + + thumb_func_start MOD06_0223A428 +MOD06_0223A428: ; 0x0223A428 + push {r3, r4, r5, lr} + mov r1, #0x4c + add r5, r0, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x4c + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_0201EB64 + str r0, [r4] + mov r0, #5 + str r0, [r4, #0x40] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A44C +MOD06_0223A44C: ; 0x0223A44C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201EB70 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A460 +MOD06_0223A460: ; 0x0223A460 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + add r4, r3, #0 + bl MOD06_0223A5C0 + ldr r0, [sp, #0x2c] + ldr r1, [r5] + bl FUN_0201EB78 + ldr r1, [sp, #0x2c] + add r0, sp, #4 + bl FUN_0201F02C + add r3, sp, #4 + add r2, r5, #0 + add r2, #0x28 + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r6, #0 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x34 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r5] + add r0, r6, #0 + bl FUN_0201EC68 + ldr r0, [r5] + bl FUN_0201EB8C + ldr r0, [sp, #0x2c] + mov r1, #0 + str r0, [r5, #4] + add r0, r5, #0 + add r0, #8 + add r2, r7, #0 + add r3, r4, #0 + bl MOD06_0223A350 + add r0, r5, #0 + ldr r2, [sp] + add r0, #0x18 + mov r1, #0 + add r3, r4, #0 + bl MOD06_0223A350 + ldr r0, [sp, #0x28] + str r0, [r5, #0x48] + ldr r0, _0223A4DC ; =0x000006D5 + bl FUN_020054C8 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A4DC: .word 0x000006D5 + + thumb_func_start MOD06_0223A4E0 +MOD06_0223A4E0: ; 0x0223A4E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4, #0x40] + cmp r1, #5 + bhi _0223A5AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A4F6: ; jump table + .short _0223A502 - _0223A4F6 - 2 ; case 0 + .short _0223A524 - _0223A4F6 - 2 ; case 1 + .short _0223A546 - _0223A4F6 - 2 ; case 2 + .short _0223A56C - _0223A4F6 - 2 ; case 3 + .short _0223A5A0 - _0223A4F6 - 2 ; case 4 + .short _0223A5AC - _0223A4F6 - 2 ; case 5 +_0223A502: + ldr r1, [r4, #0x44] + add r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + add r5, r0, #0 + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r0, r4, #0 + bl MOD06_0223A628 + cmp r5, #1 + bne _0223A5AC + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A524: + ldr r1, [r4, #0x44] + sub r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r0, r4, #0 + bl MOD06_0223A628 + ldr r0, [r4, #0x44] + cmp r0, #0 + bne _0223A5AC + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A546: + ldr r1, [r4, #0x44] + add r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r5, r0, #0 + add r0, r4, #0 + neg r1, r1 + neg r2, r2 + bl MOD06_0223A628 + cmp r5, #1 + bne _0223A5AC + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A56C: + ldr r1, [r4, #0x44] + sub r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r0, r4, #0 + neg r1, r1 + neg r2, r2 + bl MOD06_0223A628 + ldr r0, [r4, #0x44] + cmp r0, #0 + bne _0223A5AC + ldr r0, [r4, #0x48] + sub r0, r0, #1 + str r0, [r4, #0x48] + beq _0223A598 + mov r0, #0 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A598: + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A5A0: + ldr r0, [r4, #4] + bl FUN_0201EB8C + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] +_0223A5AC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A5B0 +MOD06_0223A5B0: ; 0x0223A5B0 + ldr r0, [r0, #0x40] + cmp r0, #5 + bne _0223A5BA + mov r0, #1 + bx lr +_0223A5BA: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223A5C0 +MOD06_0223A5C0: ; 0x0223A5C0 + add r3, r0, #0 + add r3, #8 + mov r2, #0x10 + mov r1, #0 +_0223A5C8: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0223A5C8 + add r3, r0, #0 + add r3, #0x18 + mov r2, #0x10 + mov r1, #0 +_0223A5D8: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0223A5D8 + add r1, r0, #0 + add r3, r0, #0 + mov r2, #0 + add r1, #0x28 + add r3, #0x28 + strb r2, [r1] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + strb r2, [r3, #8] + strb r2, [r3, #9] + strb r2, [r3, #0xa] + strb r2, [r3, #0xb] + str r2, [r0, #0x40] + str r2, [r0, #0x44] + str r2, [r0, #0x48] + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223A60C +MOD06_0223A60C: ; 0x0223A60C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5, #0x44] + add r0, #8 + bl MOD06_0223A35C + add r4, r0, #0 + add r0, r5, #0 + ldr r1, [r5, #0x44] + add r0, #0x18 + bl MOD06_0223A35C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A628 +MOD06_0223A628: ; 0x0223A628 + ldr r3, [r0, #0x34] + add r1, r3, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x38] + add r1, r1, r2 + str r1, [r0, #0x2c] + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223A638 +MOD06_0223A638: ; 0x0223A638 + ldr r0, [r0, #0x48] + bx lr + + thumb_func_start MOD06_0223A63C +MOD06_0223A63C: ; 0x0223A63C + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD06_0223A640 +MOD06_0223A640: ; 0x0223A640 + str r1, [r0, #0x10] + bx lr + + thumb_func_start MOD06_0223A644 +MOD06_0223A644: ; 0x0223A644 + push {r4, lr} + mov r1, #0x24 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x24 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #3 + str r0, [r4, #0x1c] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A660 +MOD06_0223A660: ; 0x0223A660 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223A672 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x20] +_0223A672: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A67C +MOD06_0223A67C: ; 0x0223A67C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + add r4, r1, #0 + add r7, r2, #0 + add r6, r3, #0 + cmp r0, #3 + beq _0223A69A + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0223A69A + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r5, #0x20] +_0223A69A: + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD06_0223A31C + mov r0, #0 + str r0, [r5, #0x10] + str r0, [r5, #0x1c] + str r6, [r5, #0x18] + str r4, [r5, #0x14] + ldr r0, _0223A6D0 ; =0x0400006C + ldr r1, [r5] + bl GXx_SetMasterBrightness_ + mov r2, #1 + ldr r0, _0223A6D4 ; =MOD06_0223A74C + add r1, r5, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 + str r0, [r5, #0x20] + ldr r0, _0223A6D8 ; =0x000006D4 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A6D0: .word 0x0400006C +_0223A6D4: .word MOD06_0223A74C +_0223A6D8: .word 0x000006D4 + + thumb_func_start MOD06_0223A6DC +MOD06_0223A6DC: ; 0x0223A6DC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x1c] + cmp r1, #3 + bhi _0223A746 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A6F2: ; jump table + .short _0223A6FA - _0223A6F2 - 2 ; case 0 + .short _0223A720 - _0223A6F2 - 2 ; case 1 + .short _0223A736 - _0223A6F2 - 2 ; case 2 + .short _0223A746 - _0223A6F2 - 2 ; case 3 +_0223A6FA: + ldr r1, [r4, #0x10] + add r1, r1, #1 + str r1, [r4, #0x10] + bl MOD06_0223A328 + cmp r0, #1 + bne _0223A746 + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x18] + add r0, r4, #0 + mov r2, #0 + bl MOD06_0223A31C + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + pop {r4, pc} +_0223A720: + ldr r1, [r4, #0x10] + add r1, r1, #1 + str r1, [r4, #0x10] + bl MOD06_0223A328 + cmp r0, #1 + bne _0223A746 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + pop {r4, pc} +_0223A736: + ldr r0, [r4, #0x20] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] +_0223A746: + pop {r4, pc} + + thumb_func_start MOD06_0223A748 +MOD06_0223A748: ; 0x0223A748 + ldr r0, [r0] + bx lr + + thumb_func_start MOD06_0223A74C +MOD06_0223A74C: ; 0x0223A74C + ldr r3, _0223A754 ; =0x020C5978 + ldr r0, _0223A758 ; =0x0400006C + ldr r1, [r1] + bx r3 + .align 2, 0 +_0223A754: .word 0x020C5978 +_0223A758: .word 0x0400006C + + thumb_func_start MOD06_0223A75C +MOD06_0223A75C: ; 0x0223A75C + push {r3, r4, r5, lr} + mov r1, #5 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02016998 + mov r2, #5 + mov r1, #0 + lsl r2, r2, #6 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x4b + str r5, [r4] + mov r1, #5 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0x10 + add r0, r4, r0 + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A790 +MOD06_0223A790: ; 0x0223A790 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #5 + beq _0223A7A2 + bl ErrorHandling +_0223A7A2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A7AC +MOD06_0223A7AC: ; 0x0223A7AC + push {r3, r4, r5, lr} + mov r5, #0x4b + add r4, r0, #0 + mov r0, #0 + lsl r5, r5, #2 + str r0, [r4, r5] + add r0, r5, #0 + add r0, #8 + str r1, [r4, r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r4, r0] + mov r2, #1 + add r5, #0x10 + ldr r0, _0223A7D8 ; =MOD06_0223A8A8 + add r1, r4, #0 + lsl r2, r2, #0xa + str r3, [r4, r5] + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_0223A7D8: .word MOD06_0223A8A8 + + thumb_func_start MOD06_0223A7DC +MOD06_0223A7DC: ; 0x0223A7DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #2 + beq _0223A7EE + bl ErrorHandling +_0223A7EE: + mov r0, #0x4b + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + add r4, #0x40 + add r0, r4, #0 + bl MOD06_0223AC70 + pop {r4, pc} + + thumb_func_start MOD06_0223A800 +MOD06_0223A800: ; 0x0223A800 + add r1, r0, #0 + mov r0, #0x13 + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r3, _0223A818 ; =0x0200CA45 + mov r2, #4 + sub r0, r0, #4 + str r2, [r1, r0] + ldr r0, _0223A81C ; =MOD06_0223A944 + lsl r2, r2, #8 + bx r3 + .align 2, 0 +_0223A818: .word 0x0200CA45 +_0223A81C: .word MOD06_0223A944 + + thumb_func_start MOD06_0223A820 +MOD06_0223A820: ; 0x0223A820 + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD06_0223A828 +MOD06_0223A828: ; 0x0223A828 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223A860 + sub r0, r0, #4 + cmp r0, #1 + bls _0223A860 + ldr r0, _0223A864 ; =0x04000454 + mov r1, #0 + str r1, [r0] + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + add r4, #0x40 + add r0, r4, #0 + bl MOD06_0223A400 + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 +_0223A860: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0223A864: .word 0x04000454 + + thumb_func_start MOD06_0223A868 +MOD06_0223A868: ; 0x0223A868 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223A8A6 + sub r0, r0, #4 + cmp r0, #1 + bls _0223A8A6 + add r0, r4, #0 + add r0, #0x40 + bl MOD06_0223AAB0 + mov r2, #0x4b + lsl r2, r2, #2 + ldr r1, [r4, r2] + cmp r1, #1 + bne _0223A89C + add r1, r2, #0 + sub r1, #0x16 + ldrh r1, [r4, r1] + cmp r1, #1 + bne _0223A89C + mov r1, #2 + str r1, [r4, r2] +_0223A89C: + cmp r0, #1 + bne _0223A8A6 + add r0, r4, #0 + bl MOD06_0223A800 +_0223A8A6: + pop {r4, pc} + + thumb_func_start MOD06_0223A8A8 +MOD06_0223A8A8: ; 0x0223A8A8 + push {r4, lr} + sub sp, #8 + mov r3, #0x13 + add r4, r1, #0 + lsl r3, r3, #4 + ldr r1, [r4, r3] + cmp r1, #3 + bhi _0223A940 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A8C4: ; jump table + .short _0223A8CC - _0223A8C4 - 2 ; case 0 + .short _0223A8E6 - _0223A8C4 - 2 ; case 1 + .short _0223A904 - _0223A8C4 - 2 ; case 2 + .short _0223A936 - _0223A8C4 - 2 ; case 3 +_0223A8CC: + mov r2, #8 + ldr r1, [r4] + add r0, r4, #4 + add r3, r2, #0 + bl MOD06_022396A0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A8E6: + add r0, r4, #4 + bl MOD06_022396BC + add r0, r4, #4 + bl MOD06_02239728 + cmp r0, #2 + bne _0223A940 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A904: + add r0, r3, #0 + add r0, #8 + ldr r0, [r4, r0] + add r1, r3, #0 + str r0, [sp] + add r0, r3, #0 + add r0, #0xc + ldr r0, [r4, r0] + add r3, r3, #4 + str r0, [sp, #4] + add r0, r4, #0 + sub r1, #0x14 + ldr r3, [r4, r3] + add r0, #0x40 + add r1, r4, r1 + mov r2, #4 + bl MOD06_0223A9B8 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A936: + mov r2, #1 + sub r1, r3, #4 + str r2, [r4, r1] + bl FUN_0200CAB4 +_0223A940: + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0223A944 +MOD06_0223A944: ; 0x0223A944 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #3 + bhi _0223A9B6 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223A95E: ; jump table + .short _0223A966 - _0223A95E - 2 ; case 0 + .short _0223A97E - _0223A95E - 2 ; case 1 + .short _0223A990 - _0223A95E - 2 ; case 2 + .short _0223A9AC - _0223A95E - 2 ; case 3 +_0223A966: + add r0, r4, #0 + sub r1, #0x14 + add r0, #0x40 + add r1, r4, r1 + bl MOD06_0223AA78 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A97E: + add r0, r4, #4 + bl MOD06_02239714 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A990: + add r0, r4, #4 + bl MOD06_022396BC + add r0, r4, #4 + bl MOD06_02239728 + cmp r0, #5 + bne _0223A9B6 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A9AC: + mov r2, #5 + sub r1, r1, #4 + str r2, [r4, r1] + bl FUN_0200CAB4 +_0223A9B6: + pop {r4, pc} + + thumb_func_start MOD06_0223A9B8 +MOD06_0223A9B8: ; 0x0223A9B8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + mov r0, #4 + str r1, [sp, #8] + add r7, r2, #0 + str r3, [sp, #0xc] + bl MOD06_0223A644 + add r1, r6, #0 + add r1, #0xb0 + str r0, [r1] + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x62 + mov r2, #0xc + add r3, r7, #0 + bl MOD06_0223A39C + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0x10] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0x10] +_0223A9EC: + ldr r0, [sp, #8] + str r7, [sp] + add r3, r4, #0 + str r0, [sp, #4] + ldr r1, [sp, #0x10] + add r0, r5, #0 + mov r2, #0x62 + add r3, #0xd + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #2 + blt _0223A9EC + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r6, #0 + mov r5, #0 + add r4, #0x88 +_0223AA18: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #2 + blt _0223AA18 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r6, #0 + bl MOD06_0223A410 + add r0, r6, #0 + mov r2, #1 + add r0, #0xb4 + mov r1, #0 + lsl r2, r2, #0xc + mov r3, #0x80 + bl MOD06_0223A350 + add r0, r6, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r6, #0 + add r0, #0xb4 + ldr r1, [r0] + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD06_0223A418 + mov r2, #2 + add r0, r6, #0 + lsl r2, r2, #0xc + add r0, #0xd0 + str r2, [r0] + add r0, r6, #0 + mov r1, #0 + add r0, #0xd6 + strh r1, [r0] + lsr r0, r2, #1 + add r6, #0xd8 + str r0, [r6] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AA78 +MOD06_0223AA78: ; 0x0223AA78 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x78 + add r6, r1, #0 + bl MOD06_0223A3A4 + add r5, r7, #0 + mov r4, #0 + add r5, #0x88 +_0223AA8A: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #2 + blt _0223AA8A + add r0, r7, #0 + add r0, #0xb0 + ldr r0, [r0] + bl MOD06_0223A660 + add r0, r7, #0 + mov r1, #0 + mov r2, #0xdc + bl Call_FillMemWithValue + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AAB0 +MOD06_0223AAB0: ; 0x0223AAB0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xc4 + ldr r1, [r1] + add r0, #0xb4 + bl MOD06_0223A35C + add r7, r0, #0 + add r0, r4, #0 + add r2, r4, #0 + add r0, #0xb4 + ldr r5, [r0] + add r2, #0xd8 + ldr r2, [r2] + asr r1, r5, #0x1f + add r0, r5, #0 + asr r3, r2, #0x1f + bl _ll_mul + mov r6, #2 + add r2, r0, #0 + mov r3, #0 + lsl r6, r6, #0xa + add r0, r4, #0 + add r2, r2, r6 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + add r1, r2, #0 + lsl r2, r6, #1 + add r3, r5, #0 + bl MOD06_0223A418 + add r5, r4, #0 + mov r6, #0 + add r5, #0x88 +_0223AAFC: + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + add r0, r5, #0 + bl MOD06_0223A3D4 + add r6, r6, #1 + add r5, #0x14 + cmp r6, #2 + blt _0223AAFC + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl MOD06_0223A6DC + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + cmp r0, #5 + bls _0223AB26 + b _0223AC5E +_0223AB26: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223AB32: ; jump table + .short _0223AB3E - _0223AB32 - 2 ; case 0 + .short _0223AC5E - _0223AB32 - 2 ; case 1 + .short _0223AB5E - _0223AB32 - 2 ; case 2 + .short _0223AB96 - _0223AB32 - 2 ; case 3 + .short _0223ABC4 - _0223AB32 - 2 ; case 4 + .short _0223AC44 - _0223AB32 - 2 ; case 5 +_0223AB3E: + cmp r7, #1 + beq _0223AB50 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, #0xc4 + add r0, r0, #1 + str r0, [r4] + b _0223AC5E +_0223AB50: + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r4, #0xd6 + add r0, r0, #1 + strh r0, [r4] + b _0223AC5E +_0223AB5E: + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + add r0, r4, #0 + sub r1, #0xcd + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + ldr r0, _0223AC64 ; =0x00000666 + cmp r1, r0 + bgt _0223AC5E + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r1, #0x10 + mov r2, #0xc + mov r3, #0x1c + bl MOD06_0223A67C + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r4, #0xd6 + add r0, r0, #1 + strh r0, [r4] + b _0223AC5E +_0223AB96: + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + add r0, r4, #0 + sub r1, #0xcd + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + bgt _0223AC5E + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xd6 + strh r1, [r0] + mov r0, #8 + add r4, #0xc8 + str r0, [r4] + b _0223AC5E +_0223ABC4: + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + bgt _0223AC5E + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r2, r4, #0 + add r2, #0xd8 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xd6 + strh r1, [r0] + add r0, r4, #0 + ldr r1, _0223AC68 ; =0xFFFD8000 + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + ldr r1, _0223AC6C ; =0xFFFFF000 + add r0, #0xd8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xb4 + ldr r5, [r0] + ldr r2, [r2] + asr r1, r5, #0x1f + add r0, r5, #0 + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + add r6, r0, #0 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r4, #0 + add r6, r6, r2 + adc r1, r3 + lsl r2, r1, #0x14 + lsr r1, r6, #0xc + orr r1, r2 + add r2, r5, #0 + add r3, r5, #0 + bl MOD06_0223A418 + add r0, r4, #0 + mov r1, #1 + add r0, #0xb4 + lsl r1, r1, #0xc + mov r2, #0 + mov r3, #0x20 + bl MOD06_0223A350 + mov r0, #0 + add r4, #0xc4 + str r0, [r4] + b _0223AC5E +_0223AC44: + cmp r7, #1 + beq _0223AC56 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, #0xc4 + add r0, r0, #1 + str r0, [r4] + b _0223AC5E +_0223AC56: + cmp r0, #5 + bne _0223AC5E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223AC5E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223AC64: .word 0x00000666 +_0223AC68: .word 0xFFFD8000 +_0223AC6C: .word 0xFFFFF000 + + thumb_func_start MOD06_0223AC70 +MOD06_0223AC70: ; 0x0223AC70 + mov r1, #2 + add r0, #0xd6 + strh r1, [r0] + bx lr + + thumb_func_start MOD06_0223AC78 +MOD06_0223AC78: ; 0x0223AC78 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #5 + lsl r1, r1, #6 + add r5, r0, #0 + bl FUN_02016998 + mov r2, #5 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #6 + bl Call_FillMemWithValue + str r6, [r4, #4] + mov r0, #0 + str r0, [r4] + mov r0, #0x4f + lsl r0, r0, #2 + str r5, [r4, r0] + sub r0, #0x10 + add r0, r4, r0 + add r1, r5, #0 + mov r2, #0x20 + bl FUN_02016B20 + mov r2, #0x4f + lsl r2, r2, #2 + add r0, r4, #0 + ldr r1, [r4, r2] + sub r2, #0x10 + add r0, #0x34 + add r2, r4, r2 + bl MOD06_0223AF10 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223ACC0 +MOD06_0223ACC0: ; 0x0223ACC0 + push {r4, lr} + mov r1, #0x4b + add r4, r0, #0 + lsl r1, r1, #2 + add r1, r4, r1 + add r0, #0x34 + bl MOD06_0223AFD0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD06_0223ACD8 +MOD06_0223ACD8: ; 0x0223ACD8 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r2, r1, #0 + ldr r1, [r4, #4] + add r0, #8 + bl MOD06_0223ADB4 + ldr r0, [r4, #8] + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0x10 + sub r3, r1, r0 + add r0, r4, #0 + ldr r1, [sp] + ldr r2, [sp, #4] + add r0, #0x34 + str r3, [sp, #8] + bl MOD06_0223AF7C + mov r0, #1 + str r0, [r4] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AD10 +MOD06_0223AD10: ; 0x0223AD10 + ldr r0, [r0] + cmp r0, #0 + beq _0223AD1A + cmp r0, #5 + bne _0223AD1E +_0223AD1A: + mov r0, #1 + bx lr +_0223AD1E: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223AD24 +MOD06_0223AD24: ; 0x0223AD24 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #5 + bhi _0223AD9A + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AD3A: ; jump table + .short _0223AD9A - _0223AD3A - 2 ; case 0 + .short _0223AD46 - _0223AD3A - 2 ; case 1 + .short _0223AD5A - _0223AD3A - 2 ; case 2 + .short _0223AD7A - _0223AD3A - 2 ; case 3 + .short _0223AD96 - _0223AD3A - 2 ; case 4 + .short _0223AD9A - _0223AD3A - 2 ; case 5 +_0223AD46: + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223AFF4 + cmp r0, #1 + bne _0223AD9A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0223AD5A: + add r0, r4, #0 + add r0, #8 + bl MOD06_0223ADD4 + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223B174 + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223AFF4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0223AD7A: + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223AFF4 + add r0, r4, #0 + add r0, #8 + bl MOD06_0223AE28 + cmp r0, #0 + beq _0223AD9A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0223AD96: + add r0, r1, #1 + str r0, [r4] +_0223AD9A: + pop {r4, pc} + + thumb_func_start MOD06_0223AD9C +MOD06_0223AD9C: ; 0x0223AD9C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0223AD10 + cmp r0, #1 + beq _0223ADB0 + add r4, #0x34 + add r0, r4, #0 + bl MOD06_0223B194 +_0223ADB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223ADB4 +MOD06_0223ADB4: ; 0x0223ADB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0x34] + add r1, r2, #0 + bl FUN_02058060 + str r0, [r4] + cmp r0, #0 + bne _0223ADCA + bl ErrorHandling +_0223ADCA: + mov r0, #0 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223ADD4 +MOD06_0223ADD4: ; 0x0223ADD4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl MOD06_0223AEE8 + add r4, r0, #0 + mov r0, #1 + str r0, [r5, #0x28] + ldr r0, [r5] + mov r1, #0 + bl FUN_0205889C + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223AEF8 + mov r2, #6 + add r0, r5, #4 + mov r1, #0 + lsl r2, r2, #0xa + mov r3, #6 + bl MOD06_0223A350 + add r0, r5, #0 + mov r1, #2 + add r0, #0x14 + lsl r1, r1, #0x10 + mov r2, #0 + mov r3, #0x2c + bl MOD06_0223A350 + mov r1, #0 + str r1, [sp] + ldr r0, [r5, #0x14] + str r1, [sp, #8] + str r0, [sp, #4] + ldr r0, [r5] + add r1, sp, #0 + bl FUN_02058BB4 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0223AE28 +MOD06_0223AE28: ; 0x0223AE28 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD06_0223AEE8 + add r6, r0, #0 + ldr r0, [r4, #0x28] + cmp r0, #4 + bhi _0223AEE0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AE46: ; jump table + .short _0223AEE0 - _0223AE46 - 2 ; case 0 + .short _0223AE50 - _0223AE46 - 2 ; case 1 + .short _0223AE86 - _0223AE46 - 2 ; case 2 + .short _0223AEAC - _0223AE46 - 2 ; case 3 + .short _0223AEDA - _0223AE46 - 2 ; case 4 +_0223AE50: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + add r0, r4, #4 + bl MOD06_0223A35C + add r5, r0, #0 + ldr r1, [r4, #4] + add r0, r6, #0 + bl MOD06_0223AEF8 + cmp r5, #1 + bne _0223AEE0 + mov r1, #6 + mov r2, #1 + add r0, r4, #4 + lsl r1, r1, #0xa + lsl r2, r2, #0xc + mov r3, #2 + bl MOD06_0223A350 + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223AEE0 +_0223AE86: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + add r0, r4, #4 + bl MOD06_0223A35C + add r5, r0, #0 + ldr r1, [r4, #4] + add r0, r6, #0 + bl MOD06_0223AEF8 + cmp r5, #1 + bne _0223AEE0 + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223AEE0 +_0223AEAC: + ldr r0, [r4, #0x24] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x14 + str r1, [r4, #0x24] + bl MOD06_0223A35C + mov r1, #0 + str r1, [sp] + add r5, r0, #0 + ldr r0, [r4, #0x14] + str r1, [sp, #8] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02058BB4 + cmp r5, #1 + bne _0223AEE0 + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223AEE0 +_0223AEDA: + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0223AEE0: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AEE8 +MOD06_0223AEE8: ; 0x0223AEE8 + push {r3, lr} + ldr r0, [r0] + bl FUN_021F1C1C + bl FUN_021F1C30 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AEF8 +MOD06_0223AEF8: ; 0x0223AEF8 + push {lr} + sub sp, #0xc + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + str r1, [sp, #8] + add r1, sp, #0 + bl FUN_0201F7F0 + add sp, #0xc + pop {pc} + + thumb_func_start MOD06_0223AF10 +MOD06_0223AF10: ; 0x0223AF10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r7, r0, #0 + str r2, [sp, #8] + add r0, #0x78 + mov r1, #0x62 + mov r2, #7 + add r3, r6, #0 + bl MOD06_0223A39C + add r0, r7, #0 + add r5, r7, #0 + str r0, [sp, #0xc] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0xc] +_0223AF34: + ldr r0, [sp, #8] + str r6, [sp] + add r3, r4, #0 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x62 + add r3, #8 + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223AF34 + add r1, r7, #0 + add r0, r7, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r7, #0 + mov r5, #0 + add r4, #0x88 +_0223AF60: + add r0, r7, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #4 + blt _0223AF60 + add r0, r7, #0 + mov r1, #0 + bl MOD06_0223A408 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AF7C +MOD06_0223AF7C: ; 0x0223AF7C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl MOD06_0223A410 + mov r1, #1 + lsl r1, r1, #0xc + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD06_0223A418 + mov r4, #0 + add r5, r6, #0 + add r5, #0x88 + add r7, r4, #0 +_0223AF9A: + add r0, r5, #0 + add r1, r7, #0 + bl MOD06_0223A3E8 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223AF9A + add r0, r6, #0 + mov r2, #0 + add r0, #0xec + str r2, [r0] + add r0, r6, #0 + add r0, #0xd8 + str r2, [r0] + add r0, r6, #0 + mov r1, #0x52 + add r0, #0xf0 + str r1, [r0] + add r0, r6, #0 + add r0, #0xf4 + str r2, [r0] + add r0, r6, #0 + mov r1, #1 + bl MOD06_0223A408 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AFD0 +MOD06_0223AFD0: ; 0x0223AFD0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x78 + add r6, r1, #0 + bl MOD06_0223A3A4 + mov r4, #0 + add r5, #0x88 +_0223AFE0: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223AFE0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AFF4 +MOD06_0223AFF4: ; 0x0223AFF4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #3 + bhi _0223B084 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B00C: ; jump table + .short _0223B014 - _0223B00C - 2 ; case 0 + .short _0223B084 - _0223B00C - 2 ; case 1 + .short _0223B03C - _0223B00C - 2 ; case 2 + .short _0223B084 - _0223B00C - 2 ; case 3 +_0223B014: + add r5, r6, #0 + mov r4, #0 + add r5, #0x88 +_0223B01A: + add r0, r5, #0 + bl MOD06_0223A3DC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B01A + cmp r0, #1 + bne _0223B084 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xd8 + str r1, [r0] + b _0223B084 +_0223B03C: + add r0, r6, #0 + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xec + str r1, [r0] + add r1, r6, #0 + add r1, #0xec + add r0, r6, #0 + ldr r1, [r1] + add r0, #0xdc + bl MOD06_0223A35C + add r4, r0, #0 + add r0, r6, #0 + add r0, #0xdc + ldr r1, [r0] + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD06_0223A418 + cmp r4, #1 + bne _0223B084 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xd8 + str r1, [r0] + add r0, r6, #0 + mov r1, #0 + bl MOD06_0223A408 +_0223B084: + add r0, r6, #0 + bl MOD06_0223B090 + add r6, #0xd8 + ldr r0, [r6] + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223B090 +MOD06_0223B090: ; 0x0223B090 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf4 + ldr r0, [r0] + cmp r0, #4 + bhi _0223B162 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B0A8: ; jump table + .short _0223B0B2 - _0223B0A8 - 2 ; case 0 + .short _0223B0E0 - _0223B0A8 - 2 ; case 1 + .short _0223B110 - _0223B0A8 - 2 ; case 2 + .short _0223B13E - _0223B0A8 - 2 ; case 3 + .short _0223B162 - _0223B0A8 - 2 ; case 4 +_0223B0B2: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B164 ; =0x000006D2 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x48 + add r0, #0xf0 + str r1, [r0] + mov r0, #1 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} +_0223B0E0: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B168 ; =0x000006D3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x4b + lsl r1, r1, #2 + add r0, #0xf0 + str r1, [r0] + mov r0, #2 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} +_0223B110: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B16C ; =0x000006D6 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x84 + add r0, #0xf0 + str r1, [r0] + mov r0, #3 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} +_0223B13E: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B170 ; =0x000006D7 + bl FUN_020054C8 + mov r0, #4 + add r4, #0xf4 + str r0, [r4] +_0223B162: + pop {r4, pc} + .align 2, 0 +_0223B164: .word 0x000006D2 +_0223B168: .word 0x000006D3 +_0223B16C: .word 0x000006D6 +_0223B170: .word 0x000006D7 + + thumb_func_start MOD06_0223B174 +MOD06_0223B174: ; 0x0223B174 + push {r3, lr} + add r1, r0, #0 + mov r3, #2 + add r1, #0xd8 + str r3, [r1] + add r1, r0, #0 + mov r2, #0 + add r1, #0xec + str r2, [r1] + lsl r1, r3, #0xb + add r0, #0xdc + mov r3, #0x10 + bl MOD06_0223A350 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B194 +MOD06_0223B194: ; 0x0223B194 + ldr r3, _0223B198 ; =MOD06_0223A400 + bx r3 + .align 2, 0 +_0223B198: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B19C +MOD06_0223B19C: ; 0x0223B19C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x1e + lsl r1, r1, #4 + add r4, r0, #0 + bl FUN_02016998 + mov r2, #0x1e + add r6, r0, #0 + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + add r0, r6, #0 + mov r1, #0x62 + add r2, r5, #0 + add r3, r4, #0 + bl MOD06_0223A39C + add r5, r6, #0 + mov r4, #0 + add r5, #0x10 +_0223B1C8: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223B348 + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B1C8 + mov r0, #7 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r6, r0] + add r0, r6, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223B1E4 +MOD06_0223B1E4: ; 0x0223B1E4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r6, #0 + mov r4, #0 + add r5, #0x10 +_0223B1EE: + add r0, r5, #0 + bl MOD06_0223B36C + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B1EE + add r0, r6, #0 + bl MOD06_0223A3A4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B20C +MOD06_0223B20C: ; 0x0223B20C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _0223B224 + bl ErrorHandling +_0223B224: + mov r0, #0x71 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + add r1, r0, #0 + add r1, #8 + str r4, [r5, r1] + add r1, r0, #0 + add r1, #0xc + str r6, [r5, r1] + add r1, r0, #0 + add r1, #0x10 + str r7, [r5, r1] + add r2, sp, #8 + add r1, r0, #0 + ldrh r3, [r2, #0x14] + add r1, #0x14 + strh r3, [r5, r1] + add r1, r0, #0 + ldrh r3, [r2, #0x18] + add r1, #0x16 + strh r3, [r5, r1] + add r1, r0, #0 + ldrh r2, [r2, #0x1c] + add r1, #0x18 + strh r2, [r5, r1] + add r1, r0, #4 + ldr r2, [sp, #0x18] + sub r0, r0, #4 + str r2, [r5, r1] + mov r1, #1 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B268 +MOD06_0223B268: ; 0x0223B268 + push {r3, r4, r5, lr} + sub sp, #0x18 + mov r2, #0x71 + add r5, r0, #0 + lsl r2, r2, #2 + ldr r1, [r5, r2] + sub r1, r1, #1 + str r1, [r5, r2] + ldr r1, [r5, r2] + cmp r1, #0 + bge _0223B2CA + add r1, r2, #4 + ldr r1, [r5, r1] + str r1, [r5, r2] + bl MOD06_0223B438 + add r4, r0, #0 + bne _0223B290 + bl ErrorHandling +_0223B290: + mov r1, #0x73 + lsl r1, r1, #2 + ldr r0, [r5, r1] + mov r2, #1 + str r0, [sp] + add r0, r1, #4 + ldr r0, [r5, r0] + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + mov r3, #0x60 + str r0, [sp, #8] + add r0, r1, #0 + add r0, #0xc + ldrh r0, [r5, r0] + str r0, [sp, #0xc] + add r0, r1, #0 + add r0, #0xe + ldrh r0, [r5, r0] + add r1, #0x10 + str r0, [sp, #0x10] + ldrh r0, [r5, r1] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r4, #0 + bl MOD06_0223B378 +_0223B2CA: + mov r4, #0 + add r5, #0x10 +_0223B2CE: + add r0, r5, #0 + bl MOD06_0223B3EC + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B2CE + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B2E0 +MOD06_0223B2E0: ; 0x0223B2E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0223B2E8: + add r0, r5, #0 + bl MOD06_0223B42C + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B2E8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B2F8 +MOD06_0223B2F8: ; 0x0223B2F8 + ldr r3, _0223B300 ; =MOD06_0223B19C + mov r1, #6 + bx r3 + nop +_0223B300: .word MOD06_0223B19C + + thumb_func_start MOD06_0223B304 +MOD06_0223B304: ; 0x0223B304 + ldr r3, _0223B308 ; =MOD06_0223B1E4 + bx r3 + .align 2, 0 +_0223B308: .word MOD06_0223B1E4 + + thumb_func_start MOD06_0223B30C +MOD06_0223B30C: ; 0x0223B30C + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + mov r5, #0 + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + lsl r5, r1, #0x10 + lsl r1, r4, #9 + add r1, r5, r1 + lsl r5, r2, #0x10 + mov r2, #0xa + lsl r2, r2, #0x10 + add r2, r5, r2 + lsl r5, r3, #0x10 + lsl r3, r4, #0xa + add r3, r5, r3 + bl MOD06_0223B20C + add sp, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B338 +MOD06_0223B338: ; 0x0223B338 + ldr r3, _0223B33C ; =MOD06_0223B268 + bx r3 + .align 2, 0 +_0223B33C: .word MOD06_0223B268 + + thumb_func_start MOD06_0223B340 +MOD06_0223B340: ; 0x0223B340 + ldr r3, _0223B344 ; =MOD06_0223B2E0 + bx r3 + .align 2, 0 +_0223B344: .word MOD06_0223B2E0 + + thumb_func_start MOD06_0223B348 +MOD06_0223B348: ; 0x0223B348 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x90 + bl Call_FillMemWithValue + add r0, r4, #4 + add r1, r5, #0 + bl MOD06_0223A3F0 + add r0, r4, #4 + mov r1, #0 + bl MOD06_0223A408 + mov r0, #0 + str r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B36C +MOD06_0223B36C: ; 0x0223B36C + ldr r3, _0223B374 ; =0x020DF4A4 + mov r1, #0 + mov r2, #0x90 + bx r3 + .align 2, 0 +_0223B374: .word 0x020DF4A4 + + thumb_func_start MOD06_0223B378 +MOD06_0223B378: ; 0x0223B378 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _0223B38C + bl ErrorHandling +_0223B38C: + add r0, r5, #0 + add r0, #0x7c + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD06_0223A350 + add r0, r5, #4 + mov r1, #1 + bl MOD06_0223A408 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r5, #4 + bl MOD06_0223A410 + mov r2, #1 + add r0, r5, #4 + add r1, r4, #0 + lsl r2, r2, #0xc + add r3, r4, #0 + bl MOD06_0223A418 + add r1, sp, #8 + ldrh r1, [r1, #0x1c] + add r0, r5, #4 + mov r2, #0 + bl MOD06_0223A420 + add r1, sp, #8 + ldrh r1, [r1, #0x20] + add r0, r5, #4 + mov r2, #1 + bl MOD06_0223A420 + add r1, sp, #8 + ldrh r1, [r1, #0x24] + add r0, r5, #4 + mov r2, #2 + bl MOD06_0223A420 + mov r0, #1 + str r0, [r5] + mov r0, #0 + add r5, #0x8c + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B3EC +MOD06_0223B3EC: ; 0x0223B3EC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0223B42A + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r1, r4, #0 + add r1, #0x8c + add r0, r4, #0 + ldr r1, [r1] + add r0, #0x7c + bl MOD06_0223A35C + ldr r1, [r4, #0x7c] + mov r2, #1 + add r5, r0, #0 + add r0, r4, #4 + lsl r2, r2, #0xc + add r3, r1, #0 + bl MOD06_0223A418 + cmp r5, #1 + bne _0223B42A + mov r0, #0 + str r0, [r4] +_0223B42A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B42C +MOD06_0223B42C: ; 0x0223B42C + ldr r3, _0223B434 ; =MOD06_0223A400 + add r0, r0, #4 + bx r3 + nop +_0223B434: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B438 +MOD06_0223B438: ; 0x0223B438 + mov r2, #0 + add r3, r0, #0 +_0223B43C: + ldr r1, [r3, #0x10] + cmp r1, #0 + bne _0223B44C + mov r1, #0x90 + add r0, #0x10 + mul r1, r2 + add r0, r0, r1 + bx lr +_0223B44C: + add r2, r2, #1 + add r3, #0x90 + cmp r2, #3 + blt _0223B43C + mov r0, #0 + bx lr + + thumb_func_start MOD06_0223B458 +MOD06_0223B458: ; 0x0223B458 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0xd4 + add r7, r0, #0 + bl FUN_02016998 + add r6, r0, #0 + mov r1, #0 + mov r2, #0xd4 + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0xc4 + add r1, r7, #0 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x62 + add r2, r4, #0 + add r3, r7, #0 + bl MOD06_0223A39C + add r0, r6, #0 + str r0, [sp, #8] + add r0, #0xc4 + str r0, [sp, #8] + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0xc] +_0223B4A0: + ldr r0, [sp, #8] + str r7, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x62 + add r3, r4, #1 + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223B4A0 + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r6, #0 + mov r5, #0 + add r4, #0x88 +_0223B4CA: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #3 + blt _0223B4CA + add r0, r6, #0 + mov r1, #0 + bl MOD06_0223A408 + add r0, r6, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B4E8 +MOD06_0223B4E8: ; 0x0223B4E8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x78 + bl MOD06_0223A3A4 + add r5, r7, #0 + add r6, r7, #0 + mov r4, #0 + add r5, #0x88 + add r6, #0xc4 +_0223B4FC: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223B4FC + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B514 +MOD06_0223B514: ; 0x0223B514 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0223A410 + ldr r1, _0223B550 ; =0xFFFFFFF8 + add r0, r4, #0 + add r1, sp + ldrh r1, [r1, #0x10] + mov r2, #0 + bl MOD06_0223A420 + ldr r1, _0223B550 ; =0xFFFFFFF8 + add r0, r4, #0 + add r1, sp + ldrh r1, [r1, #0x18] + mov r2, #2 + bl MOD06_0223A420 + ldr r1, _0223B550 ; =0xFFFFFFF8 + add r0, r4, #0 + add r1, sp + ldrh r1, [r1, #0x14] + mov r2, #1 + bl MOD06_0223A420 + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223A408 + pop {r4, pc} + .align 2, 0 +_0223B550: .word 0xFFFFFFF8 + + thumb_func_start MOD06_0223B554 +MOD06_0223B554: ; 0x0223B554 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x88 +_0223B55C: + add r0, r5, #0 + bl MOD06_0223A3C8 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223B55C + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B56C +MOD06_0223B56C: ; 0x0223B56C + ldr r3, _0223B570 ; =MOD06_0223A400 + bx r3 + .align 2, 0 +_0223B570: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B574 +MOD06_0223B574: ; 0x0223B574 + ldr r3, _0223B57C ; =MOD06_0223B458 + mov r1, #0 + bx r3 + nop +_0223B57C: .word MOD06_0223B458 + + thumb_func_start MOD06_0223B580 +MOD06_0223B580: ; 0x0223B580 + ldr r3, _0223B584 ; =MOD06_0223B4E8 + bx r3 + .align 2, 0 +_0223B584: .word MOD06_0223B4E8 + + thumb_func_start MOD06_0223B588 +MOD06_0223B588: ; 0x0223B588 + ldr r3, _0223B58C ; =MOD06_0223B554 + bx r3 + .align 2, 0 +_0223B58C: .word MOD06_0223B554 + + thumb_func_start MOD06_0223B590 +MOD06_0223B590: ; 0x0223B590 + ldr r3, _0223B594 ; =MOD06_0223B56C + bx r3 + .align 2, 0 +_0223B594: .word MOD06_0223B56C + + thumb_func_start MOD06_0223B598 +MOD06_0223B598: ; 0x0223B598 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, _0223B5BC ; =0x0000F49F + str r4, [sp] + ldr r4, _0223B5C0 ; =0x000080B5 + str r4, [sp, #4] + sub r4, r4, #7 + str r4, [sp, #8] + ldr r4, _0223B5C4 ; =0x00029BA8 + add r1, r1, r4 + ldr r4, _0223B5C8 ; =0x00037294 + sub r2, r2, r4 + ldr r4, _0223B5CC ; =0x000B6876 + sub r3, r3, r4 + bl MOD06_0223B514 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223B5BC: .word 0x0000F49F +_0223B5C0: .word 0x000080B5 +_0223B5C4: .word 0x00029BA8 +_0223B5C8: .word 0x00037294 +_0223B5CC: .word 0x000B6876 + + thumb_func_start MOD06_0223B5D0 +MOD06_0223B5D0: ; 0x0223B5D0 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, _0223B5F4 ; =0x0000E5B1 + str r4, [sp] + ldr r4, _0223B5F8 ; =0x0000C163 + str r4, [sp, #4] + ldr r4, _0223B5FC ; =0x00007FF8 + str r4, [sp, #8] + ldr r4, _0223B600 ; =0x00116A4F + add r1, r1, r4 + ldr r4, _0223B604 ; =0x0004F16B + add r2, r2, r4 + ldr r4, _0223B608 ; =0x00092118 + sub r3, r3, r4 + bl MOD06_0223B514 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223B5F4: .word 0x0000E5B1 +_0223B5F8: .word 0x0000C163 +_0223B5FC: .word 0x00007FF8 +_0223B600: .word 0x00116A4F +_0223B604: .word 0x0004F16B +_0223B608: .word 0x00092118 + + thumb_func_start MOD06_0223B60C +MOD06_0223B60C: ; 0x0223B60C + push {r3, r4, lr} + sub sp, #0xc + ldr r4, _0223B634 ; =0x0000E71D + str r4, [sp] + ldr r4, _0223B638 ; =0x00005335 + str r4, [sp, #4] + ldr r4, _0223B63C ; =0x00007992 + str r4, [sp, #8] + mov r4, #0xc6 + lsl r4, r4, #0xc + sub r1, r1, r4 + ldr r4, _0223B640 ; =0x00056FFF + add r2, r2, r4 + ldr r4, _0223B644 ; =0x00210008 + sub r3, r3, r4 + bl MOD06_0223B514 + add sp, #0xc + pop {r3, r4, pc} + nop +_0223B634: .word 0x0000E71D +_0223B638: .word 0x00005335 +_0223B63C: .word 0x00007992 +_0223B640: .word 0x00056FFF +_0223B644: .word 0x00210008 + + thumb_func_start MOD06_0223B648 +MOD06_0223B648: ; 0x0223B648 + ldr r3, _0223B650 ; =MOD06_0223B19C + mov r1, #6 + bx r3 + nop +_0223B650: .word MOD06_0223B19C + + thumb_func_start MOD06_0223B654 +MOD06_0223B654: ; 0x0223B654 + ldr r3, _0223B658 ; =MOD06_0223B1E4 + bx r3 + .align 2, 0 +_0223B658: .word MOD06_0223B1E4 + + thumb_func_start MOD06_0223B65C +MOD06_0223B65C: ; 0x0223B65C + ldr r3, _0223B660 ; =MOD06_0223B268 + bx r3 + .align 2, 0 +_0223B660: .word MOD06_0223B268 + + thumb_func_start MOD06_0223B664 +MOD06_0223B664: ; 0x0223B664 + ldr r3, _0223B668 ; =MOD06_0223B2E0 + bx r3 + .align 2, 0 +_0223B668: .word MOD06_0223B2E0 + + thumb_func_start MOD06_0223B66C +MOD06_0223B66C: ; 0x0223B66C + push {r4, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + ldr r4, _0223B69C ; =0x0000F49F + str r4, [sp, #4] + ldr r4, _0223B6A0 ; =0x000080B5 + str r4, [sp, #8] + sub r4, r4, #7 + str r4, [sp, #0xc] + mov r4, #0x11 + lsl r4, r4, #0xc + add r1, r1, r4 + mov r4, #0x6f + lsl r4, r4, #0xc + sub r2, r2, r4 + mov r4, #0xcb + lsl r4, r4, #0xc + sub r3, r3, r4 + bl MOD06_0223B20C + add sp, #0x10 + pop {r4, pc} + nop +_0223B69C: .word 0x0000F49F +_0223B6A0: .word 0x000080B5 + + thumb_func_start MOD06_0223B6A4 +MOD06_0223B6A4: ; 0x0223B6A4 + push {r4, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + ldr r4, _0223B6D0 ; =0x0000E5B1 + str r4, [sp, #4] + ldr r4, _0223B6D4 ; =0x0000C163 + str r4, [sp, #8] + ldr r4, _0223B6D8 ; =0x00007FF8 + str r4, [sp, #0xc] + ldr r4, _0223B6DC ; =0x00252000 + add r1, r1, r4 + mov r4, #0x43 + lsl r4, r4, #0xc + add r2, r2, r4 + mov r4, #0xe + lsl r4, r4, #0xe + sub r3, r3, r4 + bl MOD06_0223B20C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0223B6D0: .word 0x0000E5B1 +_0223B6D4: .word 0x0000C163 +_0223B6D8: .word 0x00007FF8 +_0223B6DC: .word 0x00252000 + + thumb_func_start MOD06_0223B6E0 +MOD06_0223B6E0: ; 0x0223B6E0 + push {r4, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + ldr r4, _0223B710 ; =0x0000E71D + str r4, [sp, #4] + ldr r4, _0223B714 ; =0x00005335 + str r4, [sp, #8] + ldr r4, _0223B718 ; =0x00007992 + str r4, [sp, #0xc] + mov r4, #0x53 + lsl r4, r4, #0xe + sub r1, r1, r4 + mov r4, #0xd + lsl r4, r4, #0xc + sub r2, r2, r4 + mov r4, #0x71 + lsl r4, r4, #0xe + sub r3, r3, r4 + bl MOD06_0223B20C + add sp, #0x10 + pop {r4, pc} + nop +_0223B710: .word 0x0000E71D +_0223B714: .word 0x00005335 +_0223B718: .word 0x00007992 + + thumb_func_start MOD06_0223B71C +MOD06_0223B71C: ; 0x0223B71C + push {r4, lr} + add r4, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x18 + mov r1, #0 +_0223B72C: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0223B72C + str r4, [r0] + mov r1, #0 + str r1, [r0, #0x14] + pop {r4, pc} + + thumb_func_start MOD06_0223B73C +MOD06_0223B73C: ; 0x0223B73C + ldr r3, _0223B740 ; =0x02016A19 + bx r3 + .align 2, 0 +_0223B740: .word 0x02016A19 + + thumb_func_start MOD06_0223B744 +MOD06_0223B744: ; 0x0223B744 + ldr r1, _0223B760 ; =0x0224F248 + mov r2, #1 + str r1, [r0, #4] + mov r1, #3 + str r1, [r0, #8] + mov r1, #0 + str r1, [r0, #0xc] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + ldr r0, [r0] + ldr r3, _0223B764 ; =0x021DB52D + ldr r0, [r0, #0x48] + bx r3 + nop +_0223B760: .word 0x0224F248 +_0223B764: .word 0x021DB52D + + thumb_func_start MOD06_0223B768 +MOD06_0223B768: ; 0x0223B768 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #4 + bhi _0223B80C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B77E: ; jump table + .short _0223B80C - _0223B77E - 2 ; case 0 + .short _0223B788 - _0223B77E - 2 ; case 1 + .short _0223B80C - _0223B77E - 2 ; case 2 + .short _0223B7C0 - _0223B77E - 2 ; case 3 + .short _0223B80C - _0223B77E - 2 ; case 4 +_0223B788: + ldr r0, [r4, #0xc] + add r5, r0, #1 + str r5, [r4, #0xc] + ldr r3, [r4, #0x10] + ldr r2, [r4, #4] + mov r0, #0x30 + add r1, r3, #0 + mul r1, r0 + ldr r1, [r2, r1] + cmp r1, r5 + bhi _0223B80C + ldr r1, [r4, #8] + add r2, r3, #1 + cmp r2, r1 + blo _0223B7AE + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + pop {r3, r4, r5, pc} +_0223B7AE: + str r2, [r4, #0x10] + ldr r1, [r4, #4] + mul r0, r2 + add r0, r1, r0 + ldr r1, [r4] + ldr r1, [r1, #0x40] + bl FUN_021DB53C + pop {r3, r4, r5, pc} +_0223B7C0: + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _0223B7F6 + ldr r3, [r4, #4] + mov r1, #0x30 + add r2, r0, #0 + mul r2, r1 + add r2, r3, r2 + sub r2, #0x30 + ldr r3, [r2] + ldr r2, [r4, #0xc] + cmp r3, r2 + bls _0223B80C + sub r3, r0, #1 + str r3, [r4, #0x10] + add r0, r3, #0 + mul r0, r1 + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r1, [r1, #0x40] + add r0, r2, r0 + bl FUN_021DB53C + pop {r3, r4, r5, pc} +_0223B7F6: + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _0223B80C + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x48] + bl FUN_021DB52C + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] +_0223B80C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B810 +MOD06_0223B810: ; 0x0223B810 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start MOD06_0223B814 +MOD06_0223B814: ; 0x0223B814 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #2 + beq _0223B822 + bl ErrorHandling +_0223B822: + mov r0, #3 + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD06_0223B828 +MOD06_0223B828: ; 0x0223B828 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0xec + add r7, r0, #0 + bl FUN_02016998 + add r6, r0, #0 + mov r1, #0 + mov r2, #0xec + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0xd8 + str r4, [r0] + add r0, r6, #0 + add r0, #0xdc + add r1, r7, #0 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x62 + mov r2, #0xf + add r3, r7, #0 + bl MOD06_0223A39C + add r0, r6, #0 + str r0, [sp, #8] + add r0, #0xdc + str r0, [sp, #8] + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0xc] +_0223B876: + ldr r0, [sp, #8] + str r7, [sp] + add r3, r4, #0 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x62 + add r3, #0x10 + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B876 + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r6, #0 + mov r5, #0 + add r4, #0x88 +_0223B8A2: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #4 + blt _0223B8A2 + add r0, r6, #0 + mov r1, #0 + bl MOD06_0223A408 + add r0, r6, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B8C0 +MOD06_0223B8C0: ; 0x0223B8C0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x78 + bl MOD06_0223A3A4 + add r5, r7, #0 + add r6, r7, #0 + mov r4, #0 + add r5, #0x88 + add r6, #0xdc +_0223B8D4: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B8D4 + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B8EC +MOD06_0223B8EC: ; 0x0223B8EC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r1, sp, #0 + bl FUN_02058B5C + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD06_0223A410 + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223A408 + ldr r0, _0223B920 ; =0x000006D8 + bl FUN_020054C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223B920: .word 0x000006D8 + + thumb_func_start MOD06_0223B924 +MOD06_0223B924: ; 0x0223B924 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x88 +_0223B92C: + add r0, r5, #0 + bl MOD06_0223A3DC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B92C + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B93C +MOD06_0223B93C: ; 0x0223B93C + ldr r3, _0223B940 ; =MOD06_0223A400 + bx r3 + .align 2, 0 +_0223B940: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B944 +MOD06_0223B944: ; 0x0223B944 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl FUN_02012794 + sub r1, r0, #1 + cmp r1, #1 + bhi _0223B960 + ldr r0, [r5, #0x6c] + str r0, [r4] + ldr r0, [r5, #0x70] + str r0, [r6] + pop {r4, r5, r6, pc} +_0223B960: + sub r0, r0, #3 + cmp r0, #1 + bhi _0223B96E + ldr r0, [r5, #0x74] + str r0, [r4] + ldr r0, [r5, #0x78] + str r0, [r6] +_0223B96E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223B970 +MOD06_0223B970: ; 0x0223B970 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0202A9B0 + str r0, [sp] + bl FUN_0202AA14 + cmp r0, #0 + beq _0223B9A6 + ldr r0, [sp] + mov r1, #2 + bl FUN_0202A990 + bl MOD06_022458FC + ldr r1, [r5, #0x1c] + ldr r1, [r1] + cmp r1, r0 + bne _0223B9A6 + ldr r0, [r4, #0x64] + str r0, [r6] + ldr r0, [r4, #0x68] + str r0, [r7] +_0223B9A6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B9A8 +MOD06_0223B9A8: ; 0x0223B9A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + add r4, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_020349B8 + cmp r0, #0 + beq _0223B9FC + add r1, sp, #0 + ldr r0, [r5, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_0202AB8C + cmp r4, #0 + beq _0223B9FC + mov r0, #0x6a + mov r1, #8 + mov r2, #4 + bl FUN_02006528 + add r1, sp, #0 + ldrh r2, [r1, #2] + ldr r1, _0223BA00 ; =0x0000FFFF + cmp r2, r1 + beq _0223B9E8 + lsl r1, r2, #2 + ldr r1, [r0, r1] + str r1, [r6] +_0223B9E8: + add r1, sp, #0 + ldrh r2, [r1] + ldr r1, _0223BA00 ; =0x0000FFFF + cmp r2, r1 + beq _0223B9F8 + lsl r1, r2, #2 + ldr r1, [r0, r1] + str r1, [r7] +_0223B9F8: + bl FUN_02016A18 +_0223B9FC: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223BA00: .word 0x0000FFFF + + thumb_func_start MOD06_0223BA04 +MOD06_0223BA04: ; 0x0223BA04 + push {r4, r5, r6, r7, lr} + sub sp, #0xb4 + add r5, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + str r0, [sp, #0x14] + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0204A6E0 + str r0, [sp, #0x1c] + add r2, sp, #0x24 + ldr r1, [sp, #0x1c] + add r0, r5, #0 + add r2, #1 + bl MOD06_0223C51C + add r1, sp, #0x24 + strb r0, [r1] + ldrb r0, [r1] + cmp r0, #0 + bne _0223BA42 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BA42: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02034CE0 + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x20] + ldr r1, [sp, #0x20] + add r0, r5, #0 + add r2, r4, #0 + add r3, sp, #0x30 + bl MOD06_0223D2DC + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AB54 + cmp r0, #0 + bne _0223BA8C + add r0, r7, #0 + bl FUN_0204A1D8 + mov r1, #1 + str r1, [sp, #0x34] + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x24 + strb r0, [r1, #0x18] +_0223BA8C: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r3, r0, #0 + ldr r0, [sp, #0x20] + add r1, sp, #0x24 + str r0, [sp] + ldrb r1, [r1] + mov r0, #0 + add r2, sp, #0x30 + bl MOD06_0223CF14 + add r1, sp, #0x24 + strb r0, [r1] + add r0, r5, #0 + add r1, sp, #0x24 + bl MOD06_0223C764 + ldr r0, [sp, #0x20] + add r1, sp, #0x24 + bl MOD06_0223C738 + add r1, sp, #0x24 + ldrb r1, [r1] + ldr r2, [sp, #0x1c] + add r0, r5, #0 + bl MOD06_0223C470 + cmp r0, #0 + beq _0223BAD2 + mov r0, #1 + str r0, [sp, #0x10] + b _0223BAD6 +_0223BAD2: + mov r0, #0 + str r0, [sp, #0x10] +_0223BAD6: + add r1, sp, #0x44 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + str r0, [r1, #0xc] + str r1, [sp] + add r0, sp, #0x48 + str r0, [sp, #4] + add r0, sp, #0x4c + add r3, r5, #0 + str r0, [sp, #8] + add r3, #0x90 + ldr r1, [sp, #0x14] + ldr r3, [r3] + add r0, r6, #0 + add r2, r5, #0 + bl FUN_0205DFE8 + cmp r0, #0 + bne _0223BB06 + mov r0, #0 + str r0, [sp, #0x50] + b _0223BB0C +_0223BB06: + mov r0, #1 + str r0, [sp, #0x10] + str r0, [sp, #0x50] +_0223BB0C: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BB18 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BB18: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + beq _0223BB2C + mov r0, #1 + str r0, [sp, #0xc] + b _0223BB30 +_0223BB2C: + mov r0, #0 + str r0, [sp, #0xc] +_0223BB30: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223BB98 + ldr r0, [sp, #0x50] + cmp r0, #0 + bne _0223BB98 + add r0, r5, #0 + add r1, sp, #0x28 + bl MOD06_0223D0E8 + cmp r0, #0 + beq _0223BB98 + ldr r0, [sp, #0x28] + mov r1, #6 + bl FUN_0202AAB8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, sp, #0x30 + bl MOD06_0223D030 + cmp r0, #0 + bne _0223BB92 + mov r0, #0xb + add r1, r0, #0 + add r1, #0xf5 + bl FUN_020476CC + str r0, [sp, #0x2c] + add r1, r5, #0 + bl FUN_02047BB0 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + bl MOD06_0223D044 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0205DD40 + ldr r1, [sp, #0x2c] + add r0, r5, #0 + bl FUN_020469B8 + add sp, #0xb4 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223BB92: + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BB98: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223BBB6 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, sp, #0x2c + bl MOD06_0223CFD0 + b _0223BBC0 +_0223BBB6: + mov r0, #0xb + mov r1, #0x4a + bl FUN_020476CC + str r0, [sp, #0x2c] +_0223BBC0: + ldr r0, [sp, #0x2c] + add r1, r5, #0 + bl FUN_02047BB0 + add r0, sp, #0x24 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0223BC84 + mov r7, #4 + mov r0, #0 + add r1, r4, #0 + add r2, sp, #0x54 + add r3, r7, #0 +_0223BBDA: + ldr r6, [r1, #8] + add r0, r0, #1 + str r6, [r2] + ldrsb r6, [r1, r7] + strh r6, [r2, #4] + ldrsb r6, [r1, r3] + add r1, #8 + strh r6, [r2, #6] + add r2, #8 + cmp r0, #0xc + blt _0223BBDA + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + add r0, r4, #0 + add r1, sp, #0x64 + add r2, sp, #0x6c + bl MOD06_0223B944 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x54 + add r3, sp, #0x5c + bl MOD06_0223B970 + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0x84 + add r3, sp, #0x8c + bl MOD06_0223B9A8 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0x94 + add r3, sp, #0x9c + bl MOD06_0224CDB8 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223BC5A + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0x54 + bl MOD06_0223CFFC + add r0, sp, #0x54 + str r0, [sp] + add r0, sp, #0x30 + str r0, [sp, #4] + add r0, sp, #0x44 + str r0, [sp, #8] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + add r3, r4, #0 + bl MOD06_0223C31C + b _0223BCCC +_0223BC5A: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + ldr r1, [sp, #0x2c] + mov r2, #0xb + str r0, [r1, #0x20] + ldr r0, [sp, #0x2c] + ldr r1, [r5, #0xc] + bl FUN_0206ABC4 + add r0, sp, #0x30 + str r0, [sp] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + add r3, sp, #0x54 + bl MOD06_0223C3F4 + b _0223BCCC +_0223BC84: + cmp r0, #1 + bne _0223BCBC + mov r0, #0 + add r1, sp, #0x54 + mov r3, #0xd0 + mov r6, #0xd1 +_0223BC90: + add r2, r4, #0 + add r2, #0xd4 + ldr r2, [r2] + add r0, r0, #1 + str r2, [r1] + ldrsb r2, [r4, r3] + strh r2, [r1, #4] + ldrsb r2, [r4, r6] + add r4, #8 + strh r2, [r1, #6] + add r1, #8 + cmp r0, #5 + blt _0223BC90 + add r0, sp, #0x30 + str r0, [sp] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + add r3, sp, #0x54 + bl MOD06_0223C438 + b _0223BCCC +_0223BCBC: + bl ErrorHandling + ldr r0, [sp, #0x2c] + bl FUN_02047964 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BCCC: + cmp r0, #0 + beq _0223BCDA + ldr r1, [sp, #0x2c] + add r0, r5, #0 + bl FUN_020469B8 + b _0223BCDE +_0223BCDA: + mov r0, #0 + str r0, [sp, #0x10] +_0223BCDE: + mov r0, #4 + bl FUN_02016B90 + cmp r0, #0 + bne _0223BCEC + bl ErrorHandling +_0223BCEC: + mov r0, #0xb + bl FUN_02016B90 + cmp r0, #0 + bne _0223BCFA + bl ErrorHandling +_0223BCFA: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BD06 + ldr r0, [sp, #0x2c] + bl FUN_02047964 +_0223BD06: + mov r0, #0 + add r5, #0x74 + strh r0, [r5] + ldr r0, [sp, #0x10] + add sp, #0xb4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223BD14 +MOD06_0223BD14: ; 0x0223BD14 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + bl MOD06_0223CE0C + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + bne _0223BD2E + add sp, #0x94 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BD2E: + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x14] + ldr r0, [sp, #8] + ldr r1, [sp, #0x14] + mov r2, #0 + add r3, sp, #0x20 + bl MOD06_0223D2DC + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r3, r0, #0 + ldr r0, [sp, #0x14] + add r1, r5, #0 + str r0, [sp] + mov r0, #1 + add r2, sp, #0x20 + bl MOD06_0223CF14 + add r6, r0, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _0223BD80 + bl ErrorHandling +_0223BD80: + cmp r5, r6 + blt _0223BD8A + add sp, #0x94 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BD8A: + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + add r1, r0, #0 + ldr r0, [sp, #8] + ldr r2, [sp, #0x10] + bl MOD06_0223CFD0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #8] + ldr r0, [r0] + bl FUN_02047BB0 + ldr r0, [sp, #0x10] + ldr r0, [r0] + bl FUN_020480AC + ldr r0, [sp, #8] + ldr r0, [r0, #0x1c] + ldr r0, [r0] + bl FUN_020349AC + cmp r0, #0 + beq _0223BDFC + ldr r0, [sp, #8] + bl MOD06_0224CC60 + cmp r0, #0 + beq _0223BDFC + add r0, sp, #0x18 + add r0, #1 + add r1, sp, #0x18 + bl MOD06_0224CD94 + add r0, sp, #0x1c + bl MOD06_0224CDA0 + add r0, sp, #0x18 + ldrb r3, [r0, #1] + ldrb r4, [r0] + ldr r2, [sp, #0x1c] + mov r1, #0 + add r0, sp, #0x34 +_0223BDE6: + lsl r5, r1, #3 + add r1, r1, #1 + lsl r1, r1, #0x18 + add r6, r0, r5 + str r2, [r0, r5] + strh r3, [r6, #4] + lsr r1, r1, #0x18 + strh r4, [r6, #6] + cmp r1, #5 + blo _0223BDE6 + b _0223BE4A +_0223BDFC: + ldr r0, [sp, #8] + bl FUN_02034CE0 + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _0223BE12 + cmp r1, #1 + beq _0223BE1A + cmp r1, #2 + beq _0223BE22 + b _0223BE28 +_0223BE12: + mov r1, #0x4a + lsl r1, r1, #2 + add r4, r0, r1 + b _0223BE28 +_0223BE1A: + mov r1, #0x55 + lsl r1, r1, #2 + add r4, r0, r1 + b _0223BE28 +_0223BE22: + mov r1, #6 + lsl r1, r1, #6 + add r4, r0, r1 +_0223BE28: + mov r6, #0 + add r1, sp, #0x34 + mov r7, #1 +_0223BE2E: + lsl r5, r6, #3 + add r3, r4, r5 + ldr r0, [r3, #4] + add r2, r1, r5 + str r0, [r1, r5] + ldrsb r0, [r4, r5] + strh r0, [r2, #4] + ldrsb r0, [r3, r7] + strh r0, [r2, #6] + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #5 + blo _0223BE2E +_0223BE4A: + add r0, sp, #0x20 + str r0, [sp] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0x14] + ldr r2, [r2] + add r3, sp, #0x34 + bl MOD06_0223C454 + cmp r0, #0 + bne _0223BE6A + add sp, #0x94 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BE6A: + mov r0, #1 + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223BE70 +MOD06_0223BE70: ; 0x0223BE70 + push {r4, r5, r6, r7, lr} + sub sp, #0xac + add r5, r0, #0 + ldr r0, [r5, #0x38] + str r1, [sp, #0xc] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0204A6E0 + add r1, r0, #0 + add r0, r5, #0 + add r2, sp, #0x1c + bl MOD06_0223C51C + cmp r0, #0 + bne _0223BEA4 + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BEA4: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02034CE0 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r4, #0 + add r3, sp, #0x28 + bl MOD06_0223D2DC + mov r0, #1 + mov r1, #0 + str r0, [sp, #0x30] + add r0, sp, #0x3c + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [sp, #0x2c] + str r1, [r0, #0xc] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + beq _0223BEF0 + mov r0, #1 + str r0, [sp, #0x10] + b _0223BEF4 +_0223BEF0: + mov r0, #0 + str r0, [sp, #0x10] +_0223BEF4: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BF3C + add r0, r5, #0 + add r1, sp, #0x20 + bl MOD06_0223D0E8 + cmp r0, #0 + beq _0223BF3C + mov r0, #0xb + add r1, r0, #0 + add r1, #0xf5 + bl FUN_020476CC + str r0, [sp, #0x24] + add r1, r5, #0 + bl FUN_02047BB0 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + bl MOD06_0223D044 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0205DD40 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x24] + add r0, r5, #0 + bl FUN_02046A20 + add sp, #0xac + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223BF3C: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BF5A + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + str r0, [sp, #0x14] + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, sp, #0x24 + bl MOD06_0223CFD0 + b _0223BF64 +_0223BF5A: + mov r0, #0xb + mov r1, #0x4a + bl FUN_020476CC + str r0, [sp, #0x24] +_0223BF64: + ldr r0, [sp, #0x24] + add r1, r5, #0 + bl FUN_02047BB0 + add r0, sp, #0x1c + ldrb r0, [r0] + cmp r0, #0 + bne _0223C028 + mov r7, #4 + mov r0, #0 + add r1, r4, #0 + add r2, sp, #0x4c + add r3, r7, #0 +_0223BF7E: + ldr r6, [r1, #8] + add r0, r0, #1 + str r6, [r2] + ldrsb r6, [r1, r7] + strh r6, [r2, #4] + ldrsb r6, [r1, r3] + add r1, #8 + strh r6, [r2, #6] + add r2, #8 + cmp r0, #0xc + blt _0223BF7E + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + add r0, r4, #0 + add r1, sp, #0x5c + add r2, sp, #0x64 + bl MOD06_0223B944 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x4c + add r3, sp, #0x54 + bl MOD06_0223B970 + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0x7c + add r3, sp, #0x84 + bl MOD06_0223B9A8 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0x8c + add r3, sp, #0x94 + bl MOD06_0224CDB8 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BFFE + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0x4c + bl MOD06_0223CFFC + add r0, sp, #0x4c + str r0, [sp] + add r0, sp, #0x28 + str r0, [sp, #4] + add r0, sp, #0x3c + str r0, [sp, #8] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r3, r4, #0 + bl MOD06_0223C31C + b _0223C06A +_0223BFFE: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + ldr r1, [sp, #0x24] + mov r2, #0xb + str r0, [r1, #0x20] + ldr r0, [sp, #0x24] + ldr r1, [r5, #0xc] + bl FUN_0206ABC4 + add r0, sp, #0x28 + str r0, [sp] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r3, sp, #0x4c + bl MOD06_0223C3F4 + b _0223C06A +_0223C028: + cmp r0, #1 + bne _0223C060 + mov r0, #0 + add r1, sp, #0x4c + mov r3, #0xd0 + mov r6, #0xd1 +_0223C034: + add r2, r4, #0 + add r2, #0xd4 + ldr r2, [r2] + add r0, r0, #1 + str r2, [r1] + ldrsb r2, [r4, r3] + strh r2, [r1, #4] + ldrsb r2, [r4, r6] + add r4, #8 + strh r2, [r1, #6] + add r1, #8 + cmp r0, #5 + blt _0223C034 + add r0, sp, #0x28 + str r0, [sp] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r3, sp, #0x4c + bl MOD06_0223C438 + b _0223C06A +_0223C060: + bl ErrorHandling + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C06A: + cmp r0, #0 + beq _0223C07A + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x24] + add r0, r5, #0 + bl FUN_02046A20 + b _0223C07E +_0223C07A: + bl ErrorHandling +_0223C07E: + mov r0, #0 + add r5, #0x74 + strh r0, [r5] + mov r0, #1 + add sp, #0xac + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C08C +MOD06_0223C08C: ; 0x0223C08C + push {r4, r5, r6, r7, lr} + sub sp, #0xac + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + str r0, [r4] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0204A6E0 + add r7, r0, #0 + add r2, sp, #0x20 + add r0, r5, #0 + add r1, r7, #0 + add r2, #1 + bl MOD06_0223C51C + add r1, sp, #0x20 + strb r0, [r1] + ldrb r0, [r1] + cmp r0, #0 + bne _0223C0CE + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C0CE: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02034CE0 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x1c] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r3, sp, #0x28 + bl MOD06_0223D2DC + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AB54 + cmp r0, #0 + bne _0223C118 + add r0, r6, #0 + bl FUN_0204A1D8 + mov r1, #1 + str r1, [sp, #0x2c] + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x20 + strb r0, [r1, #0x14] +_0223C118: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r3, r0, #0 + ldr r0, [sp, #0x1c] + add r1, sp, #0x20 + str r0, [sp] + ldrb r1, [r1] + mov r0, #0 + add r2, sp, #0x28 + bl MOD06_0223CF14 + add r1, sp, #0x20 + strb r0, [r1] + add r0, r5, #0 + add r1, sp, #0x20 + bl MOD06_0223C764 + ldr r0, [sp, #0x1c] + add r1, sp, #0x20 + bl MOD06_0223C738 + add r1, sp, #0x20 + ldrb r1, [r1] + add r0, r5, #0 + add r2, r7, #0 + bl MOD06_0223C470 + cmp r0, #0 + beq _0223C15E + mov r0, #1 + str r0, [sp, #0x10] + b _0223C162 +_0223C15E: + mov r0, #0 + str r0, [sp, #0x10] +_0223C162: + add r1, sp, #0x3c + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + str r0, [r1, #0xc] + str r0, [sp, #0x48] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + beq _0223C184 + mov r0, #1 + str r0, [sp, #0xc] + b _0223C188 +_0223C184: + mov r0, #0 + str r0, [sp, #0xc] +_0223C188: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223C1E0 + add r0, r5, #0 + add r1, sp, #0x24 + bl MOD06_0223D0E8 + cmp r0, #0 + beq _0223C1E0 + ldr r0, [sp, #0x24] + mov r1, #6 + bl FUN_0202AAB8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, sp, #0x28 + bl MOD06_0223D030 + cmp r0, #0 + bne _0223C1DA + mov r0, #0xb + add r1, r0, #0 + add r1, #0xf5 + bl FUN_020476CC + str r0, [r4] + add r1, r5, #0 + bl FUN_02047BB0 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + ldr r2, [r4] + bl MOD06_0223D044 + add r5, #0x90 + ldr r0, [r5] + bl FUN_0205DD40 + add sp, #0xac + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223C1DA: + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C1E0: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223C1FE + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r4, #0 + bl MOD06_0223CFD0 + b _0223C208 +_0223C1FE: + mov r0, #0xb + mov r1, #0x4a + bl FUN_020476CC + str r0, [r4] +_0223C208: + ldr r0, [r4] + add r1, r5, #0 + bl FUN_02047BB0 + add r0, sp, #0x20 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0223C2CC + mov r7, #4 + ldr r1, [sp, #0x14] + mov r0, #0 + add r2, sp, #0x4c + add r3, r7, #0 +_0223C222: + ldr r6, [r1, #8] + add r0, r0, #1 + str r6, [r2] + ldrsb r6, [r1, r7] + strh r6, [r2, #4] + ldrsb r6, [r1, r3] + add r1, #8 + strh r6, [r2, #6] + add r2, #8 + cmp r0, #0xc + blt _0223C222 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + ldr r0, [sp, #0x14] + add r1, sp, #0x5c + add r2, sp, #0x64 + bl MOD06_0223B944 + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, sp, #0x4c + add r3, sp, #0x54 + bl MOD06_0223B970 + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0x7c + add r3, sp, #0x84 + bl MOD06_0223B9A8 + ldr r0, [sp, #0x14] + add r1, r6, #0 + add r2, sp, #0x8c + add r3, sp, #0x94 + bl MOD06_0224CDB8 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223C2A2 + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0x4c + bl MOD06_0223CFFC + add r0, sp, #0x4c + str r0, [sp] + add r0, sp, #0x28 + str r0, [sp, #4] + add r0, sp, #0x3c + str r0, [sp, #8] + ldr r1, [sp, #0x1c] + ldr r2, [r4] + ldr r3, [sp, #0x14] + add r0, r5, #0 + bl MOD06_0223C31C + b _0223C2DC +_0223C2A2: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + ldr r1, [r4] + mov r2, #0xb + str r0, [r1, #0x20] + ldr r0, [r4] + ldr r1, [r5, #0xc] + bl FUN_0206ABC4 + add r0, sp, #0x28 + str r0, [sp] + ldr r1, [sp, #0x1c] + ldr r2, [r4] + add r0, r5, #0 + add r3, sp, #0x4c + bl MOD06_0223C3F4 + b _0223C2DC +_0223C2CC: + bl ErrorHandling + ldr r0, [r4] + bl FUN_02047964 + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C2DC: + cmp r0, #0 + bne _0223C2E4 + mov r0, #0 + str r0, [sp, #0x10] +_0223C2E4: + mov r0, #4 + bl FUN_02016B90 + cmp r0, #0 + bne _0223C2F2 + bl ErrorHandling +_0223C2F2: + mov r0, #0xb + bl FUN_02016B90 + cmp r0, #0 + bne _0223C300 + bl ErrorHandling +_0223C300: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223C30E + ldr r0, [r4] + bl FUN_02047964 + b _0223C314 +_0223C30E: + mov r0, #0 + add r5, #0x74 + strh r0, [r5] +_0223C314: + ldr r0, [sp, #0x10] + add sp, #0xac + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C31C +MOD06_0223C31C: ; 0x0223C31C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r6, [sp, #0x38] + add r5, r0, #0 + ldr r0, [r6, #0xc] + add r7, r2, #0 + str r1, [sp, #0x10] + ldr r4, [sp, #0x30] + cmp r0, #0 + beq _0223C3CA + ldr r0, [r6] + cmp r0, #1 + bne _0223C350 + ldr r0, [r3, #0x7c] + str r0, [r4, #0x20] + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + str r0, [r4, #0x28] + add r0, r3, #0 + add r0, #0x84 + ldr r0, [r0] + add r3, #0x88 + str r0, [r4, #0x50] + ldr r0, [r3] + str r0, [r4, #0x58] +_0223C350: + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #0x18 + add r2, sp, #0x14 + bl FUN_0205E098 + ldr r0, [r6, #4] + cmp r0, #1 + bne _0223C38C + add r0, r5, #0 + bl FUN_020377AC + bl FUN_020238F4 + bl FUN_020239BC + str r0, [sp] + ldr r0, [sp, #0x34] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + str r0, [sp, #8] + str r7, [sp, #0xc] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + ldr r3, [r6, #8] + bl MOD06_0223CBD4 + b _0223C3A6 +_0223C38C: + mov r0, #1 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x10] + str r0, [sp, #8] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x34] + str r0, [sp, #0xc] + add r0, r5, #0 + add r3, r4, #0 + bl MOD06_0223CC24 +_0223C3A6: + add r4, r0, #0 + cmp r4, #0 + beq _0223C3EC + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r5, #0x90 + ldr r3, [r5] + add r1, r6, #0 + bl FUN_0205DD80 + b _0223C3EC +_0223C3CA: + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r1, #0 + ldr r2, [sp, #0x34] + mov r1, #0xff + add r3, r4, #0 + str r7, [sp, #8] + bl MOD06_0223CA6C + add r4, r0, #0 + beq _0223C3EC + add r5, #0x90 + ldr r0, [r5] + bl FUN_0205DD40 +_0223C3EC: + add r0, r4, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C3F4 +MOD06_0223C3F4: ; 0x0223C3F4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + mov r0, #0 + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r1, #0xff + add r6, r3, #0 + str r4, [sp, #8] + bl MOD06_0223CA6C + cmp r0, #0 + bne _0223C41C + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0223C41C: + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r1, #0xff + add r3, r6, #0 + str r4, [sp, #8] + bl MOD06_0223CA6C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C438 +MOD06_0223C438: ; 0x0223C438 + push {lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r1, #0 + ldr r2, [sp, #0x10] + mov r1, #0xff + bl MOD06_0223CA6C + add sp, #0xc + pop {pc} + .align 2, 0 + + thumb_func_start MOD06_0223C454 +MOD06_0223C454: ; 0x0223C454 + push {lr} + sub sp, #0xc + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r1, #0 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + bl MOD06_0223CA6C + add sp, #0xc + pop {pc} + + thumb_func_start MOD06_0223C470 +MOD06_0223C470: ; 0x0223C470 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + lsl r1, r7, #8 + add r5, r0, #0 + add r6, r2, #0 + bl MOD06_0223C55C + cmp r0, #0 + bne _0223C4B0 + add r0, r5, #0 + add r0, #0x74 + ldrh r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x74 + strh r1, [r0] + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0223C4A8 + bl ErrorHandling +_0223C4A8: + cmp r4, #5 + blo _0223C4B0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223C4B0: + add r0, r6, #0 + mov r4, #0x28 + bl FUN_02054798 + cmp r0, #0 + beq _0223C4C4 + add r4, #0x1e + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 + b _0223C4D4 +_0223C4C4: + ldr r0, [r5, #0x38] + bl FUN_020553C4 + cmp r0, #1 + bne _0223C4D4 + add r4, #0x1e + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 +_0223C4D4: + add r0, r5, #0 + bl FUN_0204B33C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02249230 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x64 + bls _0223C4EC + mov r4, #0x64 +_0223C4EC: + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x64 + blo _0223C504 + bl ErrorHandling +_0223C504: + cmp r6, r4 + bge _0223C518 + add r0, r5, #0 + add r1, r7, #0 + bl MOD06_0223C584 + cmp r0, #0 + beq _0223C518 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223C518: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223C51C +MOD06_0223C51C: ; 0x0223C51C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl FUN_02054AFC + cmp r0, #0 + beq _0223C558 + add r0, r6, #0 + bl FUN_0205481C + cmp r0, #0 + beq _0223C548 + mov r0, #1 + strb r0, [r4] + add r0, r5, #0 + bl MOD06_0223CE00 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, r5, r6, pc} +_0223C548: + mov r0, #0 + strb r0, [r4] + add r0, r5, #0 + bl MOD06_0223CDF4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, r5, r6, pc} +_0223C558: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223C55C +MOD06_0223C55C: ; 0x0223C55C + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0xa + bl _u32_div_f + lsr r1, r0, #8 + cmp r1, #8 + bls _0223C570 + mov r1, #8 +_0223C570: + mov r0, #8 + add r4, #0x74 + sub r1, r0, r1 + ldrh r0, [r4] + cmp r0, r1 + blo _0223C580 + mov r0, #1 + pop {r4, pc} +_0223C580: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_0223C584 +MOD06_0223C584: ; 0x0223C584 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _0223C5A0 + bl ErrorHandling +_0223C5A0: + cmp r5, r4 + blo _0223C5A8 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223C5A8: + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223C5AC +MOD06_0223C5AC: ; 0x0223C5AC + push {r4, lr} + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0223C5C6 + bl ErrorHandling +_0223C5C6: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x14 + bhs _0223C5D2 + mov r0, #0 + pop {r4, pc} +_0223C5D2: + blo _0223C5DC + cmp r0, #0x28 + bhs _0223C5DC + mov r0, #1 + pop {r4, pc} +_0223C5DC: + cmp r0, #0x28 + blo _0223C5E8 + cmp r0, #0x32 + bhs _0223C5E8 + mov r0, #2 + pop {r4, pc} +_0223C5E8: + cmp r0, #0x32 + blo _0223C5F4 + cmp r0, #0x3c + bhs _0223C5F4 + mov r0, #3 + pop {r4, pc} +_0223C5F4: + cmp r0, #0x3c + blo _0223C600 + cmp r0, #0x46 + bhs _0223C600 + mov r0, #4 + pop {r4, pc} +_0223C600: + cmp r0, #0x46 + blo _0223C60C + cmp r0, #0x50 + bhs _0223C60C + mov r0, #5 + pop {r4, pc} +_0223C60C: + cmp r0, #0x50 + blo _0223C618 + cmp r0, #0x55 + bhs _0223C618 + mov r0, #6 + pop {r4, pc} +_0223C618: + cmp r0, #0x55 + blo _0223C624 + cmp r0, #0x5a + bhs _0223C624 + mov r0, #7 + pop {r4, pc} +_0223C624: + cmp r0, #0x5a + blo _0223C630 + cmp r0, #0x5e + bhs _0223C630 + mov r0, #8 + pop {r4, pc} +_0223C630: + cmp r0, #0x5e + blo _0223C63C + cmp r0, #0x62 + bhs _0223C63C + mov r0, #9 + pop {r4, pc} +_0223C63C: + cmp r0, #0x62 + bne _0223C644 + mov r0, #0xa + pop {r4, pc} +_0223C644: + mov r0, #0xb + pop {r4, pc} + + thumb_func_start MOD06_0223C648 +MOD06_0223C648: ; 0x0223C648 + push {r4, lr} + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0223C662 + bl ErrorHandling +_0223C662: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x3c + bhs _0223C66E + mov r0, #0 + pop {r4, pc} +_0223C66E: + blo _0223C678 + cmp r0, #0x5a + bhs _0223C678 + mov r0, #1 + pop {r4, pc} +_0223C678: + cmp r0, #0x5a + blo _0223C684 + cmp r0, #0x5f + bhs _0223C684 + mov r0, #2 + pop {r4, pc} +_0223C684: + cmp r0, #0x5f + blo _0223C690 + cmp r0, #0x63 + bhs _0223C690 + mov r0, #3 + pop {r4, pc} +_0223C690: + mov r0, #4 + pop {r4, pc} + + thumb_func_start MOD06_0223C694 +MOD06_0223C694: ; 0x0223C694 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r4, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x64 + blo _0223C6B2 + bl ErrorHandling +_0223C6B2: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + cmp r5, #0 + beq _0223C6C4 + cmp r5, #1 + beq _0223C6E8 + cmp r5, #2 + beq _0223C70C + b _0223C730 +_0223C6C4: + cmp r0, #0x3c + bhs _0223C6CC + mov r4, #0 + b _0223C734 +_0223C6CC: + cmp r0, #0x5a + bhs _0223C6D4 + mov r4, #1 + b _0223C734 +_0223C6D4: + cmp r0, #0x5f + bhs _0223C6DC + mov r4, #2 + b _0223C734 +_0223C6DC: + cmp r0, #0x63 + bhs _0223C6E4 + mov r4, #3 + b _0223C734 +_0223C6E4: + mov r4, #4 + b _0223C734 +_0223C6E8: + cmp r0, #0x28 + bhs _0223C6F0 + mov r4, #0 + b _0223C734 +_0223C6F0: + cmp r0, #0x50 + bhs _0223C6F8 + mov r4, #1 + b _0223C734 +_0223C6F8: + cmp r0, #0x5f + bhs _0223C700 + mov r4, #2 + b _0223C734 +_0223C700: + cmp r0, #0x63 + bhs _0223C708 + mov r4, #3 + b _0223C734 +_0223C708: + mov r4, #4 + b _0223C734 +_0223C70C: + cmp r0, #0x28 + bhs _0223C714 + mov r4, #0 + b _0223C734 +_0223C714: + cmp r0, #0x50 + bhs _0223C71C + mov r4, #1 + b _0223C734 +_0223C71C: + cmp r0, #0x5f + bhs _0223C724 + mov r4, #2 + b _0223C734 +_0223C724: + cmp r0, #0x63 + bhs _0223C72C + mov r4, #3 + b _0223C734 +_0223C72C: + mov r4, #4 + b _0223C734 +_0223C730: + bl ErrorHandling +_0223C734: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223C738 +MOD06_0223C738: ; 0x0223C738 + push {r4, lr} + add r4, r1, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r1, #0xe0 + beq _0223C754 + mov r0, #5 + lsl r0, r0, #6 + cmp r1, r0 + bne _0223C760 +_0223C754: + ldrb r0, [r4] + mov r1, #3 + lsl r0, r0, #1 + bl _s32_div_f + strb r0, [r4] +_0223C760: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C764 +MOD06_0223C764: ; 0x0223C764 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0 + bl FUN_0202A9B0 + bl FUN_0202AB80 + cmp r0, #1 + bne _0223C77E + ldrb r0, [r4] + asr r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_0223C77E: + cmp r0, #2 + bne _0223C78A + ldrb r1, [r4] + lsr r0, r1, #1 + add r0, r1, r0 + strb r0, [r4] +_0223C78A: + pop {r4, pc} + + thumb_func_start MOD06_0223C78C +MOD06_0223C78C: ; 0x0223C78C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + bne _0223C7C6 + ldrb r0, [r1, #0xe] + cmp r0, #0x1c + bne _0223C7C6 + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r5, r0, #0x10 + cmp r5, #2 + blo _0223C7AC + bl ErrorHandling +_0223C7AC: + cmp r5, #0 + bne _0223C7C6 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_020671BC + mov r1, #0x19 + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_0223C7C6: + bl FUN_0201B9EC + ldr r1, _0223C7E4 ; =0x00000A3E + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x19 + blo _0223C7DC + bl ErrorHandling +_0223C7DC: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + nop +_0223C7E4: .word 0x00000A3E + + thumb_func_start MOD06_0223C7E8 +MOD06_0223C7E8: ; 0x0223C7E8 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldrh r2, [r0, #6] + ldrh r1, [r0, #4] + cmp r1, r2 + blo _0223C7FC + lsl r0, r2, #0x18 + lsr r5, r0, #0x18 + lsl r0, r1, #0x18 + b _0223C802 +_0223C7FC: + lsl r0, r1, #0x18 + lsr r5, r0, #0x18 + lsl r0, r2, #0x18 +_0223C802: + lsr r4, r0, #0x18 + bl FUN_0201B9EC + sub r1, r4, r5 + add r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r6, r0, #0x18 + ldrb r0, [r7, #0xd] + cmp r0, #0 + bne _0223C84C + ldrb r0, [r7, #0xe] + cmp r0, #0x37 + beq _0223C82C + cmp r0, #0x48 + beq _0223C82C + cmp r0, #0x2e + bne _0223C84C +_0223C82C: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r7, r0, #0x10 + cmp r7, #2 + blo _0223C83C + bl ErrorHandling +_0223C83C: + cmp r7, #0 + bne _0223C848 + add r0, r5, r6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0223C848: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223C84C: + add r0, r5, r6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223C854 +MOD06_0223C854: ; 0x0223C854 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x10] + ldr r6, [sp, #0x40] + str r1, [sp, #0x14] + mov r0, #0xb + str r2, [sp, #0x18] + add r5, r3, #0 + bl FUN_020669C0 + str r0, [sp, #0x1c] + bl FUN_02066978 + ldrb r0, [r6, #0xd] + mov r7, #0 + cmp r0, #0 + bne _0223C8E0 + ldrb r0, [r6, #0xe] + cmp r0, #0x38 + bne _0223C8BE + ldr r0, [sp, #0x10] + mov r1, #0x12 + bl FUN_02068678 + cmp r0, #0 + beq _0223C8E0 + cmp r0, #0xfe + beq _0223C8E0 + cmp r0, #0xff + beq _0223C8E0 + bl FUN_0201B9EC + ldr r1, _0223C964 ; =0x00005556 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #3 + blo _0223C8A6 + bl ErrorHandling +_0223C8A6: + cmp r4, #0 + beq _0223C8E0 + ldr r0, [sp, #0x44] + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + mov r7, #1 + b _0223C8E0 +_0223C8BE: + cmp r0, #0x1c + bne _0223C8E0 + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223C8D2 + bl ErrorHandling +_0223C8D2: + cmp r4, #0 + bne _0223C8E0 + ldr r0, [sp, #0x44] + bl FUN_02068854 + str r0, [sp, #0x20] + mov r7, #1 +_0223C8E0: + add r0, r5, #0 + bl FUN_02068AD8 + add r4, r0, #0 + cmp r7, #0 + beq _0223C92E +_0223C8EC: + ldrb r0, [r6, #0xe] + cmp r0, #0x38 + bne _0223C914 + ldr r0, [sp, #0x10] + add r1, r4, #0 + bl FUN_02068A20 + add r7, r0, #0 + cmp r7, #2 + bne _0223C904 + bl ErrorHandling +_0223C904: + ldr r0, [sp, #0x24] + cmp r7, r0 + bne _0223C92E + add r0, r5, #0 + bl FUN_02068AD8 + add r4, r0, #0 + b _0223C8EC +_0223C914: + cmp r0, #0x1c + bne _0223C8EC + add r0, r4, #0 + bl FUN_02068884 + ldr r1, [sp, #0x20] + cmp r0, r1 + beq _0223C92E + add r0, r5, #0 + bl FUN_02068AD8 + add r4, r0, #0 + b _0223C8EC +_0223C92E: + mov r0, #1 + str r0, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r0, [r6] + mov r3, #0x20 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl FUN_02066ACC + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x48] + add r1, r6, #0 + bl MOD06_0223D1BC + cmp r0, #0 + bne _0223C95A + bl ErrorHandling +_0223C95A: + ldr r0, [sp, #0x1c] + bl FUN_02016A18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C964: .word 0x00005556 + + thumb_func_start MOD06_0223C968 +MOD06_0223C968: ; 0x0223C968 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0xb + str r1, [sp, #0xc] + str r2, [sp, #0x10] + add r5, r3, #0 + bl FUN_020669C0 + add r4, r0, #0 + bl FUN_02066978 + add r0, r7, #0 + mov r1, #0x12 + mov r6, #1 + bl FUN_02068678 + cmp r0, #0 + beq _0223C996 + cmp r0, #0xfe + beq _0223C996 + cmp r0, #0xff + bne _0223C998 +_0223C996: + mov r6, #0 +_0223C998: + cmp r6, #0 + beq _0223CA28 + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _0223CA28 + ldrb r0, [r5, #0xe] + cmp r0, #0x38 + bne _0223CA28 + bl FUN_0201B9EC + ldr r1, _0223CA68 ; =0x00005556 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #3 + blo _0223C9BE + bl ErrorHandling +_0223C9BE: + cmp r6, #0 + beq _0223CA28 + ldr r0, [sp, #0x28] + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #1 + bne _0223C9D8 + mov r6, #0 + b _0223C9E4 +_0223C9D8: + cmp r6, #0 + bne _0223C9E0 + mov r6, #1 + b _0223C9E4 +_0223C9E0: + bl ErrorHandling +_0223C9E4: + ldr r0, [sp, #0x28] + add r1, r5, #0 + bl MOD06_0223C78C + str r6, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + mov r3, #0x20 + bl FUN_02066DD4 + add r0, r4, #0 + mov r1, #7 + add r2, r5, #0 + bl FUN_02067830 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x2c] + add r1, r5, #0 + add r2, r4, #0 + bl MOD06_0223D1BC + cmp r0, #0 + bne _0223CA1E + bl ErrorHandling +_0223CA1E: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223CA28: + ldr r0, [sp, #0x28] + add r1, r5, #0 + bl MOD06_0223C78C + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + mov r3, #0x20 + bl FUN_02066D90 + add r0, r4, #0 + mov r1, #7 + add r2, r5, #0 + bl FUN_02067830 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x2c] + add r1, r5, #0 + add r2, r4, #0 + bl MOD06_0223D1BC + cmp r0, #0 + bne _0223CA5C + bl ErrorHandling +_0223CA5C: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223CA68: .word 0x00005556 + + thumb_func_start MOD06_0223CA6C +MOD06_0223CA6C: ; 0x0223CA6C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #0xc] + mov r7, #0 + add r1, sp, #0x10 + strb r7, [r1] + add r1, sp, #0x18 + ldrb r1, [r1, #0x10] + add r6, r0, #0 + add r5, r2, #0 + add r4, r3, #0 + cmp r1, #0 + beq _0223CA90 + cmp r1, #1 + beq _0223CAEC + cmp r1, #2 + beq _0223CB38 + b _0223CB86 +_0223CA90: + mov r1, #8 + str r1, [sp] + mov r1, #0x2a + str r1, [sp, #4] + add r1, sp, #0x10 + str r1, [sp, #8] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #0xc + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CACE + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #0xc + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CACE + bl MOD06_0223C5AC + add r1, sp, #0x10 + strb r0, [r1] +_0223CACE: + add r2, sp, #0x10 + ldrb r2, [r2] + add r0, r4, #0 + add r1, r5, #0 + bl MOD06_0223D27C + add r1, sp, #0x10 + strb r0, [r1] + ldrb r0, [r1] + lsl r0, r0, #3 + add r0, r4, r0 + ldrh r0, [r0, #4] + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + b _0223CB8A +_0223CAEC: + mov r1, #8 + str r1, [sp] + mov r1, #0x2a + str r1, [sp, #4] + add r1, sp, #0x10 + str r1, [sp, #8] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CB26 + bl MOD06_0223C648 + add r1, sp, #0x10 + strb r0, [r1] +_0223CB26: + add r0, sp, #0x10 + ldrb r0, [r0] + add r1, r5, #0 + lsl r0, r0, #3 + add r0, r4, r0 + bl MOD06_0223C7E8 + add r7, r0, #0 + b _0223CB8A +_0223CB38: + mov r1, #8 + str r1, [sp] + mov r1, #0x2a + str r1, [sp, #4] + add r1, sp, #0x10 + str r1, [sp, #8] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CB74 + ldr r0, [sp, #0xc] + bl MOD06_0223C694 + add r1, sp, #0x10 + strb r0, [r1] +_0223CB74: + add r0, sp, #0x10 + ldrb r0, [r0] + add r1, r5, #0 + lsl r0, r0, #3 + add r0, r4, r0 + bl MOD06_0223C7E8 + add r7, r0, #0 + b _0223CB8A +_0223CB86: + bl ErrorHandling +_0223CB8A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD06_0223CF78 + cmp r0, #0 + beq _0223CB9E + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223CB9E: + add r0, r7, #0 + add r1, r5, #0 + bl MOD06_0223D030 + cmp r0, #1 + bne _0223CBB0 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223CBB0: + ldr r0, [sp, #0x30] + str r6, [sp] + str r0, [sp, #4] + add r0, sp, #0x10 + ldrb r0, [r0] + ldr r2, [sp, #0x2c] + add r1, r7, #0 + lsl r0, r0, #3 + ldr r0, [r4, r0] + add r3, r5, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD06_0223C968 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CBD4 +MOD06_0223CBD4: ; 0x0223CBD4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _0223CBE8 + bl ErrorHandling +_0223CBE8: + lsl r0, r4, #0x18 + lsr r1, r0, #0x18 + cmp r7, #0 + beq _0223CC0A + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [sp, #0x28] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + str r0, [sp, #8] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl MOD06_0223C854 + b _0223CC1E +_0223CC0A: + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x24] + str r0, [sp] + ldr r0, [sp, #0x2c] + add r2, r6, #0 + str r0, [sp, #4] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl MOD06_0223C968 +_0223CC1E: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223CC24 +MOD06_0223CC24: ; 0x0223CC24 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0] + mov r0, #8 + str r0, [sp] + mov r0, #0x2a + add r5, r3, #0 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + str r2, [sp, #0xc] + add r1, r2, #0 + add r0, r6, #0 + add r2, r5, #0 + mov r3, #0xc + bl MOD06_0223CED4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _0223CC7A + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + ldr r1, [sp, #0xc] + add r0, r6, #0 + add r2, r5, #0 + mov r3, #0xc + bl MOD06_0223CED4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _0223CC7A + bl MOD06_0223C5AC + add r1, sp, #0x10 + strb r0, [r1] +_0223CC7A: + add r0, sp, #0x10 + ldrb r0, [r0] + lsl r0, r0, #3 + add r1, r5, r0 + ldrh r1, [r1, #4] + ldr r5, [r5, r0] + ldr r0, [sp, #0x30] + lsl r1, r1, #0x18 + lsr r7, r1, #0x18 + cmp r0, #0 + bne _0223CCA6 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r5, #0 + add r2, r7, #0 + bl FUN_0205E080 + add r0, r4, #0 + bl FUN_0205E480 + b _0223CCC2 +_0223CCA6: + cmp r5, r0 + bne _0223CCBA + add r5, r0, #0 + ldr r0, [sp, #0x34] + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r4, #0 + bl FUN_0205E480 + b _0223CCC2 +_0223CCBA: + add r4, #0x90 + ldr r0, [r4] + bl FUN_0205DD40 +_0223CCC2: + ldr r0, [sp, #0x2c] + str r6, [sp] + str r0, [sp, #4] + lsl r0, r5, #0x10 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0xc] + lsr r0, r0, #0x10 + add r1, r7, #0 + bl MOD06_0223C968 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223CCDC +MOD06_0223CCDC: ; 0x0223CCDC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_021F51D0 + str r0, [sp, #8] + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0xc] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0 + add r3, sp, #0x10 + bl MOD06_0223D2DC + bl FUN_0201B9EC + ldr r1, _0223CD78 ; =0x00001746 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0xb + blo _0223CD1A + bl ErrorHandling +_0223CD1A: + add r0, r6, #5 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, sp, #0x10 + ldrb r1, [r0, #0xd] + cmp r1, #0 + bne _0223CD4C + ldrb r0, [r0, #0xe] + cmp r0, #0x37 + beq _0223CD36 + cmp r0, #0x48 + beq _0223CD36 + cmp r0, #0x2e + bne _0223CD4C +_0223CD36: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r6, r0, #0x10 + cmp r6, #2 + blo _0223CD46 + bl ErrorHandling +_0223CD46: + cmp r6, #0 + beq _0223CD4C + mov r7, #0xf +_0223CD4C: + add r0, r5, #0 + bl FUN_021F522C + mov r1, #0x63 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #2 + orr r0, r2 + str r0, [r4, r1] + ldr r0, [sp, #0xc] + add r1, r7, #0 + str r0, [sp] + ldr r0, [sp, #8] + mov r2, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r3, sp, #0x10 + str r4, [sp, #4] + bl MOD06_0223C968 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223CD78: .word 0x00001746 + + thumb_func_start MOD06_0223CD7C +MOD06_0223CD7C: ; 0x0223CD7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r2, [sp, #8] + ldr r0, [r5, #0xc] + add r7, r1, #0 + add r6, r3, #0 + bl FUN_0206BB1C + mov r1, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + add r3, sp, #0xc + bl MOD06_0223D2DC + str r4, [sp] + str r6, [sp, #4] + ldr r1, [sp, #8] + add r0, r7, #0 + mov r2, #1 + add r3, sp, #0xc + bl MOD06_0223C968 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CDB8 +MOD06_0223CDB8: ; 0x0223CDB8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r4, #0 + bl FUN_02054AFC + cmp r0, #0 + beq _0223CDE6 + add r0, r6, #0 + bl FUN_0205481C + cmp r0, #0 + beq _0223CDDE + add r0, r5, #0 + bl MOD06_0223CE00 + add r4, r0, #0 + b _0223CDE6 +_0223CDDE: + add r0, r5, #0 + bl MOD06_0223CDF4 + add r4, r0, #0 +_0223CDE6: + cmp r4, #0 + beq _0223CDEE + mov r0, #1 + pop {r4, r5, r6, pc} +_0223CDEE: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CDF4 +MOD06_0223CDF4: ; 0x0223CDF4 + push {r3, lr} + bl FUN_02034CE0 + ldr r0, [r0] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CE00 +MOD06_0223CE00: ; 0x0223CE00 + push {r3, lr} + bl FUN_02034CE0 + add r0, #0xcc + ldr r0, [r0] + pop {r3, pc} + + thumb_func_start MOD06_0223CE0C +MOD06_0223CE0C: ; 0x0223CE0C + push {r4, lr} + add r4, r1, #0 + bl FUN_02034CE0 + cmp r4, #0 + beq _0223CE22 + cmp r4, #1 + beq _0223CE2A + cmp r4, #2 + beq _0223CE32 + b _0223CE3A +_0223CE22: + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r4, pc} +_0223CE2A: + mov r1, #0x15 + lsl r1, r1, #4 + ldr r0, [r0, r1] + pop {r4, pc} +_0223CE32: + mov r1, #0x5f + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r4, pc} +_0223CE3A: + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CE44 +MOD06_0223CE44: ; 0x0223CE44 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + mov r0, #0 + str r1, [sp] + add r7, r2, #0 + str r3, [sp, #4] + add r4, r0, #0 + add r1, sp, #0x10 +_0223CE56: + strb r4, [r1, r0] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xc + blo _0223CE56 + ldr r0, [sp] + add r5, r4, #0 + cmp r0, #0 + bls _0223CEAC +_0223CE6A: + lsl r0, r5, #3 + str r0, [sp, #0xc] + ldr r0, [r6, r0] + mov r1, #6 + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #7 + ldr r0, [r6, r0] + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #8] + cmp r0, r7 + beq _0223CE94 + cmp r1, r7 + bne _0223CEA0 +_0223CE94: + add r1, r4, #1 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r4, r1, #0x18 + add r1, sp, #0x10 + strb r5, [r1, r0] +_0223CEA0: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp] + cmp r5, r0 + blo _0223CE6A +_0223CEAC: + cmp r4, #0 + beq _0223CEB6 + ldr r0, [sp] + cmp r4, r0 + bne _0223CEBC +_0223CEB6: + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223CEBC: + bl FUN_0201B9EC + add r1, r4, #0 + bl _s32_div_f + add r0, sp, #0x10 + ldrb r1, [r0, r1] + ldr r0, [sp, #4] + strb r1, [r0] + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223CED4 +MOD06_0223CED4: ; 0x0223CED4 + push {r4, r5, r6, lr} + ldrb r0, [r1, #0xd] + add r5, r2, #0 + add r6, r3, #0 + cmp r0, #0 + bne _0223CF0E + add r0, sp, #0 + ldrb r1, [r1, #0xe] + ldrb r0, [r0, #0x14] + cmp r1, r0 + bne _0223CF0E + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223CEFA + bl ErrorHandling +_0223CEFA: + cmp r4, #0 + bne _0223CF0E + add r2, sp, #0 + ldrb r2, [r2, #0x10] + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223CE44 + pop {r4, r5, r6, pc} +_0223CF0E: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CF14 +MOD06_0223CF14: ; 0x0223CF14 + push {r3, r4} + ldrb r4, [r2, #0xd] + cmp r4, #0 + bne _0223CF70 + cmp r0, #0 + ldrb r0, [r2, #0xe] + beq _0223CF26 + cmp r0, #0x3c + b _0223CF6A +_0223CF26: + cmp r0, #0x47 + beq _0223CF32 + cmp r0, #0x63 + beq _0223CF32 + cmp r0, #0x23 + bne _0223CF36 +_0223CF32: + lsl r1, r1, #1 + b _0223CF6A +_0223CF36: + cmp r0, #8 + bne _0223CF46 + cmp r3, #0xa + bne _0223CF6A + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + b _0223CF6A +_0223CF46: + cmp r0, #0x51 + bne _0223CF58 + sub r0, r3, #5 + cmp r0, #2 + bhi _0223CF6A + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + b _0223CF6A +_0223CF58: + cmp r0, #0x49 + beq _0223CF64 + cmp r0, #0x5f + beq _0223CF64 + cmp r0, #1 + bne _0223CF6A +_0223CF64: + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 +_0223CF6A: + cmp r1, #0x64 + ble _0223CF70 + mov r1, #0x64 +_0223CF70: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4} + bx lr + + thumb_func_start MOD06_0223CF78 +MOD06_0223CF78: ; 0x0223CF78 + push {r4, lr} + add r4, r2, #0 + ldr r2, [r0, #8] + cmp r2, #0 + beq _0223CF86 + mov r0, #0 + pop {r4, pc} +_0223CF86: + ldrb r2, [r0, #0xd] + cmp r2, #0 + bne _0223CFCA + ldrb r0, [r0, #0xe] + cmp r0, #0x33 + beq _0223CF96 + cmp r0, #0x16 + bne _0223CFCA +_0223CF96: + add r0, r1, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #5 + bhi _0223CFAC + mov r0, #0 + pop {r4, pc} +_0223CFAC: + sub r0, r0, #5 + cmp r4, r0 + bgt _0223CFCA + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223CFC2 + bl ErrorHandling +_0223CFC2: + cmp r4, #0 + bne _0223CFCA + mov r0, #1 + pop {r4, pc} +_0223CFCA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CFD0 +MOD06_0223CFD0: ; 0x0223CFD0 + push {r4, lr} + add r4, r2, #0 + cmp r1, #0 + bne _0223CFE4 + mov r0, #0xb + mov r1, #0 + bl FUN_020476CC + str r0, [r4] + pop {r4, pc} +_0223CFE4: + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034E24 + add r1, r0, #0 + ldrh r1, [r1] + mov r0, #0xb + bl FUN_020477EC + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_0223CFFC +MOD06_0223CFFC: ; 0x0223CFFC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r2, #0 + add r4, r3, #0 + cmp r1, #0 + beq _0223D02A + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + mov r1, #1 + bl FUN_0202A990 + add r1, r4, #0 + add r1, #0x38 + str r1, [sp] + ldr r2, [r5, #0x1c] + add r4, #0x30 + ldr r2, [r2] + add r1, r6, #0 + add r3, r4, #0 + bl MOD06_02245658 +_0223D02A: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223D030 +MOD06_0223D030: ; 0x0223D030 + ldr r2, [r1, #4] + cmp r2, #0 + beq _0223D040 + ldrb r1, [r1, #0xc] + cmp r1, r0 + bls _0223D040 + mov r0, #1 + bx lr +_0223D040: + mov r0, #0 + bx lr + + thumb_func_start MOD06_0223D044 +MOD06_0223D044: ; 0x0223D044 + push {r0, r1, r2, r3} + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + mov r0, #4 + add r6, r2, #0 + bl FUN_020669C0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl FUN_0202AAB8 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #6 + bl FUN_0202AAB8 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r5, #0 + mov r1, #2 + bl FUN_0202AAB8 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #3 + bl FUN_0202AAB8 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #7 + bl FUN_0202AAB8 + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #5 + bl FUN_0202AAB8 + add r1, sp, #0x10 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r0, [sp, #0xc] + lsl r1, r1, #0x10 + str r0, [sp] + ldr r3, [sp, #8] + add r0, r4, #0 + lsr r1, r1, #0x10 + add r2, r7, #0 + bl FUN_02066EA4 + add r0, r4, #0 + mov r1, #7 + add r2, sp, #0x30 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0x9f + add r2, sp, #0x14 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0xa2 + add r2, sp, #0x10 + bl FUN_02067830 + ldr r0, [r6, #8] + add r1, r4, #0 + bl FUN_0206B900 + cmp r0, #0 + bne _0223D0D8 + bl ErrorHandling +_0223D0D8: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start MOD06_0223D0E8 +MOD06_0223D0E8: ; 0x0223D0E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + ldr r0, [r0, #0xc] + str r1, [sp, #4] + mov r5, #0 + bl FUN_0202A9B0 + add r6, r0, #0 + add r4, r5, #0 +_0223D0FC: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202AA40 + bl FUN_0206043C + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202AA74 + cmp r0, #0 + beq _0223D134 + ldr r0, [sp] + ldr r0, [r0, #0x1c] + ldr r0, [r0] + cmp r7, r0 + bne _0223D134 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202AAA0 + lsl r2, r5, #2 + add r1, sp, #8 + str r0, [r1, r2] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0223D134: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _0223D0FC + cmp r5, #0 + bne _0223D148 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D148: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223D158 + bl ErrorHandling +_0223D158: + cmp r4, #0 + bne _0223D162 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D162: + cmp r5, #1 + bls _0223D1AA + cmp r5, #0 + bne _0223D16E + bl ErrorHandling +_0223D16E: + cmp r5, #1 + bhi _0223D176 + mov r4, #0 + b _0223D19E +_0223D176: + bl FUN_0201B9EC + add r4, r0, #0 + ldr r0, _0223D1B8 ; =0x0000FFFF + add r1, r5, #0 + bl _s32_div_f + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blo _0223D19E + bl ErrorHandling +_0223D19E: + lsl r1, r4, #2 + add r0, sp, #8 + ldr r1, [r0, r1] + ldr r0, [sp, #4] + str r1, [r0] + b _0223D1B0 +_0223D1AA: + ldr r1, [sp, #8] + ldr r0, [sp, #4] + str r1, [r0] +_0223D1B0: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223D1B8: .word 0x0000FFFF + + thumb_func_start MOD06_0223D1BC +MOD06_0223D1BC: ; 0x0223D1BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp] + ldrb r0, [r5, #0xd] + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + bne _0223D1D8 + ldrb r0, [r5, #0xe] + cmp r0, #0xe + bne _0223D1D8 + mov r2, #1 + b _0223D1DA +_0223D1D8: + mov r2, #0 +_0223D1DA: + ldr r1, [r7] + add r0, r6, #0 + bl FUN_0206A094 + mov r4, #0 + add r0, r6, #0 + mov r1, #5 + add r2, r4, #0 + bl FUN_020671BC + ldr r1, _0223D270 ; =0x000001A6 + cmp r0, r1 + bne _0223D208 + ldrb r0, [r5, #0xf] + mov r4, #1 + cmp r0, #0 + add r0, sp, #8 + bne _0223D204 + mov r1, #0 + strb r1, [r0] + b _0223D24E +_0223D204: + strb r4, [r0] + b _0223D24E +_0223D208: + add r1, r1, #1 + cmp r0, r1 + bne _0223D222 + ldrb r0, [r5, #0x10] + mov r4, #1 + cmp r0, #0 + add r0, sp, #8 + bne _0223D21E + mov r1, #0 + strb r1, [r0] + b _0223D24E +_0223D21E: + strb r4, [r0] + b _0223D24E +_0223D222: + cmp r0, #0xc9 + bne _0223D24E + ldrb r0, [r5, #0x11] + mov r4, #1 + lsl r1, r0, #3 + ldr r0, _0223D274 ; =0x0224F308 + ldr r0, [r0, r1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + bl FUN_0201B9EC + ldr r1, [sp, #4] + bl _s32_div_f + ldrb r0, [r5, #0x11] + lsl r2, r0, #3 + ldr r0, _0223D278 ; =0x0224F30C + ldr r0, [r0, r2] + ldrb r1, [r0, r1] + add r0, sp, #8 + strb r1, [r0] +_0223D24E: + cmp r4, #0 + beq _0223D25C + add r0, r6, #0 + mov r1, #0x70 + add r2, sp, #8 + bl FUN_02067830 +_0223D25C: + ldr r0, [sp] + add r1, r6, #0 + lsl r0, r0, #2 + add r0, r7, r0 + ldr r0, [r0, #4] + bl FUN_0206B900 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223D270: .word 0x000001A6 +_0223D274: .word 0x0224F308 +_0223D278: .word 0x0224F30C + + thumb_func_start MOD06_0223D27C +MOD06_0223D27C: ; 0x0223D27C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r1, #0xd] + add r4, r2, #0 + cmp r0, #0 + bne _0223D2D8 + ldrb r0, [r1, #0xe] + cmp r0, #0x48 + beq _0223D296 + cmp r0, #0x37 + beq _0223D296 + cmp r0, #0x2e + bne _0223D2D8 +_0223D296: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r6, r0, #0x10 + cmp r6, #2 + blo _0223D2A6 + bl ErrorHandling +_0223D2A6: + cmp r6, #0 + bne _0223D2AE + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D2AE: + mov r1, #0 +_0223D2B0: + lsl r2, r1, #3 + lsl r7, r4, #3 + add r6, r5, r2 + ldr r3, [r5, r2] + ldr r2, [r5, r7] + add r0, r5, r7 + cmp r3, r2 + bne _0223D2CA + ldrh r2, [r6, #4] + ldrh r0, [r0, #4] + cmp r2, r0 + bls _0223D2CA + add r4, r1, #0 +_0223D2CA: + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, #0xc + blo _0223D2B0 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D2D8: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223D2DC +MOD06_0223D2DC: ; 0x0223D2DC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + add r0, r7, #0 + mov r1, #0x4c + mov r2, #0 + add r4, r3, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0223D302 + mov r2, #0 + add r0, r7, #0 + mov r1, #0xa + strb r2, [r4, #0xd] + bl FUN_020671BC + b _0223D308 +_0223D302: + mov r0, #1 + strb r0, [r4, #0xd] + mov r0, #0x7b +_0223D308: + strb r0, [r4, #0xe] + mov r0, #0 + strb r0, [r4, #0xc] + str r0, [r4, #4] + str r0, [r4, #8] + cmp r5, #0 + beq _0223D344 + add r1, r5, #0 + add r1, #0x8c + ldr r1, [r1] + strb r1, [r4, #0xf] + add r1, r5, #0 + add r1, #0x90 + ldr r1, [r1] + strb r1, [r4, #0x10] + add r1, r5, #0 + add r1, #0xa0 + ldr r1, [r1] + cmp r1, #0 + beq _0223D342 + cmp r1, #8 + ble _0223D338 + bl ErrorHandling +_0223D338: + add r5, #0xa0 + ldr r0, [r5] + sub r0, r0, #1 + strb r0, [r4, #0x11] + b _0223D344 +_0223D342: + strb r0, [r4, #0x11] +_0223D344: + ldr r0, [r6, #0xc] + bl FUN_020238F4 + bl FUN_020239BC + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223D354 +MOD06_0223D354: ; 0x0223D354 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + ldr r2, _0223D3B0 ; =0x0000FFFF + mov r0, #0 + lsl r1, r1, #8 +_0223D362: + lsl r3, r0, #1 + ldrh r3, [r4, r3] + cmp r3, r2 + beq _0223D374 + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, r1 + blo _0223D362 +_0223D374: + mov r1, #0x8b + lsl r1, r1, #2 + strb r0, [r5, r1] + ldrb r1, [r5, r1] + mov r0, #0xb + lsl r1, r1, #1 + bl FUN_02016998 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r5, r1] + add r1, r1, #4 + ldrb r1, [r5, r1] + mov r0, #0 + cmp r1, #0 + ble _0223D3AE + mov r1, #0x8a + lsl r1, r1, #2 + add r2, r1, #4 +_0223D39A: + lsl r7, r0, #1 + ldrh r6, [r4, r7] + ldr r3, [r5, r1] + add r0, r0, #1 + strh r6, [r3, r7] + lsl r0, r0, #0x10 + ldrb r3, [r5, r2] + lsr r0, r0, #0x10 + cmp r0, r3 + blt _0223D39A +_0223D3AE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D3B0: .word 0x0000FFFF + + thumb_func_start MOD06_0223D3B4 +MOD06_0223D3B4: ; 0x0223D3B4 + push {r4, lr} + mov r1, #0x93 + mov r0, #0xb + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x93 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD06_0223D3D0 +MOD06_0223D3D0: ; 0x0223D3D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + str r2, [sp] + add r6, r3, #0 + bl MOD06_0223D3B4 + add r4, r0, #0 + ldr r0, [r5, #8] + mov r1, #0xb + str r0, [r4] + mov r0, #0x60 + bl FUN_020219F4 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_020238F4 + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x87 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_020462AC + mov r1, #0x22 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r2, [sp, #0x18] + add r0, r1, #4 + str r2, [r4, r0] + add r0, r5, #0 + bl MOD06_0223D490 + ldr r1, _0223D488 ; =0x0000023E + strb r0, [r4, r1] + add r0, r5, #0 + add r0, #0x98 + ldr r2, [r0] + add r0, r1, #0 + sub r0, #0x26 + str r2, [r4, r0] + add r0, r1, #3 + strb r6, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223D456 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + b _0223D472 +_0223D456: + cmp r0, #1 + ldr r0, [r5, #0xc] + bne _0223D468 + bl FUN_02026CC4 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + b _0223D472 +_0223D468: + bl FUN_02029C80 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] +_0223D472: + ldr r1, [sp] + add r0, r4, #0 + bl MOD06_0223D354 + ldr r1, _0223D48C ; =MOD06_0223D4AC + add r0, r7, #0 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D488: .word 0x0000023E +_0223D48C: .word MOD06_0223D4AC + + thumb_func_start MOD06_0223D490 +MOD06_0223D490: ; 0x0223D490 + push {r3, lr} + ldr r0, [r0, #0x38] + bl FUN_020552F8 + cmp r0, #0 + beq _0223D4A4 + cmp r0, #1 + beq _0223D4A4 + cmp r0, #3 + bne _0223D4A8 +_0223D4A4: + mov r0, #0xa + pop {r3, pc} +_0223D4A8: + mov r0, #8 + pop {r3, pc} + + thumb_func_start MOD06_0223D4AC +MOD06_0223D4AC: ; 0x0223D4AC + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + ldr r1, _0223D604 ; =0x0000022F + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0x14 + bls _0223D4C8 + b _0223D5D0 +_0223D4C8: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D4D4: ; jump table + .short _0223D4FE - _0223D4D4 - 2 ; case 0 + .short _0223D50A - _0223D4D4 - 2 ; case 1 + .short _0223D514 - _0223D4D4 - 2 ; case 2 + .short _0223D524 - _0223D4D4 - 2 ; case 3 + .short _0223D52E - _0223D4D4 - 2 ; case 4 + .short _0223D538 - _0223D4D4 - 2 ; case 5 + .short _0223D542 - _0223D4D4 - 2 ; case 6 + .short _0223D54C - _0223D4D4 - 2 ; case 7 + .short _0223D556 - _0223D4D4 - 2 ; case 8 + .short _0223D560 - _0223D4D4 - 2 ; case 9 + .short _0223D56A - _0223D4D4 - 2 ; case 10 + .short _0223D574 - _0223D4D4 - 2 ; case 11 + .short _0223D57E - _0223D4D4 - 2 ; case 12 + .short _0223D58C - _0223D4D4 - 2 ; case 13 + .short _0223D596 - _0223D4D4 - 2 ; case 14 + .short _0223D5A0 - _0223D4D4 - 2 ; case 15 + .short _0223D5D0 - _0223D4D4 - 2 ; case 16 + .short _0223D5D0 - _0223D4D4 - 2 ; case 17 + .short _0223D5A8 - _0223D4D4 - 2 ; case 18 + .short _0223D5B6 - _0223D4D4 - 2 ; case 19 + .short _0223D5C6 - _0223D4D4 - 2 ; case 20 +_0223D4FE: + bl MOD06_0223D608 + ldr r0, _0223D604 ; =0x0000022F + mov r1, #1 + strb r1, [r4, r0] + b _0223D5D0 +_0223D50A: + bl MOD06_0223D788 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D514: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223D918 + ldr r0, _0223D604 ; =0x0000022F + mov r1, #3 + strb r1, [r4, r0] + b _0223D5D0 +_0223D524: + bl MOD06_0223DB64 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D52E: + bl MOD06_0223DFB4 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D538: + bl MOD06_0223E198 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D542: + bl MOD06_0223E29C + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D54C: + bl MOD06_0223E5E4 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D556: + bl MOD06_0223E61C + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D560: + bl MOD06_0223E79C + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D56A: + bl MOD06_0223E858 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D574: + bl MOD06_0223E950 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D57E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223EA38 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D58C: + bl MOD06_0223EB04 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D596: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223ECD8 + b _0223D5D0 +_0223D5A0: + add r0, r6, #0 + bl MOD06_0223ECF0 + b _0223D5D0 +_0223D5A8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223ED54 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D5B6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223EB2C + ldr r0, _0223D604 ; =0x0000022F + mov r1, #0x14 + strb r1, [r4, r0] + b _0223D5D0 +_0223D5C6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223D7EC + pop {r4, r5, r6, pc} +_0223D5D0: + ldr r0, _0223D604 ; =0x0000022F + ldrb r1, [r4, r0] + cmp r1, #4 + blo _0223D5FE + cmp r1, #0xb + bhi _0223D5FE + sub r0, #0x37 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + mov r0, #0x7f + lsl r0, r0, #2 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r4, #0x94 + ldr r0, [r4] + bl FUN_0201FDEC +_0223D5FE: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0223D604: .word 0x0000022F + + thumb_func_start MOD06_0223D608 +MOD06_0223D608: ; 0x0223D608 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0223D618 + add r0, r4, #0 + bl MOD06_0223D63C + pop {r4, pc} + + thumb_func_start MOD06_0223D618 +MOD06_0223D618: ; 0x0223D618 + push {r4, lr} + mov r2, #0x7a + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #0xb + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0x88 + str r0, [r1] + mov r0, #0xb + bl FUN_0200AA80 + add r4, #0x8c + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_0223D63C +MOD06_0223D63C: ; 0x0223D63C + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, _0223D77C ; =0x00000241 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _0223D6B8 + mov r4, #3 + add r0, r4, #0 + mov r1, #0xb + bl FUN_02012838 + add r1, r5, #0 + add r1, #0x84 + str r0, [r1] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0xf + mov r3, #2 + bl FUN_02012880 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x10 + mov r3, #0xe + bl FUN_02012880 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + mov r2, #0x11 + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [r1] + sub r3, #0x13 + bl FUN_02012880 + mov r3, #1 + str r3, [sp] + mov r1, #0xd + str r1, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _0223D780 ; =0x000002DF + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, #8 + add r2, r4, #0 + bl FUN_02019064 + b _0223D710 +_0223D6B8: + mov r4, #2 + add r0, r4, #0 + mov r1, #0xb + bl FUN_02012838 + add r1, r5, #0 + add r1, #0x84 + str r0, [r1] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0xf + add r3, r4, #0 + bl FUN_02012880 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + mov r2, #0x11 + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [r1] + sub r3, #0x13 + bl FUN_02012880 + mov r3, #1 + str r3, [sp] + mov r1, #0xd + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _0223D780 ; =0x000002DF + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, #8 + mov r2, #3 + bl FUN_02019064 +_0223D710: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + add r2, sp, #0x14 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x18] + mov r0, #0 + strb r0, [r2, #8] + mov r1, #1 + strb r1, [r2, #9] + strb r4, [r2, #0xa] + ldrb r3, [r2, #0xb] + mov r1, #0xf + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0x30 + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0xc0 + bic r3, r1 + strb r3, [r2, #0xb] + str r0, [sp] + mov r3, #0xb + str r3, [sp, #4] + ldr r0, [r5] + ldr r2, _0223D784 ; =0x000003D9 + mov r1, #3 + bl FUN_0200CB00 + add r0, r5, #0 + ldr r2, _0223D784 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r0, #0xb + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #0x14 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + add r5, #0x80 + str r0, [r5] + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D77C: .word 0x00000241 +_0223D780: .word 0x000002DF +_0223D784: .word 0x000003D9 + + thumb_func_start MOD06_0223D788 +MOD06_0223D788: ; 0x0223D788 + push {r4, lr} + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + bl FUN_02001C78 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0223D7A4 + add r1, r1, #1 + cmp r0, r1 + beq _0223D7B4 + b _0223D7AE +_0223D7A4: + add r0, r4, #0 + bl MOD06_0223D7B8 + mov r0, #0x13 + pop {r4, pc} +_0223D7AE: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} +_0223D7B4: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_0223D7B8 +MOD06_0223D7B8: ; 0x0223D7B8 + push {r4, lr} + add r4, r0, #0 + add r0, #8 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0 + bl FUN_02001C5C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_02012870 + add r4, #8 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + + thumb_func_start MOD06_0223D7EC +MOD06_0223D7EC: ; 0x0223D7EC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x8f + add r4, r1, #0 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223D804 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223D804: + ldr r0, _0223D90C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223D908 + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0200AB18 + mov r0, #0x23 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0223D910 ; =0x00000241 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223D8F4 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034824 + cmp r0, #0x65 + beq _0223D8F4 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + cmp r0, #0x51 + beq _0223D8F4 + ldr r1, _0223D914 ; =0x000001BE + cmp r0, r1 + beq _0223D8F4 + add r0, r1, #0 + add r0, #0x81 + ldrb r2, [r4, r0] + cmp r2, #0 + beq _0223D888 + add r1, #0x82 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _0223D888 + mov r0, #0xb + bl FUN_02029084 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D888: + cmp r2, #1 + bls _0223D8A2 + mov r0, #0xb + bl FUN_02029060 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D8A2: + mov r0, #9 + lsl r0, r0, #6 + ldrb r0, [r4, r0] + cmp r0, #1 + bls _0223D8C2 + mov r0, #0xb + bl FUN_02029078 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D8C2: + cmp r2, #0 + beq _0223D8DC + mov r0, #0xb + bl FUN_02029054 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D8DC: + cmp r0, #0 + beq _0223D8F4 + mov r0, #0xb + bl FUN_0202906C + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 +_0223D8F4: + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D908: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D90C: .word 0x021C48B8 +_0223D910: .word 0x00000241 +_0223D914: .word 0x000001BE + + thumb_func_start MOD06_0223D918 +MOD06_0223D918: ; 0x0223D918 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + mov r2, #0 + str r0, [sp, #8] + add r4, r1, #0 + str r2, [sp, #0xc] + ldr r0, [r4] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + add r0, r4, #0 + bl MOD06_0223D7B8 + add r0, r4, #0 + bl MOD06_0223D978 + mov r0, #0xb + bl FUN_0201EB64 + add r1, r4, #0 + add r1, #0x90 + str r0, [r1] + add r1, r4, #0 + add r1, #0x90 + ldr r0, [r5, #0x20] + ldr r1, [r1] + bl FUN_0201EB78 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0201EB8C + ldr r0, _0223D974 ; =0x0000023D + mov r1, #0 + strb r1, [r4, r0] + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223D974: .word 0x0000023D + + thumb_func_start MOD06_0223D978 +MOD06_0223D978: ; 0x0223D978 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r5, #0 + ldr r7, _0223D9B4 ; =0x0224F3AC + mov r6, #0 + add r4, #8 +_0223D984: + ldr r0, _0223D9B8 ; =0x00000241 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _0223D99C + cmp r6, #1 + bne _0223D99C + ldr r0, [r5] + ldr r2, _0223D9BC ; =0x0224F350 + add r1, r4, #0 + bl FUN_02019150 + b _0223D9A6 +_0223D99C: + ldr r0, [r5] + add r1, r4, #0 + add r2, r7, #0 + bl FUN_02019150 +_0223D9A6: + add r6, r6, #1 + add r4, #0x10 + add r7, #8 + cmp r6, #6 + blo _0223D984 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D9B4: .word 0x0224F3AC +_0223D9B8: .word 0x00000241 +_0223D9BC: .word 0x0224F350 + + thumb_func_start MOD06_0223D9C0 +MOD06_0223D9C0: ; 0x0223D9C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x28 + mov r1, #1 + bl FUN_0200CCF8 + mov r4, #0 + add r5, #8 +_0223D9D0: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blo _0223D9D0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223D9E8 +MOD06_0223D9E8: ; 0x0223D9E8 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r4, r0, #0 + str r1, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x3e + mov r3, #1 + bl FUN_0200687C + ldr r0, _0223DA88 ; =0x00000241 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223DA26 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x3e + mov r1, #2 + mov r3, #1 + bl FUN_020068C8 + b _0223DA3E +_0223DA26: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x3e + mov r1, #3 + mov r3, #1 + bl FUN_020068C8 +_0223DA3E: + mov r0, #0x20 + str r0, [sp] + mov r0, #0xb + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x3e + mov r1, #1 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r3, #0xb + str r3, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #0x1f + bl FUN_0200CB00 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0223DA88: .word 0x00000241 + + thumb_func_start MOD06_0223DA8C +MOD06_0223DA8C: ; 0x0223DA8C + push {r4, lr} + add r4, r0, #0 + bl FUN_0201E7CC + mov r1, #0x8e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4] + mov r1, #0 + bl FUN_02018884 + mov r1, #0x8d + lsl r1, r1, #2 + strb r0, [r4, r1] + ldr r0, [r4] + mov r1, #1 + bl FUN_02018884 + ldr r1, _0223DB10 ; =0x00000235 + strb r0, [r4, r1] + ldr r0, [r4] + mov r1, #2 + bl FUN_02018884 + ldr r1, _0223DB14 ; =0x00000236 + strb r0, [r4, r1] + ldr r0, [r4] + mov r1, #3 + bl FUN_02018884 + ldr r1, _0223DB18 ; =0x00000237 + strb r0, [r4, r1] + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #3 + mov r1, #0 + bl FUN_020178BC + mov r0, #0 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #3 + mov r1, #1 + bl FUN_0201E6E4 + pop {r4, pc} + nop +_0223DB10: .word 0x00000235 +_0223DB14: .word 0x00000236 +_0223DB18: .word 0x00000237 + + thumb_func_start MOD06_0223DB1C +MOD06_0223DB1C: ; 0x0223DB1C + push {r4, lr} + mov r1, #0x8d + add r4, r0, #0 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + mov r0, #0 + bl FUN_020178BC + ldr r1, _0223DB58 ; =0x00000235 + mov r0, #1 + ldrb r1, [r4, r1] + bl FUN_020178BC + ldr r1, _0223DB5C ; =0x00000236 + mov r0, #2 + ldrb r1, [r4, r1] + bl FUN_020178BC + ldr r1, _0223DB60 ; =0x00000237 + mov r0, #3 + ldrb r1, [r4, r1] + bl FUN_020178BC + mov r0, #0x8e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201E720 + pop {r4, pc} + nop +_0223DB58: .word 0x00000235 +_0223DB5C: .word 0x00000236 +_0223DB60: .word 0x00000237 + + thumb_func_start MOD06_0223DB64 +MOD06_0223DB64: ; 0x0223DB64 + push {r4, r5, lr} + sub sp, #0xc + ldr r1, _0223DBC8 ; =0x0000023D + add r4, r0, #0 + add r2, r1, #1 + ldrb r3, [r4, r1] + ldrb r2, [r4, r2] + cmp r3, r2 + beq _0223DB9E + ldr r5, _0223DBCC ; =0x0224F358 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r4, #0 + str r0, [r3] + add r1, #0x90 + ldr r1, [r1] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r0, _0223DBC8 ; =0x0000023D + add sp, #0xc + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #3 + pop {r4, r5, pc} +_0223DB9E: + mov r2, #0 + strb r2, [r4, r1] + bl MOD06_0223EB90 + add r0, r4, #0 + bl MOD06_0223D9E8 + add r0, r4, #0 + bl MOD06_0223DA8C + add r0, r4, #0 + bl MOD06_0223DBF4 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223DED0 + mov r0, #4 + add sp, #0xc + pop {r4, r5, pc} + nop +_0223DBC8: .word 0x0000023D +_0223DBCC: .word 0x0224F358 + + thumb_func_start MOD06_0223DBD0 +MOD06_0223DBD0: ; 0x0223DBD0 + push {r3, lr} + ldr r2, _0223DBF0 ; =0x00000241 + ldrb r0, [r0, r2] + cmp r0, #1 + bne _0223DBDE + add r0, r1, #0 + pop {r3, pc} +_0223DBDE: + cmp r0, #2 + bne _0223DBEC + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r1, r0, #0 +_0223DBEC: + add r0, r1, #0 + pop {r3, pc} + .align 2, 0 +_0223DBF0: .word 0x00000241 + + thumb_func_start MOD06_0223DBF4 +MOD06_0223DBF4: ; 0x0223DBF4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r2, _0223DCE8 ; =0x00000241 + add r5, r0, #0 + ldrb r0, [r5, r2] + cmp r0, #0 + bne _0223DC12 + mov r0, #0 + mov r1, #0x1a + sub r2, #0xe9 + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp] + b _0223DC34 +_0223DC12: + cmp r0, #1 + bne _0223DC26 + mov r0, #0 + mov r1, #0x1a + sub r2, #0xa + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp] + b _0223DC34 +_0223DC26: + mov r0, #0 + mov r1, #0x1a + mov r2, #0xa + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp] +_0223DC34: + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r1, #0xb + add r0, r0, #1 + bl FUN_02012838 + str r0, [r5, #0x7c] + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r6, #0 + cmp r0, #0 + bls _0223DC8E + add r4, r6, #0 +_0223DC52: + mov r1, #0x8a + lsl r1, r1, #2 + ldr r1, [r5, r1] + add r0, r5, #0 + ldrh r1, [r1, r4] + bl MOD06_0223DBD0 + add r1, r0, #0 + ldr r0, [sp] + bl FUN_0200A914 + add r7, r0, #0 + mov r2, #0x8a + lsl r2, r2, #2 + ldr r2, [r5, r2] + ldr r0, [r5, #0x7c] + ldrh r2, [r2, r4] + add r1, r7, #0 + bl FUN_020128A0 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r6, r6, #1 + add r4, r4, #2 + cmp r6, r0 + blo _0223DC52 +_0223DC8E: + add r1, r5, #0 + add r1, #0x88 + mov r2, #8 + add r3, r2, #0 + ldr r0, [r5, #0x7c] + ldr r1, [r1] + sub r3, #0xa + bl FUN_02012880 + ldr r0, [sp] + bl FUN_0200A8B8 + ldr r4, _0223DCEC ; =0x0224F38C + add r3, sp, #4 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x7c] + mov r3, #0xb + str r0, [sp, #4] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x10] + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r1, r0, #1 + add r0, sp, #4 + strh r1, [r0, #0x10] + mov r1, #0 + add r0, r2, #0 + add r2, r1, #0 + str r5, [sp, #0x20] + bl FUN_020010A8 + str r0, [r5, #0x78] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0223DCE8: .word 0x00000241 +_0223DCEC: .word 0x0224F38C + + thumb_func_start MOD06_0223DCF0 +MOD06_0223DCF0: ; 0x0223DCF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + mov r1, #0x13 + str r0, [sp, #0x10] + add r6, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + cmp r6, #1 + beq _0223DD0C + ldr r0, _0223DE28 ; =0x00000638 + bl FUN_020054C8 +_0223DD0C: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + bl FUN_02019620 + mov r1, #1 + mvn r1, r1 + cmp r5, r1 + beq _0223DDB2 + ldr r2, _0223DE2C ; =0x00000241 + ldrb r0, [r4, r2] + cmp r0, #0 + bne _0223DD3C + mov r0, #0x82 + mov r1, #0xb + bl FUN_020219F4 + lsl r1, r5, #0x10 + lsr r1, r1, #0x10 + mov r2, #0xb + add r6, r0, #0 + bl FUN_0206E790 + b _0223DD86 +_0223DD3C: + cmp r0, #1 + bne _0223DD60 + mov r0, #0 + mov r1, #0x1a + sub r2, #0xa + mov r3, #0xb + bl FUN_0200A86C + add r1, r5, #0 + add r7, r0, #0 + add r1, #0x8a + bl FUN_0200A914 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_0200A8B8 + b _0223DD86 +_0223DD60: + mov r0, #0 + mov r1, #0x1a + sub r2, #0x5a + mov r3, #0xb + bl FUN_0200A86C + add r7, r0, #0 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + bl FUN_02086060 + add r1, r0, #0 + add r0, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_0200A8B8 +_0223DD86: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0223DE30 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x18 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + lsl r1, r5, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl MOD06_0223EC3C + b _0223DDBA +_0223DDB2: + add r0, r4, #0 + lsr r1, r1, #0x10 + bl MOD06_0223EC3C +_0223DDBA: + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019220 + add r1, sp, #0x14 + ldr r0, [sp, #0x10] + add r1, #2 + add r2, sp, #0x14 + bl FUN_02001448 + add r0, sp, #0x14 + ldrh r0, [r0, #2] + cmp r0, #0 + bne _0223DDE4 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + b _0223DDF0 +_0223DDE4: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 +_0223DDF0: + ldr r0, [sp, #0x10] + mov r1, #2 + bl FUN_02001470 + cmp r0, #7 + bls _0223DE16 + add r1, sp, #0x14 + ldrh r1, [r1, #2] + add r1, r1, #7 + cmp r0, r1 + bls _0223DE16 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0223DE16: + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DE28: .word 0x00000638 +_0223DE2C: .word 0x00000241 +_0223DE30: .word 0x000F0E00 + + thumb_func_start MOD06_0223DE34 +MOD06_0223DE34: ; 0x0223DE34 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #0x13 + add r7, r2, #0 + bl FUN_02001470 + mov r1, #1 + mvn r1, r1 + add r5, r0, #0 + cmp r4, r1 + beq _0223DEC6 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + bl MOD06_0223EA08 + str r0, [sp, #0x10] + mov r0, #0xc + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #9 + bl FUN_0200A914 + add r6, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r2, [sp, #0x10] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0223DECC ; =0x00010200 + add r5, #8 + str r0, [sp, #8] + add r0, r5, #0 + mov r5, #0x90 + mov r1, #0 + add r2, r4, #0 + sub r3, r5, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 +_0223DEC6: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223DECC: .word 0x00010200 + + thumb_func_start MOD06_0223DED0 +MOD06_0223DED0: ; 0x0223DED0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + cmp r1, #0 + bne _0223DF1C + add r0, #0x28 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x28 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x12 + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x28 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + b _0223DF30 +_0223DF1C: + mov r0, #0x50 + str r0, [sp] + add r0, r5, #0 + mov r3, #0x10 + add r0, #0x28 + mov r1, #0xf + mov r2, #0 + str r3, [sp, #4] + bl FUN_020196F4 +_0223DF30: + mov r0, #0x10 + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x13 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02023A10 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + mov r3, #0x50 + mov r1, #0 + add r0, #0x28 + add r2, r4, #0 + sub r3, r3, r6 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r5, #0x28 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223DFB4 +MOD06_0223DFB4: ; 0x0223DFB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r2, sp, #0 + ldr r0, [r5, #0x78] + mov r1, #0 + add r2, #2 + bl FUN_02001448 + ldr r0, [r5, #0x78] + bl FUN_02001204 + add r4, r0, #0 + ldr r0, [r5, #0x78] + mov r1, #0 + add r2, sp, #0 + bl FUN_02001448 + add r0, sp, #0 + ldrh r2, [r0] + ldrh r0, [r0, #2] + cmp r0, r2 + beq _0223DFF4 + mov r0, #2 + lsl r2, r2, #4 + lsl r0, r0, #8 + add r2, #0x18 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + mov r1, #0xb0 + asr r2, r2, #0x10 + bl FUN_0200C6E4 +_0223DFF4: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0223E006 + add r0, r0, #1 + cmp r4, r0 + bne _0223E004 + b _0223E182 +_0223E004: + b _0223E034 +_0223E006: + mov r1, #0 + ldr r0, [r5, #0x78] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5, #0x7c] + bl FUN_02012870 + add r0, r5, #0 + bl MOD06_0223D9C0 + add r0, r5, #0 + bl MOD06_0223DB1C + ldr r0, [r5] + mov r1, #1 + bl FUN_02018744 + ldr r0, _0223E188 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xc + pop {r3, r4, r5, pc} +_0223E034: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020128 + mov r1, #0x82 + lsl r1, r1, #2 + strh r0, [r5, r1] + sub r1, #0xc + ldr r0, [r5, r1] + bl FUN_02020128 + ldr r1, _0223E18C ; =0x0000020A + strh r0, [r5, r1] + sub r1, #0x12 + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #1 + bl MOD06_0223ECC8 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x18 + bl FUN_02019570 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + ldr r1, _0223E190 ; =0x00000242 + mov r2, #1 + strh r4, [r5, r1] + add r0, r1, #2 + strh r2, [r5, r0] + ldrh r1, [r5, r1] + add r0, r5, #0 + bl MOD06_0223EA08 + mov r1, #0x92 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x3c + ldr r0, [r5, r1] + bl FUN_02023A10 + mov r2, #0x92 + lsl r2, r2, #2 + ldr r1, [r5, r2] + cmp r0, r1 + bhs _0223E0FC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #3 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xa + pop {r3, r4, r5, pc} +_0223E0FC: + sub r2, r2, #7 + ldrb r2, [r5, r2] + cmp r2, #1 + bne _0223E112 + ldr r0, _0223E188 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD06_0223E384 + pop {r3, r4, r5, pc} +_0223E112: + bl _u32_div_f + ldr r1, _0223E194 ; =0x00000246 + strh r0, [r5, r1] + ldrh r0, [r5, r1] + cmp r0, #0x63 + bls _0223E124 + mov r0, #0x63 + strh r0, [r5, r1] +_0223E124: + ldr r1, _0223E190 ; =0x00000242 + add r0, r5, #0 + ldrh r1, [r5, r1] + mov r2, #0 + bl MOD06_0223E9BC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #4 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + add r0, r5, #0 + mov r1, #1 + bl MOD06_0223EBF8 + ldr r0, _0223E188 ; =0x000005DC + bl FUN_020054C8 + mov r0, #5 + pop {r3, r4, r5, pc} +_0223E182: + mov r0, #4 + pop {r3, r4, r5, pc} + nop +_0223E188: .word 0x000005DC +_0223E18C: .word 0x0000020A +_0223E190: .word 0x00000242 +_0223E194: .word 0x00000246 + + thumb_func_start MOD06_0223E198 +MOD06_0223E198: ; 0x0223E198 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E1AE + mov r0, #5 + pop {r4, pc} +_0223E1AE: + add r0, r4, #0 + bl MOD06_0223E1D8 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223E4E8 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #6 + pop {r4, pc} + + thumb_func_start MOD06_0223E1D8 +MOD06_0223E1D8: ; 0x0223E1D8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r1, _0223E298 ; =0x00000241 + add r5, r0, #0 + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0223E1FA + add r0, r1, #0 + add r1, r1, #1 + sub r0, #0x31 + ldrh r1, [r5, r1] + ldr r0, [r5, r0] + mov r2, #0xb + bl FUN_0206EEF8 + add r4, r0, #0 + b _0223E214 +_0223E1FA: + cmp r0, #2 + bne _0223E212 + add r0, r1, #0 + add r1, r1, #1 + sub r0, #0x31 + ldrh r1, [r5, r1] + ldr r0, [r5, r0] + bl FUN_02029E2C + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0223E214 +_0223E212: + mov r4, #0 +_0223E214: + add r0, r5, #0 + add r0, #0x48 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x48 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r0, #0x18 + mov r1, #0xb + bl FUN_020219F4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x14 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + add r2, r4, #0 + mov r3, #3 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x48 + add r2, r6, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r5, #0x48 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223E298: .word 0x00000241 + + thumb_func_start MOD06_0223E29C +MOD06_0223E29C: ; 0x0223E29C + push {r4, lr} + mov r1, #0x91 + add r4, r0, #0 + lsl r1, r1, #2 + add r0, r4, r1 + add r1, r1, #2 + ldrh r1, [r4, r1] + bl FUN_02079AAC + cmp r0, #0 + beq _0223E2C4 + ldr r0, _0223E378 ; =0x00000638 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223E4E8 + mov r0, #6 + pop {r4, pc} +_0223E2C4: + ldr r0, _0223E37C ; =0x021C48B8 + mov r1, #1 + ldr r2, [r0, #0x48] + add r0, r2, #0 + tst r0, r1 + beq _0223E314 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + add r0, #0x48 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x38 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + ldr r0, _0223E380 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + bl MOD06_0223E384 + pop {r4, pc} +_0223E314: + mov r0, #2 + tst r0, r2 + beq _0223E374 + add r0, r4, #0 + add r0, #0x48 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x38 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldrh r1, [r4, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0xe + ldrh r1, [r4, r1] + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r4, #0x18 + add r0, r4, #0 + bl FUN_02019220 + ldr r0, _0223E380 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + pop {r4, pc} +_0223E374: + mov r0, #6 + pop {r4, pc} + .align 2, 0 +_0223E378: .word 0x00000638 +_0223E37C: .word 0x021C48B8 +_0223E380: .word 0x000005DC + + thumb_func_start MOD06_0223E384 +MOD06_0223E384: ; 0x0223E384 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r2, _0223E4E0 ; =0x00000241 + add r4, r0, #0 + ldrb r0, [r4, r2] + cmp r0, #0 + bne _0223E3A8 + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrh r2, [r4, r2] + ldr r0, [r4, r0] + mov r3, #0xb + bl FUN_0206ED24 + b _0223E3D2 +_0223E3A8: + cmp r0, #1 + bne _0223E3C0 + sub r2, #0x31 + ldr r0, [r4, r2] + bl FUN_02025DB0 + cmp r0, #0xc8 + bne _0223E3BC + mov r0, #0 + b _0223E3D2 +_0223E3BC: + mov r0, #1 + b _0223E3D2 +_0223E3C0: + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, r0] + bl FUN_02029DD4 +_0223E3D2: + cmp r0, #0 + bne _0223E450 + mov r0, #0x91 + mov r1, #0 + lsl r0, r0, #2 + strh r1, [r4, r0] + sub r0, r0, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223E3F6 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #7 + bl FUN_0200A914 + add r5, r0, #0 + b _0223E418 +_0223E3F6: + cmp r0, #1 + bne _0223E40A + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xc + bl FUN_0200A914 + add r5, r0, #0 + b _0223E418 +_0223E40A: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xe + bl FUN_0200A914 + add r5, r0, #0 +_0223E418: + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r4, r2] + sub r2, #0x1c + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r4, r1] + add sp, #8 + mov r0, #0xa + pop {r3, r4, r5, pc} +_0223E450: + ldr r1, _0223E4E4 ; =0x00000242 + add r0, r4, #0 + ldrh r1, [r4, r1] + mov r2, #0 + bl MOD06_0223E9BC + mov r0, #0 + str r0, [sp] + mov r1, #1 + mov r2, #0x91 + add r0, r4, #0 + str r1, [sp, #4] + lsl r2, r2, #2 + add r0, #0x8c + ldrsh r2, [r4, r2] + ldr r0, [r0] + mov r3, #2 + bl FUN_0200AD38 + mov r0, #0 + str r0, [sp] + mov r0, #1 + mov r2, #0x92 + str r0, [sp, #4] + lsl r2, r2, #2 + ldr r3, [r4, r2] + sub r2, r2, #4 + add r0, r4, #0 + ldrsh r2, [r4, r2] + add r0, #0x8c + ldr r0, [r0] + mul r2, r3 + mov r1, #2 + mov r3, #6 + bl FUN_0200AD38 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #5 + bl FUN_0200A914 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r4, r2] + sub r2, #0x1c + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r4, r1] + mov r0, #7 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0223E4E0: .word 0x00000241 +_0223E4E4: .word 0x00000242 + + thumb_func_start MOD06_0223E4E8 +MOD06_0223E4E8: ; 0x0223E4E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x38 + mov r1, #0xf + bl FUN_02019620 + cmp r4, #0 + bne _0223E50A + add r0, r5, #0 + add r0, #0x38 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 +_0223E50A: + mov r0, #0x18 + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x15 + bl FUN_0200A914 + mov r3, #2 + add r6, r0, #0 + mov r2, #0x91 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + lsl r2, r2, #2 + add r0, #0x8c + ldrsh r2, [r5, r2] + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r5, #0 + add r0, #0x38 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x16 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + mov r2, #0x92 + str r0, [sp, #4] + lsl r2, r2, #2 + ldr r3, [r5, r2] + sub r2, r2, #4 + add r0, r5, #0 + ldrsh r2, [r5, r2] + add r0, #0x8c + ldr r0, [r0] + mul r2, r3 + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + mov r3, #0x60 + mov r1, #0 + add r0, #0x38 + add r2, r4, #0 + sub r3, r3, r6 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r5, #0x38 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223E5E4 +MOD06_0223E5E4: ; 0x0223E5E4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E5FE + add sp, #4 + mov r0, #7 + pop {r3, r4, pc} +_0223E5FE: + mov r3, #0xb + str r3, [sp] + ldr r0, [r4] + ldr r1, _0223E618 ; =0x0224F348 + mov r2, #0x1f + bl FUN_02002198 + add r4, #0x80 + str r0, [r4] + mov r0, #8 + add sp, #4 + pop {r3, r4, pc} + nop +_0223E618: .word 0x0224F348 + + thumb_func_start MOD06_0223E61C +MOD06_0223E61C: ; 0x0223E61C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xb + bl FUN_020021AC + cmp r0, #0 + beq _0223E63A + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0223E638 + b _0223E74A +_0223E638: + b _0223E78C +_0223E63A: + ldr r1, _0223E790 ; =0x00000241 + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0223E698 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #6 + bl FUN_0200A914 + mov r2, #0x91 + lsl r2, r2, #2 + add r4, r0, #0 + ldrsh r0, [r5, r2] + cmp r0, #1 + bne _0223E66C + add r0, r5, #0 + sub r2, r2, #2 + add r0, #0x8c + ldrh r2, [r5, r2] + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AE38 + b _0223E67C +_0223E66C: + add r0, r5, #0 + sub r2, r2, #2 + add r0, #0x8c + ldrh r2, [r5, r2] + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AEA8 +_0223E67C: + ldr r0, _0223E794 ; =0x00000242 + mov r1, #5 + ldrh r0, [r5, r0] + mov r2, #0xb + bl FUN_0206E7B8 + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AEE0 + b _0223E704 +_0223E698: + cmp r0, #1 + bne _0223E6B8 + add r1, r1, #1 + ldrh r1, [r5, r1] + add r0, r5, #0 + mov r2, #0 + bl MOD06_0223E9BC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xb + bl FUN_0200A914 + add r4, r0, #0 + b _0223E704 +_0223E6B8: + add r0, r1, #3 + ldrsh r0, [r5, r0] + cmp r0, #1 + bne _0223E6DC + add r0, r1, #1 + ldrh r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B534 + b _0223E6F6 +_0223E6DC: + add r0, r1, #1 + ldrh r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B568 +_0223E6F6: + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xd + bl FUN_0200A914 + add r4, r0, #0 +_0223E704: + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + ldr r0, _0223E798 ; =0x00000644 + bl FUN_020054C8 + mov r0, #9 + pop {r3, r4, r5, pc} +_0223E74A: + add r0, r5, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x10 + ldrh r1, [r5, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0xe + ldrh r1, [r5, r1] + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r5, #0x18 + add r0, r5, #0 + bl FUN_02019220 + mov r0, #4 + pop {r3, r4, r5, pc} +_0223E78C: + mov r0, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E790: .word 0x00000241 +_0223E794: .word 0x00000242 +_0223E798: .word 0x00000644 + + thumb_func_start MOD06_0223E79C +MOD06_0223E79C: ; 0x0223E79C + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E7B2 + mov r0, #9 + pop {r3, r4, r5, pc} +_0223E7B2: + ldr r2, _0223E854 ; =0x00000241 + ldrb r0, [r4, r2] + cmp r0, #0 + bne _0223E7D0 + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrh r2, [r4, r2] + ldr r0, [r4, r0] + mov r3, #0xb + bl FUN_0206ED38 + b _0223E7F6 +_0223E7D0: + cmp r0, #1 + bne _0223E7E4 + add r0, r2, #0 + add r1, r2, #1 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldr r0, [r4, r0] + bl FUN_02025D6C + b _0223E7F6 +_0223E7E4: + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, r0] + bl FUN_02029D44 +_0223E7F6: + mov r2, #0x83 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r0, [r4, r2] + add r1, #0x3c + add r2, #0x38 + ldr r3, [r4, r1] + ldrsh r1, [r4, r2] + mul r1, r3 + bl FUN_02023A54 + mov r3, #0x87 + lsl r3, r3, #2 + add r2, r3, #0 + ldr r0, [r4, r3] + add r2, #0x2c + add r3, #0x28 + ldr r5, [r4, r2] + ldrsh r2, [r4, r3] + mov r1, #0x23 + mul r2, r5 + bl FUN_0202A11C + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223DED0 + mov r1, #0x91 + lsl r1, r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #1 + ble _0223E83E + mov r2, #2 + sub r0, r1, #5 + strb r2, [r4, r0] + b _0223E850 +_0223E83E: + sub r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0xff + beq _0223E850 + sub r0, r1, #5 + ldrb r0, [r4, r0] + add r2, r0, #1 + sub r0, r1, #5 + strb r2, [r4, r0] +_0223E850: + mov r0, #0xa + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E854: .word 0x00000241 + + thumb_func_start MOD06_0223E858 +MOD06_0223E858: ; 0x0223E858 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r5, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E86E + mov r0, #0xa + pop {r3, r4, r5, pc} +_0223E86E: + ldr r0, _0223E948 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223E944 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #1 + bne _0223E88A + sub r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0205F6E8 +_0223E88A: + ldr r1, _0223E94C ; =0x00000241 + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0223E902 + add r0, r1, #1 + ldrh r0, [r5, r0] + cmp r0, #4 + bne _0223E902 + add r0, r1, #3 + ldrsh r0, [r5, r0] + cmp r0, #0xa + blt _0223E902 + sub r1, #0x31 + ldr r0, [r5, r1] + mov r1, #0xc + mov r2, #1 + mov r3, #0xb + bl FUN_0206ED38 + cmp r0, #1 + bne _0223E902 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xa + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xb + pop {r3, r4, r5, pc} +_0223E902: + add r0, r5, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x10 + ldrh r1, [r5, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0xe + ldrh r1, [r5, r1] + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r5, #0x18 + add r0, r5, #0 + bl FUN_02019220 + mov r0, #4 + pop {r3, r4, r5, pc} +_0223E944: + mov r0, #0xa + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E948: .word 0x021C48B8 +_0223E94C: .word 0x00000241 + + thumb_func_start MOD06_0223E950 +MOD06_0223E950: ; 0x0223E950 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E966 + mov r0, #0xb + pop {r4, pc} +_0223E966: + ldr r0, _0223E9B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223E9B2 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldrh r1, [r4, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0xe + ldrh r1, [r4, r1] + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r4, #0x18 + add r0, r4, #0 + bl FUN_02019220 + mov r0, #4 + pop {r4, pc} +_0223E9B2: + mov r0, #0xb + pop {r4, pc} + nop +_0223E9B8: .word 0x021C48B8 + + thumb_func_start MOD06_0223E9BC +MOD06_0223E9BC: ; 0x0223E9BC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0223EA04 ; =0x00000241 + add r3, r1, #0 + ldrb r0, [r4, r0] + add r5, r2, #0 + cmp r0, #0 + bne _0223E9DA + add r4, #0x8c + ldr r0, [r4] + add r1, r5, #0 + add r2, r3, #0 + bl FUN_0200AE38 + pop {r3, r4, r5, pc} +_0223E9DA: + cmp r0, #1 + bne _0223E9EC + add r4, #0x8c + ldr r0, [r4] + add r1, r5, #0 + add r2, r3, #0 + bl FUN_0200B350 + pop {r3, r4, r5, pc} +_0223E9EC: + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r4, #0x8c + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + bl FUN_0200B534 + pop {r3, r4, r5, pc} + nop +_0223EA04: .word 0x00000241 + + thumb_func_start MOD06_0223EA08 +MOD06_0223EA08: ; 0x0223EA08 + push {r3, lr} + ldr r2, _0223EA34 ; =0x00000241 + ldrb r0, [r0, r2] + cmp r0, #0 + bne _0223EA1E + add r0, r1, #0 + mov r1, #0 + mov r2, #0xb + bl FUN_0206E7B8 + pop {r3, pc} +_0223EA1E: + cmp r0, #1 + bne _0223EA2A + add r0, r1, #0 + bl FUN_0204CAE0 + pop {r3, pc} +_0223EA2A: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bl FUN_0208603C + pop {r3, pc} + .align 2, 0 +_0223EA34: .word 0x00000241 + + thumb_func_start MOD06_0223EA38 +MOD06_0223EA38: ; 0x0223EA38 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _0223EAFC ; =0x0000023D + add r5, r1, #0 + add r1, r0, #1 + ldrb r2, [r5, r0] + ldrb r1, [r5, r1] + cmp r2, r1 + beq _0223EA74 + ldr r4, _0223EB00 ; =0x0224F364 + add r3, sp, #0 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + add r1, r5, #0 + str r0, [r3] + add r1, #0x90 + ldr r1, [r1] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r0, _0223EAFC ; =0x0000023D + add sp, #0xc + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + mov r0, #0xc + pop {r4, r5, pc} +_0223EA74: + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + ldr r1, [r4, #0x20] + bl FUN_0201EB78 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0201EB70 + ldr r0, [r4, #0x20] + bl FUN_0201EB8C + add r0, r5, #0 + bl MOD06_0223EBD4 + add r1, r5, #0 + ldr r0, [r4, #8] + add r1, #0x18 + mov r2, #3 + bl FUN_020545B8 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r5, #0 + ldr r1, [r5, r1] + add r0, #0x18 + bl FUN_02054608 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #2 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x18 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xd + add sp, #0xc + pop {r4, r5, pc} + nop +_0223EAFC: .word 0x0000023D +_0223EB00: .word 0x0224F364 + + thumb_func_start MOD06_0223EB04 +MOD06_0223EB04: ; 0x0223EB04 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223EB1A + mov r0, #0xd + pop {r4, pc} +_0223EB1A: + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + add r0, r4, #0 + bl MOD06_0223D63C + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_0223EB2C +MOD06_0223EB2C: ; 0x0223EB2C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #1 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + add r1, r4, #0 + ldr r0, [r5, #8] + add r1, #0x18 + mov r2, #3 + bl FUN_020545B8 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r4, #0 + ldr r1, [r4, r1] + add r0, #0x18 + bl FUN_02054608 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r4, r2] + sub r2, #0x1c + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x18 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r4, r1] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223EB90 +MOD06_0223EB90: ; 0x0223EB90 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0223EBCC ; =0x0224F370 + add r5, r0, #0 + add r0, #0x94 + mov r2, #4 + mov r3, #0xb + bl FUN_021D9320 + add r7, r5, #0 + ldr r4, _0223EBD0 ; =0x0224F3DC + mov r6, #0 + add r7, #0x94 +_0223EBA8: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_021D9510 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r4, #0x28 + add r5, r5, #4 + cmp r6, #4 + blo _0223EBA8 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EBCC: .word 0x0224F370 +_0223EBD0: .word 0x0224F3DC + + thumb_func_start MOD06_0223EBD4 +MOD06_0223EBD4: ; 0x0223EBD4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x7e + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_0223EBE0: + ldr r0, [r5, r6] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blo _0223EBE0 + add r7, #0x94 + add r0, r7, #0 + bl FUN_021D94B4 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223EBF8 +MOD06_0223EBF8: ; 0x0223EBF8 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + bne _0223EC1E + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xb1 + mov r2, #8 + bl FUN_0200C6E4 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xb1 + mov r2, #0x84 + bl FUN_0200C6E4 + pop {r4, pc} +_0223EC1E: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa2 + mov r2, #0x6c + bl FUN_0200C6E4 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa2 + mov r2, #0x84 + bl FUN_0200C6E4 + pop {r4, pc} + + thumb_func_start MOD06_0223EC3C +MOD06_0223EC3C: ; 0x0223EC3C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223ECC4 ; =0x00000241 + add r6, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223EC5A + sub r0, #0x3d + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r4, r5, r6, pc} +_0223EC5A: + sub r0, #0x7d + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020094F0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl FUN_0206E640 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + mov r2, #0x10 + bl FUN_020090FC + add r0, r5, #0 + bl FUN_02009BE8 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020094F0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #2 + bl FUN_0206E640 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + mov r2, #0x10 + bl FUN_02009168 + add r0, r5, #0 + bl FUN_02009DE0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223ECC4: .word 0x00000241 + + thumb_func_start MOD06_0223ECC8 +MOD06_0223ECC8: ; 0x0223ECC8 + mov r2, #2 + lsl r2, r2, #8 + ldr r3, _0223ECD4 ; =0x0200C665 + ldr r0, [r0, r2] + bx r3 + nop +_0223ECD4: .word 0x0200C665 + + thumb_func_start MOD06_0223ECD8 +MOD06_0223ECD8: ; 0x0223ECD8 + push {r4, lr} + mov r0, #0 + add r4, r1, #0 + bl FUN_021D7CA4 + ldr r0, _0223ECEC ; =0x0000022F + mov r1, #0xf + strb r1, [r4, r0] + pop {r4, pc} + nop +_0223ECEC: .word 0x0000022F + + thumb_func_start MOD06_0223ECF0 +MOD06_0223ECF0: ; 0x0223ECF0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _0223ED46 + add r0, r6, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r4, r0, #0 + bl MOD06_0223D7B8 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + ldr r1, _0223ED48 ; =0x0224F47C + mov r2, #0xb + bl FUN_0206EFEC + add r3, r5, #0 + str r0, [r4, #4] + add r3, #0x94 + ldr r1, [r5, #0xc] + ldr r3, [r3] + mov r2, #2 + bl FUN_0206E314 + ldr r1, [r4, #4] + add r0, r5, #0 + bl FUN_0203781C + ldr r1, _0223ED4C ; =0x0208A259 + add r0, r6, #0 + add r2, r4, #0 + bl FUN_020463EC + ldr r0, _0223ED50 ; =0x0000022F + mov r1, #0x10 + strb r1, [r4, r0] +_0223ED46: + pop {r4, r5, r6, pc} + .align 2, 0 +_0223ED48: .word 0x0224F47C +_0223ED4C: .word 0x0208A259 +_0223ED50: .word 0x0000022F + + thumb_func_start MOD06_0223ED54 +MOD06_0223ED54: ; 0x0223ED54 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + bl FUN_0200E308 + cmp r0, #0 + bne _0223ED66 + mov r0, #0x12 + pop {r3, r4, r5, pc} +_0223ED66: + add r1, r5, #0 + ldr r0, [r4, #8] + add r1, #0x18 + mov r2, #3 + bl FUN_020545B8 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r5, #0 + ldr r1, [r5, r1] + add r0, #0x18 + bl FUN_02054608 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #2 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x18 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xd + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223EDC4 +MOD06_0223EDC4: ; 0x0223EDC4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223EE70 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223EDE6 + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_0201BD7C +_0223EDE6: + cmp r4, #0 + beq _0223EE08 + ldr r0, _0223EE70 ; =0x02252420 + add r1, r5, #0 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x10] + bl FUN_0200A8E0 + ldr r0, _0223EE70 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x58] + ldr r1, [r2, #0x14] + ldr r2, [r2, #0x10] + bl FUN_0200B7B8 + b _0223EE16 +_0223EE08: + ldr r0, _0223EE70 ; =0x02252420 + add r1, r5, #0 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x14] + bl FUN_0200A8E0 +_0223EE16: + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + add r0, #0x40 + bl FUN_02019048 + cmp r0, #0 + bne _0223EE34 + ldr r0, _0223EE70 ; =0x02252420 + mov r2, #3 + ldr r1, [r0] + ldr r0, [r1, #0x68] + add r1, #0x40 + ldr r0, [r0, #8] + bl FUN_020545B8 +_0223EE34: + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x68] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + add r0, #0x40 + bl FUN_02054608 + ldr r0, _0223EE70 ; =0x02252420 + ldr r4, [r0] + ldr r0, [r4, #0x68] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0 + add r0, r4, #0 + ldr r1, [r4, #0x14] + add r0, #0x40 + mov r3, #1 + bl FUN_02054658 + ldr r1, _0223EE70 ; =0x02252420 + ldr r1, [r1] + add r1, #0x94 + strb r0, [r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223EE70: .word 0x02252420 + + thumb_func_start MOD06_0223EE74 +MOD06_0223EE74: ; 0x0223EE74 + push {r0, r1, r2, r3} + push {r3, r4, lr} + sub sp, #0x34 + ldr r0, _0223EF10 ; =0x02252420 + ldr r0, [r0] + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + bne _0223EEB8 + ldr r0, _0223EF10 ; =0x02252420 + add r3, sp, #0x60 + ldr r1, [r0] + add r0, sp, #0x64 + ldrb r0, [r0] + ldrb r3, [r3] + mov r2, #3 + str r0, [sp] + add r0, sp, #0x68 + ldrb r0, [r0] + str r0, [sp, #4] + add r0, sp, #0x6c + ldrb r0, [r0] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, sp, #0x40 + ldrh r0, [r0, #0x30] + str r0, [sp, #0x10] + ldr r0, [r1, #0x68] + add r1, #0x20 + ldr r0, [r0, #8] + bl FUN_02019064 +_0223EEB8: + ldr r0, _0223EF10 ; =0x02252420 + ldr r2, _0223EF14 ; =0x000003D9 + ldr r0, [r0] + mov r1, #1 + add r0, #0x20 + mov r3, #0xb + bl FUN_0200CCA4 + add r4, sp, #0x40 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, _0223EF10 ; =0x02252420 + mov r3, #4 + ldr r1, [r0] + ldr r0, [r1, #0x64] + add r1, #0x20 + str r1, [sp, #0x20] + str r0, [sp, #0x14] + mov r1, #0 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_020010A8 + ldr r1, _0223EF10 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x5c] + ldr r0, [r1] + add r0, #0x20 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4} + pop {r3} + add sp, #0x10 + bx r3 + nop +_0223EF10: .word 0x02252420 +_0223EF14: .word 0x000003D9 + + thumb_func_start MOD06_0223EF18 +MOD06_0223EF18: ; 0x0223EF18 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _0223EFF4 ; =0x02252420 + ldr r0, [r0] + cmp r0, #0 + beq _0223EF28 + bl ErrorHandling +_0223EF28: + mov r0, #4 + mov r1, #0x9c + bl FUN_02016998 + ldr r1, _0223EFF4 ; =0x02252420 + mov r2, #0x9c + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _0223EFF4 ; =0x02252420 + mov r2, #0 + ldr r1, [r0] + mov r3, #4 + add r1, #0x88 + str r2, [r1] + ldr r1, [r0] + str r4, [r1, #0x68] + ldr r0, [r0] + mov r1, #0x1a + add r0, #0x97 + strb r2, [r0] + ldr r2, _0223EFF8 ; =0x0000013A + mov r0, #1 + bl FUN_0200A86C + ldr r1, _0223EFF4 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x74] + ldr r0, [r1] + ldr r0, [r0, #0x68] + bl FUN_020377AC + bl FUN_020238F4 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x78] + mov r0, #4 + bl FUN_02023928 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x7c] + ldr r0, [r1] + add r0, #0x20 + bl FUN_0201901C + ldr r0, _0223EFF4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_0201901C + ldr r0, _0223EFF4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x40 + bl FUN_0201901C + mov r0, #4 + bl FUN_0200AA80 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x50] + mov r0, #4 + bl FUN_0200AA80 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x54] + mov r0, #4 + bl FUN_0200AA80 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x58] + ldr r0, [r1] + mov r2, #0 + add r0, #0x98 + strb r2, [r0] + add r5, r2, #0 +_0223EFCA: + ldr r0, [r1] + add r0, r0, r2 + add r0, #0x80 + add r2, r2, #1 + strb r5, [r0] + cmp r2, #8 + blt _0223EFCA + ldr r6, _0223EFF4 ; =0x02252420 + add r4, r5, #0 + mov r7, #0x8c +_0223EFDE: + add r0, r7, #0 + mov r1, #4 + bl FUN_020219F4 + ldr r1, [r6] + add r5, r5, #1 + str r0, [r1, r4] + add r4, r4, #4 + cmp r5, #8 + blt _0223EFDE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EFF4: .word 0x02252420 +_0223EFF8: .word 0x0000013A + + thumb_func_start MOD06_0223EFFC +MOD06_0223EFFC: ; 0x0223EFFC + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0223F08C ; =0x02252420 + add r5, r4, #0 +_0223F004: + ldr r0, [r6] + ldr r0, [r0, r5] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _0223F004 + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x7c] + bl FUN_02016A18 + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x50] + cmp r0, #0 + beq _0223F034 + bl FUN_0200AB18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x50] +_0223F034: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x54] + cmp r0, #0 + beq _0223F04A + bl FUN_0200AB18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x54] +_0223F04A: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x58] + cmp r0, #0 + beq _0223F060 + bl FUN_0200AB18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x58] +_0223F060: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0200A8B8 + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r1, [r0, #0x4c] + cmp r1, #0 + beq _0223F07A + add r0, #0x40 + bl FUN_02019178 +_0223F07A: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + str r1, [r0] + pop {r4, r5, r6, pc} + nop +_0223F08C: .word 0x02252420 + + thumb_func_start MOD06_0223F090 +MOD06_0223F090: ; 0x0223F090 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02240778 + add r2, r0, #0 + ldr r0, [r4, #0x68] + add r4, #0x91 + ldrb r1, [r4] + bl FUN_0204FEF0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223F0A8 +MOD06_0223F0A8: ; 0x0223F0A8 + push {r3, lr} + ldr r0, _0223F0C0 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x98 + strb r1, [r0] + cmp r2, #0 + bne _0223F0BE + ldr r0, _0223F0C4 ; =0x000005DC + bl FUN_020054C8 +_0223F0BE: + pop {r3, pc} + .align 2, 0 +_0223F0C0: .word 0x02252420 +_0223F0C4: .word 0x000005DC + + thumb_func_start MOD06_0223F0C8 +MOD06_0223F0C8: ; 0x0223F0C8 + push {r3, r4, r5, r6, r7, lr} + mov r1, #3 + add r5, r0, #0 + mov r4, #0 + bl FUN_02001470 + cmp r0, #0 + bls _0223F0F6 + add r6, r4, #0 + mov r7, #3 +_0223F0DC: + lsl r2, r4, #0x18 + add r0, r5, #0 + add r1, r6, #0 + lsr r2, r2, #0x18 + bl MOD06_0223F0F8 + add r0, r5, #0 + add r1, r7, #0 + add r4, r4, #1 + bl FUN_02001470 + cmp r4, r0 + blo _0223F0DC +_0223F0F6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223F0F8 +MOD06_0223F0F8: ; 0x0223F0F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r2, #0 + bl FUN_0202E810 + add r4, r0, #0 + mov r2, #0 + add r0, sp, #0xc + strh r2, [r0] + ldr r0, _0223F26C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _0223F11A + add r1, sp, #0xc + bl FUN_02001448 +_0223F11A: + add r0, sp, #0xc + ldrh r1, [r0] + add r1, r1, r5 + strh r1, [r0] + ldr r0, _0223F26C ; =0x02252420 + lsl r5, r5, #4 + ldr r0, [r0] + add r0, #0x20 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, #8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + lsl r3, r5, #0x10 + ldr r0, [r0] + mov r1, #0xf + add r0, #0x20 + mov r2, #8 + lsr r3, r3, #0x10 + bl FUN_020196F4 + add r0, sp, #0xc + ldrh r2, [r0] + cmp r2, r4 + bge _0223F21C + ldr r1, _0223F26C ; =0x02252420 + add r0, r2, #0 + ldr r1, [r1] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + mov r3, #2 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + add r2, sp, #0xc + ldr r0, [r0] + ldrh r2, [r2] + ldr r0, [r0, #0x50] + mov r1, #0 + add r2, r2, #1 + bl FUN_0200AD38 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #1 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0x31 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r0, _0223F26C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r0, #0xff + str r5, [sp] + str r0, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2] + add r0, #0x20 + mov r3, #8 + bl FUN_0201BD84 + ldr r0, _0223F26C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x7c] + bl FUN_020239BC + add r2, r0, #0 + mov r1, #2 + lsl r2, r2, #0x10 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + lsr r2, r2, #0x10 + ldr r0, [r0] + mov r3, #5 + ldr r0, [r0, #0x50] + bl FUN_0200AD38 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0x33 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0xc] + bl FUN_0200A8E0 + ldr r0, _0223F26C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + bl FUN_0200B7B8 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r0, #0xff + str r5, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + ldr r2, [r2, #8] + add r0, #0x20 + mov r3, #0x58 + bl FUN_0201BD84 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0223F21C: + mov r3, #2 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r2, r2, #1 + ldr r0, [r0, #0x50] + bl FUN_0200AD38 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0x32 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r0, _0223F26C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r0, #0xff + str r5, [sp] + str r0, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2] + add r0, #0x20 + mov r3, #8 + bl FUN_0201BD84 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223F26C: .word 0x02252420 + + thumb_func_start MOD06_0223F270 +MOD06_0223F270: ; 0x0223F270 + push {r4, lr} + sub sp, #0x58 + add r4, r0, #0 + ldr r0, _0223F330 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019048 + cmp r0, #0 + bne _0223F2AA + ldr r0, _0223F330 ; =0x02252420 + mov r2, #3 + ldr r1, [r0] + mov r0, #2 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xc9 + str r0, [sp, #0x10] + ldr r0, [r1, #0x68] + add r1, #0x30 + ldr r0, [r0, #8] + mov r3, #0x17 + bl FUN_02019064 +_0223F2AA: + ldr r0, _0223F330 ; =0x02252420 + ldr r2, _0223F334 ; =0x000003D9 + ldr r0, [r0] + mov r1, #1 + add r0, #0x30 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, _0223F330 ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0223F330 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_020191D0 + add r0, r4, #0 + mov r1, #1 + add r0, #0x97 + strb r1, [r0] + ldr r0, _0223F338 ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + ldr r0, _0223F330 ; =0x02252420 + ldr r0, [r0] + bl MOD06_0223F344 + ldr r4, _0223F33C ; =0x0224F5E0 + add r3, sp, #0x14 + mov r2, #8 +_0223F2F0: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F2F0 + ldr r0, [r4] + str r0, [r3] + ldr r0, _0223F330 ; =0x02252420 + ldr r1, [r0] + add r0, r1, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223F318 + add r1, #0x92 + ldrb r0, [r1] + mov r1, #0 + add r0, #0x59 + bl MOD06_0223EDC4 + b _0223F324 +_0223F318: + lsl r1, r0, #2 + add r0, sp, #0x14 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 +_0223F324: + ldr r0, _0223F340 ; =MOD06_0223F3B8 + bl MOD06_0223F8BC + add sp, #0x58 + pop {r4, pc} + nop +_0223F330: .word 0x02252420 +_0223F334: .word 0x000003D9 +_0223F338: .word MOD06_0223FAA4 +_0223F33C: .word 0x0224F5E0 +_0223F340: .word MOD06_0223F3B8 + + thumb_func_start MOD06_0223F344 +MOD06_0223F344: ; 0x0223F344 + push {lr} + sub sp, #0xc + ldr r0, _0223F3B4 ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + ldr r0, [r2, #0x54] + ldr r2, [r2, #0x78] + bl FUN_0200ABC0 + ldr r0, _0223F3B4 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x78] + bl FUN_020239BC + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r1, #1 + lsl r2, r2, #0x10 + ldr r0, _0223F3B4 ; =0x02252420 + str r1, [sp, #4] + ldr r0, [r0] + lsr r2, r2, #0x10 + ldr r0, [r0, #0x54] + mov r3, #5 + bl FUN_0200AD38 + ldr r0, _0223F3B4 ; =0x02252420 + mov r1, #0x30 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x18] + bl FUN_0200A8E0 + ldr r0, _0223F3B4 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x54] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x18] + bl FUN_0200B7B8 + ldr r0, _0223F3B4 ; =0x02252420 + mov r3, #2 + ldr r2, [r0] + mov r1, #0 + str r3, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2, #0x1c] + add r0, #0x30 + bl FUN_0201BD84 + add sp, #0xc + pop {pc} + nop +_0223F3B4: .word 0x02252420 + + thumb_func_start MOD06_0223F3B8 +MOD06_0223F3B8: ; 0x0223F3B8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r0, _0223F454 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223F450 + mov r0, #0x10 + mov r1, #4 + bl FUN_02012838 + ldr r4, _0223F454 ; =0x02252420 + mov r5, #0 + ldr r1, [r4] + mov r6, #2 + str r0, [r1, #0x64] + mov r7, #1 +_0223F3E0: + str r6, [sp] + str r7, [sp, #4] + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x50] + add r2, r5, #1 + add r3, r6, #0 + bl FUN_0200AD38 + ldr r2, [r4] + mov r1, #0x32 + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r2, [r4] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r1, [r4] + mov r2, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1] + bl FUN_020128A0 + add r5, r5, #1 + cmp r5, #0x10 + blt _0223F3E0 + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #0x14 + str r0, [sp, #0x18] + mov r0, #0xa + mov r4, sp + str r0, [sp, #0x1c] + sub r4, #0x10 + ldr r3, _0223F458 ; =0x0224F4B0 + str r1, [sp, #0x20] + add r2, r4, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1, r2, r3} + bl MOD06_0223EE74 + ldr r0, _0223F45C ; =MOD06_0223F460 + bl MOD06_0223F8BC +_0223F450: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F454: .word 0x02252420 +_0223F458: .word 0x0224F4B0 +_0223F45C: .word MOD06_0223F460 + + thumb_func_start MOD06_0223F460 +MOD06_0223F460: ; 0x0223F460 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD06_0223F344 + bl FUN_020311F0 + cmp r0, #0 + beq _0223F48C + ldr r0, _0223F518 ; =0x02252420 + mov r1, #3 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + bl MOD06_0223F8B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + pop {r3, r4, r5, pc} +_0223F48C: + bl FUN_0202E878 + cmp r0, #0 + beq _0223F49A + mov r0, #0 + mvn r0, r0 + b _0223F4A4 +_0223F49A: + ldr r0, _0223F518 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + bl FUN_02001204 +_0223F4A4: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0223F4BA + add r1, r1, #1 + cmp r0, r1 + bne _0223F4D8 + add r0, r4, #0 + bl MOD06_0223F524 + pop {r3, r4, r5, pc} +_0223F4BA: + ldr r0, _0223F51C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0223F518 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + bl MOD06_0223F8B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + pop {r3, r4, r5, pc} +_0223F4D8: + ldr r0, _0223F51C ; =0x000005DC + bl FUN_020054C8 + add r1, r4, #0 + ldr r0, [r4, #0x5c] + add r1, #0x8e + bl FUN_0200143C + add r0, r4, #0 + add r0, #0x8e + ldrh r5, [r0] + bl FUN_0202E810 + cmp r0, r5 + ble _0223F514 + add r0, r5, #0 + bl FUN_0202E844 + add r1, r4, #0 + add r1, #0x8e + add r4, #0x8e + strh r0, [r1] + ldrh r0, [r4] + bl FUN_0204FF30 + bl FUN_02031668 + ldr r0, _0223F520 ; =MOD06_0223F584 + bl MOD06_0223F8BC +_0223F514: + pop {r3, r4, r5, pc} + nop +_0223F518: .word 0x02252420 +_0223F51C: .word 0x000005DC +_0223F520: .word MOD06_0223F584 + + thumb_func_start MOD06_0223F524 +MOD06_0223F524: ; 0x0223F524 + push {r3, lr} + sub sp, #8 + bl FUN_0202E878 + cmp r0, #0 + bne _0223F53C + ldr r0, _0223F580 ; =0x02252420 + ldr r0, [r0] + add r0, #0x98 + ldrb r0, [r0] + cmp r0, #0 + beq _0223F57A +_0223F53C: + ldr r0, _0223F580 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x98 + strb r1, [r0] + bl FUN_0202E88C + mov r0, #0xc + str r0, [sp] + mov r0, #0x50 + str r0, [sp, #4] + ldr r0, _0223F580 ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + mov r2, #8 + add r0, #0x20 + mov r3, #0 + bl FUN_020196F4 + ldr r0, _0223F580 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + ldr r0, [r0, #0x5c] + bl MOD06_0223F0C8 + ldr r0, _0223F580 ; =0x02252420 + ldr r0, [r0] + add r0, #0x20 + bl FUN_020191D0 +_0223F57A: + add sp, #8 + pop {r3, pc} + nop +_0223F580: .word 0x02252420 + + thumb_func_start MOD06_0223F584 +MOD06_0223F584: ; 0x0223F584 + push {r4, lr} + add r4, r1, #0 + ldr r1, _0223F5C8 ; =0x02252420 + add r0, r4, #0 + add r0, #0x8e + ldr r1, [r1] + ldrh r0, [r0] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + ldr r2, _0223F5C8 ; =0x02252420 + ldr r0, [r4, #0x58] + ldr r2, [r2] + mov r1, #1 + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + bl MOD06_02240750 + cmp r0, #2 + bgt _0223F5B8 + mov r0, #1 + add r1, r0, #0 + bl MOD06_0223EDC4 + b _0223F5C0 +_0223F5B8: + mov r0, #2 + mov r1, #1 + bl MOD06_0223EDC4 +_0223F5C0: + ldr r0, _0223F5CC ; =MOD06_0223F6D8 + bl MOD06_0223F8BC + pop {r4, pc} + .align 2, 0 +_0223F5C8: .word 0x02252420 +_0223F5CC: .word MOD06_0223F6D8 + + thumb_func_start MOD06_0223F5D0 +MOD06_0223F5D0: ; 0x0223F5D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_020311F0 + cmp r0, #0 + beq _0223F5F6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + add r0, r4, #0 + bl MOD06_022406D4 + b _0223F6CA +_0223F5F6: + mov r0, #0 + mov r1, #3 + bl FUN_02031640 + add r6, r0, #0 + bl FUN_02031190 + cmp r6, r0 + bne _0223F61C + bl FUN_02031668 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240668 + b _0223F6CA +_0223F61C: + mov r0, #0 + mov r1, #5 + bl FUN_02031640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223F640 + bl FUN_02031668 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240668 + b _0223F6CA +_0223F640: + mov r0, #0 + mov r1, #4 + bl FUN_02031640 + add r6, r0, #0 + bl FUN_02031190 + cmp r6, r0 + bne _0223F662 + mov r0, #0x53 + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223F6D0 ; =MOD06_0223FEF0 + bl MOD06_0223F8BC + b _0223F6CA +_0223F662: + mov r0, #0 + mov r1, #2 + bl FUN_02031640 + add r6, r0, #0 + bl FUN_02031190 + cmp r6, r0 + bne _0223F6AE + bl FUN_02031668 + bl FUN_0202DF28 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + ldr r0, _0223F6D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223F69E + ldr r0, _0223F6D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_0201BD7C +_0223F69E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240418 + b _0223F6CA +_0223F6AE: + bl MOD06_02240860 + cmp r0, #0 + beq _0223F6C6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240668 + b _0223F6CA +_0223F6C6: + mov r0, #0 + pop {r4, r5, r6, pc} +_0223F6CA: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_0223F6D0: .word MOD06_0223FEF0 +_0223F6D4: .word 0x02252420 + + thumb_func_start MOD06_0223F6D8 +MOD06_0223F6D8: ; 0x0223F6D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223F714 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223F712 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223F5D0 + cmp r0, #0 + bne _0223F712 + ldr r0, _0223F718 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _0223F712 + mov r0, #3 + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223F71C ; =MOD06_0223F720 + bl MOD06_0223F8BC +_0223F712: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223F714: .word 0x02252420 +_0223F718: .word 0x021C48B8 +_0223F71C: .word MOD06_0223F720 + + thumb_func_start MOD06_0223F720 +MOD06_0223F720: ; 0x0223F720 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + bl MOD06_0223F5D0 + cmp r0, #0 + bne _0223F75C + ldr r0, _0223F760 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223F75C + mov r0, #4 + str r0, [sp] + ldr r0, _0223F760 ; =0x02252420 + ldr r1, _0223F764 ; =0x0224F488 + ldr r0, [r0] + ldr r2, _0223F768 ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _0223F76C ; =MOD06_0223F770 + bl MOD06_0223F8BC +_0223F75C: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0223F760: .word 0x02252420 +_0223F764: .word 0x0224F488 +_0223F768: .word 0x000003D9 +_0223F76C: .word MOD06_0223F770 + + thumb_func_start MOD06_0223F770 +MOD06_0223F770: ; 0x0223F770 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD06_0223F5D0 + cmp r0, #0 + ldr r0, [r4, #0x60] + beq _0223F78C + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x60] + pop {r3, r4, r5, pc} +_0223F78C: + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _0223F7AE + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + mov r0, #6 + mov r1, #0 + bl MOD06_0223EDC4 + add r0, r4, #0 + bl MOD06_022406D4 + pop {r3, r4, r5, pc} +_0223F7AE: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223F7BC + ldr r0, _0223F7C0 ; =MOD06_0223F584 + bl MOD06_0223F8BC +_0223F7BC: + pop {r3, r4, r5, pc} + nop +_0223F7C0: .word MOD06_0223F584 + + thumb_func_start MOD06_0223F7C4 +MOD06_0223F7C4: ; 0x0223F7C4 + push {r4, lr} + sub sp, #0x10 + add r4, r2, #0 + mov r2, #0 + add r0, sp, #0xc + strh r2, [r0] + ldr r0, _0223F898 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _0223F7E0 + add r1, sp, #0xc + bl FUN_02001448 +_0223F7E0: + add r0, sp, #0xc + ldrh r1, [r0] + add r1, r1, r4 + strh r1, [r0] + ldrh r0, [r0] + bl FUN_0202DFA4 + cmp r0, #0 + beq _0223F892 + add r0, sp, #0xc + ldrh r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + ldr r0, [r0, #0x50] + bl FUN_0200ABC0 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0x34 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r0, _0223F898 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r0, _0223F898 ; =0x02252420 + lsl r4, r4, #4 + ldr r2, [r0] + mov r1, #0 + str r4, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2] + add r0, #0x20 + mov r3, #8 + bl FUN_0201BD84 + add r0, sp, #0xc + ldrh r0, [r0] + bl FUN_0202DFA4 + bl FUN_020239C0 + mov r1, #2 + add r2, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F898 ; =0x02252420 + mov r3, #5 + ldr r0, [r0] + ldr r0, [r0, #0x50] + bl FUN_0200AD38 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0x33 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0xc] + bl FUN_0200A8E0 + ldr r0, _0223F898 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + bl FUN_0200B7B8 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r3, #0x48 + str r4, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2, #8] + add r0, #0x20 + bl FUN_0201BD84 +_0223F892: + add sp, #0x10 + pop {r4, pc} + nop +_0223F898: .word 0x02252420 + + thumb_func_start MOD06_0223F89C +MOD06_0223F89C: ; 0x0223F89C + push {r4, lr} + add r4, r0, #0 + bl MOD06_02240778 + add r2, r0, #0 + ldr r0, [r4, #0x68] + add r4, #0x91 + ldrb r1, [r4] + bl FUN_0204FEB0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223F8B4 +MOD06_0223F8B4: ; 0x0223F8B4 + ldr r3, _0223F8B8 ; =0x02050025 + bx r3 + .align 2, 0 +_0223F8B8: .word 0x02050025 + + thumb_func_start MOD06_0223F8BC +MOD06_0223F8BC: ; 0x0223F8BC + ldr r1, _0223F8C4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x6c] + bx lr + .align 2, 0 +_0223F8C4: .word 0x02252420 + + thumb_func_start MOD06_0223F8C8 +MOD06_0223F8C8: ; 0x0223F8C8 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _0223F94C ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + bl MOD06_0223F95C + ldr r0, _0223F950 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019048 + cmp r0, #0 + bne _0223F910 + ldr r0, _0223F950 ; =0x02252420 + mov r2, #3 + ldr r1, [r0] + mov r0, #2 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xcd + str r0, [sp, #0x10] + ldr r0, [r1, #0x68] + add r1, #0x30 + ldr r0, [r0, #8] + mov r3, #0x16 + bl FUN_02019064 +_0223F910: + ldr r0, _0223F950 ; =0x02252420 + ldr r2, _0223F954 ; =0x000003D9 + ldr r0, [r0] + mov r1, #1 + add r0, #0x30 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, _0223F950 ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0223F950 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_020191D0 + mov r0, #1 + add r4, #0x97 + strb r0, [r4] + mov r0, #0 + bl FUN_0202DEE0 + ldr r0, _0223F958 ; =MOD06_0223FAB8 + bl MOD06_0223F8BC + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_0223F94C: .word MOD06_0223FAA4 +_0223F950: .word 0x02252420 +_0223F954: .word 0x000003D9 +_0223F958: .word MOD06_0223FAB8 + + thumb_func_start MOD06_0223F95C +MOD06_0223F95C: ; 0x0223F95C + push {r3, r4, lr} + sub sp, #0x44 + ldr r4, _0223F9D0 ; =0x0224F514 + add r3, sp, #0 + mov r2, #8 +_0223F966: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F966 + ldr r0, [r4] + str r0, [r3] + ldr r0, _0223F9D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #0x11 + blo _0223F982 + bl ErrorHandling +_0223F982: + ldr r0, _0223F9D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223F9BE + bl FUN_0202DF28 + cmp r0, #1 + ble _0223F9AA + ldr r0, _0223F9D4 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x92 + ldrb r0, [r0] + add r0, #0x5e + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, pc} +_0223F9AA: + ldr r0, _0223F9D4 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x92 + ldrb r0, [r0] + add r0, #0x54 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, pc} +_0223F9BE: + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, pc} + nop +_0223F9D0: .word 0x0224F514 +_0223F9D4: .word 0x02252420 + + thumb_func_start MOD06_0223F9D8 +MOD06_0223F9D8: ; 0x0223F9D8 + push {r3, r4, lr} + sub sp, #0xc + bl FUN_0202DF28 + add r4, r0, #0 + bl MOD06_02240750 + cmp r4, r0 + blt _0223F9F4 + bl FUN_0202DF28 + add r2, r0, #0 + mov r4, #0x36 + b _0223FA02 +_0223F9F4: + bl MOD06_02240750 + add r4, r0, #0 + bl FUN_0202DF28 + sub r2, r4, r0 + mov r4, #0x35 +_0223FA02: + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223FA5C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0x54] + bl FUN_0200AD38 + ldr r0, _0223FA5C ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0223FA5C ; =0x02252420 + add r1, r4, #0 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x1c] + bl FUN_0200A8E0 + ldr r0, _0223FA5C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x54] + ldr r1, [r2, #0x18] + ldr r2, [r2, #0x1c] + bl FUN_0200B7B8 + ldr r0, _0223FA5C ; =0x02252420 + mov r3, #2 + ldr r2, [r0] + mov r1, #0 + str r3, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2, #0x18] + add r0, #0x30 + bl FUN_0201BD84 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223FA5C: .word 0x02252420 + + thumb_func_start MOD06_0223FA60 +MOD06_0223FA60: ; 0x0223FA60 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + ldr r6, _0223FAA0 ; =0x0224F4D0 + add r2, r0, #0 + add r4, r1, #0 + add r5, sp, #0 + mov r3, #8 +_0223FA6E: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0223FA6E + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + beq _0223FA8C + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_0200ABC0 +_0223FA8C: + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #1 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223FAA0: .word 0x0224F4D0 + + thumb_func_start MOD06_0223FAA4 +MOD06_0223FAA4: ; 0x0223FAA4 + push {r3, lr} + ldr r2, _0223FAB4 ; =0x02252420 + ldr r2, [r2] + ldr r2, [r2, #0x6c] + cmp r2, #0 + beq _0223FAB2 + blx r2 +_0223FAB2: + pop {r3, pc} + .align 2, 0 +_0223FAB4: .word 0x02252420 + + thumb_func_start MOD06_0223FAB8 +MOD06_0223FAB8: ; 0x0223FAB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r0, r1, #0 + bl MOD06_0223F9D8 + ldr r0, _0223FB50 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FB4C + mov r0, #5 + mov r1, #4 + bl FUN_02012838 + ldr r4, _0223FB50 ; =0x02252420 + mov r5, #0 + ldr r1, [r4] + mov r6, #0x37 + str r0, [r1, #0x64] + add r7, r5, #0 +_0223FAE6: + ldr r1, [r4] + add r2, r6, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x74] + add r3, r7, #0 + bl FUN_02012880 + add r5, r5, #1 + cmp r5, #5 + blt _0223FAE6 + ldr r1, _0223FB50 ; =0x02252420 + mov r2, #1 + ldr r0, [r1] + mov r3, #0 + add r0, #0x98 + strb r2, [r0] + add r2, r3, #0 +_0223FB08: + ldr r0, [r1] + add r0, r0, r3 + add r0, #0x80 + add r3, r3, #1 + strb r2, [r0] + cmp r3, #8 + blt _0223FB08 + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #0x11 + str r0, [sp, #0x18] + mov r0, #0xc + mov r4, sp + str r0, [sp, #0x1c] + sub r4, #0x10 + ldr r3, _0223FB54 ; =0x0224F490 + str r1, [sp, #0x20] + add r2, r4, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1, r2, r3} + bl MOD06_0223EE74 + ldr r0, _0223FB58 ; =MOD06_0223FB5C + bl MOD06_0223F8BC +_0223FB4C: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223FB50: .word 0x02252420 +_0223FB54: .word 0x0224F490 +_0223FB58: .word MOD06_0223FB5C + + thumb_func_start MOD06_0223FB5C +MOD06_0223FB5C: ; 0x0223FB5C + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + str r0, [sp] + add r0, r1, #0 + str r1, [sp, #4] + bl MOD06_0223F9D8 + mov r7, #1 + ldr r4, _0223FCF0 ; =0x02252420 + mov r5, #0 + add r6, r7, #0 +_0223FB72: + add r0, r5, #0 + bl FUN_0202DEA4 + cmp r0, #0 + beq _0223FB90 + cmp r5, #0 + beq _0223FB90 + ldr r0, [r4] + add r0, r0, r5 + add r0, #0x80 + strb r6, [r0] + ldr r0, [r4] + add r0, #0x98 + strb r6, [r0] + b _0223FBDA +_0223FB90: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _0223FBB4 + ldr r1, [r4] + add r0, r1, r5 + add r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0223FBB4 + add r0, r1, r5 + add r0, #0x80 + strb r7, [r0] + ldr r0, [r4] + add r0, #0x98 + strb r7, [r0] + b _0223FBDA +_0223FBB4: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + bne _0223FBDA + ldr r1, [r4] + add r0, r1, r5 + add r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FBDA + add r1, r1, r5 + add r1, #0x80 + mov r0, #0 + strb r0, [r1] + ldr r1, [r4] + mov r0, #1 + add r1, #0x98 + strb r0, [r1] +_0223FBDA: + add r5, r5, #1 + cmp r5, #8 + blt _0223FB72 + ldr r1, _0223FCF0 ; =0x02252420 + ldr r2, [r1] + add r0, r2, #0 + add r0, #0x98 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FC32 + mov r0, #0 + add r2, #0x98 + strb r0, [r2] + ldr r0, [r1] + ldr r0, [r0, #0x5c] + bl FUN_02001328 + ldr r0, _0223FCF0 ; =0x02252420 + mov r1, #3 + ldr r0, [r0] + mov r5, #0 + ldr r0, [r0, #0x5c] + bl FUN_02001470 + cmp r0, #0 + bls _0223FC32 + ldr r4, _0223FCF0 ; =0x02252420 + add r6, r5, #0 + mov r7, #3 +_0223FC14: + ldr r0, [r4] + lsl r2, r5, #0x18 + ldr r0, [r0, #0x5c] + add r1, r6, #0 + lsr r2, r2, #0x18 + bl MOD06_0223F7C4 + ldr r0, [r4] + add r1, r7, #0 + ldr r0, [r0, #0x5c] + add r5, r5, #1 + bl FUN_02001470 + cmp r5, r0 + blo _0223FC14 +_0223FC32: + ldr r0, [sp, #4] + ldr r0, [r0, #0x5c] + bl FUN_02001204 + add r4, r0, #0 + bl FUN_0202DF08 + cmp r0, #0xff + beq _0223FC6A + bl FUN_0202DF08 + ldr r1, [sp, #4] + add r1, #0x95 + strb r0, [r1] + ldr r0, _0223FCF4 ; =0x0000060D + bl FUN_020054C8 + ldr r0, [sp, #4] + ldr r1, [sp, #4] + add r0, #0x95 + ldrb r0, [r0] + bl MOD06_0223FA60 + ldr r0, _0223FCF8 ; =MOD06_02240310 + bl MOD06_0223F8BC + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0223FC6A: + bl FUN_020311F0 + cmp r0, #0 + beq _0223FC8C + bl MOD06_0223F8B4 + ldr r0, [sp] + ldr r1, [sp, #4] + bl MOD06_02240364 + ldr r0, _0223FCF0 ; =0x02252420 + mov r1, #3 + ldr r0, [r0] + add sp, #0x4c + add r0, #0x88 + str r1, [r0] + pop {r4, r5, r6, r7, pc} +_0223FC8C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0223FC9C + add r0, r0, #1 + cmp r4, r0 + beq _0223FCEA + b _0223FCA6 +_0223FC9C: + ldr r0, _0223FCFC ; =MOD06_0224019C + bl MOD06_0223F8BC + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0223FCA6: + bl MOD06_02240750 + add r4, r0, #0 + bl FUN_0202DF28 + cmp r4, r0 + bgt _0223FCEA + ldr r4, _0223FD00 ; =0x0224F59C + add r3, sp, #8 + mov r2, #8 +_0223FCBA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FCBA + ldr r0, [r4] + str r0, [r3] + bl FUN_0202DF28 + ldr r1, [sp, #4] + add r1, #0x90 + strb r0, [r1] + ldr r0, [sp, #4] + add r0, #0x91 + str r0, [sp, #4] + ldrb r0, [r0] + lsl r1, r0, #2 + add r0, sp, #8 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FD04 ; =MOD06_0223FFD4 + bl MOD06_0223F8BC +_0223FCEA: + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_0223FCF0: .word 0x02252420 +_0223FCF4: .word 0x0000060D +_0223FCF8: .word MOD06_02240310 +_0223FCFC: .word MOD06_0224019C +_0223FD00: .word 0x0224F59C +_0223FD04: .word MOD06_0223FFD4 + + thumb_func_start MOD06_0223FD08 +MOD06_0223FD08: ; 0x0223FD08 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, [r4, #0x60] + mov r1, #4 + bl FUN_020021AC + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x95 + ldrb r0, [r0] + bl FUN_02030E7C + cmp r0, #0 + bne _0223FDA6 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _0223FD42 + ldr r0, [r4, #0x60] + mov r1, #4 + bl FUN_020021EC +_0223FD42: + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223FD8E + mov r5, #1 + bl MOD06_02240764 + cmp r0, #1 + ble _0223FD7E + mov r4, #5 +_0223FD58: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _0223FD74 + add r0, r5, #0 + bl FUN_0202DE78 + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl FUN_0203162C +_0223FD74: + add r5, r5, #1 + bl MOD06_02240764 + cmp r5, r0 + blt _0223FD58 +_0223FD7E: + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE0 ; =MOD06_0223FF30 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FD8E: + add r4, #0x95 + ldrb r0, [r4] + bl FUN_0202DE78 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE0 ; =MOD06_0223FF30 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FDA6: + bl FUN_020311F0 + cmp r0, #0 + bne _0223FDB6 + bl MOD06_02240860 + cmp r0, #0 + beq _0223FDDE +_0223FDB6: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _0223FDC6 + ldr r0, [r4, #0x60] + mov r1, #4 + bl FUN_020021EC +_0223FDC6: + add r4, #0x95 + ldrb r0, [r4] + bl FUN_0202DE78 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE0 ; =MOD06_0223FF30 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FDDE: + cmp r5, #0 + bne _0223FE6E + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + add r0, #0xff + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _0223FE14 + bl FUN_0202E08C + cmp r0, #0 + bne _0223FE14 + mov r0, #0x53 + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE4 ; =MOD06_0223FEF0 + bl MOD06_0223F8BC + add r4, #0x95 + ldrb r1, [r4] + mov r0, #4 + bl FUN_0203162C + pop {r4, r5, r6, pc} +_0223FE14: + add r0, r4, #0 + add r0, #0x95 + ldrb r0, [r0] + bl FUN_0202DEE0 + add r1, r4, #0 + add r1, #0x95 + ldrb r1, [r1] + mov r0, #2 + bl FUN_0203162C + bl MOD06_02240764 + add r5, r0, #0 + bl FUN_0202DF28 + cmp r5, r0 + bne _0223FE62 + bl FUN_0202DF28 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + bl MOD06_02240764 + cmp r0, #2 + ble _0223FE52 + ldr r0, _0223FEE8 ; =MOD06_0223FF94 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FE52: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_022403E0 + pop {r4, r5, r6, pc} +_0223FE62: + bl MOD06_0223F95C + ldr r0, _0223FEEC ; =MOD06_0223FF6C + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FE6E: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0223FEDC + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223FEBE + mov r5, #1 + bl MOD06_02240764 + cmp r0, #1 + ble _0223FEB2 + mov r4, #5 +_0223FE8C: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _0223FEA8 + add r0, r5, #0 + bl FUN_0202DE78 + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl FUN_0203162C +_0223FEA8: + add r5, r5, #1 + bl MOD06_02240764 + cmp r5, r0 + blt _0223FE8C +_0223FEB2: + bl MOD06_0223F95C + ldr r0, _0223FEEC ; =MOD06_0223FF6C + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FEBE: + add r0, r4, #0 + add r0, #0x95 + ldrb r0, [r0] + bl FUN_0202DE78 + add r4, #0x95 + ldrb r1, [r4] + mov r0, #3 + bl FUN_0203162C + bl MOD06_0223F95C + ldr r0, _0223FEEC ; =MOD06_0223FF6C + bl MOD06_0223F8BC +_0223FEDC: + pop {r4, r5, r6, pc} + nop +_0223FEE0: .word MOD06_0223FF30 +_0223FEE4: .word MOD06_0223FEF0 +_0223FEE8: .word MOD06_0223FF94 +_0223FEEC: .word MOD06_0223FF6C + + thumb_func_start MOD06_0223FEF0 +MOD06_0223FEF0: ; 0x0223FEF0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223FF28 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FF26 + ldr r0, _0223FF2C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223FF26 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + bl MOD06_0223F8B4 + ldr r0, _0223FF28 ; =0x02252420 + mov r1, #4 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] +_0223FF26: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223FF28: .word 0x02252420 +_0223FF2C: .word 0x021C48B8 + + thumb_func_start MOD06_0223FF30 +MOD06_0223FF30: ; 0x0223FF30 + push {r3, lr} + add r0, r1, #0 + bl MOD06_0223F9D8 + ldr r0, _0223FF60 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FF5C + ldr r0, _0223FF64 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223FF5C + bl MOD06_0223F95C + ldr r0, _0223FF68 ; =MOD06_0223FF6C + bl MOD06_0223F8BC +_0223FF5C: + pop {r3, pc} + nop +_0223FF60: .word 0x02252420 +_0223FF64: .word 0x021C48B8 +_0223FF68: .word MOD06_0223FF6C + + thumb_func_start MOD06_0223FF6C +MOD06_0223FF6C: ; 0x0223FF6C + push {r3, lr} + add r0, r1, #0 + bl MOD06_0223F9D8 + ldr r0, _0223FF8C ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FF8A + ldr r0, _0223FF90 ; =MOD06_0223FB5C + bl MOD06_0223F8BC +_0223FF8A: + pop {r3, pc} + .align 2, 0 +_0223FF8C: .word 0x02252420 +_0223FF90: .word MOD06_0223FB5C + + thumb_func_start MOD06_0223FF94 +MOD06_0223FF94: ; 0x0223FF94 + push {r4, r5, lr} + sub sp, #0x44 + ldr r5, _0223FFCC ; =0x0224F624 + add r4, r1, #0 + add r3, sp, #0 + mov r2, #8 +_0223FFA0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FFA0 + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + bl MOD06_0223F9D8 + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FFD0 ; =MOD06_0223FFD4 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r4, r5, pc} + .align 2, 0 +_0223FFCC: .word 0x0224F624 +_0223FFD0: .word MOD06_0223FFD4 + + thumb_func_start MOD06_0223FFD4 +MOD06_0223FFD4: ; 0x0223FFD4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + mov r0, #0 + bl FUN_02031A24 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, _02240020 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0224001A + mov r0, #4 + str r0, [sp] + ldr r0, _02240020 ; =0x02252420 + ldr r1, _02240024 ; =0x0224F488 + ldr r0, [r0] + ldr r2, _02240028 ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _0224002C ; =MOD06_02240030 + bl MOD06_0223F8BC +_0224001A: + add sp, #4 + pop {r3, r4, pc} + nop +_02240020: .word 0x02252420 +_02240024: .word 0x0224F488 +_02240028: .word 0x000003D9 +_0224002C: .word MOD06_02240030 + + thumb_func_start MOD06_02240030 +MOD06_02240030: ; 0x02240030 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD06_0223F9D8 + ldr r0, [r5, #0x5c] + bl FUN_02001204 + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_020021AC + add r4, r0, #0 + bl FUN_020311F0 + cmp r0, #0 + bne _02240062 + bl FUN_02030F20 + add r1, r5, #0 + add r1, #0x90 + ldrb r1, [r1] + cmp r1, r0 + beq _0224007E +_02240062: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02240072 + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_020021EC +_02240072: + mov r0, #0 + str r0, [r5, #0x60] + ldr r0, _022400E8 ; =MOD06_022400F4 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0224007E: + cmp r4, #0 + bne _022400C0 + add r5, #0x91 + ldrb r0, [r5] + cmp r0, #8 + bne _022400B2 + mov r4, #1 + bl FUN_02030F20 + cmp r0, #1 + ble _022400B2 +_02240094: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _022400A8 + ldr r0, _022400E8 ; =MOD06_022400F4 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_022400A8: + add r4, r4, #1 + bl FUN_02030F20 + cmp r4, r0 + blt _02240094 +_022400B2: + mov r0, #0xa + bl FUN_02031588 + ldr r0, _022400EC ; =MOD06_022402B8 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_022400C0: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022400E4 + mov r0, #1 + bl FUN_02031A24 + bl MOD06_0223F8B4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD06_02240364 + ldr r0, _022400F0 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] +_022400E4: + pop {r4, r5, r6, pc} + nop +_022400E8: .word MOD06_022400F4 +_022400EC: .word MOD06_022402B8 +_022400F0: .word 0x02252420 + + thumb_func_start MOD06_022400F4 +MOD06_022400F4: ; 0x022400F4 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + ldr r6, _02240158 ; =0x0224F558 + add r2, r0, #0 + add r4, r1, #0 + add r5, sp, #0 + mov r3, #8 +_02240102: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02240102 + ldr r0, [r6] + add r1, r4, #0 + str r0, [r5] + add r0, r2, #0 + bl MOD06_02240364 + ldr r0, _0224015C ; =0x02252420 + ldr r1, [r0] + add r0, r1, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _02240132 + add r1, #0x92 + ldrb r0, [r1] + mov r1, #0 + add r0, #0x68 + bl MOD06_0223EDC4 + b _02240144 +_02240132: + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 +_02240144: + bl FUN_02050024 + ldr r0, _02240160 ; =MOD06_02240164 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + nop +_02240158: .word 0x0224F558 +_0224015C: .word 0x02252420 +_02240160: .word MOD06_02240164 + + thumb_func_start MOD06_02240164 +MOD06_02240164: ; 0x02240164 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02240194 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240192 + ldr r0, _02240198 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02240192 + ldr r0, _02240194 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + bl FUN_0200CAB4 +_02240192: + pop {r4, pc} + .align 2, 0 +_02240194: .word 0x02252420 +_02240198: .word 0x021C48B8 + + thumb_func_start MOD06_0224019C +MOD06_0224019C: ; 0x0224019C + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + ldr r6, _022401F8 ; =0x0224F668 + add r5, r0, #0 + add r4, r1, #0 + add r3, sp, #0 + mov r2, #8 +_022401AA: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022401AA + ldr r0, [r6] + str r0, [r3] + add r0, r4, #0 + bl MOD06_0223F9D8 + bl FUN_0202DF28 + cmp r0, #1 + ble _022401DE + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _022401FC ; =MOD06_02240204 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_022401DE: + bl MOD06_0223F8B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + ldr r0, _02240200 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022401F8: .word 0x0224F668 +_022401FC: .word MOD06_02240204 +_02240200: .word 0x02252420 + + thumb_func_start MOD06_02240204 +MOD06_02240204: ; 0x02240204 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, _02240248 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240244 + mov r0, #4 + str r0, [sp] + ldr r0, _02240248 ; =0x02252420 + ldr r1, _0224024C ; =0x0224F488 + ldr r0, [r0] + ldr r2, _02240250 ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _02240254 ; =MOD06_02240258 + bl MOD06_0223F8BC +_02240244: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02240248: .word 0x02252420 +_0224024C: .word 0x0224F488 +_02240250: .word 0x000003D9 +_02240254: .word MOD06_02240258 + + thumb_func_start MOD06_02240258 +MOD06_02240258: ; 0x02240258 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD06_0223F9D8 + ldr r0, [r5, #0x5c] + bl FUN_02001204 + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_020021AC + add r4, r0, #0 + bl FUN_020311F0 + cmp r0, #0 + beq _02240280 + mov r4, #1 + mvn r4, r4 +_02240280: + cmp r4, #0 + bne _0224029C + bl MOD06_0223F8B4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD06_02240364 + ldr r0, _022402B0 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + pop {r4, r5, r6, pc} +_0224029C: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022402AE + bl MOD06_0223F95C + ldr r0, _022402B4 ; =MOD06_0223FF6C + bl MOD06_0223F8BC +_022402AE: + pop {r4, r5, r6, pc} + .align 2, 0 +_022402B0: .word 0x02252420 +_022402B4: .word MOD06_0223FF6C + + thumb_func_start MOD06_022402B8 +MOD06_022402B8: ; 0x022402B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_020311F0 + cmp r0, #0 + bne _022402D4 + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + ldrb r1, [r1] + cmp r1, r0 + beq _022402DC +_022402D4: + ldr r0, _0224030C ; =MOD06_022400F4 + bl MOD06_0223F8BC + pop {r3, r4, r5, pc} +_022402DC: + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + mov r0, #0xa + bl FUN_020315D8 + cmp r0, #0 + beq _02240308 + bl FUN_020314E8 + cmp r0, #0 + beq _02240308 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240724 +_02240308: + pop {r3, r4, r5, pc} + nop +_0224030C: .word MOD06_022400F4 + + thumb_func_start MOD06_02240310 +MOD06_02240310: ; 0x02240310 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, _02240354 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240350 + mov r0, #4 + str r0, [sp] + ldr r0, _02240354 ; =0x02252420 + ldr r1, _02240358 ; =0x0224F488 + ldr r0, [r0] + ldr r2, _0224035C ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _02240360 ; =MOD06_0223FD08 + bl MOD06_0223F8BC +_02240350: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02240354: .word 0x02252420 +_02240358: .word 0x0224F488 +_0224035C: .word 0x000003D9 +_02240360: .word MOD06_0223FD08 + + thumb_func_start MOD06_02240364 +MOD06_02240364: ; 0x02240364 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _022403DC ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + mov r1, #0xf + add r0, #0x40 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x20 + mov r1, #0 + bl FUN_0200CCF8 + ldr r0, [r4, #0x64] + bl FUN_02012870 + mov r1, #0 + ldr r0, [r4, #0x5c] + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x97 + ldrb r0, [r0] + cmp r0, #0 + beq _022403D0 + ldr r0, _022403DC ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x30 + bl FUN_0200CCF8 + ldr r0, _022403DC ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019570 + ldr r0, _022403DC ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019178 + mov r0, #0 + add r4, #0x97 + strb r0, [r4] +_022403D0: + cmp r5, #0 + beq _022403DA + add r0, r5, #0 + bl FUN_0200CAB4 +_022403DA: + pop {r3, r4, r5, pc} + .align 2, 0 +_022403DC: .word 0x02252420 + + thumb_func_start MOD06_022403E0 +MOD06_022403E0: ; 0x022403E0 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_0200ABC0 + mov r0, #0x2b + mov r1, #1 + bl MOD06_0223EDC4 + ldr r0, _02240410 ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + ldr r0, _02240414 ; =MOD06_02240474 + bl MOD06_0223F8BC + pop {r4, pc} + nop +_02240410: .word MOD06_0223FAA4 +_02240414: .word MOD06_02240474 + + thumb_func_start MOD06_02240418 +MOD06_02240418: ; 0x02240418 + push {r4, lr} + ldr r1, _02240468 ; =0x02252420 + add r4, r0, #0 + add r0, #0x8e + ldr r1, [r1] + ldrh r0, [r0] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + ldr r2, _02240468 ; =0x02252420 + ldr r0, [r4, #0x58] + ldr r2, [r2] + mov r1, #1 + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + mov r0, #4 + mov r1, #1 + bl MOD06_0223EDC4 + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + ldr r0, _0224046C ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + ldr r0, _02240470 ; =MOD06_02240474 + bl MOD06_0223F8BC + ldr r0, _02240468 ; =0x02252420 + mov r1, #0x5a + ldr r0, [r0] + add r0, #0x96 + strb r1, [r0] + pop {r4, pc} + nop +_02240468: .word 0x02252420 +_0224046C: .word MOD06_0223FAA4 +_02240470: .word MOD06_02240474 + + thumb_func_start MOD06_02240474 +MOD06_02240474: ; 0x02240474 + push {r4, lr} + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _02240494 + bl FUN_02030F20 + add r4, #0x90 + ldrb r1, [r4] + cmp r1, r0 + beq _02240494 + ldr r0, _022404CC ; =MOD06_02240600 + bl MOD06_0223F8BC + pop {r4, pc} +_02240494: + bl MOD06_02240860 + cmp r0, #0 + bne _022404A4 + bl FUN_020311F0 + cmp r0, #0 + beq _022404AC +_022404A4: + ldr r0, _022404CC ; =MOD06_02240600 + bl MOD06_0223F8BC + pop {r4, pc} +_022404AC: + ldr r0, _022404D0 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _022404C8 + mov r0, #0xa + bl FUN_02031588 + ldr r0, _022404D4 ; =MOD06_022404D8 + bl MOD06_0223F8BC +_022404C8: + pop {r4, pc} + nop +_022404CC: .word MOD06_02240600 +_022404D0: .word 0x02252420 +_022404D4: .word MOD06_022404D8 + + thumb_func_start MOD06_022404D8 +MOD06_022404D8: ; 0x022404D8 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _022404FE + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + ldrb r1, [r1] + cmp r1, r0 + beq _022404FE + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + b _0224058E +_022404FE: + bl MOD06_02240860 + cmp r0, #0 + bne _0224050E + bl FUN_020311F0 + cmp r0, #0 + beq _02240518 +_0224050E: + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_02240518: + mov r0, #0 + bl FUN_02030E7C + cmp r0, #0 + bne _0224052C + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_0224052C: + mov r0, #0 + mov r1, #5 + bl FUN_02031640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02240546 + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_02240546: + mov r0, #0xa + bl FUN_020315D8 + cmp r0, #0 + beq _0224058E + bl FUN_020314E8 + cmp r0, #0 + beq _0224058E + ldr r0, _022405F8 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + bne _02240574 + ldr r0, _022405F8 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_0201BD7C +_02240574: + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + add r0, r4, #0 + bl MOD06_02240724 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_0224058E: + ldr r2, _022405F8 ; =0x02252420 + ldr r0, [r2] + add r1, r0, #0 + add r1, #0x96 + ldrb r1, [r1] + cmp r1, #0 + beq _022405F0 + add r1, r0, #0 + add r1, #0x96 + ldrb r1, [r1] + add r0, #0x96 + sub r1, r1, #1 + strb r1, [r0] + ldr r2, [r2] + add r0, r2, #0 + add r0, #0x96 + ldrb r0, [r0] + cmp r0, #0 + bne _022405F0 + ldr r6, _022405FC ; =0x0224F6AC + add r5, sp, #0 + mov r3, #8 +_022405BA: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _022405BA + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _022405E0 + add r2, #0x92 + ldrb r0, [r2] + mov r1, #0 + add r0, #0x63 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_022405E0: + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 +_022405F0: + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022405F4: .word MOD06_02240600 +_022405F8: .word 0x02252420 +_022405FC: .word 0x0224F6AC + + thumb_func_start MOD06_02240600 +MOD06_02240600: ; 0x02240600 + push {r3, lr} + ldr r0, _02240624 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240620 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _02240628 ; =MOD06_0224062C + bl MOD06_0223F8BC +_02240620: + pop {r3, pc} + nop +_02240624: .word 0x02252420 +_02240628: .word MOD06_0224062C + + thumb_func_start MOD06_0224062C +MOD06_0224062C: ; 0x0224062C + push {r4, lr} + add r4, r0, #0 + ldr r0, _02240660 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0224065E + ldr r0, _02240664 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224065E + add r0, r4, #0 + bl FUN_0200CAB4 + bl MOD06_0223F8B4 + ldr r0, _02240660 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] +_0224065E: + pop {r4, pc} + .align 2, 0 +_02240660: .word 0x02252420 +_02240664: .word 0x021C48B8 + + thumb_func_start MOD06_02240668 +MOD06_02240668: ; 0x02240668 + push {r4, lr} + ldr r1, _022406A0 ; =0x02252420 + add r4, r0, #0 + add r0, #0x8e + ldr r1, [r1] + ldrh r0, [r0] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + ldr r2, _022406A0 ; =0x02252420 + ldr r0, [r4, #0x58] + ldr r2, [r2] + mov r1, #1 + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + mov r0, #5 + mov r1, #1 + bl MOD06_0223EDC4 + bl FUN_0204FF4C + ldr r0, _022406A4 ; =MOD06_022406A8 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_022406A0: .word 0x02252420 +_022406A4: .word MOD06_022406A8 + + thumb_func_start MOD06_022406A8 +MOD06_022406A8: ; 0x022406A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _022406D0 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _022406CE + bl FUN_0204FF4C + add r0, r4, #0 + bl MOD06_0223F270 + add r0, r5, #0 + bl FUN_0200CAB4 +_022406CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022406D0: .word 0x02252420 + + thumb_func_start MOD06_022406D4 +MOD06_022406D4: ; 0x022406D4 + push {r4, lr} + add r4, r0, #0 + bl FUN_0204FF4C + ldr r0, _022406E8 ; =MOD06_022406EC + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_022406E8: .word MOD06_022406EC + + thumb_func_start MOD06_022406EC +MOD06_022406EC: ; 0x022406EC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0224071C ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240718 + ldr r0, _02240720 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02240718 + add r0, r4, #0 + bl MOD06_0223F270 + add r0, r5, #0 + bl FUN_0200CAB4 +_02240718: + pop {r3, r4, r5, pc} + nop +_0224071C: .word 0x02252420 +_02240720: .word 0x021C48B8 + + thumb_func_start MOD06_02240724 +MOD06_02240724: ; 0x02240724 + push {r3, lr} + mov r0, #0 + bl FUN_02031A24 + ldr r0, _0224074C ; =0x02252420 + mov r1, #2 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + mov r0, #1 + add r1, r0, #0 + bl FUN_020334E8 + bl FUN_0202DBE0 + mov r0, #1 + bl FUN_0202EE84 + pop {r3, pc} + nop +_0224074C: .word 0x02252420 + + thumb_func_start MOD06_02240750 +MOD06_02240750: ; 0x02240750 + ldr r0, _0224075C ; =0x02252420 + ldr r3, _02240760 ; =0x02031259 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_0224075C: .word 0x02252420 +_02240760: .word 0x02031259 + + thumb_func_start MOD06_02240764 +MOD06_02240764: ; 0x02240764 + ldr r0, _02240770 ; =0x02252420 + ldr r3, _02240774 ; =0x02031249 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_02240770: .word 0x02252420 +_02240774: .word 0x02031249 + + thumb_func_start MOD06_02240778 +MOD06_02240778: ; 0x02240778 + ldr r0, _0224078C ; =0x02252420 + ldr r2, [r0] + add r0, r2, #0 + add r0, #0x92 + add r2, #0x93 + ldrb r1, [r0] + ldrb r0, [r2] + lsl r0, r0, #4 + add r0, r1, r0 + bx lr + .align 2, 0 +_0224078C: .word 0x02252420 + + thumb_func_start MOD06_02240790 +MOD06_02240790: ; 0x02240790 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD06_0223EF18 + ldr r0, _022407C8 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + strb r4, [r0] + sub r0, r4, #3 + cmp r0, #1 + bhi _022407B2 + mov r0, #0 + add r5, #0xac + str r0, [r5] +_022407B2: + ldr r0, _022407C8 ; =0x02252420 + ldr r1, [r0] + add r1, #0x92 + strb r6, [r1] + ldr r1, [r0] + add r1, #0x93 + strb r7, [r1] + ldr r0, [r0] + bl MOD06_0223F090 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022407C8: .word 0x02252420 + + thumb_func_start MOD06_022407CC +MOD06_022407CC: ; 0x022407CC + ldr r0, _022407D4 ; =0x02252420 + ldr r3, _022407D8 ; =MOD06_0223F270 + ldr r0, [r0] + bx r3 + .align 2, 0 +_022407D4: .word 0x02252420 +_022407D8: .word MOD06_0223F270 + + thumb_func_start MOD06_022407DC +MOD06_022407DC: ; 0x022407DC + push {r4, lr} + ldr r0, _022407F4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x88 + ldr r4, [r0] + cmp r4, #0 + beq _022407EE + bl MOD06_0223EFFC +_022407EE: + add r0, r4, #0 + pop {r4, pc} + nop +_022407F4: .word 0x02252420 + + thumb_func_start MOD06_022407F8 +MOD06_022407F8: ; 0x022407F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD06_0223EF18 + ldr r0, _02240830 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + strb r4, [r0] + sub r0, r4, #3 + cmp r0, #1 + bhi _0224081A + mov r0, #0 + add r5, #0xac + str r0, [r5] +_0224081A: + ldr r0, _02240830 ; =0x02252420 + ldr r1, [r0] + add r1, #0x92 + strb r6, [r1] + ldr r1, [r0] + add r1, #0x93 + strb r7, [r1] + ldr r0, [r0] + bl MOD06_0223F89C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240830: .word 0x02252420 + + thumb_func_start MOD06_02240834 +MOD06_02240834: ; 0x02240834 + ldr r0, _0224083C ; =0x02252420 + ldr r3, _02240840 ; =MOD06_0223F8C8 + ldr r0, [r0] + bx r3 + .align 2, 0 +_0224083C: .word 0x02252420 +_02240840: .word MOD06_0223F8C8 + + thumb_func_start MOD06_02240844 +MOD06_02240844: ; 0x02240844 + push {r4, lr} + ldr r0, _0224085C ; =0x02252420 + ldr r0, [r0] + add r0, #0x88 + ldr r4, [r0] + cmp r4, #0 + beq _02240856 + bl MOD06_0223EFFC +_02240856: + add r0, r4, #0 + pop {r4, pc} + nop +_0224085C: .word 0x02252420 + + thumb_func_start MOD06_02240860 +MOD06_02240860: ; 0x02240860 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02240864 +MOD06_02240864: ; 0x02240864 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x54 + add r4, r1, #0 + bl FUN_02019048 + cmp r0, #0 + bne _0224089E + add r0, r5, #0 + add r0, #0x54 + bl FUN_0201901C + ldr r0, [r5, #0x10] + add r1, r5, #0 + ldr r0, [r0, #8] + add r1, #0x54 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r5, #0x10] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + add r0, r5, #0 + add r0, #0x54 + bl FUN_02054608 + b _022408A6 +_0224089E: + add r0, r5, #0 + add r0, #0x54 + bl FUN_0205464C +_022408A6: + ldr r0, [r5, #0x68] + ldr r2, [r5, #0x14] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x14] + bl FUN_0200B7B8 + ldr r0, [r5, #0x10] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0 + add r0, r5, #0 + ldr r1, [r5, #0x18] + add r0, #0x54 + mov r3, #1 + bl FUN_02054658 + str r0, [r5, #0x74] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022408D4 +MOD06_022408D4: ; 0x022408D4 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _022408EC + add r0, #0x54 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + add r0, #0x54 + bl FUN_02019570 +_022408EC: + add r4, #0x54 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022408F8 +MOD06_022408F8: ; 0x022408F8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x1c] + ldr r0, [r0, #0xc] + mov r3, #4 + bl FUN_02023C04 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r1, #0 + ldr r0, [r4, #0x64] + ldr r2, [r4, #0x1c] + add r3, r1, #0 + bl FUN_0200ABB4 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02240924 +MOD06_02240924: ; 0x02240924 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r5, #0 + ldr r0, [r0, #0xc] + mov r1, #0 + add r4, #0x34 + bl FUN_02023BA4 + mov r6, #5 + cmp r0, #0 + beq _02240940 + add r6, r6, #1 +_02240940: + add r0, r4, #0 + bl FUN_02019048 + cmp r0, #0 + bne _022409D2 + add r0, r6, #2 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #8] + mov r3, #1 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #2 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r5, #0x10] + add r1, r4, #0 + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02240A20 ; =0x000003D9 + add r0, #0x34 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, [r5, #8] + ldr r1, [r5, #0x68] + mov r2, #0x7b + mov r3, #0xc + bl FUN_02012880 + mov r4, #0 + cmp r6, #0 + ble _022409C4 + mov r7, #0x71 +_02240998: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_022408F8 + ldr r0, [r5, #0x68] + ldr r2, [r5, #0x1c] + add r1, r7, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x20] + ldr r2, [r5, #0x1c] + bl FUN_0200B7B8 + ldr r0, [r5, #8] + ldr r1, [r5, #0x20] + add r2, r4, #0 + bl FUN_020128A0 + add r4, r4, #1 + cmp r4, r6 + blt _02240998 +_022409C4: + mov r2, #0x72 + add r3, r2, #0 + ldr r0, [r5, #8] + ldr r1, [r5, #0x68] + sub r3, #0x74 + bl FUN_02012880 +_022409D2: + ldr r4, _02240A24 ; =0x0224F704 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r6, #2 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #8] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x34 + str r0, [sp, #0x20] + add r0, r2, #0 + add r2, r5, #0 + str r5, [sp, #0x30] + add r2, #0x78 + ldrh r2, [r2] + mov r3, #4 + bl FUN_020010A8 + str r0, [r5] + add r5, #0x34 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_02240A20: .word 0x000003D9 +_02240A24: .word 0x0224F704 + + thumb_func_start MOD06_02240A28 +MOD06_02240A28: ; 0x02240A28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02240A62 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0x34 + mov r1, #1 + bl FUN_0200CCF8 + add r1, r4, #0 + add r1, #0x38 + ldrb r1, [r1] + ldr r0, [r4, #0x34] + bl FUN_0201AC68 + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + ldr r0, [r4, #8] + bl FUN_02012870 + mov r0, #0 + str r0, [r4] +_02240A62: + pop {r4, pc} + + thumb_func_start MOD06_02240A64 +MOD06_02240A64: ; 0x02240A64 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + bl FUN_02001204 + add r4, r0, #0 + add r2, r5, #0 + ldr r0, [r5] + mov r1, #0 + add r2, #0x78 + bl FUN_02001448 + add r0, r5, #0 + add r0, #0x80 + ldrh r6, [r0] + add r1, r5, #0 + ldr r0, [r5] + add r1, #0x80 + bl FUN_0200143C + add r0, r5, #0 + add r0, #0x80 + ldrh r0, [r0] + cmp r6, r0 + beq _02240A9C + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 +_02240A9C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02240ACC + add r0, r0, #1 + cmp r4, r0 + beq _02240AB0 + cmp r4, #0xc + beq _02240AB4 + b _02240AE6 +_02240AB0: + mov r0, #0 + pop {r4, r5, r6, pc} +_02240AB4: + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x10] + mov r1, #0 + add r0, #0xac + str r1, [r0] + add r0, r5, #0 + bl MOD06_02240A28 + mov r0, #2 + pop {r4, r5, r6, pc} +_02240ACC: + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x10] + mov r1, #0 + add r0, #0xac + str r1, [r0] + add r0, r5, #0 + bl MOD06_02240A28 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02240AE6: + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x10] + add r1, r4, #0 + ldr r0, [r0, #0xc] + bl FUN_02023BE8 + ldr r1, [r5, #0x10] + add r1, #0xac + str r0, [r1] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_02240B00: .word 0x000005DC + + thumb_func_start MOD06_02240B04 +MOD06_02240B04: ; 0x02240B04 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #3 + mov r1, #4 + ldr r4, _02240BA8 ; =0x022522E4 + bl FUN_02012838 + str r0, [r5, #0xc] + mov r0, #0xa + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02240BAC ; =0x000002F7 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x10] + add r1, #0x44 + ldr r0, [r0, #8] + mov r2, #3 + mov r3, #0x16 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02240BB0 ; =0x000003D9 + add r0, #0x44 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r6, #0 +_02240B4A: + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x68] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, #3 + blt _02240B4A + ldr r4, _02240BB4 ; =0x0224F704 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #3 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #0xc] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x44 + str r0, [sp, #0x20] + add r0, r2, #0 + add r2, r5, #0 + str r5, [sp, #0x30] + add r2, #0x7a + ldrh r2, [r2] + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #4] + add r5, #0x44 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02240BA8: .word 0x022522E4 +_02240BAC: .word 0x000002F7 +_02240BB0: .word 0x000003D9 +_02240BB4: .word 0x0224F704 + + thumb_func_start MOD06_02240BB8 +MOD06_02240BB8: ; 0x02240BB8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_02001204 + add r4, r0, #0 + add r2, r5, #0 + ldr r0, [r5, #4] + mov r1, #0 + add r2, #0x7a + bl FUN_02001448 + add r0, r5, #0 + add r0, #0x82 + ldrh r6, [r0] + add r1, r5, #0 + ldr r0, [r5, #4] + add r1, #0x82 + bl FUN_0200143C + add r0, r5, #0 + add r0, #0x82 + ldrh r0, [r0] + cmp r6, r0 + beq _02240BF0 + ldr r0, _02240C54 ; =0x000005DC + bl FUN_020054C8 +_02240BF0: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02240C02 + add r0, r0, #1 + cmp r4, r0 + bne _02240C0E + mov r0, #0 + pop {r4, r5, r6, pc} +_02240C02: + ldr r0, _02240C54 ; =0x000005DC + bl FUN_020054C8 + mov r4, #0 + mvn r4, r4 + b _02240C1A +_02240C0E: + ldr r0, _02240C54 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD06_02240A28 +_02240C1A: + ldr r0, [r5, #4] + cmp r0, #0 + beq _02240C50 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + add r0, r5, #0 + add r0, #0x44 + mov r1, #1 + bl FUN_0200CCF8 + add r1, r5, #0 + add r1, #0x48 + ldrb r1, [r1] + ldr r0, [r5, #0x44] + bl FUN_0201AC68 + add r0, r5, #0 + add r0, #0x44 + bl FUN_02019178 + ldr r0, [r5, #0xc] + bl FUN_02012870 + mov r0, #0 + str r0, [r5, #4] +_02240C50: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02240C54: .word 0x000005DC + + thumb_func_start MOD06_02240C58 +MOD06_02240C58: ; 0x02240C58 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r2, _02240EFC ; =0x0000013A + str r0, [sp, #0x14] + ldr r5, [r0, #0x64] + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x30] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x2c] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x28] + ldr r0, [sp, #0x14] + mov r2, #3 + str r0, [sp, #0x24] + add r0, #0x24 + str r0, [sp, #0x24] + mov r0, #2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x24] + ldr r0, [r0, #0x10] + mov r3, #4 + ldr r0, [r0, #8] + bl FUN_02019064 + ldr r0, [sp, #0x24] + ldr r2, _02240F00 ; =0x000003D9 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, [sp, #0x24] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x14] + add r1, r0, #0 + add r1, #0x78 + ldrh r1, [r1] + sub r1, r1, #1 + bl MOD06_022408F8 + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x2c] + mov r1, #0x51 + bl FUN_0200A8E0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x28] + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r6, #0 + mov r4, #0x10 + mov r7, #0xff +_02240CFE: + add r1, r6, #0 + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x2c] + add r1, #0x3d + bl FUN_0200A8E0 + str r4, [sp] + str r7, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x2c] + mov r1, #0 + mov r3, #2 + bl FUN_0201BD84 + add r6, r6, #1 + add r4, #0xf + cmp r6, #9 + blt _02240CFE + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, _02240F04 ; =0x022522D8 + ldr r7, _02240F08 ; =0x022522CC + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] +_02240D34: + ldr r0, [sp, #0x14] + ldrb r1, [r7] + ldr r0, [r0, #0x10] + add r0, #0xac + ldr r0, [r0] + bl FUN_02023B0C + add r2, r0, #0 + ldr r0, [sp, #0x20] + ldrb r4, [r0] + ldrb r0, [r7] + cmp r0, #0xb + bls _02240D50 + b _02240E8C +_02240D50: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240D5C: ; jump table + .short _02240E8C - _02240D5C - 2 ; case 0 + .short _02240D74 - _02240D5C - 2 ; case 1 + .short _02240D86 - _02240D5C - 2 ; case 2 + .short _02240D9A - _02240D5C - 2 ; case 3 + .short _02240E86 - _02240D5C - 2 ; case 4 + .short _02240DB6 - _02240D5C - 2 ; case 5 + .short _02240E8C - _02240D5C - 2 ; case 6 + .short _02240E34 - _02240D5C - 2 ; case 7 + .short _02240E8C - _02240D5C - 2 ; case 8 + .short _02240E86 - _02240D5C - 2 ; case 9 + .short _02240E86 - _02240D5C - 2 ; case 10 + .short _02240E86 - _02240D5C - 2 ; case 11 +_02240D74: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #1 + bl FUN_0200AD38 + b _02240E8C +_02240D86: + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + b _02240E8C +_02240D9A: + cmp r2, #0 + bne _02240DA2 + mov r4, #0x52 + b _02240E8C +_02240DA2: + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + b _02240E8C +_02240DB6: + cmp r2, #0 + ldr r0, _02240F0C ; =0x00002710 + blt _02240DD0 + mul r0, r2 + mov r1, #0xfe + bl _s32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _s32_div_f + add r6, r0, #0 + b _02240DE4 +_02240DD0: + neg r1, r2 + mul r0, r1 + mov r1, #0xfe + bl _s32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _s32_div_f + neg r6, r0 +_02240DE4: + add r0, r6, #0 + mov r1, #0xc + bl _s32_div_f + bl abs + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #2 + bl FUN_0200AD38 + add r0, r6, #0 + mov r1, #0xc + bl _s32_div_f + add r0, r1, #0 + bl abs + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #1 + mov r3, #2 + bl FUN_0200AD38 + cmp r6, #0 + bne _02240E2E + mov r4, #0x52 + b _02240E8C +_02240E2E: + ble _02240E8C + add r4, r4, #1 + b _02240E8C +_02240E34: + cmp r2, #0 + ldr r0, _02240F10 ; =0x00035D2E + blt _02240E4C + add r1, r2, #0 + mul r1, r0 + ldr r0, _02240F14 ; =0x0000C350 + add r0, r1, r0 + ldr r1, _02240F18 ; =0x000186A0 + bl _s32_div_f + add r6, r0, #0 + b _02240E5E +_02240E4C: + neg r1, r2 + add r2, r1, #0 + mul r2, r0 + ldr r0, _02240F14 ; =0x0000C350 + ldr r1, _02240F18 ; =0x000186A0 + add r0, r2, r0 + bl _s32_div_f + neg r6, r0 +_02240E5E: + add r0, r6, #0 + bl abs + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + cmp r6, #0 + bne _02240E80 + mov r4, #0x52 + b _02240E8C +_02240E80: + ble _02240E8C + add r4, r4, #1 + b _02240E8C +_02240E86: + cmp r2, #0 + bne _02240E8C + add r4, r4, #1 +_02240E8C: + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x2c] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [sp, #0x28] + add r2, r0, #0 + bl FUN_02002E14 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + mov r3, #0xbf + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x28] + mov r1, #0 + sub r3, r3, r4 + bl FUN_0201BD84 + ldr r0, [sp, #0x20] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, #0xf + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #9 + bge _02240EE0 + b _02240D34 +_02240EE0: + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x30] + bl FUN_0200A8B8 + ldr r0, [sp, #0x24] + bl FUN_020191D0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240EFC: .word 0x0000013A +_02240F00: .word 0x000003D9 +_02240F04: .word 0x022522D8 +_02240F08: .word 0x022522CC +_02240F0C: .word 0x00002710 +_02240F10: .word 0x00035D2E +_02240F14: .word 0x0000C350 +_02240F18: .word 0x000186A0 + + thumb_func_start MOD06_02240F1C +MOD06_02240F1C: ; 0x02240F1C + push {r4, lr} + add r4, r0, #0 + add r0, #0x24 + mov r1, #1 + bl FUN_0200CCF8 + add r1, r4, #0 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r4, #0x24] + bl FUN_0201AC68 + add r4, #0x24 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02240F40 +MOD06_02240F40: ; 0x02240F40 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x6c] + add r0, #0xac + ldr r0, [r0] + bl FUN_0206BE48 + cmp r0, #0 + beq _02240F6A + cmp r0, #1 + beq _02240FAA + cmp r0, #4 + beq _02240F70 + b _02240FAA +_02240F6A: + add sp, #8 + mov r0, #1 + pop {r4, pc} +_02240F70: + ldr r0, _02240FE8 ; =0x000005F3 + bl FUN_020054C8 + add r1, r4, #0 + add r1, #0x78 + ldrh r1, [r1] + add r0, r4, #0 + sub r1, r1, #1 + bl MOD06_022408F8 + ldr r0, [r4, #0x10] + mov r1, #1 + add r0, #0xac + ldr r0, [r0] + bl FUN_02023B0C + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + add r2, r0, #0 + ldr r0, [r4, #0x64] + add r3, r1, #0 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #0x6b + bl MOD06_02240864 + b _02240FE2 +_02240FAA: + ldr r0, _02240FE8 ; =0x000005F3 + bl FUN_020054C8 + add r1, r4, #0 + add r1, #0x78 + ldrh r1, [r1] + add r0, r4, #0 + sub r1, r1, #1 + bl MOD06_022408F8 + ldr r0, [r4, #0x10] + mov r1, #3 + add r0, #0xac + ldr r0, [r0] + bl FUN_02023B0C + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + add r2, r0, #0 + ldr r0, [r4, #0x64] + mov r3, #3 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #0x79 + bl MOD06_02240864 +_02240FE2: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02240FE8: .word 0x000005F3 + + thumb_func_start MOD06_02240FEC +MOD06_02240FEC: ; 0x02240FEC + push {r4, lr} + add r4, r0, #0 + bl FUN_02046528 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4, #0x7c] + cmp r1, #0xb + bls _02241004 + b _0224117A +_02241004: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241010: ; jump table + .short _02241028 - _02241010 - 2 ; case 0 + .short _02241036 - _02241010 - 2 ; case 1 + .short _02241054 - _02241010 - 2 ; case 2 + .short _02241086 - _02241010 - 2 ; case 3 + .short _02241092 - _02241010 - 2 ; case 4 + .short _022410B8 - _02241010 - 2 ; case 5 + .short _022410D2 - _02241010 - 2 ; case 6 + .short _022410F0 - _02241010 - 2 ; case 7 + .short _02241104 - _02241010 - 2 ; case 8 + .short _02241126 - _02241010 - 2 ; case 9 + .short _0224117E - _02241010 - 2 ; case 10 + .short _0224113A - _02241010 - 2 ; case 11 +_02241028: + mov r1, #0x6a + bl MOD06_02240864 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241036: + ldr r0, [r4, #0x74] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + bne _02241046 + b _0224117E +_02241046: + add r0, r4, #0 + bl MOD06_02240924 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241054: + bl MOD06_02240A64 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224106C + ldr r0, [r4, #0x70] + mov r1, #2 + strh r1, [r0] + mov r0, #0xb + str r0, [r4, #0x7c] + b _0224117E +_0224106C: + cmp r0, #2 + bne _0224107C + ldr r0, [r4, #0x70] + mov r1, #3 + strh r1, [r0] + mov r0, #0xb + str r0, [r4, #0x7c] + b _0224117E +_0224107C: + cmp r0, #1 + bne _0224117E + mov r0, #3 + str r0, [r4, #0x7c] + b _0224117E +_02241086: + bl MOD06_02240B04 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241092: + bl MOD06_02240BB8 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _022410A4 + mov r0, #2 + str r0, [r4, #0x7c] + b _0224117E +_022410A4: + cmp r0, #1 + bne _022410AE + mov r0, #5 + str r0, [r4, #0x7c] + b _0224117E +_022410AE: + cmp r0, #2 + bne _0224117E + mov r0, #7 + str r0, [r4, #0x7c] + b _0224117E +_022410B8: + bl MOD06_02240F40 + cmp r0, #0 + beq _022410CC + ldr r0, [r4, #0x70] + mov r1, #1 + strh r1, [r0] + mov r0, #0xb + str r0, [r4, #0x7c] + b _0224117E +_022410CC: + mov r0, #6 + str r0, [r4, #0x7c] + b _0224117E +_022410D2: + ldr r0, [r4, #0x74] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _0224117E + ldr r0, _02241184 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224117E + mov r0, #0 + str r0, [r4, #0x7c] + b _0224117E +_022410F0: + mov r1, #1 + bl MOD06_022408D4 + add r0, r4, #0 + bl MOD06_02240C58 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241104: + ldr r1, _02241184 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + beq _0224117E + bl MOD06_02240F1C + add r0, r4, #0 + mov r1, #0x6a + bl MOD06_02240864 + add r0, r4, #0 + bl MOD06_02240924 + mov r0, #9 + str r0, [r4, #0x7c] + b _0224117E +_02241126: + ldr r0, [r4, #0x74] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _0224117E + mov r0, #3 + str r0, [r4, #0x7c] + b _0224117E +_0224113A: + bl MOD06_02240A28 + add r0, r4, #0 + mov r1, #0 + bl MOD06_022408D4 + ldr r0, [r4, #0x64] + bl FUN_0200AB18 + ldr r0, [r4, #0x68] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_02021A20 + ldr r0, [r4, #0x18] + bl FUN_02021A20 + ldr r0, [r4, #0x1c] + bl FUN_02021A20 + ldr r0, [r4, #0x20] + bl FUN_02021A20 + ldr r0, [r4, #0x6c] + bl FUN_0206BB74 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_0224117A: + mov r0, #1 + pop {r4, pc} +_0224117E: + mov r0, #0 + pop {r4, pc} + nop +_02241184: .word 0x021C48B8 + + thumb_func_start MOD06_02241188 +MOD06_02241188: ; 0x02241188 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xb + mov r1, #0x84 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x84 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4, #0x7c] + str r5, [r4, #0x10] + add r5, #0xac + str r0, [r5] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x64] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xcf + mov r3, #4 + bl FUN_0200A86C + str r0, [r4, #0x68] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x14] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x18] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x1c] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x20] + mov r0, #0xb + bl FUN_0206BB5C + str r0, [r4, #0x6c] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022411F4 +MOD06_022411F4: ; 0x022411F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02046528 + bl MOD06_02241188 + add r2, r0, #0 + ldr r1, _02241210 ; =MOD06_02240FEC + add r0, r5, #0 + str r4, [r2, #0x70] + bl FUN_0204640C + pop {r3, r4, r5, pc} + .align 2, 0 +_02241210: .word MOD06_02240FEC + + thumb_func_start MOD06_02241214 +MOD06_02241214: ; 0x02241214 + asr r1, r0 + mov r0, #1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start MOD06_02241220 +MOD06_02241220: ; 0x02241220 + mov r2, #1 + ldr r3, [r1] + lsl r2, r0 + add r0, r3, #0 + eor r0, r2 + str r0, [r1] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02241230 +MOD06_02241230: ; 0x02241230 + push {r4, r5, lr} + sub sp, #0x2c + ldr r3, _022412E4 ; =0x0224F7B0 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x38] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, sp, #0x1c + mov r2, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r2, #0 + bl FUN_0204A840 + mov r0, #0 + str r0, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0x10 + mov r2, #3 + add r3, sp, #0x1c + bl FUN_0204A94C + cmp r0, #0 + beq _022412E0 + add r0, r4, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #1 + bl FUN_020254A0 + add r5, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + add r2, r0, #0 + mov r0, #0 + str r0, [r2] + ldr r0, [sp, #0xc] + cmp r0, #0xef + bne _022412B4 + ldr r0, [r4, #0x10] + ldr r1, _022412E8 ; =MOD06_0224158C + bl FUN_0204640C + mov r0, #2 + add sp, #0x2c + strb r0, [r5] + pop {r4, r5, pc} +_022412B4: + cmp r0, #0xf0 + bne _022412C8 + ldr r0, [r4, #0x10] + ldr r1, _022412EC ; =MOD06_02241428 + bl FUN_0204640C + mov r0, #1 + add sp, #0x2c + strb r0, [r5] + pop {r4, r5, pc} +_022412C8: + cmp r0, #0xf1 + bne _022412DC + ldr r0, [r4, #0x10] + ldr r1, _022412F0 ; =MOD06_02241348 + bl FUN_0204640C + mov r0, #0 + add sp, #0x2c + strb r0, [r5] + pop {r4, r5, pc} +_022412DC: + bl ErrorHandling +_022412E0: + add sp, #0x2c + pop {r4, r5, pc} + .align 2, 0 +_022412E4: .word 0x0224F7B0 +_022412E8: .word MOD06_0224158C +_022412EC: .word MOD06_02241428 +_022412F0: .word MOD06_02241348 + + thumb_func_start MOD06_022412F4 +MOD06_022412F4: ; 0x022412F4 + push {r4, r5, r6, lr} + add r5, r3, #0 + ldr r4, [sp, #0x10] + bl FUN_0204A6E0 + add r6, r0, #0 + bl FUN_02054890 + cmp r0, #0 + beq _02241312 + cmp r5, #0 + beq _02241342 + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02241312: + add r0, r6, #0 + bl FUN_0205489C + cmp r0, #0 + beq _0224132A + mov r0, #2 + lsl r0, r0, #0x10 + cmp r5, r0 + beq _02241342 + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224132A: + add r0, r6, #0 + bl FUN_020548A8 + cmp r0, #0 + beq _02241342 + mov r0, #1 + lsl r0, r0, #0x12 + cmp r5, r0 + beq _02241342 + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02241342: + mov r0, #0 + str r0, [r4] + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02241348 +MOD06_02241348: ; 0x02241348 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #3 + bhi _0224141E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224136E: ; jump table + .short _02241376 - _0224136E - 2 ; case 0 + .short _02241386 - _0224136E - 2 ; case 1 + .short _022413F8 - _0224136E - 2 ; case 2 + .short _02241414 - _0224136E - 2 ; case 3 +_02241376: + ldr r1, [r4, #0x4c] + mov r0, #0 + bl MOD06_022417C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224141E +_02241386: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl FUN_021DA03C + add r6, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #2 + bl FUN_021DA03C + add r7, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #3 + bl FUN_021DA03C + str r0, [sp] + add r0, r6, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _0224141E + add r0, r7, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _0224141E + ldr r0, [sp] + bl FUN_021DA20C + cmp r0, #0 + beq _0224141E + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #4 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #8] + cmp r0, #0 + bgt _022413EE + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_022413EE: + add r0, r4, #0 + add r1, sp, #4 + bl FUN_021E7EB0 + b _0224141E +_022413F8: + add r4, #0x9c + mov r0, #0 + ldr r2, [r4] + add r1, r0, #0 + bl FUN_021F4594 + ldr r0, _02241424 ; =0x0000065A + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224141E +_02241414: + bl FUN_02016A18 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224141E: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241424: .word 0x0000065A + + thumb_func_start MOD06_02241428 +MOD06_02241428: ; 0x02241428 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #5 + bls _02241444 + b _02241580 +_02241444: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241450: ; jump table + .short _0224145C - _02241450 - 2 ; case 0 + .short _0224146C - _02241450 - 2 ; case 1 + .short _022414EC - _02241450 - 2 ; case 2 + .short _02241522 - _02241450 - 2 ; case 3 + .short _02241558 - _02241450 - 2 ; case 4 + .short _02241576 - _02241450 - 2 ; case 5 +_0224145C: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl MOD06_022417C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241580 +_0224146C: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl FUN_021DA03C + add r6, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #2 + bl FUN_021DA03C + add r7, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #3 + bl FUN_021DA03C + str r0, [sp] + add r0, r6, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241580 + add r0, r7, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241580 + ldr r0, [sp] + bl FUN_021DA20C + cmp r0, #0 + beq _02241580 + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r1, r0, #0 + add r0, sp, #0x1c + bl FUN_021E7EA0 + ldr r1, [sp, #0x20] + cmp r1, #0 + bne _022414C6 + mov r0, #2 + str r0, [r5] + b _02241580 +_022414C6: + mov r0, #2 + lsl r0, r0, #0x10 + cmp r1, r0 + bne _022414DA + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022414DA: + lsl r0, r0, #1 + cmp r1, r0 + bne _022414E6 + mov r0, #3 + str r0, [r5] + b _02241580 +_022414E6: + bl ErrorHandling + b _02241580 +_022414EC: + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #0x10 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #0x14] + cmp r2, r1 + blt _02241518 + lsl r0, r0, #5 + str r0, [sp, #0x14] + mov r0, #4 + str r0, [r5] +_02241518: + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _02241580 +_02241522: + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #4 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #8] + cmp r2, r1 + bgt _0224154E + lsl r0, r0, #5 + str r0, [sp, #8] + mov r0, #4 + str r0, [r5] +_0224154E: + add r0, r4, #0 + add r1, sp, #4 + bl FUN_021E7EB0 + b _02241580 +_02241558: + add r4, #0x9c + mov r1, #2 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #0x10 + bl FUN_021F4594 + ldr r0, _02241588 ; =0x0000065A + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241580 +_02241576: + bl FUN_02016A18 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241580: + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02241588: .word 0x0000065A + + thumb_func_start MOD06_0224158C +MOD06_0224158C: ; 0x0224158C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #3 + bhi _02241666 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022415B2: ; jump table + .short _022415BA - _022415B2 - 2 ; case 0 + .short _022415CA - _022415B2 - 2 ; case 1 + .short _0224163E - _022415B2 - 2 ; case 2 + .short _0224165C - _022415B2 - 2 ; case 3 +_022415BA: + ldr r1, [r4, #0x4c] + mov r0, #2 + bl MOD06_022417C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241666 +_022415CA: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl FUN_021DA03C + add r6, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #2 + bl FUN_021DA03C + add r7, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #3 + bl FUN_021DA03C + str r0, [sp] + add r0, r6, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241666 + add r0, r7, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241666 + ldr r0, [sp] + bl FUN_021DA20C + cmp r0, #0 + beq _02241666 + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #4 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #6 + str r2, [sp, #8] + cmp r2, r1 + blt _02241634 + lsl r0, r0, #6 + str r0, [sp, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_02241634: + add r0, r4, #0 + add r1, sp, #4 + bl FUN_021E7EB0 + b _02241666 +_0224163E: + add r4, #0x9c + mov r1, #1 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #0x12 + bl FUN_021F4594 + ldr r0, _0224166C ; =0x0000065A + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241666 +_0224165C: + bl FUN_02016A18 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241666: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224166C: .word 0x0000065A + + thumb_func_start MOD06_02241670 +MOD06_02241670: ; 0x02241670 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #1 + bl FUN_020254A0 + add r2, sp, #0x20 + ldr r6, _022417C4 ; =0x0224F780 + add r5, r0, #0 + ldmia r6!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x4c] + mov r2, #0xf2 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x2c] + bl FUN_021E7FBC + mov r0, #0x26 + str r0, [sp] + mov r0, #0 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x9c + ldr r1, [r1] + mov r2, #2 + str r1, [sp, #8] + mov r1, #1 + mov r3, #0x19 + bl FUN_021F44D8 + ldrb r0, [r5] + cmp r0, #0 + beq _022416D4 + cmp r0, #1 + beq _022416DE + cmp r0, #2 + beq _022416EA + b _022416F6 +_022416D4: + mov r5, #0 + mov r6, #1 + add r7, r6, #0 + str r5, [sp, #0xc] + b _02241702 +_022416DE: + mov r5, #2 + mov r6, #1 + lsl r5, r5, #0x10 + mov r7, #0 + str r6, [sp, #0xc] + b _02241702 +_022416EA: + mov r5, #1 + mov r7, #1 + lsl r5, r5, #0x12 + mov r6, #0 + str r7, [sp, #0xc] + b _02241702 +_022416F6: + bl ErrorHandling + mov r5, #0 + mov r6, #1 + add r7, r6, #0 + str r5, [sp, #0xc] +_02241702: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + mov r1, #0xf2 + bl FUN_021E7ED8 + str r0, [sp, #0x10] + ldr r1, [sp, #0x10] + add r0, sp, #0x14 + bl FUN_021E7EA0 + ldr r0, [sp, #0x10] + add r1, sp, #0x14 + str r5, [sp, #0x18] + bl FUN_021E7EB0 + add r2, r4, #0 + add r2, #0x9c + ldr r2, [r2] + mov r0, #0 + add r1, r5, #0 + bl FUN_021F4594 + ldr r2, [r4, #0x4c] + mov r0, #0xef + mov r1, #0 + bl FUN_021DA080 + add r5, r0, #0 + mov r1, #1 + bl FUN_021DA1A8 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_021DA1A0 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA0DC + add r0, r5, #0 + bl FUN_021DA138 + ldr r2, [r4, #0x4c] + mov r0, #0xf0 + mov r1, #0 + bl FUN_021DA080 + add r5, r0, #0 + mov r1, #2 + bl FUN_021DA1A8 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021DA1A0 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA0DC + add r0, r5, #0 + bl FUN_021DA138 + ldr r2, [r4, #0x4c] + mov r0, #0xf1 + mov r1, #0 + bl FUN_021DA080 + mov r1, #3 + add r4, r0, #0 + bl FUN_021DA1A8 + ldr r1, [sp, #0xc] + add r0, r4, #0 + bl FUN_021DA1A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA0DC + add r0, r4, #0 + bl FUN_021DA138 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022417C4: .word 0x0224F780 + + thumb_func_start MOD06_022417C8 +MOD06_022417C8: ; 0x022417C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + cmp r0, #2 + bne _022417D8 + mov r6, #1 + mov r4, #2 + mov r5, #3 + b _022417F4 +_022417D8: + cmp r0, #1 + bne _022417E4 + mov r6, #2 + mov r4, #1 + mov r5, #3 + b _022417F4 +_022417E4: + cmp r0, #0 + bne _022417F0 + mov r6, #3 + mov r4, #1 + mov r5, #2 + b _022417F4 +_022417F0: + bl ErrorHandling +_022417F4: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_021DA03C + add r6, r0, #0 + mov r1, #0 + bl FUN_021DA1A0 + add r0, r6, #0 + bl FUN_021DA118 + add r0, r6, #0 + mov r1, #0 + bl FUN_021DA0DC + add r0, r6, #0 + bl FUN_021DA0E0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_021DA03C + add r4, r0, #0 + mov r1, #1 + bl FUN_021DA1A0 + add r0, r4, #0 + bl FUN_021DA118 + add r0, r4, #0 + mov r1, #0 + bl FUN_021DA0DC + add r0, r4, #0 + bl FUN_021DA0E0 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021DA03C + add r4, r0, #0 + mov r1, #1 + bl FUN_021DA1A0 + add r0, r4, #0 + bl FUN_021DA118 + add r0, r4, #0 + mov r1, #0 + bl FUN_021DA0DC + add r0, r4, #0 + bl FUN_021DA0E0 + ldr r0, _02241868 ; =0x0000065A + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241868: .word 0x0000065A + + thumb_func_start MOD06_0224186C +MOD06_0224186C: ; 0x0224186C + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #2 + bl FUN_020254A0 + add r2, sp, #0x18 + ldr r6, _0224190C ; =0x0224F7A4 + add r4, r0, #0 + ldmia r6!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x4c] + ldr r2, _02241910 ; =0x00000102 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + bl FUN_021E7FBC + mov r0, #2 + str r0, [sp] + mov r0, #0 + add r1, r5, #0 + str r0, [sp, #4] + add r1, #0x9c + ldr r1, [r1] + mov r2, #0xd + str r1, [sp, #8] + mov r1, #8 + mov r3, #3 + bl FUN_021F44D8 + ldrb r0, [r4] + cmp r0, #0 + beq _022418CC + cmp r0, #1 + beq _022418D0 + b _022418D6 +_022418CC: + mov r4, #0 + b _022418DC +_022418D0: + mov r4, #0xa + lsl r4, r4, #0x10 + b _022418DC +_022418D6: + bl ErrorHandling + mov r4, #0 +_022418DC: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02241910 ; =0x00000102 + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0xc + add r1, r6, #0 + bl FUN_021E7EA0 + add r0, r6, #0 + add r1, sp, #0xc + str r4, [sp, #0x10] + bl FUN_021E7EB0 + add r5, #0x9c + ldr r2, [r5] + mov r0, #0 + add r1, r4, #0 + bl FUN_021F4594 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224190C: .word 0x0224F7A4 +_02241910: .word 0x00000102 + + thumb_func_start MOD06_02241914 +MOD06_02241914: ; 0x02241914 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + add r6, r0, #0 + mov r0, #0 + str r0, [r6] + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #2 + bl FUN_020254A0 + add r4, r0, #0 + ldr r0, [r5, #0x38] + add r1, sp, #0 + bl FUN_02055350 + ldr r0, [sp, #4] + cmp r0, #0 + ldr r0, [r5, #0x10] + bne _0224195A + ldr r1, _0224196C ; =MOD06_02241974 + add r2, r6, #0 + bl FUN_0204640C + mov r0, #1 + add sp, #0xc + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224195A: + ldr r1, _02241970 ; =MOD06_02241A44 + add r2, r6, #0 + bl FUN_0204640C + mov r0, #0 + strb r0, [r4] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0224196C: .word MOD06_02241974 +_02241970: .word MOD06_02241A44 + + thumb_func_start MOD06_02241974 +MOD06_02241974: ; 0x02241974 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _02241A32 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224199A: ; jump table + .short _022419A2 - _0224199A - 2 ; case 0 + .short _022419B8 - _0224199A - 2 ; case 1 + .short _02241A02 - _0224199A - 2 ; case 2 + .short _02241A28 - _0224199A - 2 ; case 3 +_022419A2: + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_02055560 + ldr r0, _02241A38 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241A32 +_022419B8: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02241A3C ; =0x00000102 + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0 + add r1, r6, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + add r1, r1, r0 + mov r0, #0xa + lsl r0, r0, #0x10 + str r1, [sp, #4] + cmp r1, r0 + blt _022419F0 + str r0, [sp, #4] + ldr r0, _02241A38 ; =0x00000611 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022419F0: + ldr r0, [r5, #0x38] + ldr r1, [sp, #4] + bl FUN_02055540 + add r0, r6, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + b _02241A32 +_02241A02: + add r2, r5, #0 + add r2, #0x9c + mov r1, #0xa + ldr r2, [r2] + mov r0, #0 + lsl r1, r1, #0x10 + bl FUN_021F4594 + ldr r0, [r5, #0x38] + mov r1, #1 + bl FUN_0205557C + ldr r0, _02241A40 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241A32 +_02241A28: + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02241A32: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02241A38: .word 0x00000611 +_02241A3C: .word 0x00000102 +_02241A40: .word 0x0000061A + + thumb_func_start MOD06_02241A44 +MOD06_02241A44: ; 0x02241A44 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _02241AFC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241A6A: ; jump table + .short _02241A72 - _02241A6A - 2 ; case 0 + .short _02241A88 - _02241A6A - 2 ; case 1 + .short _02241ACE - _02241A6A - 2 ; case 2 + .short _02241AF2 - _02241A6A - 2 ; case 3 +_02241A72: + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_02055560 + ldr r0, _02241B04 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241AFC +_02241A88: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02241B08 ; =0x00000102 + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0 + add r1, r6, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + cmp r0, #0 + bgt _02241ABC + mov r1, #0 + ldr r0, _02241B04 ; =0x00000611 + str r1, [sp, #4] + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02241ABC: + ldr r0, [r5, #0x38] + ldr r1, [sp, #4] + bl FUN_02055540 + add r0, r6, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + b _02241AFC +_02241ACE: + add r2, r5, #0 + add r2, #0x9c + mov r0, #0 + ldr r2, [r2] + add r1, r0, #0 + bl FUN_021F4594 + ldr r0, [r5, #0x38] + mov r1, #1 + bl FUN_0205557C + ldr r0, _02241B0C ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241AFC +_02241AF2: + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02241AFC: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02241B04: .word 0x00000611 +_02241B08: .word 0x00000102 +_02241B0C: .word 0x0000061A + + thumb_func_start MOD06_02241B10 +MOD06_02241B10: ; 0x02241B10 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r4, #0 +_02241B1A: + add r1, r5, r4 + ldrb r0, [r1, #0x10] + cmp r6, r0 + bne _02241B36 + ldr r0, [r5] + add r1, #0x28 + add r0, #0xa0 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + add r1, r7, #0 + bl FUN_021E7EC0 +_02241B36: + add r4, r4, #1 + cmp r4, #0x18 + blt _02241B1A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02241B40 +MOD06_02241B40: ; 0x02241B40 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + add r1, sp, #0 + ldr r0, [r0, #0x38] + bl FUN_02055350 + ldr r1, [sp, #4] + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + ldr r1, [sp] + lsr r2, r0, #0x18 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + ldr r1, [sp, #8] + lsr r3, r0, #0x18 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + mov r0, #0 +_02241B7C: + lsl r1, r0, #1 + add r1, r0, r1 + add r6, r4, r1 + add r6, #0x41 + ldrb r6, [r6] + cmp r2, r6 + bne _02241B9E + add r6, r4, r1 + add r6, #0x40 + ldrb r6, [r6] + cmp r3, r6 + bne _02241B9E + add r1, r4, r1 + add r1, #0x42 + ldrb r1, [r1] + cmp r5, r1 + beq _02241BAA +_02241B9E: + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x18 + blo _02241B7C + mov r0, #0x18 +_02241BAA: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02241BB0 +MOD06_02241BB0: ; 0x02241BB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #3 + bl FUN_020254A0 + str r0, [sp, #4] + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + mov r1, #0 + str r1, [r0] + str r0, [sp] + add r0, r5, #0 + add r0, #0xe8 + strb r4, [r0] + lsl r0, r4, #2 + ldr r1, [sp, #4] + add r0, r5, r0 + add r0, #0x88 + ldr r7, [r0] + ldr r1, [r1] + add r0, r4, #0 + bl MOD06_02241214 + add r6, r0, #0 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD06_02241220 + ldr r0, _02241D64 ; =0x00000127 + cmp r7, r0 + bne _02241C64 + cmp r6, #0 + beq _02241C1E + add r0, r5, #0 + mov r1, #5 + add r0, #0xf0 + str r1, [r0] + ldr r2, _02241D68 ; =0x0224FA84 + lsl r1, r4, #4 + ldrb r0, [r2, r1] + add r3, r2, r1 + lsl r6, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r6, r6, r0 + b _02241C34 +_02241C1E: + add r0, r5, #0 + ldr r2, _02241D6C ; =0x0224FA87 + lsl r1, r4, #4 + mov r6, #4 + add r0, #0xf0 + str r6, [r0] + ldrb r0, [r2, r1] + lsl r6, r6, #0xd + add r3, r2, r1 + lsl r0, r0, #0x10 + add r6, r0, r6 +_02241C34: + add r0, r5, #0 + add r0, #0xec + str r6, [r0] + lsl r0, r4, #1 + add r0, r4, r0 + ldrb r2, [r2, r1] + add r1, r5, r0 + add r1, #0x40 + strb r2, [r1] + add r1, r5, r0 + add r0, r5, r0 + ldrb r2, [r3, #1] + add r1, #0x41 + add r0, #0x42 + strb r2, [r1] + ldrb r1, [r3, #2] + ldr r2, [sp] + strb r1, [r0] + ldr r0, [r5] + ldr r1, _02241D70 ; =MOD06_02241F7C + bl FUN_020463CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02241C64: + sub r0, r0, #1 + cmp r7, r0 + bne _02241CDA + cmp r6, #0 + beq _02241C90 + add r1, r5, #0 + mov r0, #2 + add r1, #0xf0 + str r0, [r1] + ldr r1, _02241D74 ; =0x0224FA86 + lsl r2, r4, #4 + ldrb r1, [r1, r2] + lsl r0, r0, #0xe + ldr r3, _02241D68 ; =0x0224FA84 + lsl r1, r1, #0x10 + add r1, r1, r0 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 + b _02241CB2 +_02241C90: + add r0, r5, #0 + mov r1, #3 + add r0, #0xf0 + str r1, [r0] + ldr r0, _02241D78 ; =0x0224FA89 + lsl r2, r4, #4 + ldrb r0, [r0, r2] + ldr r3, _02241D6C ; =0x0224FA87 + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r1, r1, r0 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 +_02241CB2: + add r0, r3, r2 + ldrb r3, [r3, r2] + add r2, r5, r1 + add r2, #0x40 + strb r3, [r2] + add r2, r5, r1 + ldrb r3, [r0, #1] + add r2, #0x41 + strb r3, [r2] + ldrb r2, [r0, #2] + add r0, r5, r1 + add r0, #0x42 + strb r2, [r0] + ldr r0, [r5] + ldr r1, _02241D7C ; =MOD06_022420CC + ldr r2, [sp] + bl FUN_020463CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02241CDA: + cmp r6, #0 + beq _02241D1E + add r0, r5, #0 + mov r1, #1 + add r0, #0xf0 + str r1, [r0] + ldr r0, _02241D80 ; =0x0224FA85 + lsl r2, r4, #4 + ldrb r0, [r0, r2] + ldr r3, _02241D68 ; =0x0224FA84 + lsl r1, r0, #0x10 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 + ldrb r6, [r3, r2] + add r0, r3, r2 + add r3, r5, r1 + add r3, #0x40 + strb r6, [r3] + add r3, r5, r1 + ldrb r6, [r0, #1] + add r3, #0x41 + strb r6, [r3] + ldrb r3, [r0, #2] + add r0, r5, r1 + add r0, #0x42 + strb r3, [r0] + ldr r0, _02241D84 ; =0x0224FA8A + ldrb r1, [r0, r2] + add r0, r5, r4 + strb r1, [r0, #0x10] + b _02241D54 +_02241D1E: + add r0, r5, #0 + mov r1, #0 + add r0, #0xf0 + str r1, [r0] + ldr r0, _02241D88 ; =0x0224FA88 + lsl r2, r4, #4 + ldrb r0, [r0, r2] + ldr r3, _02241D6C ; =0x0224FA87 + lsl r1, r0, #0x10 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 + add r0, r3, r2 + ldrb r3, [r3, r2] + add r2, r5, r1 + add r2, #0x40 + strb r3, [r2] + add r2, r5, r1 + ldrb r3, [r0, #1] + add r2, #0x41 + strb r3, [r2] + ldrb r2, [r0, #2] + add r0, r5, r1 + add r0, #0x42 + strb r2, [r0] +_02241D54: + ldr r0, [r5] + ldr r1, _02241D8C ; =MOD06_02241E58 + ldr r2, [sp] + bl FUN_020463CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02241D64: .word 0x00000127 +_02241D68: .word 0x0224FA84 +_02241D6C: .word 0x0224FA87 +_02241D70: .word MOD06_02241F7C +_02241D74: .word 0x0224FA86 +_02241D78: .word 0x0224FA89 +_02241D7C: .word MOD06_022420CC +_02241D80: .word 0x0224FA85 +_02241D84: .word 0x0224FA8A +_02241D88: .word 0x0224FA88 +_02241D8C: .word MOD06_02241E58 + + thumb_func_start MOD06_02241D90 +MOD06_02241D90: ; 0x02241D90 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + ldr r1, [r5, #4] + add r0, #0xa0 + lsl r1, r1, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_021E7ED0 + str r0, [sp] + ldr r0, [r5] + ldr r1, [r5, #8] + add r0, #0xa0 + lsl r1, r1, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_021E7ED0 + add r7, r0, #0 + ldr r0, [r5] + ldr r1, [r5, #0xc] + add r0, #0xa0 + lsl r1, r1, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_021E7ED0 + add r6, r0, #0 + mov r0, #1 + lsl r0, r0, #0x10 + cmp r4, r0 + blt _02241DE8 + ldr r0, [sp] + mov r1, #0 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + bl MOD06_02241B10 + b _02241DFA +_02241DE8: + ldr r0, [sp] + mov r1, #1 + bl FUN_021E7EC0 + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + bl MOD06_02241B10 +_02241DFA: + mov r0, #0xb + lsl r0, r0, #0x10 + cmp r4, r0 + blt _02241E16 + add r0, r7, #0 + mov r1, #0 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #0 + mov r2, #2 + bl MOD06_02241B10 + b _02241E28 +_02241E16: + add r0, r7, #0 + mov r1, #1 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #1 + mov r2, #2 + bl MOD06_02241B10 +_02241E28: + mov r0, #0x15 + lsl r0, r0, #0x10 + cmp r4, r0 + blt _02241E44 + add r0, r6, #0 + mov r1, #0 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #0 + mov r2, #3 + bl MOD06_02241B10 + pop {r3, r4, r5, r6, r7, pc} +_02241E44: + add r0, r6, #0 + mov r1, #1 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #1 + mov r2, #3 + bl MOD06_02241B10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02241E58 +MOD06_02241E58: ; 0x02241E58 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + ldr r1, [r6, #4] + add r4, r0, #0 + ldr r5, [r1, #0x24] + ldr r1, [r4] + cmp r1, #3 + bhi _02241F68 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241E82: ; jump table + .short _02241E8A - _02241E82 - 2 ; case 0 + .short _02241EA0 - _02241E82 - 2 ; case 1 + .short _02241F48 - _02241E82 - 2 ; case 2 + .short _02241F5E - _02241E82 - 2 ; case 3 +_02241E8A: + ldr r0, [r6, #0x38] + mov r1, #0 + bl FUN_02055560 + ldr r0, _02241F70 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F68 +_02241EA0: + add r1, r5, #0 + add r1, #0xe8 + ldrb r1, [r1] + add r0, r6, #0 + add r0, #0xa0 + add r1, r5, r1 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + add r7, r0, #0 + add r0, sp, #0 + add r1, r7, #0 + bl FUN_021E7EA0 + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bne _02241F00 + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + add r1, r1, r0 + add r0, r5, #0 + str r1, [sp, #4] + add r0, #0xec + ldr r0, [r0] + cmp r1, r0 + blt _02241F2E + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xe8 + ldrb r0, [r0] + ldr r1, _02241F74 ; =0x0224FA8B + lsl r2, r0, #4 + ldrb r1, [r1, r2] + add r0, r5, r0 + strb r1, [r0, #0x10] + ldr r0, _02241F70 ; =0x00000611 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F2E +_02241F00: + cmp r0, #1 + bne _02241F2A + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + sub r1, r1, r0 + add r0, r5, #0 + str r1, [sp, #4] + add r0, #0xec + ldr r0, [r0] + cmp r1, r0 + bgt _02241F2E + str r0, [sp, #4] + ldr r0, _02241F70 ; =0x00000611 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F2E +_02241F2A: + bl ErrorHandling +_02241F2E: + ldr r0, [r6, #0x38] + ldr r1, [sp, #4] + bl FUN_02055540 + add r0, r7, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD06_02241D90 + b _02241F68 +_02241F48: + ldr r0, [r6, #0x38] + mov r1, #1 + bl FUN_0205557C + ldr r0, _02241F78 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F68 +_02241F5E: + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02241F68: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02241F70: .word 0x00000611 +_02241F74: .word 0x0224FA8B +_02241F78: .word 0x0000061A + + thumb_func_start MOD06_02241F7C +MOD06_02241F7C: ; 0x02241F7C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r7, #4] + ldr r5, [r0, #0x24] + ldr r0, [r7, #0x38] + bl FUN_020553A0 + ldr r1, [r4] + add r6, r0, #0 + cmp r1, #4 + bls _02241FA4 + b _022420BC +_02241FA4: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241FB0: ; jump table + .short _02241FBA - _02241FB0 - 2 ; case 0 + .short _02241FD8 - _02241FB0 - 2 ; case 1 + .short _0224207C - _02241FB0 - 2 ; case 2 + .short _02242092 - _02241FB0 - 2 ; case 3 + .short _022420B0 - _02241FB0 - 2 ; case 4 +_02241FBA: + bl FUN_0205AD98 + cmp r0, #1 + bne _022420BC + add r0, r6, #0 + mov r1, #0x49 + bl FUN_0205ADDC + ldr r0, _022420C4 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022420BC +_02241FD8: + add r1, r5, #0 + add r1, #0xe8 + ldrb r1, [r1] + add r0, r7, #0 + add r0, #0xa0 + add r1, r5, r1 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + str r0, [sp] + ldr r1, [sp] + add r0, sp, #0x10 + bl FUN_021E7EA0 + ldr r0, [r7, #0x38] + add r1, sp, #4 + bl FUN_02055350 + ldr r0, [sp, #4] + add r1, r5, #0 + str r0, [sp, #0x10] + add r1, #0xf0 + ldr r1, [r1] + cmp r1, #4 + bne _0224203C + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + blt _02242028 + ldr r0, _022420C4 ; =0x00000611 + str r1, [sp, #0x10] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242072 +_02242028: + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02242072 + add r0, r6, #0 + mov r1, #0x17 + bl FUN_0205ADDC + b _02242072 +_0224203C: + cmp r1, #5 + bne _0224206E + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + bgt _0224205A + ldr r0, _022420C4 ; =0x00000611 + str r1, [sp, #0x10] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242072 +_0224205A: + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02242072 + add r0, r6, #0 + mov r1, #0x16 + bl FUN_0205ADDC + b _02242072 +_0224206E: + bl ErrorHandling +_02242072: + ldr r0, [sp] + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _022420BC +_0224207C: + bl FUN_0205AD98 + cmp r0, #1 + bne _02242092 + add r0, r6, #0 + mov r1, #0x4a + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02242092: + add r0, r6, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _022420BC + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, _022420C8 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022420BC +_022420B0: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022420BC: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022420C4: .word 0x00000611 +_022420C8: .word 0x0000061A + + thumb_func_start MOD06_022420CC +MOD06_022420CC: ; 0x022420CC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r6, #4] + ldr r5, [r0, #0x24] + ldr r0, [r6, #0x38] + bl FUN_020553A0 + ldr r1, [r4] + add r7, r0, #0 + cmp r1, #4 + bhi _02242110 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022420FE: ; jump table + .short _02242108 - _022420FE - 2 ; case 0 + .short _02242128 - _022420FE - 2 ; case 1 + .short _022421CC - _022420FE - 2 ; case 2 + .short _022421E4 - _022420FE - 2 ; case 3 + .short _02242208 - _022420FE - 2 ; case 4 +_02242108: + bl FUN_0205AD98 + cmp r0, #1 + beq _02242112 +_02242110: + b _02242214 +_02242112: + add r0, r7, #0 + mov r1, #0x49 + bl FUN_0205ADDC + ldr r0, _0224221C ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242214 +_02242128: + add r1, r5, #0 + add r1, #0xe8 + ldrb r1, [r1] + add r0, r6, #0 + add r0, #0xa0 + add r1, r5, r1 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + str r0, [sp] + ldr r1, [sp] + add r0, sp, #0x10 + bl FUN_021E7EA0 + ldr r0, [r6, #0x38] + add r1, sp, #4 + bl FUN_02055350 + ldr r0, [sp, #0xc] + add r1, r5, #0 + str r0, [sp, #0x18] + add r1, #0xf0 + ldr r1, [r1] + cmp r1, #3 + bne _0224218C + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + blt _02242178 + ldr r0, _0224221C ; =0x00000611 + str r1, [sp, #0x18] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022421C2 +_02242178: + add r0, r7, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _022421C2 + add r0, r7, #0 + mov r1, #0x15 + bl FUN_0205ADDC + b _022421C2 +_0224218C: + cmp r1, #2 + bne _022421BE + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + bgt _022421AA + ldr r0, _0224221C ; =0x00000611 + str r1, [sp, #0x18] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022421C2 +_022421AA: + add r0, r7, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _022421C2 + add r0, r7, #0 + mov r1, #0x14 + bl FUN_0205ADDC + b _022421C2 +_022421BE: + bl ErrorHandling +_022421C2: + ldr r0, [sp] + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _02242214 +_022421CC: + bl FUN_0205AD98 + cmp r0, #1 + bne _02242214 + add r0, r7, #0 + mov r1, #0x4a + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242214 +_022421E4: + ldr r0, [r6, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _02242214 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, _02242220 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242214 +_02242208: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02242214: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224221C: .word 0x00000611 +_02242220: .word 0x0000061A + + thumb_func_start MOD06_02242224 +MOD06_02242224: ; 0x02242224 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r6, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #3 + bl FUN_020254A0 + str r0, [sp, #0x10] + mov r0, #4 + mov r1, #0xf4 + bl FUN_02016998 + ldr r1, [r6, #4] + add r2, sp, #0x50 + str r0, [r1, #0x24] + ldr r0, [r6, #4] + ldr r4, _022423EC ; =0x0224F78C + ldr r0, [r0, #0x24] + add r3, r2, #0 + str r0, [sp, #0x14] + str r6, [r0] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + mov r0, #0xa + lsl r0, r0, #0x10 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + mov r2, #0x4b + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + lsl r2, r2, #2 + bl FUN_021E7FBC + ldr r1, [sp, #0x14] + ldr r2, _022423F0 ; =0x0000012D + str r0, [r1, #4] + mov r0, #5 + lsl r0, r0, #0x12 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #0x50 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + ldr r1, [sp, #0x14] + ldr r2, _022423F4 ; =0x0000012E + str r0, [r1, #8] + mov r0, #0x1e + lsl r0, r0, #0x10 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #0x50 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + ldr r1, [sp, #0x14] + ldr r4, _022423F8 ; =0x0224FA80 + str r0, [r1, #0xc] + add r0, r1, #0 + mov r7, #0 + add r5, r1, #0 + str r0, [sp, #0xc] +_022422CC: + ldr r1, [sp, #0x10] + lsl r0, r7, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + bl MOD06_02241214 + cmp r0, #0 + beq _02242310 + ldrb r0, [r4, #7] + ldrb r1, [r4, #7] + lsl r0, r0, #0x10 + str r0, [sp, #0x44] + ldrb r0, [r4, #8] + lsl r0, r0, #0x10 + str r0, [sp, #0x48] + ldrb r0, [r4, #9] + lsl r0, r0, #0x10 + str r0, [sp, #0x4c] + add r0, r5, #0 + add r0, #0x40 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #8] + add r0, #0x41 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #9] + add r0, #0x42 + strb r1, [r0] + ldr r0, [sp, #0x14] + ldrb r1, [r4, #0xb] + add r0, r0, r7 + str r0, [sp, #8] + b _02242342 +_02242310: + ldrb r0, [r4, #4] + ldrb r1, [r4, #4] + lsl r0, r0, #0x10 + str r0, [sp, #0x44] + ldrb r0, [r4, #5] + lsl r0, r0, #0x10 + str r0, [sp, #0x48] + ldrb r0, [r4, #6] + lsl r0, r0, #0x10 + str r0, [sp, #0x4c] + add r0, r5, #0 + add r0, #0x40 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #5] + add r0, #0x41 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #6] + add r0, #0x42 + strb r1, [r0] + ldr r0, [sp, #0x14] + ldrb r1, [r4, #0xa] + add r0, r0, r7 + str r0, [sp, #8] +_02242342: + strb r1, [r0, #0x10] + mov r0, #2 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #2 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x4c] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #0x44 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + ldr r2, [r4] + bl FUN_021E7FBC + ldr r1, [sp, #8] + add r7, r7, #1 + add r1, #0x28 + strb r0, [r1] + ldr r0, [sp, #0xc] + str r1, [sp, #8] + ldr r1, [r4] + add r0, #0x88 + str r1, [r0] + ldr r0, [sp, #0xc] + add r4, #0x10 + add r0, r0, #4 + add r5, r5, #3 + str r0, [sp, #0xc] + cmp r7, #0x18 + blt _022422CC + ldr r0, [r6, #0x38] + add r1, sp, #0x38 + bl FUN_02055350 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x3c] + bl MOD06_02241D90 + mov r0, #0x19 + ldr r1, _022423FC ; =0x006A4000 + ldr r2, [r6, #0x20] + lsl r0, r0, #0xe + bl FUN_0201EC94 + mov r1, #6 + str r1, [sp] + ldr r0, _02242400 ; =0x000076A0 + sub r1, r1, #7 + str r0, [sp, #4] + ldr r0, [r6, #0x44] + mov r2, #1 + mov r3, #0 + bl FUN_021DBA40 + mov r1, #0 + mov r2, #0 + ldr r0, [r6, #0x44] + mvn r1, r1 + add r3, r2, #0 + bl FUN_021DBA78 + mov r0, #0 + add r1, r0, #0 + add r2, sp, #0x18 +_022423D4: + add r0, r0, #1 + strb r1, [r2] + add r1, r1, #2 + add r2, r2, #1 + cmp r0, #0x20 + blt _022423D4 + ldr r0, [r6, #0x44] + add r1, sp, #0x18 + bl FUN_021DBAA0 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022423EC: .word 0x0224F78C +_022423F0: .word 0x0000012D +_022423F4: .word 0x0000012E +_022423F8: .word 0x0224FA80 +_022423FC: .word 0x006A4000 +_02242400: .word 0x000076A0 + + thumb_func_start MOD06_02242404 +MOD06_02242404: ; 0x02242404 + push {r4, lr} + add r4, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + cmp r0, #3 + beq _0224241C + mov r0, #0 + pop {r4, pc} +_0224241C: + ldr r0, [r4, #4] + ldr r4, [r0, #0x24] + cmp r4, #0 + bne _02242428 + mov r0, #0 + pop {r4, pc} +_02242428: + add r0, r4, #0 + bl MOD06_02241B40 + add r1, r0, #0 + cmp r1, #0x18 + beq _0224243E + add r0, r4, #0 + bl MOD06_02241BB0 + mov r0, #1 + pop {r4, pc} +_0224243E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02242444 +MOD06_02242444: ; 0x02242444 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x24] + pop {r4, pc} + + thumb_func_start MOD06_02242458 +MOD06_02242458: ; 0x02242458 + push {r4, r5, r6, lr} + asr r0, r3, #0xf + lsr r0, r0, #0x10 + add r0, r3, r0 + add r4, r1, #0 + asr r0, r0, #0x10 + mov r1, #0xa + add r6, r2, #0 + bl _s32_div_f + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + bls _02242478 + bl ErrorHandling +_02242478: + ldr r1, _02242498 ; =0x0224FC00 + lsl r0, r5, #0xa + add r5, r1, r0 + lsl r0, r6, #5 + add r4, r4, r0 + mov r0, #1 + lsl r0, r0, #0xa + cmp r4, r0 + blt _0224248E + bl ErrorHandling +_0224248E: + ldrb r1, [r5, r4] + ldr r0, [sp, #0x10] + str r1, [r0] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_02242498: .word 0x0224FC00 + + thumb_func_start MOD06_0224249C +MOD06_0224249C: ; 0x0224249C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #4] + str r0, [sp] + ldr r0, [r0] + add r1, sp, #8 + ldr r0, [r0, #0x38] + bl FUN_02055350 + ldr r1, [sp, #8] + ldr r7, _02242524 ; =0x0224F8B8 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + ldr r1, [sp, #0x10] + lsr r3, r0, #0x18 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + mov r0, #0 +_022424CE: + ldr r1, _02242528 ; =0x0224F834 + lsl r2, r0, #2 + ldr r5, _02242528 ; =0x0224F834 + add r1, r1, r2 + ldrb r2, [r5, r2] + cmp r3, r2 + bne _02242512 + ldrb r2, [r1, #1] + cmp r4, r2 + bne _02242512 + ldrb r5, [r1, #3] + ldrb r1, [r1, #2] + cmp r1, #0 + beq _022424F4 + lsl r1, r5, #3 + add r1, r7, r1 + ldrb r2, [r1, #6] + mov r1, #2 + b _022424FC +_022424F4: + lsl r1, r5, #3 + add r1, r7, r1 + ldrb r2, [r1, #5] + mov r1, #3 +_022424FC: + ldr r6, [sp] + add r6, r6, r5 + ldrb r6, [r6, #0x10] + cmp r2, r6 + bne _02242512 + ldr r2, [sp, #4] + cmp r1, r2 + bne _02242512 + add sp, #0x14 + add r0, r5, #0 + pop {r4, r5, r6, r7, pc} +_02242512: + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xf + blo _022424CE + mov r0, #0xf + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02242524: .word 0x0224F8B8 +_02242528: .word 0x0224F834 + + thumb_func_start MOD06_0224252C +MOD06_0224252C: ; 0x0224252C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #4 + bl FUN_020254A0 + add r6, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + mov r1, #0 + str r1, [r0] + strb r4, [r5, #0x1c] + str r0, [sp] + ldr r1, [r6] + add r0, r4, #0 + bl MOD06_02241214 + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD06_02241220 + cmp r7, #0 + beq _02242588 + mov r0, #5 + str r0, [r5, #0x24] + ldr r0, _022425B8 ; =0x0224F8BD + lsl r1, r4, #3 + ldrb r0, [r0, r1] + mov r2, #2 + lsl r2, r2, #0x10 + lsl r3, r0, #0x10 + add r2, r3, r2 + str r2, [r5, #0x20] + add r2, r5, r4 + strb r0, [r2, #0x10] + ldr r0, _022425BC ; =0x0224F918 + add r1, r0, r1 + b _022425A4 +_02242588: + ldr r0, _022425C0 ; =0x0224F8BE + lsl r1, r4, #3 + ldrb r0, [r0, r1] + mov r2, #4 + str r2, [r5, #0x24] + lsl r3, r0, #0x10 + lsl r2, r2, #0xf + add r2, r3, r2 + str r2, [r5, #0x20] + add r2, r5, r4 + strb r0, [r2, #0x10] + ldr r0, _022425BC ; =0x0224F918 + add r0, r0, r1 + add r1, r0, #4 +_022425A4: + lsl r0, r4, #2 + add r0, r5, r0 + str r1, [r0, #0x28] + ldr r0, [r5] + ldr r1, _022425C4 ; =MOD06_02242744 + ldr r2, [sp] + bl FUN_020463CC + pop {r3, r4, r5, r6, r7, pc} + nop +_022425B8: .word 0x0224F8BD +_022425BC: .word 0x0224F918 +_022425C0: .word 0x0224F8BE +_022425C4: .word MOD06_02242744 + + thumb_func_start MOD06_022425C8 +MOD06_022425C8: ; 0x022425C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #8] + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #4 + bl FUN_020254A0 + str r0, [sp, #0x10] + mov r0, #4 + mov r1, #0x58 + bl FUN_02016998 + ldr r1, [sp, #8] + ldr r5, _0224268C ; =0x0224F8B8 + ldr r1, [r1, #4] + ldr r7, _02242690 ; =0x0224F918 + str r0, [r1, #0x24] + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r0, [r0, #4] + mov r4, #0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x14] + str r1, [r0] + add r6, r0, #0 +_02242600: + ldr r1, [sp, #0x10] + lsl r0, r4, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + bl MOD06_02241214 + cmp r0, #0 + beq _0224262E + ldrb r0, [r5, #6] + lsl r1, r0, #0x10 + str r1, [sp, #0x18] + ldr r1, _02242694 ; =0xFFFF0000 + str r1, [sp, #0x1c] + ldrb r1, [r5, #4] + lsl r1, r1, #0x10 + str r1, [sp, #0x20] + ldr r1, [sp, #0x14] + add r1, r1, r4 + strb r0, [r1, #0x10] + add r0, r7, #4 + str r1, [sp, #0xc] + str r0, [r6, #0x28] + b _02242648 +_0224262E: + ldrb r0, [r5, #5] + lsl r1, r0, #0x10 + str r1, [sp, #0x18] + ldr r1, _02242694 ; =0xFFFF0000 + str r1, [sp, #0x1c] + ldrb r1, [r5, #4] + lsl r1, r1, #0x10 + str r1, [sp, #0x20] + ldr r1, [sp, #0x14] + add r1, r1, r4 + strb r0, [r1, #0x10] + str r1, [sp, #0xc] + str r7, [r6, #0x28] +_02242648: + mov r0, #2 + ldr r1, [sp, #0x18] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x18] + mov r0, #2 + ldr r1, [sp, #0x20] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r0, [r0, #0x4c] + add r3, sp, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r1, #0x2c] + add r0, #0xa0 + ldr r0, [r0] + ldr r2, [r5] + bl FUN_021E7FBC + ldr r1, [sp, #0xc] + add r4, r4, #1 + strb r0, [r1, #4] + add r5, #8 + add r7, #8 + add r6, r6, #4 + cmp r4, #0xc + blt _02242600 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224268C: .word 0x0224F8B8 +_02242690: .word 0x0224F918 +_02242694: .word 0xFFFF0000 + + thumb_func_start MOD06_02242698 +MOD06_02242698: ; 0x02242698 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x24] + pop {r4, pc} + + thumb_func_start MOD06_022426AC +MOD06_022426AC: ; 0x022426AC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + cmp r0, #4 + beq _022426C4 + mov r0, #0 + pop {r3, r4, r5, pc} +_022426C4: + ldr r0, [r5, #4] + ldr r4, [r0, #0x24] + cmp r4, #0 + bne _022426D0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022426D0: + ldr r0, [r5, #0x38] + bl FUN_020552F8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r4, #0 + bl MOD06_0224249C + add r1, r0, #0 + cmp r1, #0xf + beq _022426F0 + add r0, r4, #0 + bl MOD06_0224252C + mov r0, #1 + pop {r3, r4, r5, pc} +_022426F0: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022426F4 +MOD06_022426F4: ; 0x022426F4 + push {r4, r5, r6, r7} + ldr r0, [r0, #4] + ldr r6, _02242740 ; =0x0224F8B8 + ldr r4, [r0, #0x24] + mov ip, r2 + mov r7, #0 +_02242700: + ldrb r2, [r6, #4] + mov r0, ip + cmp r0, r2 + bne _02242730 + ldr r5, [r4, #0x28] + mov r3, #0 +_0224270C: + ldrb r2, [r5, #1] + cmp r2, #0 + beq _02242730 + ldrb r0, [r5] + cmp r0, r1 + bgt _02242728 + add r0, r0, r2 + cmp r1, r0 + bge _02242728 + ldr r1, [sp, #0x10] + mov r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + bx lr +_02242728: + add r3, r3, #1 + add r5, r5, #2 + cmp r3, #2 + blt _0224270C +_02242730: + add r7, r7, #1 + add r6, #8 + add r4, r4, #4 + cmp r7, #0xc + blt _02242700 + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02242740: .word 0x0224F8B8 + + thumb_func_start MOD06_02242744 +MOD06_02242744: ; 0x02242744 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r6, #4] + ldr r5, [r0, #0x24] + ldr r0, [r6, #0x38] + bl FUN_020553A0 + add r7, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _0224283A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242776: ; jump table + .short _0224277E - _02242776 - 2 ; case 0 + .short _022427A4 - _02242776 - 2 ; case 1 + .short _02242808 - _02242776 - 2 ; case 2 + .short _0224282E - _02242776 - 2 ; case 3 +_0224277E: + ldr r0, _02242840 ; =0x00000616 + bl FUN_020054C8 + ldr r0, [r5, #0x24] + cmp r0, #4 + bne _02242794 + add r0, r7, #0 + mov r1, #0xf + bl FUN_0205ADDC + b _0224279C +_02242794: + add r0, r7, #0 + mov r1, #0xe + bl FUN_0205ADDC +_0224279C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224283A +_022427A4: + ldrb r1, [r5, #0x1c] + add r6, #0xa0 + ldr r0, [r6] + add r1, r5, r1 + ldrb r1, [r1, #4] + bl FUN_021E7ED0 + add r6, r0, #0 + add r0, sp, #0 + add r1, r6, #0 + bl FUN_021E7EA0 + ldr r0, [r5, #0x24] + cmp r0, #4 + bne _022427DC + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xc + add r1, r1, r0 + str r1, [sp] + ldr r0, [r5, #0x20] + cmp r1, r0 + blt _022427FE + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022427FE +_022427DC: + cmp r0, #5 + bne _022427FA + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xc + sub r1, r1, r0 + str r1, [sp] + ldr r0, [r5, #0x20] + cmp r1, r0 + bgt _022427FE + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022427FE +_022427FA: + bl ErrorHandling +_022427FE: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + b _0224283A +_02242808: + ldr r0, [r6, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _0224283A + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, _02242840 ; =0x00000616 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224283A +_0224282E: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224283A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02242840: .word 0x00000616 + + thumb_func_start MOD06_02242844 +MOD06_02242844: ; 0x02242844 + push {r3, lr} + cmp r0, #0 + beq _02242854 + cmp r0, #1 + beq _02242858 + cmp r0, #2 + beq _0224285C + b _02242860 +_02242854: + mov r0, #3 + pop {r3, pc} +_02242858: + mov r0, #6 + pop {r3, pc} +_0224285C: + mov r0, #0xd + pop {r3, pc} +_02242860: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02242868 +MOD06_02242868: ; 0x02242868 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5, #7] + add r6, r1, #0 + mov r7, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _0224287E + cmp r0, #1 + beq _02242882 + b _02242886 +_0224287E: + add r7, r2, #4 + b _0224288A +_02242882: + add r7, r2, #0 + b _0224288A +_02242886: + bl ErrorHandling +_0224288A: + ldrb r0, [r5, #7] + mov r4, #0 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r0, #3 + bls _0224289A + bl ErrorHandling +_0224289A: + ldrb r0, [r5, #7] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0xe + add r0, r4, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r6, #3 + bls _022428B0 + bl ErrorHandling +_022428B0: + lsl r0, r6, #0x1e + asr r1, r0, #0x10 + ldrb r0, [r5, #7] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _022428C4 + add r0, r4, r1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022428D4 +_022428C4: + cmp r0, #1 + bne _022428D0 + sub r0, r4, r1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022428D4 +_022428D0: + bl ErrorHandling +_022428D4: + str r4, [r7] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022428D8 +MOD06_022428D8: ; 0x022428D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #5 + bl FUN_020254A0 + str r0, [sp, #0xc] + mov r0, #4 + mov r1, #0x1c + bl FUN_02016998 + ldr r1, [r5, #4] + str r0, [r1, #0x24] + ldr r0, [r5, #4] + ldr r0, [r0, #0x24] + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + ldr r1, [r0, #4] + ldr r0, [sp, #0x10] + strb r1, [r0, #0x11] + ldr r0, [sp, #0xc] + ldr r1, [r0] + ldr r0, [sp, #0x10] + strb r1, [r0, #0x13] + ldr r0, [sp, #0xc] + ldr r0, [r0, #4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD06_02242844 + mov r6, #0 + str r0, [sp, #8] + cmp r0, #0 + ble _022429A6 + add r7, r6, #0 +_02242926: + ldr r0, [sp, #0xc] + ldr r0, [r0, #4] + lsl r1, r0, #2 + ldr r0, _022429AC ; =0x0224F798 + ldr r0, [r0, r1] + add r4, r0, r7 + ldrb r0, [r4, #4] + lsl r2, r0, #0x10 + str r2, [sp, #0x20] + ldrb r0, [r4, #5] + lsl r1, r0, #0x10 + str r1, [sp, #0x24] + ldrb r0, [r4, #6] + lsl r3, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r2, r0 + str r0, [sp, #0x20] + mov r0, #2 + lsl r0, r0, #0xe + str r3, [sp, #0x28] + add r0, r3, r0 + str r0, [sp, #0x28] + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02242966 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x24] +_02242966: + mov r0, #0 + ldr r1, [sp, #0xc] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r1, [r1] + add r0, r4, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, sp, #0x14 + bl MOD06_02242868 + add r0, sp, #0x14 + str r0, [sp] + ldr r0, [r5, #0x4c] + add r3, sp, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + ldr r2, [r4] + bl FUN_021E7FBC + ldr r1, [sp, #0x10] + add r7, #8 + add r1, r1, r6 + strb r0, [r1, #4] + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + blt _02242926 +_022429A6: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_022429AC: .word 0x0224F798 + + thumb_func_start MOD06_022429B0 +MOD06_022429B0: ; 0x022429B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x24] + pop {r4, pc} + + thumb_func_start MOD06_022429C4 +MOD06_022429C4: ; 0x022429C4 + push {r4, r5, r6, r7} + ldr r0, [r0, #4] + add r3, r1, #0 + add r1, r2, #0 + ldr r2, [r0, #0x24] + mov r4, #0x14 + ldrb r0, [r2, #0x11] + ldrb r2, [r2, #0x13] + add r5, r0, #0 + mul r5, r4 + ldr r4, _02242A2C ; =0x022522FC + lsl r2, r2, #2 + ldr r6, [r4, r5] + ldr r4, _02242A30 ; =0x02252300 + add r4, r4, r5 + ldr r2, [r2, r4] + mov r5, #0 + mov ip, r2 + lsl r2, r0, #2 + ldr r0, _02242A34 ; =0x0224F774 + cmp r6, #0 + ldr r7, [r0, r2] + ble _02242A26 +_022429F2: + mov r0, ip + ldrb r0, [r0, r5] + lsl r0, r0, #2 + ldrb r2, [r7, r0] + add r4, r7, r0 + cmp r2, r3 + bgt _02242A20 + ldrb r0, [r4, #2] + add r0, r2, r0 + cmp r3, r0 + bge _02242A20 + ldrb r0, [r4, #1] + cmp r0, r1 + bgt _02242A20 + ldrb r2, [r4, #3] + add r0, r0, r2 + cmp r1, r0 + bge _02242A20 + ldr r1, [sp, #0x10] + mov r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + bx lr +_02242A20: + add r5, r5, #1 + cmp r5, r6 + blt _022429F2 +_02242A26: + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02242A2C: .word 0x022522FC +_02242A30: .word 0x02252300 +_02242A34: .word 0x0224F774 + + thumb_func_start MOD06_02242A38 +MOD06_02242A38: ; 0x02242A38 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #5 + bl FUN_020254A0 + add r6, r0, #0 + ldr r0, [r7, #4] + mov r1, #4 + ldr r4, [r0, #0x24] + mov r0, #0xb + bl FUN_020169D8 + mov r1, #0 + str r1, [r0] + strh r5, [r4, #0x14] + strh r1, [r4, #0x16] + str r0, [sp] + ldr r0, [r6, #4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD06_02242844 + strb r0, [r4, #0x12] + ldr r0, [r6] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + cmp r5, #0 + bne _02242A94 + mov r1, #1 + lsl r1, r1, #0xe + add r0, r0, #1 + strh r1, [r4, #0x18] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + b _02242ACE +_02242A94: + cmp r5, #1 + bne _02242AAA + mov r1, #1 + sub r0, r0, #1 + lsl r1, r1, #0xe + lsl r0, r0, #0x18 + strh r1, [r4, #0x18] + asr r0, r0, #0x18 + bpl _02242ACE + mov r0, #3 + b _02242ACE +_02242AAA: + cmp r5, #2 + bne _02242AC8 + mov r1, #2 + lsl r1, r1, #0xe + add r0, r0, #2 + strh r1, [r4, #0x18] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + b _02242ACE +_02242AC8: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_02242ACE: + str r0, [r6] + strb r0, [r4, #0x13] + ldr r0, _02242AE4 ; =0x0000063F + bl FUN_020054C8 + ldr r0, [r7, #0x10] + ldr r1, _02242AE8 ; =MOD06_02242AEC + ldr r2, [sp] + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242AE4: .word 0x0000063F +_02242AE8: .word MOD06_02242AEC + + thumb_func_start MOD06_02242AEC +MOD06_02242AEC: ; 0x02242AEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + bl FUN_02046528 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0204652C + ldr r1, [sp, #8] + str r0, [sp, #4] + ldr r1, [r1, #4] + ldr r4, [r1, #0x24] + add r1, r0, #0 + ldr r1, [r1] + cmp r1, #0 + beq _02242B14 + cmp r1, #1 + beq _02242BCC + b _02242BD6 +_02242B14: + ldrh r2, [r4, #0x18] + mov r0, #1 + ldrh r1, [r4, #0x16] + lsl r0, r0, #0xa + str r0, [sp] + add r0, r1, r0 + cmp r0, r2 + ble _02242B2C + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] +_02242B2C: + ldrh r1, [r4, #0x16] + ldr r0, [sp] + add r0, r1, r0 + strh r0, [r4, #0x16] + ldrh r0, [r4, #0x14] + cmp r0, #1 + bne _02242B44 + ldr r0, [sp] + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] +_02242B44: + ldrb r0, [r4, #0x12] + mov r5, #0 + cmp r0, #0 + bls _02242BB8 + ldr r0, [sp] + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] +_02242B56: + ldr r0, [sp, #8] + add r1, r4, r5 + add r0, #0xa0 + ldrb r1, [r1, #4] + ldr r0, [r0] + bl FUN_021E7ED0 + bl FUN_021E7E9C + ldrb r1, [r4, #0x11] + lsl r2, r1, #2 + ldr r1, _02242BDC ; =0x0224F798 + ldr r2, [r1, r2] + lsl r1, r5, #3 + add r1, r2, r1 + ldrb r2, [r1, #7] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _02242B82 + ldr r7, [sp, #0xc] + b _02242B84 +_02242B82: + ldr r7, [sp] +_02242B84: + ldrb r1, [r1, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1f + beq _02242B92 + cmp r1, #1 + beq _02242B96 + b _02242B9A +_02242B92: + add r6, r0, #4 + b _02242B9E +_02242B96: + add r6, r0, #0 + b _02242B9E +_02242B9A: + bl ErrorHandling +_02242B9E: + ldr r0, [r6] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r0, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [r6] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, #0x12] + cmp r5, r0 + blo _02242B56 +_02242BB8: + ldrh r1, [r4, #0x16] + ldrh r0, [r4, #0x18] + cmp r1, r0 + blo _02242BD6 + ldr r0, [sp, #4] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + str r1, [r0] + b _02242BD6 +_02242BCC: + bl FUN_02016A18 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02242BD6: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242BDC: .word 0x0224F798 + + thumb_func_start MOD06_02242BE0 +MOD06_02242BE0: ; 0x02242BE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r2, [sp] + add r5, r0, #0 + add r6, r1, #0 + str r3, [sp, #4] + bl FUN_02046528 + add r7, r0, #0 + ldr r0, _02242C70 ; =0x0000067C + bl FUN_020054C8 + mov r1, #0x11 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _02242C0E + bl ErrorHandling + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02242C0E: + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + add r2, sp, #0x10 + ldrb r2, [r2, #0x10] + ldr r3, [sp, #0x24] + add r0, r7, #0 + add r1, r4, #0 + bl MOD06_02242C78 + ldr r0, [r4] + add r1, r4, #0 + ldr r0, [r0, #8] + add r1, #0x14 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02054608 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl MOD06_02243080 + add r0, r4, #0 + bl MOD06_022430E0 + ldr r2, [sp] + ldr r3, [sp, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD06_02242CDC + ldr r1, _02242C74 ; =MOD06_02242EC0 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242C70: .word 0x0000067C +_02242C74: .word MOD06_02242EC0 + + thumb_func_start MOD06_02242C78 +MOD06_02242C78: ; 0x02242C78 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r4, r0, #0 + add r5, r1, #0 + ldr r2, _02242CD8 ; =0x00000141 + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [r5, #0x54] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r5, #0x58] + add r0, r5, #0 + str r4, [r5] + add r0, #0x5d + strb r6, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0x5e + strb r1, [r0] + add r2, r5, #0 + add r4, r1, #0 +_02242CAA: + add r0, r2, #0 + add r0, #0x90 + str r4, [r0] + add r0, r2, #0 + add r0, #0x94 + add r1, r1, #1 + add r2, #8 + str r4, [r0] + cmp r1, #0x10 + blt _02242CAA + mov r6, #0x40 + mov r7, #4 +_02242CC2: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [r5, #0x24] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _02242CC2 + pop {r3, r4, r5, r6, r7, pc} + nop +_02242CD8: .word 0x00000141 + + thumb_func_start MOD06_02242CDC +MOD06_02242CDC: ; 0x02242CDC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r0, #0 + str r2, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r4] + add r6, r1, #0 + add r5, r3, #0 + ldr r0, [r0, #8] + add r1, r4, #4 + mov r2, #3 + add r3, r6, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, _02242D44 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _02242D44 ; =0x000003D9 + add r0, r4, #4 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD06_02242DA8 + add r0, r4, #0 + add r0, #0x68 + mov r1, #0 + add r2, r5, #0 + mov r3, #4 + bl FUN_020010A8 + add r4, #0x88 + str r0, [r4] + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02242D44: .word 0x000003D9 + + thumb_func_start MOD06_02242D48 +MOD06_02242D48: ; 0x02242D48 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + add r2, r5, #0 + add r2, #0x5e + ldrb r2, [r2] + ldr r0, [r5, #0x54] + lsl r2, r2, #2 + add r2, r5, r2 + ldr r2, [r2, #0x24] + bl FUN_0200A8E0 + add r0, r5, #0 + add r0, #0x5e + ldrb r2, [r0] + lsl r0, r2, #2 + add r0, r5, r0 + ldr r1, [r0, #0x24] + lsl r0, r2, #3 + add r0, r5, r0 + add r0, #0x90 + str r1, [r0] + cmp r4, #0xfa + bne _02242D8C + add r0, r5, #0 + add r0, #0x5e + ldrb r0, [r0] + mov r1, #2 + mvn r1, r1 + lsl r0, r0, #3 + add r0, r5, r0 + add r0, #0x94 + str r1, [r0] + b _02242D9A +_02242D8C: + add r0, r5, #0 + add r0, #0x5e + ldrb r0, [r0] + lsl r0, r0, #3 + add r0, r5, r0 + add r0, #0x94 + str r4, [r0] +_02242D9A: + add r0, r5, #0 + add r0, #0x5e + ldrb r0, [r0] + add r5, #0x5e + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02242DA8 +MOD06_02242DA8: ; 0x02242DA8 + push {r3, r4} + add r1, r0, #0 + add r1, #0x90 + str r1, [r0, #0x68] + mov r1, #0 + ldr r2, _02242E8C ; =MOD06_02242E9C + str r1, [r0, #0x6c] + str r2, [r0, #0x70] + add r2, r0, #4 + str r2, [r0, #0x74] + add r2, r0, #0 + add r2, #0x5e + ldrb r3, [r2] + add r2, r0, #0 + add r2, #0x78 + strh r3, [r2] + add r2, r0, #0 + mov r3, #6 + add r2, #0x7a + strh r3, [r2] + add r2, r0, #0 + mov r3, #1 + add r2, #0x7c + strb r3, [r2] + add r2, r0, #0 + mov r3, #0xc + add r2, #0x7d + strb r3, [r2] + add r2, r0, #0 + add r2, #0x7e + strb r1, [r2] + add r1, r0, #0 + add r1, #0x7f + ldrb r3, [r1] + mov r1, #0xf + mov r2, #8 + bic r3, r1 + orr r3, r2 + add r2, r0, #0 + add r2, #0x7f + strb r3, [r2] + add r2, r0, #0 + add r2, #0x7f + ldrb r4, [r2] + mov r2, #0xf0 + mov r3, #0x10 + bic r4, r2 + orr r4, r3 + add r3, r0, #0 + add r3, #0x7f + strb r4, [r3] + add r3, r0, #0 + add r3, #0x80 + ldrb r3, [r3] + bic r3, r1 + mov r1, #0xf + orr r3, r1 + add r1, r0, #0 + add r1, #0x80 + strb r3, [r1] + add r1, r0, #0 + add r1, #0x80 + ldrb r3, [r1] + mov r1, #0x20 + bic r3, r2 + add r2, r3, #0 + orr r2, r1 + add r1, r0, #0 + add r1, #0x80 + strb r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + mov r1, #7 + bic r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + mov r1, #0x78 + bic r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + ldr r1, _02242E90 ; =0xFFFFFE7F + and r2, r1 + mov r1, #0x80 + orr r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + ldr r1, _02242E94 ; =0xFFFF81FF + and r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + ldr r1, _02242E98 ; =0xFFFF7FFF + add r0, #0x82 + and r1, r2 + strh r1, [r0] + pop {r3, r4} + bx lr + nop +_02242E8C: .word MOD06_02242E9C +_02242E90: .word 0xFFFFFE7F +_02242E94: .word 0xFFFF81FF +_02242E98: .word 0xFFFF7FFF + + thumb_func_start MOD06_02242E9C +MOD06_02242E9C: ; 0x02242E9C + push {r3, lr} + mov r2, #2 + mvn r2, r2 + cmp r1, r2 + bne _02242EB2 + mov r1, #3 + mov r2, #0xf + mov r3, #4 + bl FUN_020013E8 + pop {r3, pc} +_02242EB2: + mov r1, #1 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02242EC0 +MOD06_02242EC0: ; 0x02242EC0 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x5c + ldrb r1, [r1] + cmp r1, #4 + bhi _02242F0E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02242EDE: ; jump table + .short _02242EE8 - _02242EDE - 2 ; case 0 + .short _02242EEE - _02242EDE - 2 ; case 1 + .short _02242EF4 - _02242EDE - 2 ; case 2 + .short _02242EFA - _02242EDE - 2 ; case 3 + .short _02242F00 - _02242EDE - 2 ; case 4 +_02242EE8: + bl MOD06_02242F1C + b _02242F0E +_02242EEE: + bl MOD06_02242F54 + b _02242F0E +_02242EF4: + bl MOD06_02242FEC + b _02242F0E +_02242EFA: + bl MOD06_02243018 + b _02242F0E +_02242F00: + bl MOD06_02243024 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_02242F0E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02242F14 +MOD06_02242F14: ; 0x02242F14 + add r0, #0x5c + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02242F1C +MOD06_02242F1C: ; 0x02242F1C + push {r4, lr} + add r4, r0, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02001204 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02242F38 + add r1, r1, #1 + cmp r0, r1 + beq _02242F50 + b _02242F42 +_02242F38: + add r0, r4, #0 + mov r1, #4 + bl MOD06_02242F14 + pop {r4, pc} +_02242F42: + add r1, r4, #0 + add r1, #0x60 + strh r0, [r1] + add r0, r4, #0 + mov r1, #1 + bl MOD06_02242F14 +_02242F50: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02242F54 +MOD06_02242F54: ; 0x02242F54 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _02242FE0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #4 + tst r0, r1 + beq _02242F6E + mov r0, #1 + add r4, #0x5f + add sp, #4 + strb r0, [r4] + pop {r3, r4, pc} +_02242F6E: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02001204 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02242F88 + add r1, r1, #1 + cmp r0, r1 + beq _02242FDC + b _02242FA6 +_02242F88: + add r0, r4, #0 + add r0, #0x5f + ldrb r0, [r0] + cmp r0, #1 + bne _02242F9A + add r0, r4, #0 + mov r1, #0 + add r0, #0x5f + strb r1, [r0] +_02242F9A: + add r0, r4, #0 + mov r1, #0 + bl MOD06_02242F14 + add sp, #4 + pop {r3, r4, pc} +_02242FA6: + add r1, r4, #0 + add r1, #0x5f + ldrb r1, [r1] + cmp r1, #1 + bne _02242FDC + add r1, r4, #0 + add r1, #0x60 + strh r0, [r1] + mov r0, #4 + str r0, [sp] + ldr r0, [r4] + ldr r1, _02242FE4 ; =0x02250C40 + ldr r0, [r0, #8] + ldr r2, _02242FE8 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x64] + add r0, r4, #0 + mov r1, #0x24 + mov r2, #0 + bl MOD06_02243080 + add r0, r4, #0 + mov r1, #2 + bl MOD06_02242F14 +_02242FDC: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02242FE0: .word 0x021C48B8 +_02242FE4: .word 0x02250C40 +_02242FE8: .word 0x000003D9 + + thumb_func_start MOD06_02242FEC +MOD06_02242FEC: ; 0x02242FEC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02243006 + add r0, r4, #0 + mov r1, #3 + bl MOD06_02242F14 + pop {r4, pc} +_02243006: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _02243016 + add r0, r4, #0 + mov r1, #1 + bl MOD06_02242F14 +_02243016: + pop {r4, pc} + + thumb_func_start MOD06_02243018 +MOD06_02243018: ; 0x02243018 + ldr r3, _02243020 ; =MOD06_02242F14 + mov r1, #1 + bx r3 + nop +_02243020: .word MOD06_02242F14 + + thumb_func_start MOD06_02243024 +MOD06_02243024: ; 0x02243024 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _0224307C ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + add r0, #0x14 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r6, #0 + add r0, #0x14 + bl FUN_02019178 + add r0, r6, #0 + add r0, #0x88 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r6, #0x74] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #4 + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_02243060: + ldr r0, [r5, #0x24] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _02243060 + ldr r0, [r6, #0x58] + bl FUN_0200AB18 + ldr r0, [r6, #0x54] + bl FUN_0200A8B8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224307C: .word 0x000005DC + + thumb_func_start MOD06_02243080 +MOD06_02243080: ; 0x02243080 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp, #0xc] + mov r0, #0x40 + mov r1, #4 + add r7, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x40 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x14 + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #0x54] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x58] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + add r5, #0x14 + str r7, [sp, #4] + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + str r3, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022430E0 +MOD06_022430E0: ; 0x022430E0 + push {r4, lr} + add r4, r0, #0 + mov r1, #6 + mov r2, #0 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #7 + mov r2, #1 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #9 + mov r2, #2 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #9 + mov r2, #3 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #9 + mov r2, #4 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #0x14 + mov r2, #5 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #0xb + mov r2, #6 + bl MOD06_02242D48 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224312C +MOD06_0224312C: ; 0x0224312C + cmp r0, #5 + bhi _02243154 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224313C: ; jump table + .short _02243148 - _0224313C - 2 ; case 0 + .short _0224314C - _0224313C - 2 ; case 1 + .short _02243150 - _0224313C - 2 ; case 2 + .short _02243150 - _0224313C - 2 ; case 3 + .short _02243148 - _0224313C - 2 ; case 4 + .short _02243148 - _0224313C - 2 ; case 5 +_02243148: + mov r0, #3 + bx lr +_0224314C: + mov r0, #4 + bx lr +_02243150: + mov r0, #2 + bx lr +_02243154: + mov r0, #0 + bx lr + + thumb_func_start MOD06_02243158 +MOD06_02243158: ; 0x02243158 + push {r4, r5} + mov r5, #0 + cmp r3, #0 + ble _0224317E +_02243160: + ldrh r4, [r0] + cmp r1, r4 + bne _02243176 + cmp r2, #0 + beq _02243176 + ldrh r4, [r0, #2] + cmp r2, r4 + bne _02243176 + mov r0, #1 + pop {r4, r5} + bx lr +_02243176: + add r5, r5, #1 + add r0, r0, #4 + cmp r5, r3 + blt _02243160 +_0224317E: + mov r0, #0 + pop {r4, r5} + bx lr + + thumb_func_start MOD06_02243184 +MOD06_02243184: ; 0x02243184 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov lr, r0 + sub r0, r5, #1 + mov r7, #0 + mov ip, r0 + cmp r0, #0 + ble _022431D0 + mov r3, lr +_02243196: + add r2, r7, #1 + cmp r2, r5 + bge _022431C6 + ldrh r6, [r3] + lsl r1, r2, #2 + mov r0, lr + add r4, r0, r1 +_022431A4: + ldrh r0, [r4] + cmp r6, r0 + bne _022431AE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022431AE: + ldrh r1, [r3, #2] + cmp r1, #0 + beq _022431BE + ldrh r0, [r4, #2] + cmp r1, r0 + bne _022431BE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022431BE: + add r2, r2, #1 + add r4, r4, #4 + cmp r2, r5 + blt _022431A4 +_022431C6: + add r7, r7, #1 + mov r0, ip + add r3, r3, #4 + cmp r7, r0 + blt _02243196 +_022431D0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022431D4 +MOD06_022431D4: ; 0x022431D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp] + add r7, r1, #0 + add r6, r2, #0 + add r0, sp, #0x20 + mov r1, #0 + mov r2, #0x10 + str r3, [sp, #4] + bl MI_CpuFill8 + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #4] + cmp r0, #0 + ble _022432DC + ldr r0, [sp] + str r0, [sp, #0x10] +_022431F8: + ldr r0, [sp, #0x10] + ldrh r1, [r0] + add r0, sp, #0x20 + strh r1, [r0] + ldr r0, [sp, #0x10] + ldrh r1, [r0, #2] + add r0, sp, #0x20 + strh r1, [r0, #2] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r6 + bge _022432CA + lsl r1, r0, #2 + ldr r0, [sp] + add r0, r0, r1 + str r0, [sp, #0xc] +_0224321A: + ldr r0, [sp, #0xc] + cmp r7, #2 + ldrh r1, [r0] + add r0, sp, #0x20 + strh r1, [r0, #4] + ldr r0, [sp, #0xc] + ldrh r1, [r0, #2] + add r0, sp, #0x20 + strh r1, [r0, #6] + bne _02243240 + add r0, sp, #0x20 + add r1, r7, #0 + bl MOD06_02243184 + cmp r0, #0 + beq _022432BA + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02243240: + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + bge _022432BA + lsl r1, r0, #2 + ldr r0, [sp] + add r0, r0, r1 + str r0, [sp, #8] +_02243252: + ldr r0, [sp, #8] + cmp r7, #3 + ldrh r1, [r0] + add r0, sp, #0x20 + strh r1, [r0, #8] + ldr r0, [sp, #8] + ldrh r1, [r0, #2] + add r0, sp, #0x20 + strh r1, [r0, #0xa] + bne _02243278 + add r0, sp, #0x20 + add r1, r7, #0 + bl MOD06_02243184 + cmp r0, #0 + beq _022432AA + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02243278: + ldr r0, [sp, #0x14] + add r4, r0, #1 + cmp r4, r6 + bge _022432AA + ldr r0, [sp] + lsl r1, r4, #2 + add r5, r0, r1 +_02243286: + ldrh r1, [r5] + add r0, sp, #0x20 + strh r1, [r0, #0xc] + ldrh r1, [r5, #2] + strh r1, [r0, #0xe] + add r0, sp, #0x20 + add r1, r7, #0 + bl MOD06_02243184 + cmp r0, #0 + beq _022432A2 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022432A2: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r6 + blt _02243286 +_022432AA: + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + blt _02243252 +_022432BA: + ldr r0, [sp, #0xc] + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r6 + blt _0224321A +_022432CA: + ldr r0, [sp, #0x10] + add r0, r0, #4 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + add r1, r0, #1 + ldr r0, [sp, #4] + str r1, [sp, #0x1c] + cmp r1, r0 + blt _022431F8 +_022432DC: + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022432E4 +MOD06_022432E4: ; 0x022432E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp] + add r0, r1, #0 + bl FUN_0206BB1C + str r0, [sp, #4] + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + str r1, [sp, #8] + ldr r0, [sp] + cmp r1, r0 + bge _02243308 + add sp, #0x28 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02243308: + ldr r0, [sp, #8] + mov r7, #0 + add r4, r7, #0 + cmp r0, #0 + bls _0224337A +_02243312: + ldr r0, [sp, #4] + add r1, r7, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + str r0, [sp, #0xc] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [sp, #0xc] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0xc] + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0224336E + add r0, r5, #0 + bl FUN_0206A964 + cmp r0, #1 + beq _0224336E + add r0, sp, #0x10 + add r1, r5, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD06_02243158 + cmp r0, #1 + beq _0224336E + lsl r1, r4, #2 + add r0, sp, #0x10 + add r2, r0, r1 + strh r5, [r0, r1] + add r0, r4, #1 + lsl r0, r0, #0x18 + strh r6, [r2, #2] + lsr r4, r0, #0x18 +_0224336E: + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp, #8] + cmp r7, r0 + blo _02243312 +_0224337A: + ldr r0, [sp] + cmp r4, r0 + bge _02243386 + add sp, #0x28 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02243386: + ldr r1, [sp] + add r0, sp, #0x10 + add r3, r1, #0 + sub r3, r4, r3 + add r2, r4, #0 + add r3, r3, #1 + bl MOD06_022431D4 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224339C +MOD06_0224339C: ; 0x0224339C + ldr r3, _022433A4 ; =0x020CD3B4 + mov r0, #0 + bx r3 + nop +_022433A4: .word 0x020CD3B4 + + thumb_func_start MOD06_022433A8 +MOD06_022433A8: ; 0x022433A8 + ldr r3, _022433AC ; =0x0202A1E5 + bx r3 + .align 2, 0 +_022433AC: .word 0x0202A1E5 + + thumb_func_start MOD06_022433B0 +MOD06_022433B0: ; 0x022433B0 + ldr r3, _022433B4 ; =0x0202A399 + bx r3 + .align 2, 0 +_022433B4: .word 0x0202A399 + + thumb_func_start MOD06_022433B8 +MOD06_022433B8: ; 0x022433B8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + ldr r1, [r5, #0x1c] + ldr r1, [r1] + str r1, [r4] + mov r1, #0 + mvn r1, r1 + str r1, [r4, #4] + str r0, [r4, #8] + str r6, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F154 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022433F8 +MOD06_022433F8: ; 0x022433F8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F164 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02243408 +MOD06_02243408: ; 0x02243408 + push {r4, lr} + add r4, r1, #0 + cmp r4, #5 + bne _02243414 + mov r0, #0 + pop {r4, pc} +_02243414: + bl FUN_02029FC8 + lsl r1, r4, #1 + add r1, #0x36 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02243428 +MOD06_02243428: ; 0x02243428 + push {r4, lr} + add r4, r1, #0 + bl FUN_0202A8D8 + cmp r4, #0 + bne _0224343E + mov r1, #5 + mov r2, #2 + bl FUN_0202A578 + pop {r4, pc} +_0224343E: + mov r1, #5 + mov r2, #1 + bl FUN_0202A578 + pop {r4, pc} + + thumb_func_start MOD06_02243448 +MOD06_02243448: ; 0x02243448 + push {r3, lr} + bl FUN_0202A8D8 + mov r1, #5 + mov r2, #0 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_0224345C +MOD06_0224345C: ; 0x0224345C + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_0202A8CC + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0202A8D8 + mov r1, #0 + add r6, r0, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_0202A240 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + bne _02243484 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02243484: + add r1, r4, #0 + add r1, #8 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #2 + bl FUN_0202A578 + add r0, r6, #0 + add r1, r4, #0 + mov r2, #2 + bl FUN_0202A538 + cmp r4, #4 + beq _022434A8 + add r0, r5, #0 + bl FUN_020600A0 +_022434A8: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_022434AC +MOD06_022434AC: ; 0x022434AC + push {r3, lr} + bl FUN_0202A8E4 + bl FUN_0202A744 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_022434BC +MOD06_022434BC: ; 0x022434BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _022434CA + bl ErrorHandling +_022434CA: + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_022434D0 +MOD06_022434D0: ; 0x022434D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + mov r2, #1 + add r6, r0, #0 + add r5, r1, #0 + mov r0, #3 + mov r1, #0x3b + lsl r2, r2, #0xe + bl FUN_02016828 + ldr r1, _02243684 ; =0x000008CC + mov r0, #0x3b + bl FUN_02016998 + ldr r2, _02243684 ; =0x000008CC + mov r1, #0 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x3b + str r0, [r4, #4] + add r0, r6, #0 + bl FUN_0202A8CC + str r0, [r4, #0x70] + add r0, r6, #0 + bl FUN_0202A8D8 + str r0, [r4, #0x74] + ldr r0, _02243688 ; =0x12345678 + mov r1, #0 + str r0, [r4] + ldr r0, [r4, #0x70] + bl FUN_0202A3A0 + cmp r5, #0 + bne _0224356C + strb r7, [r4, #0xf] + ldrb r0, [r4, #0xf] + bl MOD06_0224312C + strb r0, [r4, #0xe] + mov r0, #1 + strb r0, [r4, #0xc] + mov r2, #0 + strb r2, [r4, #0xd] + mov r1, #0xff +_02243530: + add r0, r4, r2 + add r0, #0x2a + strb r1, [r0] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, #4 + blo _02243530 + ldr r1, _0224368C ; =0x0000FFFF + mov r2, #0 +_02243544: + lsl r0, r2, #1 + add r0, r4, r0 + strh r1, [r0, #0x3e] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, #0xe + blo _02243544 + ldr r0, [r4, #0x70] + bl FUN_0202A1E4 + ldrb r1, [r4, #0xf] + add r0, sp, #8 + add r2, sp, #8 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #0 + bl FUN_0202A2C4 + b _0224362A +_0224356C: + mov r1, #0 + ldr r0, [r4, #0x70] + add r2, r1, #0 + bl FUN_0202A240 + strb r0, [r4, #0xf] + ldr r0, [r4, #0x70] + mov r1, #1 + mov r2, #0 + bl FUN_0202A240 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xf] + bl MOD06_0224312C + strb r0, [r4, #0xe] + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #5 + add r2, #0x2a + bl FUN_0202A240 + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #8 + add r2, #0x3e + bl FUN_0202A240 + ldr r0, [r4, #0x70] + mov r1, #0xa + mov r2, #0 + bl FUN_0202A240 + str r0, [r4, #8] + ldrb r0, [r4, #0xf] + cmp r0, #2 + bne _0224362A + ldr r0, [r4, #0x70] + mov r1, #9 + mov r2, #0 + bl FUN_0202A240 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1d + ldrb r1, [r4, #0x10] + mov r2, #0xe0 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r4, #0x10] + ldrb r3, [r4, #0x10] + ldr r2, _02243690 ; =0x000007E8 + ldr r0, [r4, #0x70] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1d + add r2, r4, r2 + lsl r3, r3, #4 + mov r1, #6 + add r2, r2, r3 + bl FUN_0202A240 + ldrb r0, [r4, #0x10] + mov r1, #7 + mov r2, #0 + lsl r0, r0, #0x18 + lsr r5, r0, #0x1d + ldr r0, [r4, #0x70] + bl FUN_0202A240 + add r3, r0, #0 + ldr r0, _02243690 ; =0x000007E8 + mov r1, #0xa6 + lsl r1, r1, #2 + add r0, r4, r0 + lsl r2, r5, #4 + add r0, r0, r2 + add r2, r5, r2 + str r0, [sp] + ldr r0, [r4, #4] + add r1, r4, r1 + lsl r2, r2, #4 + add r1, r1, r2 + mov r2, #0x4b + lsl r2, r2, #2 + add r2, r5, r2 + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + lsr r2, r2, #0x10 + bl MOD06_02244A80 +_0224362A: + add r0, r6, #0 + bl FUN_020238F4 + bl FUN_020239CC + strb r0, [r4, #0x11] + ldrb r0, [r4, #0xf] + cmp r0, #5 + beq _0224367E + add r0, r6, #0 + bl FUN_02029FC8 + ldrb r1, [r4, #0xf] + add r5, r0, #0 + ldr r0, [r4, #0x74] + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _02243668 + ldrb r1, [r4, #0xf] + add r0, r5, #0 + lsl r1, r1, #1 + add r1, #0x36 + bl FUN_0202A150 + strh r0, [r4, #0x1a] +_02243668: + add r0, r5, #0 + mov r1, #0x1d + bl FUN_0202A150 + str r0, [r4, #0x20] + ldrb r1, [r4, #0xf] + ldr r0, [r4, #0x74] + mov r2, #0 + bl FUN_0202A538 + strh r0, [r4, #0x1c] +_0224367E: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243684: .word 0x000008CC +_02243688: .word 0x12345678 +_0224368C: .word 0x0000FFFF +_02243690: .word 0x000007E8 + + thumb_func_start MOD06_02243694 +MOD06_02243694: ; 0x02243694 + push {r3, r4, r5, lr} + add r4, r0, #0 + beq _022436BE + ldr r1, [r4] + ldr r0, _022436C0 ; =0x12345678 + cmp r1, r0 + beq _022436A6 + bl ErrorHandling +_022436A6: + ldr r2, _022436C4 ; =0x000008CC + ldr r5, [r4, #4] + add r0, r4, #0 + mov r1, #0 + bl MI_CpuFill8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_020168D0 +_022436BE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022436C0: .word 0x12345678 +_022436C4: .word 0x000008CC + + thumb_func_start MOD06_022436C8 +MOD06_022436C8: ; 0x022436C8 + push {r3, lr} + sub sp, #0x10 + ldrb r0, [r0, #0xe] + mov r3, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x64 + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + mov r2, #0x11 + str r3, [sp, #0xc] + bl FUN_0205FC50 + add sp, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_022436E8 +MOD06_022436E8: ; 0x022436E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r1] + str r1, [sp] + str r0, [sp, #4] + add r0, #0x23 + ldrb r0, [r0] + cmp r0, #0 + bne _02243706 + ldr r0, [sp, #4] + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #7 + bne _02243716 +_02243706: + ldr r0, [sp, #4] + bl FUN_02016A18 + ldr r1, [sp] + mov r0, #0 + str r0, [r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02243716: + add r0, r2, #0 + bl FUN_0206BB1C + str r0, [sp, #8] + ldrb r0, [r5, #0xe] + mov r4, #0 + cmp r0, #0 + ble _0224376A +_02243726: + ldr r0, [sp, #4] + add r0, r0, r4 + add r0, #0x2c + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r5, r4 + add r0, #0x2a + strb r1, [r0] + add r1, r5, r4 + add r1, #0x2a + ldrb r1, [r1] + ldr r0, [sp, #8] + bl FUN_0206B9B0 + lsl r1, r4, #1 + add r6, r5, r1 + add r7, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r6, #0x2e] + add r0, r7, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r6, #0x36] + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldrb r0, [r5, #0xe] + cmp r4, r0 + blt _02243726 +_0224376A: + ldr r0, [sp] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [sp] + mov r1, #0 + str r1, [r0] + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02243780 +MOD06_02243780: ; 0x02243780 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + add r0, r1, #0 + bl FUN_0206BB1C + str r0, [sp, #4] + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0xe] + cmp r0, #0 + ble _02243808 + add r7, sp, #0xc + add r4, sp, #0x14 +_0224379C: + ldr r1, [sp] + ldr r0, [sp, #4] + add r1, r1, r5 + add r1, #0x2a + ldrb r1, [r1] + bl FUN_0206B9B0 + str r0, [sp, #8] + lsl r6, r5, #1 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, r6] + ldr r0, [sp, #8] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r7, r6] + cmp r5, #0 + beq _022437FA + mov r0, #0 + cmp r5, #0 + bls _022437FA + ldrh r1, [r4, r6] + ldrh r2, [r7, r6] +_022437D2: + lsl r6, r0, #1 + ldrh r3, [r4, r6] + cmp r1, r3 + bne _022437E0 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022437E0: + cmp r2, #0 + beq _022437F0 + ldrh r3, [r7, r6] + cmp r2, r3 + bne _022437F0 + add sp, #0x1c + mov r0, #2 + pop {r4, r5, r6, r7, pc} +_022437F0: + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, r5 + blo _022437D2 +_022437FA: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [sp] + ldrb r0, [r0, #0xe] + cmp r5, r0 + blt _0224379C +_02243808: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02243810 +MOD06_02243810: ; 0x02243810 + push {r3, r4} + mov r4, #0 + cmp r2, #0 + bls _02243830 +_02243818: + lsl r3, r4, #1 + ldrh r3, [r0, r3] + cmp r1, r3 + bne _02243826 + mov r0, #1 + pop {r3, r4} + bx lr +_02243826: + add r3, r4, #1 + lsl r3, r3, #0x10 + lsr r4, r3, #0x10 + cmp r4, r2 + blo _02243818 +_02243830: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_02243838 +MOD06_02243838: ; 0x02243838 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldrb r1, [r5, #0xf] + add r0, r1, #0 + add r0, #0xfe + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _0224389E + cmp r1, #3 + bne _02243858 + ldrh r1, [r5, #0x14] + ldrh r0, [r5, #0x1c] + cmp r1, r0 + bhi _0224385A +_02243858: + ldrh r1, [r5, #0x1c] +_0224385A: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + add r0, r5, #0 + str r0, [sp, #4] + add r0, #0x3e + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #4] +_0224386C: + lsr r2, r4, #0x1f + add r2, r4, r2 + lsl r2, r2, #0x17 + ldrb r3, [r5, #0xf] + ldr r1, [sp] + add r0, r5, #0 + lsr r2, r2, #0x18 + bl MOD06_0224478C + add r7, r0, #0 + lsl r2, r4, #0x10 + ldr r0, [sp, #4] + add r1, r7, #0 + lsr r2, r2, #0x10 + bl MOD06_02243810 + cmp r0, #0 + bne _0224386C + add r4, r4, #1 + strh r7, [r6, #0x3e] + add r6, r6, #2 + cmp r4, #0xe + blt _0224386C + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224389E: + add r0, r5, #0 + str r0, [sp, #8] + add r0, #0x3e + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #8] +_022438AA: + ldrh r1, [r5, #0x1c] + lsl r2, r4, #0x18 + ldrb r3, [r5, #0xf] + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD06_0224478C + add r7, r0, #0 + lsl r2, r4, #0x10 + ldr r0, [sp, #8] + add r1, r7, #0 + lsr r2, r2, #0x10 + bl MOD06_02243810 + cmp r0, #0 + bne _022438AA + add r4, r4, #1 + strh r7, [r6, #0x3e] + add r6, r6, #2 + cmp r4, #7 + blt _022438AA + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022438DC +MOD06_022438DC: ; 0x022438DC + ldrb r0, [r0, #0xc] + bx lr + + thumb_func_start MOD06_022438E0 +MOD06_022438E0: ; 0x022438E0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldr r0, [r4, #8] + bl FUN_02060064 + str r0, [r4, #8] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start MOD06_022438FC +MOD06_022438FC: ; 0x022438FC + ldrb r2, [r0, #0x10] + lsl r1, r2, #0x1f + lsr r1, r1, #0x1f + beq _02243908 + mov r0, #1 + bx lr +_02243908: + ldrb r1, [r0, #0xc] + cmp r1, #7 + bls _0224391C + mov r1, #1 + bic r2, r1 + mov r1, #1 + orr r2, r1 + strb r2, [r0, #0x10] + add r0, r1, #0 + bx lr +_0224391C: + mov r0, #0 + bx lr + + thumb_func_start MOD06_02243920 +MOD06_02243920: ; 0x02243920 + ldrb r1, [r0, #0xd] + ldrh r0, [r0, #0x1a] + add r1, r0, r1 + ldr r0, _02243934 ; =0x0000FFFF + cmp r1, r0 + bhi _02243930 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 +_02243930: + bx lr + nop +_02243934: .word 0x0000FFFF + + thumb_func_start MOD06_02243938 +MOD06_02243938: ; 0x02243938 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldrb r0, [r5, #0xf] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, #0 + beq _0224394A + cmp r0, #1 + bne _02243980 +_0224394A: + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + ldrb r1, [r5, #0xf] + cmp r1, #0 + bne _0224396C + add r5, #0x2a + ldrb r1, [r5] + bl FUN_0206B9B0 + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + mov r3, #1 + bl FUN_02061904 + pop {r4, r5, r6, pc} +_0224396C: + add r5, #0x2a + ldrb r1, [r5] + bl FUN_0206B9B0 + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + mov r3, #0 + bl FUN_02061904 +_02243980: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02243984 +MOD06_02243984: ; 0x02243984 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + ldrb r2, [r5, #0xf] + add r6, r1, #0 + add r4, r3, #0 + cmp r2, #0 + beq _0224399E + cmp r2, #1 + beq _022439A4 + cmp r2, #4 + beq _022439B8 + pop {r3, r4, r5, r6, r7, pc} +_0224399E: + mov r2, #0 + bl MOD06_02244190 +_022439A4: + cmp r4, #7 + blo _022439F6 + add r0, r6, #0 + bl FUN_02022504 + add r1, r7, #0 + add r2, r4, #0 + bl FUN_02060FBC + pop {r3, r4, r5, r6, r7, pc} +_022439B8: + mov r2, #1 + bl MOD06_02244190 + ldrh r1, [r5, #0x28] + ldrh r2, [r5, #0x24] + ldrh r3, [r5, #0x26] + lsl r1, r1, #0x18 + ldr r0, [r5, #0x70] + lsr r1, r1, #0x18 + bl FUN_0202A36C + ldrb r1, [r5, #0xf] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r5, #0x70] + mov r1, #0 + bl FUN_0202A2C4 + ldrb r1, [r5, #0xc] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r5, #0x70] + mov r1, #1 + bl FUN_0202A2C4 + ldr r0, [r5, #0x74] + ldr r1, [r5, #0x70] + bl FUN_0202A4B8 +_022439F6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022439F8 +MOD06_022439F8: ; 0x022439F8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r1, #0xc] + str r1, [sp] + str r0, [sp, #8] + bl FUN_02029FC8 + ldrb r1, [r5, #0xf] + str r0, [sp, #4] + cmp r1, #5 + beq _02243AD0 + lsl r6, r1, #1 + add r6, #0x35 + add r1, r6, #0 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldrh r3, [r5, #0x1a] + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, r3, r2 + bl FUN_0202A0A8 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #1 + bls _02243A52 + cmp r7, r4 + blo _02243A48 + cmp r7, r4 + bne _02243A52 + add r0, r4, #0 + mov r1, #7 + bl _s32_div_f + cmp r1, #0 + bne _02243A52 +_02243A48: + ldr r1, [sp] + add r0, r5, #0 + add r2, r4, #0 + bl MOD06_02243938 +_02243A52: + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #0 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _02243A74 + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + add r1, r6, #1 + bl FUN_0202A11C + b _02243A7E +_02243A74: + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + add r1, r6, #1 + bl FUN_0202A07C +_02243A7E: + ldrb r1, [r5, #0xf] + add r4, r0, #0 + ldr r0, [r5, #0x74] + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #2 + bl FUN_0202A578 + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + mov r1, #0x1d + bl FUN_0202A11C + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #2 + bl FUN_0202A538 + ldr r0, [sp, #8] + bl FUN_02029FC8 + mov r1, #0xf + mov r2, #1 + bl FUN_0202A11C + add r0, r5, #0 + bl MOD06_0224403C + ldr r0, _02243AD4 ; =0x0000270F + add r4, r4, #1 + cmp r4, r0 + bls _02243AC2 + add r4, r0, #0 +_02243AC2: + lsl r3, r4, #0x10 + ldr r1, [sp, #8] + add r0, r5, #0 + mov r2, #0 + lsr r3, r3, #0x10 + bl MOD06_02243984 +_02243AD0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243AD4: .word 0x0000270F + + thumb_func_start MOD06_02243AD8 +MOD06_02243AD8: ; 0x02243AD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + add r5, r0, #0 + ldr r0, [r7, #0xc] + str r0, [sp, #4] + ldrb r0, [r5, #0xf] + cmp r0, #5 + beq _02243BA2 + ldr r0, [sp, #4] + bl FUN_02029FC8 + ldrb r1, [r5, #0xf] + add r6, r0, #0 + ldr r0, [r5, #0x74] + lsl r4, r1, #1 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + add r4, #0x35 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _02243B1A + add r0, r6, #0 + add r1, r4, #1 + mov r2, #7 + bl FUN_0202A11C + str r0, [sp] + b _02243B26 +_02243B1A: + add r0, r6, #0 + add r1, r4, #1 + mov r2, #7 + bl FUN_0202A07C + str r0, [sp] +_02243B26: + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #1 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202A578 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202A150 + ldr r2, [sp] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202A0A8 + add r0, r6, #0 + mov r1, #0x1d + mov r2, #7 + bl FUN_0202A11C + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #3 + bl FUN_0202A538 + add r0, r6, #0 + mov r1, #0xf + mov r2, #1 + bl FUN_0202A11C + add r0, r6, #0 + mov r1, #0xe + bl FUN_0202A170 + add r0, r5, #0 + bl MOD06_0224403C + ldr r3, [sp] + ldr r1, [sp, #4] + lsl r3, r3, #0x10 + add r0, r5, #0 + mov r2, #1 + lsr r3, r3, #0x10 + bl MOD06_02243984 + ldrb r0, [r5, #0xf] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _02243BA2 + ldr r0, [r5, #4] + bl FUN_02029578 + add r7, #0x98 + add r1, r0, #0 + ldr r0, [r7] + mov r2, #4 + bl FUN_02028AD4 +_02243BA2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02243BA8 +MOD06_02243BA8: ; 0x02243BA8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldrb r1, [r4, #0xf] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #0 + bl FUN_0202A2C4 + ldrb r1, [r4, #0xc] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #1 + bl FUN_0202A2C4 + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #5 + add r2, #0x2a + bl FUN_0202A2C4 + ldrh r1, [r4, #0x28] + ldrh r2, [r4, #0x24] + ldrh r3, [r4, #0x26] + lsl r1, r1, #0x18 + ldr r0, [r4, #0x70] + lsr r1, r1, #0x18 + bl FUN_0202A36C + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #8 + add r2, #0x3e + bl FUN_0202A2C4 + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #0xa + add r2, #8 + bl FUN_0202A2C4 + ldr r0, [r4, #0x70] + mov r1, #1 + bl FUN_0202A3A0 + ldrb r0, [r4, #0xf] + cmp r0, #2 + bne _02243C4E + ldrb r0, [r4, #0x10] + add r2, sp, #0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x1d + add r0, sp, #0 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #9 + bl FUN_0202A2C4 + ldrb r3, [r4, #0x10] + ldr r2, _02243C54 ; =0x000007E8 + ldr r0, [r4, #0x70] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1d + add r2, r4, r2 + lsl r3, r3, #4 + mov r1, #6 + add r2, r2, r3 + bl FUN_0202A2C4 + ldr r2, _02243C58 ; =0x00000838 + ldr r0, [r4, #0x70] + add r3, r4, r2 + ldrb r2, [r4, #0x10] + mov r1, #7 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1d + add r2, r3, r2 + bl FUN_0202A2C4 +_02243C4E: + add sp, #4 + pop {r3, r4, pc} + nop +_02243C54: .word 0x000007E8 +_02243C58: .word 0x00000838 + + thumb_func_start MOD06_02243C5C +MOD06_02243C5C: ; 0x02243C5C + push {r4, r5, r6, lr} + sub sp, #0x18 + add r4, r0, #0 + ldrb r2, [r4, #0xf] + cmp r2, #5 + bhi _02243D16 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02243C74: ; jump table + .short _02243D16 - _02243C74 - 2 ; case 0 + .short _02243D16 - _02243C74 - 2 ; case 1 + .short _02243C96 - _02243C74 - 2 ; case 2 + .short _02243C96 - _02243C74 - 2 ; case 3 + .short _02243C80 - _02243C74 - 2 ; case 4 + .short _02243C80 - _02243C74 - 2 ; case 5 +_02243C80: + ldrb r2, [r4, #0xc] + add r0, r1, #0 + add r1, r4, #0 + sub r2, r2, #1 + lsl r2, r2, #0x18 + add r1, #0x78 + lsr r2, r2, #0x18 + bl MOD06_0224434C + add sp, #0x18 + pop {r4, r5, r6, pc} +_02243C96: + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r1, [r4, #4] + str r1, [sp, #0xc] + ldrb r2, [r4, #0xc] + add r1, r4, #0 + ldrb r3, [r4, #0xe] + sub r2, r2, #1 + lsl r2, r2, #2 + add r2, r4, r2 + ldrh r2, [r2, #0x3e] + add r1, #0x78 + bl MOD06_02244A34 + ldrb r3, [r4, #0xe] + mov r0, #0 + cmp r3, #0 + ble _02243CE8 + add r1, r4, #0 + add r1, #0xa8 + add r2, sp, #0x14 + add r5, r4, #0 + add r6, sp, #0x10 +_02243CC8: + ldrh r3, [r1] + add r0, r0, #1 + add r1, #0x38 + lsl r3, r3, #0x15 + lsr r3, r3, #0x15 + strh r3, [r2] + add r3, r5, #0 + add r3, #0xaa + ldrh r3, [r3] + add r2, r2, #2 + add r5, #0x38 + strh r3, [r6] + ldrb r3, [r4, #0xe] + add r6, r6, #2 + cmp r0, r3 + blt _02243CC8 +_02243CE8: + add r0, sp, #0x14 + str r0, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + mov r1, #0x62 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xc] + lsl r1, r1, #2 + add r0, r4, #0 + sub r2, r2, #1 + lsl r2, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + add r2, r4, r2 + ldrh r2, [r2, #0x3e] + add r1, r4, r1 + bl MOD06_02244A34 + add sp, #0x18 + pop {r4, r5, r6, pc} +_02243D16: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #4] + add r1, r4, #0 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xc] + ldrb r3, [r4, #0xe] + add r0, r4, #0 + sub r2, r2, #1 + lsl r2, r2, #1 + add r2, r4, r2 + ldrh r2, [r2, #0x3e] + add r1, #0x78 + bl MOD06_02244A34 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02243D3C +MOD06_02243D3C: ; 0x02243D3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, _02243D98 ; =0x000007E8 + mov r4, #0 + add r6, r5, r0 + mov r0, #0xa6 + lsl r0, r0, #2 + add r7, r5, r0 + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x2e + str r0, [sp, #0x10] + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x36 + str r0, [sp, #0x14] +_02243D5E: + ldr r0, [sp, #0x10] + mov r2, #0x4b + str r0, [sp] + ldr r0, [sp, #0x14] + lsl r2, r2, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r5, #4] + add r2, r4, r2 + str r0, [sp, #0xc] + lsl r2, r2, #0x10 + ldrb r3, [r5, #0xe] + add r0, r5, #0 + add r1, r7, #0 + lsr r2, r2, #0x10 + bl MOD06_02244A34 + add r2, r5, r4 + ldr r1, _02243D9C ; =0x00000838 + add r4, r4, #1 + strb r0, [r2, r1] + mov r0, #0x11 + lsl r0, r0, #4 + add r6, #0x10 + add r7, r7, r0 + cmp r4, #5 + blt _02243D5E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243D98: .word 0x000007E8 +_02243D9C: .word 0x00000838 + + thumb_func_start MOD06_02243DA0 +MOD06_02243DA0: ; 0x02243DA0 + lsl r2, r1, #4 + add r1, r1, r2 + lsl r1, r1, #4 + add r0, r0, r1 + add r0, #0x7c + ldrh r0, [r0] + ldr r3, _02243DB4 ; =MOD06_022442C4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx r3 + .align 2, 0 +_02243DB4: .word MOD06_022442C4 + + thumb_func_start MOD06_02243DB8 +MOD06_02243DB8: ; 0x02243DB8 + ldr r3, _02243DBC ; =0x02046949 + bx r3 + .align 2, 0 +_02243DBC: .word 0x02046949 + + thumb_func_start MOD06_02243DC0 +MOD06_02243DC0: ; 0x02243DC0 + ldrb r0, [r0, #0xf] + bx lr + + thumb_func_start MOD06_02243DC4 +MOD06_02243DC4: ; 0x02243DC4 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1e + ldrb r3, [r0, #0x10] + mov r2, #6 + lsr r1, r1, #0x1d + bic r3, r2 + orr r1, r3 + strb r1, [r0, #0x10] + bx lr + + thumb_func_start MOD06_02243DD8 +MOD06_02243DD8: ; 0x02243DD8 + ldrb r0, [r0, #0x10] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1e + bx lr + + thumb_func_start MOD06_02243DE0 +MOD06_02243DE0: ; 0x02243DE0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bne _02243DEE + mov r0, #0 + pop {r3, r4, r5, pc} +_02243DEE: + cmp r1, #4 + ldr r0, [r4, #0x74] + bne _02243E00 + mov r1, #0 + bl FUN_0202A444 + ldr r1, _02243E2C ; =0x02250C5C + ldrb r5, [r1, r0] + b _02243E1E +_02243E00: + mov r2, #0 + bl FUN_0202A538 + ldrb r1, [r4, #0x10] + lsl r1, r1, #0x1d + lsr r1, r1, #0x1e + beq _02243E12 + mov r5, #0x14 + b _02243E1E +_02243E12: + cmp r0, #7 + blo _02243E1A + mov r5, #7 + b _02243E1E +_02243E1A: + ldr r1, _02243E30 ; =0x02250C48 + ldrb r5, [r1, r0] +_02243E1E: + ldr r0, [r4, #0x74] + add r1, r5, #0 + mov r2, #5 + bl FUN_0202A3B4 + add r0, r5, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02243E2C: .word 0x02250C5C +_02243E30: .word 0x02250C48 + + thumb_func_start MOD06_02243E34 +MOD06_02243E34: ; 0x02243E34 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + ldrb r1, [r4, #0xf] + bl MOD06_02243408 + cmp r0, #0x32 + bhs _02243E48 + mov r0, #0 + pop {r4, pc} +_02243E48: + cmp r0, #0x64 + ldr r0, [r4, #0x74] + blo _02243E5E + mov r1, #1 + mov r2, #0 + bl FUN_0202A578 + cmp r0, #0 + beq _02243E6E + mov r0, #0 + pop {r4, pc} +_02243E5E: + mov r1, #0 + add r2, r1, #0 + bl FUN_0202A578 + cmp r0, #0 + beq _02243E6E + mov r0, #0 + pop {r4, pc} +_02243E6E: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02243E74 +MOD06_02243E74: ; 0x02243E74 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, r1, #0 + add r5, r2, #0 + bl FUN_0202A8D8 + add r4, r0, #0 + cmp r5, #0 + beq _02243E90 + cmp r5, #1 + beq _02243E98 + cmp r5, #2 + beq _02243ECC + b _02243F10 +_02243E90: + mov r1, #0 + bl FUN_0202A444 + pop {r4, r5, r6, pc} +_02243E98: + mov r1, #4 + mov r2, #2 + bl FUN_0202A578 + add r0, r4, #0 + mov r1, #0 + bl FUN_0202A444 + add r5, r0, #0 + cmp r5, #0xa + bne _02243EB2 + mov r0, #0 + pop {r4, r5, r6, pc} +_02243EB2: + add r0, r4, #0 + mov r1, #3 + bl FUN_0202A444 + add r0, r5, #1 + cmp r0, #5 + blt _02243EC8 + ldrb r1, [r6, #0x10] + mov r0, #0x10 + orr r0, r1 + strb r0, [r6, #0x10] +_02243EC8: + mov r0, #1 + pop {r4, r5, r6, pc} +_02243ECC: + mov r1, #3 + bl FUN_0202A40C + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0 + bl FUN_0202A444 + cmp r0, #1 + bne _02243EE4 + mov r0, #0 + pop {r4, r5, r6, pc} +_02243EE4: + sub r1, r0, #1 + ldr r0, _02243F14 ; =0x02250C50 + ldrb r0, [r0, r1] + cmp r5, r0 + blo _02243F0C + add r0, r4, #0 + mov r1, #4 + bl FUN_0202A444 + add r0, r4, #0 + mov r1, #2 + bl FUN_0202A40C + add r0, r4, #0 + mov r1, #4 + mov r2, #2 + bl FUN_0202A578 + mov r0, #1 + pop {r4, r5, r6, pc} +_02243F0C: + mov r0, #0 + pop {r4, r5, r6, pc} +_02243F10: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02243F14: .word 0x02250C50 + + thumb_func_start MOD06_02243F18 +MOD06_02243F18: ; 0x02243F18 + push {r3, lr} + add r2, r0, #0 + ldrb r0, [r2, #0xf] + cmp r0, #0 + beq _02243F26 + mov r0, #0 + pop {r3, pc} +_02243F26: + ldrb r0, [r2, #0x10] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1e + cmp r0, #1 + beq _02243F36 + cmp r0, #2 + beq _02243F40 + b _02243F4A +_02243F36: + add r0, r1, #0 + mov r1, #0x1a + bl MOD06_02243FDC + pop {r3, pc} +_02243F40: + add r0, r1, #0 + mov r1, #0x1b + bl MOD06_02243FDC + pop {r3, pc} +_02243F4A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02243F50 +MOD06_02243F50: ; 0x02243F50 + push {r4, lr} + add r2, r0, #0 + ldrb r0, [r2, #0xf] + cmp r0, #5 + bne _02243F5E + mov r0, #0 + pop {r4, pc} +_02243F5E: + ldrb r4, [r2, #0x10] + lsl r4, r4, #0x1b + lsr r4, r4, #0x1f + bne _02243F6A + mov r0, #0 + pop {r4, pc} +_02243F6A: + cmp r0, #4 + bhi _02243F92 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243F7A: ; jump table + .short _02243F92 - _02243F7A - 2 ; case 0 + .short _02243F84 - _02243F7A - 2 ; case 1 + .short _02243F88 - _02243F7A - 2 ; case 2 + .short _02243F8C - _02243F7A - 2 ; case 3 + .short _02243F90 - _02243F7A - 2 ; case 4 +_02243F84: + mov r3, #0x1c + b _02243F92 +_02243F88: + mov r3, #0x1d + b _02243F92 +_02243F8C: + mov r3, #0x1e + b _02243F92 +_02243F90: + mov r3, #0x1f +_02243F92: + add r0, r1, #0 + add r1, r3, #0 + bl MOD06_02243FDC + pop {r4, pc} + + thumb_func_start MOD06_02243F9C +MOD06_02243F9C: ; 0x02243F9C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #0 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _02243FC0 + add r0, r4, #0 + bl FUN_020600A0 + b _02243FC6 +_02243FC0: + add r0, r4, #0 + bl FUN_020600DC +_02243FC6: + str r0, [r5, #8] + ldr r0, [r5, #8] + ldr r1, _02243FD8 ; =0x0000FFFF + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} + nop +_02243FD8: .word 0x0000FFFF + + thumb_func_start MOD06_02243FDC +MOD06_02243FDC: ; 0x02243FDC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + add r5, r2, #0 + mov r2, #1 + add r1, sp, #8 + strb r2, [r1] + bl FUN_0206BB1C + str r0, [sp] + mov r7, #0 + ldrb r0, [r5, #0xe] + add r4, r7, #0 + cmp r0, #0 + ble _0224402C +_02243FFA: + add r1, r5, r4 + add r1, #0x2a + ldrb r1, [r1] + ldr r0, [sp] + bl FUN_0206B9B0 + add r1, r6, #0 + mov r2, #0 + str r0, [sp, #4] + bl FUN_020671BC + cmp r0, #0 + bne _02244024 + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, sp, #8 + bl FUN_02067830 + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_02244024: + ldrb r0, [r5, #0xe] + add r4, r4, #1 + cmp r4, r0 + blt _02243FFA +_0224402C: + cmp r7, #0 + bne _02244036 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02244036: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224403C +MOD06_0224403C: ; 0x0224403C + ldrb r1, [r0, #0xf] + cmp r1, #5 + beq _0224404A + cmp r1, #0 + beq _0224404A + cmp r1, #4 + bne _0224404E +_0224404A: + mov r0, #0 + bx lr +_0224404E: + ldrh r2, [r0, #0x1a] + ldrb r1, [r0, #0xd] + add r1, r2, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, #0x32 + bhs _02244060 + mov r0, #0 + bx lr +_02244060: + ldrb r2, [r0, #0x10] + mov r1, #0x10 + orr r1, r2 + strb r1, [r0, #0x10] + mov r0, #1 + bx lr + + thumb_func_start MOD06_0224406C +MOD06_0224406C: ; 0x0224406C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp] + lsl r0, r0, #0x10 + ldrh r1, [r1] + ldr r2, _02244188 ; =0xFFFFF800 + lsr r3, r0, #0x10 + lsr r0, r2, #0x15 + and r1, r2 + and r0, r3 + orr r1, r0 + ldr r0, [sp] + mov r2, #0 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x70 + bl FUN_020671BC + ldr r1, [sp] + lsl r0, r0, #0x10 + ldrh r2, [r1] + ldr r1, _0224418C ; =0xFFFF07FF + lsr r0, r0, #0x10 + lsl r0, r0, #0x1b + and r1, r2 + lsr r0, r0, #0x10 + orr r1, r0 + ldr r0, [sp] + mov r2, #0 + strh r1, [r0] + add r0, r5, #0 + mov r1, #6 + bl FUN_020671BC + ldr r1, [sp] + mov r4, #0 + strh r0, [r1, #2] + add r0, r1, #0 + str r0, [sp, #4] + add r0, #0x1e + add r6, r1, #0 + add r7, r4, #0 + str r0, [sp, #4] +_022440D0: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + strh r0, [r6, #4] + add r0, r5, #0 + add r1, #0x3e + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #4] + lsl r0, r7 + ldrb r1, [r1] + add r4, r4, #1 + add r6, r6, #2 + orr r1, r0 + ldr r0, [sp, #4] + add r7, r7, #2 + strb r1, [r0] + cmp r4, #4 + blt _022440D0 + add r0, r5, #0 + mov r1, #0xc + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp] + mov r2, #0 + strb r0, [r1, #0x1f] + add r0, r5, #0 + mov r1, #7 + bl FUN_020671BC + ldr r1, [sp] + str r0, [r1, #0xc] + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_020671BC + ldr r1, [sp] + mov r2, #0 + str r0, [r1, #0x10] + add r0, r5, #0 + mov r1, #0xae + bl FUN_020671BC + ldr r1, [sp] + mov r4, #0 + str r0, [r1, #0x14] + add r6, r4, #0 +_0224413C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0xd + add r2, r6, #0 + bl FUN_020671BC + ldr r1, [sp] + add r1, r1, r4 + add r4, r4, #1 + strb r0, [r1, #0x18] + cmp r4, #6 + blt _0224413C + add r0, r5, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp] + mov r2, #0 + add r1, #0x20 + strb r0, [r1] + add r0, r5, #0 + mov r1, #9 + bl FUN_020671BC + ldr r1, [sp] + ldr r2, [sp] + add r1, #0x21 + strb r0, [r1] + add r2, #0x22 + add r0, r5, #0 + mov r1, #0x74 + str r2, [sp] + bl FUN_020671BC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244188: .word 0xFFFFF800 +_0224418C: .word 0xFFFF07FF + + thumb_func_start MOD06_02244190 +MOD06_02244190: ; 0x02244190 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #4] + add r4, r1, #0 + mov r1, #0xa8 + str r2, [sp] + bl FUN_020169D8 + mov r1, #0 + mov r2, #0xa8 + str r0, [sp, #4] + bl MI_CpuFill8 + add r0, r4, #0 + bl FUN_0206BB1C + ldr r5, [sp, #4] + add r7, r0, #0 + mov r4, #0 +_022441B8: + add r1, r6, r4 + add r1, #0x2a + ldrb r1, [r1] + add r0, r7, #0 + bl FUN_0206B9B0 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_0224406C + add r4, r4, #1 + add r5, #0x38 + cmp r4, #3 + blt _022441B8 + ldr r0, [r6, #0x74] + ldr r1, [sp] + ldr r2, [sp, #4] + bl FUN_0202A474 + ldr r0, [sp, #4] + mov r1, #0 + mov r2, #0xa8 + bl MI_CpuFill8 + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022441F4 +MOD06_022441F4: ; 0x022441F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02060064 + ldr r1, _0224420C ; =0x0000FFFF + str r0, [r4, #8] + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} + .align 2, 0 +_0224420C: .word 0x0000FFFF + + thumb_func_start MOD06_02244210 +MOD06_02244210: ; 0x02244210 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r0, #0 + add r7, r1, #0 + str r2, [sp, #8] + mov r0, #0xe + mov r1, #4 + str r3, [sp, #0xc] + ldr r5, [sp, #0x38] + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #2 + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x1c] + add r0, r4, #0 + bl FUN_02024DA0 + str r0, [sp, #0x18] + ldr r2, _022442C0 ; =0x0000016A + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x10] + mov r0, #0x13 + mov r1, #0xe + mov r2, #4 + bl FUN_0200AA90 + mov r1, #0 + str r1, [sp] + mov r3, #1 + add r2, r7, #0 + str r0, [sp, #0x14] + str r3, [sp, #4] + bl FUN_0200AD38 + mov r4, #0 +_02244264: + add r0, r4, #0 + bl FUN_0206A984 + add r7, r0, #0 + ldr r0, [sp, #0x18] + add r1, r7, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _0224429E + ldr r0, [sp, #0x10] + add r1, r7, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0xc] + add r2, r6, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldrb r1, [r5] + ldr r0, [sp, #0x14] + ldr r3, [sp, #8] + add r1, r1, #1 + bl FUN_0200ABB4 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_0224429E: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x12 + blo _02244264 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022442C0: .word 0x0000016A + + thumb_func_start MOD06_022442C4 +MOD06_022442C4: ; 0x022442C4 + ldr r3, _022442E4 ; =0x02250CDA + mov r2, #0 +_022442C8: + ldrh r1, [r3] + cmp r0, r1 + bne _022442D6 + ldr r0, _022442E8 ; =0x02250CDC + lsl r1, r2, #2 + ldrh r0, [r0, r1] + bx lr +_022442D6: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #0x3f + blo _022442C8 + mov r0, #3 + bx lr + nop +_022442E4: .word 0x02250CDA +_022442E8: .word 0x02250CDC + + thumb_func_start MOD06_022442EC +MOD06_022442EC: ; 0x022442EC + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x11 + add r4, r1, #0 + mov r1, #0 + lsl r2, r2, #4 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #6 + mul r0, r4 + ldr r1, _02244340 ; =0x02250CB0 + str r0, [sp] + add r6, r1, r0 + ldr r1, _02244344 ; =0x02250DD8 + mov r2, #0x30 + add r0, r4, #0 + mul r0, r2 + add r0, r1, r0 + add r1, r5, #0 + ldr r7, _02244348 ; =0x02250F28 + bl MI_CpuCopy8 + ldr r1, _02244340 ; =0x02250CB0 + ldr r0, [sp] + mov r4, #0 + ldrh r0, [r1, r0] + strh r0, [r5, #6] + add r5, #0x30 +_02244324: + add r0, r6, r4 + ldrb r1, [r0, #2] + mov r0, #0x38 + mov r2, #0x38 + mul r0, r1 + add r0, r7, r0 + add r1, r5, #0 + bl MI_CpuCopy8 + add r4, r4, #1 + add r5, #0x38 + cmp r4, #4 + blt _02244324 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244340: .word 0x02250CB0 +_02244344: .word 0x02250DD8 +_02244348: .word 0x02250F28 + + thumb_func_start MOD06_0224434C +MOD06_0224434C: ; 0x0224434C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r2, #0x11 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + add r0, r6, #0 + bl FUN_0202A8E4 + add r6, r0, #0 + bl FUN_0202A744 + cmp r0, #0 + bne _0224437A + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_022442EC + pop {r4, r5, r6, pc} +_0224437A: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl FUN_0202A798 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02244388 +MOD06_02244388: ; 0x02244388 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02066978 + ldr r0, [r6, #0x10] + ldr r3, _02244520 ; =0x3FFFFFFF + str r0, [sp] + ldrh r1, [r6] + ldr r4, [r6, #0x14] + add r0, r5, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x15 + mov r2, #0x32 + and r3, r4 + bl FUN_02066EA4 + ldrh r0, [r6] + add r2, sp, #8 + add r2, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x1b + add r0, sp, #8 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x70 + bl FUN_02067830 + add r0, r5, #0 + mov r1, #6 + add r2, r6, #2 + bl FUN_02067830 + mov r4, #0 + str r6, [sp, #4] + add r7, r4, #0 +_022443D4: + ldr r0, [sp, #4] + add r2, sp, #8 + ldrh r1, [r0, #4] + add r0, sp, #8 + add r2, #2 + strh r1, [r0, #2] + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + bl FUN_02067830 + ldrb r0, [r6, #0x1e] + add r2, sp, #8 + add r2, #1 + add r1, r0, #0 + asr r1, r7 + mov r0, #3 + and r1, r0 + add r0, sp, #8 + strb r1, [r0, #1] + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3e + bl FUN_02067830 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #8 + strb r0, [r1] + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3a + add r2, sp, #8 + bl FUN_02067830 + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, r0, #2 + add r7, r7, #2 + str r0, [sp, #4] + cmp r4, #4 + blt _022443D4 + ldr r0, [r6, #0xc] + mov r1, #7 + str r0, [sp, #0xc] + add r0, r5, #0 + add r2, sp, #0xc + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x18] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0xd + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x19] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0xe + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1a] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0xf + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1b] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x10 + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1c] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x11 + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1d] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x12 + bl FUN_02067830 + add r2, r6, #0 + add r0, r5, #0 + mov r1, #0xa + add r2, #0x20 + bl FUN_02067830 + add r2, r6, #0 + add r0, r5, #0 + mov r1, #9 + add r2, #0x21 + bl FUN_02067830 + ldr r0, [r6, #0x14] + lsl r0, r0, #1 + lsr r0, r0, #0x1f + beq _022444FC + ldr r2, _02244524 ; =0x0000016A + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + ldrh r1, [r6] + add r4, r0, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x15 + bl FUN_0200A914 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x76 + add r2, r7, #0 + bl FUN_02067830 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + b _02244508 +_022444FC: + add r2, r6, #0 + add r0, r5, #0 + mov r1, #0x74 + add r2, #0x22 + bl FUN_02067830 +_02244508: + add r6, #0x1f + add r0, r5, #0 + mov r1, #0xc + add r2, r6, #0 + bl FUN_02067830 + add r0, r5, #0 + bl FUN_02066ED8 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244520: .word 0x3FFFFFFF +_02244524: .word 0x0000016A + + thumb_func_start MOD06_02244528 +MOD06_02244528: ; 0x02244528 + cmp r0, #4 + bhi _02244552 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02244538: ; jump table + .short _02244542 - _02244538 - 2 ; case 0 + .short _02244546 - _02244538 - 2 ; case 1 + .short _0224454A - _02244538 - 2 ; case 2 + .short _0224454E - _02244538 - 2 ; case 3 + .short _02244542 - _02244538 - 2 ; case 4 +_02244542: + mov r0, #0x81 + bx lr +_02244546: + mov r0, #0x83 + bx lr +_0224454A: + mov r0, #0xcb + bx lr +_0224454E: + mov r0, #0x8f + bx lr +_02244552: + mov r0, #0x81 + bx lr + .align 2, 0 + + thumb_func_start MOD06_02244558 +MOD06_02244558: ; 0x02244558 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldrb r0, [r5, #0xf] + add r4, r1, #0 + bl MOD06_02244528 + add r1, r0, #0 + ldr r0, [r5, #4] + bl FUN_020476CC + add r7, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + str r0, [sp, #4] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02047A78 + mov r0, #0x15 + mov r1, #6 + lsl r0, r0, #4 + str r1, [r7, r0] + mov r1, #9 + add r0, r0, #4 + str r1, [r7, r0] + ldr r0, [r5, #4] + bl FUN_020669C0 + add r4, r0, #0 + ldrb r1, [r5, #0xe] + ldr r0, [r7, #4] + bl FUN_0206B8CC + ldrb r0, [r5, #0xe] + mov r6, #0 + cmp r0, #0 + ble _022445FA +_022445A6: + add r1, r5, r6 + add r1, #0x2a + ldrb r1, [r1] + ldr r0, [sp, #4] + bl FUN_0206B9B0 + add r1, r4, #0 + bl FUN_02069B88 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0x32 + bls _022445E8 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x32 + bl FUN_02068758 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #8 + add r2, sp, #8 + bl FUN_02067830 + add r0, r4, #0 + bl FUN_02066ED8 +_022445E8: + add r0, r7, #0 + add r1, r4, #0 + mov r2, #0 + bl FUN_020479FC + ldrb r0, [r5, #0xe] + add r6, r6, #1 + cmp r6, r0 + blt _022445A6 +_022445FA: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_020480E4 + ldr r0, [r5, #4] + add r1, r5, #0 + str r0, [sp] + ldrb r2, [r5, #0xe] + add r0, r7, #0 + add r1, #0x78 + mov r3, #1 + bl MOD06_02244D04 + ldrb r0, [r5, #0xf] + cmp r0, #2 + beq _02244624 + cmp r0, #3 + beq _02244646 + b _0224465A +_02244624: + ldr r0, [r5, #4] + mov r1, #0xa6 + str r0, [sp] + ldrb r2, [r5, #0x10] + lsl r1, r1, #2 + add r1, r5, r1 + lsl r2, r2, #0x18 + lsr r3, r2, #0x1d + lsl r2, r3, #4 + add r2, r3, r2 + lsl r2, r2, #4 + add r1, r1, r2 + ldrb r2, [r5, #0xe] + add r0, r7, #0 + mov r3, #2 + bl MOD06_02244D04 +_02244646: + ldr r0, [r5, #4] + mov r1, #0x62 + str r0, [sp] + ldrb r2, [r5, #0xe] + lsl r1, r1, #2 + add r0, r7, #0 + add r1, r5, r1 + mov r3, #3 + bl MOD06_02244D04 +_0224465A: + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02244660 +MOD06_02244660: ; 0x02244660 + push {r3, r4} + add r0, #0xa8 + ldr r3, [r0] + ldrh r0, [r1] + mov r2, #0 + strb r0, [r3, #0x12] + ldrh r0, [r1, #2] + strh r0, [r3, #0x16] + ldrh r0, [r1, #4] + strh r0, [r3, #0x18] + ldrh r0, [r1, #6] + mov r1, #0xe0 + strh r0, [r3, #0x14] + ldrb r0, [r3, #0x10] + bic r0, r1 + ldrb r1, [r3, #0x12] + add r1, r1, #5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1d + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r3, #0x10] + ldrh r4, [r3, #0x16] + ldrh r1, [r3, #0x2e] + cmp r1, r4 + beq _0224469C + ldrh r0, [r3, #0x18] + cmp r1, r0 + bne _022446A2 +_0224469C: + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_022446A2: + ldrh r1, [r3, #0x30] + cmp r1, r4 + beq _022446AE + ldrh r0, [r3, #0x18] + cmp r1, r0 + bne _022446B4 +_022446AE: + add r0, r2, #2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_022446B4: + add r0, r2, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_022446BC +MOD06_022446BC: ; 0x022446BC + push {r3, r4, r5, lr} + add r0, #0xa8 + add r5, r1, #0 + ldr r4, [r0] + bl FUN_02031190 + cmp r0, #0 + bne _022446D0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022446D0: + add r4, #0x3e + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + bl MI_CpuCopy8 + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022446E0 +MOD06_022446E0: ; 0x022446E0 + add r0, #0xa8 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bne _022446F2 + ldrh r0, [r1] + cmp r0, #0 + beq _022446F6 +_022446F2: + mov r0, #1 + bx lr +_022446F6: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_022446FC +MOD06_022446FC: ; 0x022446FC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_020238F4 + bl FUN_020239CC + ldr r1, _02244750 ; =0x0000083E + strh r0, [r6, r1] + add r0, r4, #0 + bl FUN_0206BB1C + add r7, r0, #0 + mov r4, #0 + add r5, r6, #0 +_0224471C: + add r1, r6, r4 + add r1, #0x2a + ldrb r1, [r1] + add r0, r7, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x21 + lsl r1, r1, #6 + strh r0, [r5, r1] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #2 + blt _0224471C + ldr r0, [r6, #0x74] + mov r1, #3 + mov r2, #0 + bl FUN_0202A538 + ldr r1, _02244754 ; =0x00000844 + strh r0, [r6, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02244750: .word 0x0000083E +_02244754: .word 0x00000844 + + thumb_func_start MOD06_02244758 +MOD06_02244758: ; 0x02244758 + ldr r1, _02244768 ; =0x0000083E + add r2, r0, #0 + add r1, r2, r1 + ldr r3, _0224476C ; =0x020CE3E0 + add r0, #0x3e + mov r2, #0x1c + bx r3 + nop +_02244768: .word 0x0000083E +_0224476C: .word 0x020CE3E0 + + thumb_func_start MOD06_02244770 +MOD06_02244770: ; 0x02244770 + ldrb r3, [r0, #0x10] + mov r2, #8 + bic r3, r2 + lsl r2, r1, #0x18 + lsr r2, r2, #0x18 + lsl r2, r2, #0x1f + lsr r2, r2, #0x1c + orr r2, r3 + strb r2, [r0, #0x10] + ldr r2, _02244788 ; =0x0000083E + strh r1, [r0, r2] + bx lr + .align 2, 0 +_02244788: .word 0x0000083E + + thumb_func_start MOD06_0224478C +MOD06_0224478C: ; 0x0224478C + push {r3, r4, r5, lr} + cmp r3, #0 + bne _022447AA + cmp r1, #2 + bne _0224479E + cmp r2, #6 + bne _0224479E + ldr r0, _02244808 ; =0x00000131 + pop {r3, r4, r5, pc} +_0224479E: + cmp r1, #6 + bne _022447AA + cmp r2, #6 + bne _022447AA + ldr r0, _0224480C ; =0x00000132 + pop {r3, r4, r5, pc} +_022447AA: + cmp r1, #7 + bhs _022447F6 + cmp r2, #6 + bne _022447D4 + lsl r5, r1, #2 + ldr r1, _02244810 ; =0x02250C90 + ldrh r4, [r1, r5] + bl MOD06_022441F4 + ldr r1, _02244814 ; =0x02250C92 + ldrh r1, [r1, r5] + sub r1, r1, r4 + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl _s32_div_f + add r0, r4, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} +_022447D4: + lsl r4, r1, #2 + ldr r1, _02244818 ; =0x02250C70 + ldrh r5, [r1, r4] + bl MOD06_022441F4 + ldr r1, _0224481C ; =0x02250C72 + ldrh r1, [r1, r4] + sub r1, r1, r5 + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl _s32_div_f + add r0, r5, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} +_022447F6: + bl MOD06_022441F4 + mov r1, #0x64 + bl _s32_div_f + add r1, #0xc8 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02244808: .word 0x00000131 +_0224480C: .word 0x00000132 +_02244810: .word 0x02250C90 +_02244814: .word 0x02250C92 +_02244818: .word 0x02250C70 +_0224481C: .word 0x02250C72 + + thumb_func_start MOD06_02244820 +MOD06_02244820: ; 0x02244820 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0x10 + add r3, r6, #0 + bl FUN_0200A86C + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD06_02244CE8 + add r6, r0, #0 + ldr r0, _02244874 ; =0x0000FFFF + str r4, [r5] + strh r0, [r5, #0x18] + lsl r0, r4, #1 + add r0, r4, r0 + strh r0, [r5, #0x1a] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r5, #4] + add r0, r7, #0 + bl FUN_0200A914 + add r5, #8 + add r4, r0, #0 + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244874: .word 0x0000FFFF + + thumb_func_start MOD06_02244878 +MOD06_02244878: ; 0x02244878 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r4, r0, #0 + add r6, r2, #0 + add r0, r5, #0 + mov r1, #0 + mov r2, #0x38 + str r3, [sp] + bl MI_CpuFill8 + add r0, sp, #8 + add r1, r6, #0 + bl MOD06_02244CF8 + ldrh r0, [r5] + ldr r3, _02244A10 ; =0xFFFFF800 + add r2, r0, #0 + add r0, sp, #8 + and r2, r3 + ldrh r1, [r0] + lsr r3, r3, #0x15 + and r1, r3 + orr r1, r2 + strh r1, [r5] + ldr r1, [sp, #0x3c] + cmp r1, #0 + beq _022448BC + add r0, sp, #0x20 + ldrb r0, [r0, #0x18] + lsl r1, r0, #1 + ldr r0, _02244A14 ; =0x02250C68 + ldrh r0, [r0, r1] + b _022448BE +_022448BC: + ldrh r0, [r0, #0xc] +_022448BE: + strh r0, [r5, #2] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + add r1, sp, #8 + add r2, r5, #0 + add r6, r0, #0 +_022448CC: + ldrh r3, [r1, #2] + strh r3, [r2, #4] + ldrh r3, [r1, #2] + cmp r3, #0xda + bne _022448D8 + str r6, [sp, #4] +_022448D8: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _022448CC + ldr r0, [sp] + str r0, [r5, #0xc] + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _0224491E +_022448EC: + add r0, r4, #0 + bl MOD06_022441F4 + add r6, r0, #0 + add r0, r4, #0 + bl MOD06_022441F4 + lsl r0, r0, #0x10 + add r7, r6, #0 + orr r7, r0 + add r0, r7, #0 + bl FUN_02068884 + add r1, sp, #8 + ldrb r1, [r1, #0xb] + cmp r1, r0 + beq _0224491A + ldr r0, [sp] + add r1, r7, #0 + bl FUN_02068AAC + cmp r0, #1 + beq _022448EC +_0224491A: + str r7, [r5, #0x10] + b _02244920 +_0224491E: + str r0, [r5, #0x10] +_02244920: + add r0, sp, #0x20 + ldrb r1, [r0, #0x14] + ldr r2, [r5, #0x14] + mov r0, #0x1f + bic r2, r0 + mov r0, #0x1f + and r0, r1 + orr r2, r0 + ldr r0, _02244A18 ; =0xFFFFFC1F + mov r6, #0 + and r2, r0 + lsl r0, r1, #0x1b + lsr r1, r0, #0x16 + orr r2, r1 + ldr r1, _02244A1C ; =0xFFFF83FF + add r4, r6, #0 + and r2, r1 + lsr r1, r0, #0x11 + orr r2, r1 + ldr r1, _02244A20 ; =0xFFF07FFF + and r2, r1 + lsr r1, r0, #0xc + orr r2, r1 + ldr r1, _02244A24 ; =0xFE0FFFFF + and r2, r1 + lsr r1, r0, #7 + orr r2, r1 + ldr r1, _02244A28 ; =0xC1FFFFFF + lsr r0, r0, #2 + and r1, r2 + orr r0, r1 + str r0, [r5, #0x14] +_02244960: + add r0, r4, #0 + bl FUN_0206A92C + add r1, sp, #8 + ldrb r1, [r1, #0xa] + tst r0, r1 + beq _02244970 + add r6, r6, #1 +_02244970: + add r4, r4, #1 + cmp r4, #6 + blt _02244960 + ldr r0, _02244A2C ; =0x000001FE + add r1, r6, #0 + bl _s32_div_f + cmp r0, #0xff + ble _02244984 + mov r0, #0xff +_02244984: + lsl r0, r0, #0x18 + mov r4, #0 + lsr r6, r0, #0x18 +_0224498A: + add r0, r4, #0 + bl FUN_0206A92C + add r1, sp, #8 + ldrb r1, [r1, #0xa] + tst r0, r1 + beq _0224499C + add r0, r5, r4 + strb r6, [r0, #0x18] +_0224499C: + add r4, r4, #1 + cmp r4, #6 + blt _0224498A + mov r0, #0 + strb r0, [r5, #0x1e] + ldr r0, _02244A30 ; =0x020ECAC4 + mov r1, #0x19 + ldrb r0, [r0] + strb r0, [r5, #0x1f] + ldrh r0, [r5] + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + bl FUN_02068678 + cmp r0, #0 + beq _022449E0 + ldr r2, [r5, #0x10] + mov r1, #1 + tst r1, r2 + beq _022449CC + add r1, r5, #0 + add r1, #0x20 + strb r0, [r1] + b _022449F2 +_022449CC: + ldrh r0, [r5] + mov r1, #0x18 + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + bl FUN_02068678 + add r1, r5, #0 + add r1, #0x20 + strb r0, [r1] + b _022449F2 +_022449E0: + ldrh r0, [r5] + mov r1, #0x18 + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + bl FUN_02068678 + add r1, r5, #0 + add r1, #0x20 + strb r0, [r1] +_022449F2: + add r1, r5, #0 + ldr r0, [sp, #4] + add r1, #0x21 + strb r0, [r1] + ldrh r0, [r5] + add r5, #0x22 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + add r2, r5, #0 + bl FUN_0200A99C + add r0, r7, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244A10: .word 0xFFFFF800 +_02244A14: .word 0x02250C68 +_02244A18: .word 0xFFFFFC1F +_02244A1C: .word 0xFFFF83FF +_02244A20: .word 0xFFF07FFF +_02244A24: .word 0xFE0FFFFF +_02244A28: .word 0xC1FFFFFF +_02244A2C: .word 0x000001FE +_02244A30: .word 0x020ECAC4 + + thumb_func_start MOD06_02244A34 +MOD06_02244A34: ; 0x02244A34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #0x14] + ldr r2, [sp, #0x3c] + add r6, r3, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02244820 + add r7, r0, #0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x30] + add r5, #0x30 + str r0, [sp, #4] + ldr r0, [sp, #0x34] + add r1, r7, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + add r2, r4, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + add r3, r5, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + bl MOD06_02244AEC + add r4, r0, #0 + add r0, r7, #0 + bl FUN_02016A18 + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244A80 +MOD06_02244A80: ; 0x02244A80 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x14] + ldr r0, [sp, #0x38] + add r5, r1, #0 + str r0, [sp, #0x38] + ldr r0, [sp, #0x3c] + add r4, r2, #0 + str r0, [sp, #0x3c] + ldr r2, [sp, #0x3c] + add r0, r5, #0 + add r1, r4, #0 + str r3, [sp, #0x18] + bl MOD06_02244820 + str r0, [sp, #0x1c] + add r0, r4, #0 + bl MOD06_02244CAC + ldr r6, [sp, #0x38] + str r0, [sp, #0x20] + mov r7, #0 + add r4, r6, #0 + add r5, #0x30 +_02244AB0: + ldr r0, [r6, #8] + ldr r3, [sp, #0x38] + str r0, [sp] + ldr r0, [sp, #0x20] + add r1, r5, #0 + str r0, [sp, #4] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x10] + ldrh r2, [r4, #4] + ldr r0, [sp, #0x14] + ldr r3, [r3] + bl MOD06_02244878 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #2 + add r5, #0x38 + cmp r7, #2 + blt _02244AB0 + ldr r0, [sp, #0x1c] + bl FUN_02016A18 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244AEC +MOD06_02244AEC: ; 0x02244AEC + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + str r0, [sp, #0x14] + ldr r0, [sp, #0x94] + str r2, [sp, #0x1c] + str r0, [sp, #0x94] + ldr r0, [sp, #0x98] + str r1, [sp, #0x18] + str r0, [sp, #0x98] + ldr r0, [sp, #0x9c] + str r3, [sp, #0x20] + str r0, [sp, #0x9c] + ldr r0, [sp, #0xa0] + str r0, [sp, #0xa0] + mov r0, #0 + str r0, [sp, #0x28] + add r0, sp, #0x80 + ldrb r0, [r0, #0x10] + cmp r0, #4 + bls _02244B18 + bl ErrorHandling +_02244B18: + add r0, sp, #0x80 + ldrb r6, [r0, #0x10] + mov r4, #0 + str r4, [sp, #0x2c] + cmp r6, #0 + beq _02244C0A + add r0, sp, #0x6c + str r0, [sp, #0x24] +_02244B28: + ldr r0, [sp, #0x14] + bl MOD06_022441F4 + ldr r1, [sp, #0x18] + ldrh r1, [r1, #2] + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r1, r0, #0x17 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r0, [r0, #4] + str r0, [sp, #0x30] + ldr r1, [sp, #0x30] + add r0, sp, #0x3c + bl MOD06_02244CF8 + mov r7, #0 + cmp r4, #0 + ble _02244B6C + add r5, sp, #0x6c +_02244B52: + ldr r1, [r5] + add r0, sp, #0x4c + bl MOD06_02244CF8 + add r0, sp, #0x3c + ldrh r1, [r0, #0x10] + ldrh r0, [r0] + cmp r1, r0 + beq _02244B6C + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r4 + blt _02244B52 +_02244B6C: + cmp r7, r4 + bne _02244C06 + ldr r0, [sp, #0x94] + cmp r0, #0 + beq _02244B94 + mov r3, #0 + cmp r6, #0 + ble _02244B90 + add r1, r0, #0 + add r0, sp, #0x3c + ldrh r2, [r0] +_02244B82: + ldrh r0, [r1] + cmp r2, r0 + beq _02244B90 + add r3, r3, #1 + add r1, r1, #2 + cmp r3, r6 + blt _02244B82 +_02244B90: + cmp r3, r6 + bne _02244C06 +_02244B94: + ldr r0, [sp, #0x2c] + cmp r0, #0x32 + bge _02244BFC + mov r7, #0 + cmp r4, #0 + ble _02244BC0 + add r5, sp, #0x6c +_02244BA2: + ldr r1, [r5] + add r0, sp, #0x4c + bl MOD06_02244CF8 + add r0, sp, #0x3c + ldrh r1, [r0, #0x1c] + cmp r1, #0 + beq _02244BB8 + ldrh r0, [r0, #0xc] + cmp r1, r0 + beq _02244BC0 +_02244BB8: + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r4 + blt _02244BA2 +_02244BC0: + cmp r7, r4 + beq _02244BCC + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + b _02244C06 +_02244BCC: + ldr r0, [sp, #0x98] + cmp r0, #0 + beq _02244BFC + mov r3, #0 + cmp r6, #0 + ble _02244BF0 + add r1, r0, #0 + add r0, sp, #0x3c + ldrh r2, [r0, #0xc] +_02244BDE: + ldrh r0, [r1] + cmp r2, r0 + bne _02244BE8 + cmp r0, #0 + bne _02244BF0 +_02244BE8: + add r3, r3, #1 + add r1, r1, #2 + cmp r3, r6 + blt _02244BDE +_02244BF0: + cmp r3, r6 + beq _02244BFC + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + b _02244C06 +_02244BFC: + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x24] + add r4, r4, #1 + stmia r0!, {r1} + str r0, [sp, #0x24] +_02244C06: + cmp r4, r6 + bne _02244B28 +_02244C0A: + ldr r0, [sp, #0x1c] + bl MOD06_02244CAC + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + bl MOD06_022441F4 + add r5, r0, #0 + ldr r0, [sp, #0x14] + bl MOD06_022441F4 + lsl r0, r0, #0x10 + orr r0, r5 + str r0, [sp, #0x34] + ldr r0, [sp, #0x2c] + cmp r0, #0x32 + blt _02244C30 + mov r0, #1 + str r0, [sp, #0x28] +_02244C30: + mov r5, #0 + cmp r4, #0 + ble _02244C70 + add r7, sp, #0x6c + add r6, sp, #0x5c +_02244C3A: + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x20] + str r0, [sp, #4] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x34] + str r0, [sp, #0xc] + ldr r0, [sp, #0xa0] + str r0, [sp, #0x10] + ldr r2, [r7] + ldr r0, [sp, #0x14] + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl MOD06_02244878 + stmia r6!, {r0} + ldr r0, [sp, #0x20] + add r5, r5, #1 + add r0, #0x38 + add r7, r7, #4 + str r0, [sp, #0x20] + cmp r5, r4 + blt _02244C3A +_02244C70: + ldr r0, [sp, #0x9c] + cmp r0, #0 + bne _02244C7C + ldr r0, [sp, #0x28] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} +_02244C7C: + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x9c] + str r1, [r0] + mov r3, #0 + add r0, sp, #0x6c + add r1, sp, #0x5c +_02244C88: + ldr r5, [r0] + ldr r4, [sp, #0x9c] + add r3, r3, #1 + strh r5, [r4, #4] + ldr r4, [r1] + add r0, r0, #4 + str r4, [r2, #8] + ldr r4, [sp, #0x9c] + add r1, r1, #4 + add r4, r4, #2 + add r2, r2, #4 + str r4, [sp, #0x9c] + cmp r3, #2 + blt _02244C88 + ldr r0, [sp, #0x28] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244CAC +MOD06_02244CAC: ; 0x02244CAC + cmp r0, #0x64 + bhs _02244CB4 + mov r0, #3 + bx lr +_02244CB4: + cmp r0, #0x78 + bhs _02244CBC + mov r0, #6 + bx lr +_02244CBC: + cmp r0, #0x8c + bhs _02244CC4 + mov r0, #9 + bx lr +_02244CC4: + cmp r0, #0xa0 + bhs _02244CCC + mov r0, #0xc + bx lr +_02244CCC: + cmp r0, #0xb4 + bhs _02244CD4 + mov r0, #0xf + bx lr +_02244CD4: + cmp r0, #0xc8 + bhs _02244CDC + mov r0, #0x12 + bx lr +_02244CDC: + cmp r0, #0xdc + bhs _02244CE4 + mov r0, #0x15 + bx lr +_02244CE4: + mov r0, #0x1f + bx lr + + thumb_func_start MOD06_02244CE8 +MOD06_02244CE8: ; 0x02244CE8 + add r3, r0, #0 + add r2, r1, #0 + add r1, r3, #0 + ldr r3, _02244CF4 ; =0x0200650D + mov r0, #0x86 + bx r3 + .align 2, 0 +_02244CF4: .word 0x0200650D + + thumb_func_start MOD06_02244CF8 +MOD06_02244CF8: ; 0x02244CF8 + ldr r3, _02244D00 ; =0x020064F1 + add r2, r1, #0 + mov r1, #0x87 + bx r3 + .align 2, 0 +_02244D00: .word 0x020064F1 + + thumb_func_start MOD06_02244D04 +MOD06_02244D04: ; 0x02244D04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r7, r0, #0 + lsl r0, r3, #2 + str r0, [sp, #4] + ldr r1, [r5] + add r0, r7, r0 + str r1, [r0, #0x18] + mov r0, #0x34 + add r4, r3, #0 + mul r4, r0 + add r0, r7, r4 + ldrh r1, [r5, #4] + add r0, #0x29 + str r2, [sp] + strb r1, [r0] + add r0, r7, #0 + add r0, #0x3c + add r1, r5, #0 + add r0, r0, r4 + add r1, #8 + bl StringCopy + add r0, r7, r4 + ldrh r1, [r5, #0x20] + add r0, #0x4c + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x22] + add r0, #0x4e + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x24] + add r0, #0x50 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x26] + add r0, #0x52 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x28] + add r0, #0x54 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x2a] + add r0, #0x56 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x2c] + add r0, #0x58 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x2e] + add r0, #0x5a + strh r1, [r0] + ldr r0, [sp, #0x20] + bl FUN_020669C0 + add r4, r0, #0 + ldr r0, [sp] + mov r6, #0 + cmp r0, #0 + ble _02244DA4 + ldr r0, [sp, #4] + add r5, #0x30 + add r7, r7, r0 +_02244D8A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02244388 + ldr r0, [r7, #4] + add r1, r4, #0 + bl FUN_0206B900 + ldr r0, [sp] + add r6, r6, #1 + add r5, #0x38 + cmp r6, r0 + blt _02244D8A +_02244DA4: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244DB0 +MOD06_02244DB0: ; 0x02244DB0 + ldr r3, _02244DB8 ; =0x020169D9 + mov r1, #0x17 + lsl r1, r1, #4 + bx r3 + .align 2, 0 +_02244DB8: .word 0x020169D9 + + thumb_func_start MOD06_02244DBC +MOD06_02244DBC: ; 0x02244DBC + ldr r3, _02244DC0 ; =0x02016A19 + bx r3 + .align 2, 0 +_02244DC0: .word 0x02016A19 + + thumb_func_start MOD06_02244DC4 +MOD06_02244DC4: ; 0x02244DC4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0x5a + add r4, r1, #0 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r7, r0] + add r0, r4, #0 + mov r1, #0x12 + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02244DEC + cmp r0, #0xfe + beq _02244DF0 + cmp r0, #0xff + beq _02244DF4 + b _02244DF8 +_02244DEC: + mov r2, #0 + b _02244E10 +_02244DF0: + mov r2, #1 + b _02244E10 +_02244DF4: + mov r2, #2 + b _02244E10 +_02244DF8: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _02244E0E + mov r2, #0 + b _02244E10 +_02244E0E: + mov r2, #1 +_02244E10: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r7, #0 + lsl r1, r4, #0x10 + lsl r2, r2, #0x18 + add r0, #0x28 + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_02068C00 + add r1, r7, #0 + mov r0, #1 + add r1, #0x3c + mov r2, #4 + bl FUN_02008C9C + str r0, [r7, #0x38] + mov r0, #0x61 + mov r1, #4 + bl FUN_02006670 + ldr r4, _02244EF4 ; =0x022512E0 + str r0, [sp, #0x10] + mov r6, #0 + add r5, r7, #0 +_02244E48: + ldrb r0, [r4] + add r1, r6, #0 + mov r2, #4 + bl FUN_02008DEC + add r6, r6, #1 + add r4, r4, #1 + stmia r5!, {r0} + cmp r6, #4 + blt _02244E48 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r7] + ldr r1, [sp, #0x10] + mov r2, #5 + bl FUN_020091E0 + str r0, [r7, #0x10] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, [r7, #4] + ldr r1, [sp, #0x10] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r7, #0x14] + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r7, #8] + ldr r1, [sp, #0x10] + mov r2, #6 + mov r3, #0 + bl FUN_02009358 + str r0, [r7, #0x18] + mov r0, #3 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r7, #0xc] + ldr r1, [sp, #0x10] + mov r2, #0xc + mov r3, #0 + bl FUN_02009358 + str r0, [r7, #0x1c] + ldrh r0, [r7, #0x28] + ldrh r1, [r7, #0x2a] + mov r2, #4 + bl FUN_0201244C + str r0, [r7, #0x20] + ldrh r0, [r7, #0x28] + ldrh r1, [r7, #0x2c] + mov r2, #4 + bl FUN_02012470 + str r0, [r7, #0x24] + ldr r0, [r7] + ldr r1, [r7, #4] + ldr r2, [r7, #0x20] + ldr r3, [r7, #0x24] + bl MOD06_02244F84 + ldr r0, [sp, #0x10] + bl FUN_020066F4 + add r0, r7, #0 + bl MOD06_02244FFC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02244EF4: .word 0x022512E0 + + thumb_func_start MOD06_02244EF8 +MOD06_02244EF8: ; 0x02244EF8 + add r1, r0, #0 + mov r0, #0x5a + mov r2, #1 + lsl r0, r0, #2 + str r2, [r1, r0] + ldr r3, _02244F10 ; =0x0200CA45 + mov r2, #0 + add r0, r0, #4 + str r2, [r1, r0] + ldr r0, _02244F14 ; =MOD06_02244F64 + bx r3 + nop +_02244F10: .word 0x0200CA45 +_02244F14: .word MOD06_02244F64 + + thumb_func_start MOD06_02244F18 +MOD06_02244F18: ; 0x02244F18 + mov r1, #0x5a + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02244F24 +MOD06_02244F24: ; 0x02244F24 + mov r1, #0x5b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD06_02244F2C +MOD06_02244F2C: ; 0x02244F2C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_02009C0C + ldr r0, [r5, #0x14] + bl FUN_02009E04 + mov r4, #0 +_02244F3E: + lsl r0, r4, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _02244F3E + ldr r0, [r5, #0x38] + bl FUN_0201FD58 + ldr r0, [r5, #0x20] + bl FUN_02016A18 + ldr r0, [r5, #0x24] + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02244F64 +MOD06_02244F64: ; 0x02244F64 + push {r3, lr} + mov r2, #0x5a + lsl r2, r2, #2 + ldr r3, [r1, r2] + cmp r3, #0 + beq _02244F78 + ldr r0, [r1, #0x38] + bl FUN_0201FDEC + pop {r3, pc} +_02244F78: + mov r3, #1 + add r2, r2, #4 + str r3, [r1, r2] + bl FUN_0200CAB4 + pop {r3, pc} + + thumb_func_start MOD06_02244F84 +MOD06_02244F84: ; 0x02244F84 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_020094F0 + add r5, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl FUN_020094F0 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02009B04 + add r0, r7, #0 + bl FUN_02009D68 + add r0, r5, #0 + bl FUN_02009C5C + add r5, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + bl FUN_02009E54 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl FUN_020B1A14 + str r0, [sp] + add r0, r7, #0 + mov r1, #1 + bl FUN_020B19C4 + mov r1, #0x32 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + ldr r1, [sp] + add r0, r4, #0 + lsl r2, r2, #6 + bl GX_LoadOBJ + add r0, r6, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244FFC +MOD06_02244FFC: ; 0x02244FFC + push {r4, lr} + sub sp, #0x80 + add r4, r0, #0 + mov r0, #3 + str r0, [sp] + sub r0, r0, #4 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r4] + mov r2, #1 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + mov r3, #2 + str r0, [sp, #0x18] + ldr r0, [r4, #8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r0, sp, #0x5c + bl FUN_02008AA4 + ldr r0, [r4, #0x38] + mov r1, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x5c + str r0, [sp, #0x30] + mov r0, #1 + lsl r0, r0, #0xc + str r1, [sp, #0x34] + str r1, [sp, #0x38] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r1, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r0, [sp, #0x58] + lsl r0, r0, #0x11 + str r0, [sp, #0x34] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r1, [sp, #0x50] + bl FUN_0201FE94 + mov r1, #0x59 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020130 + add sp, #0x80 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02245088 +MOD06_02245088: ; 0x02245088 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + bl FUN_02034CE0 + add r4, r0, #0 + mov r0, #0 + add r1, sp, #4 +_02245098: + lsl r2, r0, #3 + add r2, r4, r2 + ldr r3, [r2, #8] + lsl r2, r0, #2 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r3, [r1, r2] + cmp r0, #0xc + blo _02245098 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + mov r1, #1 + bl FUN_0202A990 + add r1, sp, #0x20 + str r1, [sp] + ldr r2, [r5, #0x1c] + add r1, r6, #0 + ldr r2, [r2] + add r3, sp, #0x1c + bl MOD06_02245658 + add r0, r4, #0 + add r1, sp, #0xc + add r2, sp, #0x10 + bl MOD06_0223B944 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0x24 + add r3, sp, #0x28 + bl MOD06_0224CDB8 + bl FUN_0201B9EC + ldr r1, _02245110 ; =0x00001556 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0xc + blo _02245104 + bl ErrorHandling +_02245104: + lsl r1, r4, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02245110: .word 0x00001556 + + thumb_func_start MOD06_02245114 +MOD06_02245114: ; 0x02245114 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + mov r1, #0x34 + bl FUN_020169D8 + add r5, r0, #0 + ldr r0, [sp] + mov r1, #0xb + str r0, [r5, #0x2c] + mov r0, #0x6a + mov r2, #4 + bl FUN_02006528 + add r7, r0, #0 + mov r4, #0 +_02245132: + bl FUN_0201B9EC + ldr r1, _0224518C ; =0x0000071D + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x24 + blo _02245148 + bl ErrorHandling +_02245148: + lsl r0, r6, #0x18 + lsr r2, r0, #0x16 + add r1, r7, r2 + ldrh r2, [r7, r2] + lsl r3, r4, #2 + add r0, r5, r3 + strh r2, [r5, r3] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _02245132 + ldr r0, [sp] + ldr r0, [r0, #0x38] + bl FUN_02055320 + strh r0, [r5, #0x14] + ldr r0, [sp] + ldr r0, [r0, #0x38] + bl FUN_0205532C + strh r0, [r5, #0x16] + ldr r0, [sp] + ldr r0, [r0, #0x1c] + ldr r0, [r0] + str r0, [r5, #0x30] + add r0, r7, #0 + bl FUN_02016A18 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224518C: .word 0x0000071D + + thumb_func_start MOD06_02245190 +MOD06_02245190: ; 0x02245190 + ldr r3, _02245194 ; =0x02016A19 + bx r3 + .align 2, 0 +_02245194: .word 0x02016A19 + + thumb_func_start MOD06_02245198 +MOD06_02245198: ; 0x02245198 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _022451BA + lsl r2, r5, #2 + ldrh r1, [r4, r2] + add r2, r4, r2 + ldrh r2, [r2, #2] + lsl r1, r1, #0xb + mov r0, #0xf0 + lsl r2, r2, #0xb + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_020345FC + b _022451D6 +_022451BA: + cmp r5, #5 + bne _022451C2 + ldr r0, [r4, #0x30] + b _022451D6 +_022451C2: + lsl r2, r5, #2 + ldrh r1, [r4, r2] + add r2, r4, r2 + ldr r0, [r4, #0x2c] + ldrh r2, [r2, #2] + ldr r0, [r0, #0x28] + lsr r1, r1, #5 + lsr r2, r2, #5 + bl FUN_0203451C +_022451D6: + lsl r3, r5, #2 + add r1, r4, r3 + ldrh r2, [r1, #2] + ldrh r1, [r4, r3] + str r0, [r4, #0x18] + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x1c] + str r1, [r4, #0x20] + str r2, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022451F0 +MOD06_022451F0: ; 0x022451F0 + add r0, #0x18 + bx lr + + thumb_func_start MOD06_022451F4 +MOD06_022451F4: ; 0x022451F4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #6 + bl FUN_020254A0 + mov r1, #0x42 + lsl r1, r1, #0x10 + str r1, [sp, #8] + mov r1, #1 + lsl r1, r1, #0x10 + str r1, [sp, #0xc] + ldrh r0, [r0] + cmp r0, #0 + beq _02245224 + cmp r0, #1 + beq _0224522C + cmp r0, #2 + beq _02245234 + b _0224523A +_02245224: + mov r0, #0xa + lsl r0, r0, #0x12 + str r0, [sp, #0x10] + b _0224523A +_0224522C: + mov r0, #0x52 + lsl r0, r0, #0x10 + str r0, [sp, #0x10] + b _0224523A +_02245234: + mov r0, #0x1b + lsl r0, r0, #0x12 + str r0, [sp, #0x10] +_0224523A: + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x4c] + ldr r2, _02245258 ; =0x000001DB + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x2c] + add r3, sp, #8 + bl FUN_021E7FBC + add sp, #0x14 + pop {r3, r4, pc} + nop +_02245258: .word 0x000001DB + + thumb_func_start MOD06_0224525C +MOD06_0224525C: ; 0x0224525C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + str r2, [sp] + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #6 + bl FUN_020254A0 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x14 + bl FUN_020169D8 + add r5, r0, #0 + add r2, r5, #0 + mov r1, #0x14 + mov r0, #0 +_02245284: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02245284 + mov r0, #0 + strb r0, [r5, #5] + ldrh r1, [r4] + cmp r1, #0 + beq _022452A0 + cmp r1, #1 + beq _022452C6 + cmp r1, #2 + beq _022452EE + b _02245312 +_022452A0: + mov r1, #1 + strb r1, [r5, #4] + cmp r6, #1 + bne _022452B6 + mov r0, #0x52 + lsl r0, r0, #0x10 + str r0, [r5, #0xc] + strh r1, [r4] + mov r0, #0x4a + str r0, [r5, #0x10] + b _02245316 +_022452B6: + mov r0, #0x1b + lsl r0, r0, #0x12 + str r0, [r5, #0xc] + mov r0, #2 + strh r0, [r4] + mov r0, #0x64 + str r0, [r5, #0x10] + b _02245316 +_022452C6: + cmp r6, #0 + bne _022452DA + mov r1, #0xa + strb r0, [r5, #4] + lsl r1, r1, #0x12 + str r1, [r5, #0xc] + strh r0, [r4] + mov r0, #0x2e + str r0, [r5, #0x10] + b _02245316 +_022452DA: + mov r0, #1 + strb r0, [r5, #4] + mov r0, #0x1b + lsl r0, r0, #0x12 + str r0, [r5, #0xc] + mov r0, #2 + strh r0, [r4] + mov r0, #0x64 + str r0, [r5, #0x10] + b _02245316 +_022452EE: + strb r0, [r5, #4] + cmp r6, #0 + bne _02245302 + mov r1, #0xa + lsl r1, r1, #0x12 + str r1, [r5, #0xc] + strh r0, [r4] + mov r0, #0x2e + str r0, [r5, #0x10] + b _02245316 +_02245302: + mov r0, #0x52 + lsl r0, r0, #0x10 + str r0, [r5, #0xc] + mov r0, #1 + strh r0, [r4] + mov r0, #0x58 + str r0, [r5, #0x10] + b _02245316 +_02245312: + bl ErrorHandling +_02245316: + ldr r0, [sp] + str r0, [r5, #8] + ldr r0, [sp] + cmp r0, #3 + bne _02245324 + ldr r0, _02245334 ; =MOD06_02245478 + b _02245326 +_02245324: + ldr r0, _02245338 ; =MOD06_02245544 +_02245326: + str r0, [r5] + ldr r0, [r7, #0x10] + ldr r1, _0224533C ; =MOD06_02245360 + add r2, r5, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245334: .word MOD06_02245478 +_02245338: .word MOD06_02245544 +_0224533C: .word MOD06_02245360 + + thumb_func_start MOD06_02245340 +MOD06_02245340: ; 0x02245340 + push {r4, lr} + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #6 + bl FUN_020254A0 + ldrh r0, [r0] + cmp r0, r4 + bne _0224535C + mov r0, #5 + pop {r4, pc} +_0224535C: + mov r0, #6 + pop {r4, pc} + + thumb_func_start MOD06_02245360 +MOD06_02245360: ; 0x02245360 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #5] + cmp r1, #5 + bhi _02245468 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02245386: ; jump table + .short _02245392 - _02245386 - 2 ; case 0 + .short _022453F0 - _02245386 - 2 ; case 1 + .short _02245402 - _02245386 - 2 ; case 2 + .short _02245414 - _02245386 - 2 ; case 3 + .short _0224544C - _02245386 - 2 ; case 4 + .short _0224545E - _02245386 - 2 ; case 5 +_02245392: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02245470 ; =0x000001DB + bl FUN_021E7ED8 + bl FUN_021E7EC8 + add r7, r0, #0 + ldr r0, _02245470 ; =0x000001DB + ldr r1, [r5, #0x2c] + bl FUN_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r6, r0, r1 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + str r7, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r3, #0xff + str r3, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x10 + add r3, #0xdc + bl FUN_021DA464 + ldr r0, [r5, #0x50] + mov r1, #0x10 + mov r2, #0 + bl FUN_021DA4EC + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02245468 +_022453F0: + ldr r0, [r4, #8] + cmp r0, #4 + bne _022453FC + ldr r0, _02245474 ; =0x000006DB + bl FUN_020054C8 +_022453FC: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02245402: + ldr r0, _02245474 ; =0x000006DB + bl FUN_02005508 + cmp r0, #0 + bne _02245468 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02245468 +_02245414: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02245470 ; =0x000001DB + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0x18 + add r1, r6, #0 + bl FUN_021E7EA0 + add r0, r5, #0 + add r2, r4, #0 + ldr r5, [r4] + add r1, r4, #0 + add r2, #0xc + add r3, sp, #0x18 + blx r5 + cmp r0, #0 + beq _02245442 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02245442: + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_021E7EB0 + b _02245468 +_0224544C: + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x10 + bl FUN_021DA54C + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02245468 +_0224545E: + bl FUN_02016A18 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245468: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02245470: .word 0x000001DB +_02245474: .word 0x000006DB + + thumb_func_start MOD06_02245478 +MOD06_02245478: ; 0x02245478 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r0, [r5, #4] + add r4, r3, #0 + add r6, r2, #0 + cmp r0, #0 + ldr r0, [r4, #8] + bne _022454D8 + ldrb r1, [r5, #6] + lsl r2, r1, #2 + ldr r1, _02245538 ; =0x02251324 + ldr r1, [r1, r2] + sub r0, r0, r1 + str r0, [r4, #8] + ldrb r0, [r5, #6] + cmp r0, #6 + bhs _02245526 + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xe + sub r1, r1, r0 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r1, r0, #0x10 + ldr r0, [r5, #0x10] + cmp r1, r0 + bgt _02245526 + ldrb r0, [r5, #7] + add r0, r0, #1 + strb r0, [r5, #7] + ldrb r2, [r5, #6] + ldr r0, _0224553C ; =0x022512E4 + ldrb r1, [r5, #7] + ldrb r0, [r0, r2] + cmp r1, r0 + blo _02245526 + cmp r2, #0 + bne _022454CC + ldr r0, _02245540 ; =0x000006DA + bl FUN_020054C8 +_022454CC: + ldrb r0, [r5, #6] + add r0, r0, #1 + strb r0, [r5, #6] + mov r0, #0 + strb r0, [r5, #7] + b _02245526 +_022454D8: + ldrb r1, [r5, #6] + lsl r2, r1, #2 + ldr r1, _02245538 ; =0x02251324 + ldr r1, [r1, r2] + add r0, r0, r1 + str r0, [r4, #8] + ldrb r0, [r5, #6] + cmp r0, #6 + bhs _02245526 + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xe + sub r1, r1, r0 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r1, r0, #0x10 + ldr r0, [r5, #0x10] + cmp r1, r0 + blt _02245526 + ldrb r0, [r5, #7] + add r0, r0, #1 + strb r0, [r5, #7] + ldrb r2, [r5, #6] + ldr r0, _0224553C ; =0x022512E4 + ldrb r1, [r5, #7] + ldrb r0, [r0, r2] + cmp r1, r0 + blo _02245526 + cmp r2, #0 + bne _0224551C + ldr r0, _02245540 ; =0x000006DA + bl FUN_020054C8 +_0224551C: + ldrb r0, [r5, #6] + add r0, r0, #1 + strb r0, [r5, #6] + mov r0, #0 + strb r0, [r5, #7] +_02245526: + ldr r1, [r4, #8] + ldr r0, [r6] + cmp r1, r0 + bne _02245532 + mov r0, #1 + pop {r4, r5, r6, pc} +_02245532: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02245538: .word 0x02251324 +_0224553C: .word 0x022512E4 +_02245540: .word 0x000006DA + + thumb_func_start MOD06_02245544 +MOD06_02245544: ; 0x02245544 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + add r1, sp, #4 + bl FUN_02055350 + mov r0, #2 + ldr r1, [sp, #0xc] + lsl r0, r0, #0xe + add r1, r1, r0 + ldr r0, [sp] + str r1, [r0, #8] + ldr r0, [r7] + cmp r1, r0 + bne _02245578 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02245578: + ldrb r0, [r4, #4] + cmp r0, #0 + bne _022455E0 + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02245640 + ldrb r1, [r4, #6] + add r0, r6, #0 + lsl r2, r1, #2 + ldr r1, _02245648 ; =0x02251308 + ldr r1, [r1, r2] + bl FUN_0205ADDC + ldrb r0, [r4, #6] + cmp r0, #6 + bhs _022455BC + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + ble _022455BC + ldrb r0, [r4, #6] + cmp r0, #0 + bne _022455B4 + ldr r0, _0224564C ; =0x000006D9 + bl FUN_020054C8 +_022455B4: + ldrb r0, [r4, #6] + add r0, r0, #1 + strb r0, [r4, #6] + b _02245640 +_022455BC: + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + bgt _02245640 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02245640 + cmp r0, #6 + bne _022455D8 + ldr r0, _02245650 ; =0x000006DA + bl FUN_020054C8 +_022455D8: + ldrb r0, [r4, #6] + sub r0, r0, #1 + strb r0, [r4, #6] + b _02245640 +_022455E0: + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02245640 + ldrb r1, [r4, #6] + add r0, r6, #0 + lsl r2, r1, #2 + ldr r1, _02245654 ; =0x022512EC + ldr r1, [r1, r2] + bl FUN_0205ADDC + ldrb r0, [r4, #6] + cmp r0, #6 + bhs _0224561E + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + bge _0224561E + ldrb r0, [r4, #6] + cmp r0, #0 + bne _02245616 + ldr r0, _0224564C ; =0x000006D9 + bl FUN_020054C8 +_02245616: + ldrb r0, [r4, #6] + add r0, r0, #1 + strb r0, [r4, #6] + b _02245640 +_0224561E: + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + blt _02245640 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02245640 + cmp r0, #6 + bne _0224563A + ldr r0, _02245650 ; =0x000006DA + bl FUN_020054C8 +_0224563A: + ldrb r0, [r4, #6] + sub r0, r0, #1 + strb r0, [r4, #6] +_02245640: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02245648: .word 0x02251308 +_0224564C: .word 0x000006D9 +_02245650: .word 0x000006DA +_02245654: .word 0x022512EC + + thumb_func_start MOD06_02245658 +MOD06_02245658: ; 0x02245658 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r2, #0 + add r4, r1, #0 + add r6, r3, #0 + bl MOD06_022456A4 + add r7, r0, #0 + cmp r4, #0 + beq _02245670 + mov r1, #9 + b _02245672 +_02245670: + mov r1, #0xa +_02245672: + mov r0, #0x6a + mov r2, #4 + bl FUN_02006528 + lsl r1, r7, #2 + add r1, r7, r1 + add r3, r5, #0 + asr r3, r1 + mov r2, #0x1f + add r1, r3, #0 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + and r1, r2 + lsl r1, r1, #0x18 + lsr r2, r1, #0x16 + ldr r1, [r0, r2] + str r1, [r6] + ldr r2, [r0, r2] + ldr r1, [sp, #0x18] + str r2, [r1] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022456A4 +MOD06_022456A4: ; 0x022456A4 + push {r4, lr} + mov r1, #0x7e + lsl r1, r1, #2 + sub r0, r0, r1 + mov r4, #0 + cmp r0, #5 + bhi _022456E0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022456BE: ; jump table + .short _022456CA - _022456BE - 2 ; case 0 + .short _022456CC - _022456BE - 2 ; case 1 + .short _022456D0 - _022456BE - 2 ; case 2 + .short _022456D4 - _022456BE - 2 ; case 3 + .short _022456D8 - _022456BE - 2 ; case 4 + .short _022456DC - _022456BE - 2 ; case 5 +_022456CA: + b _022456E4 +_022456CC: + mov r4, #1 + b _022456E4 +_022456D0: + mov r4, #2 + b _022456E4 +_022456D4: + mov r4, #3 + b _022456E4 +_022456D8: + mov r4, #4 + b _022456E4 +_022456DC: + mov r4, #5 + b _022456E4 +_022456E0: + bl ErrorHandling +_022456E4: + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD06_022456E8 +MOD06_022456E8: ; 0x022456E8 + push {r3, lr} + cmp r1, #9 + bhi _0224579C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022456FA: ; jump table + .short _0224570E - _022456FA - 2 ; case 0 + .short _02245718 - _022456FA - 2 ; case 1 + .short _02245734 - _022456FA - 2 ; case 2 + .short _0224573E - _022456FA - 2 ; case 3 + .short _02245748 - _022456FA - 2 ; case 4 + .short _02245752 - _022456FA - 2 ; case 5 + .short _0224575C - _022456FA - 2 ; case 6 + .short _02245778 - _022456FA - 2 ; case 7 + .short _02245784 - _022456FA - 2 ; case 8 + .short _02245790 - _022456FA - 2 ; case 9 +_0224570E: + bl MOD06_02239CE8 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245718: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_02239D04 + cmp r0, #0 + beq _02245730 + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_02239CFC + mov r0, #1 + pop {r3, pc} +_02245730: + mov r0, #0 + pop {r3, pc} +_02245734: + bl MOD06_02239F64 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_0224573E: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_02239F78 + b _022457A0 +_02245748: + bl MOD06_0223A2E8 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245752: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_0223A304 + b _022457A0 +_0224575C: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_0223A310 + cmp r0, #6 + bne _02245774 + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_0223A2FC + mov r0, #1 + pop {r3, pc} +_02245774: + mov r0, #0 + pop {r3, pc} +_02245778: + mov r1, #0 + bl MOD06_0223A1C4 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245784: + mov r1, #1 + bl MOD06_0223A1C4 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245790: + mov r1, #2 + bl MOD06_0223A1C4 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_0224579C: + bl ErrorHandling +_022457A0: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_022457A4: .word 0x02252424 + + thumb_func_start MOD06_022457A8 +MOD06_022457A8: ; 0x022457A8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + mov r2, #0 + ldrh r0, [r0, #2] + add r1, r2, #0 +_022457BA: + cmp r0, #0 + beq _022457C0 + add r2, r2, #1 +_022457C0: + add r1, r1, #1 + cmp r1, #3 + blt _022457BA + add r0, r2, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022457CC +MOD06_022457CC: ; 0x022457CC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blo _022457DC + bl ErrorHandling +_022457DC: + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + add r1, sp, #0 + bl MOD06_02245884 + lsl r1, r4, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + ldrh r0, [r0] + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_022457F8 +MOD06_022457F8: ; 0x022457F8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blo _02245808 + bl ErrorHandling +_02245808: + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + add r1, sp, #0 + bl MOD06_02245884 + lsl r1, r4, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + ldrh r0, [r0, #2] + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_02245824 +MOD06_02245824: ; 0x02245824 + ldr r3, _02245828 ; =0x0205E49D + bx r3 + .align 2, 0 +_02245828: .word 0x0205E49D + + thumb_func_start MOD06_0224582C +MOD06_0224582C: ; 0x0224582C + push {r3, lr} + sub sp, #8 + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_0205E098 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02245844 +MOD06_02245844: ; 0x02245844 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r1, sp, #0 + add r4, r0, #0 + bl MOD06_02245884 + mov r2, #0 + add r3, sp, #0 + add r5, sp, #0xc +_02245856: + ldr r1, [r3] + add r2, r2, #1 + ldrh r0, [r1] + add r3, r3, #4 + strh r0, [r5] + ldrh r0, [r1, #2] + strh r0, [r5, #2] + add r5, r5, #4 + cmp r2, #3 + blt _02245856 + mov r2, #0 + add r1, sp, #0xc +_0224586E: + ldrh r0, [r1] + add r2, r2, #1 + strh r0, [r4] + ldrh r0, [r1, #2] + add r1, r1, #4 + strh r0, [r4, #2] + add r4, r4, #4 + cmp r2, #3 + blt _0224586E + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02245884 +MOD06_02245884: ; 0x02245884 + push {r3, r4} + ldrh r4, [r0, #6] + ldrh r3, [r0, #2] + cmp r3, r4 + ldrh r2, [r0, #0xa] + bhs _022458C6 + cmp r4, r2 + bhs _022458A4 + add r2, r0, #0 + add r2, #8 + str r2, [r1] + add r2, r0, #4 + str r2, [r1, #4] + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458A4: + cmp r3, r2 + bhs _022458B8 + add r2, r0, #4 + str r2, [r1] + add r2, r0, #0 + add r2, #8 + str r2, [r1, #4] + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458B8: + add r2, r0, #4 + str r2, [r1] + str r0, [r1, #4] + add r0, #8 + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458C6: + cmp r3, r2 + bhs _022458DA + add r2, r0, #0 + add r2, #8 + str r2, [r1] + str r0, [r1, #4] + add r0, r0, #4 + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458DA: + cmp r4, r2 + str r0, [r1] + bhs _022458EE + add r2, r0, #0 + add r2, #8 + str r2, [r1, #4] + add r0, r0, #4 + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458EE: + add r2, r0, #4 + str r2, [r1, #4] + add r0, #8 + str r0, [r1, #8] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_022458FC +MOD06_022458FC: ; 0x022458FC + push {r3, lr} + mov r1, #0x1c + bl _u32_div_f + ldr r0, _0224590C ; =0x02251340 + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 +_0224590C: .word 0x02251340 + + thumb_func_start MOD06_02245910 +MOD06_02245910: ; 0x02245910 + push {r4, r5, r6, lr} + sub sp, #0x1a8 + add r5, r1, #0 + mov r1, #0x1c + add r4, r2, #0 + bl _u32_div_f + ldr r0, _02245938 ; =0x02251340 + lsl r1, r1, #2 + ldr r6, [r0, r1] + add r0, sp, #0 + add r1, r6, #0 + bl FUN_02034CB4 + ldr r0, [sp, #0x64] + strh r0, [r4] + strh r6, [r5] + add sp, #0x1a8 + pop {r4, r5, r6, pc} + nop +_02245938: .word 0x02251340 + + thumb_func_start MOD06_0224593C +MOD06_0224593C: ; 0x0224593C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r2, #0 + ldr r0, [sp, #0x1c] + add r7, r3, #0 + strb r6, [r5] + ldr r4, [sp, #0x18] + strb r7, [r5, #1] + strb r4, [r5, #2] + str r0, [sp, #0x1c] + strb r0, [r5, #3] + ldr r0, [sp, #0x20] + mov r2, #4 + strb r0, [r5, #4] + ldr r0, [sp, #0x24] + strb r0, [r5, #5] + ldr r0, [sp, #0x28] + strb r0, [r5, #6] + ldr r0, [sp, #0x2c] + strb r0, [r5, #7] + add r0, r1, #0 + add r1, r5, #0 + add r1, #0xc + bl FUN_02008C9C + str r0, [r5, #8] + add r0, r5, #0 + mov r2, #2 + add r0, #0xc + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + add r0, r6, #0 + mov r1, #0 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r7, #0 + mov r1, #1 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + mov r1, #2 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [sp, #0x1c] + mov r1, #3 + mov r2, #4 + bl FUN_02008DEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r6, #3 + bl MOD06_02248634 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r7, #3 + bl MOD06_02248634 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r4, #3 + bl MOD06_02248634 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [sp, #0x1c] + mov r0, #4 + lsl r1, r1, #3 + bl MOD06_02248634 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r1, #0 + cmp r6, #0 + ble _02245A18 + ble _02245A18 + ldr r0, [sp, #0x20] + add r2, r1, #0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 +_02245A08: + mov r3, #0x51 + lsl r3, r3, #2 + ldr r3, [r5, r3] + add r1, r1, #1 + strh r0, [r3, r2] + add r2, #8 + cmp r1, r6 + blt _02245A08 +_02245A18: + mov r3, #0 + cmp r7, #0 + ble _02245A38 + ble _02245A38 + ldr r0, [sp, #0x24] + mov r6, #0x52 + lsl r0, r0, #0x10 + add r2, r3, #0 + asr r1, r0, #0x10 + lsl r6, r6, #2 +_02245A2C: + ldr r0, [r5, r6] + add r3, r3, #1 + strh r1, [r0, r2] + add r2, #8 + cmp r3, r7 + blt _02245A2C +_02245A38: + mov r1, #0 + cmp r4, #0 + ble _02245A58 + ble _02245A58 + ldr r2, [sp, #0x28] + add r0, r1, #0 + lsl r2, r2, #0x10 + asr r6, r2, #0x10 + mov r2, #0x53 + lsl r2, r2, #2 +_02245A4C: + ldr r3, [r5, r2] + add r1, r1, #1 + strh r6, [r3, r0] + add r0, #8 + cmp r1, r4 + blt _02245A4C +_02245A58: + ldr r0, [sp, #0x1c] + mov r1, #0 + cmp r0, #0 + ble _02245A7C + ble _02245A7C + ldr r2, [sp, #0x2c] + mov r3, #0x15 + lsl r2, r2, #0x10 + add r0, r1, #0 + asr r4, r2, #0x10 + lsl r3, r3, #4 +_02245A6E: + ldr r2, [r5, r3] + add r1, r1, #1 + strh r4, [r2, r0] + ldr r2, [sp, #0x1c] + add r0, #8 + cmp r1, r2 + blt _02245A6E +_02245A7C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245A80 +MOD06_02245A80: ; 0x02245A80 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _02245AB0 + add r4, r6, #0 + mov r7, #4 +_02245A90: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245AA6 + ldr r0, [r0, #4] + bl FUN_02009C0C +_02245AA6: + ldrb r0, [r5] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245A90 +_02245AB0: + ldrb r0, [r5, #1] + mov r6, #0 + cmp r0, #0 + ble _02245ADC + add r4, r6, #0 + mov r7, #5 +_02245ABC: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245AD2 + ldr r0, [r0, #4] + bl FUN_02009E04 +_02245AD2: + ldrb r0, [r5, #1] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245ABC +_02245ADC: + ldrb r0, [r5, #2] + mov r6, #0 + cmp r0, #0 + ble _02245B08 + add r4, r6, #0 + mov r7, #6 +_02245AE8: + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245AFE + ldr r0, [r0, #4] + bl FUN_02009474 +_02245AFE: + ldrb r0, [r5, #2] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245AE8 +_02245B08: + ldrb r0, [r5, #3] + mov r6, #0 + cmp r0, #0 + ble _02245B34 + add r4, r6, #0 + mov r7, #7 +_02245B14: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245B2A + ldr r0, [r0, #4] + bl FUN_02009474 +_02245B2A: + ldrb r0, [r5, #3] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245B14 +_02245B34: + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, [r5, #8] + bl FUN_0201FDB4 + ldr r0, [r5, #8] + bl FUN_0201FD58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245B94 +MOD06_02245B94: ; 0x02245B94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245BFA + mov r0, #0x51 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #4 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245BB6: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245BF2 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_020091E0 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02245BF2: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245BB6 +_02245BFA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245C04 +MOD06_02245C04: ; 0x02245C04 + push {r4, r5, r6, lr} + ldrb r3, [r0] + mov r2, #0 + cmp r3, #0 + ble _02245C32 + mov r4, #0x51 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245C18: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245C2A + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009B04 + pop {r4, r5, r6, pc} +_02245C2A: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245C18 +_02245C32: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245C38 +MOD06_02245C38: ; 0x02245C38 + push {r4, r5, r6, lr} + ldrb r3, [r0] + mov r2, #0 + cmp r3, #0 + ble _02245C66 + mov r4, #0x51 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245C4C: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245C5E + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009474 + pop {r4, r5, r6, pc} +_02245C5E: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245C4C +_02245C66: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245C6C +MOD06_02245C6C: ; 0x02245C6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x14] + str r1, [sp, #0x10] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245CD4 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #5 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245C8E: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245CCC + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x52 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #1 + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #4 + str r1, [sp, #0xc] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl FUN_02009298 + mov r1, #0x52 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x18 + add r1, r1, r4 + str r0, [r1, #4] + pop {r3, r4, r5, r6, r7, pc} +_02245CCC: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245C8E +_02245CD4: + bl ErrorHandling + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02245CDC +MOD06_02245CDC: ; 0x02245CDC + push {r4, r5, r6, lr} + ldrb r3, [r0, #1] + mov r2, #0 + cmp r3, #0 + ble _02245D0A + mov r4, #0x52 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245CF0: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245D02 + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009D68 + pop {r4, r5, r6, pc} +_02245D02: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245CF0 +_02245D0A: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245D10 +MOD06_02245D10: ; 0x02245D10 + push {r4, r5, r6, lr} + ldrb r3, [r0, #1] + mov r2, #0 + cmp r3, #0 + ble _02245D3E + mov r4, #0x52 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245D24: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245D36 + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009474 + pop {r4, r5, r6, pc} +_02245D36: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245D24 +_02245D3E: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245D44 +MOD06_02245D44: ; 0x02245D44 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245DAA + mov r0, #0x53 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #6 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245D66: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245DA2 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_02009358 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02245DA2: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245D66 +_02245DAA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245DB4 +MOD06_02245DB4: ; 0x02245DB4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245E1A + mov r0, #0x15 + lsl r0, r0, #4 + ldr r3, [r6, r0] + mov r0, #7 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245DD6: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245E12 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_02009358 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02245E12: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245DD6 +_02245E1A: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245E24 +MOD06_02245E24: ; 0x02245E24 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + add r4, r1, #0 + add r1, r2, #0 + mov r0, #7 + add r2, r3, #0 + ldrsb r3, [r5, r0] + ldr r6, [sp, #0x84] + cmp r6, r3 + bne _02245E3E + sub r0, #8 + str r0, [sp, #0x84] +_02245E3E: + ldr r0, [sp, #0x84] + mov r3, #0 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x88] + str r3, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x4d + lsl r0, r0, #2 + ldr r6, [r5, r0] + str r6, [sp, #0x14] + add r6, r0, #4 + ldr r6, [r5, r6] + str r6, [sp, #0x18] + add r6, r0, #0 + add r6, #8 + ldr r6, [r5, r6] + add r0, #0xc + str r6, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r3, [sp, #0x24] + str r3, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl FUN_02008AA4 + ldr r0, [r5, #8] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + ldr r0, [sp, #0x8c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #4 + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r4, r0, #0 + bne _02245EA6 + bl ErrorHandling +_02245EA6: + add r0, r4, #0 + add sp, #0x70 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245EAC +MOD06_02245EAC: ; 0x02245EAC + push {r4, lr} + add r4, r1, #0 + bl FUN_0202011C + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_02245EC0 +MOD06_02245EC0: ; 0x02245EC0 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r4, r0, #0 + mov r2, #0 + add r0, sp, #0x1c + str r2, [r0] + str r2, [r0, #4] + add r3, sp, #0x28 + str r2, [r3] + str r2, [r3, #4] + ldr r6, _02245F28 ; =0x02251454 + str r2, [r0, #8] + ldmia r6!, {r0, r1} + add r5, sp, #0x10 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r2, [r3, #8] + str r0, [r5] + add r1, r3, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x84 + str r0, [sp, #0xc] + add r0, r4, #0 + add r3, r2, #0 + bl MOD06_02245E24 + add r4, r0, #0 + mov r1, #2 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0x1c + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add r0, r4, #0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02245F28: .word 0x02251454 + + thumb_func_start MOD06_02245F2C +MOD06_02245F2C: ; 0x02245F2C + push {r3, r4, lr} + sub sp, #0x1c + mov r3, #0 + add r2, sp, #0x10 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + cmp r1, #1 + bne _02245F40 + mov r3, #1 +_02245F40: + mov r2, #2 + str r2, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #0x83 + str r1, [sp, #0xc] + add r1, sp, #0x10 + bl MOD06_02245E24 + add r4, r0, #0 + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_02020130 + add r0, r4, #0 + add sp, #0x1c + pop {r3, r4, pc} + + thumb_func_start MOD06_02245F6C +MOD06_02245F6C: ; 0x02245F6C + push {r4, r5, lr} + sub sp, #0x24 + add r5, sp, #0x18 + mov r4, #0 + str r4, [r5] + str r4, [r5, #4] + str r0, [sp, #0xc] + str r2, [sp, #0x14] + str r3, [sp, #0x10] + str r4, [r5, #8] + str r1, [sp, #8] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x82 + str r0, [sp, #4] + add r0, r1, #0 + ldr r1, _02245F9C ; =0x02251524 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_020644E4 + add sp, #0x24 + pop {r4, r5, pc} + nop +_02245F9C: .word 0x02251524 + + thumb_func_start MOD06_02245FA0 +MOD06_02245FA0: ; 0x02245FA0 + push {r3, lr} + bl FUN_02064738 + ldrb r0, [r0, #2] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02245FAC +MOD06_02245FAC: ; 0x02245FAC + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x58 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x64] + bl MOD06_02245EC0 + str r0, [r4, #0x68] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02245FD0 +MOD06_02245FD0: ; 0x02245FD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02064738 + add r4, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0 + beq _02245FE4 + bl FUN_02064520 +_02245FE4: + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _02245FEE + bl FUN_021F6240 +_02245FEE: + add r0, r5, #0 + bl FUN_02064520 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02245FF8 +MOD06_02245FF8: ; 0x02245FF8 + ldr r3, _02246000 ; =0x0201FFC9 + ldr r0, [r1, #0x68] + bx r3 + nop +_02246000: .word 0x0201FFC9 + + thumb_func_start MOD06_02246004 +MOD06_02246004: ; 0x02246004 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5] + lsl r1, r0, #2 + ldr r0, _02246020 ; =0x022513D8 + ldr r4, [r0, r1] +_02246010: + ldrb r1, [r5, #1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02246010 + pop {r3, r4, r5, pc} + .align 2, 0 +_02246020: .word 0x022513D8 + + thumb_func_start MOD06_02246024 +MOD06_02246024: ; 0x02246024 + push {r3, lr} + mov r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #0x68] + bl FUN_020200A0 + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02246034 +MOD06_02246034: ; 0x02246034 + push {r4, r5, r6, lr} + sub sp, #0x30 + ldr r4, _02246188 ; =0x02251418 + add r2, r0, #0 + ldmia r4!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r4, _0224618C ; =0x0225146C + str r0, [r3] + ldmia r4!, {r0, r1} + add r3, sp, #0x18 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + add r0, r2, #0 + bl FUN_02064738 + add r4, r0, #0 + mov r3, #1 + add r5, r4, #0 + strb r3, [r4] + mov r2, #0 + strb r2, [r4, #2] + strb r2, [r4, #1] + str r2, [r4, #4] + add r6, sp, #0x24 + ldmia r6!, {r0, r1} + add r5, #8 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + str r2, [r4, #0x14] + str r2, [r4, #0x18] + str r2, [r4, #0x1c] + ldr r0, _02246190 ; =0x0015E000 + add r2, r4, #0 + add r5, sp, #0x18 + str r0, [r4, #0x38] + ldmia r5!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r5] + str r0, [r2] + lsl r0, r3, #0xa + str r0, [r4, #0x50] + mov r0, #0x2d + lsl r0, r0, #0xc + str r0, [r4, #0x40] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x48] + lsl r0, r3, #0x11 + str r0, [r4, #0x4c] + mov r0, #0x2d + bl FUN_0201B988 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r0, [r4, #0x68] + add r1, sp, #0x24 + bl FUN_02020044 + ldr r0, [r4, #0x68] + add r1, sp, #0x18 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02020088 + ldr r0, [r4, #0x68] + mov r1, #0x84 + bl FUN_02020310 + ldr r0, [r4, #0x68] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x58] + ldr r1, [r4, #0x60] + bl MOD06_0224823C + str r0, [r4, #0x6c] + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_021F61F4 + ldr r2, _02246194 ; =0xFFF88000 + mov r1, #1 + mov r3, #0xc + str r0, [r4, #0x70] + bl FUN_021F6254 + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _02246198 ; =0x02251490 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r4, [r4, #0x60] + add r0, r4, #0 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add r0, r4, #0 + mov r1, #2 + bl FUN_02020130 + bl MOD06_02246610 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_02246188: .word 0x02251418 +_0224618C: .word 0x0225146C +_02246190: .word 0x0015E000 +_02246194: .word 0xFFF88000 +_02246198: .word 0x02251490 + + thumb_func_start MOD06_0224619C +MOD06_0224619C: ; 0x0224619C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r6, [r5, #0x68] + ldr r4, [r5, #0x60] + sub r0, r1, r0 + str r0, [r5, #0x48] + bpl _022461B4 + mov r0, #0 + str r0, [r5, #0x48] +_022461B4: + mov r0, #2 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xa + cmp r1, r0 + ble _022461C6 + mov r0, #7 + lsl r0, r0, #0xa + sub r0, r1, r0 + str r0, [r5, #0x4c] +_022461C6: + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _022461D2 + str r0, [r5, #0x4c] +_022461D2: + mov r0, #0x2d + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0x5a + bge _0224621A + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_0224621A: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + bge _0224622C + str r0, [r5, #0x2c] +_0224622C: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + bge _0224623E + str r0, [r5, #0x30] +_0224623E: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x2c + bl FUN_02020064 + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x12 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _0224628E + mov r0, #0 + str r0, [r5, #4] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02246294 +_0224628E: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] +_02246294: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224629C +MOD06_0224629C: ; 0x0224629C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x6c] + bl MOD06_022482B8 + ldr r0, [r4, #0x70] + mov r1, #2 + mov r2, #0 + mov r3, #0xc + bl FUN_021F6254 + mov r0, #1 + lsl r0, r0, #0xa + str r0, [r4, #0x50] + lsl r0, r0, #9 + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x48] + mov r0, #6 + lsl r0, r0, #0xa + str r0, [r4, #0x4c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_022462D0 +MOD06_022462D0: ; 0x022462D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x68] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r5, #0x4c] + cmp r2, r1 + ble _022462F4 + lsl r0, r0, #4 + str r0, [r5, #0x4c] +_022462F4: + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + mov r0, #0x80 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + mov r0, #0xa + ldr r1, [r5, #0x40] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _02246338 + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0x40] +_02246338: + mov r0, #2 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + str r1, [r5, #0x38] + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _0224636A + str r0, [r5, #0x2c] +_0224636A: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _0224637C + str r0, [r5, #0x30] +_0224637C: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [sp, #4] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r1, r0, #0xc + mov r0, #0xf + mvn r0, r0 + cmp r1, r0 + bgt _022463B6 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_022463B6: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_022463BC +MOD06_022463BC: ; 0x022463BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x60] + mov r1, #1 + bl FUN_02020130 + mov r0, #0 + str r0, [r4, #4] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022463E0 +MOD06_022463E0: ; 0x022463E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x14 + bge _022463F6 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022463F6: + ldr r3, _02246498 ; =0x0225143C + add r2, sp, #0xc + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _0224649C ; =0x02251448 + str r0, [r2] + add r2, sp, #0 + ldmia r3!, {r0, r1} + add r5, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r7, #0 + str r0, [r2] + add r2, r4, #0 + str r7, [r4, #4] + add r3, r6, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r7, [r4, #0x14] + str r7, [r4, #0x18] + str r7, [r4, #0x1c] + str r7, [r4, #0x38] + add r2, r4, #0 + ldmia r5!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r2] + lsl r1, r1, #8 + ldr r0, _022464A0 ; =0x0013B000 + str r1, [r4, #0x50] + str r0, [r4, #0x40] + lsl r0, r1, #0xa + str r0, [r4, #0x48] + lsl r0, r1, #4 + str r0, [r4, #0x4c] + ldr r0, [r4, #0x68] + add r1, r6, #0 + bl FUN_02020044 + ldr r0, [r4, #0x68] + add r1, sp, #0 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02020088 + ldr r0, [r4, #0x68] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x60] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x60] + mov r1, #1 + bl FUN_020200BC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246498: .word 0x0225143C +_0224649C: .word 0x02251448 +_022464A0: .word 0x0013B000 + + thumb_func_start MOD06_022464A4 +MOD06_022464A4: ; 0x022464A4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x68] + sub r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _022464C4 + lsr r0, r0, #3 + add r0, r1, r0 + str r0, [r5, #0x4c] +_022464C4: + ldr r0, [r5, #0x48] + cmp r0, #0 + bge _022464CE + mov r0, #0 + str r0, [r5, #0x48] +_022464CE: + ldr r0, _022465AC ; =0x0000013B + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0xb4 + bge _02246516 + mov r0, #1 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [r5, #0x40] +_02246516: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xa + str r1, [r5, #0x2c] + cmp r1, r0 + bge _02246528 + str r0, [r5, #0x2c] +_02246528: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xa + str r1, [r5, #0x30] + cmp r1, r0 + bge _0224653A + str r0, [r5, #0x30] +_0224653A: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + mov r0, #6 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + str r1, [r5, #0x38] + cmp r0, #0x3c + ble _02246560 + mov r0, #0xf + lsl r0, r0, #0xe + str r0, [r5, #0x38] +_02246560: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r5, #0x48] + cmp r0, #0 + bgt _022465A4 + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_022465A4: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_022465AC: .word 0x0000013B + + thumb_func_start MOD06_022465B0 +MOD06_022465B0: ; 0x022465B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bne _022465CE + ldr r0, [r4, #0x60] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x5c] + mov r1, #0 + bl MOD06_02246658 +_022465CE: + ldr r0, [r4, #4] + cmp r0, #0xa + bne _022465DC + ldr r0, [r4, #0x60] + mov r1, #0 + bl FUN_020200A0 +_022465DC: + ldr r0, [r4, #4] + cmp r0, #0xf + ble _022465FA + ldr r0, [r4, #0x70] + bl FUN_021F6234 + cmp r0, #1 + bne _022465FA + mov r0, #0 + str r0, [r4, #4] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #2 + strb r0, [r4, #2] +_022465FA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246600 +MOD06_02246600: ; 0x02246600 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02246604 +MOD06_02246604: ; 0x02246604 + ldr r3, _0224660C ; =0x02006671 + mov r0, #0x61 + mov r1, #4 + bx r3 + .align 2, 0 +_0224660C: .word 0x02006671 + + thumb_func_start MOD06_02246610 +MOD06_02246610: ; 0x02246610 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r3, _02246630 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + nop +_02246630: .word 0x00007FFF + + thumb_func_start MOD06_02246634 +MOD06_02246634: ; 0x02246634 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _02246654 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .align 2, 0 +_02246654: .word 0x00007FFF + + thumb_func_start MOD06_02246658 +MOD06_02246658: ; 0x02246658 + push {r4, lr} + ldr r0, [r0, #0x38] + add r4, r1, #0 + bl FUN_020553A0 + add r1, r4, #0 + bl FUN_0205889C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224666C +MOD06_0224666C: ; 0x0224666C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD06_022466C0 + add r1, r0, #0 + str r4, [r1, #0x5c] + str r6, [r1, #0xc] + str r5, [r1, #0x20] + cmp r5, #0 + bne _0224668E + ldr r0, _02246698 ; =MOD06_022466E8 + mov r2, #0x85 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} +_0224668E: + ldr r0, _0224669C ; =MOD06_02246AA8 + mov r2, #0x85 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_02246698: .word MOD06_022466E8 +_0224669C: .word MOD06_02246AA8 + + thumb_func_start MOD06_022466A0 +MOD06_022466A0: ; 0x022466A0 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022466AC +MOD06_022466AC: ; 0x022466AC + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl MOD06_022466E0 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD06_022466C0 +MOD06_022466C0: ; 0x022466C0 + push {r3, r4, r5, lr} + mov r1, #0x87 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl FUN_020169D8 + mov r2, #0x87 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + str r5, [r4, #0x60] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022466E0 +MOD06_022466E0: ; 0x022466E0 + ldr r3, _022466E4 ; =0x02016A19 + bx r3 + .align 2, 0 +_022466E4: .word 0x02016A19 + + thumb_func_start MOD06_022466E8 +MOD06_022466E8: ; 0x022466E8 + push {r3, r4, r5, lr} + ldr r4, _02246718 ; =0x022515A0 + add r5, r1, #0 +_022466EE: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _022466EE + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _02246716 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02246710 + bl FUN_02064584 +_02246710: + add r0, r5, #0 + bl MOD06_02247300 +_02246716: + pop {r3, r4, r5, pc} + .align 2, 0 +_02246718: .word 0x022515A0 + + thumb_func_start MOD06_0224671C +MOD06_0224671C: ; 0x0224671C + push {r4, lr} + add r4, r0, #0 + bl MOD06_02246F0C + add r0, r4, #0 + bl MOD06_02246D3C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02246734 +MOD06_02246734: ; 0x02246734 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0224674A + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224674A: + ldr r5, _0224679C ; =0x022513E8 + add r3, sp, #0xc + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r5, _022467A0 ; =0x022514A8 + str r0, [r3] + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + add r0, r4, #0 + bl MOD06_022473EC + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_0224798C + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD06_022479AC + add r0, r4, #0 + bl MOD06_02246D8C + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224679C: .word 0x022513E8 +_022467A0: .word 0x022514A8 + + thumb_func_start MOD06_022467A4 +MOD06_022467A4: ; 0x022467A4 + push {r4, lr} + add r4, r0, #0 + bl MOD06_022486CC + mov r0, #0 + ldr r1, _022467D8 ; =0xFFFC0000 + str r0, [r4, #0x2c] + str r1, [r4, #0x54] + mov r1, #0xfe + lsl r1, r1, #0xc + str r1, [r4, #0x44] + mov r1, #0xff + lsl r1, r1, #0xc + str r1, [r4, #0x48] + mov r1, #0x5f + lsl r1, r1, #0xc + str r1, [r4, #0x4c] + mov r1, #0x61 + lsl r1, r1, #0xc + str r1, [r4, #0x50] + mov r1, #1 + str r1, [r4, #0x2c] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + .align 2, 0 +_022467D8: .word 0xFFFC0000 + + thumb_func_start MOD06_022467DC +MOD06_022467DC: ; 0x022467DC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r2, #0 + str r2, [r4, #0x2c] + ldr r1, [r4, #0x44] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x44] + cmp r0, #0 + bgt _02246800 + mov r0, #2 + str r2, [r4, #0x44] + lsl r0, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246800: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224681C +MOD06_0224681C: ; 0x0224681C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #2 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #0x54] + cmp r2, r1 + ble _0224684A + lsl r0, r0, #4 + str r0, [r4, #0x54] +_0224684A: + mov r0, #0xe + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bge _02246856 + str r0, [r4, #0x4c] +_02246856: + mov r0, #0x22 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + ble _02246862 + str r0, [r4, #0x50] +_02246862: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0xe + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bne _0224689A + mov r0, #0x22 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bne _0224689A + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD06_02247424 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224689A: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_022468A0 +MOD06_022468A0: ; 0x022468A0 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #0xf + blt _022468B8 + mov r1, #0 + str r1, [r0, #8] + ldr r1, _022468BC ; =0xFFFC0000 + str r1, [r0, #0x58] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] +_022468B8: + mov r0, #0 + bx lr + .align 2, 0 +_022468BC: .word 0xFFFC0000 + + thumb_func_start MOD06_022468C0 +MOD06_022468C0: ; 0x022468C0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r1, r1, r0 + mov r0, #0xa + lsl r0, r0, #0x10 + str r1, [sp] + cmp r1, r0 + bgt _022468F8 + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022468F8: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224690C +MOD06_0224690C: ; 0x0224690C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #0x58] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, _02246970 ; =0xFFFFE000 + str r1, [r4, #0x58] + cmp r1, r0 + ble _0224693C + str r0, [r4, #0x58] + ldr r0, [r4] + mov r1, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, [r4, #0x5c] + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 +_0224693C: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r0, r1, r0 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_02246970: .word 0xFFFFE000 + + thumb_func_start MOD06_02246974 +MOD06_02246974: ; 0x02246974 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #8 + blt _0224698C + mov r1, #0 + str r1, [r0, #8] + ldr r1, _02246990 ; =0xFFFFF000 + str r1, [r0, #0x58] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] +_0224698C: + mov r0, #0 + bx lr + .align 2, 0 +_02246990: .word 0xFFFFF000 + + thumb_func_start MOD06_02246994 +MOD06_02246994: ; 0x02246994 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x58] + lsl r1, r0, #1 + ldr r0, _022469F0 ; =0xFFFC0000 + str r1, [r4, #0x58] + cmp r1, r0 + bge _022469A8 + str r0, [r4, #0x58] +_022469A8: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r0, r1, r0 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + ldr r1, [sp] + ldr r0, _022469F4 ; =0xFFFD8000 + cmp r1, r0 + bgt _022469E8 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022469E8: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_022469F0: .word 0xFFFC0000 +_022469F4: .word 0xFFFD8000 + + thumb_func_start MOD06_022469F8 +MOD06_022469F8: ; 0x022469F8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #1 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xe + add r2, r1, r0 + lsl r1, r0, #3 + str r2, [r4, #0x54] + cmp r2, r1 + ble _02246A26 + lsl r0, r0, #3 + str r0, [r4, #0x54] +_02246A26: + mov r0, #0x16 + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + blt _02246A32 + str r0, [r4, #0x4c] +_02246A32: + mov r0, #0x1a + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bgt _02246A3E + str r0, [r4, #0x50] +_02246A3E: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0x16 + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bne _02246A72 + mov r0, #0x1a + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bne _02246A72 + add r0, r4, #0 + bl MOD06_02248708 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246A72: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_02246A78 +MOD06_02246A78: ; 0x02246A78 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02246FB8 + mov r0, #0 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + + thumb_func_start MOD06_02246A8C +MOD06_02246A8C: ; 0x02246A8C + push {r4, lr} + add r4, r0, #0 + bl MOD06_022476A4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246AA0 +MOD06_02246AA0: ; 0x02246AA0 + mov r1, #1 + str r1, [r0, #4] + mov r0, #0 + bx lr + + thumb_func_start MOD06_02246AA8 +MOD06_02246AA8: ; 0x02246AA8 + push {r3, r4, r5, lr} + ldr r4, _02246AD8 ; =0x022515D8 + add r5, r1, #0 +_02246AAE: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02246AAE + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _02246AD6 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02246AD0 + bl FUN_02064584 +_02246AD0: + add r0, r5, #0 + bl MOD06_02247300 +_02246AD6: + pop {r3, r4, r5, pc} + .align 2, 0 +_02246AD8: .word 0x022515D8 + + thumb_func_start MOD06_02246ADC +MOD06_02246ADC: ; 0x02246ADC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02246AF2 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, pc} +_02246AF2: + ldr r5, _02246B44 ; =0x0225149C + add r3, sp, #0xc + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r5, _02246B48 ; =0x022513F4 + str r0, [r3] + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + add r0, r4, #0 + bl MOD06_022473EC + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_0224798C + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD06_022479AC + add r0, r4, #0 + bl MOD06_02246D8C + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_02246B44: .word 0x0225149C +_02246B48: .word 0x022513F4 + + thumb_func_start MOD06_02246B4C +MOD06_02246B4C: ; 0x02246B4C + push {r4, lr} + add r4, r0, #0 + bl MOD06_022478A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246B60 +MOD06_02246B60: ; 0x02246B60 + push {r4, lr} + add r4, r0, #0 + bl MOD06_022474A4 + add r0, r4, #0 + bl MOD06_02246D64 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02246B78 +MOD06_02246B78: ; 0x02246B78 + push {r4, lr} + mov r1, #0x82 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02246B8A + mov r0, #0 + pop {r4, pc} +_02246B8A: + bl MOD06_02246D8C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_02246B98 +MOD06_02246B98: ; 0x02246B98 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02247B2C + add r0, r4, #0 + bl MOD06_02247C0C + add r0, r4, #0 + bl MOD06_02247664 + add r0, r4, #0 + mov r1, #1 + bl MOD06_02248654 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246BC0 +MOD06_02246BC0: ; 0x02246BC0 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02247B60 + cmp r0, #2 + beq _02246BD0 + mov r0, #0 + pop {r4, pc} +_02246BD0: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246BE8 +MOD06_02246BE8: ; 0x02246BE8 + push {r3, lr} + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #0x14 + blt _02246C02 + mov r1, #0 + str r1, [r0, #8] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bl MOD06_02247DC4 +_02246C02: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02246C08 +MOD06_02246C08: ; 0x02246C08 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02247B60 + cmp r0, #3 + beq _02246C18 + mov r0, #0 + pop {r4, pc} +_02246C18: + ldr r0, _02246C34 ; =0x00000649 + bl FUN_020054C8 + mov r0, #2 + lsl r0, r0, #0xa + str r0, [r4, #0x54] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + nop +_02246C34: .word 0x00000649 + + thumb_func_start MOD06_02246C38 +MOD06_02246C38: ; 0x02246C38 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #2 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xa + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [r4, #0x54] + cmp r2, r1 + ble _02246C66 + lsl r0, r0, #5 + str r0, [r4, #0x54] +_02246C66: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + blt _02246C72 + str r0, [r4, #0x4c] +_02246C72: + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _02246C7E + str r0, [r4, #0x50] +_02246C7E: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02246CAA + add r0, r4, #0 + bl MOD06_02247B60 + cmp r0, #4 + bne _02246CAA + mov r0, #1 + str r0, [r4, #0x18] + bl MOD06_02246634 +_02246CAA: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bne _02246CD6 + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bne _02246CD6 + ldr r0, [r4, #0x60] + ldr r0, [r0, #8] + bl MOD06_02247610 + mov r0, #1 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD06_02247648 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246CD6: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_02246CDC +MOD06_02246CDC: ; 0x02246CDC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x18] + cmp r1, #0 + bne _02246CF6 + bl MOD06_02247B60 + cmp r0, #4 + bne _02246CF6 + mov r0, #1 + str r0, [r4, #0x18] + bl MOD06_02246634 +_02246CF6: + add r0, r4, #0 + bl MOD06_02247B60 + cmp r0, #2 + beq _02246D04 + mov r0, #0 + pop {r4, pc} +_02246D04: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02246D12 + mov r0, #1 + str r0, [r4, #0x18] + bl MOD06_02246634 +_02246D12: + add r0, r4, #0 + bl MOD06_02247B70 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246D24 +MOD06_02246D24: ; 0x02246D24 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _02246D36 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246D36: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246D3C +MOD06_02246D3C: ; 0x02246D3C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02246D60 ; =MOD06_02246DA8 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA60 + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_02246D60: .word MOD06_02246DA8 + + thumb_func_start MOD06_02246D64 +MOD06_02246D64: ; 0x02246D64 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02246D88 ; =MOD06_02246EA4 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA60 + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_02246D88: .word MOD06_02246EA4 + + thumb_func_start MOD06_02246D8C +MOD06_02246D8C: ; 0x02246D8C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02246DA6 + bl FUN_0200CAB4 + mov r0, #0x85 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02246DA6: + pop {r4, pc} + + thumb_func_start MOD06_02246DA8 +MOD06_02246DA8: ; 0x02246DA8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x81 + add r6, r1, #0 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + bne _02246E1E + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02246DBE: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02246DC8 + bl FUN_02009B04 +_02246DC8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02246DBE + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02246DD8: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02246DE2 + bl FUN_02009D68 +_02246DE2: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02246DD8 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02246DFA + add r0, r6, #0 + bl MOD06_02247808 +_02246DFA: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02246E0A + add r0, r6, #0 + bl MOD06_02247860 +_02246E0A: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r2, #0x80 + add r1, r1, #1 + str r1, [r6, r0] + ldr r0, _02246E20 ; =MOD06_02246E24 + add r1, r6, #0 + bl FUN_0200CA98 +_02246E1E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246E20: .word MOD06_02246E24 + + thumb_func_start MOD06_02246E24 +MOD06_02246E24: ; 0x02246E24 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x81 + add r6, r1, #0 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #1 + bne _02246EA2 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02246E3C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02246E46 + bl FUN_02009474 +_02246E46: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02246E3C + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02246E56: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02246E60 + bl FUN_02009474 +_02246E60: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02246E56 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02246E7E + bl FUN_02016A18 + mov r0, #0x83 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] +_02246E7E: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02246E94 + bl FUN_02016A18 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] +_02246E94: + mov r0, #0x82 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r6, r0] + ldr r0, [sp] + bl FUN_0200CAB4 +_02246EA2: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02246EA4 +MOD06_02246EA4: ; 0x02246EA4 + push {r4, lr} + mov r0, #0x67 + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020094F0 + mov r1, #0x81 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02246ED6 + bl FUN_02009B04 + ldr r0, _02246ED8 ; =MOD06_02246EDC + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA98 + mov r0, #0x81 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_02246ED6: + pop {r4, pc} + .align 2, 0 +_02246ED8: .word MOD06_02246EDC + + thumb_func_start MOD06_02246EDC +MOD06_02246EDC: ; 0x02246EDC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x67 + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020094F0 + mov r1, #0x81 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #1 + bne _02246F0A + bl FUN_02009474 + mov r0, #0x82 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_02246F0A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02246F0C +MOD06_02246F0C: ; 0x02246F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD06_0224700C + mov r2, #3 + mov r3, #1 + add r4, r0, #0 + lsl r2, r2, #0x12 + add r0, r5, #0 + mov r1, #0 + lsl r3, r3, #0xc + str r2, [sp] + bl MOD06_02247670 + add r0, r5, #0 + bl MOD06_0224761C + ldr r0, [r5, #0x60] + mov r1, #0 + ldr r0, [r0, #8] + bl FUN_02018884 + strh r0, [r5, #0x24] + ldr r0, [r5, #0x60] + mov r1, #3 + ldr r0, [r0, #8] + bl FUN_02018884 + strh r0, [r5, #0x26] + ldr r2, _02246FB4 ; =0x0400000A + mov r1, #3 + ldrh r3, [r2] + mov r0, #1 + bic r3, r1 + orr r0, r3 + strh r0, [r2] + ldrh r0, [r2, #4] + bic r0, r1 + strh r0, [r2, #4] + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + add r2, r5, #0 + add r0, r4, #0 + mov r1, #2 + add r2, #0x6c + bl MOD06_02247544 + ldr r0, [r5, #0x60] + add r3, r5, #0 + ldr r0, [r0, #8] + add r1, r4, #0 + mov r2, #0 + add r3, #0x68 + bl MOD06_0224756C + ldr r0, [r5, #0x60] + add r3, r5, #0 + ldr r0, [r0, #8] + add r1, r4, #0 + mov r2, #1 + add r3, #0x64 + bl MOD06_022475A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02247018 + add r0, r4, #0 + bl FUN_020066F4 + mov r0, #4 + mov r1, #0x20 + bl FUN_020643C0 + mov r1, #0x1e + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + pop {r3, r4, r5, pc} + .align 2, 0 +_02246FB4: .word 0x0400000A + + thumb_func_start MOD06_02246FB8 +MOD06_02246FB8: ; 0x02246FB8 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_020643F0 + ldr r0, [r4, #0x60] + ldr r0, [r0, #8] + bl MOD06_02247610 + add r0, r4, #0 + bl MOD06_0224725C + ldr r2, _02247008 ; =0x04000008 + ldrh r1, [r4, #0x24] + ldrh r3, [r2] + mov r0, #3 + bic r3, r0 + orr r1, r3 + strh r1, [r2] + ldrh r1, [r2, #6] + bic r1, r0 + ldrh r0, [r4, #0x26] + orr r0, r1 + strh r0, [r2, #6] + mov r0, #0 + mov r1, #1 + bl FUN_02054590 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + pop {r4, pc} + nop +_02247008: .word 0x04000008 + + thumb_func_start MOD06_0224700C +MOD06_0224700C: ; 0x0224700C + ldr r3, _02247014 ; =0x02006671 + mov r0, #0x61 + mov r1, #4 + bx r3 + .align 2, 0 +_02247014: .word 0x02006671 + + thumb_func_start MOD06_02247018 +MOD06_02247018: ; 0x02247018 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0x7d + add r5, r0, #0 + lsl r1, r1, #2 + add r1, r5, r1 + bl MOD06_0224777C + add r1, r5, #0 + mov r0, #0x20 + add r1, #0x74 + mov r2, #4 + bl FUN_02008C9C + str r0, [r5, #0x70] + add r0, r5, #0 + mov r2, #2 + add r0, #0x74 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #4 + mov r1, #0 + add r2, r0, #0 + bl FUN_02008DEC + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + mov r1, #1 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x1a + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #4 + mov r1, #2 + add r2, r0, #0 + bl FUN_02008DEC + mov r1, #0x69 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + mov r1, #3 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xa + mov r3, #0 + bl FUN_020091E0 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _022470C6 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x10 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xd + mov r3, #0 + bl FUN_020091E0 + b _022470E0 +_022470C6: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x10 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0x10 + mov r3, #0 + bl FUN_020091E0 +_022470E0: + mov r1, #0x1b + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_022477E4 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r5, r1] + mov r6, #0 + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + sub r1, #0x14 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #3 + add r3, r6, #0 + bl FUN_02009298 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + add r6, r6, #1 + cmp r0, #0 + beq _02247142 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #4 + str r2, [sp, #0xc] + sub r1, #0x1c + ldr r0, [r5, r1] + add r1, r4, #0 + mov r3, #0 + bl FUN_02009298 + lsl r1, r6, #2 + add r2, r5, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r2, r1] + add r6, r6, #1 +_02247142: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0224783C + lsl r1, r6, #2 + add r2, r5, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x18 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xb + mov r3, #0 + bl FUN_02009358 + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02247194 + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x24 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xe + mov r3, #0 + bl FUN_02009358 + b _022471AC +_02247194: + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x24 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0x11 + mov r3, #0 + bl FUN_02009358 +_022471AC: + mov r1, #0x73 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + mov r2, #6 + mov r3, #0 + bl FUN_02009358 + mov r1, #0x1d + lsl r1, r1, #4 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x28 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xc + bl FUN_02009358 + mov r1, #0x76 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02247214 + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x30 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xf + mov r3, #0 + bl FUN_02009358 + b _0224722E +_02247214: + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x30 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0x12 + mov r3, #0 + bl FUN_02009358 +_0224722E: + mov r1, #0x77 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r1, #0x7d + lsl r1, r1, #2 + ldr r0, [r5, #0x5c] + add r1, r5, r1 + mov r2, #4 + bl MOD06_0224778C + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x18 + add r0, r5, r1 + mov r1, #4 + bl MOD06_022477D4 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r5, r1] + add sp, #0x10 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224725C +MOD06_0224725C: ; 0x0224725C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02247268: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02247272 + bl FUN_02009C0C +_02247272: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02247268 + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02247282: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0224728C + bl FUN_02009E04 +_0224728C: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02247282 + mov r7, #0x72 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_0224729C: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022472A6 + bl FUN_02009474 +_022472A6: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #4 + blt _0224729C + mov r7, #0x76 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_022472B6: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022472C0 + bl FUN_02009474 +_022472C0: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _022472B6 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02008E2C + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02008E2C + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02008E2C + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02008E2C + ldr r0, [r6, #0x70] + bl FUN_0201FDB4 + ldr r0, [r6, #0x70] + bl FUN_0201FD58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02247300 +MOD06_02247300: ; 0x02247300 + push {r3, lr} + ldr r0, [r0, #0x70] + cmp r0, #0 + beq _0224730C + bl FUN_0201FDEC +_0224730C: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02247310 +MOD06_02247310: ; 0x02247310 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + ldr r0, [sp, #0x84] + add r4, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + cmp r0, #4 + bne _02247358 + mov r0, #0 + mvn r0, r0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r6, #0x67 + ldr r3, [sp, #0x88] + str r0, [sp, #0xc] + lsl r6, r6, #2 + str r3, [sp, #0x10] + ldr r3, [r5, r6] + str r3, [sp, #0x14] + add r3, r6, #4 + ldr r3, [r5, r3] + add r6, #8 + str r3, [sp, #0x18] + ldr r3, [r5, r6] + str r3, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl FUN_02008AA4 + b _02247392 +_02247358: + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r3, #0 + ldr r0, [sp, #0x88] + str r3, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r6, [r5, r0] + str r6, [sp, #0x14] + add r6, r0, #4 + ldr r6, [r5, r6] + str r6, [sp, #0x18] + add r6, r0, #0 + add r6, #8 + ldr r6, [r5, r6] + add r0, #0xc + str r6, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r3, [sp, #0x24] + str r3, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl FUN_02008AA4 +_02247392: + ldr r0, [r5, #0x70] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + ldr r0, [sp, #0x8c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #4 + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r4, r0, #0 + bne _022473BE + bl ErrorHandling +_022473BE: + add r0, r4, #0 + add sp, #0x70 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_022473C4 +MOD06_022473C4: ; 0x022473C4 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r5, #1 + add r4, r3, #0 + str r5, [sp] + mov r3, #0 + str r3, [sp, #4] + str r3, [sp, #8] + str r2, [sp, #0xc] + add r2, r5, #0 + bl MOD06_02247310 + add r1, r4, #0 + add r5, r0, #0 + bl FUN_02020130 + add r0, r5, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022473EC +MOD06_022473EC: ; 0x022473EC + push {r4, lr} + sub sp, #0x10 + ldr r2, [r0, #0xc] + mov r3, #0 + cmp r2, #1 + bne _022473FA + mov r3, #1 +_022473FA: + mov r2, #2 + str r2, [sp] + mov r4, #1 + str r4, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + mov r4, #0x83 + str r4, [sp, #0xc] + bl MOD06_02247310 + add r4, r0, #0 + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_02020130 + add r0, r4, #0 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD06_02247424 +MOD06_02247424: ; 0x02247424 + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_020200BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224743C +MOD06_0224743C: ; 0x0224743C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + add r0, sp, #0x1c + mov r7, #0 + str r7, [r0] + str r7, [r0, #4] + add r6, r2, #0 + ldr r5, _022474A0 ; =0x02251430 + add r3, r1, #0 + str r7, [r0, #8] + ldmia r5!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r5] + add r1, r3, #0 + str r0, [r2] + str r7, [sp] + sub r0, r7, #1 + str r0, [sp, #4] + str r7, [sp, #8] + add r0, r4, #0 + add r2, r7, #0 + add r3, r7, #0 + str r6, [sp, #0xc] + bl MOD06_02247310 + add r4, r0, #0 + mov r1, #2 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0x1c + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_02020064 + add r0, r7, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add r0, r4, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_022474A0: .word 0x02251430 + + thumb_func_start MOD06_022474A4 +MOD06_022474A4: ; 0x022474A4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD06_0224700C + add r6, r0, #0 + mov r0, #0x6b + mov r5, #0 + add r2, r4, #0 + lsl r0, r0, #2 +_022474B8: + ldr r1, [r2, r0] + cmp r1, #0 + bne _022474E4 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r6, #0 + mov r2, #7 + bl FUN_020091E0 + lsl r1, r5, #2 + add r2, r4, r1 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r2, r1] + b _022474EC +_022474E4: + add r5, r5, #1 + add r2, r2, #4 + cmp r5, #4 + blt _022474B8 +_022474EC: + cmp r5, #4 + blt _022474F4 + bl ErrorHandling +_022474F4: + mov r0, #0x72 + mov r5, #0 + add r2, r4, #0 + lsl r0, r0, #2 +_022474FC: + ldr r1, [r2, r0] + cmp r1, #0 + bne _02247528 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r6, #0 + mov r2, #8 + bl FUN_02009358 + lsl r1, r5, #2 + add r2, r4, r1 + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r2, r1] + b _02247530 +_02247528: + add r5, r5, #1 + add r2, r2, #4 + cmp r5, #4 + blt _022474FC +_02247530: + cmp r5, #4 + blt _02247538 + bl ErrorHandling +_02247538: + add r0, r6, #0 + bl FUN_020066F4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02247544 +MOD06_02247544: ; 0x02247544 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r2, #4 + bl FUN_02006704 + add r1, r5, #0 + add r4, r0, #0 + bl FUN_020B0138 + ldr r1, [r5] + mov r0, #3 + ldr r1, [r1, #0xc] + mov r2, #0x20 + lsl r3, r0, #7 + bl FUN_02017FB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224756C +MOD06_0224756C: ; 0x0224756C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r4, r3, #0 + mov r2, #4 + bl FUN_02006704 + add r1, r4, #0 + add r6, r0, #0 + bl FUN_020B0088 + ldr r3, [r4] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r3, [r3, #0x10] + add r0, r5, #0 + mov r1, #3 + bl FUN_02017E14 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022475A4 +MOD06_022475A4: ; 0x022475A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + add r6, r1, #0 + mov r2, #0 + add r4, r3, #0 + mov r1, #3 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r5, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add r0, r6, #0 + add r1, r7, #0 + mov r2, #4 + bl FUN_02006704 + add r1, r4, #0 + add r6, r0, #0 + bl FUN_020B0180 + ldr r3, [r4] + add r0, r5, #0 + add r2, r3, #0 + ldr r3, [r3, #8] + mov r1, #3 + add r2, #0xc + bl FUN_02017DFC + mov r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0xc + mov r2, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020186B4 + add r0, r5, #0 + mov r1, #3 + bl FUN_02017CD0 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02247610 +MOD06_02247610: ; 0x02247610 + ldr r3, _02247618 ; =0x02018745 + mov r1, #3 + bx r3 + nop +_02247618: .word 0x02018745 + + thumb_func_start MOD06_0224761C +MOD06_0224761C: ; 0x0224761C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224767C + mov r0, #0 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD06_02247648 + add r0, r4, #0 + bl MOD06_02247650 + add r0, r4, #0 + bl MOD06_02247640 + mov r0, #1 + str r0, [r4, #0x2c] + pop {r4, pc} + + thumb_func_start MOD06_02247640 +MOD06_02247640: ; 0x02247640 + mov r1, #1 + str r1, [r0, #0x30] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247648 +MOD06_02247648: ; 0x02247648 + mov r1, #0 + str r1, [r0, #0x30] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247650 +MOD06_02247650: ; 0x02247650 + mov r1, #0x18 + str r1, [r0, #0x34] + mov r1, #0 + str r1, [r0, #0x38] + mov r1, #0x17 + str r1, [r0, #0x3c] + mov r1, #1 + str r1, [r0, #0x40] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247664 +MOD06_02247664: ; 0x02247664 + mov r1, #0x17 + str r1, [r0, #0x3c] + mov r1, #1 + str r1, [r0, #0x40] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247670 +MOD06_02247670: ; 0x02247670 + str r1, [r0, #0x44] + str r3, [r0, #0x48] + ldr r1, [sp] + str r2, [r0, #0x4c] + str r1, [r0, #0x50] + bx lr + + thumb_func_start MOD06_0224767C +MOD06_0224767C: ; 0x0224767C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0224768E + bl ErrorHandling +_0224768E: + ldr r0, _022476A0 ; =MOD06_022476D4 + add r1, r4, #0 + mov r2, #0x81 + bl FUN_0200CA60 + mov r1, #0x86 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_022476A0: .word MOD06_022476D4 + + thumb_func_start MOD06_022476A4 +MOD06_022476A4: ; 0x022476A4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _022476B6 + bl ErrorHandling +_022476B6: + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _022476D0 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + pop {r4, pc} + nop +_022476D0: .word 0xFFFF1FFF + + thumb_func_start MOD06_022476D4 +MOD06_022476D4: ; 0x022476D4 + push {r3, r4, r5, r6} + ldr r0, [r1, #0x2c] + cmp r0, #0 + beq _0224776A + mov r3, #1 + lsl r3, r3, #0x1a + ldr r2, [r3] + ldr r0, _02247770 ; =0xFFFF1FFF + and r2, r0 + ldr r0, [r1, #0x30] + lsl r0, r0, #0xd + orr r0, r2 + str r0, [r3] + add r3, #0x48 + ldrh r2, [r3] + mov r0, #0x3f + bic r2, r0 + ldr r0, [r1, #0x34] + orr r2, r0 + ldr r0, [r1, #0x38] + cmp r0, #0 + beq _02247704 + mov r0, #0x20 + orr r2, r0 +_02247704: + ldr r0, _02247774 ; =0x04000048 + strh r2, [r0] + ldrh r2, [r0, #2] + mov r0, #0x3f + bic r2, r0 + ldr r0, [r1, #0x3c] + orr r2, r0 + ldr r0, [r1, #0x40] + cmp r0, #0 + beq _0224771C + mov r0, #0x20 + orr r2, r0 +_0224771C: + ldr r5, _02247778 ; =0x0400004A + strh r2, [r5] + ldr r2, [r1, #0x50] + ldr r6, [r1, #0x48] + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + ldr r2, [r1, #0x4c] + asr r4, r0, #0xc + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + ldr r2, [r1, #0x44] + asr r3, r0, #0xc + asr r0, r2, #0xb + lsr r0, r0, #0x14 + asr r1, r6, #0xb + add r0, r2, r0 + lsr r1, r1, #0x14 + asr r0, r0, #0xc + add r1, r6, r1 + lsl r2, r0, #8 + mov r0, #0xff + asr r1, r1, #0xc + lsl r0, r0, #8 + lsl r1, r1, #0x18 + and r2, r0 + lsr r1, r1, #0x18 + orr r2, r1 + add r1, r5, #0 + sub r1, #0xa + strh r2, [r1] + lsl r1, r3, #8 + and r1, r0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + orr r1, r0 + sub r0, r5, #6 + strh r1, [r0] +_0224776A: + pop {r3, r4, r5, r6} + bx lr + nop +_02247770: .word 0xFFFF1FFF +_02247774: .word 0x04000048 +_02247778: .word 0x0400004A + + thumb_func_start MOD06_0224777C +MOD06_0224777C: ; 0x0224777C + ldr r3, _02247788 ; =0x02068B69 + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2, #0x5c] + mov r2, #2 + bx r3 + .align 2, 0 +_02247788: .word 0x02068B69 + + thumb_func_start MOD06_0224778C +MOD06_0224778C: ; 0x0224778C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + mov r1, #0x32 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _022477A8 + bl ErrorHandling +_022477A8: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + bl FUN_020671BC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldrh r0, [r5, #6] + add r2, r7, #0 + add r3, r4, #0 + str r0, [sp, #0xc] + ldrh r0, [r5] + ldrh r1, [r5, #2] + bl FUN_02012560 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022477D4 +MOD06_022477D4: ; 0x022477D4 + add r3, r0, #0 + add r2, r1, #0 + ldrh r0, [r3] + ldrh r1, [r3, #4] + ldr r3, _022477E0 ; =0x02012471 + bx r3 + .align 2, 0 +_022477E0: .word 0x02012471 + + thumb_func_start MOD06_022477E4 +MOD06_022477E4: ; 0x022477E4 + push {lr} + sub sp, #0xc + mov r2, #3 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r2, #4 + str r2, [sp, #8] + mov r2, #0x67 + lsl r2, r2, #2 + ldr r0, [r0, r2] + mov r2, #5 + mov r3, #0 + bl FUN_020091E0 + add sp, #0xc + pop {pc} + .align 2, 0 + + thumb_func_start MOD06_02247808 +MOD06_02247808: ; 0x02247808 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #3 + bl FUN_020094F0 + bl FUN_02009C5C + mov r1, #1 + bl FUN_020B1A14 + mov r1, #0x32 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + add r0, r4, #0 + add r1, r5, #0 + lsl r2, r2, #6 + bl GX_LoadOBJ + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224783C +MOD06_0224783C: ; 0x0224783C + push {r3, lr} + sub sp, #0x10 + mov r2, #2 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + str r2, [sp, #8] + mov r2, #4 + str r2, [sp, #0xc] + mov r2, #0x1a + lsl r2, r2, #4 + ldr r0, [r0, r2] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + add sp, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_02247860 +MOD06_02247860: ; 0x02247860 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020094F0 + bl FUN_02009C5C + add r6, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020094F0 + add r1, r6, #0 + bl FUN_02009E54 + mov r1, #1 + bl FUN_020B19C4 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022478A8 +MOD06_022478A8: ; 0x022478A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020094F0 + add r4, r0, #0 + bl FUN_02009C0C + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02009490 + mov r1, #0x6b + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_022478D2: + ldr r2, [r3, r1] + cmp r2, r4 + bne _022478E6 + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x6b + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _022478EE +_022478E6: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #4 + blt _022478D2 +_022478EE: + cmp r0, #4 + blt _022478F6 + bl ErrorHandling +_022478F6: + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020094F0 + add r4, r0, #0 + bl FUN_02009E04 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02009490 + mov r1, #0x6f + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_0224791C: + ldr r2, [r3, r1] + cmp r2, r4 + bne _02247930 + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x6f + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _02247938 +_02247930: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #3 + blt _0224791C +_02247938: + cmp r0, #3 + blt _02247940 + bl ErrorHandling +_02247940: + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020094F0 + add r4, r0, #0 + bl FUN_02009474 + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02009490 + mov r1, #0x72 + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_02247966: + ldr r2, [r3, r1] + cmp r2, r4 + bne _0224797A + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x72 + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _02247982 +_0224797A: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #4 + blt _02247966 +_02247982: + cmp r0, #4 + blt _0224798A + bl ErrorHandling +_0224798A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224798C +MOD06_0224798C: ; 0x0224798C + push {r3, lr} + sub sp, #0x10 + mov r2, #3 + str r2, [sp] + sub r3, r2, #4 + str r3, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + mov r3, #0x81 + str r3, [sp, #0xc] + mov r3, #2 + bl MOD06_02247310 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022479AC +MOD06_022479AC: ; 0x022479AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #2 + ldr r4, _02247A14 ; =0x02251634 + add r6, r1, #0 + str r0, [r5, #0x14] + mov r7, #0 +_022479BC: + ldr r0, [r4] + add r1, sp, #0x1c + str r0, [sp, #0x1c] + ldr r0, [r4, #4] + add r2, sp, #0x10 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [r4, #8] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #0xc] + str r0, [sp, #8] + ldr r0, [r4, #0x10] + ldr r3, [sp, #8] + str r0, [sp] + str r0, [sp, #0xc] + str r6, [sp, #4] + add r0, r5, #0 + bl MOD06_02247A18 + mov r0, #1 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0x14 + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldr r3, [sp, #8] + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x1c + add r2, sp, #0x10 + str r6, [sp, #4] + bl MOD06_02247A18 + add r7, r7, #1 + add r4, #0x14 + cmp r7, #0xd + blt _022479BC + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247A14: .word 0x02251634 + + thumb_func_start MOD06_02247A18 +MOD06_02247A18: ; 0x02247A18 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [sp, #0x34] + str r3, [sp, #8] + str r5, [sp, #0x10] + add r4, r1, #0 + str r0, [sp, #0xc] + ldmia r2!, {r0, r1} + add r3, sp, #0x14 + stmia r3!, {r0, r1} + ldr r0, [r2] + ldr r1, _02247A50 ; =0x022514E8 + str r0, [r3] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x84 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r3, [sp, #0x30] + add r2, r4, #0 + bl FUN_020644E4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_02247A50: .word 0x022514E8 + + thumb_func_start MOD06_02247A54 +MOD06_02247A54: ; 0x02247A54 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0xc + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #4] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r3, [r4, #4] + add r1, sp, #0 + bl MOD06_022473C4 + mov r1, #0 + str r0, [r4, #8] + bl FUN_020200A0 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_02247A9C +MOD06_02247A9C: ; 0x02247A9C + ldr r3, _02247AA4 ; =0x0201FFC9 + ldr r0, [r1, #8] + bx r3 + nop +_02247AA4: .word 0x0201FFC9 + + thumb_func_start MOD06_02247AA8 +MOD06_02247AA8: ; 0x02247AA8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + add r5, r0, #0 + bl FUN_0206477C + ldr r1, [sp] + ldr r0, [r4, #0x18] + add r0, r1, r0 + lsr r2, r0, #0x1f + lsl r1, r0, #0xb + str r0, [sp] + sub r1, r1, r2 + mov r0, #0xb + ror r1, r0 + add r0, r2, r1 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #8] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _02247B22 + ldr r3, [r4, #0x14] + ldr r0, [r3, #0x14] + cmp r0, #2 + bne _02247B16 + ldr r2, [r3, #0x4c] + ldr r0, [r3, #0x50] + mov r3, #2 + ldr r6, [sp, #4] + lsl r3, r3, #0xc + sub r5, r6, r3 + mov r1, #0 + cmp r5, r2 + blt _02247B0C + cmp r5, r0 + bgt _02247B0C + add r3, r6, r3 + cmp r3, r2 + blt _02247B0C + cmp r3, r0 + bgt _02247B0C + mov r1, #1 +_02247B0C: + ldr r0, [r4, #8] + bl FUN_020200A0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_02247B16: + cmp r0, #1 + bne _02247B22 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_020200A0 +_02247B22: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02247B28 +MOD06_02247B28: ; 0x02247B28 + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247B2C +MOD06_02247B2C: ; 0x02247B2C + push {r4, lr} + sub sp, #0x18 + add r2, sp, #0xc + mov r3, #0 + add r4, r0, #0 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + str r4, [sp, #8] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x82 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _02247B5C ; =0x02251510 + bl FUN_020644E4 + mov r1, #0x7b + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02247B5C: .word 0x02251510 + + thumb_func_start MOD06_02247B60 +MOD06_02247B60: ; 0x02247B60 + push {r3, lr} + mov r1, #0x7b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_02064738 + ldrb r0, [r0, #2] + pop {r3, pc} + + thumb_func_start MOD06_02247B70 +MOD06_02247B70: ; 0x02247B70 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02064738 + add r5, r0, #0 + ldr r0, [r5, #0x60] + cmp r0, #0 + beq _02247B8A + bl FUN_02064520 +_02247B8A: + ldr r0, [r5, #0x64] + cmp r0, #0 + beq _02247B94 + bl FUN_021F6240 +_02247B94: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02064520 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02247BA0 +MOD06_02247BA0: ; 0x02247BA0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + ldr r0, [r0] + add r1, sp, #0 + str r0, [r4, #0x5c] + add r0, r5, #0 + bl FUN_0206477C + mov r2, #0 + ldr r0, [r4, #0x5c] + add r1, sp, #0 + add r3, r2, #0 + bl MOD06_0224743C + str r0, [r4, #0x58] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_02247BCC +MOD06_02247BCC: ; 0x02247BCC + ldr r3, _02247BD4 ; =0x0201FFC9 + ldr r0, [r1, #0x58] + bx r3 + nop +_02247BD4: .word 0x0201FFC9 + + thumb_func_start MOD06_02247BD8 +MOD06_02247BD8: ; 0x02247BD8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5] + lsl r1, r0, #2 + ldr r0, _02247BF4 ; =0x02251460 + ldr r4, [r0, r1] +_02247BE4: + ldrb r1, [r5, #1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02247BE4 + pop {r3, r4, r5, pc} + .align 2, 0 +_02247BF4: .word 0x02251460 + + thumb_func_start MOD06_02247BF8 +MOD06_02247BF8: ; 0x02247BF8 + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247BFC +MOD06_02247BFC: ; 0x02247BFC + push {r3, lr} + mov r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #0x58] + bl FUN_020200A0 + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02247C0C +MOD06_02247C0C: ; 0x02247C0C + push {r4, r5, r6, lr} + sub sp, #0x18 + ldr r4, _02247CAC ; =0x02251478 + add r2, r0, #0 + ldmia r4!, {r0, r1} + add r3, sp, #0xc + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r4, _02247CB0 ; =0x02251424 + str r0, [r3] + ldmia r4!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r2, r0] + bl FUN_02064738 + add r4, r0, #0 + mov r3, #1 + add r5, r4, #0 + strb r3, [r4] + mov r2, #0 + strb r2, [r4, #1] + strb r2, [r4, #2] + add r6, sp, #0xc + ldmia r6!, {r0, r1} + add r5, #8 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, sp, #0 + str r0, [r5] + str r2, [r4, #0x14] + str r2, [r4, #0x18] + mov r0, #0xf + add r5, r4, #0 + str r2, [r4, #0x1c] + lsl r0, r0, #0xe + str r0, [r4, #0x38] + ldmia r6!, {r0, r1} + add r5, #0x2c + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, sp, #0xc + str r0, [r5] + lsl r0, r3, #9 + str r0, [r4, #0x50] + mov r0, #0x2d + lsl r0, r0, #0xe + str r0, [r4, #0x40] + str r2, [r4, #0x48] + lsl r0, r3, #0xd + str r0, [r4, #0x4c] + ldr r0, [r4, #0x58] + bl FUN_02020044 + ldr r0, [r4, #0x58] + add r1, sp, #0 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x58] + bl FUN_02020088 + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_02247CAC: .word 0x02251478 +_02247CB0: .word 0x02251424 + + thumb_func_start MOD06_02247CB4 +MOD06_02247CB4: ; 0x02247CB4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _02247CD4 + lsr r0, r0, #2 + add r0, r1, r0 + str r0, [r5, #0x4c] +_02247CD4: + ldr r0, _02247DB4 ; =0x0000013B + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r2, r0, #0xc + ldr r0, _02247DB8 ; =0x0000010E + cmp r2, r0 + bge _02247D1E + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_02247D1E: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02247D30 + str r0, [r5, #0x2c] +_02247D30: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _02247D42 + str r0, [r5, #0x30] +_02247D42: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + mov r0, #6 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + sub r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + str r1, [r5, #0x38] + asr r0, r0, #0xc + bpl _02247D64 + mov r0, #0 + str r0, [r5, #0x38] +_02247D64: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [sp, #4] + ldr r0, _02247DBC ; =0xFFFC0000 + cmp r1, r0 + bge _02247DAE + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + mov r0, #2 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_02247DAE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02247DB4: .word 0x0000013B +_02247DB8: .word 0x0000010E +_02247DBC: .word 0xFFFC0000 + + thumb_func_start MOD06_02247DC0 +MOD06_02247DC0: ; 0x02247DC0 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02247DC4 +MOD06_02247DC4: ; 0x02247DC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r3, _02247F1C ; =0x0225140C + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _02247F20 ; =0x02251400 + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x18 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02064738 + add r4, r0, #0 + mov r0, #2 + add r2, r4, #0 + strb r0, [r4] + mov r6, #0 + strb r6, [r4, #1] + mov r7, #1 + strb r7, [r4, #2] + str r6, [r4, #4] + add r3, sp, #0x24 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x18 + str r0, [r2] + str r6, [r4, #0x14] + str r6, [r4, #0x18] + str r6, [r4, #0x1c] + ldr r6, _02247F24 ; =0x0013B000 + add r2, r4, #0 + str r6, [r4, #0x38] + ldmia r3!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r7, #0 + add r0, #0xff + str r0, [r4, #0x50] + mov r0, #0xe1 + lsl r0, r0, #0xc + str r0, [r4, #0x40] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x48] + lsl r0, r7, #0x11 + str r0, [r4, #0x4c] + lsr r0, r6, #0xc + bl FUN_0201B988 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r0, [r4, #0x58] + add r1, sp, #0x24 + bl FUN_02020044 + ldr r0, [r4, #0x58] + add r1, sp, #0x18 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x58] + bl FUN_02020088 + ldr r0, [r4, #0x58] + add r1, r7, #0 + bl FUN_020200A0 + mov r1, #0x1e + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl MOD06_0224823C + str r0, [r4, #0x60] + add r0, r7, #0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_021F61F4 + ldr r2, _02247F28 ; =0xFFF88000 + add r1, r7, #0 + mov r3, #0xc + str r0, [r4, #0x64] + bl FUN_021F6254 + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _02247F2C ; =0x02251484 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x79 + ldr r1, [r4, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + mov r1, #2 + add r0, r4, #0 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247F1C: .word 0x0225140C +_02247F20: .word 0x02251400 +_02247F24: .word 0x0013B000 +_02247F28: .word 0xFFF88000 +_02247F2C: .word 0x02251484 + + thumb_func_start MOD06_02247F30 +MOD06_02247F30: ; 0x02247F30 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + sub r0, r1, r0 + str r0, [r5, #0x48] + bpl _02247F46 + mov r0, #0 + str r0, [r5, #0x48] +_02247F46: + mov r0, #2 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xa + cmp r1, r0 + ble _02247F58 + mov r0, #6 + lsl r0, r0, #0xa + sub r0, r1, r0 + str r0, [r5, #0x4c] +_02247F58: + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _02247F64 + str r0, [r5, #0x4c] +_02247F64: + ldr r0, _02248098 ; =0x0000013B + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r2, r0, #0xc + ldr r0, _0224809C ; =0x0000010E + cmp r2, r0 + bge _02247FAE + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_02247FAE: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #6 + lsl r0, r0, #0xa + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02247FC0 + str r0, [r5, #0x2c] +_02247FC0: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #6 + lsl r0, r0, #0xa + str r1, [r5, #0x30] + cmp r1, r0 + ble _02247FD2 + str r0, [r5, #0x30] +_02247FD2: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + mov r0, #2 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xe + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + str r1, [r5, #0x38] + asr r1, r0, #0xc + mov r0, #0x5a + lsl r0, r0, #2 + cmp r1, r0 + ble _02247FFA + lsl r0, r0, #0xc + str r0, [r5, #0x38] +_02247FFA: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _0224803C + mov r0, #0 + str r0, [r5, #4] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02248042 +_0224803C: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] +_02248042: + ldr r0, [r5, #4] + cmp r0, #0xc + bne _0224804E + ldr r0, [r5, #0x60] + bl MOD06_02248270 +_0224804E: + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + add r0, r4, #0 + bl FUN_02020120 + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + mov r0, #5 + add r1, #0x80 + lsl r0, r0, #0xa + str r1, [sp] + cmp r1, r0 + ble _02248078 + str r0, [sp] +_02248078: + ldr r1, [sp, #4] + mov r0, #5 + add r1, #0x80 + lsl r0, r0, #0xa + str r1, [sp, #4] + cmp r1, r0 + ble _02248088 + str r0, [sp, #4] +_02248088: + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_02248098: .word 0x0000013B +_0224809C: .word 0x0000010E + + thumb_func_start MOD06_022480A0 +MOD06_022480A0: ; 0x022480A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + mov r1, #3 + add r0, r4, #0 + bl FUN_02020130 + add r0, r4, #0 + bl FUN_0202011C + ldr r4, [r0, #4] + ldr r0, [r5, #0x58] + bl FUN_0202011C + ldr r0, [r0, #4] + sub r0, r4, r0 + str r0, [r5, #0x54] + ldr r0, [r5, #0x60] + bl MOD06_02248264 + ldr r0, [r5, #0x64] + mov r1, #2 + mov r2, #0 + mov r3, #0xc + bl FUN_021F6254 + mov r1, #1 + lsl r1, r1, #8 + str r1, [r5, #0x50] + lsl r0, r1, #0xb + str r0, [r5, #0x40] + mov r0, #0 + str r0, [r5, #0x48] + lsl r0, r1, #3 + str r0, [r5, #0x4c] + mov r0, #3 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022480FC +MOD06_022480FC: ; 0x022480FC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r5, #0x4c] + cmp r2, r1 + ble _02248120 + lsl r0, r0, #4 + str r0, [r5, #0x4c] +_02248120: + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + mov r0, #0x80 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + mov r0, #0x87 + ldr r1, [r5, #0x40] + lsl r0, r0, #0xc + cmp r1, r0 + bge _02248164 + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0x40] +_02248164: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02248176 + str r0, [r5, #0x2c] +_02248176: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _02248188 + str r0, [r5, #0x30] +_02248188: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp, #0x18] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #0x1c] + add r0, r4, #0 + add r1, sp, #0x18 + bl FUN_02020044 + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + add r0, r4, #0 + bl FUN_02020120 + add r2, sp, #0xc + add r3, sp, #0x18 + add r6, r0, #0 + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldmia r6!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #1 + ldr r1, [r5, #0x54] + lsl r0, r0, #0xc + sub r1, r1, r0 + str r1, [r5, #0x54] + ldr r0, [sp, #0x10] + add r0, r0, r1 + str r0, [sp, #0x10] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02020044 + mov r0, #1 + ldr r1, [sp] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp] + cmp r2, r1 + ble _022481FE + lsl r0, r0, #5 + str r0, [sp] +_022481FE: + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #4] + cmp r2, r1 + ble _02248212 + lsl r0, r0, #5 + str r0, [sp, #4] +_02248212: + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + ldr r1, [sp, #0x1c] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0xf0 + blt _02248232 + mov r0, #2 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_02248232: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248238 +MOD06_02248238: ; 0x02248238 + mov r0, #0 + bx lr + + thumb_func_start MOD06_0224823C +MOD06_0224823C: ; 0x0224823C + push {lr} + sub sp, #0x1c + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2] + str r3, [r2, #4] + str r1, [sp, #0xc] + str r3, [r2, #8] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x81 + str r1, [sp, #4] + ldr r1, _02248260 ; =0x022514D4 + bl FUN_020644E4 + add sp, #0x1c + pop {pc} + nop +_02248260: .word 0x022514D4 + + thumb_func_start MOD06_02248264 +MOD06_02248264: ; 0x02248264 + push {r3, lr} + bl FUN_02064738 + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD06_02248270 +MOD06_02248270: ; 0x02248270 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_02064738 + add r4, r0, #0 + mov r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #0xc] + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + add r0, r5, #0 + bl FUN_0206476C + ldr r0, [r4, #0x20] + mov r1, #5 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022482B8 +MOD06_022482B8: ; 0x022482B8 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_02064738 + add r4, r0, #0 + mov r0, #2 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #0xc] + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl MOD06_02245EAC + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_02020130 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022482F4 +MOD06_022482F4: ; 0x022482F4 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + str r1, [r4, #0x1c] + ldr r0, [r0, #4] + str r0, [r4, #0x20] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_02248308 +MOD06_02248308: ; 0x02248308 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _0224834C + ldr r1, [r4, #0xc] + lsl r2, r1, #2 + ldr r1, _02248350 ; =0x02251570 + ldr r1, [r1, r2] + str r1, [r4, #0x14] + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xc + blt _0224834C + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_0224834C: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02248350: .word 0x02251570 + + thumb_func_start MOD06_02248354 +MOD06_02248354: ; 0x02248354 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02248398 + ldr r1, [r4, #0xc] + lsl r2, r1, #2 + ldr r1, _0224839C ; =0x022514C4 + ldr r1, [r1, r2] + str r1, [r4, #0x14] + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #4 + blt _02248398 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_02248398: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224839C: .word 0x022514C4 + + thumb_func_start MOD06_022483A0 +MOD06_022483A0: ; 0x022483A0 + push {r3, lr} + ldr r2, [r1] + cmp r2, #1 + beq _022483AE + cmp r2, #2 + beq _022483B4 + pop {r3, pc} +_022483AE: + bl MOD06_02248308 + pop {r3, pc} +_022483B4: + bl MOD06_02248354 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022483BC +MOD06_022483BC: ; 0x022483BC + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x5f + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl MOD06_02248634 + add r1, r0, #0 + str r4, [r1, #0xc] + ldr r0, _022483DC ; =MOD06_02248400 + mov r2, #0x85 + str r5, [r1, #0x14] + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_022483DC: .word MOD06_02248400 + + thumb_func_start MOD06_022483E0 +MOD06_022483E0: ; 0x022483E0 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022483EC +MOD06_022483EC: ; 0x022483EC + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD06_02248400 +MOD06_02248400: ; 0x02248400 + push {r3, r4, r5, lr} + ldr r4, _02248434 ; =0x02251538 + add r5, r1, #0 +_02248406: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02248406 + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _02248432 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02248428 + bl FUN_02064584 +_02248428: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _02248432 + bl FUN_0201FDEC +_02248432: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248434: .word 0x02251538 + + thumb_func_start MOD06_02248438 +MOD06_02248438: ; 0x02248438 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD06_02246658 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248450 +MOD06_02248450: ; 0x02248450 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #4 + mov r1, #0x20 + bl FUN_020643C0 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r2, #2 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r0, r5, #0 + add r0, #0x18 + mov r1, #0x20 + add r3, r2, #0 + str r2, [sp, #0x14] + bl MOD06_0224593C + bl MOD06_02246604 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #7 + mov r3, #0 + bl MOD06_02245B94 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #3 + mov r3, #0 + bl MOD06_02245C6C + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD06_02245D44 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245C04 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245CDC + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245C38 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245D10 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02248522 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xd + mov r3, #2 + bl MOD06_02245B94 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xe + mov r3, #2 + bl MOD06_02245D44 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xf + mov r3, #1 + bl MOD06_02245DB4 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C04 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C38 + b _02248582 +_02248522: + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x10 + mov r3, #2 + bl MOD06_02245B94 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #4 + mov r3, #1 + bl MOD06_02245C6C + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x11 + mov r3, #2 + bl MOD06_02245D44 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x12 + mov r3, #1 + bl MOD06_02245DB4 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C04 + add r0, r5, #0 + add r0, #0x18 + mov r1, #1 + bl MOD06_02245CDC + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C38 + add r0, r5, #0 + add r0, #0x18 + mov r1, #1 + bl MOD06_02245D10 +_02248582: + add r0, r4, #0 + bl FUN_020066F4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02248594 +MOD06_02248594: ; 0x02248594 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0xc] + add r0, #0x18 + bl MOD06_02245F2C + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200A0 + mov r3, #0x17 + lsl r3, r3, #4 + ldr r1, [r4, r3] + sub r3, r3, #4 + add r2, r4, #0 + ldr r0, [r4, #0x14] + ldr r3, [r4, r3] + add r2, #0x18 + bl MOD06_02245F6C + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl MOD06_02246034 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_022485DC +MOD06_022485DC: ; 0x022485DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD06_02245FA0 + cmp r0, #2 + beq _022485F2 + mov r0, #0 + pop {r4, pc} +_022485F2: + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD06_02245FD0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248608 +MOD06_02248608: ; 0x02248608 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_020643F0 + add r0, r4, #0 + add r0, #0x18 + bl MOD06_02245A80 + mov r0, #0 + str r0, [r4, #0x10] + mov r1, #1 + str r1, [r4, #4] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248630 +MOD06_02248630: ; 0x02248630 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02248634 +MOD06_02248634: ; 0x02248634 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _02248644 + bl ErrorHandling +_02248644: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02248654 +MOD06_02248654: ; 0x02248654 + push {r3, r4, r5, lr} + ldr r0, [r0, #0x60] + add r4, r1, #0 + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_02058914 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0205889C + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02248670 +MOD06_02248670: ; 0x02248670 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r4] + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_02248684 +MOD06_02248684: ; 0x02248684 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4] + bl FUN_0202011C + ldr r1, [r4, #4] + ldr r0, [r0, #4] + ldr r5, [r1, #0x4c] + ldr r3, [r1, #0x50] + ldr r1, [r1, #0x1c] + cmp r1, #0 + bne _022486C0 + mov r1, #2 + lsl r1, r1, #0xe + sub r2, r0, r1 + cmp r2, r5 + blt _022486B6 + add r0, r0, r1 + cmp r0, r3 + bgt _022486B6 + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_022486B6: + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_022486C0: + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022486CC +MOD06_022486CC: ; 0x022486CC + push {r3, r4, lr} + sub sp, #0x1c + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2] + add r4, r0, #0 + str r3, [r2, #4] + mov r0, #0x79 + str r3, [r2, #8] + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, r0, #4 + str r1, [sp, #8] + str r4, [sp, #0xc] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x86 + str r1, [sp, #4] + ldr r0, [r4, r0] + ldr r1, _02248704 ; =0x022514FC + bl FUN_020644E4 + mov r1, #0x1f + lsl r1, r1, #4 + str r0, [r4, r1] + add sp, #0x1c + pop {r3, r4, pc} + nop +_02248704: .word 0x022514FC + + thumb_func_start MOD06_02248708 +MOD06_02248708: ; 0x02248708 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02248722 + bl FUN_02064520 + mov r0, #0x1f + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_02248722: + pop {r4, pc} + + thumb_func_start MOD06_02248724 +MOD06_02248724: ; 0x02248724 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r1, #8] + str r1, [sp] + mov r1, #0 + bl FUN_0206B9B0 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + add r7, r0, #0 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + add r0, r7, #0 + bl MOD06_02248810 + str r0, [sp, #4] + cmp r0, #0 + beq _022487AC + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [sp] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _0224877E + cmp r4, #0 + beq _02248782 +_0224877E: + cmp r0, #4 + bne _0224878A +_02248782: + add r0, sp, #4 + bl FUN_0202AA90 + b _0224879E +_0224878A: + ldr r0, [sp, #4] + mov r1, #5 + add r2, r4, #0 + bl FUN_0202AAFC + ldr r0, [sp, #4] + mov r1, #7 + add r2, r6, #0 + bl FUN_0202AAFC +_0224879E: + ldr r1, [r5, #0x1c] + add r0, r7, #0 + ldr r1, [r1] + bl MOD06_022487D8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022487AC: + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _022487C4 + bl ErrorHandling +_022487C4: + cmp r4, #0x1e + bhs _022487D2 + ldr r1, [r5, #0x1c] + add r0, r7, #0 + ldr r1, [r1] + bl MOD06_022487D8 +_022487D2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022487D8 +MOD06_022487D8: ; 0x022487D8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_022487E0: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AA74 + cmp r0, #0 + beq _02248804 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AA40 + bl FUN_0206043C + cmp r6, r0 + bne _02248804 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020603B0 +_02248804: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _022487E0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02248810 +MOD06_02248810: ; 0x02248810 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_02248818: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AA74 + cmp r0, #0 + beq _0224883C + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AAA0 + mov r1, #4 + add r7, r0, #0 + bl FUN_0202AAB8 + cmp r6, r0 + bne _0224883C + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224883C: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _02248818 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224884C +MOD06_0224884C: ; 0x0224884C + push {r3, r4, r5, r6, lr} + sub sp, #0x104 + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #4 + blo _0224885C + bl ErrorHandling +_0224885C: + add r0, r5, #0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_0224886C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224886C + mov r2, #0 + str r2, [sp] + mov r0, #0x73 + add r1, r6, #0 + add r3, r5, #0 + bl FUN_02006C98 + str r0, [r4] + str r5, [r4, #0x10] + str r6, [r4, #0xc] + add r0, r5, #0 + bl FUN_020669C0 + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_02023928 + str r0, [r4, #8] + bl FUN_02023948 + add r0, r5, #0 + add r1, r6, #4 + bl MOD06_022489AC + add r5, r0, #0 + add r1, sp, #4 + mov r2, #0x80 + bl FUN_02021EF0 + add r0, r5, #0 + bl FUN_02021A20 + ldr r0, [r4, #8] + add r1, sp, #4 + bl FUN_0202395C + ldr r1, [r4] + ldr r0, [r4, #8] + ldr r1, [r1, #0x40] + bl FUN_020239C8 + add r0, r4, #0 + add sp, #0x104 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_022488CC +MOD06_022488CC: ; 0x022488CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022488EC +MOD06_022488EC: ; 0x022488EC + ldr r0, [r0] + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD06_022488F4 +MOD06_022488F4: ; 0x022488F4 + ldr r0, [r0] + ldr r0, [r0, #0x4c] + bx lr + .align 2, 0 + + thumb_func_start MOD06_022488FC +MOD06_022488FC: ; 0x022488FC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_0206BB1C + ldr r2, [r4, #4] + add r1, r6, #0 + bl FUN_0206B9DC + ldr r0, [r5, #0xc] + ldr r1, [r4, #4] + bl FUN_0202C144 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224891C +MOD06_0224891C: ; 0x0224891C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #0xc] + add r7, r2, #0 + add r5, r1, #0 + add r4, r3, #0 + bl FUN_0206BB1C + add r1, r7, #0 + bl FUN_0206B9B0 + mov r1, #0xa0 + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + add r2, r0, #0 + ldr r0, [r5, #0x10] + str r0, [sp] + ldr r0, [r6, #0x1c] + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r1, [r5] + ldr r3, [r5, #0xc] + bl MOD06_022489D4 + ldr r1, [sp, #0x20] + add r0, r7, #0 + bl FUN_02069B88 + ldr r0, [r5, #4] + ldr r1, [sp, #0x24] + bl FUN_02069B88 + ldr r0, [sp, #0x20] + bl FUN_020690E4 + str r0, [r4] + ldr r0, [sp, #0x24] + bl FUN_020690E4 + str r0, [r4, #4] + ldr r0, [r5, #8] + str r0, [r4, #8] + mov r0, #1 + str r0, [r4, #0x10] + ldr r0, [r6, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x14] + add r0, r6, #0 + bl FUN_0204B2A4 + cmp r0, #1 + bhi _02248996 + mov r0, #0 + add sp, #8 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02248996: + cmp r0, #2 + bne _022489A2 + mov r0, #1 + add sp, #8 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022489A2: + mov r0, #2 + str r0, [r4, #0xc] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022489AC +MOD06_022489AC: ; 0x022489AC + push {r3, r4, r5, lr} + ldr r2, _022489D0 ; =0x00000146 + add r3, r0, #0 + add r4, r1, #0 + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022489D0: .word 0x00000146 + + thumb_func_start MOD06_022489D4 +MOD06_022489D4: ; 0x022489D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r3, #0 + mov r3, #1 + add r4, r1, #0 + str r3, [sp] + ldr r1, [r4, #0x38] + add r5, r0, #0 + str r1, [sp, #4] + str r3, [sp, #8] + ldr r1, [r4, #0x20] + mov r3, #0x20 + str r1, [sp, #0xc] + ldr r1, [r4] + bl FUN_02066ACC + ldr r0, [sp, #0x28] + add r1, r6, #0 + bl MOD06_022489AC + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x76 + add r2, r7, #0 + bl FUN_02067830 + add r0, r7, #0 + bl FUN_02021A20 + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x4d + add r2, sp, #0x10 + bl FUN_02067830 + add r0, r5, #0 + mov r1, #0x46 + add r2, r4, #4 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x47 + add r2, #8 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x48 + add r2, #0xc + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x49 + add r2, #0x10 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x4a + add r2, #0x14 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x4b + add r2, #0x18 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x13 + add r2, #0x24 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x14 + add r2, #0x28 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x15 + add r2, #0x2c + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x16 + add r2, #0x30 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x17 + add r2, #0x34 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #6 + add r2, #0x3c + bl FUN_02067830 + ldr r0, [sp, #0x28] + add r1, r6, #4 + bl MOD06_022489AC + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x90 + add r2, r6, #0 + bl FUN_02067830 + add r0, r6, #0 + bl FUN_02021A20 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x9c + add r2, #0x40 + bl FUN_02067830 + add r4, #0x48 + add r0, r5, #0 + mov r1, #0xc + add r2, r4, #0 + bl FUN_02067830 + ldr r0, [sp, #0x2c] + bl FUN_02034824 + add r3, r0, #0 + ldr r0, [sp, #0x28] + mov r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r2, #1 + bl FUN_0208089C + add r0, r5, #0 + bl FUN_02066ED8 + add r0, r5, #0 + bl FUN_02068A80 + cmp r0, #0 + beq _02248B08 + bl ErrorHandling +_02248B08: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248B0C +MOD06_02248B0C: ; 0x02248B0C + ldr r3, _02248B14 ; =0x020CE34C + mov r1, #0 + mov r2, #0x18 + bx r3 + .align 2, 0 +_02248B14: .word 0x020CE34C + + thumb_func_start MOD06_02248B18 +MOD06_02248B18: ; 0x02248B18 + strb r1, [r0, #3] + bx lr + + thumb_func_start MOD06_02248B1C +MOD06_02248B1C: ; 0x02248B1C + strb r1, [r0, #2] + bx lr + + thumb_func_start MOD06_02248B20 +MOD06_02248B20: ; 0x02248B20 + strb r1, [r0, #1] + bx lr + + thumb_func_start MOD06_02248B24 +MOD06_02248B24: ; 0x02248B24 + ldr r3, _02248B2C ; =0x02002269 + add r0, r0, #4 + mov r2, #8 + bx r3 + .align 2, 0 +_02248B2C: .word 0x02002269 + + thumb_func_start MOD06_02248B30 +MOD06_02248B30: ; 0x02248B30 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0202B5C8 + strb r0, [r5] + str r4, [r5, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02248B44 +MOD06_02248B44: ; 0x02248B44 + push {r3, lr} + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _02248B50 + bl FUN_0202B5CC +_02248B50: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02248B54 +MOD06_02248B54: ; 0x02248B54 + ldrb r0, [r0, #3] + bx lr + + thumb_func_start MOD06_02248B58 +MOD06_02248B58: ; 0x02248B58 + ldrb r0, [r0, #2] + bx lr + + thumb_func_start MOD06_02248B5C +MOD06_02248B5C: ; 0x02248B5C + add r0, r0, #4 + bx lr + + thumb_func_start MOD06_02248B60 +MOD06_02248B60: ; 0x02248B60 + ldr r3, _02248B68 ; =0x0202B5D9 + ldr r0, [r0, #0x14] + bx r3 + nop +_02248B68: .word 0x0202B5D9 + + thumb_func_start MOD06_02248B6C +MOD06_02248B6C: ; 0x02248B6C + ldrb r0, [r0] + bx lr + + thumb_func_start MOD06_02248B70 +MOD06_02248B70: ; 0x02248B70 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #4 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bl MOD06_02248B0C + add r0, r5, #0 + bl FUN_0202B534 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B24 + add r0, r5, #0 + bl FUN_0202B538 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B1C + add r0, r5, #0 + bl FUN_0202B53C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B20 + add r0, r5, #0 + bl FUN_0202B540 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B30 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02248BC0 +MOD06_02248BC0: ; 0x02248BC0 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r6, r1, #0 + bl FUN_020238F4 + add r5, r0, #0 + mov r0, #4 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bl MOD06_02248B0C + add r0, r5, #0 + bl FUN_0202398C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B24 + add r0, r5, #0 + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B18 + add r0, r4, #0 + mov r1, #2 + bl MOD06_02248B1C + add r0, r4, #0 + mov r1, #0xa + bl MOD06_02248B20 + add r0, r6, #0 + bl FUN_0202B544 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B30 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02248C18 +MOD06_02248C18: ; 0x02248C18 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl FUN_020238F4 + add r6, r0, #0 + mov r0, #4 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bl MOD06_02248B0C + add r0, r6, #0 + strb r5, [r4] + bl FUN_0202398C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B24 + add r0, r6, #0 + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B18 + add r0, r4, #0 + mov r1, #2 + bl MOD06_02248B1C + add r0, r4, #0 + mov r1, #0xa + bl MOD06_02248B20 + mov r0, #0 + str r0, [r4, #0x14] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02248C68 +MOD06_02248C68: ; 0x02248C68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_02022504 + add r7, r0, #0 + cmp r4, #4 + bne _02248C86 + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_02248C18 + pop {r3, r4, r5, r6, r7, pc} +_02248C86: + add r0, r6, #0 + bl FUN_0202B820 + cmp r0, #0 + bne _02248CA4 + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0202B7F4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_02248B70 + pop {r3, r4, r5, r6, r7, pc} +_02248CA4: + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0202B7C8 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_02248BC0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248CB8 +MOD06_02248CB8: ; 0x02248CB8 + ldr r3, _02248CBC ; =0x02016A19 + bx r3 + .align 2, 0 +_02248CBC: .word 0x02016A19 + + thumb_func_start MOD06_02248CC0 +MOD06_02248CC0: ; 0x02248CC0 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + mov r1, #1 + bl FUN_0202B40C + pop {r3, pc} + + thumb_func_start MOD06_02248CD0 +MOD06_02248CD0: ; 0x02248CD0 + push {r4, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + add r4, r0, #0 + bl FUN_0202B410 + cmp r0, #1 + bne _02248CE6 + mov r0, #0 + pop {r4, pc} +_02248CE6: + add r0, r4, #0 + bl FUN_0202B458 + cmp r0, #0 + bne _02248CF4 + mov r0, #2 + pop {r4, pc} +_02248CF4: + cmp r0, #4 + bne _02248CFC + mov r0, #1 + pop {r4, pc} +_02248CFC: + mov r0, #3 + pop {r4, pc} + + thumb_func_start MOD06_02248D00 +MOD06_02248D00: ; 0x02248D00 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_0204B2CC + add r0, r0, #6 + mov r1, #7 + bl _s32_div_f + add r0, r4, #0 + add r5, r1, #0 + bl FUN_0204B2D8 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204B2E4 + mov r1, #0xf + bl _s32_div_f + add r6, #0x13 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0x18 + bl _s32_div_f + add r6, r1, #0 + lsl r6, r6, #2 + mov r3, #7 + add r4, r4, r6 + str r3, [sp] + add r0, sp, #4 + mov r1, #0x7e + mov r2, #0 + mul r3, r4 + bl FUN_02006548 + add r0, sp, #4 + ldrb r4, [r0, r5] + cmp r4, #0 + beq _02248D56 + cmp r4, #9 + blo _02248D5A +_02248D56: + bl ErrorHandling +_02248D5A: + add r0, r4, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_02248D60 +MOD06_02248D60: ; 0x02248D60 + push {r4, lr} + sub sp, #8 + add r3, r0, #0 + sub r4, r3, #1 + lsl r3, r4, #3 + mov r2, #1 + add r0, sp, #4 + mov r1, #0x7e + add r3, r4, r3 + str r2, [sp] + bl FUN_02006548 + add r0, sp, #4 + ldrb r0, [r0] + cmp r0, #5 + blo _02248D84 + bl ErrorHandling +_02248D84: + add r0, sp, #4 + ldrb r0, [r0] + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_02248D8C +MOD06_02248D8C: ; 0x02248D8C + push {r3, r4, lr} + sub sp, #4 + add r3, r0, #0 + sub r4, r3, #1 + lsl r3, r4, #3 + mov r0, #8 + add r3, r4, r3 + str r0, [sp] + add r0, r1, #0 + mov r1, #0x7e + mov r2, #1 + add r3, r3, #1 + bl FUN_02006548 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_02248DAC +MOD06_02248DAC: ; 0x02248DAC + mov r0, #1 + bx lr + + thumb_func_start MOD06_02248DB0 +MOD06_02248DB0: ; 0x02248DB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7, #0xc] + str r2, [sp, #4] + bl FUN_02022504 + ldr r0, [sp] + add r1, sp, #8 + bl MOD06_02248D8C + ldr r0, [sp, #4] + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r6, #0 + add r4, r6, #0 + add r5, sp, #8 +_02248DD8: + ldrb r2, [r5] + cmp r2, #0 + beq _02248DFA + ldr r1, [sp] + add r0, r7, #0 + bl MOD06_02248DAC + cmp r0, #1 + bne _02248DF2 + ldrb r1, [r5] + ldr r0, [sp, #4] + strb r1, [r0, r4] + add r4, r4, #1 +_02248DF2: + add r6, r6, #1 + add r5, r5, #1 + cmp r6, #8 + blt _02248DD8 +_02248DFA: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02248E00 +MOD06_02248E00: ; 0x02248E00 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r1, #0 + add r4, r1, #0 + add r2, sp, #0 +_02248E16: + ldrb r0, [r5, r1] + cmp r0, #0 + beq _02248E22 + strb r0, [r2] + add r2, r2, #1 + add r4, r4, #1 +_02248E22: + add r1, r1, #1 + cmp r1, #8 + blt _02248E16 + cmp r4, #0 + bne _02248E32 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, pc} +_02248E32: + cmp r4, #1 + bne _02248E3E + add r0, sp, #0 + add sp, #8 + ldrb r0, [r0] + pop {r3, r4, r5, pc} +_02248E3E: + bl FUN_0201BA60 + add r1, r4, #0 + bl _u32_div_f + add r0, sp, #0 + ldrb r0, [r0, r1] + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02248E50 +MOD06_02248E50: ; 0x02248E50 + push {r4, lr} + sub sp, #8 + add r4, r2, #0 + cmp r1, #4 + beq _02248E6A + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl FUN_0202B678 + add sp, #8 + pop {r4, pc} +_02248E6A: + ldr r1, [sp, #0x10] + cmp r1, #0 + beq _02248E76 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02248E76: + cmp r3, #0 + bne _02248E80 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02248E80: + add r1, r4, #0 + bl FUN_0202B440 + cmp r0, #0 + bne _02248E94 + ldr r0, [sp, #0x14] + add sp, #8 + strb r4, [r0] + mov r0, #1 + pop {r4, pc} +_02248E94: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248E9C +MOD06_02248E9C: ; 0x02248E9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #8] + ldr r6, [sp, #0x40] + ldr r0, [r1, #0xc] + str r2, [sp, #0xc] + str r3, [sp, #0x10] + ldr r5, [sp, #0x44] + bl FUN_02022504 + str r0, [sp, #0x14] + ldrb r0, [r6] + mov r4, #0 + cmp r0, #0 + beq _02248EFC + add r7, sp, #0x18 +_02248EBC: + add r0, r7, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #8] + str r0, [sp] + str r7, [sp, #4] + ldrb r2, [r6] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0xc] + bl MOD06_02248E50 + cmp r0, #0 + beq _02248EF4 + mov r0, #0 + add r1, r7, #0 + b _02248EEA +_02248EE2: + strb r2, [r5, r4] + add r4, r4, #1 + add r1, r1, #1 + add r0, r0, #1 +_02248EEA: + ldrb r2, [r1] + cmp r2, #0 + beq _02248EF4 + cmp r0, #0x10 + blt _02248EE2 +_02248EF4: + add r6, r6, #1 + ldrb r0, [r6] + cmp r0, #0 + bne _02248EBC +_02248EFC: + add r0, r4, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02248F04 +MOD06_02248F04: ; 0x02248F04 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + mov r4, #0 + b _02248F36 +_02248F10: + add r0, r6, #0 + add r1, r7, #0 + bl MOD06_02248C68 + str r0, [sp] + ldr r2, [sp] + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02060D48 + cmp r0, #0 + bne _02248F2C + mov r0, #0 + strb r0, [r5] +_02248F2C: + ldr r0, [sp] + bl MOD06_02248CB8 + add r5, r5, #1 + add r4, r4, #1 +_02248F36: + ldrb r2, [r5] + cmp r2, #0 + beq _02248F40 + cmp r4, #0x10 + blt _02248F10 +_02248F40: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02248F44 +MOD06_02248F44: ; 0x02248F44 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl FUN_02022504 + ldrb r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _02248F6C + mov r6, #0 +_02248F58: + add r0, r4, #0 + bl FUN_0202B440 + cmp r0, #0 + beq _02248F64 + strb r6, [r5] +_02248F64: + add r5, r5, #1 + ldrb r1, [r5] + cmp r1, #0 + bne _02248F58 +_02248F6C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02248F70 +MOD06_02248F70: ; 0x02248F70 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD06_02248D00 + str r0, [sp, #8] + bl MOD06_02248D60 + add r4, r0, #0 + add r0, sp, #0xc + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + add r0, sp, #0x14 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, [sp, #8] + add r1, r5, #0 + add r2, sp, #0xc + bl MOD06_02248DB0 + add r0, sp, #0xc + str r0, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD06_02248E9C + cmp r0, #0 + bne _02248FC2 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02248FC2: + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD06_02248F04 + add r0, r5, #0 + add r1, sp, #0x14 + bl MOD06_02248F44 + add r0, r5, #0 + add r1, sp, #0x14 + bl MOD06_02248E00 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248FE0 +MOD06_02248FE0: ; 0x02248FE0 + push {r4, lr} + mov r1, #0 + add r2, r1, #0 + add r4, r0, #0 + bl MOD06_02248F70 + cmp r0, #0 + bne _02249016 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD06_02248F70 + cmp r0, #0 + bne _02249016 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD06_02248F70 + cmp r0, #0 + bne _02249016 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD06_02248F70 +_02249016: + pop {r4, pc} + + thumb_func_start MOD06_02249018 +MOD06_02249018: ; 0x02249018 + push {r4, lr} + bl MOD06_02248D00 + add r4, r0, #0 + cmp r4, #8 + bls _02249028 + bl ErrorHandling +_02249028: + ldr r2, _02249034 ; =0x02251738 + sub r1, r4, #1 + mov r0, #7 + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} + .align 2, 0 +_02249034: .word 0x02251738 + + thumb_func_start MOD06_02249038 +MOD06_02249038: ; 0x02249038 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl FUN_02022504 + add r6, r0, #0 + add r0, r4, #0 + bl MOD06_02249018 + add r4, r0, #0 + cmp r5, #3 + bhi _02249066 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224905E: ; jump table + .short _0224906A - _0224905E - 2 ; case 0 + .short _02249084 - _0224905E - 2 ; case 1 + .short _02249096 - _0224905E - 2 ; case 2 + .short _0224909A - _0224905E - 2 ; case 3 +_02249066: + bl ErrorHandling +_0224906A: + bl FUN_02012794 + cmp r0, #0 + beq _02249078 + cmp r0, #1 + beq _0224907C + b _02249080 +_02249078: + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_0224907C: + ldrb r0, [r4, #1] + pop {r4, r5, r6, pc} +_02249080: + ldrb r0, [r4, #2] + pop {r4, r5, r6, pc} +_02249084: + add r0, r6, #0 + bl FUN_0202B458 + cmp r0, #0 + bne _02249092 + ldrb r0, [r4, #3] + pop {r4, r5, r6, pc} +_02249092: + ldrb r0, [r4, #4] + pop {r4, r5, r6, pc} +_02249096: + ldrb r0, [r4, #5] + pop {r4, r5, r6, pc} +_0224909A: + ldrb r0, [r4, #6] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022490A0 +MOD06_022490A0: ; 0x022490A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + str r1, [sp, #4] + add r5, r2, #0 + add r6, r3, #0 + bl MOD06_02248D00 + bl MOD06_02248D60 + add r7, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02022504 + add r1, r5, #0 + bl FUN_0202B414 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD06_02248C68 + add r5, r0, #0 + bl MOD06_02248B44 + ldr r2, [sp, #4] + add r0, r7, #0 + add r1, r4, #0 + add r3, r5, #0 + str r6, [sp] + bl FUN_02060D1C + ldr r1, [sp, #0x20] + strh r0, [r1] + add r0, r5, #0 + bl MOD06_02248CB8 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022490F0 +MOD06_022490F0: ; 0x022490F0 + mov r0, #1 + bx lr + + thumb_func_start MOD06_022490F4 +MOD06_022490F4: ; 0x022490F4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #7 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249108 +MOD06_02249108: ; 0x02249108 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + add r2, r1, #0 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224911C +MOD06_0224911C: ; 0x0224911C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #9 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249130 +MOD06_02249130: ; 0x02249130 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #0xa + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249144 +MOD06_02249144: ; 0x02249144 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #0xb + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249158 +MOD06_02249158: ; 0x02249158 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #0x11 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224916C +MOD06_0224916C: ; 0x0224916C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020238F4 + bl FUN_020239F4 + cmp r0, #5 + blt _02249180 + mov r0, #1 + pop {r3, pc} +_02249180: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02249184 +MOD06_02249184: ; 0x02249184 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024504 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249194 +MOD06_02249194: ; 0x02249194 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024D64 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022491A4 +MOD06_022491A4: ; 0x022491A4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED0C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022491B4 +MOD06_022491B4: ; 0x022491B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r4, _022491F4 ; =0x02251770 + str r0, [sp] + add r7, r1, #0 + mov r6, #0 + add r5, sp, #4 +_022491C2: + ldr r0, [sp] + ldr r1, [r4] + blx r1 + add r6, r6, #1 + add r4, r4, #4 + stmia r5!, {r0} + cmp r6, #0xb + blo _022491C2 + mov r4, #0 + ldr r3, _022491F8 ; =0x02252338 + add r0, r4, #0 + add r2, sp, #4 +_022491DA: + ldrb r1, [r3] + lsl r1, r1, #2 + ldr r1, [r2, r1] + cmp r1, #0 + beq _022491E8 + strb r4, [r7, r0] + add r0, r0, #1 +_022491E8: + add r4, r4, #1 + add r3, r3, #1 + cmp r4, #0x1d + blo _022491DA + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022491F4: .word 0x02251770 +_022491F8: .word 0x02252338 + + thumb_func_start MOD06_022491FC +MOD06_022491FC: ; 0x022491FC + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_022491B4 + add r4, r0, #0 + bne _0224921E + add sp, #0x20 + mov r0, #0 + pop {r4, pc} +_0224921E: + bl FUN_0201BA60 + add r1, r4, #0 + bl _u32_div_f + add r0, sp, #0 + ldrb r0, [r0, r1] + add sp, #0x20 + pop {r4, pc} + + thumb_func_start MOD06_02249230 +MOD06_02249230: ; 0x02249230 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + cmp r1, #0 + bne _022492A4 + cmp r4, #0 + bne _02249244 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02249244: + add r0, sp, #0 + bl FUN_020126B4 + ldr r0, [sp, #4] + cmp r0, #0 + bne _02249254 + bl ErrorHandling +_02249254: + ldr r0, [sp, #4] + cmp r0, #0xc + bls _0224925E + bl ErrorHandling +_0224925E: + ldr r0, [sp, #4] + ldr r3, _022492A8 ; =0x0225181C + sub r0, r0, #1 + lsl r0, r0, #3 + ldr r6, [r3, r0] + add r2, r3, r0 + mov r1, #0 + cmp r6, #0 + ble _022492A2 + ldr r3, [r2, #4] + ldr r5, [sp, #8] +_02249274: + lsl r0, r1, #1 + ldrh r7, [r3, r0] + asr r7, r7, #8 + lsl r7, r7, #0x18 + lsr r7, r7, #0x18 + cmp r5, r7 + bne _02249298 + ldr r1, [r2, #4] + ldrh r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r1, r0, #0x16 + ldr r0, _022492AC ; =0x02251808 + ldr r0, [r0, r1] + add r0, r4, r0 + bpl _022492A4 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02249298: + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, r6 + blt _02249274 +_022492A2: + add r0, r4, #0 +_022492A4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022492A8: .word 0x0225181C +_022492AC: .word 0x02251808 + + thumb_func_start MOD06_022492B0 +MOD06_022492B0: ; 0x022492B0 + push {r3, r4, r5, lr} + mov r1, #0x4f + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4, #0x20] + bl MOD06_02249460 + add r0, r4, #0 + bl MOD06_022492EC + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022492D4 +MOD06_022492D4: ; 0x022492D4 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02249310 + add r0, r4, #0 + bl MOD06_022494C0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022492EC +MOD06_022492EC: ; 0x022492EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_021E4C20 + ldr r0, [r0, #0x34] + bl FUN_0205839C + sub r2, r0, #1 + ldr r0, _0224930C ; =MOD06_02249388 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x24] + pop {r4, pc} + nop +_0224930C: .word MOD06_02249388 + + thumb_func_start MOD06_02249310 +MOD06_02249310: ; 0x02249310 + ldr r3, _02249318 ; =0x0200CAB5 + ldr r0, [r0, #0x24] + bx r3 + nop +_02249318: .word 0x0200CAB5 + + thumb_func_start MOD06_0224931C +MOD06_0224931C: ; 0x0224931C + add r2, r0, #0 + add r2, #0x14 + add r3, r1, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + + thumb_func_start MOD06_0224932C +MOD06_0224932C: ; 0x0224932C + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + bx lr + .align 2, 0 + + thumb_func_start MOD06_02249338 +MOD06_02249338: ; 0x02249338 + ldr r1, [r0, #4] + lsl r2, r1, #2 + ldr r1, _0224935C ; =0x0225189C + ldr r1, [r1, r2] + str r1, [r0, #0x10] + ldr r2, [r0, #4] + mov r1, #0xc + add r3, r2, #0 + mul r3, r1 + ldr r1, _02249360 ; =0x0225190C + add r2, r0, #0 + add r3, r1, r3 + ldmia r3!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bx lr + .align 2, 0 +_0224935C: .word 0x0225189C +_02249360: .word 0x0225190C + + thumb_func_start MOD06_02249364 +MOD06_02249364: ; 0x02249364 + ldr r3, [r0] + cmp r3, r1 + bge _02249376 + add r2, r3, r2 + str r2, [r0] + cmp r2, r1 + ble _02249384 + str r1, [r0] + bx lr +_02249376: + cmp r3, r1 + ble _02249384 + sub r2, r3, r2 + str r2, [r0] + cmp r2, r1 + bge _02249384 + str r1, [r0] +_02249384: + bx lr + .align 2, 0 + + thumb_func_start MOD06_02249388 +MOD06_02249388: ; 0x02249388 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + bl FUN_02012794 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _022493A6 + cmp r1, #1 + beq _022493C8 + cmp r1, #2 + beq _022493D2 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_022493A6: + str r4, [r5, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249338 + ldr r0, [r5, #0x10] + bl MOD06_0224932C + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_022494E4 + ldr r0, [r5] + add sp, #0x10 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_022493C8: + ldr r0, [r5, #4] + cmp r0, r4 + beq _02249454 + add r0, r1, #1 + str r0, [r5] +_022493D2: + ldr r0, _02249458 ; =0x0225189C + lsl r1, r4, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + str r0, [sp] + mov r0, #0xc + mul r1, r0 + ldr r0, _0224945C ; =0x0225190C + add r2, sp, #4 + add r3, r0, r1 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + ldr r1, [sp, #4] + add r0, #0x14 + mov r2, #0x10 + bl MOD06_02249364 + ldr r7, [sp, #8] + add r0, r5, #0 + add r0, #0x18 + add r1, r7, #0 + mov r2, #0x10 + bl MOD06_02249364 + ldr r6, [sp, #0xc] + add r0, r5, #0 + add r0, #0x1c + add r1, r6, #0 + mov r2, #0x10 + bl MOD06_02249364 + add r0, r5, #0 + mov r2, #2 + ldr r1, [sp] + add r0, #0x10 + lsl r2, r2, #8 + bl MOD06_02249364 + ldr r0, [r5, #0x10] + bl MOD06_0224932C + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_022494E4 + ldr r1, [sp, #4] + ldr r0, [r5, #0x14] + cmp r1, r0 + bne _02249454 + ldr r0, [r5, #0x18] + cmp r7, r0 + bne _02249454 + ldr r0, [r5, #0x1c] + cmp r6, r0 + bne _02249454 + ldr r1, [r5, #0x10] + ldr r0, [sp] + cmp r0, r1 + bne _02249454 + str r4, [r5, #4] + mov r0, #1 + str r0, [r5] +_02249454: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249458: .word 0x0225189C +_0224945C: .word 0x0225190C + + thumb_func_start MOD06_02249460 +MOD06_02249460: ; 0x02249460 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + add r1, r4, r0 + add r0, #0xc + str r1, [sp] + add r0, r4, r0 + str r0, [sp, #4] + add r3, r4, #0 + ldr r0, [r4, #0x20] + mov r1, #0x11 + mov r2, #0 + add r3, #0x28 + bl FUN_021E51EC + mov r0, #0x4a + lsl r0, r0, #2 + add r1, r4, r0 + add r0, #0xc + str r1, [sp] + add r0, r4, r0 + str r0, [sp, #4] + add r3, r4, #0 + ldr r0, [r4, #0x20] + mov r1, #0x12 + mov r2, #0 + add r3, #0x7c + bl FUN_021E51EC + mov r0, #0x4b + lsl r0, r0, #2 + add r1, r4, r0 + add r0, #0xc + str r1, [sp] + add r0, r4, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r4, #0xd0 + mov r1, #0x13 + mov r2, #0 + add r3, r4, #0 + bl FUN_021E51EC + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022494C0 +MOD06_022494C0: ; 0x022494C0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_021E4C00 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_021E4C00 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_022494E4 +MOD06_022494E4: ; 0x022494E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + mov r2, #0x1f + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + lsl r2, r2, #0x10 + bl FUN_020BC02C + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020BBA34 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02249508 +MOD06_02249508: ; 0x02249508 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + mov r1, #0 + str r4, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _02249548 ; =0x02251888 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_02249548: .word 0x02251888 + + thumb_func_start MOD06_0224954C +MOD06_0224954C: ; 0x0224954C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + bl FUN_02058458 + str r0, [r4] + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_020589CC + cmp r0, #1 + ldr r0, [r4, #0x1c] + bne _0224958E + bl FUN_02058750 + b _02249592 +_0224958E: + bl FUN_02058450 +_02249592: + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02249598 +MOD06_02249598: ; 0x02249598 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224959C +MOD06_0224959C: ; 0x0224959C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x1c] + ldr r1, [r4] + add r5, r0, #0 + ldr r2, [r4, #4] + ldr r3, [r4, #8] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _022495C0 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_022495C0: + add r0, r6, #0 + mov r1, #8 + bl FUN_020587F4 + cmp r0, #0 + beq _022495D6 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_022495D6: + mov r0, #0 + str r0, [r4, #0xc] + ldr r1, _02249604 ; =0x00100200 + add r0, r6, #0 + bl FUN_0205842C + cmp r0, #1 + bne _022495EE + mov r0, #1 + add sp, #0xc + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_022495EE: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02249604: .word 0x00100200 + + thumb_func_start MOD06_02249608 +MOD06_02249608: ; 0x02249608 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + beq _02249660 + ldr r6, _02249664 ; =0x022518C4 + add r3, sp, #0 + mov r2, #4 +_0224961C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224961C + ldr r0, [r6] + add r1, sp, #0x24 + str r0, [r3] + ldr r0, [r4, #0x18] + bl MOD06_0224931C + add r0, r5, #0 + add r1, sp, #0x30 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [sp, #0x30] + lsl r1, r0, #3 + ldr r2, [sp, #0x34] + lsl r0, r0, #1 + sub r1, r2, r1 + str r1, [sp, #0x34] + ldr r1, [sp, #0x38] + add r2, sp, #0 + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0x28 + add r3, sp, #0x24 + bl FUN_0201B26C +_02249660: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02249664: .word 0x022518C4 + + thumb_func_start MOD06_02249668 +MOD06_02249668: ; 0x02249668 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_021E4C24 + add r6, r0, #0 + mov r1, #0 + str r6, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _022496A8 ; =0x022518B0 + add r0, r6, #0 + add r2, sp, #8 + add r3, r4, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r4, r5, r6, pc} + .align 2, 0 +_022496A8: .word 0x022518B0 + + thumb_func_start MOD06_022496AC +MOD06_022496AC: ; 0x022496AC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x1c] + ldr r1, [r4] + add r5, r0, #0 + ldr r2, [r4, #4] + ldr r3, [r4, #8] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _022496D0 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_022496D0: + mov r0, #0 + str r0, [r4, #0xc] + ldr r1, _022496FC ; =0x00100200 + add r0, r6, #0 + bl FUN_0205842C + cmp r0, #1 + bne _022496E8 + mov r0, #1 + add sp, #0xc + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_022496E8: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022496FC: .word 0x00100200 + + thumb_func_start MOD06_02249700 +MOD06_02249700: ; 0x02249700 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + beq _02249792 + ldr r5, _02249798 ; =0x0225187C + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224979C ; =0x022518E8 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_02249720: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02249720 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [sp, #0x30] + lsl r1, r0, #3 + ldr r2, [sp, #0x34] + lsl r0, r0, #1 + sub r1, r2, r1 + str r1, [sp, #0x34] + ldr r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02249760 + cmp r0, #1 + beq _02249772 + cmp r0, #2 + beq _02249784 + add sp, #0x3c + pop {r3, r4, r5, r6, pc} +_02249760: + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0x28 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} +_02249772: + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0x7c + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} +_02249784: + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0xd0 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_02249792: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_02249798: .word 0x0225187C +_0224979C: .word 0x022518E8 + + thumb_func_start MOD06_022497A0 +MOD06_022497A0: ; 0x022497A0 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_022497CC + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022497BC +MOD06_022497BC: ; 0x022497BC + push {r4, lr} + add r4, r0, #0 + bl MOD06_022497DC + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_022497CC +MOD06_022497CC: ; 0x022497CC + ldr r3, _022497D8 ; =0x021E5079 + ldr r0, [r0] + mov r1, #2 + mov r2, #0x14 + bx r3 + nop +_022497D8: .word 0x021E5079 + + thumb_func_start MOD06_022497DC +MOD06_022497DC: ; 0x022497DC + ldr r3, _022497E4 ; =0x021E50A1 + ldr r0, [r0] + mov r1, #2 + bx r3 + .align 2, 0 +_022497E4: .word 0x021E50A1 + + thumb_func_start MOD06_022497E8 +MOD06_022497E8: ; 0x022497E8 + push {r4, r5, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02058738 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_021E4C24 + mov r1, #1 + str r0, [sp, #0xc] + bl FUN_021E4C08 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, sp, #0x18 + str r5, [sp, #0x14] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r1, _02249830 ; =0x02251958 + add r2, sp, #0x18 + add r3, r4, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r4, r5, pc} + nop +_02249830: .word 0x02251958 + + thumb_func_start MOD06_02249834 +MOD06_02249834: ; 0x02249834 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + ldr r0, [r4, #0x20] + bl FUN_02058448 + str r0, [r4] + ldr r0, [r4, #0x20] + bl FUN_02058450 + str r0, [r4, #4] + ldr r0, [r4, #0x20] + bl FUN_02058458 + str r0, [r4, #8] + bl FUN_0205C334 + cmp r0, #1 + bne _0224987E + ldr r0, [r4, #0x20] + bl FUN_0205C340 + str r0, [r4, #8] +_0224987E: + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + mov r0, #0x40 + str r0, [r4, #0x34] + ldr r1, [r4, #0x20] + add r0, r4, #0 + add r2, sp, #0 + bl MOD06_02249A00 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249A68 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_022498AC +MOD06_022498AC: ; 0x022498AC + push {r3, lr} + ldr r0, [r1, #0xc] + cmp r0, #1 + bne _022498BA + ldr r0, [r1, #0x24] + bl FUN_0201F744 +_022498BA: + pop {r3, pc} + + thumb_func_start MOD06_022498BC +MOD06_022498BC: ; 0x022498BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x20] + add r5, r0, #0 + add r0, r6, #0 + bl FUN_02058458 + add r7, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _022498DE + ldr r0, [r4, #0x20] + bl FUN_0205C340 + add r7, r0, #0 +_022498DE: + ldr r0, [r4, #8] + cmp r0, r7 + bne _022498FC + ldr r1, [r4] + ldr r2, [r4, #4] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + beq _022498FC + add r0, r6, #0 + bl FUN_02058A9C + cmp r0, #0 + bne _02249906 +_022498FC: + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02249906: + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x34] + add r1, r1, r0 + mov r0, #0x12 + lsl r0, r0, #8 + str r1, [r4, #0x28] + cmp r1, r0 + blt _02249920 + str r0, [r4, #0x28] + ldr r0, [r4, #0x34] + neg r0, r0 + str r0, [r4, #0x34] + b _02249930 +_02249920: + mov r0, #0xe + lsl r0, r0, #8 + cmp r1, r0 + bgt _02249930 + str r0, [r4, #0x28] + ldr r0, [r4, #0x34] + neg r0, r0 + str r0, [r4, #0x34] +_02249930: + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0 + bl MOD06_02249A00 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _02249950 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249A68 +_02249950: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02249954 +MOD06_02249954: ; 0x02249954 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r4, [r5, #0x20] + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02058458 + add r7, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _02249976 + ldr r0, [r5, #0x20] + bl FUN_0205C340 + add r7, r0, #0 +_02249976: + ldr r0, [r5, #8] + cmp r0, r7 + bne _02249994 + ldr r1, [r5] + ldr r2, [r5, #4] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + beq _02249994 + add r0, r4, #0 + bl FUN_02058A9C + cmp r0, #0 + bne _0224999E +_02249994: + add r0, r6, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224999E: + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _022499FA + add r0, r4, #0 + bl FUN_02058890 + cmp r0, #1 + ldr r0, [r5, #0x24] + bne _022499B8 + mov r1, #0 + bl FUN_0201F80C + b _022499BE +_022499B8: + mov r1, #1 + bl FUN_0201F80C +_022499BE: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r5, #0x24] + add r1, sp, #0 + bl FUN_0201F7C8 + add r1, r5, #0 + ldr r0, [r5, #0x24] + add r1, #0x28 + bl FUN_0201F7F0 + ldr r0, [r5, #0x20] + bl FUN_021F0514 + add r4, r0, #0 + bl FUN_0201F844 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F830 + add r0, r4, #0 + bl FUN_0201F880 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F86C +_022499FA: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02249A00 +MOD06_02249A00: ; 0x02249A00 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02249A64 ; =0x02251948 + str r1, [sp] + ldr r1, [r0, #8] + ldr r0, [r0, #0xc] + add r4, r2, #0 + str r0, [sp, #8] + str r1, [sp, #4] + ldr r0, [sp] + add r1, r4, #0 + bl FUN_02058B84 + ldr r0, [r4, #8] + add r1, r4, #0 + neg r6, r0 + ldr r0, [sp] + ldr r7, [r4] + bl FUN_02058B5C + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_02059E9C + ldr r1, [r4] + add r1, r1, r7 + str r1, [r4] + mov r1, #7 + lsl r1, r1, #0xc + ldr r2, [r4, #8] + sub r1, r6, r1 + add r1, r2, r1 + str r1, [r4, #8] + cmp r0, #0 + bne _02249A50 + mov r0, #0 + add sp, #0xc + str r0, [r4, #4] + pop {r4, r5, r6, r7, pc} +_02249A50: + ldr r0, [r5, #0x10] + ldr r2, [r4, #4] + lsl r1, r0, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + sub r0, r2, r0 + str r0, [r4, #4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02249A64: .word 0x02251948 + + thumb_func_start MOD06_02249A68 +MOD06_02249A68: ; 0x02249A68 + push {r4, r5, lr} + sub sp, #0x34 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_02058578 + ldr r1, [r4, #8] + add r2, sp, #0 + bl FUN_021F220C + cmp r0, #0 + beq _02249AAE + ldr r0, [r4, #0x20] + bl FUN_021F2E28 + cmp r0, #1 + beq _02249AAE + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_021E5094 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x28 + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + add r2, sp, #0x28 + bl FUN_021E4E90 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0xc] +_02249AAE: + add sp, #0x34 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02249AB4 +MOD06_02249AB4: ; 0x02249AB4 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r4, r1, #0 + add r6, r4, #0 + add r5, r0, #0 + add r6, #0x10 + add r3, sp, #0 + mov r2, #5 +_02249AC4: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249AC4 + ldr r0, [r4, #8] + mov r1, #2 + bl FUN_021E5094 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x28 + bl FUN_0206477C + ldr r0, [r4, #8] + add r1, sp, #0 + add r2, sp, #0x28 + bl FUN_021E4E90 + str r0, [r4, #0x3c] + ldr r5, [r4, #0x38] + add r0, r5, #0 + bl FUN_0201F844 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0201F830 + add r0, r5, #0 + bl FUN_0201F8C0 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0201F890 + add r0, r5, #0 + bl FUN_0201F880 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0201F86C + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0201F854 + ldr r0, [r4, #0x3c] + bl FUN_0201F8F0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_02249B28 +MOD06_02249B28: ; 0x02249B28 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _02249B78 ; =0x02251948 + add r4, r1, #0 + ldr r1, [r0] + ldr r0, [r0, #4] + add r3, r5, #0 + add r3, #0x50 + str r1, [sp] + str r0, [sp, #4] + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r4, #0 + str r0, [r2] + ldr r0, [r5, #4] + bl FUN_02059E9C + mov r1, #7 + ldr r2, [r4, #8] + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [r4, #8] + cmp r0, #0 + bne _02249B66 + mov r0, #0 + add sp, #8 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02249B66: + ldr r0, [r5] + ldr r2, [r4, #4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + sub r0, r2, r0 + str r0, [r4, #4] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02249B78: .word 0x02251948 + + thumb_func_start MOD06_02249B7C +MOD06_02249B7C: ; 0x02249B7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_021E4C20 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #1 + str r5, [sp, #0xc] + bl FUN_021E4C08 + str r0, [sp, #0x10] + add r3, sp, #0x14 + mov r2, #5 +_02249B9E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249B9E + str r6, [sp, #0x3c] + add r0, sp, #8 + str r0, [sp] + ldr r0, [sp, #0x5c] + ldr r1, _02249BC0 ; =0x0225196C + str r0, [sp, #4] + ldr r3, [sp, #0x58] + add r0, r5, #0 + add r2, r7, #0 + bl FUN_021E4DC4 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249BC0: .word 0x0225196C + + thumb_func_start MOD06_02249BC4 +MOD06_02249BC4: ; 0x02249BC4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r6, r0, #0 + add r3, r4, #4 + mov r2, #7 +_02249BD6: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249BD6 + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x40] + str r0, [r4, #0x44] + str r0, [r4, #0x48] + mov r0, #0x40 + add r1, r4, #0 + str r0, [r4, #0x4c] + add r0, r5, #0 + add r1, #0x50 + bl FUN_0206477C + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_02249B28 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249AB4 + add r0, r5, #0 + bl FUN_020646DC + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02249C24 +MOD06_02249C24: ; 0x02249C24 + ldr r3, _02249C2C ; =0x0201F745 + ldr r0, [r1, #0x3c] + bx r3 + nop +_02249C2C: .word 0x0201F745 + + thumb_func_start MOD06_02249C30 +MOD06_02249C30: ; 0x02249C30 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r2, [r1, #0x40] + ldr r0, [r1, #0x4c] + add r2, r2, r0 + mov r0, #0x12 + lsl r0, r0, #8 + str r2, [r1, #0x40] + cmp r2, r0 + blt _02249C50 + str r0, [r1, #0x40] + ldr r0, [r1, #0x4c] + neg r0, r0 + str r0, [r1, #0x4c] + b _02249C60 +_02249C50: + mov r0, #0xe + lsl r0, r0, #8 + cmp r2, r0 + bgt _02249C60 + str r0, [r1, #0x40] + ldr r0, [r1, #0x4c] + neg r0, r0 + str r0, [r1, #0x4c] +_02249C60: + add r0, r1, #0 + add r1, sp, #0 + bl MOD06_02249B28 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_02249C74 +MOD06_02249C74: ; 0x02249C74 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_0201F7C8 + ldr r0, [r4, #0x3c] + add r4, #0x40 + add r1, r4, #0 + bl FUN_0201F7F0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02249C98 +MOD06_02249C98: ; 0x02249C98 + push {r3, r4, r5, lr} + mov r2, #0 + ldr r1, _02249CB4 ; =0x00000734 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_02249CC8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02249CB4: .word 0x00000734 + + thumb_func_start MOD06_02249CB8 +MOD06_02249CB8: ; 0x02249CB8 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02249D60 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_02249CC8 +MOD06_02249CC8: ; 0x02249CC8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, _02249D54 ; =0x022519EC + ldr r4, _02249D58 ; =0x022519C4 + str r0, [sp, #0x18] + ldr r0, _02249D5C ; =0x000006E4 + add r1, r5, r0 + str r1, [sp, #0x14] + add r1, r0, #0 + sub r1, #0x50 + add r1, r5, r1 + str r1, [sp, #0x10] + add r1, r5, #4 + str r1, [sp, #0xc] + add r1, r0, #0 + sub r0, #0x28 + add r6, r5, r0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r1, #0x28 + add r0, r5, r0 + add r7, r5, r1 + str r0, [sp, #8] +_02249CFC: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0xc] + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r1] + mov r2, #0 + bl FUN_021E51EC + str r6, [sp] + str r7, [sp, #4] + ldr r0, [r5] + ldr r1, [r4] + ldr r3, [sp, #8] + mov r2, #0 + bl FUN_021E51EC + ldr r0, [sp, #0x18] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r6, r6, #4 + add r0, r0, #4 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r4, r4, #4 + add r0, r0, #4 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + add r0, #0x54 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, #0x54 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #0xa + blt _02249CFC + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249D54: .word 0x022519EC +_02249D58: .word 0x022519C4 +_02249D5C: .word 0x000006E4 + + thumb_func_start MOD06_02249D60 +MOD06_02249D60: ; 0x02249D60 + push {r3, r4, r5, r6, r7, lr} + ldr r7, _02249D84 ; =0x000006E4 + add r5, r0, #0 + add r6, r7, #0 + mov r4, #0 + add r6, #0x28 +_02249D6C: + ldr r0, [r5, r7] + bl FUN_021E4C00 + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _02249D6C + pop {r3, r4, r5, r6, r7, pc} + nop +_02249D84: .word 0x000006E4 + + thumb_func_start MOD06_02249D88 +MOD06_02249D88: ; 0x02249D88 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r1, r3, #0 + mov r4, #0 + cmp r0, #3 + bhi _02249DEC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02249DA2: ; jump table + .short _02249DAA - _02249DA2 - 2 ; case 0 + .short _02249DB4 - _02249DA2 - 2 ; case 1 + .short _02249DC8 - _02249DA2 - 2 ; case 2 + .short _02249DD6 - _02249DA2 - 2 ; case 3 +_02249DAA: + mov r0, #0x54 + add r1, r5, #4 + mul r0, r2 + add r4, r1, r0 + b _02249DEC +_02249DB4: + lsl r3, r1, #4 + ldr r1, _02249DF8 ; =0x02251A14 + lsl r2, r2, #2 + add r1, r1, r3 + ldr r2, [r2, r1] + mov r1, #0x54 + add r0, r5, #4 + mul r1, r2 + add r4, r0, r1 + b _02249DEC +_02249DC8: + mov r0, #0xd3 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x54 + mul r0, r2 + add r4, r1, r0 + b _02249DEC +_02249DD6: + lsl r3, r1, #4 + ldr r1, _02249DF8 ; =0x02251A14 + lsl r2, r2, #2 + add r1, r1, r3 + mov r0, #0xd3 + ldr r2, [r2, r1] + lsl r0, r0, #2 + mov r1, #0x54 + add r0, r5, r0 + mul r1, r2 + add r4, r0, r1 +_02249DEC: + cmp r4, #0 + bne _02249DF4 + bl ErrorHandling +_02249DF4: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02249DF8: .word 0x02251A14 + + thumb_func_start MOD06_02249DFC +MOD06_02249DFC: ; 0x02249DFC + push {r4, lr} + mov r4, #0 + cmp r1, #3 + bhi _02249E52 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02249E10: ; jump table + .short _02249E18 - _02249E10 - 2 ; case 0 + .short _02249E22 - _02249E10 - 2 ; case 1 + .short _02249E36 - _02249E10 - 2 ; case 2 + .short _02249E40 - _02249E10 - 2 ; case 3 +_02249E18: + lsl r1, r2, #2 + add r1, r0, r1 + ldr r0, _02249E60 ; =0x00000694 + ldr r4, [r1, r0] + b _02249E52 +_02249E22: + ldr r1, _02249E64 ; =0x02251A14 + lsl r3, r3, #4 + lsl r2, r2, #2 + add r1, r1, r3 + ldr r1, [r2, r1] + lsl r1, r1, #2 + add r1, r0, r1 + ldr r0, _02249E60 ; =0x00000694 + ldr r4, [r1, r0] + b _02249E52 +_02249E36: + lsl r1, r2, #2 + add r1, r0, r1 + ldr r0, _02249E68 ; =0x000006BC + ldr r4, [r1, r0] + b _02249E52 +_02249E40: + ldr r1, _02249E64 ; =0x02251A14 + lsl r3, r3, #4 + lsl r2, r2, #2 + add r1, r1, r3 + ldr r1, [r2, r1] + lsl r1, r1, #2 + add r1, r0, r1 + ldr r0, _02249E68 ; =0x000006BC + ldr r4, [r1, r0] +_02249E52: + cmp r4, #0 + bne _02249E5A + bl ErrorHandling +_02249E5A: + add r0, r4, #0 + pop {r4, pc} + nop +_02249E60: .word 0x00000694 +_02249E64: .word 0x02251A14 +_02249E68: .word 0x000006BC + + thumb_func_start MOD06_02249E6C +MOD06_02249E6C: ; 0x02249E6C + ldr r3, _02249E74 ; =MOD06_02249E9C + mov r1, #0 + bx r3 + nop +_02249E74: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E78 +MOD06_02249E78: ; 0x02249E78 + ldr r3, _02249E80 ; =MOD06_02249E9C + mov r1, #1 + bx r3 + nop +_02249E80: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E84 +MOD06_02249E84: ; 0x02249E84 + ldr r3, _02249E8C ; =MOD06_02249E9C + mov r1, #2 + bx r3 + nop +_02249E8C: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E90 +MOD06_02249E90: ; 0x02249E90 + ldr r3, _02249E98 ; =MOD06_02249E9C + mov r1, #3 + bx r3 + nop +_02249E98: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E9C +MOD06_02249E9C: ; 0x02249E9C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02058B14 + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B24 + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_02058B80 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_020584C4 + str r0, [sp, #0x14] + add r0, r5, #0 + bl FUN_020584C8 + str r0, [sp, #0x18] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_021E4C24 + mov r1, #0xb + str r0, [sp, #8] + bl FUN_021E4C08 + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + add r1, r4, #0 + add r5, r0, #0 + bl MOD06_02249D88 + str r0, [sp, #0x20] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249DFC + str r0, [sp, #0x24] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + add r2, sp, #0x28 + str r4, [sp, #0x1c] + bl FUN_02059E60 + str r6, [sp, #0x2c] + cmp r4, #3 + bhi _02249F6A + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02249F1C: ; jump table + .short _02249F24 - _02249F1C - 2 ; case 0 + .short _02249F24 - _02249F1C - 2 ; case 1 + .short _02249F46 - _02249F1C - 2 ; case 2 + .short _02249F46 - _02249F1C - 2 ; case 3 +_02249F24: + mov r0, #2 + lsl r0, r0, #0xe + sub r1, r6, r0 + str r1, [sp, #0x2c] + sub r1, r4, #2 + cmp r1, #1 + bhi _02249F3C + ldr r1, [sp, #0x30] + lsr r0, r0, #2 + sub r0, r1, r0 + str r0, [sp, #0x30] + b _02249F6A +_02249F3C: + ldr r1, [sp, #0x30] + lsr r0, r0, #3 + add r0, r1, r0 + str r0, [sp, #0x30] + b _02249F6A +_02249F46: + mov r0, #0xa + lsl r0, r0, #0xc + sub r0, r6, r0 + str r0, [sp, #0x2c] + sub r0, r4, #2 + cmp r0, #1 + bhi _02249F60 + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x30] + b _02249F6A +_02249F60: + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x30] +_02249F6A: + add r0, sp, #0x1c + str r0, [sp] + ldr r0, [sp, #8] + ldr r1, _02249F80 ; =0x0225198C + add r2, sp, #0x28 + mov r3, #0 + str r7, [sp, #4] + bl FUN_021E4DC4 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02249F80: .word 0x0225198C + + thumb_func_start MOD06_02249F84 +MOD06_02249F84: ; 0x02249F84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0206475C + ldr r1, [r0, #4] + str r1, [r4, #0x14] + ldr r1, [r0, #8] + str r1, [r4, #0x18] + mov r1, #0x1f + str r1, [r4, #0xc] + ldr r0, [r0] + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02249FAC +MOD06_02249FAC: ; 0x02249FAC + bx lr + .align 2, 0 + + thumb_func_start MOD06_02249FB0 +MOD06_02249FB0: ; 0x02249FB0 + push {r3, lr} + ldr r2, [r1] + cmp r2, #0 + beq _02249FBE + cmp r2, #1 + beq _02249FD0 + pop {r3, pc} +_02249FBE: + ldr r0, [r1, #4] + add r0, r0, #1 + str r0, [r1, #4] + cmp r0, #0x10 + blt _02249FDC + ldr r0, [r1] + add r0, r0, #1 + str r0, [r1] + pop {r3, pc} +_02249FD0: + ldr r2, [r1, #0xc] + sub r2, r2, #2 + str r2, [r1, #0xc] + bpl _02249FDC + bl FUN_021E4DE4 +_02249FDC: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249FE0 +MOD06_02249FE0: ; 0x02249FE0 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + beq _0224A034 + ldr r5, _0224A038 ; =0x02251980 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A03C ; =0x022519A0 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A000: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A000 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r2, #0x1f + ldr r0, [r4, #0x18] + mov r1, #1 + lsl r2, r2, #0x10 + bl FUN_020BC02C + ldr r0, [r4, #0x18] + ldr r1, [r4, #0xc] + bl FUN_020BBA34 + ldr r0, [r4, #0x14] + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224A034: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224A038: .word 0x02251980 +_0224A03C: .word 0x022519A0 + + thumb_func_start MOD06_0224A040 +MOD06_0224A040: ; 0x0224A040 + push {r3, r4, r5, lr} + mov r1, #0x8b + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A06C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A05C +MOD06_0224A05C: ; 0x0224A05C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A0B4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A06C +MOD06_0224A06C: ; 0x0224A06C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0x85 + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r6, r0, r1 + sub r1, #0x18 + ldr r5, _0224A0B0 ; =0x02251A74 + add r4, r0, r1 + add r7, r0, #4 +_0224A086: + str r4, [sp] + str r6, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r0, [r0] + mov r2, #0 + add r3, r7, #0 + bl FUN_021E51EC + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r7, #0x54 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #6 + blt _0224A086 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A0B0: .word 0x02251A74 + + thumb_func_start MOD06_0224A0B4 +MOD06_0224A0B4: ; 0x0224A0B4 + push {r4, r5, r6, lr} + mov r6, #0x85 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0224A0BE: + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _0224A0BE + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A0D0 +MOD06_0224A0D0: ; 0x0224A0D0 + push {r3, r4} + add r3, r0, #0 + mov r0, #0x54 + mul r0, r2 + add r0, r1, r0 + add r4, r0, #4 + mov r2, #0xa +_0224A0DE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224A0DE + ldr r0, [r4] + str r0, [r3] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A0F0 +MOD06_0224A0F0: ; 0x0224A0F0 + push {r3, lr} + sub r0, #0x5b + cmp r0, #5 + bhi _0224A128 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224A104: ; jump table + .short _0224A110 - _0224A104 - 2 ; case 0 + .short _0224A114 - _0224A104 - 2 ; case 1 + .short _0224A118 - _0224A104 - 2 ; case 2 + .short _0224A11C - _0224A104 - 2 ; case 3 + .short _0224A120 - _0224A104 - 2 ; case 4 + .short _0224A124 - _0224A104 - 2 ; case 5 +_0224A110: + mov r0, #0 + pop {r3, pc} +_0224A114: + mov r0, #1 + pop {r3, pc} +_0224A118: + mov r0, #2 + pop {r3, pc} +_0224A11C: + mov r0, #3 + pop {r3, pc} +_0224A120: + mov r0, #4 + pop {r3, pc} +_0224A124: + mov r0, #5 + pop {r3, pc} +_0224A128: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_0224A130 +MOD06_0224A130: ; 0x0224A130 + push {r4, r5, r6, lr} + sub sp, #0xc8 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0xc + add r4, r0, #0 + bl FUN_021E4C08 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058458 + bl MOD06_0224A0F0 + add r2, r0, #0 + add r0, sp, #0x14 + add r1, r6, #0 + str r2, [sp, #0x68] + bl MOD06_0224A0D0 + add r6, sp, #0x14 + add r3, sp, #0x70 + mov r2, #0xa +_0224A160: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224A160 + ldr r0, [r6] + add r1, sp, #8 + str r0, [r3] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x6c] + str r5, [sp, #0xc4] + bl FUN_0205829C + add r1, sp, #0x68 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224A198 ; =0x02251A60 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0xc8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224A198: .word 0x02251A60 + + thumb_func_start MOD06_0224A19C +MOD06_0224A19C: ; 0x0224A19C + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r4, #0 + add r5, r0, #0 + add r3, #0xc + mov r2, #0xc +_0224A1AC: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224A1AC + ldr r0, [r4, #0x68] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x68] + bl FUN_020589CC + cmp r0, #1 + ldr r0, [r4, #0x68] + bne _0224A1CE + bl FUN_02058750 + b _0224A1D2 +_0224A1CE: + bl FUN_02058450 +_0224A1D2: + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A1D8 +MOD06_0224A1D8: ; 0x0224A1D8 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A1DC +MOD06_0224A1DC: ; 0x0224A1DC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r2, r1, #0 + ldr r5, [r2, #0x68] + ldr r1, [r2, #4] + add r4, r0, #0 + ldr r2, [r2, #8] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A1FE + add r0, r4, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224A1FE: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + ldr r2, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + add r0, r2, r0 + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_0206476C + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A238 +MOD06_0224A238: ; 0x0224A238 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _0224A278 ; =0x02251A54 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A27C ; =0x02251A8C + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A252: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A252 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + add r4, #0x14 + add r0, r4, #0 + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224A278: .word 0x02251A54 +_0224A27C: .word 0x02251A8C + + thumb_func_start MOD06_0224A280 +MOD06_0224A280: ; 0x0224A280 + push {r3, r4, r5, lr} + mov r1, #0x46 + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A2AC + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A29C +MOD06_0224A29C: ; 0x0224A29C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A2F4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A2AC +MOD06_0224A2AC: ; 0x0224A2AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0x43 + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r6, r0, r1 + sub r1, #0xc + ldr r5, _0224A2F0 ; =0x02251ABC + add r4, r0, r1 + add r7, r0, #4 +_0224A2C6: + str r4, [sp] + str r6, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r0, [r0] + mov r2, #0 + add r3, r7, #0 + bl FUN_021E51EC + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r7, #0x54 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #3 + blt _0224A2C6 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A2F0: .word 0x02251ABC + + thumb_func_start MOD06_0224A2F4 +MOD06_0224A2F4: ; 0x0224A2F4 + push {r4, r5, r6, lr} + mov r6, #0x43 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0224A2FE: + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0224A2FE + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A310 +MOD06_0224A310: ; 0x0224A310 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + mov r1, #0xd + str r4, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058744 + add r1, r0, #1 + add r0, sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + ldr r1, _0224A350 ; =0x02251ADC + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_0224A350: .word 0x02251ADC + + thumb_func_start MOD06_0224A354 +MOD06_0224A354: ; 0x0224A354 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x18] + bl FUN_02058448 + str r0, [r4] + ldr r0, [r4, #0x18] + bl FUN_02058450 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A380 +MOD06_0224A380: ; 0x0224A380 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A384 +MOD06_0224A384: ; 0x0224A384 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r4, [r5, #0x18] + ldr r1, [r5] + add r6, r0, #0 + ldr r2, [r5, #4] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A3A6 + add r0, r6, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0224A3A6: + mov r0, #0 + mov r1, #2 + str r0, [r5, #8] + add r0, r4, #0 + lsl r1, r1, #8 + bl FUN_0205842C + cmp r0, #1 + beq _0224A3C8 + add r0, r4, #0 + bl FUN_02058738 + add r1, r4, #0 + bl FUN_0204B5FC + cmp r0, #0 + bne _0224A3D0 +_0224A3C8: + mov r0, #1 + add sp, #0xc + str r0, [r5, #8] + pop {r3, r4, r5, r6, pc} +_0224A3D0: + add r0, r4, #0 + bl FUN_02058738 + add r1, r4, #0 + bl FUN_0204B684 + str r0, [r5, #0xc] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A3F4 +MOD06_0224A3F4: ; 0x0224A3F4 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + beq _0224A43E + ldr r5, _0224A444 ; =0x02251AB0 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A448 ; =0x02251B1C + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A414: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A414 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + ldr r1, [r4, #0xc] + add r2, r0, #4 + mov r0, #0x54 + mul r0, r1 + add r0, r2, r0 + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224A43E: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_0224A444: .word 0x02251AB0 +_0224A448: .word 0x02251B1C + + thumb_func_start MOD06_0224A44C +MOD06_0224A44C: ; 0x0224A44C + push {r4, lr} + mov r2, #0 + mov r1, #0xc + add r3, r2, #0 + add r4, r0, #0 + bl FUN_021E4BE8 + str r4, [r0, #8] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A460 +MOD06_0224A460: ; 0x0224A460 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A4D8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A470 +MOD06_0224A470: ; 0x0224A470 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD06_0224A478 +MOD06_0224A478: ; 0x0224A478 + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _0224A486 + bl ErrorHandling +_0224A486: + pop {r3, pc} + + thumb_func_start MOD06_0224A488 +MOD06_0224A488: ; 0x0224A488 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0224A4D0 + mov r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #8] + mov r1, #0xb + mov r2, #0x6d + bl FUN_021E5078 + ldr r0, [r4, #8] + mov r1, #0xb + mov r2, #0x80 + bl FUN_021E50AC + ldr r0, [r4, #8] + mov r1, #0xc + mov r2, #0xe + mov r3, #1 + bl FUN_021E50D4 + mov r0, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224A4D4 ; =0x02251B04 + mov r2, #0xb + str r0, [sp, #8] + ldr r0, [r4, #8] + mov r1, #0xd + add r3, r2, #0 + bl FUN_021E4EFC +_0224A4D0: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224A4D4: .word 0x02251B04 + + thumb_func_start MOD06_0224A4D8 +MOD06_0224A4D8: ; 0x0224A4D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #1 + bne _0224A506 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #8] + mov r1, #0xb + bl FUN_021E50A0 + ldr r0, [r4, #8] + mov r1, #0xb + bl FUN_021E50C8 + ldr r0, [r4, #8] + mov r1, #0xc + bl FUN_021E5114 + ldr r0, [r4, #8] + mov r1, #0xd + bl FUN_021E506C +_0224A506: + pop {r4, pc} + + thumb_func_start MOD06_0224A508 +MOD06_0224A508: ; 0x0224A508 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224A514 + bl MOD06_0224A488 +_0224A514: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A518 +MOD06_0224A518: ; 0x0224A518 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224A524 + bl MOD06_0224A4D8 +_0224A524: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A528 +MOD06_0224A528: ; 0x0224A528 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + add r1, sp, #0x14 + bl FUN_021F1E64 + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] + add r0, r4, #0 + mov r1, #0x1e + str r4, [sp, #8] + bl FUN_021E4C08 + str r0, [sp, #0xc] + add r0, sp, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _0224A56C ; =0x02251AC8 + add r0, r4, #0 + add r2, sp, #0x14 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_0224A56C: .word 0x02251AC8 + + thumb_func_start MOD06_0224A570 +MOD06_0224A570: ; 0x0224A570 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x10] + bl MOD06_0224A508 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0xc] + mov r1, #0xd + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x18] + ldr r0, [r4, #0x10] + bl MOD06_0224A470 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224A5B0 +MOD06_0224A5B0: ; 0x0224A5B0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x18] + bl FUN_0201F744 + ldr r0, [r4, #0x10] + bl MOD06_0224A478 + ldr r0, [r4, #0x10] + bl MOD06_0224A518 + pop {r4, pc} + + thumb_func_start MOD06_0224A5C8 +MOD06_0224A5C8: ; 0x0224A5C8 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _0224A620 ; =0x02251AF0 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #8] + cmp r0, #1 + bne _0224A604 + mov r1, #0 + str r1, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #5 + blt _0224A5FE + add r0, r2, #0 + bl FUN_021E4DE4 + add sp, #0x14 + pop {r4, r5, pc} +_0224A5FE: + ldr r0, [r4, #0x18] + bl FUN_0201F86C +_0224A604: + ldr r1, [r4, #4] + ldr r0, [r4, #0x18] + lsl r2, r1, #2 + add r1, sp, #0 + ldr r1, [r1, r2] + bl FUN_0201F854 + cmp r0, #1 + bne _0224A61A + mov r0, #1 + str r0, [r4, #8] +_0224A61A: + add sp, #0x14 + pop {r4, r5, pc} + nop +_0224A620: .word 0x02251AF0 + + thumb_func_start MOD06_0224A624 +MOD06_0224A624: ; 0x0224A624 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224A63C +MOD06_0224A63C: ; 0x0224A63C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A668 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A658 +MOD06_0224A658: ; 0x0224A658 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A6A0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A668 +MOD06_0224A668: ; 0x0224A668 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl FUN_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0x4e + mov r3, #0 + bl FUN_021E5224 + mov r0, #0x74 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl FUN_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0224A6A0 +MOD06_0224A6A0: ; 0x0224A6A0 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl FUN_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl FUN_021F5358 + pop {r4, pc} + + thumb_func_start MOD06_0224A6B8 +MOD06_0224A6B8: ; 0x0224A6B8 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0xe + add r4, r0, #0 + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x14] + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224A6F8 ; =0x02251B58 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A6F8: .word 0x02251B58 + + thumb_func_start MOD06_0224A6FC +MOD06_0224A6FC: ; 0x0224A6FC + push {r3, lr} + bl FUN_02064738 + mov r1, #1 + str r1, [r0, #0xc] + ldr r0, [r0, #0x1c] + mov r1, #0 + str r1, [r0, #0x14] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A710 +MOD06_0224A710: ; 0x0224A710 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0x90 + str r0, [r2] + ldr r0, [r5, #0x10] + mov r2, #1 + mov r3, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r4, [r5, #0x1c] + ldr r0, [r5, #0x10] + add r1, r4, #4 + bl FUN_021E5294 + ldr r2, [r5, #0x14] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #0x14] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #0x14] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl FUN_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + ldr r0, [r5, #0x18] + bl FUN_02058448 + str r0, [r5, #4] + ldr r0, [r5, #0x18] + bl FUN_02058450 + str r0, [r5, #8] + ldr r5, [r5, #0x18] + add r1, sp, #0xc + add r0, r5, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r6, #0 + add r1, sp, #0xc + bl FUN_0206476C + add r4, #0x18 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r4, #0 + bl FUN_021F54D0 + mov r0, #1 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224A7C8 +MOD06_0224A7C8: ; 0x0224A7C8 + push {r4, lr} + ldr r4, [r1, #0x1c] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A7DC +MOD06_0224A7DC: ; 0x0224A7DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r1, [r5, #0xc] + add r7, r0, #0 + ldr r4, [r5, #0x1c] + ldr r6, [r5, #0x18] + cmp r1, #0 + bne _0224A806 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A828 + add r0, r7, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224A806: + ldr r1, [r4] + ldr r2, [r4, #0x14] + ldr r1, [r1, #8] + ldrh r1, [r1, #4] + lsl r3, r1, #0xc + mov r1, #1 + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [r4, #0x14] + cmp r1, r3 + ble _0224A824 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224A824: + ldr r0, [r4] + str r1, [r0] +_0224A828: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _0224A86C + add r0, r6, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, sp, #0xc + bl FUN_0206476C + add r4, #0x18 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r4, #0 + bl FUN_021F54D0 +_0224A86C: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224A870 +MOD06_0224A870: ; 0x0224A870 + ldr r0, [r1, #0x1c] + ldr r3, _0224A878 ; =0x021F5431 + add r0, #0x18 + bx r3 + .align 2, 0 +_0224A878: .word 0x021F5431 + + thumb_func_start MOD06_0224A87C +MOD06_0224A87C: ; 0x0224A87C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A8A8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A898 +MOD06_0224A898: ; 0x0224A898 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A8C8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A8A8 +MOD06_0224A8A8: ; 0x0224A8A8 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x4f + mov r2, #0 + add r3, r3, #4 + bl FUN_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD06_0224A8C8 +MOD06_0224A8C8: ; 0x0224A8C8 + ldr r3, _0224A8D0 ; =0x021E4C01 + ldr r0, [r0, #0x5c] + bx r3 + nop +_0224A8D0: .word 0x021E4C01 + + thumb_func_start MOD06_0224A8D4 +MOD06_0224A8D4: ; 0x0224A8D4 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0xf + add r4, r0, #0 + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x14] + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224A914 ; =0x02251B6C + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A914: .word 0x02251B6C + + thumb_func_start MOD06_0224A918 +MOD06_0224A918: ; 0x0224A918 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x14] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x14] + bl FUN_02058450 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A944 +MOD06_0224A944: ; 0x0224A944 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A948 +MOD06_0224A948: ; 0x0224A948 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r2, r1, #0 + ldr r5, [r2, #0x14] + ldr r1, [r2, #4] + add r4, r0, #0 + ldr r2, [r2, #8] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A96A + add r0, r4, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224A96A: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_0206476C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A9A0 +MOD06_0224A9A0: ; 0x0224A9A0 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _0224A9E0 ; =0x02251B40 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A9E4 ; =0x02251BB8 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A9BA: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A9BA + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x10] + add r1, sp, #0x30 + add r0, r0, #4 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224A9E0: .word 0x02251B40 +_0224A9E4: .word 0x02251BB8 + + thumb_func_start MOD06_0224A9E8 +MOD06_0224A9E8: ; 0x0224A9E8 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224AA14 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AA04 +MOD06_0224AA04: ; 0x0224AA04 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224AA34 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224AA14 +MOD06_0224AA14: ; 0x0224AA14 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x6e + mov r2, #0 + add r3, r3, #4 + bl FUN_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD06_0224AA34 +MOD06_0224AA34: ; 0x0224AA34 + ldr r3, _0224AA3C ; =0x021E4C01 + ldr r0, [r0, #0x5c] + bx r3 + nop +_0224AA3C: .word 0x021E4C01 + + thumb_func_start MOD06_0224AA40 +MOD06_0224AA40: ; 0x0224AA40 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0x1f + add r4, r0, #0 + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x14] + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224AA80 ; =0x02251B80 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224AA80: .word 0x02251B80 + + thumb_func_start MOD06_0224AA84 +MOD06_0224AA84: ; 0x0224AA84 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x14] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x14] + bl FUN_02058450 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AAB0 +MOD06_0224AAB0: ; 0x0224AAB0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224AAB4 +MOD06_0224AAB4: ; 0x0224AAB4 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r2, r1, #0 + ldr r5, [r2, #0x14] + ldr r1, [r2, #4] + add r4, r0, #0 + ldr r2, [r2, #8] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224AAD6 + add r0, r4, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224AAD6: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_0206476C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AB0C +MOD06_0224AB0C: ; 0x0224AB0C + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _0224AB4C ; =0x02251B4C + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224AB50 ; =0x02251B94 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224AB26: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224AB26 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x10] + add r1, sp, #0x30 + add r0, r0, #4 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224AB4C: .word 0x02251B4C +_0224AB50: .word 0x02251B94 + + thumb_func_start MOD06_0224AB54 +MOD06_0224AB54: ; 0x0224AB54 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224AB80 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AB70 +MOD06_0224AB70: ; 0x0224AB70 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224ABA0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224AB80 +MOD06_0224AB80: ; 0x0224AB80 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x51 + mov r2, #0 + add r3, r3, #4 + bl FUN_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD06_0224ABA0 +MOD06_0224ABA0: ; 0x0224ABA0 + ldr r3, _0224ABA8 ; =0x021E4C01 + ldr r0, [r0, #0x5c] + bx r3 + nop +_0224ABA8: .word 0x021E4C01 + + thumb_func_start MOD06_0224ABAC +MOD06_0224ABAC: ; 0x0224ABAC + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r1, #0 + add r6, r2, #0 + add r2, sp, #0x14 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + str r3, [sp, #0x20] + bl FUN_021E4C24 + mov r1, #0x11 + str r0, [sp, #0x24] + bl FUN_021E4C08 + str r0, [sp, #0x28] + ldr r0, [sp, #0x40] + str r5, [sp, #0x2c] + cmp r0, #0 + bne _0224ABF6 + add r0, r5, #0 + bl FUN_02058738 + mov r1, #2 + lsl r2, r4, #0x10 + lsl r1, r1, #0xe + add r2, r2, r1 + str r2, [sp, #0x14] + lsl r2, r6, #0x10 + add r1, r2, r1 + str r1, [sp, #0x1c] + add r1, sp, #0x14 + bl FUN_02059E9C + b _0224AC12 +_0224ABF6: + ldr r3, _0224AC30 ; =0x02251BDC + add r2, sp, #8 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x14 + str r0, [r2] + add r0, r5, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #8 + bl FUN_02058BB4 +_0224AC12: + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x20 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + ldr r1, _0224AC34 ; =0x02251BF4 + ldr r3, [sp, #0x40] + add r2, sp, #0x14 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224AC30: .word 0x02251BDC +_0224AC34: .word 0x02251BF4 + + thumb_func_start MOD06_0224AC38 +MOD06_0224AC38: ; 0x0224AC38 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + add r7, r0, #0 + add r2, r5, #0 + add r3, r7, #0 + ldr r4, [r7, #0xc] + add r2, #0x24 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r4, #0 + bl FUN_02058448 + str r0, [r5, #0xc] + add r0, r4, #0 + bl FUN_02058450 + str r0, [r5, #0x10] + ldr r0, [r7] + str r0, [r5, #8] + add r0, r6, #0 + bl FUN_02064754 + str r0, [r5, #0x18] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r5, #0x1c] + lsr r0, r0, #2 + str r0, [r5, #0x20] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AC80 +MOD06_0224AC80: ; 0x0224AC80 + push {lr} + sub sp, #0xc + ldr r0, [r1, #0x30] + add r1, sp, #0 + mov r2, #0 + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + bl FUN_02058BB4 + add sp, #0xc + pop {pc} + + thumb_func_start MOD06_0224AC98 +MOD06_0224AC98: ; 0x0224AC98 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r4, [r5, #0x30] + ldr r1, [r5, #0xc] + add r6, r0, #0 + ldr r2, [r5, #0x10] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224ACBA + add r0, r6, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r4, r5, r6, pc} +_0224ACBA: + mov r0, #0 + str r0, [r5] + add r0, r4, #0 + bl FUN_020584C4 + mov r1, #0 + mvn r1, r1 + str r0, [r5, #4] + cmp r0, r1 + bne _0224ACD6 + mov r0, #1 + add sp, #0x18 + str r0, [r5] + pop {r4, r5, r6, pc} +_0224ACD6: + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _0224AD40 + str r0, [r5, #8] + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + add r2, r1, r0 + mov r1, #1 + lsl r1, r1, #0xe + str r2, [r5, #0x1c] + cmp r2, r1 + blt _0224ACF8 + str r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + neg r0, r0 + str r0, [r5, #0x20] + b _0224AD06 +_0224ACF8: + lsr r0, r1, #2 + cmp r2, r0 + bgt _0224AD06 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x20] + neg r0, r0 + str r0, [r5, #0x20] +_0224AD06: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #7 + ldr r1, [r5, #0x1c] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02058BB4 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #1 + ldr r1, [r5, #0x1c] + lsl r0, r0, #0xc + sub r0, r1, r0 + ldr r2, [sp, #4] + add r1, sp, #0 + add r0, r2, r0 + str r0, [sp, #4] + add r0, r6, #0 + bl FUN_0206476C +_0224AD40: + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224AD44 +MOD06_0224AD44: ; 0x0224AD44 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _0224ADE6 + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _0224ADE6 + ldr r0, [r4, #0x14] + ldr r3, _0224ADEC ; =0x02251BE8 + add r0, r0, #1 + str r0, [r4, #0x14] + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _0224ADF0 ; =0x02251C08 + str r0, [r2] + add r3, sp, #0 + mov r2, #4 +_0224AD74: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224AD74 + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #8] + cmp r0, #3 + bhi _0224ADD0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224AD92: ; jump table + .short _0224AD9A - _0224AD92 - 2 ; case 0 + .short _0224ADA8 - _0224AD92 - 2 ; case 1 + .short _0224ADB6 - _0224AD92 - 2 ; case 2 + .short _0224ADC4 - _0224AD92 - 2 ; case 3 +_0224AD9A: + mov r1, #0 + add r0, sp, #0 + mov r2, #0xb4 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224ADD0 +_0224ADA8: + mov r1, #0 + add r0, sp, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224ADD0 +_0224ADB6: + mov r1, #0 + ldr r2, _0224ADF4 ; =0x0000010E + add r0, sp, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224ADD0 +_0224ADC4: + mov r1, #0 + add r0, sp, #0 + mov r2, #0x5a + add r3, r1, #0 + bl FUN_0201CB20 +_0224ADD0: + add r0, r6, #0 + add r1, sp, #0x30 + bl FUN_0206477C + ldr r0, [r4, #0x2c] + add r1, sp, #0x30 + add r0, r0, #4 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224ADE6: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_0224ADEC: .word 0x02251BE8 +_0224ADF0: .word 0x02251C08 +_0224ADF4: .word 0x0000010E + + thumb_func_start MOD06_0224ADF8 +MOD06_0224ADF8: ; 0x0224ADF8 + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + mov r1, #1 + str r4, [r0, #0x18] + lsl r1, r1, #0xc + str r1, [r0, #0x1c] + lsr r1, r1, #2 + str r1, [r0, #0x20] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AE10 +MOD06_0224AE10: ; 0x0224AE10 + push {r4, lr} + mov r2, #0 + mov r1, #0x70 + add r3, r2, #0 + add r4, r0, #0 + bl FUN_021E4BE8 + str r4, [r0, #0x10] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AE24 +MOD06_0224AE24: ; 0x0224AE24 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224AE78 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224AE34 +MOD06_0224AE34: ; 0x0224AE34 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD06_0224AE3C +MOD06_0224AE3C: ; 0x0224AE3C + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _0224AE4A + bl ErrorHandling +_0224AE4A: + pop {r3, pc} + + thumb_func_start MOD06_0224AE4C +MOD06_0224AE4C: ; 0x0224AE4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0224AE72 + ldr r0, [r4, #0x10] + mov r1, #0x52 + mov r2, #1 + bl FUN_021E4C6C + str r0, [r4, #0x6c] + ldr r0, _0224AE74 ; =MOD06_0224AEC0 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA60 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #4] +_0224AE72: + pop {r4, pc} + .align 2, 0 +_0224AE74: .word MOD06_0224AEC0 + + thumb_func_start MOD06_0224AE78 +MOD06_0224AE78: ; 0x0224AE78 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0224AE8C + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #8] +_0224AE8C: + ldr r0, [r4, #4] + cmp r0, #1 + bne _0224AE9C + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #0x6c] + bl FUN_021E4C00 +_0224AE9C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEA0 +MOD06_0224AEA0: ; 0x0224AEA0 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224AEAC + bl MOD06_0224AE4C +_0224AEAC: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEB0 +MOD06_0224AEB0: ; 0x0224AEB0 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224AEBC + bl MOD06_0224AE78 +_0224AEBC: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEC0 +MOD06_0224AEC0: ; 0x0224AEC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r2, r4, #0 + add r3, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x14 + add r2, #0x68 + add r3, #0x6c + bl FUN_021E5198 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEE8 +MOD06_0224AEE8: ; 0x0224AEE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r6, r1, #0 + add r7, r2, #0 + add r2, sp, #0xc + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + str r3, [sp, #8] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_021E4C24 + add r4, r0, #0 + ldr r0, [sp, #8] + str r4, [sp, #0x1c] + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x20] + add r0, r4, #0 + mov r1, #0x12 + bl FUN_021E4C08 + str r0, [sp, #0x24] + ldr r0, [sp, #0x40] + str r5, [sp, #0x28] + cmp r0, #0 + bne _0224AF3E + mov r0, #2 + lsl r1, r6, #0x10 + lsl r0, r0, #0xe + add r1, r1, r0 + str r1, [sp, #0xc] + lsl r1, r7, #0x10 + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r1, sp, #0xc + bl FUN_02059E9C + b _0224AF46 +_0224AF3E: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C +_0224AF46: + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x18 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224AF64 ; =0x02251C38 + ldr r3, [sp, #0x40] + add r0, r4, #0 + add r2, sp, #0xc + bl FUN_021E4DC4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224AF64: .word 0x02251C38 + + thumb_func_start MOD06_0224AF68 +MOD06_0224AF68: ; 0x0224AF68 + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + str r4, [r0, #0xc] + pop {r4, pc} + + thumb_func_start MOD06_0224AF74 +MOD06_0224AF74: ; 0x0224AF74 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r2, r0, #0 + add r6, r2, #0 + add r3, r4, #0 + ldmia r6!, {r0, r1} + add r3, #0x10 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, [r2] + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0xc] + ldr r0, [r4, #0x1c] + bl MOD06_0224AEA0 + ldr r0, [r4, #0x1c] + bl MOD06_0224AE34 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AFB0 +MOD06_0224AFB0: ; 0x0224AFB0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x1c] + bl MOD06_0224AE3C + ldr r0, [r4, #0x1c] + bl MOD06_0224AEB0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AFC4 +MOD06_0224AFC4: ; 0x0224AFC4 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r1, #0xc] + ldr r4, [r1, #0x20] + cmp r0, #0 + beq _0224AFF2 + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r4, #0 + bl FUN_02058BB4 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C +_0224AFF2: + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AFF8 +MOD06_0224AFF8: ; 0x0224AFF8 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _0224B098 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #8] + cmp r0, #0 + beq _0224B098 + ldr r0, [r4, #8] + ldr r3, _0224B09C ; =0x02251C2C + add r0, r0, #1 + str r0, [r4, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _0224B0A0 ; =0x02251C4C + str r0, [r2] + add r3, sp, #0 + mov r2, #4 +_0224B026: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224B026 + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #4] + cmp r0, #3 + bhi _0224B082 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B044: ; jump table + .short _0224B04C - _0224B044 - 2 ; case 0 + .short _0224B05A - _0224B044 - 2 ; case 1 + .short _0224B068 - _0224B044 - 2 ; case 2 + .short _0224B076 - _0224B044 - 2 ; case 3 +_0224B04C: + mov r1, #0 + add r0, sp, #0 + mov r2, #0xb4 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224B082 +_0224B05A: + mov r1, #0 + add r0, sp, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224B082 +_0224B068: + mov r1, #0 + ldr r2, _0224B0A4 ; =0x0000010E + add r0, sp, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224B082 +_0224B076: + mov r1, #0 + add r0, sp, #0 + mov r2, #0x5a + add r3, r1, #0 + bl FUN_0201CB20 +_0224B082: + add r0, r6, #0 + add r1, sp, #0x30 + bl FUN_0206477C + ldr r0, [r4, #0x1c] + add r1, sp, #0x30 + add r0, #0x14 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224B098: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224B09C: .word 0x02251C2C +_0224B0A0: .word 0x02251C4C +_0224B0A4: .word 0x0000010E + + thumb_func_start MOD06_0224B0A8 +MOD06_0224B0A8: ; 0x0224B0A8 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B0D4 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B0C4 +MOD06_0224B0C4: ; 0x0224B0C4 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B10C + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B0D4 +MOD06_0224B0D4: ; 0x0224B0D4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl FUN_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0xf + mov r3, #0 + bl FUN_021E5224 + mov r0, #0x6f + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl FUN_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0224B10C +MOD06_0224B10C: ; 0x0224B10C + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl FUN_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl FUN_021F5358 + pop {r4, pc} + + thumb_func_start MOD06_0224B124 +MOD06_0224B124: ; 0x0224B124 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl FUN_021E4C24 + mov r1, #0x13 + str r0, [sp, #8] + bl FUN_021E4C08 + str r0, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl FUN_02059E60 + mov r0, #1 + ldr r2, [sp, #0x18] + lsl r1, r4, #3 + lsl r0, r0, #0xc + add r0, r1, r0 + add r0, r2, r0 + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_02058B1C + lsl r1, r0, #0xf + mov r0, #2 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _0224B184 ; =0x02251C70 + add r2, sp, #0x10 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224B184: .word 0x02251C70 + + thumb_func_start MOD06_0224B188 +MOD06_0224B188: ; 0x0224B188 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r0] + mov r1, #0x90 + mov r3, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl FUN_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl FUN_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl FUN_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_0224B200 +MOD06_0224B200: ; 0x0224B200 + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B214 +MOD06_0224B214: ; 0x0224B214 + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _0224B234 + bl FUN_021E4DE4 + pop {r4, pc} +_0224B234: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B23C +MOD06_0224B23C: ; 0x0224B23C + ldr r0, [r1] + ldr r3, _0224B244 ; =0x021F5431 + add r0, #0x18 + bx r3 + .align 2, 0 +_0224B244: .word 0x021F5431 + + thumb_func_start MOD06_0224B248 +MOD06_0224B248: ; 0x0224B248 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B274 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B264 +MOD06_0224B264: ; 0x0224B264 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B2AC + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B274 +MOD06_0224B274: ; 0x0224B274 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl FUN_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0x10 + mov r3, #0 + bl FUN_021E5224 + mov r0, #0x70 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl FUN_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0224B2AC +MOD06_0224B2AC: ; 0x0224B2AC + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl FUN_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl FUN_021F5358 + pop {r4, pc} + + thumb_func_start MOD06_0224B2C4 +MOD06_0224B2C4: ; 0x0224B2C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl FUN_021E4C24 + mov r1, #0x14 + str r0, [sp, #8] + bl FUN_021E4C08 + str r0, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl FUN_02059E60 + ldr r1, [sp, #0x18] + lsl r0, r4, #3 + add r0, r1, r0 + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_02058B1C + lsl r1, r0, #0xf + mov r0, #2 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _0224B320 ; =0x02251C84 + add r2, sp, #0x10 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224B320: .word 0x02251C84 + + thumb_func_start MOD06_0224B324 +MOD06_0224B324: ; 0x0224B324 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r0] + mov r1, #0x90 + mov r3, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl FUN_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl FUN_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl FUN_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_0224B39C +MOD06_0224B39C: ; 0x0224B39C + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B3B0 +MOD06_0224B3B0: ; 0x0224B3B0 + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _0224B3D0 + bl FUN_021E4DE4 + pop {r4, pc} +_0224B3D0: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B3D8 +MOD06_0224B3D8: ; 0x0224B3D8 + ldr r0, [r1] + ldr r3, _0224B3E0 ; =0x021F5431 + add r0, #0x18 + bx r3 + .align 2, 0 +_0224B3E0: .word 0x021F5431 + + thumb_func_start MOD06_0224B3E4 +MOD06_0224B3E4: ; 0x0224B3E4 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B410 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B400 +MOD06_0224B400: ; 0x0224B400 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B4F0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B410 +MOD06_0224B410: ; 0x0224B410 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + mov r2, #0x53 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #5 + mov r2, #0x54 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #0 + mov r2, #0x75 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #3 + mov r2, #0x76 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #4 + mov r2, #0x77 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #5 + mov r2, #0x78 + bl FUN_021E50AC + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r2, #1 + ldr r0, [r4] + mov r1, #4 + add r3, r2, #0 + bl FUN_021E50D4 + ldr r0, [r4] + mov r1, #5 + mov r2, #2 + mov r3, #1 + bl FUN_021E50D4 + ldr r0, [r4] + mov r1, #6 + mov r2, #3 + mov r3, #1 + bl FUN_021E50D4 + mov r1, #0 + str r1, [sp] + ldr r0, _0224B4E0 ; =0x02251CEC + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_021E4EFC + mov r0, #4 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B4E4 ; =0x02251D04 + mov r1, #5 + str r0, [sp, #8] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #3 + bl FUN_021E4EFC + mov r2, #5 + str r2, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B4E8 ; =0x02251CD4 + mov r1, #6 + str r0, [sp, #8] + ldr r0, [r4] + mov r3, #4 + bl FUN_021E4EFC + mov r0, #6 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B4EC ; =0x02251D1C + mov r2, #5 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #7 + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224B4E0: .word 0x02251CEC +_0224B4E4: .word 0x02251D04 +_0224B4E8: .word 0x02251CD4 +_0224B4EC: .word 0x02251D1C + + thumb_func_start MOD06_0224B4F0 +MOD06_0224B4F0: ; 0x0224B4F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #5 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #3 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #4 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #5 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #4 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #5 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #6 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E506C + ldr r0, [r4] + mov r1, #5 + bl FUN_021E506C + ldr r0, [r4] + mov r1, #6 + bl FUN_021E506C + ldr r0, [r4] + mov r1, #7 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B568 +MOD06_0224B568: ; 0x0224B568 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B4C + str r0, [sp, #0x10] + add r0, r4, #0 + str r4, [sp, #0x18] + bl FUN_021E4C20 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x15 + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x24 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224B5CC ; =0x02251C98 + add r0, r4, #0 + add r2, sp, #0x24 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224B5CC: .word 0x02251C98 + + thumb_func_start MOD06_0224B5D0 +MOD06_0224B5D0: ; 0x0224B5D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x30] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x30] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x30] + bl FUN_02058450 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + bl FUN_02058B80 + str r0, [sp, #4] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_02059E9C + str r0, [r4, #0x14] + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + mov r0, #0x12 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x28] + mov r1, #0 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x34] + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #0 + bne _0224B65E + mov r0, #1 + str r0, [r4] +_0224B65E: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224B664 +MOD06_0224B664: ; 0x0224B664 + ldr r3, _0224B66C ; =0x0201F745 + ldr r0, [r1, #0x34] + bx r3 + nop +_0224B66C: .word 0x0201F745 + + thumb_func_start MOD06_0224B670 +MOD06_0224B670: ; 0x0224B670 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r6, [r4, #0x30] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224B694 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224B694: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0224B6CC + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [r4, #0x24] + bl FUN_02059E9C + str r0, [r4, #0x14] + cmp r0, #1 + bne _0224B6CC + ldr r0, [sp, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206476C +_0224B6CC: + ldr r0, [r4] + cmp r0, #0 + beq _0224B6DE + cmp r0, #1 + beq _0224B702 + cmp r0, #2 + beq _0224B710 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224B6DE: + mov r1, #1 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x34] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224B74A + mov r0, #1 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224B702: + mov r1, #3 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xe + bl FUN_0201F86C + mov r0, #2 + str r0, [r4] +_0224B710: + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224B72A + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224B72A: + add r0, r6, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + ldr r1, [r4, #0x18] + cmp r1, r7 + bne _0224B744 + ldr r1, [r4, #0x20] + cmp r1, r0 + beq _0224B74A +_0224B744: + add r0, r5, #0 + bl FUN_021E4DE4 +_0224B74A: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B750 +MOD06_0224B750: ; 0x0224B750 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl FUN_020582F8 + cmp r0, #0 + bne _0224B772 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, pc} +_0224B772: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B788 +MOD06_0224B788: ; 0x0224B788 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0 + str r0, [r2] + add r0, r5, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + mov r1, #0 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x1c] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224B7C0 +MOD06_0224B7C0: ; 0x0224B7C0 + ldr r3, _0224B7C8 ; =0x0201F745 + ldr r0, [r1, #0x1c] + bx r3 + nop +_0224B7C8: .word 0x0201F745 + + thumb_func_start MOD06_0224B7CC +MOD06_0224B7CC: ; 0x0224B7CC + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224B7DA + cmp r0, #1 + pop {r4, pc} +_0224B7DA: + mov r1, #1 + ldr r0, [r4, #0x1c] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x1c] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224B7FC + mov r0, #1 + str r0, [r4, #4] + str r0, [r4] +_0224B7FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B800 +MOD06_0224B800: ; 0x0224B800 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x1c] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224B818 +MOD06_0224B818: ; 0x0224B818 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r6, [r0, #0x3c] + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x15 + add r7, r3, #0 + str r5, [sp, #8] + str r4, [sp, #0xc] + str r6, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + mov r0, #2 + lsl r1, r5, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #9 + lsl r1, r4, #0x10 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x24] + add r0, sp, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _0224B868 ; =0x02251CC0 + add r0, r6, #0 + add r2, sp, #0x1c + add r3, r7, #0 + bl FUN_021E4DC4 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B868: .word 0x02251CC0 + + thumb_func_start MOD06_0224B86C +MOD06_0224B86C: ; 0x0224B86C + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B878 +MOD06_0224B878: ; 0x0224B878 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #0x14] + lsl r1, r0, #0x10 + mov r0, #9 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + add r1, sp, #0 + bl FUN_02059E9C + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0224B8E2 + cmp r0, #1 + beq _0224B8E6 + cmp r0, #2 + b _0224B8EA +_0224B8E2: + mov r1, #5 + b _0224B8EC +_0224B8E6: + mov r1, #6 + b _0224B8EC +_0224B8EA: + mov r1, #7 +_0224B8EC: + ldr r0, [r4, #0x1c] + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x24] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224B8FC +MOD06_0224B8FC: ; 0x0224B8FC + ldr r3, _0224B904 ; =0x0201F745 + ldr r0, [r1, #0x24] + bx r3 + nop +_0224B904: .word 0x0201F745 + + thumb_func_start MOD06_0224B908 +MOD06_0224B908: ; 0x0224B908 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224B916 + cmp r0, #1 + pop {r4, pc} +_0224B916: + mov r1, #1 + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + bl FUN_0201F854 + cmp r0, #1 + bne _0224B92E + mov r0, #1 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224B92E: + pop {r4, pc} + + thumb_func_start MOD06_0224B930 +MOD06_0224B930: ; 0x0224B930 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224B948 +MOD06_0224B948: ; 0x0224B948 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B974 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B964 +MOD06_0224B964: ; 0x0224B964 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B9B8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B974 +MOD06_0224B974: ; 0x0224B974 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #3 + mov r2, #0x56 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #2 + mov r2, #0x79 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #2 + mov r2, #5 + mov r3, #1 + bl FUN_021E50D4 + mov r3, #2 + mov r1, #3 + str r3, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B9B4 ; =0x02251D48 + add r2, r1, #0 + str r0, [sp, #8] + ldr r0, [r4] + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224B9B4: .word 0x02251D48 + + thumb_func_start MOD06_0224B9B8 +MOD06_0224B9B8: ; 0x0224B9B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #3 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #2 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #2 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #3 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B9E0 +MOD06_0224B9E0: ; 0x0224B9E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x17 + str r4, [sp, #0x18] + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r5, [sp, #0x20] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224BA2C ; =0x02251D34 + add r0, r4, #0 + add r2, sp, #8 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224BA2C: .word 0x02251D34 + + thumb_func_start MOD06_0224BA30 +MOD06_0224BA30: ; 0x0224BA30 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x20] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x20] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x20] + bl FUN_02058450 + str r0, [r4, #0xc] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x18] + mov r1, #3 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x24] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BA88 +MOD06_0224BA88: ; 0x0224BA88 + ldr r3, _0224BA90 ; =0x0201F745 + ldr r0, [r1, #0x24] + bx r3 + nop +_0224BA90: .word 0x0201F745 + + thumb_func_start MOD06_0224BA94 +MOD06_0224BA94: ; 0x0224BA94 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r7, [r4, #0x20] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r7, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224BAB4 + add r0, r5, #0 + bl FUN_021E4DE4 + pop {r3, r4, r5, r6, r7, pc} +_0224BAB4: + add r0, r5, #0 + bl FUN_02064754 + add r6, r0, #0 + cmp r6, #1 + bne _0224BAD2 + add r0, r7, #0 + bl FUN_02058A00 + cmp r0, #0 + bne _0224BAD2 + add r0, r5, #0 + bl FUN_021E4DE4 + pop {r3, r4, r5, r6, r7, pc} +_0224BAD2: + ldr r0, [r4] + cmp r0, #0 + bne _0224BB08 + mov r1, #1 + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x24] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224BB08 + cmp r6, #0 + bne _0224BB00 + add r0, r5, #0 + bl FUN_021E4DE4 + pop {r3, r4, r5, r6, r7, pc} +_0224BB00: + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_0201F86C +_0224BB08: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BB0C +MOD06_0224BB0C: ; 0x0224BB0C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x20] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224BB30 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0224BB30: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BB50 +MOD06_0224BB50: ; 0x0224BB50 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224BB7C + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BB6C +MOD06_0224BB6C: ; 0x0224BB6C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224BBC4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224BB7C +MOD06_0224BB7C: ; 0x0224BB7C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #6 + mov r2, #0x58 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #6 + mov r2, #0x7a + bl FUN_021E50AC + mov r1, #7 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r0, #7 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224BBC0 ; =0x02251D74 + mov r2, #6 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #8 + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224BBC0: .word 0x02251D74 + + thumb_func_start MOD06_0224BBC4 +MOD06_0224BBC4: ; 0x0224BBC4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #6 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #6 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #7 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BBEC +MOD06_0224BBEC: ; 0x0224BBEC + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x19 + str r4, [sp, #0x18] + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058B2C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058B4C + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #8 + bl FUN_02059E60 + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224BC4C ; =0x02251D60 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224BC4C: .word 0x02251D60 + + thumb_func_start MOD06_0224BC50 +MOD06_0224BC50: ; 0x0224BC50 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_02058450 + str r0, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + mov r1, #8 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x20] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224BC94 +MOD06_0224BC94: ; 0x0224BC94 + ldr r3, _0224BC9C ; =0x0201F745 + ldr r0, [r1, #0x20] + bx r3 + nop +_0224BC9C: .word 0x0201F745 + + thumb_func_start MOD06_0224BCA0 +MOD06_0224BCA0: ; 0x0224BCA0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0224BCCE + mov r1, #1 + ldr r0, [r4, #0x20] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x20] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #9 + blt _0224BCCE + add r0, r5, #0 + bl FUN_021E4DE4 +_0224BCCE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224BCD0 +MOD06_0224BCD0: ; 0x0224BCD0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BCF4 +MOD06_0224BCF4: ; 0x0224BCF4 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224BD20 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BD10 +MOD06_0224BD10: ; 0x0224BD10 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224BD68 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224BD20 +MOD06_0224BD20: ; 0x0224BD20 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #7 + mov r2, #0x59 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #7 + mov r2, #0x7b + bl FUN_021E50AC + mov r1, #8 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r0, #8 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224BD64 ; =0x02251DA0 + mov r2, #7 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #9 + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224BD64: .word 0x02251DA0 + + thumb_func_start MOD06_0224BD68 +MOD06_0224BD68: ; 0x0224BD68 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #7 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #7 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BD90 +MOD06_0224BD90: ; 0x0224BD90 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B4C + str r0, [sp, #0x10] + add r0, r4, #0 + str r4, [sp, #0x18] + bl FUN_021E4C20 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x1a + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x24 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224BDF4 ; =0x02251D8C + add r0, r4, #0 + add r2, sp, #0x24 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224BDF4: .word 0x02251D8C + + thumb_func_start MOD06_0224BDF8 +MOD06_0224BDF8: ; 0x0224BDF8 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x30] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x30] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x30] + bl FUN_02058450 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + bl FUN_02058B80 + str r0, [sp, #4] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_02059E9C + str r0, [r4, #0x14] + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + mov r0, #0x12 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x28] + mov r1, #9 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x34] + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #0 + bne _0224BE86 + mov r0, #1 + str r0, [r4] +_0224BE86: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224BE8C +MOD06_0224BE8C: ; 0x0224BE8C + ldr r3, _0224BE94 ; =0x0201F745 + ldr r0, [r1, #0x34] + bx r3 + nop +_0224BE94: .word 0x0201F745 + + thumb_func_start MOD06_0224BE98 +MOD06_0224BE98: ; 0x0224BE98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r6, [r4, #0x30] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224BEBC + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224BEBC: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0224BEF4 + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [r4, #0x24] + bl FUN_02059E9C + str r0, [r4, #0x14] + cmp r0, #1 + bne _0224BEF4 + ldr r0, [sp, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206476C +_0224BEF4: + ldr r0, [r4] + cmp r0, #0 + beq _0224BF06 + cmp r0, #1 + beq _0224BF2A + cmp r0, #2 + beq _0224BF40 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224BF06: + mov r1, #1 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x34] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224BF60 + mov r0, #1 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224BF2A: + mov r1, #3 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xe + bl FUN_0201F86C + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_0201F854 + mov r0, #2 + str r0, [r4] +_0224BF40: + add r0, r6, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + ldr r1, [r4, #0x18] + cmp r1, r7 + bne _0224BF5A + ldr r1, [r4, #0x20] + cmp r1, r0 + beq _0224BF60 +_0224BF5A: + add r0, r5, #0 + bl FUN_021E4DE4 +_0224BF60: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224BF64 +MOD06_0224BF64: ; 0x0224BF64 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl FUN_020582F8 + cmp r0, #0 + bne _0224BF86 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, pc} +_0224BF86: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BF9C +MOD06_0224BF9C: ; 0x0224BF9C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224BFC8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BFB8 +MOD06_0224BFB8: ; 0x0224BFB8 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224C010 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224BFC8 +MOD06_0224BFC8: ; 0x0224BFC8 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #8 + mov r2, #0x5a + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #8 + mov r2, #0x7c + bl FUN_021E50AC + mov r1, #9 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r0, #9 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224C00C ; =0x02251DCC + mov r2, #8 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0xa + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224C00C: .word 0x02251DCC + + thumb_func_start MOD06_0224C010 +MOD06_0224C010: ; 0x0224C010 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #0xa + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224C038 +MOD06_0224C038: ; 0x0224C038 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B4C + str r0, [sp, #0x10] + add r0, r4, #0 + str r4, [sp, #0x18] + bl FUN_021E4C20 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x1b + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x24 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224C09C ; =0x02251DB8 + add r0, r4, #0 + add r2, sp, #0x24 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224C09C: .word 0x02251DB8 + + thumb_func_start MOD06_0224C0A0 +MOD06_0224C0A0: ; 0x0224C0A0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x30] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x30] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x30] + bl FUN_02058450 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + bl FUN_02058B80 + str r0, [sp, #4] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_02059E9C + str r0, [r4, #0x14] + mov r0, #0x1e + ldr r1, [sp] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [sp] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #4] + mov r0, #0xd + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x28] + mov r1, #0xa + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x34] + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #0 + bne _0224C138 + mov r0, #1 + str r0, [r4] +_0224C138: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224C140 +MOD06_0224C140: ; 0x0224C140 + ldr r3, _0224C148 ; =0x0201F745 + ldr r0, [r1, #0x34] + bx r3 + nop +_0224C148: .word 0x0201F745 + + thumb_func_start MOD06_0224C14C +MOD06_0224C14C: ; 0x0224C14C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r6, [r4, #0x30] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224C170 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224C170: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0224C1A8 + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [r4, #0x24] + bl FUN_02059E9C + str r0, [r4, #0x14] + cmp r0, #1 + bne _0224C1A8 + ldr r0, [sp, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206476C +_0224C1A8: + ldr r0, [r4] + cmp r0, #0 + beq _0224C1BA + cmp r0, #1 + beq _0224C1DE + cmp r0, #2 + beq _0224C1F4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224C1BA: + mov r1, #1 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x34] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #2 + blt _0224C214 + mov r0, #1 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224C1DE: + mov r1, #2 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F86C + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_0201F854 + mov r0, #2 + str r0, [r4] +_0224C1F4: + add r0, r6, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + ldr r1, [r4, #0x18] + cmp r1, r7 + bne _0224C20E + ldr r1, [r4, #0x20] + cmp r1, r0 + beq _0224C214 +_0224C20E: + add r0, r5, #0 + bl FUN_021E4DE4 +_0224C214: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224C218 +MOD06_0224C218: ; 0x0224C218 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + bl FUN_020582A8 + cmp r0, #0 + bne _0224C238 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, pc} +_0224C238: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224C24C +MOD06_0224C24C: ; 0x0224C24C + push {r4, lr} + add r4, r1, #0 + bl FUN_0202A9B0 + bl FUN_0202AB4C + ldrb r1, [r0] + cmp r1, #0 + beq _0224C278 + sub r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0 + bne _0224C278 + mov r1, #0x7f + add r0, r4, #0 + lsl r1, r1, #4 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r4, pc} +_0224C278: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_0224C27C +MOD06_0224C27C: ; 0x0224C27C + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + mov r1, #0x7b + add r2, sp, #4 + add r3, sp, #0 + add r5, r0, #0 + bl FUN_0204A9F0 + cmp r0, #0 + beq _0224C2E8 + mov r0, #4 + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0 + strb r6, [r4, #0xc] + mov r0, #0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldr r0, [r5, #0x28] + bl FUN_020344FC + add r1, r0, #0 + ldr r0, [sp] + add r2, sp, #0x14 + bl FUN_0204AAD4 + ldr r1, [sp, #4] + add r0, sp, #8 + bl FUN_021E7EA0 + add r3, sp, #8 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4] + ldr r0, [sp, #0x14] + add r2, r4, #0 + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #8] + ldr r0, [sp, #0x1c] + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, [r5, #0x10] + ldr r1, _0224C2F0 ; =MOD06_0224C2F4 + bl FUN_0204640C + add sp, #0x20 + pop {r4, r5, r6, pc} +_0224C2E8: + bl ErrorHandling + add sp, #0x20 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224C2F0: .word MOD06_0224C2F4 + + thumb_func_start MOD06_0224C2F4 +MOD06_0224C2F4: ; 0x0224C2F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bls _0224C310 + b _0224C500 +_0224C310: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C31C: ; jump table + .short _0224C328 - _0224C31C - 2 ; case 0 + .short _0224C3C2 - _0224C31C - 2 ; case 1 + .short _0224C44A - _0224C31C - 2 ; case 2 + .short _0224C476 - _0224C31C - 2 ; case 3 + .short _0224C498 - _0224C31C - 2 ; case 4 + .short _0224C4F6 - _0224C31C - 2 ; case 5 +_0224C328: + ldr r0, _0224C508 ; =0x00000205 + ldr r1, [r5, #0x2c] + bl FUN_021F4BD0 + add r6, r0, #0 + ldr r1, [r5, #0x2c] + mov r0, #0x7c + bl FUN_021F4BD0 + str r0, [sp, #0x18] + ldr r0, [r6] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r7, r0, r1 + ldr r0, [sp, #0x18] + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r6, r0, r1 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + mov r1, #0 + str r1, [sp] + str r7, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, _0224C508 ; =0x00000205 + mov r2, #0x10 + bl FUN_021DA464 + add r0, r5, #0 + mov r1, #0x7c + add r2, sp, #0x1c + mov r3, #0 + bl FUN_0204A9F0 + cmp r0, #0 + bne _0224C390 + bl ErrorHandling +_0224C390: + ldr r0, [sp, #0x1c] + bl FUN_021E7EC8 + add r7, r0, #0 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + str r7, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x20 + mov r3, #0x7c + bl FUN_021DA464 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C3C2: + add r1, sp, #0x20 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldrb r2, [r4, #0xd] + mov r1, #0xc + ldr r0, [r4] + add r3, r2, #0 + ldr r2, _0224C50C ; =0x02252358 + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x2c] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #4] + add r3, r2, #0 + ldr r2, _0224C510 ; =0x0225235C + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x30] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #8] + add r3, r2, #0 + mul r3, r1 + ldr r1, _0224C514 ; =0x02252360 + ldr r1, [r1, r3] + add r0, r0, r1 + str r0, [sp, #0x34] + ldr r0, _0224C518 ; =0x000005FE + bl FUN_020054C8 + add r0, sp, #0x20 + str r0, [sp] + ldr r0, [r5, #0x4c] + ldr r2, _0224C508 ; =0x00000205 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + add r3, sp, #0x2c + bl FUN_021E7FBC + ldrb r1, [r4, #0xd] + add r1, r4, r1 + strb r0, [r1, #0x10] + ldrb r1, [r4, #0xd] + add r0, r5, #0 + add r0, #0xa0 + add r1, r4, r1 + ldrb r1, [r1, #0x10] + ldr r0, [r0] + bl FUN_021E7EEC + bl FUN_021E7EC8 + add r3, r0, #0 + ldrb r2, [r4, #0xd] + ldr r0, [r5, #0x50] + mov r1, #0x10 + bl FUN_021DA4BC + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C44A: + ldrb r0, [r4, #0xe] + cmp r0, #0xf + bhs _0224C456 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _0224C500 +_0224C456: + mov r0, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bhs _0224C46E + mov r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C46E: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C476: + ldr r0, [r5, #0x50] + mov r1, #0x10 + mov r2, #0 + bl FUN_021DA4EC + ldr r0, [r5, #0x50] + mov r1, #0x20 + mov r2, #0 + bl FUN_021DA4EC + ldr r0, _0224C51C ; =0x0000048E + bl FUN_02005C28 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C498: + ldr r0, [r5, #0x50] + mov r1, #0x10 + bl FUN_021DA58C + cmp r0, #0 + beq _0224C500 + ldr r0, [r5, #0x50] + mov r1, #0x20 + bl FUN_021DA58C + cmp r0, #0 + beq _0224C500 + bl FUN_02005CBC + cmp r0, #0 + bne _0224C500 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x20 + bl FUN_021DA54C + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x10 + bl FUN_021DA54C + ldrb r0, [r4, #0xc] + mov r6, #0 + cmp r0, #0 + bls _0224C4EE +_0224C4D4: + add r0, r4, r6 + add r1, r5, #0 + add r1, #0xa0 + ldrb r0, [r0, #0x10] + ldr r1, [r1] + bl FUN_021E7C80 + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldrb r0, [r4, #0xc] + cmp r6, r0 + blo _0224C4D4 +_0224C4EE: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C4F6: + bl FUN_02016A18 + add sp, #0x38 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224C500: + mov r0, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C508: .word 0x00000205 +_0224C50C: .word 0x02252358 +_0224C510: .word 0x0225235C +_0224C514: .word 0x02252360 +_0224C518: .word 0x000005FE +_0224C51C: .word 0x0000048E + + thumb_func_start MOD06_0224C520 +MOD06_0224C520: ; 0x0224C520 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + mov r2, #0 + ldr r1, _0224C558 ; =0x000001F2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_0204A9F0 + cmp r0, #0 + beq _0224C552 + mov r0, #4 + add r1, r0, #0 + bl FUN_020169D8 + add r2, r0, #0 + strb r6, [r2] + strb r4, [r2, #1] + mov r0, #0 + strb r0, [r2, #2] + ldr r0, [r5, #0x10] + ldr r1, _0224C55C ; =MOD06_0224C560 + bl FUN_0204640C + pop {r4, r5, r6, pc} +_0224C552: + bl ErrorHandling + pop {r4, r5, r6, pc} + .align 2, 0 +_0224C558: .word 0x000001F2 +_0224C55C: .word MOD06_0224C560 + + thumb_func_start MOD06_0224C560 +MOD06_0224C560: ; 0x0224C560 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #4 + bhi _0224C664 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C586: ; jump table + .short _0224C590 - _0224C586 - 2 ; case 0 + .short _0224C5EE - _0224C586 - 2 ; case 1 + .short _0224C61C - _0224C586 - 2 ; case 2 + .short _0224C648 - _0224C586 - 2 ; case 3 + .short _0224C65A - _0224C586 - 2 ; case 4 +_0224C590: + ldr r0, _0224C66C ; =0x000001F2 + ldr r1, [r5, #0x2c] + bl FUN_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r2, sp, #0x18 + mov r3, #0 + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r6, r0, r1 + ldr r1, _0224C66C ; =0x000001F2 + add r0, r5, #0 + bl FUN_0204A9F0 + cmp r0, #0 + bne _0224C5BA + bl ErrorHandling +_0224C5BA: + ldr r0, [sp, #0x18] + bl FUN_021E7EC8 + add r7, r0, #0 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + str r7, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldrb r0, [r4] + ldr r3, _0224C66C ; =0x000001F2 + mov r2, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + bl FUN_021DA464 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C5EE: + ldrb r0, [r4, #1] + mov r1, #1 + cmp r0, #0 + beq _0224C5FC + cmp r0, #1 + beq _0224C5FC + mov r1, #0 +_0224C5FC: + cmp r1, #0 + bne _0224C604 + bl ErrorHandling +_0224C604: + ldrb r2, [r4, #1] + ldr r0, [r5, #0x50] + mov r1, #1 + bl FUN_021DA4EC + ldr r0, _0224C670 ; =0x00000612 + bl FUN_020054C8 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C61C: + ldr r0, [r5, #0x50] + mov r1, #1 + bl FUN_021DA58C + cmp r0, #0 + beq _0224C664 + ldr r0, _0224C670 ; =0x00000612 + mov r1, #0 + bl FUN_020054F0 + ldr r0, _0224C674 ; =0x000005F1 + bl FUN_020054C8 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #1 + bl FUN_021DA54C + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C648: + ldr r0, _0224C674 ; =0x000005F1 + bl FUN_02005508 + cmp r0, #0 + bne _0224C664 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C65A: + bl FUN_02016A18 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224C664: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224C66C: .word 0x000001F2 +_0224C670: .word 0x00000612 +_0224C674: .word 0x000005F1 + + thumb_func_start MOD06_0224C678 +MOD06_0224C678: ; 0x0224C678 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r4, _0224C6E4 ; =0x02251DE4 + add r3, sp, #0x20 + add r5, r0, #0 + add r7, r1, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, sp, #0x18 + str r0, [sp] + add r1, r2, #0 + add r0, r5, #0 + mov r2, #4 + add r3, sp, #0x1c + bl FUN_0204AA5C + cmp r0, #0 + beq _0224C6DA + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_021E7EC8 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_021E7ECC + str r6, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x18] + add r2, r7, #0 + bl FUN_021DA464 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_0224C6DA: + bl ErrorHandling + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C6E4: .word 0x02251DE4 + + thumb_func_start MOD06_0224C6E8 +MOD06_0224C6E8: ; 0x0224C6E8 + ldr r3, _0224C6F0 ; =0x021DA4ED + ldr r0, [r0, #0x50] + mov r2, #0 + bx r3 + .align 2, 0 +_0224C6F0: .word 0x021DA4ED + + thumb_func_start MOD06_0224C6F4 +MOD06_0224C6F4: ; 0x0224C6F4 + ldr r3, _0224C6FC ; =0x021DA4ED + ldr r0, [r0, #0x50] + mov r2, #1 + bx r3 + .align 2, 0 +_0224C6FC: .word 0x021DA4ED + + thumb_func_start MOD06_0224C700 +MOD06_0224C700: ; 0x0224C700 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x24 + bl MOD06_0224CB90 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224C720 +MOD06_0224C720: ; 0x0224C720 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 +_0224C732: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224C758 ; =0x02251E04 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224C74E + add r0, r5, #0 + bl FUN_02016A18 +_0224C74E: + cmp r4, #1 + beq _0224C732 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C758: .word 0x02251E04 + + thumb_func_start MOD06_0224C75C +MOD06_0224C75C: ; 0x0224C75C + push {r4, lr} + add r0, r1, #0 + mov r1, #4 + add r4, r2, #0 + bl FUN_021F61F4 + ldr r2, _0224C7B0 ; =0xFFF6A000 + str r0, [r4, #0x14] + mov r1, #1 + mov r3, #0xf + bl FUN_021F6254 + ldr r0, [r4, #0x18] + ldr r1, _0224C7B4 ; =0x02251E40 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C794 + cmp r0, #1 + beq _0224C79C + cmp r0, #2 + beq _0224C7A4 + b _0224C7AA +_0224C794: + ldr r0, _0224C7B8 ; =0x00000603 + bl FUN_020054C8 + b _0224C7AA +_0224C79C: + ldr r0, _0224C7B8 ; =0x00000603 + bl FUN_020054C8 + b _0224C7AA +_0224C7A4: + ldr r0, _0224C7BC ; =0x0000064E + bl FUN_020054C8 +_0224C7AA: + mov r0, #0 + pop {r4, pc} + nop +_0224C7B0: .word 0xFFF6A000 +_0224C7B4: .word 0x02251E40 +_0224C7B8: .word 0x00000603 +_0224C7BC: .word 0x0000064E + + thumb_func_start MOD06_0224C7C0 +MOD06_0224C7C0: ; 0x0224C7C0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0 + bne _0224C7D6 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_0224C7D6: + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x18] + ldr r1, _0224C83C ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bge _0224C7F6 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_0224C7F6: + ldr r0, [r4, #8] + cmp r0, #2 + bne _0224C816 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _0224C82E +_0224C816: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0224C840 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 +_0224C82E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + nop +_0224C83C: .word 0x02251E14 +_0224C840: .word 0x00007FFF + + thumb_func_start MOD06_0224C844 +MOD06_0224C844: ; 0x0224C844 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #1 + bne _0224C862 + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x18] + ldr r1, _0224C884 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] +_0224C862: + bl FUN_0200E308 + cmp r0, #0 + bne _0224C86E + mov r0, #0 + pop {r4, pc} +_0224C86E: + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x14] + bl FUN_021F6240 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_0224C884: .word 0x02251E14 + + thumb_func_start MOD06_0224C888 +MOD06_0224C888: ; 0x0224C888 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r1, #0xc] + add r4, r2, #0 + bl FUN_02034E30 + ldr r1, [r4, #8] + cmp r1, #2 + bne _0224C8B2 + bl FUN_02034DFC + add r1, sp, #0 + bl FUN_02034E90 + ldr r2, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02049494 + b _0224C8C0 +_0224C8B2: + bl FUN_02034DCC + add r1, r0, #0 + ldr r2, [r4, #8] + add r0, r5, #0 + bl FUN_02049494 +_0224C8C0: + mov r0, #2 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224C8C8 +MOD06_0224C8C8: ; 0x0224C8C8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x24 + add r6, r2, #0 + bl MOD06_0224CB90 + add r4, r0, #0 + str r6, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224C8E8 +MOD06_0224C8E8: ; 0x0224C8E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + ldr r7, _0224C928 ; =0x02251DF4 + add r4, r0, #0 +_0224C8FC: + ldr r3, [r4] + add r0, r5, #0 + lsl r3, r3, #2 + ldr r3, [r7, r3] + add r1, r6, #0 + add r2, r4, #0 + blx r3 + cmp r0, #2 + bne _0224C920 + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0224C92C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224C920: + cmp r0, #1 + beq _0224C8FC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224C928: .word 0x02251DF4 + + thumb_func_start MOD06_0224C92C +MOD06_0224C92C: ; 0x0224C92C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #8] + cmp r0, #2 + bne _0224C952 + ldr r1, [r4, #0x1c] + mov r0, #9 + ldr r1, [r1] + mov r2, #4 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202914C + add r4, #0x98 + add r1, r0, #0 + ldr r0, [r4] + mov r2, #1 + bl FUN_02028AD4 +_0224C952: + pop {r4, pc} + + thumb_func_start MOD06_0224C954 +MOD06_0224C954: ; 0x0224C954 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #8] + add r5, r1, #0 + cmp r0, #2 + bne _0224C97A + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _0224C990 +_0224C97A: + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r3, _0224C9BC ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 +_0224C990: + add r0, r5, #0 + mov r1, #4 + bl FUN_021F61F4 + mov r1, #1 + ldr r2, _0224C9C0 ; =0xFFF6A000 + str r0, [r4, #0x14] + add r3, r1, #0 + bl FUN_021F6254 + ldr r0, [r4, #0x18] + ldr r1, _0224C9C4 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0224C9BC: .word 0x00007FFF +_0224C9C0: .word 0xFFF6A000 +_0224C9C4: .word 0x02251E14 + + thumb_func_start MOD06_0224C9C8 +MOD06_0224C9C8: ; 0x0224C9C8 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #1 + bne _0224C9E6 + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x18] + ldr r1, _0224CA08 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] +_0224C9E6: + bl FUN_0200E308 + cmp r0, #0 + bne _0224C9F2 + mov r0, #0 + pop {r4, pc} +_0224C9F2: + ldr r0, [r4, #0x14] + mov r1, #2 + mov r2, #0 + mov r3, #0x3c + bl FUN_021F6254 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_0224CA08: .word 0x02251E14 + + thumb_func_start MOD06_0224CA0C +MOD06_0224CA0C: ; 0x0224CA0C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0 + bne _0224CA1E + mov r0, #0 + pop {r4, pc} +_0224CA1E: + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #4 + ldr r0, [r4, #0x18] + bge _0224CA3C + ldr r1, _0224CA50 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_0224CA3C: + ldr r1, _0224CA54 ; =0x02251EA4 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + nop +_0224CA50: .word 0x02251E14 +_0224CA54: .word 0x02251EA4 + + thumb_func_start MOD06_0224CA58 +MOD06_0224CA58: ; 0x0224CA58 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0 + bne _0224CA6A + mov r0, #0 + pop {r4, pc} +_0224CA6A: + ldr r0, [r4, #0x14] + bl FUN_021F6234 + cmp r0, #0 + bne _0224CA78 + mov r0, #0 + pop {r4, pc} +_0224CA78: + ldr r0, [r4, #0x14] + bl FUN_021F6240 + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + mov r0, #2 + pop {r4, pc} + + thumb_func_start MOD06_0224CA88 +MOD06_0224CA88: ; 0x0224CA88 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r0, r2, #0 + mov r1, #0x24 + bl MOD06_0224CB90 + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + str r6, [r4, #0x20] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224CAAC +MOD06_0224CAAC: ; 0x0224CAAC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 +_0224CABE: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224CAE4 ; =0x02251E28 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224CADA + add r0, r5, #0 + bl FUN_02016A18 +_0224CADA: + cmp r4, #1 + beq _0224CABE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224CAE4: .word 0x02251E28 + + thumb_func_start MOD06_0224CAE8 +MOD06_0224CAE8: ; 0x0224CAE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x38] + add r4, r2, #0 + bl FUN_020553E8 + add r3, r0, #0 + ldr r2, [r4, #0x20] + add r0, r5, #0 + mov r1, #0 + bl MOD06_0224666C + str r0, [r4, #0x10] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224CB0C +MOD06_0224CB0C: ; 0x0224CB0C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + bl MOD06_022466A0 + cmp r0, #0 + bne _0224CB1E + mov r0, #0 + pop {r4, pc} +_0224CB1E: + ldr r0, [r4, #0x10] + bl MOD06_022466AC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CB30 +MOD06_0224CB30: ; 0x0224CB30 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r0, r2, #0 + mov r1, #0x24 + bl MOD06_0224CB90 + add r4, r0, #0 + mov r0, #2 + str r0, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + str r6, [r4, #0x20] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224CB54 +MOD06_0224CB54: ; 0x0224CB54 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 +_0224CB66: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224CB8C ; =0x02251E28 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224CB82 + add r0, r5, #0 + bl FUN_02016A18 +_0224CB82: + cmp r4, #1 + beq _0224CB66 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224CB8C: .word 0x02251E28 + + thumb_func_start MOD06_0224CB90 +MOD06_0224CB90: ; 0x0224CB90 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _0224CBA0 + bl ErrorHandling +_0224CBA0: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CBB0 +MOD06_0224CBB0: ; 0x0224CBB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0x6a + mov r1, #8 + mov r2, #4 + bl FUN_02006528 + add r4, r0, #0 + add r1, sp, #4 + ldr r0, [sp] + add r1, #2 + add r2, sp, #4 + bl FUN_0202AB8C + add r0, sp, #4 + ldrh r1, [r0, #2] + ldr r0, _0224CC20 ; =0x0000FFFF + cmp r1, r0 + beq _0224CBDE + lsl r0, r1, #2 + ldr r6, [r4, r0] + b _0224CBE0 +_0224CBDE: + mov r6, #0 +_0224CBE0: + add r0, sp, #4 + ldrh r1, [r0] + ldr r0, _0224CC20 ; =0x0000FFFF + cmp r1, r0 + beq _0224CBF0 + lsl r0, r1, #2 + ldr r7, [r4, r0] + b _0224CBF2 +_0224CBF0: + mov r7, #0 +_0224CBF2: + bl FUN_0201B9EC + lsl r0, r0, #4 + lsr r5, r0, #0x10 + cmp r5, #0x10 + blo _0224CC02 + bl ErrorHandling +_0224CC02: + lsl r0, r5, #2 + ldr r0, [r4, r0] + cmp r6, r0 + beq _0224CBF2 + cmp r7, r0 + beq _0224CBF2 + ldr r0, [sp] + add r1, r5, #0 + bl FUN_0202ABA0 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224CC20: .word 0x0000FFFF + + thumb_func_start MOD06_0224CC24 +MOD06_0224CC24: ; 0x0224CC24 + push {r3, r4, lr} + sub sp, #4 + add r1, sp, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0202AB8C + add r0, sp, #0 + ldrh r1, [r0, #2] + ldr r0, _0224CC5C ; =0x0000FFFF + cmp r1, r0 + bne _0224CC40 + bl ErrorHandling +_0224CC40: + mov r0, #0x6a + mov r1, #8 + mov r2, #4 + bl FUN_02006528 + add r1, sp, #0 + ldrh r1, [r1, #2] + lsl r1, r1, #2 + ldr r4, [r0, r1] + bl FUN_02016A18 + add r0, r4, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224CC5C: .word 0x0000FFFF + + thumb_func_start MOD06_0224CC60 +MOD06_0224CC60: ; 0x0224CC60 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0224CC76 + bl ErrorHandling +_0224CC76: + cmp r4, #0 + bne _0224CC80 + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224CC80: + ldr r0, [r5, #0xc] + bl FUN_0202881C + bl FUN_020287A4 + add r4, r0, #0 + ldr r0, [r5, #0x38] + add r1, sp, #0x18 + add r2, sp, #0x14 + bl FUN_020572B8 + ldr r0, [r5, #0x28] + bl FUN_020344FC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + lsr r0, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] + lsr r0, r4, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x40] + lsr r0, r4, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x44] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x48] + mov r0, #0x6a + mov r1, #1 + mov r2, #4 + bl FUN_02006528 + str r0, [sp, #0xc] + mov r4, #0 + ldr r0, [r0] + add r3, r4, #0 + cmp r0, #0 + ble _0224CCEA +_0224CCD6: + ldr r1, [sp, #0xc] + lsl r2, r3, #2 + add r1, r1, r2 + ldr r1, [r1, #4] + add r4, r4, r1 + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, r0 + blt _0224CCD6 +_0224CCEA: + lsl r0, r0, #1 + add r0, r0, #2 + lsl r1, r0, #1 + ldr r0, [sp, #0xc] + add r0, r0, r1 + str r0, [sp, #8] + asr r0, r4, #1 + lsr r0, r0, #0x1e + add r0, r4, r0 + mov r1, #1 + asr r0, r0, #2 + lsl r1, r1, #8 + str r0, [sp, #0x10] + cmp r0, r1 + blt _0224CD0C + bl ErrorHandling +_0224CD0C: + lsr r2, r4, #0x1f + lsl r1, r4, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + mov r7, #0 + lsr r6, r0, #0x18 + add r5, r7, #0 +_0224CD20: + lsl r4, r5, #2 + add r0, sp, #0x3c + ldr r0, [r0, r4] + ldr r1, [sp, #0x10] + bl _s32_div_f + ldr r0, [sp, #0x10] + add r2, r0, #0 + mul r2, r5 + add r0, r1, r2 + add r1, r7, r0 + add r0, sp, #0x2c + str r1, [r0, r4] + ldr r0, [r0, r4] + lsl r1, r0, #1 + ldr r0, [sp, #8] + cmp r6, #0 + ldrh r1, [r0, r1] + add r0, sp, #0x1c + str r1, [r0, r4] + beq _0224CD56 + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + sub r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_0224CD56: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #4 + blo _0224CD20 + ldr r0, [sp] + ldr r1, [sp, #0x14] + lsl r0, r0, #5 + mul r0, r1 + ldr r2, [sp, #0x18] + mov r3, #0 + add r2, r2, r0 + add r1, sp, #0x1c +_0224CD70: + lsl r0, r3, #2 + ldr r0, [r1, r0] + cmp r2, r0 + bne _0224CD7E + mov r0, #1 + str r0, [sp, #4] + b _0224CD88 +_0224CD7E: + add r0, r3, #1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #4 + blo _0224CD70 +_0224CD88: + ldr r0, [sp, #0xc] + bl FUN_02016A18 + ldr r0, [sp, #4] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224CD94 +MOD06_0224CD94: ; 0x0224CD94 + mov r2, #0x14 + strb r2, [r0] + mov r0, #0xa + strb r0, [r1] + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224CDA0 +MOD06_0224CDA0: ; 0x0224CDA0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6a + mov r1, #0 + mov r2, #4 + bl FUN_02006528 + ldr r1, [r0] + str r1, [r4] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD06_0224CDB8 +MOD06_0224CDB8: ; 0x0224CDB8 + cmp r1, #0 + beq _0224CE2A + ldr r1, _0224CE2C ; =0x021C4918 + ldrb r1, [r1, #6] + cmp r1, #5 + bhi _0224CE2A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224CDD0: ; jump table + .short _0224CE2A - _0224CDD0 - 2 ; case 0 + .short _0224CDDC - _0224CDD0 - 2 ; case 1 + .short _0224CDEC - _0224CDD0 - 2 ; case 2 + .short _0224CDFC - _0224CDD0 - 2 ; case 3 + .short _0224CE0C - _0224CDD0 - 2 ; case 4 + .short _0224CE1C - _0224CDD0 - 2 ; case 5 +_0224CDDC: + add r1, r0, #0 + add r1, #0xac + ldr r1, [r1] + add r0, #0xb0 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CDEC: + add r1, r0, #0 + add r1, #0xa4 + ldr r1, [r1] + add r0, #0xa8 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CDFC: + add r1, r0, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, #0xb8 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CE0C: + add r1, r0, #0 + add r1, #0xbc + ldr r1, [r1] + add r0, #0xc0 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CE1C: + add r1, r0, #0 + add r1, #0xc4 + ldr r1, [r1] + add r0, #0xc8 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] +_0224CE2A: + bx lr + .align 2, 0 +_0224CE2C: .word 0x021C4918 + + thumb_func_start MOD06_0224CE30 +MOD06_0224CE30: ; 0x0224CE30 + push {r3, r4, r5, lr} + mov r1, #0x5d + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224CE5C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224CE4C +MOD06_0224CE4C: ; 0x0224CE4C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224CEA4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224CE5C +MOD06_0224CE5C: ; 0x0224CE5C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0x59 + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r6, r0, r1 + sub r1, #0x10 + ldr r5, _0224CEA0 ; =0x02251F18 + add r4, r0, r1 + add r7, r0, #4 +_0224CE76: + str r4, [sp] + str r6, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r0, [r0] + mov r2, #0 + add r3, r7, #0 + bl FUN_021E51EC + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r7, #0x54 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0224CE76 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224CEA0: .word 0x02251F18 + + thumb_func_start MOD06_0224CEA4 +MOD06_0224CEA4: ; 0x0224CEA4 + push {r4, r5, r6, lr} + mov r6, #0x59 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0224CEAE: + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224CEAE + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CEC0 +MOD06_0224CEC0: ; 0x0224CEC0 + add r2, r0, #4 + mov r0, #0x54 + mul r0, r1 + add r0, r2, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224CECC +MOD06_0224CECC: ; 0x0224CECC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r4, r1, #0 + bl FUN_021E4C24 + add r6, r0, #0 + bl FUN_021E4C20 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B4C + add r1, r0, #0 + ldr r0, [sp, #8] + add r2, sp, #0x20 + bl FUN_02059E60 + add r0, r7, #0 + add r1, sp, #0x20 + bl FUN_02059E9C + add r0, r6, #0 + mov r1, #0x1c + str r4, [sp, #0xc] + str r6, [sp, #0x10] + bl FUN_021E4C08 + add r1, r4, #0 + str r0, [sp, #0x14] + str r5, [sp, #0x18] + bl MOD06_0224CEC0 + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224CF38 ; =0x02251F28 + add r0, r6, #0 + add r2, sp, #0x20 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_0224CF38: .word 0x02251F28 + + thumb_func_start MOD06_0224CF3C +MOD06_0224CF3C: ; 0x0224CF3C + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + ldr r4, [r3, #0xc] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + bl FUN_02058448 + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_02058450 + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224CF6C +MOD06_0224CF6C: ; 0x0224CF6C + push {r4, lr} + add r2, r1, #0 + ldr r4, [r2, #0x1c] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #1 + bne _0224CF88 + add r0, r4, #0 + mov r1, #0 + bl FUN_0205EB14 +_0224CF88: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CF8C +MOD06_0224CF8C: ; 0x0224CF8C + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224CF90 +MOD06_0224CF90: ; 0x0224CF90 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #4] + cmp r0, #1 + beq _0224CFD0 + ldr r5, _0224CFD4 ; =0x02251F0C + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224CFD8 ; =0x02251F3C + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224CFB0: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224CFB0 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x20] + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224CFD0: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224CFD4: .word 0x02251F0C +_0224CFD8: .word 0x02251F3C + + thumb_func_start MOD06_0224CFDC +MOD06_0224CFDC: ; 0x0224CFDC + push {r4, r5, r6, r7} + add r6, r2, #0 + sub r2, r6, #1 + add r3, r6, #0 + lsl r2, r2, #0x18 + lsr r6, r2, #0x18 + cmp r3, #0 + beq _0224D038 + sub r5, r1, #1 +_0224CFEE: + ldrb r1, [r0] + mov r4, #0 + asr r2, r1, #7 + mov r1, #1 + and r1, r2 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r5, #0 + ble _0224D020 + mov r7, #1 +_0224D002: + ldrb r1, [r0, r4] + add r2, r0, r4 + lsl r1, r1, #1 + strb r1, [r0, r4] + ldrb r2, [r2, #1] + ldrb r1, [r0, r4] + asr r2, r2, #7 + and r2, r7 + orr r1, r2 + strb r1, [r0, r4] + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, r5 + blt _0224D002 +_0224D020: + ldrb r1, [r0, r4] + add r2, r6, #0 + lsl r1, r1, #1 + strb r1, [r0, r4] + ldrb r1, [r0, r4] + orr r1, r3 + strb r1, [r0, r4] + sub r1, r6, #1 + lsl r1, r1, #0x18 + lsr r6, r1, #0x18 + cmp r2, #0 + bne _0224CFEE +_0224D038: + pop {r4, r5, r6, r7} + bx lr + + thumb_func_start MOD06_0224D03C +MOD06_0224D03C: ; 0x0224D03C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r0, [sp] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02089368 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02089394 + add r1, sp, #4 + strh r0, [r1, #4] + add r0, r6, #0 + bl FUN_02089394 + add r1, sp, #4 + strh r0, [r1, #6] + add r0, r7, #0 + bl FUN_02089394 + add r1, sp, #4 + strh r0, [r1, #8] + add r0, sp, #0x18 + ldrh r0, [r0, #0x10] + bl FUN_02089394 + add r1, sp, #4 + mov r2, #0 + strh r0, [r1, #0xa] + add r3, sp, #8 + add r5, sp, #4 + add r7, r2, #0 +_0224D080: + ldrsh r0, [r3, r7] + cmp r0, #0 + bge _0224D08E + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D08E: + cmp r2, #0 + ble _0224D0C2 + mov r6, #1 + mvn r6, r6 + ldrsh r6, [r3, r6] + cmp r0, r6 + blt _0224D0AE + sub r0, r0, r6 + cmp r0, #0xff + ble _0224D0AA + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D0AA: + strb r0, [r5] + b _0224D0D4 +_0224D0AE: + sub r0, r6, r0 + sub r0, r4, r0 + cmp r0, #0xff + ble _0224D0BE + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D0BE: + strb r0, [r5] + b _0224D0D4 +_0224D0C2: + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r0, #0xff + ble _0224D0D2 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D0D2: + strb r0, [r1] +_0224D0D4: + add r2, r2, #1 + add r3, r3, #2 + add r5, r5, #1 + cmp r2, #4 + blt _0224D080 + add r0, sp, #4 + mov r1, #4 + mov r2, #7 + bl MOD06_0224CFDC + mov r2, #0 + add r1, sp, #4 + add r4, sp, #4 + mov r3, #0xf0 +_0224D0F0: + ldrb r5, [r4, #3] + ldrb r0, [r1] + add r2, r2, #1 + asr r6, r5, #4 + and r5, r3 + orr r5, r6 + eor r0, r5 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _0224D0F0 + add r2, sp, #4 + ldrb r3, [r2, #3] + mov r2, #0xf + add r0, sp, #4 + and r2, r3 + lsl r2, r2, #0x18 + mov r1, #3 + lsr r2, r2, #0x18 + bl MOD06_0224CFDC + add r1, sp, #4 + ldrb r0, [r1] + cmp r0, #8 + blo _0224D12A + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D12A: + ldrb r2, [r1, #1] + eor r2, r0 + strb r2, [r1, #1] + ldrb r2, [r1, #2] + eor r2, r0 + strb r2, [r1, #2] + ldrb r2, [r1, #1] + ldrb r1, [r1, #2] + lsl r2, r2, #8 + orr r2, r1 + ldr r1, [sp] + cmp r1, r2 + beq _0224D148 + mov r0, #0 + mvn r0, r0 +_0224D148: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224D14C +MOD06_0224D14C: ; 0x0224D14C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + add r4, r0, #0 + ldr r0, [sp, #0x48] + str r0, [sp, #0x48] + ldr r0, [sp, #4] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, [sp, #8] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x48] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x20] + add r0, r4, #0 + bl FUN_020239C0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + cmp r0, #0 + bls _0224D23A +_0224D1A6: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + cmp r0, #0 + bls _0224D22A +_0224D1B0: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x24] + cmp r0, #0 + bls _0224D21A +_0224D1BA: + ldr r0, [sp, #0x20] + mov r5, #0 + cmp r0, #0 + bls _0224D20A +_0224D1C2: + ldr r0, [sp, #4] + ldr r1, [sp, #0x18] + bl FUN_02013C6C + add r4, r0, #0 + ldr r0, [sp, #8] + ldr r1, [sp, #0x14] + bl FUN_02013C6C + add r6, r0, #0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + bl FUN_02013C6C + add r7, r0, #0 + ldr r0, [sp, #0x48] + add r1, r5, #0 + bl FUN_02013C6C + str r0, [sp] + ldr r0, [sp, #0x1c] + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD06_0224D03C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224D23E + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x20] + cmp r5, r0 + blo _0224D1C2 +_0224D20A: + ldr r0, [sp, #0x10] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x24] + str r1, [sp, #0x10] + cmp r1, r0 + blo _0224D1BA +_0224D21A: + ldr r0, [sp, #0x14] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x28] + str r1, [sp, #0x14] + cmp r1, r0 + blo _0224D1B0 +_0224D22A: + ldr r0, [sp, #0x18] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x2c] + str r1, [sp, #0x18] + cmp r1, r0 + blo _0224D1A6 +_0224D23A: + mov r0, #0 + mvn r0, r0 +_0224D23E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D244 +MOD06_0224D244: ; 0x0224D244 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224D270 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D260 +MOD06_0224D260: ; 0x0224D260 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224D2B8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224D270 +MOD06_0224D270: ; 0x0224D270 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #9 + mov r2, #0x6b + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #9 + mov r2, #0x7f + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #0xa + mov r2, #0xc + mov r3, #1 + bl FUN_021E50D4 + mov r0, #0xa + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224D2B4 ; =0x02251F74 + mov r2, #9 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0xb + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224D2B4: .word 0x02251F74 + + thumb_func_start MOD06_0224D2B8 +MOD06_0224D2B8: ; 0x0224D2B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #0xa + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #0xb + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D2E0 +MOD06_0224D2E0: ; 0x0224D2E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x1d + str r4, [sp, #0x18] + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058B2C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058B4C + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #8 + bl FUN_02059E60 + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224D340 ; =0x02251F60 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224D340: .word 0x02251F60 + + thumb_func_start MOD06_0224D344 +MOD06_0224D344: ; 0x0224D344 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_02058450 + str r0, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + mov r1, #0xb + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x20] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224D388 +MOD06_0224D388: ; 0x0224D388 + ldr r3, _0224D390 ; =0x0201F745 + ldr r0, [r1, #0x20] + bx r3 + nop +_0224D390: .word 0x0201F745 + + thumb_func_start MOD06_0224D394 +MOD06_0224D394: ; 0x0224D394 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0224D3C2 + mov r1, #1 + ldr r0, [r4, #0x20] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x20] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #7 + blt _0224D3C2 + add r0, r5, #0 + bl FUN_021E4DE4 +_0224D3C2: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224D3C4 +MOD06_0224D3C4: ; 0x0224D3C4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D3E8 +MOD06_0224D3E8: ; 0x0224D3E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xb + mov r1, #8 + bl FUN_020169D8 + mov r1, #0 + mov r2, #8 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r1, _0224D40C ; =MOD06_0224D410 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, pc} + nop +_0224D40C: .word MOD06_0224D410 + + thumb_func_start MOD06_0224D410 +MOD06_0224D410: ; 0x0224D410 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _0224D432 + cmp r1, #1 + beq _0224D442 + cmp r1, #2 + beq _0224D45A + b _0224D462 +_0224D432: + add r0, r5, #0 + bl MOD06_0224D46C + str r0, [r4] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _0224D462 +_0224D442: + ldr r0, _0224D468 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224D462 + ldr r0, [r4] + bl MOD06_0224D6A4 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _0224D462 +_0224D45A: + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224D462: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224D468: .word 0x021C48B8 + + thumb_func_start MOD06_0224D46C +MOD06_0224D46C: ; 0x0224D46C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r0, #0 + bl FUN_020377A8 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020377AC + str r0, [sp, #0x1c] + mov r0, #0xb + mov r1, #0x18 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc3 + mov r3, #0xb + bl FUN_0200A86C + str r0, [r4, #0x10] + mov r0, #0xb + bl FUN_0200AA80 + str r0, [r4, #0x14] + mov r2, #3 + str r2, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #0x11 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #1 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r3, #0xb + add r0, r5, #0 + mov r1, #3 + mov r2, #1 + str r3, [sp, #4] + bl FUN_0200CB00 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x64 + mov r1, #0xb + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_020238F4 + add r2, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [r4, #0x14] + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0x78 + bl MOD06_0224D6D0 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r5, #0 + bl FUN_02021A20 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200A914 + mov r1, #0 + mov r2, #1 + mov r3, #0x78 + add r5, r0, #0 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r4, #0 + add r2, r5, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0 + ldr r5, _0224D698 ; =0x02251FAC + str r0, [sp, #0x24] +_0224D576: + ldr r0, [r4, #0x10] + ldr r1, [r5] + bl FUN_0200A914 + mov r3, #4 + mov r1, #0 + ldrsh r3, [r5, r3] + add r2, r1, #0 + add r7, r0, #0 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #6 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r7, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x24] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #5 + blt _0224D576 + mov r0, #0 + ldr r5, _0224D69C ; =0x02251F8C + str r0, [sp, #0x14] +_0224D5BE: + ldr r0, [r4, #0x10] + ldr r1, [r5] + bl FUN_0200A914 + mov r3, #4 + ldrsh r3, [r5, r3] + mov r1, #0 + mov r2, #2 + add r7, r0, #0 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #6 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r7, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #4 + blt _0224D5BE + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, _0224D6A0 ; =0x02251FD4 + str r0, [sp, #0x18] +_0224D608: + ldr r5, [sp, #0x18] + mov r7, #0 +_0224D60C: + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r2, r7, #0 + bl FUN_0202C12C + str r0, [sp, #0x28] + ldr r0, [r4, #0x10] + ldr r1, [r5] + bl FUN_0200A914 + str r0, [sp, #0x2c] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x14] + ldr r2, [sp, #0x28] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + ldr r0, [r4, #0x14] + ldr r2, [sp, #0x2c] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r3, #4 + ldrsh r3, [r5, r3] + add r0, r6, #0 + mov r1, #0 + mov r2, #2 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #6 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r6, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0201BD84 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r7, r7, #1 + add r5, #8 + cmp r7, #4 + blt _0224D60C + ldr r0, [sp, #0x18] + add r0, #0x20 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blt _0224D608 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r4, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D698: .word 0x02251FAC +_0224D69C: .word 0x02251F8C +_0224D6A0: .word 0x02251FD4 + + thumb_func_start MOD06_0224D6A4 +MOD06_0224D6A4: ; 0x0224D6A4 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + bl FUN_02019570 + add r0, r4, #0 + bl FUN_02019178 + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_0200AB18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D6D0 +MOD06_0224D6D0: ; 0x0224D6D0 + push {r4, r5, r6, lr} + add r5, r2, #0 + add r6, r0, #0 + add r4, r3, #0 + cmp r5, #0 + bne _0224D6E0 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_0224D6E0: + add r0, r1, #0 + add r1, r6, #0 + mov r2, #0 + bl FUN_02002E14 + cmp r5, #1 + beq _0224D6F4 + cmp r5, #2 + beq _0224D6FE + b _0224D702 +_0224D6F4: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + sub r0, r4, r0 + pop {r4, r5, r6, pc} +_0224D6FE: + sub r0, r4, r0 + pop {r4, r5, r6, pc} +_0224D702: + bl ErrorHandling + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D70C +MOD06_0224D70C: ; 0x0224D70C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xc1 + lsl r1, r1, #2 + add r5, r0, #0 + add r7, r2, #0 + bl FUN_02016998 + mov r2, #0xc1 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + str r5, [r4, #0x18] + str r7, [r4, #0x14] + str r6, [r4, #8] + add r0, r6, #0 + bl FUN_02027E24 + bl FUN_0202708C + str r0, [r4, #0xc] + add r0, r6, #0 + bl FUN_0206F158 + str r0, [r4, #0x10] + mov r2, #0x81 + ldr r3, [r4, #0x18] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + bl FUN_0200A86C + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD06_0224DBA8 + add r0, r4, #0 + bl MOD06_0224DBCC + add r0, r4, #0 + bl MOD06_0224DC3C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224D76C +MOD06_0224D76C: ; 0x0224D76C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD06_0224DC28 + add r0, r4, #0 + bl MOD06_0224DC50 + mov r2, #0xc1 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D79C +MOD06_0224D79C: ; 0x0224D79C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _0224D7AA + b _0224DB9A +_0224D7AA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224D7B6: ; jump table + .short _0224D7D0 - _0224D7B6 - 2 ; case 0 + .short _0224D80E - _0224D7B6 - 2 ; case 1 + .short _0224D84E - _0224D7B6 - 2 ; case 2 + .short _0224D8A6 - _0224D7B6 - 2 ; case 3 + .short _0224D8DC - _0224D7B6 - 2 ; case 4 + .short _0224D97E - _0224D7B6 - 2 ; case 5 + .short _0224D992 - _0224D7B6 - 2 ; case 6 + .short _0224DA82 - _0224D7B6 - 2 ; case 7 + .short _0224DAD2 - _0224D7B6 - 2 ; case 8 + .short _0224DAFE - _0224D7B6 - 2 ; case 9 + .short _0224DB2A - _0224D7B6 - 2 ; case 10 + .short _0224DB3E - _0224D7B6 - 2 ; case 11 + .short _0224DB6C - _0224D7B6 - 2 ; case 12 +_0224D7D0: + mov r3, #0x55 + lsl r3, r3, #2 + add r0, r4, r3 + sub r3, r3, #4 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + ldr r3, [r4, r3] + bl MOD06_0224DC5C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #1 + str r0, [r4, #4] + b _0224DB9A +_0224D80E: + ldr r0, [r4, #0xc] + ldr r1, _0224DB5C ; =0x02252080 + mov r2, #0x16 + bl MOD06_0224E4B4 + cmp r0, #0 + beq _0224D848 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #0xc + str r0, [r4, #4] + b _0224DB9A +_0224D848: + mov r0, #2 + str r0, [r4] + b _0224DB9A +_0224D84E: + mov r2, #0x5a + lsl r2, r2, #2 + add r0, r4, r2 + sub r2, #0x20 + ldr r1, [r4, #0x14] + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + bl MOD06_0224DE60 + ldr r0, [r4, #0x18] + mov r1, #0x5a + str r0, [sp] + ldr r0, [r4, #0x14] + lsl r1, r1, #2 + str r0, [sp, #4] + mov r0, #0x2f + lsl r0, r0, #4 + ldr r2, _0224DB5C ; =0x02252080 + ldr r3, [r4, #0x10] + add r0, r4, r0 + add r1, r4, r1 + bl MOD06_0224E3FC + mov r1, #0x52 + mov r0, #0x16 + lsl r1, r1, #2 + str r0, [sp] + ldr r0, [r4, r1] + add r1, #0x3c + str r0, [sp, #4] + mov r0, #0x2f + lsl r0, r0, #4 + add r0, r4, r0 + str r0, [sp, #8] + ldr r0, _0224DB60 ; =MOD06_0224E410 + ldr r3, _0224DB5C ; =0x02252080 + str r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x10] + add r0, r4, r1 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + bl MOD06_0224DFA8 +_0224D8A6: + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E24C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xa + str r0, [r4] + mov r0, #4 + str r0, [r4, #4] + b _0224DB9A +_0224D8DC: + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E1E4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224D942 + sub r1, r1, #1 + cmp r0, r1 + beq _0224D942 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x12 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x14] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E274 + mov r0, #0x2b + lsl r0, r0, #4 + ldrh r0, [r4, r0] + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [sp] + add r0, r4, r1 + sub r1, #0xc + ldr r1, [r4, r1] + ldr r2, [r4, #0x18] + ldr r3, _0224DB5C ; =0x02252080 + bl MOD06_0224DD50 + mov r0, #0xa + str r0, [r4] + mov r0, #5 + str r0, [r4, #4] + ldr r0, _0224DB64 ; =0x000005DC + bl FUN_020054C8 + b _0224DB9A +_0224D942: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0224D94C + b _0224DB9A +_0224D94C: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xb + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #0xc + str r0, [r4, #4] + ldr r0, _0224DB64 ; =0x000005DC + bl FUN_020054C8 + b _0224DB9A +_0224D97E: + mov r0, #0xb9 + lsl r0, r0, #2 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + add r0, r4, r0 + bl MOD06_0224E470 + mov r0, #6 + str r0, [r4] + b _0224DB9A +_0224D992: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E4A4 + cmp r0, #0 + bne _0224DA68 + mov r2, #0x2b + lsl r2, r2, #4 + ldrh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r1, _0224DB5C ; =0x02252080 + ldr r3, [r4, #0x18] + bl MOD06_0224E4E4 + cmp r0, #0 + bne _0224D9EA + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #3 + str r0, [r4, #4] + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + b _0224DB9A +_0224D9EA: + mov r2, #0x2b + lsl r2, r2, #4 + ldrh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r1, _0224DB5C ; =0x02252080 + bl MOD06_0224E510 + cmp r0, #0 + bne _0224DA32 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + mov r0, #0xb + str r0, [r4] + mov r0, #3 + str r0, [r4, #4] + b _0224DB9A +_0224DA32: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + mov r0, #0xb + str r0, [r4] + mov r0, #7 + str r0, [r4, #4] + b _0224DB9A +_0224DA68: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0224DA72 + b _0224DB9A +_0224DA72: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + mov r0, #3 + str r0, [r4] + b _0224DB9A +_0224DA82: + ldr r0, [r4, #0x18] + mov r3, #0x2b + str r0, [sp] + lsl r3, r3, #4 + ldrh r3, [r4, r3] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, _0224DB5C ; =0x02252080 + bl MOD06_0224E520 + mov r0, #0x2b + lsl r0, r0, #4 + ldrh r0, [r4, r0] + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [sp] + add r0, r4, r1 + sub r1, #0xc + ldr r1, [r4, r1] + ldr r2, [r4, #0x18] + ldr r3, _0224DB5C ; =0x02252080 + bl MOD06_0224DDD8 + ldr r0, [r4, #0xc] + ldr r1, _0224DB5C ; =0x02252080 + mov r2, #0x16 + bl MOD06_0224E4B4 + cmp r0, #0 + beq _0224DAC8 + mov r0, #0xb + str r0, [r4] + mov r0, #8 + str r0, [r4, #4] + b _0224DB9A +_0224DAC8: + mov r0, #0xb + str r0, [r4] + mov r0, #3 + str r0, [r4, #4] + b _0224DB9A +_0224DAD2: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #9 + str r0, [r4, #4] + b _0224DB9A +_0224DAFE: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #0xc + str r0, [r4, #4] + b _0224DB9A +_0224DB2A: + mov r0, #0x55 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DD28 + cmp r0, #0 + beq _0224DB9A + ldr r0, [r4, #4] + str r0, [r4] + b _0224DB9A +_0224DB3E: + mov r0, #0x55 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DD28 + cmp r0, #0 + beq _0224DB9A + ldr r0, _0224DB68 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224DB9A + ldr r0, [r4, #4] + str r0, [r4] + b _0224DB9A + .align 2, 0 +_0224DB5C: .word 0x02252080 +_0224DB60: .word MOD06_0224E410 +_0224DB64: .word 0x000005DC +_0224DB68: .word 0x021C48B8 +_0224DB6C: + mov r0, #0x55 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DCB4 + mov r0, #0x5a + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DED8 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E174 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_0224DB9A: + ldr r0, [r4, #0x1c] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DBA8 +MOD06_0224DBA8: ; 0x0224DBA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl LoadPlayerDataAddress + add r4, r0, #0 + bl FUN_02025084 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02024FF4 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224DBCC +MOD06_0224DBCC: ; 0x0224DBCC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4, #0x18] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #6 + ldr r2, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #6 + bl FUN_02002EEC + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x18] + mov r1, #3 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0x1a + ldr r2, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + ldr r0, [r4, #0x14] + mov r1, #3 + bl FUN_02018744 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DC28 +MOD06_0224DC28: ; 0x0224DC28 + push {r3, lr} + ldr r0, [r0, #0x14] + mov r1, #3 + bl FUN_02018744 + mov r0, #0 + mov r1, #1 + bl FUN_02054590 + pop {r3, pc} + + thumb_func_start MOD06_0224DC3C +MOD06_0224DC3C: ; 0x0224DC3C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r2, [r4, #0x18] + mov r0, #2 + add r1, #0x20 + bl FUN_02008C9C + str r0, [r4, #0x1c] + pop {r4, pc} + + thumb_func_start MOD06_0224DC50 +MOD06_0224DC50: ; 0x0224DC50 + ldr r3, _0224DC58 ; =0x0201FD59 + ldr r0, [r0, #0x1c] + bx r3 + nop +_0224DC58: .word 0x0201FD59 + + thumb_func_start MOD06_0224DC5C +MOD06_0224DC5C: ; 0x0224DC5C + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r0, #1 + beq _0224DCAE + str r3, [r5, #8] + add r0, r2, #0 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r5, #4] + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + ldr r1, [r5, #4] + add r0, r4, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02019064 + ldr r0, [r5, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r0, #1 + str r0, [r5] +_0224DCAE: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DCB4 +MOD06_0224DCB4: ; 0x0224DCB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224DCD6 + ldr r0, [r4, #4] + bl FUN_02019570 + ldr r0, [r4, #4] + bl FUN_02019178 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #0 + str r0, [r4] +_0224DCD6: + pop {r4, pc} + + thumb_func_start MOD06_0224DCD8 +MOD06_0224DCD8: ; 0x0224DCD8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, #0 + beq _0224DCEC + bl ErrorHandling +_0224DCEC: + ldr r0, [r5, #4] + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02021ACC + str r0, [r5, #0x10] + mov r3, #0 + str r3, [sp] + ldr r0, [r5, #8] + mov r1, #1 + str r0, [sp, #4] + ldr r0, _0224DD24 ; =0x0001020F + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x10] + bl FUN_0201BDE0 + str r0, [r5, #0xc] + ldr r0, [r5, #4] + bl FUN_020191D0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0224DD24: .word 0x0001020F + + thumb_func_start MOD06_0224DD28 +MOD06_0224DD28: ; 0x0224DD28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224DD4C + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _0224DD48 + bl FUN_02021A20 + mov r0, #0 + str r0, [r4, #0x10] +_0224DD48: + mov r0, #1 + pop {r4, pc} +_0224DD4C: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_0224DD50 +MOD06_0224DD50: ; 0x0224DD50 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r2, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r4, r1, #0 + add r5, r3, #0 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0xc8 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [sp, #0xc] + add r0, r4, #0 + mov r1, #7 + bl FUN_0200A914 + ldr r1, [sp, #0x28] + str r0, [sp, #0x10] + add r4, r1, #0 + mov r0, #0xc + mul r4, r0 + add r2, r5, r4 + ldr r2, [r2, #4] + add r0, r6, #0 + mov r1, #0 + add r2, #0x95 + bl FUN_0200AEA8 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, r5, r4 + ldr r2, [r2, #8] + add r0, r6, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r2, [r5, r4] + add r0, r6, #0 + mov r1, #2 + bl FUN_0200B660 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r6, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, r7, #0 + bl MOD06_0224DCD8 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0xc] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DDD8 +MOD06_0224DDD8: ; 0x0224DDD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r2, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r4, r1, #0 + add r5, r3, #0 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0xc8 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [sp, #0xc] + add r0, r4, #0 + mov r1, #0xc + bl FUN_0200A914 + ldr r1, [sp, #0x28] + str r0, [sp, #0x10] + add r4, r1, #0 + mov r0, #0xc + mul r4, r0 + add r2, r5, r4 + ldr r2, [r2, #4] + add r0, r6, #0 + mov r1, #0 + add r2, #0x95 + bl FUN_0200AEA8 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, r5, r4 + ldr r2, [r2, #8] + add r0, r6, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r2, [r5, r4] + add r0, r6, #0 + mov r1, #2 + bl FUN_0200B660 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r6, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, r7, #0 + bl MOD06_0224DCD8 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0xc] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DE60 +MOD06_0224DE60: ; 0x0224DE60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldr r0, [r6] + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp, #0x14] + cmp r0, #1 + beq _0224DED2 + add r0, r3, #0 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r6, #4] + mov r0, #0xb + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x94 + str r0, [sp, #0x10] + ldr r1, [r6, #4] + add r0, r4, #0 + mov r2, #3 + mov r3, #1 + bl FUN_02019064 + ldr r0, [sp, #0x14] + bl FUN_0200AA80 + str r0, [r6, #8] + mov r4, #0 + add r5, r6, #0 +_0224DEA8: + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x10 + bl FUN_0200A914 + str r0, [r5, #0x10] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0224DEA8 + ldr r1, [sp, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + str r0, [r6, #0xc] + ldr r0, [r6, #4] + mov r1, #0xf + bl FUN_02019620 + mov r0, #1 + str r0, [r6] +_0224DED2: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DED8 +MOD06_0224DED8: ; 0x0224DED8 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _0224DF18 + mov r4, #0 + add r5, r6, #0 +_0224DEE6: + ldr r0, [r5, #0x10] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0224DEE6 + ldr r0, [r6, #0xc] + bl FUN_02021A20 + ldr r0, [r6, #8] + bl FUN_0200AB18 + ldr r0, [r6, #4] + bl FUN_02019570 + ldr r0, [r6, #4] + bl FUN_02019178 + ldr r0, [r6, #4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #0 + str r0, [r6] +_0224DF18: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DF1C +MOD06_0224DF1C: ; 0x0224DF1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r5, #8] + add r6, #0x95 + add r4, r2, #0 + mov r1, #0 + add r2, r6, #0 + add r7, r3, #0 + bl FUN_0200AE38 + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + ldr r0, [r5, #8] + add r2, r4, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #8] + mov r1, #2 + add r2, r7, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [r5, #4] + mov r1, #0xf + bl FUN_02019620 + mov r7, #0 + add r6, r5, #0 + add r4, r7, #0 +_0224DF64: + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r6, #0x10] + bl FUN_0200B7B8 + mov r1, #0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0224DFA4 ; =0x0001020F + add r3, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0xc] + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, r6, #4 + add r4, #0x10 + cmp r7, #3 + blt _0224DF64 + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DFA4: .word 0x0001020F + + thumb_func_start MOD06_0224DFA8 +MOD06_0224DFA8: ; 0x0224DFA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + add r5, r0, #0 + ldr r0, [sp, #0x78] + add r4, r1, #0 + str r0, [sp, #0x78] + ldr r0, [r5] + str r2, [sp, #0x14] + str r3, [sp, #0x18] + cmp r0, #1 + bne _0224DFC0 + b _0224E164 +_0224DFC0: + ldr r0, [sp, #0x78] + mov r1, #1 + mov r2, #0x12 + str r1, [r5] + add r0, r0, #1 + lsl r2, r2, #4 + str r0, [r5, r2] + add r0, r2, #0 + ldr r3, [sp, #0x80] + add r0, #0x10 + str r3, [r5, r0] + ldr r0, [sp, #0x84] + add r2, #0x14 + str r0, [r5, r2] + ldr r0, [sp, #0x14] + bl FUN_02018FF4 + str r0, [r5, #4] + mov r0, #1 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xe8 + str r0, [sp, #0x10] + ldr r1, [r5, #4] + add r0, r4, #0 + mov r2, #3 + mov r3, #0x11 + bl FUN_02019064 + ldr r0, [sp, #0x14] + bl FUN_0200AA80 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [sp, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [sp, #0x7c] + mov r1, #0x10 + bl FUN_0200A914 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x78] + mov r7, #0 + cmp r0, #0 + bls _0224E084 + add r6, r5, #0 + add r4, r5, #0 +_0224E034: + mov r0, #0x49 + ldr r2, [sp, #0x18] + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200B660 + mov r0, #0x49 + mov r1, #0x4a + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [sp, #0x1c] + bl FUN_0200B7B8 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [sp, #0x14] + bl FUN_02021ACC + add r1, r6, #0 + add r1, #0xc4 + str r0, [r1] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r6, r6, #4 + str r0, [r4, #0xc] + str r7, [r4, #0x10] + ldr r0, [sp, #0x18] + add r7, r7, #1 + add r0, #0xc + str r0, [sp, #0x18] + ldr r0, [sp, #0x78] + add r4, #8 + cmp r7, r0 + blo _0224E034 +_0224E084: + ldr r0, [sp, #0x78] + add r4, r5, #0 + lsl r6, r0, #2 + ldr r0, [sp, #0x7c] + add r4, #0xc4 + mov r1, #0x13 + bl FUN_0200A914 + str r0, [r4, r6] + ldr r0, [sp, #0x78] + lsl r1, r0, #3 + ldr r0, [r4, r6] + add r1, r5, r1 + str r0, [r1, #0xc] + ldr r0, [sp, #0x78] + str r0, [r1, #0x10] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200AB18 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r3, [sp, #0x14] + ldr r0, [r5, #4] + ldr r1, _0224E168 ; =0x022523A0 + lsl r3, r3, #0x18 + str r0, [r1, #0xc] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + lsr r3, r3, #0x18 + strh r0, [r1, #0x10] + add r0, r5, #0 + add r0, #0xc + str r0, [r1] + mov r1, #0 + ldr r0, _0224E16C ; =0x022523A0 + add r2, r1, #0 + bl FUN_020010A8 + str r0, [r5, #8] + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r7, #0x4e + mov r4, #0 + add r6, r5, #0 + lsl r7, r7, #2 +_0224E0F8: + ldr r2, [sp, #0x14] + mov r0, #1 + add r1, r4, #0 + bl FUN_02008DEC + str r0, [r6, r7] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #4 + blt _0224E0F8 + ldr r2, [sp, #0x14] + add r0, sp, #0x40 + add r1, r5, #0 + bl MOD06_0224E294 + ldr r0, [sp, #0x88] + mov r6, #0 + str r0, [sp, #0x20] + add r0, sp, #0x40 + str r0, [sp, #0x24] + mov r0, #1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + mov r7, #0x56 + str r0, [sp, #0x3c] + mov r0, #3 + lsl r0, r0, #0x12 + ldr r4, _0224E170 ; =0x02252074 + str r6, [sp, #0x34] + str r0, [sp, #0x28] + lsl r7, r7, #2 +_0224E136: + ldrb r0, [r4] + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + add r0, sp, #0x20 + bl FUN_0201FF84 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02020130 + ldr r0, [r5, r7] + mov r1, #1 + bl FUN_020200BC + add r6, r6, #1 + add r4, r4, #1 + add r5, r5, #4 + cmp r6, #2 + blt _0224E136 +_0224E164: + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224E168: .word 0x022523A0 +_0224E16C: .word 0x022523A0 +_0224E170: .word 0x02252074 + + thumb_func_start MOD06_0224E174 +MOD06_0224E174: ; 0x0224E174 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _0224E1E2 + mov r7, #0x56 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_0224E186: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0224E186 + add r0, r6, #0 + bl MOD06_0224E36C + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r5, #0 + cmp r0, #0 + ble _0224E1C0 + mov r7, #0x12 + add r4, r6, #0 + lsl r7, r7, #4 +_0224E1AC: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_02021A20 + ldr r0, [r6, r7] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, r0 + blt _0224E1AC +_0224E1C0: + mov r1, #0 + ldr r0, [r6, #8] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r6, #4] + bl FUN_02019570 + ldr r0, [r6, #4] + bl FUN_02019178 + ldr r0, [r6, #4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #1 + str r0, [r6] +_0224E1E2: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E1E4 +MOD06_0224E1E4: ; 0x0224E1E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl FUN_02001204 + mov r1, #0 + add r4, r0, #0 + mvn r1, r1 + cmp r4, r1 + bne _0224E22A + ldr r0, [r5, #8] + add r1, sp, #0 + bl FUN_0200143C + mov r2, #0x4b + add r0, sp, #0 + lsl r2, r2, #2 + ldrh r1, [r0] + ldrh r0, [r5, r2] + cmp r0, r1 + beq _0224E242 + strh r1, [r5, r2] + add r0, r2, #4 + ldrh r1, [r5, r2] + add r2, #8 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + blx r2 + ldr r0, _0224E248 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD06_0224E39C + b _0224E242 +_0224E22A: + sub r0, r1, #1 + cmp r4, r0 + beq _0224E242 + mov r0, #0x4b + lsl r0, r0, #2 + ldrh r2, [r5, r0] + sub r0, #0xc + ldr r0, [r5, r0] + sub r0, r0, #1 + cmp r2, r0 + bne _0224E242 + sub r4, r1, #1 +_0224E242: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_0224E248: .word 0x000005DC + + thumb_func_start MOD06_0224E24C +MOD06_0224E24C: ; 0x0224E24C + push {r4, lr} + mov r2, #0x13 + lsl r2, r2, #4 + add r4, r0, #0 + sub r1, r2, #4 + ldr r0, [r4, r2] + add r2, r2, #4 + ldrh r1, [r4, r1] + ldr r2, [r4, r2] + blx r2 + ldr r0, [r4, #4] + mov r1, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD06_0224E39C + pop {r4, pc} + + thumb_func_start MOD06_0224E274 +MOD06_0224E274: ; 0x0224E274 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E294 +MOD06_0224E294: ; 0x0224E294 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r5, r1, #0 + ldr r1, _0224E368 ; =0x00001388 + add r6, r0, #0 + add r4, r2, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + lsr r0, r1, #4 + str r4, [sp, #8] + ldr r0, [r5, r0] + mov r1, #0x3e + mov r2, #4 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, _0224E368 ; =0x00001388 + sub r1, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x3e + mov r2, #0xa + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, _0224E368 ; =0x00001388 + sub r1, #0xc + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x3e + mov r2, #5 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, _0224E368 ; =0x00001388 + sub r1, #0xc + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x3e + mov r2, #6 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0xc + ldr r0, [r5, r1] + bl FUN_02009B04 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009D68 + ldr r1, _0224E368 ; =0x00001388 + mov r0, #0 + mov r3, #0x4f + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsr r2, r1, #4 + ldr r2, [r5, r2] + lsl r3, r3, #2 + str r2, [sp, #0x14] + ldr r2, [r5, r3] + str r2, [sp, #0x18] + add r2, r3, #4 + ldr r2, [r5, r2] + add r3, #8 + str r2, [sp, #0x1c] + ldr r2, [r5, r3] + add r3, r1, #0 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r6, #0 + add r2, r1, #0 + bl FUN_02008AA4 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224E368: .word 0x00001388 + + thumb_func_start MOD06_0224E36C +MOD06_0224E36C: ; 0x0224E36C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009C0C + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r6, #0x4e + mov r4, #0 + lsl r6, r6, #2 +_0224E38A: + ldr r0, [r5, r6] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224E38A + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E39C +MOD06_0224E39C: ; 0x0224E39C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #8] + add r1, sp, #0 + mov r2, #0 + bl FUN_02001448 + add r0, sp, #0 + ldrh r0, [r0] + cmp r0, #0 + bne _0224E3C2 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + b _0224E3CE +_0224E3C2: + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 +_0224E3CE: + add r0, sp, #0 + ldrh r2, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #7 + cmp r2, r1 + blt _0224E3EC + add r0, #0x3c + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #4 + pop {r3, r4, pc} +_0224E3EC: + add r0, #0x3c + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E3FC +MOD06_0224E3FC: ; 0x0224E3FC + push {r3, r4} + ldr r4, [sp, #0xc] + str r4, [r0, #4] + str r1, [r0, #8] + str r2, [r0, #0xc] + ldr r1, [sp, #8] + str r3, [r0, #0x10] + str r1, [r0] + pop {r3, r4} + bx lr + + thumb_func_start MOD06_0224E410 +MOD06_0224E410: ; 0x0224E410 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + cmp r1, #0x16 + bhs _0224E448 + add r4, r1, #0 + mov r0, #0xc + mul r4, r0 + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + add r1, r1, r4 + ldr r1, [r1, #4] + ldr r2, [r5] + add r1, #0x95 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206EEF8 + ldr r1, [r5, #0xc] + add r3, r0, #0 + add r2, r1, r4 + ldr r1, [r2, #4] + ldr r0, [r5, #8] + ldr r2, [r2, #8] + bl MOD06_0224DF1C + add sp, #0x10 + pop {r3, r4, r5, pc} +_0224E448: + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r5, #4] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r5, #4] + mov r1, #3 + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224E470 +MOD06_0224E470: ; 0x0224E470 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r2, #0 + cmp r0, #1 + beq _0224E492 + add r0, r1, #0 + ldr r1, _0224E494 ; =0x02252078 + mov r2, #0x1f + mov r3, #0xb + str r4, [sp] + bl FUN_02002198 + str r0, [r5, #4] + str r4, [r5, #8] + mov r0, #1 + str r0, [r5] +_0224E492: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224E494: .word 0x02252078 + + thumb_func_start MOD06_0224E498 +MOD06_0224E498: ; 0x0224E498 + ldr r1, [r0] + cmp r1, #0 + beq _0224E4A2 + mov r1, #0 + str r1, [r0] +_0224E4A2: + bx lr + + thumb_func_start MOD06_0224E4A4 +MOD06_0224E4A4: ; 0x0224E4A4 + ldr r3, _0224E4B0 ; =0x020021AD + add r1, r0, #0 + ldr r0, [r1, #4] + ldr r1, [r1, #8] + bx r3 + nop +_0224E4B0: .word 0x020021AD + + thumb_func_start MOD06_0224E4B4 +MOD06_0224E4B4: ; 0x0224E4B4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + ldr r4, _0224E4E0 ; =0x00000000 + beq _0224E4DA +_0224E4C0: + ldr r1, [r5] + add r0, r7, #0 + mov r2, #1 + bl FUN_020270D8 + cmp r0, #1 + bne _0224E4D2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224E4D2: + add r4, r4, #1 + add r5, #0xc + cmp r4, r6 + blo _0224E4C0 +_0224E4DA: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E4E0: .word 0x00000000 + + thumb_func_start MOD06_0224E4E4 +MOD06_0224E4E4: ; 0x0224E4E4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r1, #0xc + mul r4, r1 + add r1, r5, r4 + ldr r1, [r1, #4] + add r2, r3, #0 + add r1, #0x95 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206EEF8 + add r1, r5, r4 + ldr r1, [r1, #8] + cmp r0, r1 + blo _0224E50A + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E50A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E510 +MOD06_0224E510: ; 0x0224E510 + mov r3, #0xc + mul r3, r2 + ldr r1, [r1, r3] + ldr r3, _0224E51C ; =0x020270D9 + mov r2, #1 + bx r3 + .align 2, 0 +_0224E51C: .word 0x020270D9 + + thumb_func_start MOD06_0224E520 +MOD06_0224E520: ; 0x0224E520 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0xc + mul r1, r3 + add r3, r2, r1 + ldr r4, [r3, #4] + ldr r1, [r2, r1] + ldr r5, [r3, #8] + add r4, #0x95 + mov r2, #1 + bl FUN_020271A4 + lsl r1, r4, #0x10 + lsl r2, r5, #0x10 + ldr r3, [sp, #0x10] + add r0, r6, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_0206EDD4 + cmp r0, #1 + beq _0224E550 + bl ErrorHandling +_0224E550: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E554 +MOD06_0224E554: ; 0x0224E554 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + ldr r1, _0224E5C8 ; =0x000001FB + add r2, sp, #4 + add r3, sp, #0 + add r5, r0, #0 + bl FUN_0204A9F0 + cmp r0, #0 + beq _0224E5C0 + mov r0, #4 + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0 + strb r6, [r4, #0xc] + mov r0, #0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldr r0, [r5, #0x28] + bl FUN_020344FC + add r1, r0, #0 + ldr r0, [sp] + add r2, sp, #0x14 + bl FUN_0204AAD4 + ldr r1, [sp, #4] + add r0, sp, #8 + bl FUN_021E7EA0 + add r3, sp, #8 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4] + ldr r0, [sp, #0x14] + add r2, r4, #0 + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #8] + ldr r0, [sp, #0x1c] + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, [r5, #0x10] + ldr r1, _0224E5CC ; =MOD06_0224E5D0 + bl FUN_0204640C + add sp, #0x20 + pop {r4, r5, r6, pc} +_0224E5C0: + bl ErrorHandling + add sp, #0x20 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224E5C8: .word 0x000001FB +_0224E5CC: .word MOD06_0224E5D0 + + thumb_func_start MOD06_0224E5D0 +MOD06_0224E5D0: ; 0x0224E5D0 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bls _0224E5EC + b _0224E74C +_0224E5EC: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224E5F8: ; jump table + .short _0224E604 - _0224E5F8 - 2 ; case 0 + .short _0224E644 - _0224E5F8 - 2 ; case 1 + .short _0224E6C4 - _0224E5F8 - 2 ; case 2 + .short _0224E6F0 - _0224E5F8 - 2 ; case 3 + .short _0224E702 - _0224E5F8 - 2 ; case 4 + .short _0224E742 - _0224E5F8 - 2 ; case 5 +_0224E604: + ldr r0, _0224E754 ; =0x00000205 + ldr r1, [r6, #0x2c] + bl FUN_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r5, r0, r1 + ldr r0, [r6, #0x2c] + bl FUN_021F4C88 + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r6, #0x4c] + ldr r1, [r6, #0x50] + ldr r3, _0224E754 ; =0x00000205 + mov r2, #0x10 + bl FUN_021DA464 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E644: + add r0, sp, #0x18 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + ldrb r5, [r4, #0xd] + mov r1, #0xc + ldr r3, [r4] + add r2, r5, #0 + ldr r5, _0224E758 ; =0x022523C0 + mul r2, r1 + ldr r2, [r5, r2] + add r2, r3, r2 + str r2, [sp, #0x24] + ldrb r5, [r4, #0xd] + ldr r3, [r4, #4] + add r2, r5, #0 + ldr r5, _0224E75C ; =0x022523C4 + mul r2, r1 + ldr r2, [r5, r2] + add r2, r3, r2 + str r2, [sp, #0x28] + ldrb r3, [r4, #0xd] + ldr r2, [r4, #8] + add r5, r3, #0 + mul r5, r1 + ldr r1, _0224E760 ; =0x022523C8 + add r3, sp, #0x24 + ldr r1, [r1, r5] + add r1, r2, r1 + str r1, [sp, #0x2c] + str r0, [sp] + ldr r0, [r6, #0x4c] + ldr r2, _0224E754 ; =0x00000205 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + ldrb r1, [r4, #0xd] + add r1, r4, r1 + strb r0, [r1, #0x10] + ldrb r1, [r4, #0xd] + add r0, r6, #0 + add r0, #0xa0 + add r1, r4, r1 + ldrb r1, [r1, #0x10] + ldr r0, [r0] + bl FUN_021E7EEC + bl FUN_021E7EC8 + add r3, r0, #0 + ldrb r2, [r4, #0xd] + ldr r0, [r6, #0x50] + mov r1, #0x10 + bl FUN_021DA4BC + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E6C4: + ldrb r0, [r4, #0xe] + cmp r0, #0xf + bhs _0224E6D0 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _0224E74C +_0224E6D0: + mov r0, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bhs _0224E6E8 + mov r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E6E8: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E6F0: + ldr r0, [r6, #0x50] + mov r1, #0x10 + mov r2, #0 + bl FUN_021DA4EC + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E702: + ldr r0, [r6, #0x50] + mov r1, #0x10 + bl FUN_021DA58C + cmp r0, #0 + beq _0224E74C + ldr r0, [r6, #0x4c] + ldr r1, [r6, #0x50] + mov r2, #0x10 + bl FUN_021DA54C + ldrb r0, [r4, #0xc] + mov r5, #0 + cmp r0, #0 + bls _0224E73A +_0224E720: + add r0, r4, r5 + add r1, r6, #0 + add r1, #0xa0 + ldrb r0, [r0, #0x10] + ldr r1, [r1] + bl FUN_021E7C80 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, #0xc] + cmp r5, r0 + blo _0224E720 +_0224E73A: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E742: + bl FUN_02016A18 + add sp, #0x30 + mov r0, #1 + pop {r4, r5, r6, pc} +_0224E74C: + mov r0, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224E754: .word 0x00000205 +_0224E758: .word 0x022523C0 +_0224E75C: .word 0x022523C4 +_0224E760: .word 0x022523C8 + + thumb_func_start MOD06_0224E764 +MOD06_0224E764: ; 0x0224E764 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F1A4 + cmp r0, #0 + bne _0224E794 + mov r0, #0x1f + ldr r2, [r4, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + add r4, r0, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA0DC + pop {r4, pc} +_0224E794: + mov r0, #0x1f + ldr r2, [r4, #0x4c] + lsl r0, r0, #4 + mov r1, #0 + bl FUN_021DA080 + mov r1, #1 + bl FUN_021DA0DC + mov r0, #0x1f + ldr r2, [r4, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + add r4, r0, #0 + bl FUN_021DA138 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA0DC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E7C4 +MOD06_0224E7C4: ; 0x0224E7C4 + ldr r3, _0224E7D0 ; =0x0204640D + ldr r0, [r0, #0x10] + ldr r1, _0224E7D4 ; =MOD06_0224E7D8 + mov r2, #0 + bx r3 + nop +_0224E7D0: .word 0x0204640D +_0224E7D4: .word MOD06_0224E7D8 + + thumb_func_start MOD06_0224E7D8 +MOD06_0224E7D8: ; 0x0224E7D8 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02046530 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224E7FA + cmp r0, #1 + beq _0224E820 + cmp r0, #2 + beq _0224E83A + b _0224E852 +_0224E7FA: + mov r0, #0x1f + ldr r2, [r5, #0x4c] + lsl r0, r0, #4 + mov r1, #0 + bl FUN_021DA080 + add r5, r0, #0 + bl FUN_021DA0E8 + cmp r0, #0 + beq _0224E852 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA0DC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E852 +_0224E820: + mov r0, #0x1f + ldr r2, [r5, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + mov r1, #0 + bl FUN_021DA0DC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E852 +_0224E83A: + mov r0, #0x1f + ldr r2, [r5, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + bl FUN_021DA20C + cmp r0, #0 + beq _0224E852 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E852: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E858 +MOD06_0224E858: ; 0x0224E858 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + bl FUN_02058060 + add r6, r0, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r6, #0 + bl FUN_02058B2C + add r5, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + add r4, r0, #0 + add r0, r6, #0 + bl FUN_020584C4 + cmp r0, #3 + bhi _0224E8A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E890: ; jump table + .short _0224E898 - _0224E890 - 2 ; case 0 + .short _0224E89C - _0224E890 - 2 ; case 1 + .short _0224E8A0 - _0224E890 - 2 ; case 2 + .short _0224E8A4 - _0224E890 - 2 ; case 3 +_0224E898: + sub r4, r4, #1 + b _0224E8AC +_0224E89C: + add r4, r4, #1 + b _0224E8AC +_0224E8A0: + sub r5, r5, #1 + b _0224E8AC +_0224E8A4: + add r5, r5, #1 + b _0224E8AC +_0224E8A8: + bl ErrorHandling +_0224E8AC: + mov r3, #2 + lsl r1, r5, #0x10 + lsl r3, r3, #0xe + ldr r2, [sp, #4] + lsl r4, r4, #0x10 + add r1, r1, r3 + add r0, r7, #0 + add r3, r4, r3 + bl FUN_021F54D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E8C4 +MOD06_0224E8C4: ; 0x0224E8C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + add r6, r0, #0 + add r1, sp, #0 + bl FUN_02055350 + add r0, r6, #0 + bl FUN_02055320 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0205532C + add r4, r0, #0 + add r0, r6, #0 + bl FUN_020552F8 + cmp r0, #3 + bhi _0224E910 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E8F8: ; jump table + .short _0224E900 - _0224E8F8 - 2 ; case 0 + .short _0224E904 - _0224E8F8 - 2 ; case 1 + .short _0224E908 - _0224E8F8 - 2 ; case 2 + .short _0224E90C - _0224E8F8 - 2 ; case 3 +_0224E900: + sub r4, r4, #1 + b _0224E914 +_0224E904: + add r4, r4, #1 + b _0224E914 +_0224E908: + sub r5, r5, #1 + b _0224E914 +_0224E90C: + add r5, r5, #1 + b _0224E914 +_0224E910: + bl ErrorHandling +_0224E914: + mov r3, #2 + lsl r1, r5, #0x10 + lsl r3, r3, #0xe + ldr r2, [sp, #4] + lsl r4, r4, #0x10 + add r1, r1, r3 + add r0, r7, #0 + add r3, r4, r3 + bl FUN_021F54D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E92C +MOD06_0224E92C: ; 0x0224E92C + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_02055350 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl FUN_021F54D0 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224E948 +MOD06_0224E948: ; 0x0224E948 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r2, [sp, #8] + add r6, r0, #0 + mov r1, #0 + mov r2, #0xdc + add r4, r3, #0 + ldr r7, [sp, #0x28] + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x8d + add r2, r5, #0 + mov r3, #4 + bl FUN_021F5268 + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl FUN_021F5400 + add r0, r6, #0 + add r0, #0xd8 + str r4, [r0] + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224E9BE + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + add r5, #0x88 + str r0, [sp, #0xc] +_0224E994: + ldr r3, [sp, #8] + mov r0, #4 + str r0, [sp] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x8d + add r3, r3, r4 + str r7, [sp, #4] + bl FUN_021F531C + add r0, r6, #0 + add r1, r5, #0 + bl FUN_021F5424 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224E994 +_0224E9BE: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E9C4 +MOD06_0224E9C4: ; 0x0224E9C4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0x78 + add r7, r1, #0 + bl FUN_021F52C8 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224E9F6 + add r5, r6, #0 + add r5, #0x88 +_0224E9E0: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021F5358 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224E9E0 +_0224E9F6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E9F8 +MOD06_0224E9F8: ; 0x0224E9F8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r6, #1 + mov r4, #0 + cmp r0, #0 + bls _0224EA26 + add r5, r7, #0 + add r5, #0x88 +_0224EA0C: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_021F53BC + and r6, r0 + add r0, r7, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224EA0C +_0224EA26: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EA2C +MOD06_0224EA2C: ; 0x0224EA2C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224EA58 + add r5, r6, #0 + mov r7, #1 + add r5, #0x88 + lsl r7, r7, #0xc +_0224EA42: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021F5384 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224EA42 +_0224EA58: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EA5C +MOD06_0224EA5C: ; 0x0224EA5C + ldr r3, _0224EA60 ; =0x021F5431 + bx r3 + .align 2, 0 +_0224EA60: .word 0x021F5431 + + thumb_func_start MOD06_0224EA64 +MOD06_0224EA64: ; 0x0224EA64 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + add r0, #0xdc + mov r1, #3 + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r3, r1, #0 + bl MOD06_0224E948 + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E8C4 + ldr r0, _0224EAA8 ; =0x0000064B + bl FUN_020054C8 + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224EAA8: .word 0x0000064B + + thumb_func_start MOD06_0224EAAC +MOD06_0224EAAC: ; 0x0224EAAC + ldr r3, _0224EAB8 ; =MOD06_0224E9C4 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224EAB8: .word MOD06_0224E9C4 + + thumb_func_start MOD06_0224EABC +MOD06_0224EABC: ; 0x0224EABC + push {r4, lr} + add r4, r2, #0 + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0224EACE + cmp r0, #1 + pop {r4, pc} +_0224EACE: + add r0, r4, #0 + bl MOD06_0224E9F8 + cmp r0, #1 + bne _0224EAEC + add r0, r4, #0 + mov r1, #0 + bl FUN_021F54CC + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r4, #0xec + add r0, r0, #1 + str r0, [r4] +_0224EAEC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EAF0 +MOD06_0224EAF0: ; 0x0224EAF0 + ldr r3, _0224EAF8 ; =MOD06_0224EA5C + add r0, r2, #0 + bx r3 + nop +_0224EAF8: .word MOD06_0224EA5C + + thumb_func_start MOD06_0224EAFC +MOD06_0224EAFC: ; 0x0224EAFC + ldr r0, [r0, #4] + ldr r3, _0224EB08 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EB0C ; =0x022521D4 + bx r3 + nop +_0224EB08: .word 0x021D8025 +_0224EB0C: .word 0x022521D4 + + thumb_func_start MOD06_0224EB10 +MOD06_0224EB10: ; 0x0224EB10 + ldr r3, _0224EB14 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224EB14: .word 0x021D80A5 + + thumb_func_start MOD06_0224EB18 +MOD06_0224EB18: ; 0x0224EB18 + push {r3, lr} + bl FUN_021D80E4 + add r0, #0xec + ldr r0, [r0] + cmp r0, #1 + bne _0224EB2A + mov r0, #1 + pop {r3, pc} +_0224EB2A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EB30 +MOD06_0224EB30: ; 0x0224EB30 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + add r0, #0xdc + mov r2, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl MOD06_0224E948 + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E8C4 + ldr r0, _0224EB74 ; =0x0000064A + bl FUN_020054C8 + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224EB74: .word 0x0000064A + + thumb_func_start MOD06_0224EB78 +MOD06_0224EB78: ; 0x0224EB78 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + add r0, #0xdc + mov r2, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl MOD06_0224E948 + ldr r0, [r5, #0x34] + mov r1, #0 + add r2, r4, #0 + bl MOD06_0224E858 + ldr r0, _0224EBC0 ; =0x0000064A + bl FUN_020054C8 + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + nop +_0224EBC0: .word 0x0000064A + + thumb_func_start MOD06_0224EBC4 +MOD06_0224EBC4: ; 0x0224EBC4 + ldr r3, _0224EBD0 ; =MOD06_0224E9C4 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224EBD0: .word MOD06_0224E9C4 + + thumb_func_start MOD06_0224EBD4 +MOD06_0224EBD4: ; 0x0224EBD4 + push {r4, lr} + add r4, r2, #0 + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0224EBE6 + cmp r0, #1 + pop {r4, pc} +_0224EBE6: + add r0, r4, #0 + bl MOD06_0224E9F8 + cmp r0, #1 + bne _0224EC04 + add r0, r4, #0 + mov r1, #0 + bl FUN_021F54CC + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r4, #0xec + add r0, r0, #1 + str r0, [r4] +_0224EC04: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EC08 +MOD06_0224EC08: ; 0x0224EC08 + ldr r3, _0224EC10 ; =MOD06_0224EA5C + add r0, r2, #0 + bx r3 + nop +_0224EC10: .word MOD06_0224EA5C + + thumb_func_start MOD06_0224EC14 +MOD06_0224EC14: ; 0x0224EC14 + ldr r0, [r0, #4] + ldr r3, _0224EC20 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EC24 ; =0x0225218C + bx r3 + nop +_0224EC20: .word 0x021D8025 +_0224EC24: .word 0x0225218C + + thumb_func_start MOD06_0224EC28 +MOD06_0224EC28: ; 0x0224EC28 + ldr r0, [r0, #4] + ldr r3, _0224EC34 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EC38 ; =0x022521A4 + bx r3 + nop +_0224EC34: .word 0x021D8025 +_0224EC38: .word 0x022521A4 + + thumb_func_start MOD06_0224EC3C +MOD06_0224EC3C: ; 0x0224EC3C + ldr r3, _0224EC40 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224EC40: .word 0x021D80A5 + + thumb_func_start MOD06_0224EC44 +MOD06_0224EC44: ; 0x0224EC44 + push {r3, lr} + bl FUN_021D80E4 + add r0, #0xec + ldr r0, [r0] + cmp r0, #1 + bne _0224EC56 + mov r0, #1 + pop {r3, pc} +_0224EC56: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EC5C +MOD06_0224EC5C: ; 0x0224EC5C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #4] + ldr r1, _0224ECEC ; =0x02252188 + str r2, [sp, #8] + ldrb r2, [r1, #2] + add r0, sp, #0x10 + strb r2, [r0, #2] + ldrb r2, [r1, #3] + strb r2, [r0, #3] + ldrb r2, [r1] + strb r2, [r0] + ldrb r1, [r1, #1] + mov r2, #0x73 + lsl r2, r2, #2 + strb r1, [r0, #1] + ldr r0, [sp, #8] + mov r1, #0 + bl Call_FillMemWithValue + mov r1, #0x6e + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r0, r0, r1 + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + ldr r5, [sp, #8] + mov r1, #0x6e + add r4, sp, #0x10 + lsl r1, r1, #2 + add r0, r5, #0 + add r0, r0, r1 + mov r7, #0 + add r6, sp, #0x10 + add r4, #2 + str r0, [sp, #0xc] +_0224ECA8: + ldr r0, [sp, #0xc] + mov r3, #2 + str r0, [sp] + ldrb r1, [r4] + ldrb r2, [r6] + add r0, r5, #0 + bl MOD06_0224E948 + ldr r0, [sp, #4] + add r1, r5, #0 + ldr r0, [r0, #0x38] + bl MOD06_0224E92C + add r7, r7, #1 + add r6, r6, #1 + add r4, r4, #1 + add r5, #0xdc + cmp r7, #2 + blt _0224ECA8 + ldr r0, [sp, #8] + mov r1, #0 + add r0, #0xdc + bl FUN_021F54CC + ldr r0, _0224ECF0 ; =0x0000064D + bl FUN_020054C8 + mov r1, #0x72 + ldr r0, [sp, #8] + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224ECEC: .word 0x02252188 +_0224ECF0: .word 0x0000064D + + thumb_func_start MOD06_0224ECF4 +MOD06_0224ECF4: ; 0x0224ECF4 + push {r4, r5, r6, lr} + mov r0, #0x6e + add r5, r2, #0 + lsl r0, r0, #2 + mov r4, #0 + add r6, r5, r0 +_0224ED00: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0224E9C4 + add r4, r4, #1 + add r5, #0xdc + cmp r4, #2 + blt _0224ED00 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224ED14 +MOD06_0224ED14: ; 0x0224ED14 + push {r4, r5, r6, lr} + mov r0, #0x72 + add r4, r2, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r5, r1, #0 + cmp r0, #0 + beq _0224ED2A + cmp r0, #1 + beq _0224ED66 + pop {r4, r5, r6, pc} +_0224ED2A: + add r0, r4, #0 + bl MOD06_0224E9F8 + add r6, r0, #0 + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E92C + cmp r6, #1 + bne _0224ED78 + add r0, r4, #0 + add r0, #0xdc + mov r1, #1 + bl FUN_021F54CC + add r0, r4, #0 + mov r1, #0 + bl FUN_021F54CC + add r1, r4, #0 + ldr r0, [r5, #0x38] + add r1, #0xdc + bl MOD06_0224E92C + mov r0, #0x72 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224ED66: + add r0, r4, #0 + add r0, #0xdc + bl MOD06_0224EA2C + add r4, #0xdc + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E92C +_0224ED78: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224ED7C +MOD06_0224ED7C: ; 0x0224ED7C + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 +_0224ED82: + add r0, r5, #0 + + thumb_func_start MOD06_0224ED84 +MOD06_0224ED84: ; 0x0224ED84 + bl MOD06_0224EA5C + add r4, r4, #1 + add r5, #0xdc + cmp r4, #2 + blt _0224ED82 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224ED94 +MOD06_0224ED94: ; 0x0224ED94 + ldr r0, [r0, #4] + ldr r3, _0224EDA0 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EDA4 ; =0x022521BC + bx r3 + nop +_0224EDA0: .word 0x021D8025 +_0224EDA4: .word 0x022521BC + + thumb_func_start MOD06_0224EDA8 +MOD06_0224EDA8: ; 0x0224EDA8 + ldr r3, _0224EDAC ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224EDAC: .word 0x021D80A5 + + thumb_func_start MOD06_0224EDB0 +MOD06_0224EDB0: ; 0x0224EDB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + add r6, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + cmp r0, #0 + beq _0224EDC8 + bl ErrorHandling +_0224EDC8: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02055350 + ldr r2, [sp, #4] + ldr r3, [sp, #8] + ldr r1, [sp] + add r0, r7, #0 + add r2, r2, r4 + add r3, r3, r5 + bl FUN_021F54D0 + add r0, r7, #0 + mov r4, #0 + add r5, r7, #0 + mov r1, #1 + add r0, #0xc8 + str r1, [r0] + add r5, #0x78 + add r6, r4, #0 +_0224EDF0: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_021F53F8 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224EDF0 + add r0, r7, #0 + mov r1, #1 + bl FUN_021F54CC + ldr r0, _0224EE14 ; =0x00000627 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0224EE14: .word 0x00000627 + + thumb_func_start MOD06_0224EE18 +MOD06_0224EE18: ; 0x0224EE18 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + beq _0224EE52 + ldr r5, [sp] + mov r4, #1 + mov r6, #0 + add r5, #0x78 + lsl r7, r4, #0xc +_0224EE2E: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021F53BC + add r6, r6, #1 + and r4, r0 + add r5, #0x14 + cmp r6, #4 + blt _0224EE2E + cmp r4, #1 + bne _0224EE52 + ldr r0, [sp] + mov r1, #0 + add r0, #0xc8 + str r1, [r0] + ldr r0, [sp] + bl FUN_021F54CC +_0224EE52: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224EE54 +MOD06_0224EE54: ; 0x0224EE54 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp] + str r2, [sp, #4] + mov r1, #0 + mov r2, #0xcc + add r7, r0, #0 + add r5, r3, #0 + bl Call_FillMemWithValue + ldr r1, [sp] + add r0, r7, #0 + bl FUN_021F5400 + add r4, r7, #0 + mov r6, #0 + add r4, #0x78 +_0224EE76: + ldr r1, [sp] + ldr r2, [r5] + ldr r3, [sp, #4] + add r0, r4, #0 + bl FUN_021F5348 + add r0, r7, #0 + add r1, r4, #0 + bl FUN_021F5424 + add r6, r6, #1 + add r5, r5, #4 + add r4, #0x14 + cmp r6, #4 + blt _0224EE76 + add r0, r7, #0 + mov r1, #0 + bl FUN_021F54CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224EEA0 +MOD06_0224EEA0: ; 0x0224EEA0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + add r6, r1, #0 + mov r4, #0 + add r5, #0x78 +_0224EEAC: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_021F5358 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224EEAC + add r0, r7, #0 + mov r1, #0 + mov r2, #0xcc + bl Call_FillMemWithValue + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224EEC8 +MOD06_0224EEC8: ; 0x0224EEC8 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0 + ldr r0, [r0, #0x38] + bl FUN_02055350 + mov r1, #0xcf + lsl r1, r1, #4 + ldr r2, [sp] + ldr r0, [r4, r1] + sub r0, r2, r0 + bne _0224EF10 + add r0, r1, #4 + ldr r2, [sp, #4] + ldr r0, [r4, r0] + cmp r2, r0 + bge _0224EF10 + add r0, r1, #0 + add r0, #8 + ldr r2, [sp, #8] + ldr r0, [r4, r0] + cmp r2, r0 + ble _0224EF10 + add r0, r1, #0 + mov r2, #0 + sub r0, #8 + str r2, [r4, r0] + mov r2, #2 + lsl r2, r2, #0x10 + sub r0, r1, #4 + str r2, [r4, r0] + b _0224EF1E +_0224EF10: + mov r1, #2 + ldr r0, _0224EF34 ; =0x00000CE8 + lsl r1, r1, #0x10 + str r1, [r4, r0] + lsr r1, r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_0224EF1E: + mov r0, #0xcf + lsl r0, r0, #4 + add r3, sp, #0 + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add sp, #0xc + pop {r3, r4, pc} + nop +_0224EF34: .word 0x00000CE8 + + thumb_func_start MOD06_0224EF38 +MOD06_0224EF38: ; 0x0224EF38 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224EEC8 + mov r2, #0 + add r1, r4, #0 +_0224EF44: + add r0, r1, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + bne _0224EF70 + add r1, r4, #0 + mov r0, #0xcc + mov r3, #0xce + add r1, #0x10 + mul r0, r2 + lsl r3, r3, #4 + add r0, r1, r0 + ldr r1, [r4, r3] + add r2, r3, #0 + add r2, #8 + add r3, #0xc + ldr r1, [r1, #0x38] + ldr r2, [r4, r2] + ldr r3, [r4, r3] + bl MOD06_0224EDB0 + pop {r4, pc} +_0224EF70: + add r2, r2, #1 + add r1, #0xcc + cmp r2, #0x10 + blt _0224EF44 + bl ErrorHandling + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EF80 +MOD06_0224EF80: ; 0x0224EF80 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0224EF88: + add r0, r5, #0 + bl MOD06_0224EE18 + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x10 + blt _0224EF88 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224EF98 +MOD06_0224EF98: ; 0x0224EF98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r2, #0 + mov r2, #0xd1 + str r1, [sp, #4] + add r0, r5, #0 + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, _0224F024 ; =0x00000CFC + mov r1, #4 + add r0, r5, r0 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r5, #0 + mov r1, #0x8d + mov r2, #8 + mov r3, #4 + bl FUN_021F5268 + mov r7, #0xcd + mov r4, #0 + add r6, r5, #0 + lsl r7, r7, #4 +_0224EFCC: + mov r0, #0 + str r0, [sp] + mov r0, #0x8d + add r1, r4, #4 + mov r2, #0 + mov r3, #4 + bl FUN_02006C98 + str r0, [r6, r7] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #4 + blt _0224EFCC + add r4, r5, #0 + mov r7, #0xcd + mov r6, #0 + add r4, #0x10 + lsl r7, r7, #4 +_0224EFF0: + ldr r2, _0224F024 ; =0x00000CFC + add r0, r4, #0 + add r1, r5, #0 + add r2, r5, r2 + add r3, r5, r7 + bl MOD06_0224EE54 + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x10 + blt _0224EFF0 + mov r1, #0xce + ldr r0, [sp, #4] + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, #0x10 + ldr r0, [r0, #0x38] + add r1, r5, r1 + bl FUN_02055350 + ldr r0, _0224F028 ; =0x00000D0C + mov r1, #0 + str r1, [r5, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224F024: .word 0x00000CFC +_0224F028: .word 0x00000D0C + + thumb_func_start MOD06_0224F02C +MOD06_0224F02C: ; 0x0224F02C + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r4, r5, #0 + ldr r7, _0224F064 ; =0x00000CFC + mov r6, #0 + add r4, #0x10 +_0224F038: + add r0, r4, #0 + add r1, r5, r7 + bl MOD06_0224EEA0 + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x10 + blt _0224F038 + add r0, r5, #0 + bl FUN_021F52C8 + mov r6, #0xcd + mov r4, #0 + lsl r6, r6, #4 +_0224F054: + ldr r0, [r5, r6] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224F054 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224F064: .word 0x00000CFC + + thumb_func_start MOD06_0224F068 +MOD06_0224F068: ; 0x0224F068 + push {r4, lr} + ldr r1, _0224F0A0 ; =0x00000D0C + add r4, r2, #0 + ldr r0, [r4, r1] + cmp r0, #0 + bne _0224F09E + add r0, r1, #0 + sub r0, #0x28 + ldr r0, [r4, r0] + sub r2, r0, #1 + add r0, r1, #0 + sub r0, #0x28 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x28 + ldr r0, [r4, r0] + cmp r0, #0 + bge _0224F098 + mov r0, #4 + sub r1, #0x28 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD06_0224EF38 +_0224F098: + add r0, r4, #0 + bl MOD06_0224EF80 +_0224F09E: + pop {r4, pc} + .align 2, 0 +_0224F0A0: .word 0x00000D0C + + thumb_func_start MOD06_0224F0A4 +MOD06_0224F0A4: ; 0x0224F0A4 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 + add r5, #0x10 +_0224F0AC: + add r0, r5, #0 + bl FUN_021F5430 + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x10 + blt _0224F0AC + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224F0BC +MOD06_0224F0BC: ; 0x0224F0BC + ldr r0, [r0, #4] + ldr r3, _0224F0C8 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224F0CC ; =0x022521EC + bx r3 + nop +_0224F0C8: .word 0x021D8025 +_0224F0CC: .word 0x022521EC + + thumb_func_start MOD06_0224F0D0 +MOD06_0224F0D0: ; 0x0224F0D0 + ldr r3, _0224F0D4 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224F0D4: .word 0x021D80A5 + + thumb_func_start MOD06_0224F0D8 +MOD06_0224F0D8: ; 0x0224F0D8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224F0EA + cmp r0, #1 + beq _0224F102 + pop {r3, r4, r5, pc} +_0224F0EA: + ldr r1, [r4, #0xc] + ldr r0, [r4] + lsl r2, r1, #2 + ldr r1, _0224F124 ; =0x0225221C + ldr r1, [r1, r2] + blx r1 + cmp r0, #1 + bne _0224F120 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224F102: + ldr r1, [r4, #0xc] + ldr r0, [r4] + lsl r2, r1, #2 + ldr r1, _0224F128 ; =0x02252204 + ldr r1, [r1, r2] + blx r1 + ldr r0, [r4, #4] + mov r1, #1 + strh r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224F120: + pop {r3, r4, r5, pc} + nop +_0224F124: .word 0x0225221C +_0224F128: .word 0x02252204 + + thumb_func_start MOD06_0224F12C +MOD06_0224F12C: ; 0x0224F12C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r0, r3, #0 + mov r1, #0x10 + add r4, r2, #0 + bl FUN_02016998 + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x10 + mov r0, #0 +_0224F144: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224F144 + ldr r1, _0224F16C ; =0x02252210 + lsl r2, r4, #2 + ldr r1, [r1, r2] + add r0, r7, #0 + blx r1 + str r0, [r6] + str r5, [r6, #4] + ldr r0, _0224F170 ; =MOD06_0224F0D8 + str r4, [r6, #0xc] + mov r2, #0 + add r1, r6, #0 + strh r2, [r5] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224F16C: .word 0x02252210 +_0224F170: .word MOD06_0224F0D8 .section .data - ; 0x022398BC - .incbin "baserom.nds", 0x16b81c, 0x18b64 + ; 0x0224F174 + .incbin "baserom.nds", 0x1810D4, 0x32AC .section .bss ; 0x02252420 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 77894ad5..021deaa1 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -217,6 +217,83 @@ FUN_021EF844 = 0x021EF844; FUN_021EF8C8 = 0x021EF8C8; FUN_021EF8DC = 0x021EF8DC; FUN_021EFA9C = 0x021EFA9C; +FUN_021D80E4 = 0x021D80E4; +FUN_021D9320 = 0x021D9320; +FUN_021D94B4 = 0x021D94B4; +FUN_021D9510 = 0x021D9510; +FUN_021DA03C = 0x021DA03C; +FUN_021DA080 = 0x021DA080; +FUN_021DA0DC = 0x021DA0DC; +FUN_021DA0E0 = 0x021DA0E0; +FUN_021DA0E8 = 0x021DA0E8; +FUN_021DA118 = 0x021DA118; +FUN_021DA138 = 0x021DA138; +FUN_021DA1A0 = 0x021DA1A0; +FUN_021DA1A4 = 0x021DA1A4; +FUN_021DA1A8 = 0x021DA1A8; +FUN_021DA20C = 0x021DA20C; +FUN_021DA4BC = 0x021DA4BC; +FUN_021DB44C = 0x021DB44C; +FUN_021DB4B0 = 0x021DB4B0; +FUN_021DB52C = 0x021DB52C; +FUN_021DB53C = 0x021DB53C; +FUN_021DBA40 = 0x021DBA40; +FUN_021DBA78 = 0x021DBA78; +FUN_021DBAA0 = 0x021DBAA0; +FUN_021E4BE8 = 0x021E4BE8; +FUN_021E4C00 = 0x021E4C00; +FUN_021E4C08 = 0x021E4C08; +FUN_021E4C20 = 0x021E4C20; +FUN_021E4C24 = 0x021E4C24; +FUN_021E4C6C = 0x021E4C6C; +FUN_021E4DC4 = 0x021E4DC4; +FUN_021E4E90 = 0x021E4E90; +FUN_021E4EE4 = 0x021E4EE4; +FUN_021E4EFC = 0x021E4EFC; +FUN_021E506C = 0x021E506C; +FUN_021E5078 = 0x021E5078; +FUN_021E5094 = 0x021E5094; +FUN_021E50A0 = 0x021E50A0; +FUN_021E50AC = 0x021E50AC; +FUN_021E50C8 = 0x021E50C8; +FUN_021E50D4 = 0x021E50D4; +FUN_021E5114 = 0x021E5114; +FUN_021E5198 = 0x021E5198; +FUN_021E51EC = 0x021E51EC; +FUN_021E5224 = 0x021E5224; +FUN_021E5260 = 0x021E5260; +FUN_021E5294 = 0x021E5294; +FUN_021E7C80 = 0x021E7C80; +FUN_021E7E9C = 0x021E7E9C; +FUN_021E7EC0 = 0x021E7EC0; +FUN_021E7ECC = 0x021E7ECC; +FUN_021E7EEC = 0x021E7EEC; +FUN_021E8698 = 0x021E8698; +FUN_021F0514 = 0x021F0514; +FUN_021F1C1C = 0x021F1C1C; +FUN_021F1C30 = 0x021F1C30; +FUN_021F1E64 = 0x021F1E64; +FUN_021F220C = 0x021F220C; +FUN_021F51D0 = 0x021F51D0; +FUN_021F522C = 0x021F522C; +FUN_021F5268 = 0x021F5268; +FUN_021F52C8 = 0x021F52C8; +FUN_021F531C = 0x021F531C; +FUN_021F5348 = 0x021F5348; +FUN_021F5358 = 0x021F5358; +FUN_021F5384 = 0x021F5384; +FUN_021F53BC = 0x021F53BC; +FUN_021F53F8 = 0x021F53F8; +FUN_021F5400 = 0x021F5400; +FUN_021F5424 = 0x021F5424; +FUN_021F5430 = 0x021F5430; +FUN_021F54CC = 0x021F54CC; +FUN_021F54D0 = 0x021F54D0; +FUN_021F54D8 = 0x021F54D8; +FUN_021F61F4 = 0x021F61F4; +FUN_021F6234 = 0x021F6234; +FUN_021F6240 = 0x021F6240; +FUN_021F6254 = 0x021F6254; FUN_021F02C4 = 0x021F02C4; FUN_021F1D8C = 0x021F1D8C; FUN_021F1DC8 = 0x021F1DC8; -- cgit v1.2.3 From 8fb894b2676635e4dc9ad989d39a09fbf8b4c186 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 17:30:12 -0400 Subject: Disassemble module 08 --- arm9/arm9.lcf | 16 +- arm9/global.inc | 73 + arm9/modules/08/asm/module_08.s | 49981 ++++++++++++++++++++++++++++++++++++++ arm9/undefined_syms.txt | 8 + 4 files changed, 50076 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/08/asm/module_08.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index b332a790..2fa78f43 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -18,7 +18,7 @@ MEMORY { MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_08 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 @@ -444,7 +444,19 @@ SECTIONS { module_07.o (.bss) } >> MODULE_07 - OVERLAY_FILE(08, 0x183800, FILE_187800.o) + .MODULE.08 : AT (0x183800) + { + module_08.o (.text) + module_08.o (.sdata) + module_08.o (.data) + } > MODULE_08 + + .MODULE.08.bss : + { + module_08.o (.sbss) + module_08.o (.bss) + } >> MODULE_08 + OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) diff --git a/arm9/global.inc b/arm9/global.inc index db7694f5..9dee371a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4591,3 +4591,76 @@ .extern FUN_021F6234 .extern FUN_021F6240 .extern FUN_021F6254 +.extern FUN_020031B8 +.extern FUN_02003204 +.extern FUN_020039E8 +.extern FUN_02003A64 +.extern FUN_02003B40 +.extern FUN_020054A8 +.extern FUN_02005530 +.extern FUN_0200554C +.extern FUN_02005614 +.extern FUN_02007E40 +.extern FUN_020080E0 +.extern FUN_0200813C +.extern FUN_020081C0 +.extern FUN_02008268 +.extern FUN_0200C59C +.extern FUN_0200C5B4 +.extern FUN_0200C5E0 +.extern FUN_0200C5F4 +.extern FUN_0200C608 +.extern FUN_0200C630 +.extern FUN_0200C658 +.extern FUN_0200C680 +.extern FUN_0200C68C +.extern FUN_0200C6A4 +.extern FUN_0200C6B0 +.extern FUN_0200C6C4 +.extern FUN_0200C7FC +.extern FUN_0200C898 +.extern FUN_0200C8BC +.extern FUN_0200C8D0 +.extern FUN_0200C8DC +.extern FUN_0200C8F8 +.extern FUN_0200C90C +.extern FUN_020129C8 +.extern FUN_020129D8 +.extern FUN_02013348 +.extern FUN_020133DC +.extern FUN_020133EC +.extern FUN_020133FC +.extern FUN_0201341C +.extern FUN_02013428 +.extern FUN_02013448 +.extern FUN_02013514 +.extern FUN_02013530 +.extern FUN_02013548 +.extern FUN_0201357C +.extern FUN_02013594 +.extern FUN_020135B0 +.extern FUN_020135C4 +.extern FUN_020135E0 +.extern FUN_020135F4 +.extern FUN_02013610 +.extern FUN_02013628 +.extern FUN_0201365C +.extern FUN_02013674 +.extern FUN_020170F4 +.extern FUN_020187B0 +.extern FUN_0201B6CC +.extern FUN_02029CE4 +.extern FUN_02029CE8 +.extern FUN_02068E88 +.extern FUN_02069FB0 +.extern FUN_02085FF4 +.extern FUN_02086018 +.extern FUN_02230078 +.extern FUN_02230080 +.extern FUN_022300CC +.extern FUN_022312D0 +.extern FUN_02231504 +.extern FUN_02231534 +.extern FUN_02231678 +.extern FUN_02233560 +.extern FX_Modf diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s new file mode 100644 index 00000000..50ed884f --- /dev/null +++ b/arm9/modules/08/asm/module_08.s @@ -0,0 +1,49981 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD08_02211E60 +MOD08_02211E60: ; 0x02211E60 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02211E70 + lsl r1, r0, #2 + ldr r0, _02211E74 ; =0x0222A9E4 + ldr r0, [r0, r1] + bx lr +_02211E70: + ldr r0, _02211E78 ; =0x0222A780 + bx lr + .align 2, 0 +_02211E74: .word 0x0222A9E4 +_02211E78: .word 0x0222A780 + + thumb_func_start MOD08_02211E7C +MOD08_02211E7C: ; 0x02211E7C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r3, #0 + bl MOD08_02211E60 + ldr r3, [sp, #0x10] + add r1, r0, #0 + mov r0, #0x20 + lsl r3, r3, #0x14 + str r0, [sp] + add r0, r5, #0 + add r2, r4, #0 + lsr r3, r3, #0x10 + bl FUN_02003054 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02211EA0 +MOD08_02211EA0: ; 0x02211EA0 + add r1, r0, #0 + add r1, #0x8d + ldrb r1, [r1] + cmp r1, #0 + bne _02211EB2 + ldr r1, _02211EC0 ; =MOD08_02211EC4 + add r0, #0xbc + str r1, [r0] + bx lr +_02211EB2: + add r1, r0, #0 + add r1, #0x8d + ldrb r1, [r1] + add r0, #0x8d + sub r1, r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02211EC0: .word MOD08_02211EC4 + + thumb_func_start MOD08_02211EC4 +MOD08_02211EC4: ; 0x02211EC4 + push {r4, lr} + add r4, r0, #0 +_02211EC8: + ldr r0, [r4, #0x18] + ldr r0, [r0] + bl MOD08_0221533C + add r1, r0, #0 + add r0, r4, #0 + blx r1 + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + cmp r0, #0 + bne _02211EE6 + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _02211EC8 +_02211EE6: + pop {r4, pc} + + thumb_func_start MOD08_02211EE8 +MOD08_02211EE8: ; 0x02211EE8 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + cmp r0, #1 + beq _02211EF8 + cmp r0, #2 + beq _02211F06 + b _02211F14 +_02211EF8: + add r0, r1, #0 + add r0, #0x8e + ldrh r0, [r0] + add r1, #0x8e + add r0, r0, #1 + strh r0, [r1] + b _02211F18 +_02211F06: + add r0, r1, #0 + add r0, #0x90 + ldrh r0, [r0] + add r1, #0x90 + add r0, r0, #1 + strh r0, [r1] + b _02211F18 +_02211F14: + bl ErrorHandling +_02211F18: + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02211F24 +MOD08_02211F24: ; 0x02211F24 + push {r4, lr} + add r4, r2, #0 + cmp r0, #1 + beq _02211F32 + cmp r0, #2 + beq _02211F40 + b _02211F4E +_02211F32: + add r0, r1, #0 + add r0, #0x8e + ldrh r0, [r0] + add r1, #0x8e + sub r0, r0, #1 + strh r0, [r1] + b _02211F52 +_02211F40: + add r0, r1, #0 + add r0, #0x90 + ldrh r0, [r0] + add r1, #0x90 + sub r0, r0, #1 + strh r0, [r1] + b _02211F52 +_02211F4E: + bl ErrorHandling +_02211F52: + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02211F5C +MOD08_02211F5C: ; 0x02211F5C + push {r3, r4, r5, lr} + mov r1, #0x69 + lsl r1, r1, #2 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _02211F78 + cmp r4, #0 + bne _02211F74 + bl ErrorHandling +_02211F74: + mov r0, #0 + pop {r3, r4, r5, pc} +_02211F78: + mov r2, #0x69 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + mov r1, #0x47 + str r5, [r4] + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + lsl r1, r1, #2 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + cmp r0, #0 + bne _02211FAC + bne _02211FA8 + bl ErrorHandling +_02211FA8: + mov r0, #0 + pop {r3, r4, r5, pc} +_02211FAC: + mov r2, #0x47 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + mov r1, #0 + str r1, [r4, #0xc] + str r1, [r4, #0x18] + add r2, r4, #0 + add r3, r1, #0 +_02211FC0: + add r0, r2, #0 + add r0, #0xcc + add r1, r1, #1 + add r2, r2, #4 + str r3, [r0] + cmp r1, #4 + blt _02211FC0 + mov r0, #0x59 + add r2, r4, #0 + mov r1, #0 + lsl r0, r0, #2 +_02211FD6: + add r3, r3, #1 + str r1, [r2, r0] + add r2, r2, #4 + cmp r3, #5 + blt _02211FD6 + mov r0, #0x5e + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [r4, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02211FF0 +MOD08_02211FF0: ; 0x02211FF0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _02211FFE + bl ErrorHandling +_02211FFE: + str r4, [r5, #8] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02212004 +MOD08_02212004: ; 0x02212004 + push {r4, lr} + add r4, r0, #0 + bne _0221200E + bl ErrorHandling +_0221200E: + ldr r0, [r4, #8] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02212014 +MOD08_02212014: ; 0x02212014 + push {r4, lr} + add r4, r0, #0 + bne _0221201E + bl ErrorHandling +_0221201E: + ldr r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02212024 +MOD08_02212024: ; 0x02212024 + push {r4, lr} + add r4, r0, #0 + bl MOD08_022123CC + cmp r0, #0 + bne _02212034 + mov r0, #0 + pop {r4, pc} +_02212034: + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02212048 +MOD08_02212048: ; 0x02212048 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r0, #0 + add r5, r1, #0 + str r2, [sp] + str r3, [sp, #4] + bl MOD08_0221268C + add r0, r4, #0 + bl MOD08_022123CC + cmp r0, #0 + bne _02212068 + add sp, #0x3c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02212068: + mov r3, #0 + mov r2, #1 + add r1, r3, #0 +_0221206E: + add r0, r4, r3 + add r0, #0x6c + strb r2, [r0] + add r0, r4, r3 + add r0, #0x7c + add r3, r3, #1 + strb r1, [r0] + cmp r3, #0x10 + blt _0221206E + add r3, r4, #0 + mov r0, #0 +_02212084: + add r2, r3, #0 + add r2, #0x94 + add r1, r1, #1 + add r3, r3, #4 + str r0, [r2] + cmp r1, #0xa + blt _02212084 + add r3, r4, #0 + mov r2, #0 +_02212096: + str r2, [r3, #0x30] + add r1, r3, #0 + str r2, [r3, #0x28] + add r1, #0x2c + strb r2, [r1] + add r1, r3, #0 + add r1, #0x2d + add r0, r0, #1 + add r3, #0xc + strb r2, [r1] + cmp r0, #3 + blt _02212096 + add r0, r4, #0 + add r0, #0xc0 + ldrb r1, [r5] + ldr r0, [r0] + strb r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldrb r1, [r5, #1] + ldr r0, [r0] + strb r1, [r0, #1] + add r0, r4, #0 + add r0, #0xc0 + ldrh r1, [r5, #2] + ldr r0, [r0] + strh r1, [r0, #2] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r5, #4] + ldr r0, [r0] + str r1, [r0, #4] + add r0, r4, #0 + add r0, #0xc0 + ldrh r1, [r5, #8] + ldr r0, [r0] + strh r1, [r0, #8] + add r0, r4, #0 + add r0, #0xc0 + ldrh r1, [r5, #0xc] + ldr r0, [r0] + strh r1, [r0, #0xa] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r5, #0x10] + ldr r0, [r0] + str r1, [r0, #0xc] + add r0, r4, #0 + add r0, #0xc0 + ldrh r1, [r5, #0xa] + ldr r0, [r0] + strh r1, [r0, #0x10] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r5, #0x54] + ldr r0, [r0] + strh r1, [r0, #0x12] + add r0, r4, #0 + add r0, #0xc0 + ldrh r1, [r5, #0x14] + ldr r0, [r0] + strh r1, [r0, #0x14] + add r0, r4, #0 + add r0, #0xc0 + ldrh r1, [r5, #0x16] + ldr r0, [r0] + strh r1, [r0, #0x16] + ldrh r0, [r5, #0xe] + lsl r0, r0, #0x1e + lsr r2, r0, #0x1f + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + str r2, [r1, r0] + ldr r0, [sp, #4] + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + str r1, [r0] + ldr r0, [sp, #4] + ldr r0, [r0] + cmp r0, #0 + bne _02212148 + bl ErrorHandling +_02212148: + ldr r0, [sp, #4] + mov r5, #0 + ldr r1, [r0, #4] + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [sp, #4] + ldr r2, [sp, #4] + ldr r1, [r0, #8] + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0x30] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r7, r5, #0 + add r0, #0xd4 + str r1, [r0] + add r0, r2, #0 + mov ip, r0 +_02212176: + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + ldr r0, [r2, #0xc] + add r1, r1, r3 + add r1, #0xb0 + str r0, [r1] + ldr r0, [sp, #4] + add r1, r0, r5 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldrb r6, [r1, #0x1c] + add r0, r0, r5 + add r0, #0xc0 + strb r6, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r6, [r2, #0x20] + add r0, r0, r3 + add r0, #0xc4 + str r6, [r0] + mov r0, ip + ldrh r6, [r0, #0x34] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r7 + add r0, #0xd8 + strh r6, [r0] + add r0, r1, #0 + add r0, #0x3c + ldrb r6, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r7, r7, #2 + add r0, r0, r5 + add r0, #0xe0 + strb r6, [r0] + add r0, r1, #0 + add r0, #0x40 + ldrb r6, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r1, #0x44 + add r0, r0, r5 + add r0, #0xe4 + strb r6, [r0] + ldrb r0, [r1] + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r5 + add r1, #0xe8 + strb r0, [r1] + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + ldr r0, [r2, #0x48] + add r1, r1, r3 + add r1, #0xec + str r0, [r1] + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + ldr r0, [r2, #0x58] + add r1, r1, r3 + add r1, #0xfc + str r0, [r1] + mov r0, ip + add r0, r0, #2 + add r5, r5, #1 + add r2, r2, #4 + add r3, r3, #4 + mov ip, r0 + cmp r5, #4 + blt _02212176 + ldr r5, [sp, #4] + mov r2, #0x61 + lsl r2, r2, #2 + add r5, #0x6c + add r3, r4, r2 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #4] + add r0, #0x84 + ldr r3, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + add r0, r2, #0 + sub r0, #0x78 + str r3, [r1, r0] + ldr r0, [sp, #4] + add r0, #0x8c + ldr r3, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + add r0, r2, #0 + sub r0, #0x70 + str r3, [r1, r0] + ldr r0, [sp, #4] + add r0, #0x88 + ldr r3, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + add r0, r2, #0 + sub r0, #0x74 + str r3, [r1, r0] + ldr r0, [sp] + sub r2, #0x62 + cmp r0, r2 + bne _02212296 + ldr r5, _0221236C ; =0x0222AB18 + add r3, sp, #8 + mov r2, #6 +_02212270: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02212270 + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #0x12] + cmp r0, #0xc + blo _0221228E + mov r0, #0xa1 + str r0, [sp] + b _02212296 +_0221228E: + lsl r1, r0, #2 + add r0, sp, #8 + ldr r0, [r0, r1] + str r0, [sp] +_02212296: + ldr r0, [sp] + cmp r0, #0 + beq _022122A2 + ldr r1, _02212370 ; =0x000001D3 + cmp r0, r1 + ble _022122A6 +_022122A2: + mov r0, #1 + str r0, [sp] +_022122A6: + ldr r0, [sp, #4] + ldr r0, [r0, #0x68] + str r0, [r4, #4] + ldr r1, [sp] + ldr r2, [r4] + bl LoadFromNarc_2 + str r0, [r4, #0x14] + cmp r0, #0 + bne _022122C6 + bne _022122C0 + bl ErrorHandling +_022122C0: + add sp, #0x3c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_022122C6: + str r0, [r4, #0x18] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02018884 + mov r1, #0x1a + lsl r1, r1, #4 + strb r0, [r4, r1] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #1 + bl FUN_02018884 + ldr r1, _02212374 ; =0x000001A1 + strb r0, [r4, r1] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #2 + bl FUN_02018884 + ldr r1, _02212378 ; =0x000001A2 + strb r0, [r4, r1] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #3 + bl FUN_02018884 + ldr r1, _0221237C ; =0x000001A3 + mov r3, #0 + strb r0, [r4, r1] + add r2, r4, #0 + add r1, r3, #0 +_02212310: + add r0, r2, #0 + add r0, #0xdc + add r3, r3, #1 + add r2, r2, #4 + str r1, [r0] + cmp r3, #0xa + blt _02212310 + mov r2, #0x4f + lsl r2, r2, #2 + add r3, r2, #0 + add r5, r4, #0 + mov r0, #0 + add r3, #0x14 +_0221232A: + str r0, [r5, r2] + str r0, [r5, r3] + add r1, r1, #1 + add r5, r5, #4 + cmp r1, #5 + blt _0221232A + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + add r1, r4, #0 + ldr r2, _02212380 ; =MOD08_02211EC4 + add r1, #0xbc + str r2, [r1] + add r1, r4, #0 + add r1, #0x8d + strb r0, [r1] + add r0, r4, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _0221235C + mov r0, #0x67 + mov r1, #7 + lsl r0, r0, #2 + b _02212362 +_0221235C: + mov r1, #0xff + add r0, r1, #0 + add r0, #0x9d +_02212362: + str r1, [r4, r0] + mov r0, #1 + str r0, [r4, #0x10] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221236C: .word 0x0222AB18 +_02212370: .word 0x000001D3 +_02212374: .word 0x000001A1 +_02212378: .word 0x000001A2 +_0221237C: .word 0x000001A3 +_02212380: .word MOD08_02211EC4 + + thumb_func_start MOD08_02212384 +MOD08_02212384: ; 0x02212384 + push {r4, lr} + add r4, r0, #0 + bl MOD08_022123CC + cmp r0, #0 + bne _02212394 + mov r0, #0 + pop {r4, pc} +_02212394: + add r0, r4, #0 + add r4, #0xbc + ldr r1, [r4] + blx r1 + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_022123A0 +MOD08_022123A0: ; 0x022123A0 + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _022123AA + mov r0, #1 + bx lr +_022123AA: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022123B0 +MOD08_022123B0: ; 0x022123B0 + push {r3, lr} + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _022123C2 + bne _022123BE + bl ErrorHandling +_022123BE: + mov r0, #0 + pop {r3, pc} +_022123C2: + bl FUN_02016A18 + mov r0, #1 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_022123CC +MOD08_022123CC: ; 0x022123CC + cmp r0, #0 + bne _022123D4 + mov r0, #0 + bx lr +_022123D4: + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _022123DE + mov r0, #1 + bx lr +_022123DE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022123E4 +MOD08_022123E4: ; 0x022123E4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + str r3, [sp] + mov r0, #1 + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl MOD08_02211EE8 + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD08_02212400 +MOD08_02212400: ; 0x02212400 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02212418 ; =0x0000044C + add r4, r1, #0 + add r3, r2, #0 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + add r2, r4, #0 + bl MOD08_02211EE8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212418: .word 0x0000044C + + thumb_func_start MOD08_0221241C +MOD08_0221241C: ; 0x0221241C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + str r3, [sp] + mov r0, #2 + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl MOD08_02211EE8 + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD08_02212438 +MOD08_02212438: ; 0x02212438 + add r3, r0, #0 + add r2, r1, #0 + add r1, r3, #0 + ldr r3, _02212444 ; =MOD08_02211F24 + mov r0, #1 + bx r3 + .align 2, 0 +_02212444: .word MOD08_02211F24 + + thumb_func_start MOD08_02212448 +MOD08_02212448: ; 0x02212448 + add r3, r0, #0 + add r2, r1, #0 + add r1, r3, #0 + ldr r3, _02212454 ; =MOD08_02211F24 + mov r0, #2 + bx r3 + .align 2, 0 +_02212454: .word MOD08_02211F24 + + thumb_func_start MOD08_02212458 +MOD08_02212458: ; 0x02212458 + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #0x14] + bx lr + + thumb_func_start MOD08_02212460 +MOD08_02212460: ; 0x02212460 + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #0x16] + bx lr + + thumb_func_start MOD08_02212468 +MOD08_02212468: ; 0x02212468 + add r0, #0xc0 + ldr r1, [r0] + ldr r0, [r1, #0x18] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x1c] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02212478 +MOD08_02212478: ; 0x02212478 + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start MOD08_02212484 +MOD08_02212484: ; 0x02212484 + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + ldr r0, [r0, #0x5c] + bx lr + + thumb_func_start MOD08_02212490 +MOD08_02212490: ; 0x02212490 + add r0, #0xc4 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02212498 +MOD08_02212498: ; 0x02212498 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0xa + blt _022124A6 + bl ErrorHandling +_022124A6: + lsl r0, r5, #2 + add r0, r4, r0 + add r0, #0x94 + ldr r0, [r0] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022124B0 +MOD08_022124B0: ; 0x022124B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xa + blt _022124BE + bl ErrorHandling +_022124BE: + cmp r5, #0 + bne _022124C6 + bl ErrorHandling +_022124C6: + add r5, #0xdc + lsl r4, r4, #2 + ldr r0, [r5, r4] + cmp r0, #0 + bne _022124D4 + bl ErrorHandling +_022124D4: + ldr r0, [r5, r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022124D8 +MOD08_022124D8: ; 0x022124D8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #5 + blt _022124E6 + bl ErrorHandling +_022124E6: + cmp r5, #0 + bne _022124EE + bl ErrorHandling +_022124EE: + mov r0, #0x4f + lsl r0, r0, #2 + add r5, r5, r0 + lsl r4, r4, #2 + ldr r0, [r5, r4] + cmp r0, #0 + bne _02212500 + bl ErrorHandling +_02212500: + ldr r0, [r5, r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02212504 +MOD08_02212504: ; 0x02212504 + push {r4, lr} + add r4, r0, #0 + bne _0221250E + bl ErrorHandling +_0221250E: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02212518 +MOD08_02212518: ; 0x02212518 + add r0, #0xcc + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02212520 +MOD08_02212520: ; 0x02212520 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_0221252C +MOD08_0221252C: ; 0x0221252C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0 + bne _02212544 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} +_02212544: + mov r1, #0 + mov r2, #0x3c + bl Call_FillMemWithValue + add r0, r5, #0 + add r0, #0x90 + ldrh r0, [r0] + add r5, #0x90 + add r0, r0, #1 + strh r0, [r5] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0221255C +MOD08_0221255C: ; 0x0221255C + ldr r3, _02212568 ; =0x0200CA45 + str r0, [r1, #0x38] + ldr r0, _0221256C ; =MOD08_02212574 + ldr r2, _02212570 ; =0x0000044C + bx r3 + nop +_02212568: .word 0x0200CA45 +_0221256C: .word MOD08_02212574 +_02212570: .word 0x0000044C + + thumb_func_start MOD08_02212574 +MOD08_02212574: ; 0x02212574 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022125B0 ; =0x0222AAC4 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + bne _022125AE + ldr r0, [r4, #0x38] + add r1, r0, #0 + add r1, #0x90 + ldrh r1, [r1] + cmp r1, #0 + beq _022125A2 + add r1, r0, #0 + add r1, #0x90 + ldrh r1, [r1] + add r0, #0x90 + sub r1, r1, #1 + strh r1, [r0] +_022125A2: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022125AE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022125B0: .word 0x0222AAC4 + + thumb_func_start MOD08_022125B4 +MOD08_022125B4: ; 0x022125B4 + mov r0, #0 + bx lr + + thumb_func_start MOD08_022125B8 +MOD08_022125B8: ; 0x022125B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r1, [r5, #4] + add r0, r1, #1 + strb r0, [r5, #4] + ldrb r0, [r5, #3] + cmp r1, r0 + bhs _022125CC + mov r0, #1 + pop {r3, r4, r5, pc} +_022125CC: + mov r0, #0 + strb r0, [r5, #4] + ldr r2, [r5, #0x14] + ldr r1, [r5, #0x10] + mov r4, #1 + add r1, r2, r1 + str r1, [r5, #0x14] + ldr r1, [r5, #0x10] + cmp r1, #0 + bne _022125E4 + add r4, r0, #0 + b _022125FC +_022125E4: + ldr r2, [r5, #0xc] + ldr r1, [r5, #8] + cmp r1, r2 + ldr r1, [r5, #0x14] + bge _022125F6 + cmp r1, r2 + blt _022125FC + add r4, r0, #0 + b _022125FC +_022125F6: + cmp r1, r2 + bgt _022125FC + add r4, r0, #0 +_022125FC: + ldr r0, [r5, #0x14] + bl FUN_0200554C + ldrh r0, [r5, #0x1a] + bl FUN_02005508 + cmp r0, #0 + bne _0221260E + mov r4, #0 +_0221260E: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02212614 +MOD08_02212614: ; 0x02212614 + ldr r3, _02212618 ; =MOD08_022125B8 + bx r3 + .align 2, 0 +_02212618: .word MOD08_022125B8 + + thumb_func_start MOD08_0221261C +MOD08_0221261C: ; 0x0221261C + ldr r3, _02212620 ; =MOD08_022125B8 + bx r3 + .align 2, 0 +_02212620: .word MOD08_022125B8 + + thumb_func_start MOD08_02212624 +MOD08_02212624: ; 0x02212624 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r1, [r5, #4] + add r0, r1, #1 + strb r0, [r5, #4] + ldrb r0, [r5, #3] + cmp r1, r0 + bhs _02212638 + mov r0, #1 + pop {r3, r4, r5, pc} +_02212638: + mov r0, #0 + strb r0, [r5, #4] + ldrb r0, [r5, #0x18] + mov r4, #1 + sub r0, r0, #1 + strb r0, [r5, #0x18] + ldrh r0, [r5, #0x1a] + bl FUN_020054C8 + ldrh r0, [r5, #0x1a] + ldr r1, _02212660 ; =0x0000FFFF + ldr r2, [r5, #0x14] + bl FUN_02005530 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _0221265C + mov r4, #0 +_0221265C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212660: .word 0x0000FFFF + + thumb_func_start MOD08_02212664 +MOD08_02212664: ; 0x02212664 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4, #3] + mov r0, #1 + sub r1, r2, #1 + strb r1, [r4, #3] + cmp r2, #0 + bne _02212686 + ldrh r0, [r4, #0x1a] + bl FUN_020054C8 + ldrh r0, [r4, #0x1a] + ldr r1, _02212688 ; =0x0000FFFF + ldr r2, [r4, #0x14] + bl FUN_02005530 + mov r0, #0 +_02212686: + pop {r4, pc} + .align 2, 0 +_02212688: .word 0x0000FFFF + + thumb_func_start MOD08_0221268C +MOD08_0221268C: ; 0x0221268C + push {r3, lr} + ldr r0, _022126A0 ; =0x04000050 + mov r3, #8 + mov r1, #0 + mov r2, #0x3f + str r3, [sp] + bl G2x_SetBlendAlpha_ + pop {r3, pc} + nop +_022126A0: .word 0x04000050 + + thumb_func_start MOD08_022126A4 +MOD08_022126A4: ; 0x022126A4 + push {r3, r4} + add r2, r0, #0 + mov r1, #1 + add r2, #0x8d + strb r1, [r2] + ldr r3, _022126D8 ; =0x021C48B8 + lsl r2, r1, #9 + ldr r4, [r3, #0x44] + tst r2, r4 + beq _022126D4 + add r2, r1, #0 + add r2, #0xff + tst r2, r4 + beq _022126D4 + ldr r2, [r3, #0x48] + lsl r1, r1, #0xa + tst r1, r2 + beq _022126D4 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + mov r1, #0 + add r0, #0x8d + strb r1, [r0] +_022126D4: + pop {r3, r4} + bx lr + .align 2, 0 +_022126D8: .word 0x021C48B8 + + thumb_func_start MOD08_022126DC +MOD08_022126DC: ; 0x022126DC + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r0, #0 + add r1, #0x8d + strb r2, [r1] + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r1, _022126F8 ; =MOD08_02211EA0 + add r0, #0xbc + str r1, [r0] + bx lr + .align 2, 0 +_022126F8: .word MOD08_02211EA0 + + thumb_func_start MOD08_022126FC +MOD08_022126FC: ; 0x022126FC + add r1, r0, #0 + add r1, #0x8e + ldrh r1, [r1] + cmp r1, #0 + bne _02212714 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + mov r1, #0 + add r0, #0x8d + strb r1, [r0] + bx lr +_02212714: + mov r1, #1 + add r0, #0x8d + strb r1, [r0] + bx lr + + thumb_func_start MOD08_0221271C +MOD08_0221271C: ; 0x0221271C + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + cmp r3, #0xa + bhs _0221273A + lsl r1, r3, #2 + add r0, r0, r1 + add r0, #0x94 + str r2, [r0] +_0221273A: + bx lr + + thumb_func_start MOD08_0221273C +MOD08_0221273C: ; 0x0221273C + ldr r1, [r0, #0x18] + mov r3, #0 + add r1, r1, #4 + str r1, [r0, #0x18] + add r2, r3, #0 +_02212746: + add r1, r0, #0 + add r1, #0x94 + add r3, r3, #1 + add r0, r0, #4 + str r2, [r1] + cmp r3, #0xa + blt _02212746 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02212758 +MOD08_02212758: ; 0x02212758 + cmp r1, #5 + bhi _022127A4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02212768: ; jump table + .short _02212774 - _02212768 - 2 ; case 0 + .short _0221277C - _02212768 - 2 ; case 1 + .short _02212784 - _02212768 - 2 ; case 2 + .short _0221278C - _02212768 - 2 ; case 3 + .short _02212794 - _02212768 - 2 ; case 4 + .short _0221279C - _02212768 - 2 ; case 5 +_02212774: + add r0, #0xc0 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr +_0221277C: + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #8] + bx lr +_02212784: + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #0xa] + bx lr +_0221278C: + add r0, #0xc0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr +_02212794: + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #0x10] + bx lr +_0221279C: + add r0, #0xc0 + ldr r0, [r0] + ldrh r0, [r0, #0x12] + bx lr +_022127A4: + mov r0, #0 + bx lr + + thumb_func_start MOD08_022127A8 +MOD08_022127A8: ; 0x022127A8 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r3, r0, #0 + add r0, r1, #0 + str r2, [sp] + add r6, r4, #0 + add r5, r0, #0 + mov ip, r4 + add r7, r0, #0 +_022127BA: + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r6 + add r1, #0xb0 + ldr r1, [r1] + str r1, [r5, #8] + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r6 + add r1, #0xc4 + ldr r1, [r1] + str r1, [r5, #0x18] + add r1, r3, #0 + add r1, #0xc0 + ldr r2, [r1] + mov r1, ip + add r1, r2, r1 + add r1, #0xd8 + ldrh r1, [r1] + add r2, r0, r4 + add r2, #0x30 + strh r1, [r7, #0x28] + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r7, r7, #2 + add r1, r1, r4 + add r1, #0xe0 + ldrb r1, [r1] + strb r1, [r2] + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r0, r4 + add r1, r1, r4 + add r1, #0xe4 + ldrb r1, [r1] + add r2, #0x34 + strb r1, [r2] + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r0, r4 + add r1, r1, r4 + add r1, #0xe8 + ldrb r1, [r1] + add r2, #0x38 + strb r1, [r2] + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r0, r4 + add r1, r1, r6 + add r1, #0xec + ldr r1, [r1] + add r2, #0x4c + str r1, [r5, #0x3c] + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r6, r6, #4 + add r1, r1, r4 + add r1, #0xc0 + ldrb r1, [r1] + add r4, r4, #1 + add r5, r5, #4 + strb r1, [r2] + mov r1, ip + add r1, r1, #2 + mov ip, r1 + cmp r4, #4 + blt _022127BA + ldr r1, [sp] + cmp r1, #3 + bhi _022128B8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02212860: ; jump table + .short _02212868 - _02212860 - 2 ; case 0 + .short _0221287C - _02212860 - 2 ; case 1 + .short _02212890 - _02212860 - 2 ; case 2 + .short _022128A4 - _02212860 - 2 ; case 3 +_02212868: + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r3, #0xc0 + ldrh r1, [r1, #0x14] + str r1, [r0] + ldr r1, [r3] + ldrh r1, [r1, #0x16] + str r1, [r0, #4] + pop {r3, r4, r5, r6, r7, pc} +_0221287C: + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r3, #0xc0 + ldrh r1, [r1, #0x14] + str r1, [r0] + ldr r1, [r3] + ldrh r1, [r1, #0x14] + str r1, [r0, #4] + pop {r3, r4, r5, r6, r7, pc} +_02212890: + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r3, #0xc0 + ldrh r1, [r1, #0x14] + str r1, [r0] + ldr r1, [r3] + ldrh r1, [r1, #0x14] + str r1, [r0, #4] + pop {r3, r4, r5, r6, r7, pc} +_022128A4: + add r1, r3, #0 + add r1, #0xc0 + ldr r1, [r1] + add r3, #0xc0 + ldrh r1, [r1, #0x14] + str r1, [r0] + ldr r1, [r3] + ldrh r1, [r1, #0x14] + str r1, [r0, #4] + pop {r3, r4, r5, r6, r7, pc} +_022128B8: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_022128C0 +MOD08_022128C0: ; 0x022128C0 + push {r3, r4, r5, lr} + sub sp, #0x50 + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r4, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + add r1, sp, #0 + add r2, r4, #0 + bl MOD08_022127A8 + cmp r4, #2 + add r0, sp, #0 + bne _022128EA + ldr r1, [r5] + bl MOD08_0222A568 + add sp, #0x50 + pop {r3, r4, r5, pc} +_022128EA: + cmp r4, #3 + bne _022128F8 + ldr r1, [r5] + bl MOD08_0222A2A4 + add sp, #0x50 + pop {r3, r4, r5, pc} +_022128F8: + ldr r1, [r5] + bl MOD08_0222A294 + add sp, #0x50 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02212904 +MOD08_02212904: ; 0x02212904 + push {r4, lr} + sub sp, #0x50 + add r4, r0, #0 + ldr r1, [r4, #0x18] + add r1, r1, #4 + str r1, [r4, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r4, #0x18] + add r1, sp, #0 + bl MOD08_022127A8 + ldr r1, [r4] + add r0, sp, #0 + bl MOD08_0222A494 + add sp, #0x50 + pop {r4, pc} + + thumb_func_start MOD08_02212928 +MOD08_02212928: ; 0x02212928 + ldr r1, [r0, #0x18] + mov r2, #0 + add r1, r1, #4 + str r1, [r0, #0x18] + add r3, r0, #0 +_02212932: + ldr r1, [r3, #0x30] + cmp r1, #1 + beq _0221295E + mov r1, #0xc + mul r1, r2 + mov r2, #1 + add r1, r0, r1 + str r2, [r1, #0x30] + add r2, r1, #0 + mov r3, #0 + add r2, #0x2c + strb r3, [r2] + ldr r2, [r0, #0x18] + ldr r3, [r2] + add r2, r1, #0 + add r2, #0x2d + strb r3, [r2] + ldr r2, [r0, #0x18] + add r2, r2, #4 + str r2, [r0, #0x18] + str r2, [r1, #0x28] + bx lr +_0221295E: + add r2, r2, #1 + add r3, #0xc + cmp r2, #3 + blt _02212932 + bx lr + + thumb_func_start MOD08_02212968 +MOD08_02212968: ; 0x02212968 + push {r3, r4} + ldr r1, [r0, #0x18] + add r3, r0, #0 + add r1, r1, #4 + add r3, #0x18 + str r1, [r0, #0x18] + mov r2, #2 +_02212976: + ldr r1, [r3, #0x30] + cmp r1, #0 + beq _022129AA + add r4, r2, #0 + mov r1, #0xc + add r2, r0, #0 + mul r4, r1 + add r2, #0x2c + ldrb r1, [r2, r4] + add r1, r1, #1 + strb r1, [r2, r4] + ldrb r3, [r2, r4] + add r2, r0, r4 + add r1, r2, #0 + add r1, #0x2d + ldrb r1, [r1] + cmp r3, r1 + bne _022129A2 + mov r0, #0 + str r0, [r2, #0x30] + pop {r3, r4} + bx lr +_022129A2: + ldr r1, [r2, #0x28] + str r1, [r0, #0x18] + pop {r3, r4} + bx lr +_022129AA: + sub r3, #0xc + sub r2, r2, #1 + bpl _02212976 + pop {r3, r4} + bx lr + + thumb_func_start MOD08_022129B4 +MOD08_022129B4: ; 0x022129B4 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _02212BB0 ; =0x0000017E + add r5, r0, #0 + ldrb r0, [r5, r1] + mov r6, #0 + cmp r0, #1 + bhs _022129D2 + add r0, r5, #0 + mov r2, #1 + add r0, #0x8d + strb r2, [r0] + ldrb r0, [r5, r1] + add r0, r0, #1 + strb r0, [r5, r1] + pop {r3, r4, r5, r6, r7, pc} +_022129D2: + add r7, r6, #0 + add r4, r6, #0 +_022129D6: + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _022129EA + bl FUN_020133C8 + add r6, r6, r0 +_022129EA: + add r7, r7, #1 + add r4, r4, #4 + cmp r7, #0x10 + blt _022129D6 + cmp r6, #0 + bne _02212A0A + add r0, r5, #0 + add r0, #0x8e + ldrh r0, [r0] + cmp r0, #0 + bne _02212A0A + add r0, r5, #0 + add r0, #0x90 + ldrh r0, [r0] + cmp r0, #0 + beq _02212A1A +_02212A0A: + add r0, r5, #0 + mov r1, #1 + add r0, #0x8d + strb r1, [r0] + ldr r0, _02212BB4 ; =0x0000017D + mov r1, #0 + strb r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_02212A1A: + bl FUN_02005514 + cmp r0, #0 + beq _02212A44 + ldr r0, _02212BB4 ; =0x0000017D + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + ldrb r1, [r5, r0] + cmp r1, #0x5a + bls _02212A3C + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + add r0, #0x8d + strb r1, [r0] + b _02212A44 +_02212A3C: + mov r0, #1 + add r5, #0x8d + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02212A44: + ldr r0, _02212BB4 ; =0x0000017D + mov r1, #0 + strb r1, [r5, r0] + add r0, r0, #1 + strb r1, [r5, r0] + add r0, r5, #0 + add r2, r1, #0 +_02212A52: + add r1, r1, #1 + str r2, [r0, #0x1c] + add r0, r0, #4 + cmp r1, #3 + blt _02212A52 + add r1, r5, #0 + mov r4, #0 +_02212A60: + add r0, r1, #0 + str r4, [r1, #0x28] + add r0, #0x2c + strb r4, [r0] + add r0, r1, #0 + add r0, #0x2d + strb r4, [r0] + str r4, [r1, #0x30] + add r2, r2, #1 + add r1, #0xc + cmp r2, #3 + blt _02212A60 + add r7, r5, #0 + mov r6, #0 +_02212A7C: + add r0, r7, #0 + add r0, #0xcc + ldr r1, [r0] + cmp r1, #0 + beq _02212A94 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200C398 +_02212A94: + add r0, r7, #0 + add r0, #0xcc + add r4, r4, #1 + add r7, r7, #4 + str r6, [r0] + cmp r4, #4 + blt _02212A7C +_02212AA2: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02213454 + add r6, r6, #1 + cmp r6, #5 + blt _02212AA2 + mov r6, #0 + add r4, r6, #0 + add r7, r6, #0 +_02212AB6: + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _02212AD2 + bl MOD08_02215B40 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r4 + str r7, [r0, #0x1c] +_02212AD2: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #0x10 + blt _02212AB6 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + cmp r1, #0 + beq _02212AE8 + mov r1, #0 + str r1, [r5, r0] +_02212AE8: + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #0 + bne _02212B3C + bl FUN_02231678 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02215588 + add r4, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + add r3, r0, #0 + lsl r0, r4, #0x18 + mov r1, #1 + lsr r0, r0, #0x18 + lsl r1, r1, #0xe + mov r2, #0 + bl FUN_02017F18 + add r0, r5, #0 + bl MOD08_02212490 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02215588 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl FUN_02018744 + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + b _02212B40 +_02212B3C: + bl FUN_02233560 +_02212B40: + mov r1, #0x1a + lsl r1, r1, #4 + ldrb r1, [r5, r1] + mov r0, #0 + bl FUN_020178BC + ldr r1, _02212BB8 ; =0x000001A1 + mov r0, #1 + ldrb r1, [r5, r1] + bl FUN_020178BC + ldr r1, _02212BBC ; =0x000001A2 + mov r0, #2 + ldrb r1, [r5, r1] + bl FUN_020178BC + ldr r1, _02212BC0 ; =0x000001A3 + mov r0, #3 + ldrb r1, [r5, r1] + bl FUN_020178BC + add r0, r5, #0 + add r0, #0xc4 + mov r2, #0 + ldr r0, [r0] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r5, #0 + add r0, #0xc4 + mov r2, #0 + ldr r0, [r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r5, #0 + add r0, #0xc4 + mov r1, #3 + ldr r0, [r0] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + mov r0, #0 + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02212BB0: .word 0x0000017E +_02212BB4: .word 0x0000017D +_02212BB8: .word 0x000001A1 +_02212BBC: .word 0x000001A2 +_02212BC0: .word 0x000001A3 + + thumb_func_start MOD08_02212BC4 +MOD08_02212BC4: ; 0x02212BC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r4, [r0] + add r1, r0, #4 + str r1, [r5, #0x18] + ldr r0, [r1] + str r0, [sp] + add r0, r1, #4 + str r0, [r5, #0x18] + ldr r7, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + str r4, [r0, #0x18] + add r0, r5, r4 + add r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _02212C22 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + add r1, sp, #4 + bl FUN_020133EC + mov r0, #0 + ldr r1, [sp, #8] + mvn r0, r0 + mul r0, r1 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r1, sp, #4 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + bl FUN_020133FC +_02212C22: + add r0, r5, #0 + add r0, #0xc0 + add r1, r5, r4 + add r1, #0x6c + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldrb r1, [r1] + ldr r0, [r0, #0x1c] + bl FUN_02013440 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, [sp] + add r0, r0, r6 + ldr r0, [r0, #0x1c] + add r2, r7, #0 + add r3, r5, #0 + bl MOD08_02215B2C + add r5, #0xc0 + ldr r1, [r5] + str r0, [r1, #0x5c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02212C58 +MOD08_02212C58: ; 0x02212C58 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r4, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r7, [r0] + add r1, r0, #4 + str r1, [r5, #0x18] + ldr r0, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + str r0, [sp, #4] + ldr r0, [r1] + str r0, [sp] + add r0, r1, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + str r4, [r0, #0x18] + add r0, r5, r4 + add r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _02212CBE + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + add r1, sp, #8 + bl FUN_020133EC + mov r0, #0 + ldr r1, [sp, #0xc] + mvn r0, r0 + mul r0, r1 + str r0, [sp, #0xc] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r1, sp, #8 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + bl FUN_020133FC +_02212CBE: + add r0, r5, #0 + add r0, #0xc0 + add r1, r5, r4 + add r1, #0x6c + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldrb r1, [r1] + ldr r0, [r0, #0x1c] + bl FUN_02013440 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, [sp, #4] + add r0, r0, r6 + ldr r0, [r0, #0x1c] + ldr r2, [sp] + add r3, r5, #0 + bl MOD08_02215B2C + add r5, #0xc0 + ldr r2, [r5] + lsl r1, r7, #2 + add r1, r2, r1 + str r0, [r1, #0x5c] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02212CF8 +MOD08_02212CF8: ; 0x02212CF8 + push {r4, r5, r6, lr} + sub sp, #0x90 + ldr r5, _02212D4C ; =0x0222AB4C + add r4, r0, #0 + add r3, sp, #0 + mov r2, #0x12 +_02212D04: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02212D04 + add r0, r4, #0 + bl MOD08_02212458 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212460 + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD08_02227468 + mov r1, #0x18 + add r3, r5, #0 + mul r3, r1 + add r2, sp, #0 + lsl r1, r0, #2 + add r0, r2, r3 + ldr r4, [r1, r0] + cmp r4, #0xff + bne _02212D44 + bl ErrorHandling +_02212D44: + sub r0, r4, #1 + add sp, #0x90 + pop {r4, r5, r6, pc} + nop +_02212D4C: .word 0x0222AB4C + + thumb_func_start MOD08_02212D50 +MOD08_02212D50: ; 0x02212D50 + push {r4, r5, r6, lr} + sub sp, #0x90 + ldr r5, _02212DA4 ; =0x0222ABDC + add r4, r0, #0 + add r3, sp, #0 + mov r2, #0x12 +_02212D5C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02212D5C + add r0, r4, #0 + bl MOD08_02212458 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212460 + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD08_02227468 + mov r1, #0x18 + add r3, r5, #0 + mul r3, r1 + add r2, sp, #0 + lsl r1, r0, #2 + add r0, r2, r3 + ldr r4, [r1, r0] + cmp r4, #0xff + bne _02212D9C + bl ErrorHandling +_02212D9C: + add r0, r4, #0 + add sp, #0x90 + pop {r4, r5, r6, pc} + nop +_02212DA4: .word 0x0222ABDC + + thumb_func_start MOD08_02212DA8 +MOD08_02212DA8: ; 0x02212DA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r0, #0x18 + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r4, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + mov r1, #0 + add r2, sp, #0x10 +_02212DC0: + ldr r3, [r5, #0x18] + add r1, r1, #1 + ldr r3, [r3] + str r3, [r2] + ldr r3, [r0] + add r2, r2, #4 + add r3, r3, #4 + str r3, [r0] + cmp r1, #6 + blt _02212DC0 + ldr r1, [r5, #0x18] + ldr r1, [r1] + str r1, [sp] + ldr r1, [r0] + add r1, r1, #4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + str r4, [r0, #0x18] + add r0, r5, r4 + add r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _02212E1E + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + add r1, sp, #4 + bl FUN_020133EC + mov r0, #0 + ldr r1, [sp, #8] + mvn r0, r0 + mul r0, r1 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r1, sp, #4 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + bl FUN_020133FC +_02212E1E: + add r0, r5, #0 + bl MOD08_02212CF8 + add r7, r0, #0 + add r0, r5, #0 + add r0, #0xc0 + add r1, r5, r4 + add r1, #0x6c + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldrb r1, [r1] + ldr r0, [r0, #0x1c] + bl FUN_02013440 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r2, r7, #2 + add r0, r0, r6 + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r0, [r0, #0x1c] + ldr r2, [sp] + add r3, r5, #0 + bl MOD08_02215B2C + add r5, #0xc0 + ldr r1, [r5] + str r0, [r1, #0x5c] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02212E60 +MOD08_02212E60: ; 0x02212E60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r0, #0x18 + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r4, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + mov r1, #0 + add r2, sp, #0x10 +_02212E78: + ldr r3, [r5, #0x18] + add r1, r1, #1 + ldr r3, [r3] + str r3, [r2] + ldr r3, [r0] + add r2, r2, #4 + add r3, r3, #4 + str r3, [r0] + cmp r1, #4 + blt _02212E78 + ldr r1, [r5, #0x18] + ldr r1, [r1] + str r1, [sp] + ldr r1, [r0] + add r1, r1, #4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + str r4, [r0, #0x18] + add r0, r5, r4 + add r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _02212ED6 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + add r1, sp, #4 + bl FUN_020133EC + mov r0, #0 + ldr r1, [sp, #8] + mvn r0, r0 + mul r0, r1 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r1, sp, #4 + add r0, r0, r6 + ldr r0, [r0, #0x1c] + bl FUN_020133FC +_02212ED6: + add r0, r5, #0 + bl MOD08_02212D50 + add r7, r0, #0 + add r0, r5, #0 + add r0, #0xc0 + add r1, r5, r4 + add r1, #0x6c + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldrb r1, [r1] + ldr r0, [r0, #0x1c] + bl FUN_02013440 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r2, r7, #2 + add r0, r0, r6 + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r0, [r0, #0x1c] + ldr r2, [sp] + add r3, r5, #0 + bl MOD08_02215B2C + add r5, #0xc0 + ldr r1, [r5] + str r0, [r1, #0x5c] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02212F18 +MOD08_02212F18: ; 0x02212F18 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + add r7, r6, #0 + add r4, r6, #0 +_02212F22: + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _02212F36 + bl FUN_020133C8 + add r6, r6, r0 +_02212F36: + add r7, r7, #1 + add r4, r4, #4 + cmp r7, #0x10 + blt _02212F22 + cmp r6, #0 + bne _02212F50 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + mov r0, #0 + add r5, #0x8d + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02212F50: + mov r0, #1 + add r5, #0x8d + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02212F58 +MOD08_02212F58: ; 0x02212F58 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r4, r1, #2 + add r0, r0, r4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _02212F7C + bl ErrorHandling +_02212F7C: + ldr r0, [r5, #0x18] + mov r2, #0 + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r5] + bl MOD08_02215AA4 + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r4 + str r0, [r1, #0x1c] + add r0, r5, #0 + mov r1, #2 + add r0, #0x8d + strb r1, [r0] + ldr r0, _02212FA8 ; =MOD08_02211EA0 + add r5, #0xbc + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_02212FA8: .word MOD08_02211EA0 + + thumb_func_start MOD08_02212FAC +MOD08_02212FAC: ; 0x02212FAC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r4, r1, #2 + add r0, r0, r4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _02212FD2 + bl ErrorHandling +_02212FD2: + ldr r0, [r5, #0x18] + mov r1, #0x64 + ldr r2, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r5] + mov r3, #0 + bl MOD08_02215ACC + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r4 + str r0, [r1, #0x1c] + add r0, r5, #0 + mov r1, #2 + add r0, #0x8d + strb r1, [r0] + ldr r0, _02213000 ; =MOD08_02211EA0 + add r5, #0xbc + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_02213000: .word MOD08_02211EA0 + + thumb_func_start MOD08_02213004 +MOD08_02213004: ; 0x02213004 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r4, r1, #2 + add r0, r0, r4 + ldr r0, [r0, #0x1c] + bl MOD08_02215B40 + add r5, #0xc0 + ldr r0, [r5] + mov r1, #0 + add r0, r0, r4 + str r1, [r0, #0x1c] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02213030 +MOD08_02213030: ; 0x02213030 + ldr r1, [r0, #0x18] + mov r3, #0 + add r1, r1, #4 + str r1, [r0, #0x18] + add r2, r0, #0 +_0221303A: + ldr r1, [r2, #0x1c] + cmp r1, #0 + bne _02213056 + ldr r1, [r0, #0x18] + add r2, r1, #4 + lsl r1, r3, #2 + add r1, r0, r1 + str r2, [r1, #0x1c] + ldr r2, [r0, #0x18] + ldr r1, [r2] + lsl r1, r1, #2 + add r1, r2, r1 + str r1, [r0, #0x18] + bx lr +_02213056: + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #3 + blt _0221303A + bx lr + + thumb_func_start MOD08_02213060 +MOD08_02213060: ; 0x02213060 + ldr r1, [r0, #0x18] + add r3, r0, #0 + add r1, r1, #4 + str r1, [r0, #0x18] + mov r2, #2 + add r3, #8 +_0221306C: + ldr r1, [r3, #0x1c] + cmp r1, #0 + beq _02213082 + add r3, r0, #0 + add r3, #0x1c + lsl r2, r2, #2 + ldr r1, [r3, r2] + str r1, [r0, #0x18] + mov r0, #0 + str r0, [r3, r2] + bx lr +_02213082: + sub r3, r3, #4 + sub r2, r2, #1 + bpl _0221306C + bx lr + .align 2, 0 + + thumb_func_start MOD08_0221308C +MOD08_0221308C: ; 0x0221308C + push {r3, r4} + ldr r2, [r0, #0x18] + add r1, r0, #0 + add r2, r2, #4 + str r2, [r0, #0x18] + ldr r4, [r2] + add r2, r2, #4 + str r2, [r0, #0x18] + ldr r3, [r2] + add r2, r2, #4 + str r2, [r0, #0x18] + lsl r2, r4, #2 + add r2, r0, r2 + add r2, #0x94 + ldr r2, [r2] + add r1, #0x18 + cmp r3, r2 + bne _022130BA + ldr r1, [r0, #0x18] + ldr r1, [r1] + str r1, [r0, #0x18] + pop {r3, r4} + bx lr +_022130BA: + ldr r0, [r1] + add r0, r0, #4 + str r0, [r1] + pop {r3, r4} + bx lr + + thumb_func_start MOD08_022130C4 +MOD08_022130C4: ; 0x022130C4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl MOD08_02215350 + cmp r0, #0 + ldr r0, [r4, #0x18] + beq _022130E4 + ldr r0, [r0] + str r0, [r4, #0x18] + pop {r4, pc} +_022130E4: + add r0, r0, #4 + str r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022130EC +MOD08_022130EC: ; 0x022130EC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + add r1, r0, #4 + str r1, [r4, #0x18] + ldr r0, [r1] + add r1, r1, #4 + str r1, [r4, #0x18] + bl MOD08_02218C48 + add r7, r0, #0 + ldr r0, [r4, #0x18] + add r2, r4, #0 + ldr r5, [r0] + add r0, r0, #4 + add r2, #0x18 + mov r3, #0 + str r0, [r4, #0x18] + cmp r5, #0 + bls _0221312E + add r6, r4, #0 +_02213116: + ldr r0, [r4, #0x18] + add r3, r3, #1 + ldr r1, [r0] + add r0, r6, #0 + add r0, #0x94 + str r1, [r0] + ldr r0, [r2] + add r6, r6, #4 + add r0, r0, #4 + str r0, [r2] + cmp r3, r5 + blo _02213116 +_0221312E: + cmp r3, #0xa + bge _02213146 + lsl r0, r3, #2 + add r2, r4, r0 + mov r1, #0 +_02213138: + add r0, r2, #0 + add r0, #0x94 + add r3, r3, #1 + add r2, r2, #4 + str r1, [r0] + cmp r3, #0xa + blt _02213138 +_02213146: + add r0, r4, #0 + blx r7 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0221314C +MOD08_0221314C: ; 0x0221314C + ldr r2, [r0, #0x18] + add r1, r0, #0 + add r2, r2, #4 + str r2, [r0, #0x18] + add r2, r0, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, #0x18 + ldrh r3, [r2, #0x10] + mov r2, #1 + tst r2, r3 + beq _0221316A + ldr r2, [r1] + add r2, r2, #4 + str r2, [r1] +_0221316A: + ldr r2, [r0, #0x18] + ldr r1, [r2] + lsl r1, r1, #2 + add r1, r2, r1 + str r1, [r0, #0x18] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02213178 +MOD08_02213178: ; 0x02213178 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x18] + add r1, r1, #4 + str r1, [r4, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r4, #0x18] + cmp r2, #0 + bne _0221319A + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + ldrh r1, [r1, #0x14] + bl MOD08_02227470 + b _022131A6 +_0221319A: + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + ldrh r1, [r1, #0x16] + bl MOD08_02227470 +_022131A6: + cmp r0, #4 + bne _022131B0 + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] +_022131B0: + ldr r1, [r4, #0x18] + ldr r0, [r1] + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start MOD08_022131BC +MOD08_022131BC: ; 0x022131BC + push {r4, r5} + sub sp, #0x10 + ldr r5, _02213214 ; =0x0222AA3C + add r2, sp, #0 + add r4, r0, #0 + add r3, r2, #0 + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldr r1, [r4, #0x18] + add r0, r4, #0 + add r1, r1, #4 + str r1, [r4, #0x18] + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + add r0, #0x18 + ldr r1, [r1, #0xc] + cmp r1, #0 + beq _02213202 + ldr r2, [r0] + add r2, r2, #4 + str r2, [r0] + mov r2, #0 +_022131EE: + ldr r5, [r3] + tst r5, r1 + bne _02213202 + ldr r5, [r0] + add r2, r2, #1 + add r5, r5, #4 + add r3, r3, #4 + str r5, [r0] + cmp r2, #4 + blo _022131EE +_02213202: + ldr r1, [r4, #0x18] + ldr r0, [r1] + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r4, #0x18] + add sp, #0x10 + pop {r4, r5} + bx lr + nop +_02213214: .word 0x0222AA3C + + thumb_func_start MOD08_02213218 +MOD08_02213218: ; 0x02213218 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x18] + add r1, r1, #4 + str r1, [r4, #0x18] + bl MOD08_02212004 + cmp r0, #1 + bne _02213236 + ldr r1, [r4, #0x18] + ldr r0, [r1] + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r4, #0x18] + pop {r4, pc} +_02213236: + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02213240 +MOD08_02213240: ; 0x02213240 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r1, r1, #4 + str r1, [r5, #0x18] + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + ldrh r1, [r1, #0x14] + bl MOD08_02227470 + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r4, r0, #0 + ldrh r1, [r1, #0x16] + add r0, r5, #0 + bl MOD08_02227470 + cmp r4, r0 + bne _02213276 + ldr r1, [r5, #0x18] + ldr r0, [r1] + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r5, #0x18] + pop {r3, r4, r5, pc} +_02213276: + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02213280 +MOD08_02213280: ; 0x02213280 + ldr r2, [r0, #0x18] + add r1, r0, #0 + add r2, r2, #4 + str r2, [r0, #0x18] + ldr r3, [r2] + add r2, r2, #4 + str r2, [r0, #0x18] + add r2, r0, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, #0x18 + ldrh r2, [r2, #0x10] + cmp r3, r2 + bne _022132AA + ldr r0, [r0, #0x18] + ldr r2, [r1] + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r2, r0 + str r0, [r1] + bx lr +_022132AA: + ldr r0, [r1] + add r0, r0, #4 + str r0, [r1] + bx lr + .align 2, 0 + + thumb_func_start MOD08_022132B4 +MOD08_022132B4: ; 0x022132B4 + ldr r1, [r0, #0x18] + add r2, r1, #4 + str r2, [r0, #0x18] + ldr r1, [r2] + lsl r1, r1, #2 + add r1, r2, r1 + str r1, [r0, #0x18] + bx lr + + thumb_func_start MOD08_022132C4 +MOD08_022132C4: ; 0x022132C4 + push {r4, r5, r6, lr} + add r4, r0, #0 + cmp r1, #7 + bhi _022133A2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022132D8: ; jump table + .short _022132E8 - _022132D8 - 2 ; case 0 + .short _022132F0 - _022132D8 - 2 ; case 1 + .short _022132F8 - _022132D8 - 2 ; case 2 + .short _02213306 - _022132D8 - 2 ; case 3 + .short _02213314 - _022132D8 - 2 ; case 4 + .short _0221333A - _022132D8 - 2 ; case 5 + .short _02213360 - _022132D8 - 2 ; case 6 + .short _02213382 - _022132D8 - 2 ; case 7 +_022132E8: + add r4, #0xc0 + ldr r0, [r4] + ldrh r6, [r0, #0x14] + b _022133A2 +_022132F0: + add r4, #0xc0 + ldr r0, [r4] + ldrh r6, [r0, #0x16] + b _022133A2 +_022132F8: + add r4, #0xc0 + ldr r1, [r4] + ldrh r1, [r1, #0x14] + bl MOD08_022274C0 + add r6, r0, #0 + b _022133A2 +_02213306: + add r4, #0xc0 + ldr r1, [r4] + ldrh r1, [r1, #0x16] + bl MOD08_022274C0 + add r6, r0, #0 + b _022133A2 +_02213314: + mov r6, #0xff + mov r5, #0 +_02213318: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #0 + beq _02213328 + cmp r0, #2 + bne _0221332C +_02213328: + add r6, r5, #0 + b _02213332 +_0221332C: + add r5, r5, #1 + cmp r5, #4 + blt _02213318 +_02213332: + cmp r6, #0xff + bne _022133A2 + mov r6, #0 + b _022133A2 +_0221333A: + mov r6, #0xff + mov r5, #0 +_0221333E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #1 + beq _0221334E + cmp r0, #3 + bne _02213352 +_0221334E: + add r6, r5, #0 + b _02213358 +_02213352: + add r5, r5, #1 + cmp r5, #4 + blt _0221333E +_02213358: + cmp r6, #0xff + bne _022133A2 + mov r6, #0 + b _022133A2 +_02213360: + mov r6, #0xff + mov r5, #0 +_02213364: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #4 + bne _02213374 + add r6, r5, #0 + b _0221337A +_02213374: + add r5, r5, #1 + cmp r5, #4 + blt _02213364 +_0221337A: + cmp r6, #0xff + bne _022133A2 + mov r6, #0 + b _022133A2 +_02213382: + mov r6, #0xff + mov r5, #0 +_02213386: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #5 + bne _02213396 + add r6, r5, #0 + b _0221339C +_02213396: + add r5, r5, #1 + cmp r5, #4 + blt _02213386 +_0221339C: + cmp r6, #0xff + bne _022133A2 + mov r6, #0 +_022133A2: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_022133A8 +MOD08_022133A8: ; 0x022133A8 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _022133C4 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + ldrb r1, [r5, #4] + ldrb r0, [r5, #5] + cmp r1, r0 + bne _022133F2 + mov r0, #0 + strb r0, [r5, #4] +_022133C4: + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + ldr r0, [r5, #8] + mov r1, #0x29 + bl FUN_0200782C + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r2, r0, #0x10 + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C714 +_022133F2: + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_022133F4 +MOD08_022133F4: ; 0x022133F4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _02213410 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + ldrb r1, [r5, #4] + ldrb r0, [r5, #5] + cmp r1, r0 + bne _02213452 + mov r0, #0 + strb r0, [r5, #4] +_02213410: + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + ldr r0, [r5, #8] + mov r1, #0x29 + bl FUN_0200782C + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + sub r6, #0x28 + ldr r0, [r5] + mov r1, #2 + mov r2, #0 + neg r3, r6 + bl FUN_020179E0 + sub r4, #0x28 + ldr r0, [r5] + mov r1, #2 + mov r2, #3 + neg r3, r4 + bl FUN_020179E0 +_02213452: + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02213454 +MOD08_02213454: ; 0x02213454 + push {r3, r4, r5, lr} + add r4, r0, #0 + cmp r1, #4 + bne _02213480 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0221349E + ldr r0, [r0, #0xc] + bl FUN_0200CAB4 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x5e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_02213480: + mov r0, #0x59 + lsl r0, r0, #2 + lsl r5, r1, #2 + add r4, r4, r0 + ldr r0, [r4, r5] + cmp r0, #0 + beq _0221349E + ldr r0, [r0, #0xc] + bl FUN_0200CAB4 + ldr r0, [r4, r5] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, r5] +_0221349E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022134A0 +MOD08_022134A0: ; 0x022134A0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022134A4 +MOD08_022134A4: ; 0x022134A4 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022134A8 +MOD08_022134A8: ; 0x022134A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r2, r1, #4 + str r2, [r5, #0x18] + ldr r1, [r2] + add r2, r2, #4 + str r2, [r5, #0x18] + ldr r4, [r2] + add r2, r2, #4 + str r2, [r5, #0x18] + bl MOD08_022132C4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0xc0 + ldr r1, [r0] + lsl r0, r6, #2 + add r0, r1, r0 + add r0, #0xb0 + ldr r1, [r0] + ldr r0, [r1, #4] + str r0, [sp, #0x14] + ldr r0, [r1, #8] + str r0, [sp, #0x10] + ldr r0, [r1] + str r0, [sp, #0x18] + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _022134FE + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154A8 + bl MOD08_0222A6C8 + cmp r0, #1 + bne _022134FE + mov r7, #0xc9 + b _02213500 +_022134FE: + mov r7, #0xc8 +_02213500: + mov r0, #2 + bl FUN_020187B0 + mov r2, #0x19 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #0 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc4 + mov r3, #0x32 + ldr r0, [r0] + ldr r2, [sp, #0x18] + mov r1, #2 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + ldr r3, [r5] + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + add r2, r5, #0 + str r0, [sp, #0xc] + add r2, #0xc4 + ldr r2, [r2] + mov r0, #7 + add r1, r7, #0 + mov r3, #2 + bl FUN_020068C8 + cmp r4, #1 + bne _022135AC + ldr r0, [r5] + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0xc4 + ldr r2, [r0] + ldr r0, [r5, r1] + add r1, r6, #0 + str r2, [r0] + add r0, r5, #0 + bl MOD08_022154D4 + mov r1, #0x5e + lsl r1, r1, #2 + ldr r2, [r5, r1] + str r0, [r2, #8] + ldr r0, [r5, r1] + mov r2, #0 + strb r2, [r0, #4] + ldr r0, [r5, r1] + strb r2, [r0, #5] + ldr r0, _02213628 ; =MOD08_022133F4 + ldr r1, [r5, r1] + ldr r2, _0221362C ; =0x00001001 + bl FUN_0200CA44 + mov r1, #0x5e + lsl r1, r1, #2 + ldr r1, [r5, r1] + str r0, [r1, #0xc] +_022135AC: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + mov r1, #0x29 + bl FUN_0200782C + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r5, #0 + add r0, #0xc4 + sub r7, #0x28 + ldr r0, [r0] + mov r1, #2 + mov r2, #0 + neg r3, r7 + bl FUN_020179E0 + add r0, r5, #0 + add r0, #0xc4 + sub r4, #0x28 + ldr r0, [r0] + mov r1, #2 + mov r2, #3 + neg r3, r4 + bl FUN_020179E0 + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + lsl r1, r1, #0x18 + mov r0, #2 + lsr r1, r1, #0x18 + bl FUN_020178BC + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02213628: .word MOD08_022133F4 +_0221362C: .word 0x00001001 + + thumb_func_start MOD08_02213630 +MOD08_02213630: ; 0x02213630 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + add r0, r0, #4 + add r0, r0, #4 + str r0, [r4, #0x18] + mov r0, #2 + bl FUN_020187B0 + mov r2, #0x19 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + add r0, r4, #0 + mov r1, #4 + bl MOD08_02213454 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02213658 +MOD08_02213658: ; 0x02213658 + push {r4, lr} + sub sp, #0x18 + ldr r3, _022136CC ; =0x0222AA7C + add r2, sp, #0 + add r4, r0, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200BB34 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, [r4, r1] + add r0, #0xac + ldr r0, [r0] + mov r2, #5 + bl FUN_0200BBF0 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #0x4e + add r0, #0xac + lsl r1, r1, #2 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, sp, #0 + bl FUN_0200BF60 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_022136CC: .word 0x0222AA7C + + thumb_func_start MOD08_022136D0 +MOD08_022136D0: ; 0x022136D0 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0x18] + ldr r1, _0221377C ; =0x00004E21 + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r2, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r4, r2, r1 + ldrh r3, [r0, #0x14] + lsr r2, r1, #2 + add r0, #0xac + mul r2, r3 + add r4, r4, r2 + mov r2, #0 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + str r4, [sp, #8] + lsr r1, r1, #6 + ldr r0, [r0] + ldr r1, [r5, r1] + mov r2, #0x1b + mov r3, #0x28 + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + mov r3, #0x27 + str r3, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + add r2, r5, #0 + add r0, r5, #0 + str r4, [sp, #0x14] + add r2, #0xc0 + ldr r2, [r2] + add r0, #0xc8 + add r2, #0xac + lsl r3, r3, #3 + ldr r0, [r0] + ldr r2, [r2] + ldr r3, [r5, r3] + mov r1, #2 + bl FUN_0200C0DC + mov r0, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x4e + str r4, [sp, #4] + add r0, #0xc0 + ldr r0, [r0] + lsl r1, r1, #2 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, r1] + mov r2, #0x1b + mov r3, #0x29 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x4e + str r4, [sp, #4] + add r0, #0xc0 + ldr r0, [r0] + lsl r1, r1, #2 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, r1] + mov r2, #0x1b + mov r3, #0x2a + bl FUN_0200C13C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221377C: .word 0x00004E21 + + thumb_func_start MOD08_02213780 +MOD08_02213780: ; 0x02213780 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r4, r0, #0 + ldr r1, [r4, #0x18] + ldr r6, _02213994 ; =0x00004E21 + add r2, r1, #4 + str r2, [r4, #0x18] + ldr r1, [r2] + add r2, r2, #4 + str r2, [r4, #0x18] + mov ip, r1 + ldr r1, [r2] + add r2, r2, #4 + str r2, [r4, #0x18] + str r1, [sp, #0x10] + ldr r1, [r2] + add r2, r2, #4 + str r2, [r4, #0x18] + str r1, [sp, #0xc] + ldr r1, [r2] + add r2, r2, #4 + str r2, [r4, #0x18] + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, r1, r6 + ldrh r3, [r2, #0x14] + lsr r2, r6, #2 + mul r2, r3 + add r2, r1, r2 + str r2, [sp, #0x58] + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + ldrh r3, [r2, #0x14] + lsr r2, r6, #2 + mul r2, r3 + add r2, r1, r2 + str r2, [sp, #0x5c] + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + ldrh r3, [r2, #0x14] + lsr r2, r6, #2 + mul r2, r3 + add r2, r1, r2 + str r2, [sp, #0x60] + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + lsr r3, r6, #2 + ldrh r2, [r2, #0x14] + mul r3, r2 + add r1, r1, r3 + str r1, [sp, #0x64] + mov r1, #0 + str r1, [sp, #0x68] + str r1, [sp, #0x6c] + mov r1, ip + bl MOD08_022132C4 + str r0, [sp, #0x1c] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + ldr r0, [sp, #0x1c] + lsl r0, r0, #2 + add r0, r1, r0 + add r0, #0xb0 + ldr r1, [r0] + ldr r0, [r1, #4] + str r0, [sp, #0x18] + ldr r0, [r1, #8] + str r0, [sp, #0x14] + ldr r0, [r1] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x20] + add r0, r4, #0 + bl MOD08_022154D4 + add r6, r0, #0 + beq _02213848 + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + add r0, r6, #0 + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + add r0, r6, #0 + mov r1, #0x29 + bl FUN_0200782C + sub r0, r5, r0 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 +_02213848: + add r0, sp, #0x24 + strh r7, [r0] + strh r5, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + strh r1, [r0, #6] + mov r0, #0x64 + str r0, [sp, #0x2c] + mov r0, #1 + str r1, [sp, #0x30] + str r0, [sp, #0x34] + str r0, [sp, #0x50] + str r1, [sp, #0x54] + add r2, sp, #0x58 + add r3, sp, #0x24 +_02213866: + ldr r0, [r2] + add r1, r1, #1 + str r0, [r3, #0x14] + add r2, r2, #4 + add r3, r3, #4 + cmp r1, #6 + blt _02213866 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #0x4e + add r0, #0xac + lsl r1, r1, #2 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, sp, #0x24 + bl FUN_0200C154 + add r7, r0, #0 + cmp r6, #0 + bne _02213898 + mov r1, #0 + bl FUN_0200C644 + b _022138AC +_02213898: + add r0, r6, #0 + mov r1, #6 + bl FUN_0200782C + cmp r0, #1 + bne _022138AC + add r0, r7, #0 + mov r1, #0 + bl FUN_0200C644 +_022138AC: + add r0, r4, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _022138CE + ldr r1, [sp, #0x1c] + add r0, r4, #0 + bl MOD08_022154A8 + bl MOD08_0222A6C8 + cmp r0, #1 + bne _022138CE + add r0, r7, #0 + mov r1, #1 + bl FUN_0200C8D0 +_022138CE: + ldr r1, [sp, #0x1c] + add r0, r4, #0 + bl MOD08_022154D4 + cmp r0, #0 + beq _022138F0 + ldr r0, [r7] + bl FUN_02020350 + add r1, r0, #0 + mov r3, #0x32 + ldr r1, [r1, #4] + ldr r2, [sp, #0x20] + mov r0, #0x13 + lsl r3, r3, #6 + bl FUN_0201C2C8 +_022138F0: + ldr r1, [sp, #0x1c] + add r0, r4, #0 + bl MOD08_022154D4 + cmp r0, #0 + beq _02213926 + ldr r0, [r7] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + mov r1, #2 + str r1, [sp] + mov r1, #0x20 + lsl r0, r0, #0x14 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + ldr r3, [r4] + bl FUN_020030E8 +_02213926: + ldr r0, [sp, #0xc] + lsl r5, r0, #2 + mov r0, #0x4f + lsl r0, r0, #2 + add r6, r4, r0 + ldr r0, [r6, r5] + cmp r0, #0 + beq _0221393A + bl ErrorHandling +_0221393A: + mov r0, #0x15 + str r7, [r6, r5] + mov r2, #1 + add r1, r4, r5 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _02213990 + ldr r1, [sp, #0x1c] + add r0, r4, #0 + bl MOD08_022154D4 + cmp r0, #0 + beq _02213990 + mov r0, #0x59 + lsl r0, r0, #2 + add r6, r4, r0 + ldr r0, [r4] + mov r1, #0x10 + bl FUN_02016998 + str r0, [r6, r5] + ldr r0, [r6, r5] + ldr r1, [sp, #0x1c] + str r7, [r0] + add r0, r4, #0 + bl MOD08_022154D4 + ldr r1, [r6, r5] + ldr r2, _02213998 ; =0x00001001 + str r0, [r1, #8] + ldr r0, [r6, r5] + mov r1, #0 + strb r1, [r0, #4] + ldr r0, [r6, r5] + strb r1, [r0, #5] + ldr r0, _0221399C ; =MOD08_022133A8 + ldr r1, [r6, r5] + bl FUN_0200CA44 + ldr r1, [r6, r5] + str r0, [r1, #0xc] +_02213990: + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02213994: .word 0x00004E21 +_02213998: .word 0x00001001 +_0221399C: .word MOD08_022133A8 + + thumb_func_start MOD08_022139A0 +MOD08_022139A0: ; 0x022139A0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _022139C2 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200C398 +_022139C2: + mov r0, #0x4e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + + thumb_func_start MOD08_022139CC +MOD08_022139CC: ; 0x022139CC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + mov r0, #0x4f + lsl r0, r0, #2 + lsl r4, r1, #2 + add r6, r5, r0 + ldr r0, [r6, r4] + cmp r0, #0 + beq _022139EE + bl FUN_0200C3DC +_022139EE: + mov r0, #0x15 + mov r2, #0 + add r1, r5, r4 + lsl r0, r0, #4 + str r2, [r1, r0] + str r2, [r6, r4] + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_022139FC +MOD08_022139FC: ; 0x022139FC + push {r3, lr} + ldr r2, [r1, #0xc] + cmp r2, #0 + bne _02213A0A + bl FUN_0200CAB4 + pop {r3, pc} +_02213A0A: + mov r0, #0x4e + ldr r2, [r1] + lsl r0, r0, #2 + ldr r0, [r2, r0] + cmp r0, #0 + beq _02213A1C + ldr r0, [r1, #4] + bl FUN_0200BC1C +_02213A1C: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02213A20 +MOD08_02213A20: ; 0x02213A20 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r6, r5, #0 + add r1, r0, #4 + str r1, [r5, #0x18] + ldr r0, [r1] + add r6, #0x54 + str r0, [sp] + add r0, r1, #4 + str r0, [r5, #0x18] + ldr r2, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + lsl r4, r2, #4 + str r0, [sp, #8] + add r0, #0x4c + lsl r1, r1, #2 + str r0, [sp, #8] + str r5, [r0, r4] + mov r0, #0x4e + lsl r0, r0, #2 + ldr r3, [r5, r0] + add r2, r5, r4 + str r3, [r2, #0x50] + add r1, r5, r1 + add r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + str r0, [r6, r4] + mov r0, #1 + str r0, [r2, #0x58] + ldr r0, [r6, r4] + bl FUN_0200C644 + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + beq _02213A7C + b _02213BCA +_02213A7C: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227468 + str r0, [sp, #4] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227468 + add r7, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + bl MOD08_022132C4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022154D4 + cmp r0, #0 + beq _02213AB8 + mov r1, #6 + bl FUN_0200782C + b _02213ABA +_02213AB8: + mov r0, #0 +_02213ABA: + cmp r0, #1 + ldr r0, [r6, r4] + bne _02213AC8 + mov r1, #0 + bl FUN_0200C644 + b _02213ACE +_02213AC8: + mov r1, #1 + bl FUN_0200C644 +_02213ACE: + ldr r0, [sp] + cmp r0, #3 + bhi _02213BBC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213AE0: ; jump table + .short _02213AE8 - _02213AE0 - 2 ; case 0 + .short _02213B36 - _02213AE0 - 2 ; case 1 + .short _02213B0E - _02213AE0 - 2 ; case 2 + .short _02213B7A - _02213AE0 - 2 ; case 3 +_02213AE8: + ldr r0, [sp, #4] + sub r0, r0, #3 + cmp r0, #1 + bhi _02213AFA + ldr r0, [r6, r4] + mov r1, #1 + bl FUN_0200C6C4 + b _02213BBC +_02213AFA: + add r5, #0x54 + ldr r0, [r5, r4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r5, r4] + mov r1, #0xff + bl FUN_0200C6C4 + b _02213BBC +_02213B0E: + ldr r0, [sp, #4] + cmp r0, #5 + beq _02213B18 + cmp r0, #2 + bne _02213B22 +_02213B18: + ldr r0, [r6, r4] + mov r1, #1 + bl FUN_0200C6C4 + b _02213BBC +_02213B22: + add r5, #0x54 + ldr r0, [r5, r4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r5, r4] + mov r1, #0xff + bl FUN_0200C6C4 + b _02213BBC +_02213B36: + cmp r7, #5 + bhi _02213BBC + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213B46: ; jump table + .short _02213BBC - _02213B46 - 2 ; case 0 + .short _02213BBC - _02213B46 - 2 ; case 1 + .short _02213B52 - _02213B46 - 2 ; case 2 + .short _02213B5C - _02213B46 - 2 ; case 3 + .short _02213B66 - _02213B46 - 2 ; case 4 + .short _02213B70 - _02213B46 - 2 ; case 5 +_02213B52: + ldr r0, [r6, r4] + mov r1, #0xff + bl FUN_0200C6C4 + b _02213BBC +_02213B5C: + ldr r0, [r6, r4] + mov r1, #1 + bl FUN_0200C6C4 + b _02213BBC +_02213B66: + ldr r0, [r6, r4] + mov r1, #1 + bl FUN_0200C6C4 + b _02213BBC +_02213B70: + ldr r0, [r6, r4] + mov r1, #0xff + bl FUN_0200C6C4 + b _02213BBC +_02213B7A: + cmp r7, #5 + bhi _02213BBC + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213B8A: ; jump table + .short _02213BBC - _02213B8A - 2 ; case 0 + .short _02213BBC - _02213B8A - 2 ; case 1 + .short _02213B96 - _02213B8A - 2 ; case 2 + .short _02213BA0 - _02213B8A - 2 ; case 3 + .short _02213BAA - _02213B8A - 2 ; case 4 + .short _02213BB4 - _02213B8A - 2 ; case 5 +_02213B96: + ldr r0, [r6, r4] + mov r1, #1 + bl FUN_0200C6C4 + b _02213BBC +_02213BA0: + ldr r0, [r6, r4] + mov r1, #0xff + bl FUN_0200C6C4 + b _02213BBC +_02213BAA: + ldr r0, [r6, r4] + mov r1, #0xff + bl FUN_0200C6C4 + b _02213BBC +_02213BB4: + ldr r0, [r6, r4] + mov r1, #1 + bl FUN_0200C6C4 +_02213BBC: + ldr r1, [sp, #8] + mov r2, #1 + ldr r0, _02213BD0 ; =MOD08_022139FC + add r1, r1, r4 + lsl r2, r2, #0xc + bl FUN_0200CA44 +_02213BCA: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02213BD0: .word MOD08_022139FC + + thumb_func_start MOD08_02213BD4 +MOD08_02213BD4: ; 0x02213BD4 + ldr r1, [r0, #0x18] + mov r2, #0 + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + lsl r1, r3, #4 + add r0, r0, r1 + str r2, [r0, #0x58] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02213BEC +MOD08_02213BEC: ; 0x02213BEC + ldr r1, [r0, #0x18] + ldr r3, _02213BFC ; =MOD08_02213454 + add r2, r1, #4 + str r2, [r0, #0x18] + ldr r1, [r2] + add r2, r2, #4 + str r2, [r0, #0x18] + bx r3 + .align 2, 0 +_02213BFC: .word MOD08_02213454 + + thumb_func_start MOD08_02213C00 +MOD08_02213C00: ; 0x02213C00 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + add r0, r0, r3 + add r0, #0x6c + strb r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02213C1C +MOD08_02213C1C: ; 0x02213C1C + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + add r0, r0, r3 + add r0, #0x7c + strb r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02213C38 +MOD08_02213C38: ; 0x02213C38 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02213C3C +MOD08_02213C3C: ; 0x02213C3C + bx lr + .align 2, 0 + + thumb_func_start MOD08_02213C40 +MOD08_02213C40: ; 0x02213C40 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r1, #0xc0 + ldr r1, [r1] + add r5, r0, #0 + ldrh r1, [r1, #0x14] + add r0, r4, #0 + add r6, r2, #0 + bl MOD08_02227470 + add r7, r0, #0 + add r0, r4, #0 + add r4, #0xc0 + ldr r1, [r4] + ldrh r1, [r1, #0x16] + bl MOD08_02227470 + lsl r1, r6, #2 + add r1, r5, r1 + ldr r1, [r1, #0x1c] + cmp r1, #2 + bne _02213C84 + cmp r7, r0 + bne _02213C7C + cmp r0, #3 + beq _02213C78 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02213C78: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213C7C: + cmp r0, #3 + bne _02213C90 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02213C84: + cmp r1, #0 + beq _02213C90 + cmp r0, #3 + bne _02213C90 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02213C90: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02213C94 +MOD08_02213C94: ; 0x02213C94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r0, r3, #0 + mov r1, #0 + add r4, r2, #0 + str r3, [sp, #0x10] + bl MOD08_022156AC + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5] + add r2, r5, #0 + str r0, [sp, #0xc] + add r2, #0xc4 + ldr r2, [r2] + mov r0, #7 + add r3, r4, #0 + bl FUN_0200687C + ldr r0, [sp, #0x10] + mov r1, #1 + bl MOD08_022156AC + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x90 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + ldr r3, [r5] + mov r1, #7 + bl FUN_020030E8 + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_02018744 + add r0, r5, #0 + mov r6, #2 + bl MOD08_02212004 + cmp r0, #1 + bne _02213D08 + mov r6, #4 + b _02213D18 +_02213D08: + add r0, r7, #0 + add r1, r5, #0 + mov r2, #7 + bl MOD08_02213C40 + cmp r0, #1 + bne _02213D18 + mov r6, #3 +_02213D18: + ldr r0, [sp, #0x10] + add r1, r6, #0 + bl MOD08_022156AC + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5] + add r5, #0xc4 + str r0, [sp, #0xc] + ldr r2, [r5] + mov r0, #7 + add r3, r4, #0 + bl FUN_020068C8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02213D40 +MOD08_02213D40: ; 0x02213D40 + lsl r0, r0, #0x10 + and r0, r1 + cmp r1, r0 + bne _02213D4C + mov r0, #1 + bx lr +_02213D4C: + mov r0, #0 + bx lr + + thumb_func_start MOD08_02213D50 +MOD08_02213D50: ; 0x02213D50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r3, _02213DA0 ; =0x0222AA2C + add r2, sp, #0 + add r5, r0, #0 + add r4, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r7, _02213DA4 ; =0x0222AADC + mov r6, #0 +_02213D68: + ldr r0, [r5, #0x18] + ldr r1, [r4] + bl MOD08_02213D40 + cmp r0, #0 + beq _02213D92 + ldr r0, [r4] + mov r1, #0 + lsr r2, r0, #0x10 + cmp r2, #2 + blt _02213D8A +_02213D7E: + lsr r0, r2, #0x1f + add r0, r2, r0 + asr r2, r0, #1 + add r1, r1, #1 + cmp r2, #2 + bge _02213D7E +_02213D8A: + lsl r1, r1, #2 + ldr r1, [r7, r1] + add r0, r5, #0 + blx r1 +_02213D92: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blo _02213D68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02213DA0: .word 0x0222AA2C +_02213DA4: .word 0x0222AADC + + thumb_func_start MOD08_02213DA8 +MOD08_02213DA8: ; 0x02213DA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r1, #0x4c + bl FUN_02016998 + add r4, r0, #0 + bne _02213DC0 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} +_02213DC0: + mov r1, #0 + mov r2, #0x4c + bl Call_FillMemWithValue + mov r0, #0 + str r0, [r4] + strb r0, [r4, #5] + str r5, [r4, #0x48] + strb r0, [r4, #9] + mov r0, #0x1f + strb r0, [r4, #0xa] + mov r0, #0x1d + strb r0, [r4, #0xb] + mov r0, #2 + strb r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + cmp r0, #1 + bne _02213DFA + mov r0, #0 + strb r0, [r4, #9] + mov r0, #0x1f + strb r0, [r4, #0xa] + mov r0, #0xf + strb r0, [r4, #0xb] + mov r0, #7 + strb r0, [r4, #0xc] +_02213DFA: + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + cmp r0, #2 + bne _02213E16 + mov r0, #7 + strb r0, [r4, #9] + mov r0, #0xf + strb r0, [r4, #0xa] + mov r0, #0x1d + strb r0, [r4, #0xb] + mov r0, #2 + strb r0, [r4, #0xc] +_02213E16: + mov r1, #0 + add r2, r5, #0 + add r3, r4, #0 +_02213E1C: + add r0, r2, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r1, #1 + str r0, [r3, #0x1c] + add r2, r2, #4 + add r3, r3, #4 + cmp r1, #0xa + blt _02213E1C + mov r0, #0x5f + mov r1, #1 + lsl r0, r0, #2 + strb r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02213E3C +MOD08_02213E3C: ; 0x02213E3C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _02213E50 + cmp r0, #1 + beq _02213E8E + cmp r0, #2 + beq _02213EE0 + b _02213F2A +_02213E50: + ldr r0, [r5, #0x48] + mov r1, #2 + bl MOD08_0221477C + ldr r0, [r5, #0x48] + mov r1, #2 + bl MOD08_02215600 + add r4, r0, #0 + ldr r0, [r5, #0x48] + mov r1, #1 + bl MOD08_02215600 + lsl r1, r4, #0x18 + mov r0, #3 + lsr r1, r1, #0x18 + bl FUN_020178BC + lsl r1, r4, #0x18 + mov r0, #2 + lsr r1, r1, #0x18 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + ldrb r0, [r5, #5] + add r0, r0, #1 + strb r0, [r5, #5] + b _02213F2E +_02213E8E: + ldr r0, [r5, #0x48] + mov r1, #3 + add r0, #0xc4 + ldr r0, [r0] + mov r2, #2 + add r3, r1, #0 + bl FUN_020170F4 + ldr r0, [r5, #0x48] + bl MOD08_02212004 + cmp r0, #1 + beq _02213EB8 + ldr r0, [r5, #0x48] + mov r2, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020170F4 +_02213EB8: + ldr r1, [r5, #0x48] + ldr r3, [r5, #0x10] + add r0, r5, #0 + mov r2, #3 + bl MOD08_02213C94 + ldrb r0, [r5, #9] + mov r1, #4 + mov r2, #8 + str r0, [sp] + ldrb r3, [r5, #0xa] + ldr r0, _02213F34 ; =0x04000050 + bl G2x_SetBlendAlpha_ + add r0, r5, #0 + bl MOD08_02213D50 + ldrb r0, [r5, #5] + add r0, r0, #1 + strb r0, [r5, #5] +_02213EE0: + ldrb r1, [r5, #9] + ldrb r0, [r5, #0xb] + mov r2, #0 + cmp r1, r0 + bhs _02213EF0 + add r0, r1, #2 + strb r0, [r5, #9] + b _02213EF2 +_02213EF0: + add r2, r2, #1 +_02213EF2: + ldrb r1, [r5, #0xa] + ldrb r0, [r5, #0xc] + cmp r1, r0 + bls _02213F00 + sub r0, r1, #2 + strb r0, [r5, #0xa] + b _02213F02 +_02213F00: + add r2, r2, #1 +_02213F02: + cmp r2, #2 + bne _02213F14 + ldrb r0, [r5, #0xb] + strb r0, [r5, #9] + ldrb r0, [r5, #0xc] + strb r0, [r5, #0xa] + ldrb r0, [r5, #5] + add r0, r0, #1 + strb r0, [r5, #5] +_02213F14: + ldrb r0, [r5, #9] + ldrb r1, [r5, #0xa] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02213F38 ; =0x04000052 + strh r1, [r0] + ldrb r0, [r5, #5] + cmp r0, #2 + beq _02213F2E + mov r0, #0 + pop {r3, r4, r5, pc} +_02213F2A: + mov r0, #0 + pop {r3, r4, r5, pc} +_02213F2E: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_02213F34: .word 0x04000050 +_02213F38: .word 0x04000052 + + thumb_func_start MOD08_02213F3C +MOD08_02213F3C: ; 0x02213F3C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + ldrb r0, [r4, #5] + cmp r0, #4 + bls _02213F4A + b _0221411C +_02213F4A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213F56: ; jump table + .short _02213F60 - _02213F56 - 2 ; case 0 + .short _02213F6E - _02213F56 - 2 ; case 1 + .short _02213FB0 - _02213F56 - 2 ; case 2 + .short _02213FF6 - _02213F56 - 2 ; case 3 + .short _022140F8 - _02213F56 - 2 ; case 4 +_02213F60: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02213F6E: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD08_02215600 + add r5, r0, #0 + ldr r0, [r4, #0x48] + mov r1, #1 + bl MOD08_02215600 + lsl r1, r5, #0x18 + mov r0, #3 + lsr r1, r1, #0x18 + bl FUN_020178BC + lsl r1, r5, #0x18 + mov r0, #2 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldrb r0, [r4, #0xa] + mov r1, #4 + mov r2, #8 + str r0, [sp] + ldrb r3, [r4, #9] + ldr r0, _02214128 ; =0x04000050 + bl G2x_SetBlendAlpha_ + add r0, r4, #0 + bl MOD08_02213D50 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02213FB0: + ldrb r1, [r4, #9] + ldrb r0, [r4, #0xb] + mov r2, #0 + cmp r1, r0 + bhs _02213FC0 + add r0, r1, #2 + strb r0, [r4, #9] + b _02213FC2 +_02213FC0: + add r2, r2, #1 +_02213FC2: + ldrb r1, [r4, #0xa] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bls _02213FD0 + sub r0, r1, #2 + strb r0, [r4, #0xa] + b _02213FD2 +_02213FD0: + add r2, r2, #1 +_02213FD2: + cmp r2, #2 + bne _02213FE8 + ldrb r0, [r4, #0xb] + add r0, r0, #2 + strb r0, [r4, #9] + ldrb r0, [r4, #0xc] + sub r0, r0, #2 + strb r0, [r4, #0xa] + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02213FE8: + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #9] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221412C ; =0x04000052 + strh r1, [r0] + b _02214122 +_02213FF6: + add r0, r4, #0 + add r0, #0x44 + ldrh r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0221400A + ldr r0, [r4, #0x48] + bl MOD08_02214524 +_0221400A: + add r0, r4, #0 + add r0, #0x44 + ldrh r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0221401E + ldr r0, [r4, #0x48] + bl MOD08_02214524 +_0221401E: + ldr r0, [r4, #0x48] + mov r2, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x48] + mov r1, #3 + add r0, #0xc4 + ldr r0, [r0] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x48] + mov r1, #3 + add r0, #0xc4 + ldr r0, [r0] + mov r2, #2 + mov r3, #4 + bl FUN_020170F4 + ldr r0, [r4, #0x48] + bl MOD08_02212004 + cmp r0, #0 + bne _02214078 + ldr r0, [r4, #0x48] + mov r1, #3 + add r0, #0xc4 + ldr r0, [r0] + mov r2, #0 + mov r3, #1 + bl FUN_020170F4 + ldr r0, [r4, #0x48] + mov r1, #3 + bl MOD08_02215638 + ldr r0, [r4, #0x48] + bl MOD08_02215660 + b _022140CC +_02214078: + ldr r2, [r4, #0x48] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r2] + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + add r2, #0xc4 + ldr r2, [r2] + mov r3, #3 + bl FUN_0200687C + mov r2, #0x66 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r3, [r4, #0x48] + mov r0, #0 + str r0, [sp] + ldr r0, [r3, r2] + sub r1, #0x14 + lsl r0, r0, #5 + str r0, [sp, #4] + sub r0, r2, #4 + ldr r0, [r3, r0] + sub r2, #0xc + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r3, #0 + add r0, #0xc8 + ldr r0, [r0] + ldr r1, [r3, r1] + ldr r2, [r3, r2] + ldr r3, [r3] + bl FUN_020030E8 +_022140CC: + ldr r2, [r4, #0x48] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r2] + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [r2, r1] + add r1, #0xc + ldr r1, [r2, r1] + add r2, #0xc4 + ldr r2, [r2] + mov r3, #3 + bl FUN_020068C8 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02214122 +_022140F8: + ldr r0, [r4, #0x48] + bl MOD08_02212004 + cmp r0, #0 + bne _02214108 + bl FUN_02231678 + b _0221410C +_02214108: + bl FUN_02233560 +_0221410C: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD08_02214850 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02214122 +_0221411C: + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_02214122: + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02214128: .word 0x04000050 +_0221412C: .word 0x04000052 + + thumb_func_start MOD08_02214130 +MOD08_02214130: ; 0x02214130 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + ldrb r0, [r4, #5] + cmp r0, #0 + beq _02214142 + cmp r0, #1 + beq _022141BE + b _0221423A +_02214142: + ldrb r0, [r4, #0xd] + ldr r2, [r4, #0x48] + cmp r0, #0 + bne _02214180 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r5, #0x67 + add r0, r2, #0 + str r3, [sp, #8] + lsl r5, r5, #2 + ldr r2, [r2, r5] + add r0, #0xc8 + lsl r2, r2, #0x10 + ldr r0, [r0] + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02003210 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x48] + add r2, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + add r2, #0x64 + mov r3, #0x10 + bl FUN_02003A64 + b _022141B8 +_02214180: + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _02214254 ; =0x0000FFFF + mov r5, #0x67 + str r0, [sp, #8] + add r0, r2, #0 + lsl r5, r5, #2 + ldr r2, [r2, r5] + add r0, #0xc8 + lsl r2, r2, #0x10 + ldr r0, [r0] + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02003210 + ldr r0, _02214254 ; =0x0000FFFF + add r2, r5, #0 + str r0, [sp] + ldr r0, [r4, #0x48] + mov r1, #0 + add r0, #0xc8 + ldr r0, [r0] + add r2, #0x64 + mov r3, #0x10 + bl FUN_02003A64 +_022141B8: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_022141BE: + ldr r0, [r4, #0x48] + add r0, #0xc8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0221424E + ldr r0, [r4, #0x48] + mov r2, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020170F4 + ldr r1, [r4, #0x48] + ldr r3, [r4, #0x10] + add r0, r4, #0 + mov r2, #3 + bl MOD08_02213C94 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _02214208 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #0x48] + mov r1, #1 + add r0, #0xc8 + ldr r0, [r0] + lsl r2, r1, #9 + bl FUN_02003210 + b _02214222 +_02214208: + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + ldr r0, _02214254 ; =0x0000FFFF + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #0x48] + mov r1, #1 + add r0, #0xc8 + ldr r0, [r0] + lsl r2, r1, #9 + bl FUN_02003210 +_02214222: + add r0, r4, #0 + bl MOD08_02213D50 + mov r0, #0x5f + ldr r1, [r4, #0x48] + mov r2, #2 + lsl r0, r0, #2 + strb r2, [r1, r0] + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _0221424E +_0221423A: + ldr r0, [r4, #0x48] + add r0, #0xc8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0221424E + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0221424E: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02214254: .word 0x0000FFFF + + thumb_func_start MOD08_02214258 +MOD08_02214258: ; 0x02214258 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + ldrb r0, [r4, #5] + cmp r0, #3 + bls _02214266 + b _02214462 +_02214266: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02214272: ; jump table + .short _0221427A - _02214272 - 2 ; case 0 + .short _02214286 - _02214272 - 2 ; case 1 + .short _02214300 - _02214272 - 2 ; case 2 + .short _022143F0 - _02214272 - 2 ; case 3 +_0221427A: + add r0, r4, #0 + bl MOD08_02213D50 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02214286: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _022142C2 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #0x48] + mov r1, #1 + add r0, #0xc8 + ldr r0, [r0] + lsl r2, r1, #9 + bl FUN_02003210 + ldr r3, [r4, #0x48] + mov r1, #0 + mov r2, #0x67 + add r0, r3, #0 + str r1, [sp] + lsl r2, r2, #2 + ldr r2, [r3, r2] + add r0, #0xc8 + lsl r2, r2, #0x10 + ldr r0, [r0] + lsr r2, r2, #0x10 + mov r3, #0x10 + bl FUN_02003A64 + b _022142FA +_022142C2: + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _0221448C ; =0x0000FFFF + mov r1, #1 + str r0, [sp, #8] + ldr r0, [r4, #0x48] + lsl r2, r1, #9 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_02003210 + mov r2, #0x67 + ldr r3, [r4, #0x48] + ldr r0, _0221448C ; =0x0000FFFF + lsl r2, r2, #2 + str r0, [sp] + add r0, r3, #0 + ldr r2, [r3, r2] + add r0, #0xc8 + lsl r2, r2, #0x10 + ldr r0, [r0] + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #0x10 + bl FUN_02003A64 +_022142FA: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02214300: + ldr r0, [r4, #0x48] + add r0, #0xc8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + beq _02214310 + b _02214486 +_02214310: + add r0, r4, #0 + add r0, #0x44 + ldrh r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02214324 + ldr r0, [r4, #0x48] + bl MOD08_02214524 +_02214324: + add r0, r4, #0 + add r0, #0x44 + ldrh r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02214338 + ldr r0, [r4, #0x48] + bl MOD08_02214524 +_02214338: + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x48] + bl MOD08_02212004 + cmp r0, #0 + bne _0221436A + ldr r0, [r4, #0x48] + mov r1, #3 + add r0, #0xc4 + ldr r0, [r0] + mov r2, #0 + mov r3, #1 + bl FUN_020170F4 + ldr r0, [r4, #0x48] + mov r1, #3 + bl MOD08_02215638 + ldr r0, [r4, #0x48] + bl MOD08_02215660 + b _022143BE +_0221436A: + ldr r2, [r4, #0x48] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r2] + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + add r2, #0xc4 + ldr r2, [r2] + mov r3, #3 + bl FUN_0200687C + mov r2, #0x66 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r3, [r4, #0x48] + mov r0, #0 + str r0, [sp] + ldr r0, [r3, r2] + sub r1, #0x14 + lsl r0, r0, #5 + str r0, [sp, #4] + sub r0, r2, #4 + ldr r0, [r3, r0] + sub r2, #0xc + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r3, #0 + add r0, #0xc8 + ldr r0, [r0] + ldr r1, [r3, r1] + ldr r2, [r3, r2] + ldr r3, [r3] + bl FUN_020030E8 +_022143BE: + ldr r2, [r4, #0x48] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r2] + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [r2, r1] + add r1, #0xc + ldr r1, [r2, r1] + add r2, #0xc4 + ldr r2, [r2] + mov r3, #3 + bl FUN_020068C8 + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_022143F0: + ldr r0, [r4, #0x48] + mov r2, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x48] + mov r1, #3 + add r0, #0xc4 + ldr r0, [r0] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldrb r0, [r4, #0xd] + ldr r2, [r4, #0x48] + cmp r0, #0 + bne _0221443A + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + mov r5, #0x67 + add r0, r2, #0 + str r3, [sp, #8] + lsl r5, r5, #2 + ldr r2, [r2, r5] + add r0, #0xc8 + lsl r2, r2, #0x10 + ldr r0, [r0] + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02003210 + b _0221445C +_0221443A: + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + mov r5, #0x67 + ldr r0, _0221448C ; =0x0000FFFF + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r2, #0 + lsl r5, r5, #2 + ldr r2, [r2, r5] + add r0, #0xc8 + lsl r2, r2, #0x10 + ldr r0, [r0] + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02003210 +_0221445C: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02214462: + ldr r0, [r4, #0x48] + add r0, #0xc8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02214486 + mov r0, #0x5f + ldr r1, [r4, #0x48] + mov r2, #2 + lsl r0, r0, #2 + strb r2, [r1, r0] + ldrb r0, [r4, #5] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r4, #5] + mov r0, #0 + pop {r3, r4, r5, pc} +_02214486: + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221448C: .word 0x0000FFFF + + thumb_func_start MOD08_02214490 +MOD08_02214490: ; 0x02214490 + push {r3, lr} + add r0, r1, #0 + bl MOD08_02213D50 + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD08_0221449C +MOD08_0221449C: ; 0x0221449C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD08_02213D50 + add r0, r4, #0 + add r0, #0x44 + ldrh r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _022144BA + ldr r0, [r4, #0x48] + bl MOD08_02214524 +_022144BA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022144C0 +MOD08_022144C0: ; 0x022144C0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _022144DA + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_022144DA: + mov r3, #4 + mov r1, #8 + ldrsh r2, [r4, r3] + ldrsh r0, [r4, r1] + add r0, r2, r0 + strh r0, [r4, #4] + mov r0, #6 + ldrsh r2, [r4, r0] + mov r0, #0xa + ldrsh r0, [r4, r0] + add r0, r2, r0 + strh r0, [r4, #6] + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _02214508 + ldr r1, [r4, #0xc] + ldrsh r3, [r4, r3] + lsl r1, r1, #0x18 + ldr r0, [r4] + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_020179E0 +_02214508: + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + beq _02214522 + ldr r1, [r4, #0xc] + mov r3, #6 + lsl r1, r1, #0x18 + ldrsh r3, [r4, r3] + ldr r0, [r4] + lsr r1, r1, #0x18 + mov r2, #3 + bl FUN_020179E0 +_02214522: + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02214524 +MOD08_02214524: ; 0x02214524 + push {r4, lr} + add r4, r0, #0 + bne _0221452E + bl ErrorHandling +_0221452E: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + cmp r1, #0 + beq _0221453C + mov r0, #1 + str r0, [r1, #0x18] +_0221453C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02214540 +MOD08_02214540: ; 0x02214540 + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD08_02214548 +MOD08_02214548: ; 0x02214548 + mov r0, #0 + bx lr + + thumb_func_start MOD08_0221454C +MOD08_0221454C: ; 0x0221454C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x48] + mov r1, #0x20 + ldr r0, [r0] + bl FUN_02016998 + add r4, r0, #0 + ldr r0, [r5, #0x48] + mov r2, #6 + add r0, #0xc4 + ldr r0, [r0] + str r0, [r4] + ldr r0, [r5, #0x48] + add r0, #0x9c + ldr r0, [r0] + strh r0, [r4, #4] + ldr r0, [r5, #0x48] + add r0, #0xa0 + ldr r0, [r0] + strh r0, [r4, #6] + ldr r0, [r5, #0x48] + add r0, #0x94 + ldr r0, [r0] + strh r0, [r4, #8] + ldr r0, [r5, #0x48] + add r0, #0x98 + ldr r0, [r0] + strh r0, [r4, #0xa] + mov r0, #3 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + ldr r1, [r5, #0x48] + add r0, r5, #0 + bl MOD08_02213C40 + cmp r0, #1 + bne _022145C0 + mov r0, #8 + ldrsh r1, [r4, r0] + sub r0, #9 + mul r0, r1 + strh r0, [r4, #8] + mov r0, #0xa + ldrsh r1, [r4, r0] + sub r0, #0xb + mul r0, r1 + strh r0, [r4, #0xa] + mov r0, #4 + ldrsh r1, [r4, r0] + sub r0, r0, #5 + mul r0, r1 + strh r0, [r4, #4] + mov r0, #6 + ldrsh r1, [r4, r0] + sub r0, r0, #7 + mul r0, r1 + strh r0, [r4, #6] +_022145C0: + mov r0, #1 + str r0, [r4, #0x14] + mov r1, #0 + str r1, [r4, #0x18] + mov r1, #6 + ldr r2, [r5, #0x48] + lsl r1, r1, #6 + str r4, [r2, r1] + add r1, r5, #0 + add r1, #0x44 + ldrh r2, [r1] + mov r1, #1 + add r5, #0x44 + bic r2, r1 + orr r0, r2 + strh r0, [r5] + ldr r0, _022145F0 ; =MOD08_022144C0 + ldr r2, _022145F4 ; =0x00001001 + add r1, r4, #0 + bl FUN_0200CA44 + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022145F0: .word MOD08_022144C0 +_022145F4: .word 0x00001001 + + thumb_func_start MOD08_022145F8 +MOD08_022145F8: ; 0x022145F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r4, [r0, #0x48] + str r0, [sp] + ldr r0, [r4] + mov r1, #0x20 + bl FUN_02016998 + add r6, r0, #0 + ldr r0, [r4] + mov r1, #0xc4 + bl FUN_02016998 + str r0, [r6, #0x1c] + mov r0, #6 + lsl r0, r0, #6 + str r6, [r4, r0] + ldr r0, [sp] + mov r1, #2 + add r0, #0x44 + ldrh r0, [r0] + add r2, r0, #0 + ldr r0, [sp] + orr r2, r1 + add r0, #0x44 + strh r2, [r0] + mov r0, #0 + str r0, [r6, #0x18] + add r0, r4, #0 + bl MOD08_022155C4 + bl MOD08_022189A0 + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl MOD08_02218998 + add r1, r0, #0 + ldr r2, [r4] + add r0, r5, #0 + bl MOD08_022187F4 + mov r4, #0 + ldr r1, [r6, #0x1c] + ldr r7, _022146C8 ; =0x0222AAF8 + add r1, #0xc0 + str r0, [r1] + str r4, [sp, #4] + add r5, r4, #0 +_0221465C: + ldr r0, [r6, #0x1c] + strh r4, [r0, r5] + ldr r0, [r6, #0x1c] + add r1, r0, r5 + ldrsh r0, [r0, r5] + add r0, #8 + strh r0, [r1, #2] + mov r0, #0 + ldrsh r1, [r7, r0] + ldr r0, [r6, #0x1c] + add r0, r0, r5 + strh r1, [r0, #4] + ldr r0, [r6, #0x1c] + add r1, r0, r5 + mov r0, #0 + strh r0, [r1, #6] + add r1, r0, #0 + bl MOD08_02218998 + ldr r1, [r6, #0x1c] + mov r2, #6 + add r1, r1, r5 + str r0, [r1, #8] + ldr r0, [sp] + add r1, r0, #0 + ldr r1, [r1, #0x48] + bl MOD08_02213C40 + cmp r0, #1 + bne _022146A6 + ldr r0, [r6, #0x1c] + mov r1, #4 + add r0, r0, r5 + ldrsh r2, [r0, r1] + sub r1, r1, #5 + mul r1, r2 + strh r1, [r0, #4] +_022146A6: + ldr r0, [sp, #4] + add r4, #8 + add r0, r0, #1 + add r5, #0xc + add r7, r7, #2 + str r0, [sp, #4] + cmp r0, #0x10 + blt _0221465C + mov r2, #1 + ldr r0, _022146CC ; =MOD08_022146E4 + add r1, r6, #0 + lsl r2, r2, #0xc + bl FUN_0200CA44 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022146C8: .word 0x0222AAF8 +_022146CC: .word MOD08_022146E4 + + thumb_func_start MOD08_022146D0 +MOD08_022146D0: ; 0x022146D0 + add r1, r0, #0 + add r1, #0x44 + ldrh r2, [r1] + mov r1, #2 + add r0, #0x44 + orr r1, r2 + strh r1, [r0] + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022146E4 +MOD08_022146E4: ; 0x022146E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x18] + ldr r4, [r5, #0x1c] + cmp r0, #1 + bne _02214712 + add r4, #0xc0 + ldr r0, [r4] + bl MOD08_02218870 + ldr r0, [r5, #0x1c] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02214712: + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl MOD08_02218894 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] +_02214722: + mov r0, #6 + ldrsh r1, [r4, r0] + mov r0, #4 + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #6] + mov r0, #0 + ldrsh r6, [r4, r0] + mov r0, #2 + ldrsh r0, [r4, r0] + cmp r6, r0 + bge _0221476A + ldr r0, [sp] + lsl r1, r6, #2 + add r5, r0, r1 + mov r7, #2 +_02214742: + ldr r1, [r4, #8] + mov r2, #6 + lsl r0, r1, #0x10 + asr r1, r1, #0x10 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + lsl r1, r1, #0x10 + ldrsh r2, [r4, r2] + asr r0, r0, #0x10 + lsr r1, r1, #0x10 + add r0, r0, r2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD08_02218998 + stmia r5!, {r0} + ldrsh r0, [r4, r7] + add r6, r6, #1 + cmp r6, r0 + blt _02214742 +_0221476A: + ldr r0, [sp, #4] + add r4, #0xc + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #0x10 + blt _02214722 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0221477C +MOD08_0221477C: ; 0x0221477C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + bl MOD08_02215600 + add r1, r0, #0 + lsl r0, r4, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0 + bl FUN_0201797C + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _022147C0 + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020170F4 + b _022147E4 +_022147C0: + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + mov r2, #0 + mov r3, #1 + bl FUN_020170F4 + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020170F4 +_022147E4: + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_02018744 + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02214822 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x61 + add r2, r5, #0 + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r1, #4 + add r2, #0xc4 + ldr r1, [r5, r1] + ldr r2, [r2] + add r3, r4, #0 + bl FUN_0200687C + b _0221482A +_02214822: + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02215638 +_0221482A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, #0xc + ldr r1, [r5, r1] + add r5, #0xc4 + ldr r2, [r5] + add r3, r4, #0 + bl FUN_020068C8 + add sp, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02214850 +MOD08_02214850: ; 0x02214850 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + bl MOD08_02215600 + add r1, r0, #0 + lsl r0, r4, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02214888 + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #3 + bl FUN_020170F4 + b _022148AC +_02214888: + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + mov r2, #0 + ldr r0, [r0] + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020170F4 + add r0, r5, #0 + add r0, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #3 + bl FUN_020170F4 +_022148AC: + add r5, #0xc4 + lsl r1, r4, #0x18 + ldr r0, [r5] + lsr r1, r1, #0x18 + bl FUN_02018744 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022148BC +MOD08_022148BC: ; 0x022148BC + add r1, r0, #0 + add r1, #0x44 + ldrh r2, [r1] + mov r1, #1 + add r0, #0x44 + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022148D4 +MOD08_022148D4: ; 0x022148D4 + push {r3, lr} + ldr r0, [r0, #0x48] + bl MOD08_02214524 + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD08_022148E0 +MOD08_022148E0: ; 0x022148E0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4, #0x14] + add r5, r0, #0 + lsl r3, r2, #2 + ldr r2, _0221490C ; =0x0222AA64 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + bne _0221490A + mov r0, #0x5f + ldr r1, [r4, #0x48] + mov r2, #0 + lsl r0, r0, #2 + strb r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0221490A: + pop {r3, r4, r5, pc} + .align 2, 0 +_0221490C: .word 0x0222AA64 + + thumb_func_start MOD08_02214910 +MOD08_02214910: ; 0x02214910 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_02213DA8 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strb r0, [r4, #0xd] + ldr r0, [r5, #0x18] + ldr r2, _02214954 ; =0x0000044C + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + str r0, [r4, #0x10] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [r4, #0x14] + ldr r0, _02214958 ; =0xFFFF0000 + and r0, r1 + lsr r0, r0, #0x10 + str r0, [r4, #0x18] + ldr r0, _0221495C ; =MOD08_022148E0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_02214954: .word 0x0000044C +_02214958: .word 0xFFFF0000 +_0221495C: .word MOD08_022148E0 + + thumb_func_start MOD08_02214960 +MOD08_02214960: ; 0x02214960 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r2, r1, #4 + str r2, [r0, #0x18] + ldr r1, [r2] + add r2, r2, #4 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + str r2, [r0, #0x18] + cmp r3, #3 + bhi _022149B4 + add r2, r3, r3 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02214986: ; jump table + .short _0221498E - _02214986 - 2 ; case 0 + .short _02214998 - _02214986 - 2 ; case 1 + .short _022149A2 - _02214986 - 2 ; case 2 + .short _022149AC - _02214986 - 2 ; case 3 +_0221498E: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r0, r2] + strh r1, [r0, #8] + bx lr +_02214998: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r0, r2] + strh r1, [r0, #0xa] + bx lr +_022149A2: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r0, r2] + strh r1, [r0, #4] + bx lr +_022149AC: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r0, r2] + strh r1, [r0, #4] +_022149B4: + bx lr + .align 2, 0 + + thumb_func_start MOD08_022149B8 +MOD08_022149B8: ; 0x022149B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_02213DA8 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strb r0, [r4, #0xd] + ldr r0, [r5, #0x18] + ldr r2, _02214A00 ; =0x0000044C + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + str r0, [r4, #0x10] + ldr r0, [r5, #0x18] + add r1, r0, #4 + str r1, [r5, #0x18] + ldr r0, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + lsl r1, r0, #0x10 + lsr r1, r1, #0x10 + add r1, r1, #3 + str r1, [r4, #0x14] + ldr r1, _02214A04 ; =0xFFFF0000 + and r0, r1 + lsr r0, r0, #0x10 + str r0, [r4, #0x18] + ldr r0, _02214A08 ; =MOD08_022148E0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_02214A00: .word 0x0000044C +_02214A04: .word 0xFFFF0000 +_02214A08: .word MOD08_022148E0 + + thumb_func_start MOD08_02214A0C +MOD08_02214A0C: ; 0x02214A0C + mov r1, #0x5f + lsl r1, r1, #2 + ldrb r1, [r0, r1] + cmp r1, #2 + bne _02214A24 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + mov r1, #0 + add r0, #0x8d + strb r1, [r0] + bx lr +_02214A24: + mov r1, #1 + add r0, #0x8d + strb r1, [r0] + bx lr + + thumb_func_start MOD08_02214A2C +MOD08_02214A2C: ; 0x02214A2C + mov r1, #0x5f + lsl r1, r1, #2 + ldrb r1, [r0, r1] + cmp r1, #0 + bne _02214A44 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + mov r1, #0 + add r0, #0x8d + strb r1, [r0] + bx lr +_02214A44: + mov r1, #1 + add r0, #0x8d + strb r1, [r0] + bx lr + + thumb_func_start MOD08_02214A4C +MOD08_02214A4C: ; 0x02214A4C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x18] + mov r1, #0 + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r4, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r4, #0 + bl MOD08_022156AC + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5] + add r2, r5, #0 + str r0, [sp, #0xc] + add r2, #0xc4 + ldr r2, [r2] + mov r0, #7 + mov r3, #3 + bl FUN_0200687C + add r0, r4, #0 + mov r1, #1 + bl MOD08_022156AC + mov r2, #0 + str r2, [sp] + add r1, r0, #0 + ldr r0, [r5] + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #7 + bl FUN_02006930 + add r0, r4, #0 + mov r1, #2 + bl MOD08_022156AC + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5] + add r5, #0xc4 + str r0, [sp, #0xc] + ldr r2, [r5] + mov r0, #7 + mov r3, #3 + bl FUN_020068C8 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02214AC8 +MOD08_02214AC8: ; 0x02214AC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD08_02213DA8 + add r4, r0, #0 + ldr r0, [r5, #0x18] + add r1, r0, #4 + str r1, [r5, #0x18] + ldr r0, [r1] + str r0, [sp] + add r0, r1, #4 + str r0, [r5, #0x18] + ldr r7, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r6, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02214AFA + str r6, [r4, #0x10] + b _02214B12 +_02214AFA: + add r0, r5, #0 + add r5, #0xc0 + ldr r1, [r5] + ldrh r1, [r1, #0x16] + bl MOD08_02227470 + cmp r0, #3 + bne _02214B0E + str r7, [r4, #0x10] + b _02214B12 +_02214B0E: + ldr r0, [sp] + str r0, [r4, #0x10] +_02214B12: + ldr r0, _02214B20 ; =MOD08_022148E0 + ldr r2, _02214B24 ; =0x0000044C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214B20: .word MOD08_022148E0 +_02214B24: .word 0x0000044C + + thumb_func_start MOD08_02214B28 +MOD08_02214B28: ; 0x02214B28 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214B2C +MOD08_02214B2C: ; 0x02214B2C + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214B30 +MOD08_02214B30: ; 0x02214B30 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214B34 +MOD08_02214B34: ; 0x02214B34 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214B38 +MOD08_02214B38: ; 0x02214B38 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214B3C +MOD08_02214B3C: ; 0x02214B3C + ldr r1, [r0, #0x18] + ldr r3, _02214B50 ; =0x020054C9 + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx r3 + .align 2, 0 +_02214B50: .word 0x020054C9 + + thumb_func_start MOD08_02214B54 +MOD08_02214B54: ; 0x02214B54 + ldr r1, [r0, #0x18] + ldr r3, _02214B6C ; =0x020054F1 + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + mov r1, #0 + bx r3 + nop +_02214B6C: .word 0x020054F1 + + thumb_func_start MOD08_02214B70 +MOD08_02214B70: ; 0x02214B70 + push {r3, r4, r5, lr} + ldr r1, [r0, #0x18] + add r2, r1, #4 + str r2, [r0, #0x18] + ldr r1, [r2] + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + add r1, r2, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + lsl r1, r2, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020054C8 + ldr r1, _02214BA4 ; =0x0000FFFF + add r0, r4, #0 + add r2, r5, #0 + bl FUN_02005530 + pop {r3, r4, r5, pc} + .align 2, 0 +_02214BA4: .word 0x0000FFFF + + thumb_func_start MOD08_02214BA8 +MOD08_02214BA8: ; 0x02214BA8 + push {r3, lr} + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + lsl r1, r2, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + bl FUN_0200554C + pop {r3, pc} + + thumb_func_start MOD08_02214BC4 +MOD08_02214BC4: ; 0x02214BC4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_0221252C + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #1 + strb r0, [r4] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strh r0, [r4, #0x1a] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + str r0, [r4, #8] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + str r0, [r4, #0xc] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + str r0, [r4, #0x10] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strb r0, [r4, #3] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r4, #8] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x10] + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + asr r0, r0, #0x18 + asr r1, r1, #0x18 + asr r2, r2, #0x18 + bl MOD08_0221540C + str r0, [r4, #0x10] + ldrh r0, [r4, #0x1a] + bl FUN_020054C8 + ldrh r0, [r4, #0x1a] + ldr r1, _02214C60 ; =0x0000FFFF + ldr r2, [r4, #8] + bl FUN_02005530 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_0221255C + pop {r3, r4, r5, pc} + .align 2, 0 +_02214C60: .word 0x0000FFFF + + thumb_func_start MOD08_02214C64 +MOD08_02214C64: ; 0x02214C64 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_0221252C + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #2 + strb r0, [r4] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strh r0, [r4, #0x1a] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #8] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #0xc] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #0x10] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strb r0, [r4, #3] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldrh r0, [r4, #0x1a] + bl FUN_020054C8 + ldrh r0, [r4, #0x1a] + ldr r1, _02214CD8 ; =0x0000FFFF + ldr r2, [r4, #8] + bl FUN_02005530 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_0221255C + pop {r3, r4, r5, pc} + .align 2, 0 +_02214CD8: .word 0x0000FFFF + + thumb_func_start MOD08_02214CDC +MOD08_02214CDC: ; 0x02214CDC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_0221252C + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #1 + strb r0, [r4] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strh r0, [r4, #0x1a] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #8] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #0xc] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #0x10] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strb r0, [r4, #3] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r4, #8] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #0x10] + ldrh r0, [r4, #0x1a] + bl FUN_020054C8 + ldrh r0, [r4, #0x1a] + ldr r1, _02214D7C ; =0x0000FFFF + ldr r2, [r4, #8] + bl FUN_02005530 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_0221255C + pop {r3, r4, r5, pc} + nop +_02214D7C: .word 0x0000FFFF + + thumb_func_start MOD08_02214D80 +MOD08_02214D80: ; 0x02214D80 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_0221252C + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #4 + strb r0, [r4] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strh r0, [r4, #0x1a] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #0x14] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strb r0, [r4, #3] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strb r0, [r4, #0x18] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldrb r0, [r4, #3] + strb r0, [r4, #4] + ldr r1, [r4, #0x14] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #0x14] + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_0221255C + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02214DE4 +MOD08_02214DE4: ; 0x02214DE4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_0221252C + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #5 + strb r0, [r4] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strh r0, [r4, #0x1a] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [r4, #0x14] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r0, [r0] + strb r0, [r4, #3] + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r4, #0x14] + add r0, r5, #0 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + str r0, [r4, #0x14] + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_0221255C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02214E3C +MOD08_02214E3C: ; 0x02214E3C + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214E40 +MOD08_02214E40: ; 0x02214E40 + push {r4, lr} + add r4, r0, #0 + add r0, #0x90 + ldrh r0, [r0] + cmp r0, #0 + beq _02214E5C + add r0, r4, #0 + mov r1, #1 + add r0, #0x8d + strb r1, [r0] + ldr r0, _02214E94 ; =0x0000017D + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} +_02214E5C: + bl FUN_02005514 + cmp r0, #0 + beq _02214E80 + ldr r0, _02214E94 ; =0x0000017D + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r1, [r4, r0] + cmp r1, #0x5a + bls _02214E78 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} +_02214E78: + mov r0, #1 + add r4, #0x8d + strb r0, [r4] + pop {r4, pc} +_02214E80: + add r0, r4, #0 + mov r1, #0 + add r0, #0x8d + strb r1, [r0] + ldr r0, _02214E94 ; =0x0000017D + strb r1, [r4, r0] + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 +_02214E94: .word 0x0000017D + + thumb_func_start MOD08_02214E98 +MOD08_02214E98: ; 0x02214E98 + push {r3, lr} + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + str r1, [r0, #0x18] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + lsl r3, r3, #0x10 + ldr r0, _02214EC4 ; =0x04001050 + mov r1, #1 + mov r2, #2 + lsr r3, r3, #0x10 + bl G2x_SetBlendAlpha_ + pop {r3, pc} + nop +_02214EC4: .word 0x04001050 + + thumb_func_start MOD08_02214EC8 +MOD08_02214EC8: ; 0x02214EC8 + ldr r3, _02214ECC ; =MOD08_0221268C + bx r3 + .align 2, 0 +_02214ECC: .word MOD08_0221268C + + thumb_func_start MOD08_02214ED0 +MOD08_02214ED0: ; 0x02214ED0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02214ED4 +MOD08_02214ED4: ; 0x02214ED4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r6, r5, #0 + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r7, [r0] + add r0, r0, #4 + lsl r4, r1, #2 + add r6, #0xcc + str r0, [r5, #0x18] + ldr r0, [r6, r4] + cmp r0, #0 + beq _02214EFC + bl ErrorHandling +_02214EFC: + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200BB34 + str r0, [r6, r4] + ldr r0, [r6, r4] + cmp r0, #0 + bne _02214F16 + bl ErrorHandling +_02214F16: + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, [r6, r4] + add r0, #0xac + ldr r0, [r0] + add r2, r7, #0 + bl FUN_0200BBF0 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + add r0, r5, #0 + mov r1, #0 + add r2, sp, #0 + add r0, #0x18 +_02214F48: + ldr r3, [r5, #0x18] + add r1, r1, #1 + ldr r3, [r3] + str r3, [r2] + ldr r3, [r0] + add r2, r2, #4 + add r3, r3, #4 + str r3, [r0] + cmp r1, #6 + blt _02214F48 + add r5, #0xc0 + ldr r0, [r5] + ldr r1, [r6, r4] + add r0, #0xac + ldr r0, [r0] + add r2, sp, #0 + bl FUN_0200BF60 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02214F70 +MOD08_02214F70: ; 0x02214F70 + push {lr} + sub sp, #0xc + add r2, r0, #0 + ldr r0, [r2, #0x18] + add r0, r0, #4 + str r0, [r2, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r2, #0x18] + ldr r3, [r0] + add r0, r0, #4 + str r0, [r2, #0x18] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02214FB0 ; =0x00001388 + lsl r1, r1, #2 + add r0, r3, r0 + str r0, [sp, #8] + add r0, r2, #0 + add r1, r2, r1 + add r0, #0xc0 + ldr r0, [r0] + add r1, #0xcc + add r0, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x15 + bl FUN_0200C00C + add sp, #0xc + pop {pc} + .align 2, 0 +_02214FB0: .word 0x00001388 + + thumb_func_start MOD08_02214FB4 +MOD08_02214FB4: ; 0x02214FB4 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #0x18] + add r0, r0, #4 + str r0, [r4, #0x18] + ldr r3, [r0] + add r0, r0, #4 + str r0, [r4, #0x18] + ldr r1, [r0] + add r2, r0, #4 + str r2, [r4, #0x18] + ldr r0, [r2] + add r2, r2, #4 + str r2, [r4, #0x18] + mov r2, #0x16 + str r2, [sp] + str r1, [sp, #4] + mov r2, #0 + str r2, [sp, #8] + mov r2, #1 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0221500C ; =0x00001388 + add r2, r4, #0 + add r0, r1, r0 + str r0, [sp, #0x14] + add r2, #0xc0 + ldr r2, [r2] + lsl r3, r3, #2 + add r0, r4, #0 + add r3, r4, r3 + add r0, #0xc8 + add r2, #0xac + add r3, #0xcc + ldr r0, [r0] + ldr r2, [r2] + ldr r3, [r3] + mov r1, #2 + bl FUN_0200C0DC + add sp, #0x18 + pop {r4, pc} + nop +_0221500C: .word 0x00001388 + + thumb_func_start MOD08_02215010 +MOD08_02215010: ; 0x02215010 + push {r3, lr} + sub sp, #8 + add r2, r0, #0 + ldr r0, [r2, #0x18] + add r0, r0, #4 + str r0, [r2, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r2, #0x18] + ldr r3, [r0] + add r0, r0, #4 + str r0, [r2, #0x18] + mov r0, #1 + str r0, [sp] + ldr r0, _02215050 ; =0x00001388 + lsl r1, r1, #2 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r2, #0 + add r1, r2, r1 + add r0, #0xc0 + ldr r0, [r0] + add r1, #0xcc + add r0, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x17 + bl FUN_0200C124 + add sp, #8 + pop {r3, pc} + nop +_02215050: .word 0x00001388 + + thumb_func_start MOD08_02215054 +MOD08_02215054: ; 0x02215054 + push {r3, lr} + sub sp, #8 + add r2, r0, #0 + ldr r0, [r2, #0x18] + add r0, r0, #4 + str r0, [r2, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r2, #0x18] + ldr r3, [r0] + add r0, r0, #4 + str r0, [r2, #0x18] + mov r0, #1 + str r0, [sp] + ldr r0, _02215094 ; =0x00001388 + lsl r1, r1, #2 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r2, #0 + add r1, r2, r1 + add r0, #0xc0 + ldr r0, [r0] + add r1, #0xcc + add r0, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x18 + bl FUN_0200C13C + add sp, #8 + pop {r3, pc} + nop +_02215094: .word 0x00001388 + + thumb_func_start MOD08_02215098 +MOD08_02215098: ; 0x02215098 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + ldr r1, [r4, #0x18] + add r1, r1, #4 + str r1, [r4, #0x18] + ldr r5, [r1] + add r2, r1, #4 + str r2, [r4, #0x18] + ldr r1, [r2] + str r1, [sp] + add r1, r2, #4 + str r1, [r4, #0x18] + bl MOD08_02212460 + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD08_02217B98 + add r1, sp, #0xc + strh r0, [r1] + add r0, r4, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD08_02217B98 + add r2, sp, #0xc + strh r0, [r2, #2] + mov r1, #0 + strh r1, [r2, #4] + strh r1, [r2, #6] + mov r0, #0x64 + str r0, [sp, #0x14] + mov r0, #1 + str r0, [sp, #0x1c] + str r0, [sp, #0x38] + add r0, r4, #0 + ldr r3, _022151A0 ; =0x00001388 + str r1, [sp, #0x18] + str r1, [sp, #0x3c] + add r2, sp, #0xc + add r0, #0x18 +_022150F0: + ldr r6, [r4, #0x18] + add r1, r1, #1 + ldr r6, [r6] + add r6, r6, r3 + str r6, [r2, #0x14] + ldr r6, [r0] + add r2, r2, #4 + add r6, r6, #4 + str r6, [r0] + cmp r1, #6 + blt _022150F0 + mov r0, #0x41 + lsl r0, r0, #2 + add r3, sp, #0xc + add r2, r4, r0 + mov r6, #6 +_02215110: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r6, r6, #1 + bne _02215110 + ldr r0, [r3] + lsl r7, r5, #2 + str r0, [r2] + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0xcc + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, [sp, #8] + add r0, #0xac + ldr r0, [r0] + ldr r1, [r1, r7] + add r2, sp, #0xc + bl FUN_0200C154 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + add r2, r4, #0 + ldr r3, [r0] + add r0, r0, #4 + add r2, #0x18 + mov r6, #0 + str r0, [r4, #0x18] + cmp r3, #0 + ble _02215168 + add r5, r4, #0 +_02215150: + ldr r0, [r4, #0x18] + add r6, r6, #1 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0x94 + str r1, [r0] + ldr r0, [r2] + add r5, r5, #4 + add r0, r0, #4 + str r0, [r2] + cmp r6, r3 + blt _02215150 +_02215168: + cmp r6, #0xa + bge _02215180 + lsl r0, r6, #2 + add r2, r4, r0 + mov r1, #0 +_02215172: + add r0, r2, #0 + add r0, #0x94 + add r6, r6, #1 + add r2, r2, #4 + str r1, [r0] + cmp r6, #0xa + blt _02215172 +_02215180: + ldr r0, [sp] + bl MOD08_02218C5C + add r5, r0, #0 + add r0, r4, #0 + add r4, #0xc0 + ldr r1, [r4] + ldr r2, [sp, #8] + add r1, #0xac + ldr r1, [r1] + ldr r2, [r2, r7] + ldr r3, [sp, #4] + blx r5 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_022151A0: .word 0x00001388 + + thumb_func_start MOD08_022151A4 +MOD08_022151A4: ; 0x022151A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r4, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r7, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + bl MOD08_02212460 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD08_02217B98 + add r1, sp, #0 + strh r0, [r1] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD08_02217B98 + add r2, sp, #0 + strh r0, [r2, #2] + mov r1, #0 + strh r1, [r2, #4] + strh r1, [r2, #6] + mov r0, #0x64 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0x10] + str r0, [sp, #0x2c] + add r0, r5, #0 + ldr r3, _02215254 ; =0x00001388 + str r1, [sp, #0xc] + str r1, [sp, #0x30] + add r2, sp, #0 + add r0, #0x18 +_022151FA: + ldr r6, [r5, #0x18] + add r1, r1, #1 + ldr r6, [r6] + add r6, r6, r3 + str r6, [r2, #0x14] + ldr r6, [r0] + add r2, r2, #4 + add r6, r6, #4 + str r6, [r0] + cmp r1, #6 + blt _022151FA + mov r0, #0x41 + lsl r0, r0, #2 + add r6, sp, #0 + add r3, r5, r0 + mov r2, #6 +_0221521A: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0221521A + ldr r0, [r6] + lsl r1, r4, #2 + str r0, [r3] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + add r1, r5, r1 + add r0, #0xac + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + add r2, sp, #0 + bl FUN_0200C154 + add r5, #0xdc + lsl r4, r7, #2 + add r6, r0, #0 + ldr r0, [r5, r4] + cmp r0, #0 + beq _0221524E + bl ErrorHandling +_0221524E: + str r6, [r5, r4] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02215254: .word 0x00001388 + + thumb_func_start MOD08_02215258 +MOD08_02215258: ; 0x02215258 + push {r3, r4, r5, lr} + ldr r1, [r0, #0x18] + add r5, r0, #0 + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r2, [r1] + add r1, r1, #4 + add r5, #0xcc + lsl r4, r2, #2 + str r1, [r0, #0x18] + ldr r1, [r5, r4] + cmp r1, #0 + beq _0221527E + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xac + ldr r0, [r0] + bl FUN_0200C398 +_0221527E: + mov r0, #0 + str r0, [r5, r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02215284 +MOD08_02215284: ; 0x02215284 + ldr r1, [r0, #0x18] + add r1, r1, #4 + str r1, [r0, #0x18] + ldr r3, [r1] + add r2, r1, #4 + str r2, [r0, #0x18] + ldr r1, [r2] + add r2, r2, #4 + str r2, [r0, #0x18] + lsl r2, r3, #2 + add r2, r0, r2 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r3, _022152A4 ; =0x0200C645 + ldr r0, [r2, r0] + bx r3 + .align 2, 0 +_022152A4: .word 0x0200C645 + + thumb_func_start MOD08_022152A8 +MOD08_022152A8: ; 0x022152A8 + ldr r3, _022152AC ; =0x02020C2D + bx r3 + .align 2, 0 +_022152AC: .word 0x02020C2D + + thumb_func_start MOD08_022152B0 +MOD08_022152B0: ; 0x022152B0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x18] + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r4, [r1] + add r1, r1, #4 + str r1, [r5, #0x18] + ldr r1, [r1] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 + bl MOD08_02215354 + add r3, r0, #0 + ldr r0, [r5, #0x18] + add r0, r0, #4 + str r0, [r5, #0x18] + ldr r1, [r0] + add r0, r0, #4 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + str r1, [sp] + ldr r1, [r2, r0] + sub r0, #0xc + str r1, [sp, #4] + ldr r1, [r5] + str r1, [sp, #8] + add r1, r4, #0 + ldrh r4, [r2, #0x14] + ldr r0, [r2, r0] + lsl r4, r4, #1 + add r2, r2, r4 + add r2, #0xd8 + ldrh r2, [r2] + bl FUN_02069FB0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221530C +MOD08_0221530C: ; 0x0221530C + push {r4, lr} + add r4, r0, #0 + bl FUN_02005670 + cmp r0, #0 + bne _02215330 + ldr r0, [r4, #0x18] + add r1, r0, #4 + str r1, [r4, #0x18] + ldr r0, [r1] + add r1, r1, #4 + str r1, [r4, #0x18] + mov r1, #0 + add r4, #0x8d + strb r1, [r4] + bl FUN_02005614 + pop {r4, pc} +_02215330: + mov r0, #1 + add r4, #0x8d + strb r0, [r4] + pop {r4, pc} + + thumb_func_start MOD08_02215338 +MOD08_02215338: ; 0x02215338 + bx lr + .align 2, 0 + + thumb_func_start MOD08_0221533C +MOD08_0221533C: ; 0x0221533C + cmp r0, #0x55 + bls _02215344 + mov r0, #0 + bx lr +_02215344: + lsl r1, r0, #2 + ldr r0, _0221534C ; =0x0222AC6C + ldr r0, [r0, r1] + bx lr + .align 2, 0 +_0221534C: .word 0x0222AC6C + + thumb_func_start MOD08_02215350 +MOD08_02215350: ; 0x02215350 + ldrb r0, [r0, #1] + bx lr + + thumb_func_start MOD08_02215354 +MOD08_02215354: ; 0x02215354 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_02212458 + add r7, r0, #0 + add r0, r5, #0 + bl MOD08_02212460 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_02227470 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227470 + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _02215390 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #4 + beq _022153F6 +_02215390: + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _022153B0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _022153B0 + mov r0, #0 + mvn r0, r0 + mul r4, r0 + b _022153F6 +_022153B0: + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _022153D4 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _022153D4 + cmp r4, #0 + ble _022153F6 + mov r0, #0 + mvn r0, r0 + mul r4, r0 + b _022153F6 +_022153D4: + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _022153F6 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _022153F6 + cmp r4, #0 + bge _022153F6 + mov r0, #0 + mvn r0, r0 + mul r4, r0 +_022153F6: + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02215406 + mov r0, #0 + mvn r0, r0 + mul r4, r0 +_02215406: + lsl r0, r4, #0x18 + asr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0221540C +MOD08_0221540C: ; 0x0221540C + push {r3, lr} + cmp r0, r1 + bge _0221541E + add r0, r2, #0 + bl abs + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + pop {r3, pc} +_0221541E: + cmp r0, r1 + ble _02215430 + add r0, r2, #0 + bl abs + neg r0, r0 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + pop {r3, pc} +_02215430: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD08_02215434 +MOD08_02215434: ; 0x02215434 + push {r3, r4, r5, lr} + ldr r4, [r0, #0x18] + add r3, r0, #0 + add r4, r4, #4 + str r4, [r0, #0x18] + ldr r5, [r4] + add r4, r4, #4 + add r3, #0x18 + str r4, [r0, #0x18] + cmp r5, r2 + beq _02215456 + cmp r5, r2 + beq _02215452 + bl ErrorHandling +_02215452: + mov r0, #0 + pop {r3, r4, r5, pc} +_02215456: + mov r4, #0 + cmp r2, #0 + ble _02215470 +_0221545C: + ldr r5, [r0, #0x18] + add r4, r4, #1 + ldr r5, [r5] + str r5, [r1] + ldr r5, [r3] + add r1, r1, #4 + add r5, r5, #4 + str r5, [r3] + cmp r4, r2 + blt _0221545C +_02215470: + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02215474 +MOD08_02215474: ; 0x02215474 + push {r3, r4} + add r4, r0, #0 + mov r0, #0x41 + lsl r0, r0, #2 + add r3, r1, r0 + mov r2, #6 +_02215480: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _02215480 + ldr r0, [r3] + str r0, [r4] + pop {r3, r4} + bx lr + + thumb_func_start MOD08_02215490 +MOD08_02215490: ; 0x02215490 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r1 + add r0, #0xc0 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD08_0221549C +MOD08_0221549C: ; 0x0221549C + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r1 + add r0, #0xe0 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD08_022154A8 +MOD08_022154A8: ; 0x022154A8 + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #1 + add r0, r2, r0 + add r0, #0xd8 + ldrh r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_022154B8 +MOD08_022154B8: ; 0x022154B8 + add r0, #0xc0 + ldr r0, [r0] + add r0, r0, r1 + add r0, #0xe8 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD08_022154C4 +MOD08_022154C4: ; 0x022154C4 + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + add r0, #0xec + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_022154D4 +MOD08_022154D4: ; 0x022154D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r4, r1, #2 + add r0, r0, r4 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + bne _022154EC + mov r0, #0 + pop {r3, r4, r5, pc} +_022154EC: + bl FUN_02008268 + cmp r0, #0 + beq _02215500 + add r5, #0xc0 + ldr r0, [r5] + add r0, r0, r4 + add r0, #0xc4 + ldr r0, [r0] + pop {r3, r4, r5, pc} +_02215500: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02215504 +MOD08_02215504: ; 0x02215504 + add r0, #0xc8 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_0221550C +MOD08_0221550C: ; 0x0221550C + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + add r0, #0xb0 + ldr r0, [r0] + ldr r0, [r0, #8] + bx lr + + thumb_func_start MOD08_0221551C +MOD08_0221551C: ; 0x0221551C + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + add r0, #0xb0 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD08_0221552C +MOD08_0221552C: ; 0x0221552C + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + add r0, #0xb0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start MOD08_0221553C +MOD08_0221553C: ; 0x0221553C + add r0, #0xc0 + ldr r0, [r0] + add r0, #0xd4 + ldr r1, [r0] + mov r0, #2 + tst r0, r1 + beq _0221554E + mov r0, #1 + bx lr +_0221554E: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02215554 +MOD08_02215554: ; 0x02215554 + add r0, #0xc0 + ldr r2, [r0] + lsl r0, r1, #2 + add r0, r2, r0 + add r0, #0xfc + ldr r1, [r0] + ldr r0, _02215570 ; =0x200400C0 + tst r0, r1 + beq _0221556A + mov r0, #1 + bx lr +_0221556A: + mov r0, #0 + bx lr + nop +_02215570: .word 0x200400C0 + + thumb_func_start MOD08_02215574 +MOD08_02215574: ; 0x02215574 + push {r3, lr} + bl MOD08_02212004 + cmp r0, #1 + bne _02215582 + mov r0, #2 + pop {r3, pc} +_02215582: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02215588 +MOD08_02215588: ; 0x02215588 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _022155C0 ; =0x0222AAAC + add r2, sp, #0 + add r5, r0, #0 + add r4, r1, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _022155B4 + add r0, sp, #0xc + lsl r1, r4, #2 + add sp, #0x18 + ldr r0, [r0, r1] + pop {r3, r4, r5, pc} +_022155B4: + lsl r1, r4, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_022155C0: .word 0x0222AAAC + + thumb_func_start MOD08_022155C4 +MOD08_022155C4: ; 0x022155C4 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _022155FC ; =0x0222AA94 + add r2, sp, #0 + add r5, r0, #0 + add r4, r1, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _022155F0 + add r0, sp, #0xc + lsl r1, r4, #2 + add sp, #0x18 + ldr r0, [r0, r1] + pop {r3, r4, r5, pc} +_022155F0: + lsl r1, r4, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_022155FC: .word 0x0222AA94 + + thumb_func_start MOD08_02215600 +MOD08_02215600: ; 0x02215600 + push {r3, lr} + cmp r1, #3 + bhi _02215636 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02215612: ; jump table + .short _0221561A - _02215612 - 2 ; case 0 + .short _02215622 - _02215612 - 2 ; case 1 + .short _0221562A - _02215612 - 2 ; case 2 + .short _02215632 - _02215612 - 2 ; case 3 +_0221561A: + bl MOD08_02212004 + mov r0, #0 + pop {r3, pc} +_02215622: + bl MOD08_02212004 + mov r0, #1 + pop {r3, pc} +_0221562A: + bl MOD08_02212004 + mov r0, #3 + pop {r3, pc} +_02215632: + bl MOD08_02215574 +_02215636: + pop {r3, pc} + + thumb_func_start MOD08_02215638 +MOD08_02215638: ; 0x02215638 + push {r3, lr} + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + add r0, r2, #0 + add r2, #0xc0 + ldr r3, [r2] + mov r2, #0x11 + add r0, #0xc4 + lsl r2, r2, #4 + lsl r1, r1, #0x18 + ldr r2, [r3, r2] + mov r3, #1 + ldr r0, [r0] + lsr r1, r1, #0x18 + lsl r3, r3, #0x10 + bl FUN_02017E14 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02215660 +MOD08_02215660: ; 0x02215660 + push {r3, lr} + mov r2, #2 + add r1, r0, #0 + lsl r2, r2, #8 + str r2, [sp] + add r1, #0xc0 + add r0, #0xc8 + ldr r1, [r1] + sub r2, #0xec + ldr r1, [r1, r2] + mov r2, #0 + ldr r0, [r0] + add r3, r2, #0 + bl FUN_02003054 + pop {r3, pc} + + thumb_func_start MOD08_02215680 +MOD08_02215680: ; 0x02215680 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_022132C4 + add r4, r0, #0 + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _022156A8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_022154A8 + bl MOD08_0222A6C8 + cmp r0, #1 + bne _022156A8 + mov r0, #1 + pop {r3, r4, r5, pc} +_022156A8: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022156AC +MOD08_022156AC: ; 0x022156AC + mov r2, #0x14 + mul r2, r0 + ldr r0, _022156BC ; =0x0222ADC0 + lsl r1, r1, #2 + add r0, r0, r2 + ldr r0, [r1, r0] + bx lr + nop +_022156BC: .word 0x0222ADC0 + + thumb_func_start MOD08_022156C0 +MOD08_022156C0: ; 0x022156C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x90 + ldr r3, _02215900 ; =0x0222AA4C + add r6, r2, #0 + add r2, sp, #0x78 + add r7, r0, #0 + add r5, r1, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + mov r1, #0x58 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + add r0, r7, #0 + bl FUN_02230078 + str r0, [r4, #8] + add r0, r7, #0 + bl FUN_02230080 + str r0, [r4, #0xc] + add r0, r7, #0 + bl FUN_022300CC + str r0, [r4, #0x10] + mov r6, #0 + add r5, r4, #0 +_02215704: + mov r0, #0 + str r0, [r5, #0x24] + add r0, r7, #0 + add r1, r6, #0 + bl FUN_022312D0 + str r0, [r5, #0x34] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02215704 + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x44 + bl FUN_02231504 + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x48 + bl FUN_02231534 + mov r6, #0 + add r7, r6, #0 +_02215732: + ldr r0, [r4, #4] + cmp r6, r0 + beq _0221573C + cmp r0, #0xff + bne _0221579E +_0221573C: + ldr r1, _02215904 ; =0x0000D903 + str r7, [sp] + add r2, r6, r1 + ldr r1, _02215908 ; =0x00001388 + mov r3, #0x28 + mul r1, r0 + mov r0, #1 + add r5, r2, r1 + str r0, [sp, #4] + str r5, [sp, #8] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r2, #0x1b + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + mov r0, #0x27 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r5, [sp, #0x14] + ldr r0, [r4, #0x10] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + mov r1, #2 + bl FUN_0200C0DC + mov r0, #0 + str r0, [sp] + str r5, [sp, #4] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r2, #0x1b + mov r3, #0x29 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + str r5, [sp, #4] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r2, #0x1b + mov r3, #0x2a + bl FUN_0200C13C +_0221579E: + add r6, r6, #1 + cmp r6, #4 + blt _02215732 + mov r0, #0 + str r0, [sp, #0x24] + add r7, r4, #0 +_022157AA: + ldr r1, [r4, #4] + ldr r0, [sp, #0x24] + cmp r0, r1 + beq _022157B8 + cmp r1, #0xff + beq _022157B8 + b _022158EC +_022157B8: + ldr r2, _02215904 ; =0x0000D903 + ldr r0, [sp, #0x24] + add r3, r1, #0 + add r0, r0, r2 + ldr r2, _02215908 ; =0x00001388 + mul r3, r2 + add r1, r0, r3 + str r1, [r7, #0x14] + ldr r1, [r4, #4] + add r3, r1, #0 + mul r3, r2 + add r1, r0, r3 + str r1, [sp, #0x60] + ldr r1, [r4, #4] + add r3, r1, #0 + mul r3, r2 + add r1, r0, r3 + str r1, [sp, #0x64] + ldr r1, [r4, #4] + add r3, r1, #0 + mul r3, r2 + add r1, r0, r3 + str r1, [sp, #0x68] + ldr r1, [r4, #4] + mul r2, r1 + mov r1, #0 + add r0, r0, r2 + str r0, [sp, #0x6c] + str r1, [sp, #0x70] + str r1, [sp, #0x74] + ldr r2, [r7, #0x34] + ldr r5, [r7, #0x48] + ldr r0, [r2, #4] + cmp r5, #0 + str r0, [sp, #0x20] + ldr r0, [r2, #8] + str r0, [sp, #0x1c] + ldr r0, [r2] + str r0, [sp, #0x18] + beq _022158EC + add r0, r5, #0 + bl FUN_0200782C + str r0, [sp, #0x28] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r0, r5, #0 + mov r1, #0x29 + bl FUN_0200782C + sub r2, r6, r0 + ldr r0, [sp, #0x28] + add r1, sp, #0x2c + strh r0, [r1] + strh r2, [r1, #2] + mov r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + ldr r1, [sp, #0x24] + add r3, sp, #0x2c + add r1, r4, r1 + add r1, #0x44 + ldrb r1, [r1] + lsl r2, r1, #2 + add r1, sp, #0x78 + ldr r1, [r1, r2] + str r0, [sp, #0x38] + str r1, [sp, #0x34] + mov r1, #1 + str r1, [sp, #0x3c] + str r1, [sp, #0x58] + str r0, [sp, #0x5c] + add r2, sp, #0x60 +_02215852: + ldr r1, [r2] + add r0, r0, #1 + str r1, [r3, #0x14] + add r2, r2, #4 + add r3, r3, #4 + cmp r0, #6 + blt _02215852 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + add r2, sp, #0x2c + bl FUN_0200C154 + add r6, r0, #0 + bl FUN_0200C5A8 + str r6, [r7, #0x24] + cmp r5, #0 + bne _02215880 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200C644 + b _022158A8 +_02215880: + add r0, r5, #0 + bl FUN_02008268 + cmp r0, #0 + bne _02215894 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200C644 + b _022158A8 +_02215894: + add r0, r5, #0 + mov r1, #6 + bl FUN_0200782C + cmp r0, #1 + bne _022158A8 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200C644 +_022158A8: + cmp r5, #0 + beq _022158C2 + ldr r0, [r6] + bl FUN_02020350 + add r1, r0, #0 + mov r3, #0x32 + ldr r1, [r1, #4] + ldr r2, [sp, #0x18] + mov r0, #0x13 + lsl r3, r3, #6 + bl FUN_0201C2C8 +_022158C2: + cmp r5, #0 + beq _022158EC + ldr r0, [r6] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + mov r1, #2 + str r1, [sp] + mov r1, #0x20 + lsl r0, r0, #0x14 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x1c] + ldr r3, [r4] + bl FUN_020030E8 +_022158EC: + ldr r0, [sp, #0x24] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #4 + bge _022158FA + b _022157AA +_022158FA: + add r0, r4, #0 + add sp, #0x90 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02215900: .word 0x0222AA4C +_02215904: .word 0x0000D903 +_02215908: .word 0x00001388 + + thumb_func_start MOD08_0221590C +MOD08_0221590C: ; 0x0221590C + ldr r3, _02215914 ; =MOD08_022156C0 + mov r2, #0xff + bx r3 + nop +_02215914: .word MOD08_022156C0 + + thumb_func_start MOD08_02215918 +MOD08_02215918: ; 0x02215918 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_02215920: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _0221593C + ldr r0, [r5, #0xc] + ldr r1, [r4, #0x14] + bl FUN_0200C358 + ldr r0, [r5, #0xc] + ldr r1, [r4, #0x14] + bl FUN_0200C368 + ldr r0, [r4, #0x24] + bl FUN_0200C3DC +_0221593C: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02215920 + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_0221594C +MOD08_0221594C: ; 0x0221594C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r4, #0 + add r5, r6, #0 +_02215956: + cmp r4, r7 + bne _02215976 + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _02215976 + ldr r0, [r6, #0xc] + ldr r1, [r5, #0x14] + bl FUN_0200C358 + ldr r0, [r6, #0xc] + ldr r1, [r5, #0x14] + bl FUN_0200C368 + ldr r0, [r5, #0x24] + bl FUN_0200C3DC +_02215976: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02215956 + add r0, r6, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02215988 +MOD08_02215988: ; 0x02215988 + push {r4, lr} + add r4, r0, #0 + bne _02215992 + bl ErrorHandling +_02215992: + ldr r0, [r4, #4] + add r0, r4, r0 + add r0, #0x44 + ldrb r0, [r0] + pop {r4, pc} + + thumb_func_start MOD08_0221599C +MOD08_0221599C: ; 0x0221599C + push {r4, lr} + sub sp, #8 + mov r1, #0x12 + lsl r1, r1, #0xa + add r4, r0, #0 + bl FUN_02016998 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r3, #0x12 + ldr r0, _022159DC ; =MOD08_02215A68 + ldr r1, _022159E0 ; =MOD08_02215A84 + lsl r3, r3, #0xa + str r4, [sp, #4] + bl FUN_02012CDC + add r4, r0, #0 + bl FUN_0201343C + add r2, r0, #0 + beq _022159D4 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 +_022159D4: + add r0, r4, #0 + add sp, #8 + pop {r4, pc} + nop +_022159DC: .word MOD08_02215A68 +_022159E0: .word MOD08_02215A84 + + thumb_func_start MOD08_022159E4 +MOD08_022159E4: ; 0x022159E4 + push {r4, lr} + sub sp, #8 + mov r1, #0x42 + lsl r1, r1, #8 + add r4, r0, #0 + bl FUN_02016998 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r3, #0x42 + ldr r0, _02215A24 ; =MOD08_02215A68 + ldr r1, _02215A28 ; =MOD08_02215A84 + lsl r3, r3, #8 + str r4, [sp, #4] + bl FUN_02012CDC + add r4, r0, #0 + bl FUN_0201343C + add r2, r0, #0 + beq _02215A1C + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 +_02215A1C: + add r0, r4, #0 + add sp, #8 + pop {r4, pc} + nop +_02215A24: .word MOD08_02215A68 +_02215A28: .word MOD08_02215A84 + + thumb_func_start MOD08_02215A2C +MOD08_02215A2C: ; 0x02215A2C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_020133E8 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02012DE4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02215A44 +MOD08_02215A44: ; 0x02215A44 + push {r3, lr} + bl FUN_020222AC + bl FUN_02013348 + cmp r0, #0 + beq _02215A66 + bl FUN_02013364 + cmp r0, #0 + ble _02215A62 + bl FUN_020222AC + bl FUN_020B02C8 +_02215A62: + bl FUN_02013388 +_02215A66: + pop {r3, pc} + + thumb_func_start MOD08_02215A68 +MOD08_02215A68: ; 0x02215A68 + push {r4, lr} + ldr r3, _02215A80 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02215A80: .word 0x021064B8 + + thumb_func_start MOD08_02215A84 +MOD08_02215A84: ; 0x02215A84 + push {r4, lr} + ldr r3, _02215A9C ; =0x021064C0 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02215A9C: .word 0x021064C0 + + thumb_func_start MOD08_02215AA0 +MOD08_02215AA0: ; 0x02215AA0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02215AA4 +MOD08_02215AA4: ; 0x02215AA4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD08_0221599C + add r4, r0, #0 + mov r0, #0x1d + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0201318C + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0xa + add r3, r7, #0 + bl FUN_02013194 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02215ACC +MOD08_02215ACC: ; 0x02215ACC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + bl MOD08_0221599C + add r4, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + bl FUN_0201318C + add r1, r0, #0 + ldr r3, [sp] + add r0, r4, #0 + mov r2, #0xa + bl FUN_02013194 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02215AF8 +MOD08_02215AF8: ; 0x02215AF8 + ldr r3, _02215AFC ; =0x02006705 + bx r3 + .align 2, 0 +_02215AFC: .word 0x02006705 + + thumb_func_start MOD08_02215B00 +MOD08_02215B00: ; 0x02215B00 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r7, r2, #0 + add r0, r5, #0 + str r3, [sp] + bl MOD08_022159E4 + add r4, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD08_02215AF8 + add r1, r0, #0 + ldr r3, [sp] + add r0, r4, #0 + mov r2, #0xa + bl FUN_02013194 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02215B2C +MOD08_02215B2C: ; 0x02215B2C + push {r4, lr} + lsl r4, r2, #2 + ldr r2, _02215B3C ; =0x0222B248 + ldr r2, [r2, r4] + bl FUN_020133AC + pop {r4, pc} + nop +_02215B3C: .word 0x0222B248 + + thumb_func_start MOD08_02215B40 +MOD08_02215B40: ; 0x02215B40 + ldr r3, _02215B44 ; =MOD08_02215A2C + bx r3 + .align 2, 0 +_02215B44: .word MOD08_02215A2C + + thumb_func_start MOD08_02215B48 +MOD08_02215B48: ; 0x02215B48 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r2, #0 + mov r4, #1 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_02227468 + cmp r5, #5 + bhi _02215B84 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02215B6E: ; jump table + .short _02215B84 - _02215B6E - 2 ; case 0 + .short _02215B7A - _02215B6E - 2 ; case 1 + .short _02215B84 - _02215B6E - 2 ; case 2 + .short _02215B7E - _02215B6E - 2 ; case 3 + .short _02215B84 - _02215B6E - 2 ; case 4 + .short _02215B82 - _02215B6E - 2 ; case 5 +_02215B7A: + sub r4, r4, #2 + b _02215B84 +_02215B7E: + sub r4, r4, #2 + b _02215B84 +_02215B82: + sub r4, r4, #2 +_02215B84: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02215B88 +MOD08_02215B88: ; 0x02215B88 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02215B8C +MOD08_02215B8C: ; 0x02215B8C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + bl FUN_0201341C + add r4, r0, #0 + bl MOD08_02212458 + add r0, r4, #0 + bl MOD08_02212460 + add r0, r4, #0 + bl MOD08_02212468 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD08_02227470 + cmp r0, #3 + bne _02215BC2 + add r0, r4, #0 + mov r1, #1 + add r2, sp, #0x28 + bl MOD08_0222771C + b _02215BFA +_02215BC2: + add r0, r4, #0 + mov r1, #1 + bl MOD08_02227468 + str r0, [sp] + bl MOD08_02227524 + str r0, [sp, #4] + add r0, r6, #0 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, sp, #0x28 + add r2, r4, #0 + add r3, r7, #0 + bl MOD08_0222765C + ldr r0, [sp] + add r1, sp, #0x1c + add r2, r4, #0 + add r3, r7, #0 + bl MOD08_0222765C +_02215BFA: + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x28] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x2c] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x30] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + mov r0, #1 + add r1, sp, #0x10 + bl MOD08_02227974 + add r0, r6, #0 + bl FUN_0201343C + add r4, r0, #0 + add r0, sp, #8 + add r1, r4, #0 + bl FUN_0201F014 + add r0, sp, #8 + add r1, r4, #0 + bl FUN_0201EF90 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02215C44 +MOD08_02215C44: ; 0x02215C44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + bl FUN_0201341C + add r4, r0, #0 + bl MOD08_02212460 + add r6, r0, #0 + add r0, r4, #0 + bl MOD08_02212468 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, sp, #0xc + bl MOD08_0222771C + ldr r0, [r5, #0x20] + ldr r1, [sp, #0xc] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x10] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x14] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add r0, r6, #0 + add r1, sp, #0 + bl MOD08_02227974 + add r0, r7, #0 + add r1, sp, #0 + bl FUN_020133FC + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02215CA0 +MOD08_02215CA0: ; 0x02215CA0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_0201341C + add r5, r0, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + add r2, sp, #0 + bl MOD08_0222771C + ldr r0, [r4, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r4, #0x30] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02215CE4 +MOD08_02215CE4: ; 0x02215CE4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_0201341C + add r5, r0, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + add r2, sp, #0 + bl MOD08_0222771C + ldr r0, [r4, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r4, #0x30] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02215D28 +MOD08_02215D28: ; 0x02215D28 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r4, r0, #0 + bl MOD08_02212458 + add r6, r0, #0 + add r0, r4, #0 + bl MOD08_02212460 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0 + bl MOD08_0222771C + ldr r0, [r5, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_02215D74 +MOD08_02215D74: ; 0x02215D74 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r6, r0, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + beq _02215DA0 + mov r4, #1 + b _02215DA2 +_02215DA0: + mov r4, #0 +_02215DA2: + add r0, r6, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r4, #0 + add r1, sp, #0 + add r3, r7, #0 + bl MOD08_0222765C + ldr r0, [r5, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02215DDC +MOD08_02215DDC: ; 0x02215DDC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r6, r0, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + beq _02215E08 + mov r4, #1 + b _02215E0A +_02215E08: + mov r4, #0 +_02215E0A: + add r0, r6, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r4, #0 + add r1, sp, #0 + add r3, r7, #0 + bl MOD08_0222765C + ldr r0, [r5, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02215E44 +MOD08_02215E44: ; 0x02215E44 + push {r4, r5, r6, r7, lr} + sub sp, #0x9c + add r5, r0, #0 + add r1, sp, #0 + mov r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + strh r0, [r1, #4] + strh r0, [r1, #6] + strh r0, [r1, #8] + strh r0, [r1, #0xa] + ldr r3, _02215EE4 ; =0x0222B2A4 + add r2, sp, #0x54 + mov r1, #0x24 +_02215E60: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _02215E60 + ldr r3, _02215EE8 ; =0x0222B2EC + add r2, sp, #0xc + mov r1, #0x24 +_02215E72: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _02215E72 + bl FUN_0201341C + add r4, r0, #0 + bl MOD08_02212458 + add r6, r0, #0 + add r0, r4, #0 + bl MOD08_02212460 + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD08_02227468 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD08_02227468 + lsl r2, r0, #1 + mov r0, #0xc + add r1, r6, #0 + mul r1, r0 + add r0, sp, #0x54 + add r0, r0, r1 + ldrsh r4, [r2, r0] + mov r3, #0xac + add r0, r4, #0 + ldr r4, [r5, #0x20] + mul r0, r3 + ldr r4, [r4] + ldr r4, [r4, #4] + add r0, r0, r4 + str r0, [r5, #0x28] + add r0, sp, #0xc + add r0, r0, r1 + ldrsh r0, [r2, r0] + add r1, r0, #0 + ldr r0, [r5, #0x20] + mul r1, r3 + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r0, [r0] + ldr r0, [r0, #0xc] + str r0, [r5, #0x30] + add sp, #0x9c + pop {r4, r5, r6, r7, pc} + nop +_02215EE4: .word 0x0222B2A4 +_02215EE8: .word 0x0222B2EC + + thumb_func_start MOD08_02215EEC +MOD08_02215EEC: ; 0x02215EEC + push {r3, r4} + add r3, r2, #0 + add r3, #8 + cmp r0, #7 + bhi _02215F7C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02215F02: ; jump table + .short _02215F7C - _02215F02 - 2 ; case 0 + .short _02215F12 - _02215F02 - 2 ; case 1 + .short _02215F1C - _02215F02 - 2 ; case 2 + .short _02215F26 - _02215F02 - 2 ; case 3 + .short _02215F30 - _02215F02 - 2 ; case 4 + .short _02215F42 - _02215F02 - 2 ; case 5 + .short _02215F54 - _02215F02 - 2 ; case 6 + .short _02215F66 - _02215F02 - 2 ; case 7 +_02215F12: + ldr r0, [r2] + mul r1, r0 + str r1, [r2] + pop {r3, r4} + bx lr +_02215F1C: + ldr r0, [r2, #4] + mul r1, r0 + str r1, [r2, #4] + pop {r3, r4} + bx lr +_02215F26: + ldr r0, [r3] + mul r1, r0 + str r1, [r3] + pop {r3, r4} + bx lr +_02215F30: + ldr r0, [r2] + add r3, r0, #0 + mul r3, r1 + str r3, [r2] + ldr r0, [r2, #4] + mul r1, r0 + str r1, [r2, #4] + pop {r3, r4} + bx lr +_02215F42: + ldr r0, [r2] + add r4, r0, #0 + mul r4, r1 + str r4, [r2] + ldr r0, [r3] + mul r1, r0 + str r1, [r3] + pop {r3, r4} + bx lr +_02215F54: + ldr r0, [r2, #4] + add r4, r0, #0 + mul r4, r1 + str r4, [r2, #4] + ldr r0, [r3] + mul r1, r0 + str r1, [r3] + pop {r3, r4} + bx lr +_02215F66: + ldr r0, [r2] + add r4, r0, #0 + mul r4, r1 + str r4, [r2] + ldr r0, [r2, #4] + add r4, r0, #0 + mul r4, r1 + str r4, [r2, #4] + ldr r0, [r3] + mul r1, r0 + str r1, [r3] +_02215F7C: + pop {r3, r4} + bx lr + + thumb_func_start MOD08_02215F80 +MOD08_02215F80: ; 0x02215F80 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r2, #0 + add r5, r1, #0 + add r1, r3, #0 + add r7, sp, #0x10 + mov r2, #0 + str r2, [r7] + ldr r3, [sp, #0x30] + str r2, [r7, #4] + ldr r4, [sp, #0x38] + str r2, [r7, #8] + cmp r3, #5 + bhi _0221602A + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02215FA8: ; jump table + .short _0221602A - _02215FA8 - 2 ; case 0 + .short _02215FB4 - _02215FA8 - 2 ; case 1 + .short _02215FDA - _02215FA8 - 2 ; case 2 + .short _02215FEE - _02215FA8 - 2 ; case 3 + .short _02215FF6 - _02215FA8 - 2 ; case 4 + .short _02216000 - _02215FA8 - 2 ; case 5 +_02215FB4: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02013628 + add r1, sp, #0x20 + mov r0, #0x14 + ldrsb r0, [r1, r0] + ldr r1, [sp, #0x10] + add r2, r1, #0 + mul r2, r0 + ldr r1, [sp, #0x14] + str r2, [sp, #0x10] + add r2, r1, #0 + mul r2, r0 + ldr r1, [sp, #0x18] + str r2, [sp, #0x14] + mul r0, r1 + str r0, [sp, #0x18] + b _0221602A +_02215FDA: + str r2, [sp, #0x10] + add r1, sp, #0x20 + mov r0, #0x14 + ldrsb r1, [r1, r0] + mov r0, #0x32 + lsl r0, r0, #6 + mul r0, r1 + str r0, [sp, #0x14] + str r2, [sp, #0x18] + b _0221602A +_02215FEE: + add r2, r7, #0 + bl MOD08_0222771C + b _0221602A +_02215FF6: + add r1, r6, #0 + add r2, r7, #0 + bl MOD08_0222771C + b _0221602A +_02216000: + add r1, sp, #0 + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + str r2, [r1, #0xc] + mov r2, #4 + bl MOD08_02215434 + ldr r0, [sp] + add r2, sp, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + mov r1, #0x14 + str r0, [sp, #0x14] + ldr r0, [sp, #8] + str r0, [sp, #0x18] + ldrsb r1, [r2, r1] + ldr r0, [sp, #0xc] + add r2, r7, #0 + bl MOD08_02215EEC +_0221602A: + ldr r1, [sp, #0x10] + ldr r0, [r4] + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [r4, #4] + sub r0, r1, r0 + str r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [r4, #8] + sub r0, r1, r0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #0x10 + bl FUN_02013610 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02216050 +MOD08_02216050: ; 0x02216050 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r2, #0 + add r5, r1, #0 + add r1, r3, #0 + add r7, sp, #0x10 + mov r2, #0 + str r2, [r7] + ldr r3, [sp, #0x30] + str r2, [r7, #4] + ldr r4, [sp, #0x38] + str r2, [r7, #8] + cmp r3, #5 + bhi _022160FA + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02216078: ; jump table + .short _022160FA - _02216078 - 2 ; case 0 + .short _02216084 - _02216078 - 2 ; case 1 + .short _022160AA - _02216078 - 2 ; case 2 + .short _022160BE - _02216078 - 2 ; case 3 + .short _022160C6 - _02216078 - 2 ; case 4 + .short _022160D0 - _02216078 - 2 ; case 5 +_02216084: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02013548 + add r1, sp, #0x20 + mov r0, #0x14 + ldrsb r0, [r1, r0] + ldr r1, [sp, #0x10] + add r2, r1, #0 + mul r2, r0 + ldr r1, [sp, #0x14] + str r2, [sp, #0x10] + add r2, r1, #0 + mul r2, r0 + ldr r1, [sp, #0x18] + str r2, [sp, #0x14] + mul r0, r1 + str r0, [sp, #0x18] + b _022160FA +_022160AA: + str r2, [sp, #0x10] + add r1, sp, #0x20 + mov r0, #0x14 + ldrsb r1, [r1, r0] + mov r0, #0x32 + lsl r0, r0, #6 + mul r0, r1 + str r0, [sp, #0x14] + str r2, [sp, #0x18] + b _022160FA +_022160BE: + add r2, r7, #0 + bl MOD08_0222771C + b _022160FA +_022160C6: + add r1, r6, #0 + add r2, r7, #0 + bl MOD08_0222771C + b _022160FA +_022160D0: + add r1, sp, #0 + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + str r2, [r1, #0xc] + mov r2, #4 + bl MOD08_02215434 + ldr r0, [sp] + add r2, sp, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + mov r1, #0x14 + str r0, [sp, #0x14] + ldr r0, [sp, #8] + str r0, [sp, #0x18] + ldrsb r1, [r2, r1] + ldr r0, [sp, #0xc] + add r2, r7, #0 + bl MOD08_02215EEC +_022160FA: + ldr r1, [sp, #0x10] + ldr r0, [r4] + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [r4, #4] + sub r0, r1, r0 + str r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [r4, #8] + sub r0, r1, r0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #0x10 + bl FUN_02013530 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02216120 +MOD08_02216120: ; 0x02216120 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + add r6, r0, #0 + add r7, r2, #0 + add r4, r1, #0 + str r3, [sp, #0xc] + bl MOD08_02212468 + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_02227468 + str r0, [sp, #0x10] + ldr r1, [sp, #0xc] + add r0, r6, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r6, #0 + add r1, sp, #0x7c + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, sp, #0x70 + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, sp, #0x58 + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, sp, #0x64 + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, sp, #0x40 + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, sp, #0x34 + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, sp, #0x4c + mov r2, #3 + bl MOD08_02215434 + ldr r0, [sp, #0x10] + cmp r0, #5 + bhi _022161A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221619C: ; jump table + .short _022161A8 - _0221619C - 2 ; case 0 + .short _022161B8 - _0221619C - 2 ; case 1 + .short _022161CE - _0221619C - 2 ; case 2 + .short _02216202 - _0221619C - 2 ; case 3 + .short _0221624C - _0221619C - 2 ; case 4 + .short _02216280 - _0221619C - 2 ; case 5 +_022161A8: + ldr r1, [sp, #0x7c] + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x80] + strh r1, [r0, #2] + ldr r1, [sp, #0x84] + strh r1, [r0, #4] + b _022162C8 +_022161B8: + ldr r0, [sp, #0x7c] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x80] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x84] + neg r1, r1 + strh r1, [r0, #4] + b _022162C8 +_022161CE: + cmp r5, #3 + add r0, sp, #0x14 + bne _022161E2 + ldr r1, [sp, #0x70] + strh r1, [r0] + ldr r1, [sp, #0x74] + strh r1, [r0, #2] + ldr r1, [sp, #0x78] + strh r1, [r0, #4] + b _022162C8 +_022161E2: + cmp r5, #5 + bne _022161F4 + ldr r1, [sp, #0x58] + strh r1, [r0] + ldr r1, [sp, #0x5c] + strh r1, [r0, #2] + ldr r1, [sp, #0x60] + strh r1, [r0, #4] + b _022162C8 +_022161F4: + ldr r1, [sp, #0x64] + strh r1, [r0] + ldr r1, [sp, #0x68] + strh r1, [r0, #2] + ldr r1, [sp, #0x6c] + strh r1, [r0, #4] + b _022162C8 +_02216202: + cmp r5, #2 + bne _0221621C + ldr r0, [sp, #0x70] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x74] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x78] + neg r1, r1 + strh r1, [r0, #4] + b _022162C8 +_0221621C: + cmp r5, #5 + bne _02216236 + ldr r0, [sp, #0x64] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x68] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x6c] + neg r1, r1 + strh r1, [r0, #4] + b _022162C8 +_02216236: + ldr r0, [sp, #0x40] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x44] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x48] + neg r1, r1 + strh r1, [r0, #4] + b _022162C8 +_0221624C: + cmp r5, #3 + add r0, sp, #0x14 + bne _02216260 + ldr r1, [sp, #0x40] + strh r1, [r0] + ldr r1, [sp, #0x44] + strh r1, [r0, #2] + ldr r1, [sp, #0x48] + strh r1, [r0, #4] + b _022162C8 +_02216260: + cmp r5, #5 + bne _02216272 + ldr r1, [sp, #0x34] + strh r1, [r0] + ldr r1, [sp, #0x38] + strh r1, [r0, #2] + ldr r1, [sp, #0x3c] + strh r1, [r0, #4] + b _022162C8 +_02216272: + ldr r1, [sp, #0x4c] + strh r1, [r0] + ldr r1, [sp, #0x50] + strh r1, [r0, #2] + ldr r1, [sp, #0x54] + strh r1, [r0, #4] + b _022162C8 +_02216280: + cmp r5, #3 + bne _0221629A + ldr r0, [sp, #0x4c] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x50] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x54] + neg r1, r1 + strh r1, [r0, #4] + b _022162C8 +_0221629A: + cmp r5, #2 + bne _022162B4 + ldr r0, [sp, #0x58] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x5c] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x60] + neg r1, r1 + strh r1, [r0, #4] + b _022162C8 +_022162B4: + ldr r0, [sp, #0x34] + neg r1, r0 + add r0, sp, #0x14 + strh r1, [r0] + ldr r1, [sp, #0x38] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x3c] + neg r1, r1 + strh r1, [r0, #4] +_022162C8: + ldr r2, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_02215B48 + add r5, r0, #0 + add r1, sp, #0x28 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r6, #0 + mov r2, #3 + bl MOD08_02215434 + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x1c + bl MOD08_0222771C + ldr r0, [sp, #0x28] + cmp r0, #0 + bne _02216334 + ldr r0, [sp, #0x2c] + cmp r0, #0 + bne _02216334 + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _02216334 + add r3, sp, #0x1c + ldmia r3!, {r0, r1} + add r2, sp, #0x88 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4, #0x20] + ldr r0, [sp, #0x1c] + ldr r1, [r1] + ldr r1, [r1, #4] + add r0, r0, r1 + str r0, [r4, #0x28] + ldr r1, [r4, #0x20] + ldr r0, [sp, #0x20] + ldr r1, [r1] + ldr r1, [r1, #8] + add r0, r0, r1 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x20] + ldr r0, [sp, #0x24] + ldr r1, [r1] + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x30] + b _02216388 +_02216334: + ldr r2, [sp, #0x28] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x30] + str r2, [sp, #0x88] + str r1, [sp, #0x8c] + str r0, [sp, #0x90] + cmp r2, #0 + bne _0221634E + mov r0, #0x32 + lsl r0, r0, #6 + cmp r1, r0 + bne _0221634E + mov r5, #1 +_0221634E: + ldr r1, [sp, #0x88] + add r0, r1, #0 + ldr r1, [sp, #0x8c] + mul r0, r5 + add r2, r1, #0 + mul r2, r5 + ldr r1, [sp, #0x24] + str r2, [sp, #0x8c] + add r2, r1, #0 + mul r2, r5 + str r0, [sp, #0x88] + str r2, [sp, #0x90] + ldr r1, [r4, #0x20] + ldr r1, [r1] + ldr r1, [r1, #4] + add r0, r0, r1 + str r0, [r4, #0x28] + ldr r1, [r4, #0x20] + ldr r0, [sp, #0x8c] + ldr r1, [r1] + ldr r1, [r1, #8] + add r0, r0, r1 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x20] + ldr r0, [sp, #0x90] + ldr r1, [r1] + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x30] +_02216388: + ldr r0, [sp, #0xa8] + cmp r0, #0 + beq _022163C6 + cmp r0, #1 + beq _02216398 + cmp r0, #2 + beq _022163B0 + b _022163C6 +_02216398: + ldr r0, [sp, #0xac] + ldr r3, [sp, #0xc] + str r0, [sp] + str r5, [sp, #4] + add r0, sp, #0x88 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD08_02215F80 + b _022163C6 +_022163B0: + ldr r0, [sp, #0xac] + ldr r3, [sp, #0xc] + str r0, [sp] + str r5, [sp, #4] + add r0, sp, #0x88 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD08_02216050 +_022163C6: + add r1, sp, #0x14 + ldrh r2, [r1] + add r0, r4, #0 + add r0, #0x50 + strh r2, [r0] + add r0, r4, #0 + ldrh r2, [r1, #2] + add r0, #0x52 + add r4, #0x54 + strh r2, [r0] + ldrh r0, [r1, #4] + strh r0, [r4] + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_022163E4 +MOD08_022163E4: ; 0x022163E4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + bl FUN_0201341C + add r6, r0, #0 + bl MOD08_02212458 + str r0, [sp, #8] + add r0, r6, #0 + bl MOD08_02212460 + add r3, r0, #0 + str r5, [sp] + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + str r4, [sp, #4] + bl MOD08_02216120 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02216414 +MOD08_02216414: ; 0x02216414 + ldr r3, _0221641C ; =MOD08_022163E4 + mov r1, #0 + add r2, r1, #0 + bx r3 + .align 2, 0 +_0221641C: .word MOD08_022163E4 + + thumb_func_start MOD08_02216420 +MOD08_02216420: ; 0x02216420 + ldr r3, _02216428 ; =MOD08_022163E4 + mov r1, #1 + add r2, r1, #0 + bx r3 + .align 2, 0 +_02216428: .word MOD08_022163E4 + + thumb_func_start MOD08_0221642C +MOD08_0221642C: ; 0x0221642C + ldr r3, _02216434 ; =MOD08_022163E4 + mov r1, #1 + mov r2, #2 + bx r3 + .align 2, 0 +_02216434: .word MOD08_022163E4 + + thumb_func_start MOD08_02216438 +MOD08_02216438: ; 0x02216438 + ldr r3, _02216440 ; =MOD08_022163E4 + mov r1, #1 + mov r2, #3 + bx r3 + .align 2, 0 +_02216440: .word MOD08_022163E4 + + thumb_func_start MOD08_02216444 +MOD08_02216444: ; 0x02216444 + ldr r3, _0221644C ; =MOD08_022163E4 + mov r1, #1 + mov r2, #4 + bx r3 + .align 2, 0 +_0221644C: .word MOD08_022163E4 + + thumb_func_start MOD08_02216450 +MOD08_02216450: ; 0x02216450 + ldr r3, _02216458 ; =MOD08_022163E4 + mov r1, #1 + mov r2, #5 + bx r3 + .align 2, 0 +_02216458: .word MOD08_022163E4 + + thumb_func_start MOD08_0221645C +MOD08_0221645C: ; 0x0221645C + ldr r3, _02216464 ; =MOD08_022163E4 + mov r1, #2 + mov r2, #1 + bx r3 + .align 2, 0 +_02216464: .word MOD08_022163E4 + + thumb_func_start MOD08_02216468 +MOD08_02216468: ; 0x02216468 + ldr r3, _02216470 ; =MOD08_022163E4 + mov r1, #2 + add r2, r1, #0 + bx r3 + .align 2, 0 +_02216470: .word MOD08_022163E4 + + thumb_func_start MOD08_02216474 +MOD08_02216474: ; 0x02216474 + ldr r3, _0221647C ; =MOD08_022163E4 + mov r1, #2 + mov r2, #3 + bx r3 + .align 2, 0 +_0221647C: .word MOD08_022163E4 + + thumb_func_start MOD08_02216480 +MOD08_02216480: ; 0x02216480 + ldr r3, _02216488 ; =MOD08_022163E4 + mov r1, #2 + mov r2, #4 + bx r3 + .align 2, 0 +_02216488: .word MOD08_022163E4 + + thumb_func_start MOD08_0221648C +MOD08_0221648C: ; 0x0221648C + ldr r3, _02216494 ; =MOD08_022163E4 + mov r1, #2 + mov r2, #5 + bx r3 + .align 2, 0 +_02216494: .word MOD08_022163E4 + + thumb_func_start MOD08_02216498 +MOD08_02216498: ; 0x02216498 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_0201341C + add r4, r0, #0 + bl MOD08_02212458 + add r6, r0, #0 + add r0, r4, #0 + bl MOD08_02212460 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + add r3, r6, #0 + bl MOD08_02216120 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_022164C8 +MOD08_022164C8: ; 0x022164C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4, #0x14] + add r5, r0, #0 + cmp r2, #0 + beq _022164D8 + bl MOD08_0221658C +_022164D8: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _022164E6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_022168C0 +_022164E6: + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _022164F4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217124 +_022164F4: + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217158 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0221650A + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217168 +_0221650A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0221650C +MOD08_0221650C: ; 0x0221650C + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1] + add r6, r2, #0 + add r0, r4, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r4, #0 + bl MOD08_02227470 + cmp r0, #3 + beq _02216534 + mov r5, #1 + b _02216536 +_02216534: + mov r5, #0 +_02216536: + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222765C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0221654C +MOD08_0221654C: ; 0x0221654C + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1] + add r6, r2, #0 + add r0, r4, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r4, #0 + bl MOD08_02227470 + cmp r0, #3 + beq _02216574 + mov r5, #1 + b _02216576 +_02216574: + mov r5, #0 +_02216576: + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222765C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0221658C +MOD08_0221658C: ; 0x0221658C + push {r3, r4, r5, r6, lr} + sub sp, #0xbc + add r4, r1, #0 + ldr r2, [r4, #0x14] + add r5, r0, #0 + cmp r2, #0x64 + bgt _022165F4 + blt _0221659E + b _02216768 +_0221659E: + cmp r2, #0x22 + bhi _022165FA + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_022165AE: ; jump table + .short _02216872 - _022165AE - 2 ; case 0 + .short _022165FC - _022165AE - 2 ; case 1 + .short _02216608 - _022165AE - 2 ; case 2 + .short _02216704 - _022165AE - 2 ; case 3 + .short _02216740 - _022165AE - 2 ; case 4 + .short _02216754 - _022165AE - 2 ; case 5 + .short _02216614 - _022165AE - 2 ; case 6 + .short _02216620 - _022165AE - 2 ; case 7 + .short _022166EC - _022165AE - 2 ; case 8 + .short _022166F8 - _022165AE - 2 ; case 9 + .short _0221662C - _022165AE - 2 ; case 10 + .short _02216638 - _022165AE - 2 ; case 11 + .short _02216794 - _022165AE - 2 ; case 12 + .short _022167A4 - _022165AE - 2 ; case 13 + .short _02216644 - _022165AE - 2 ; case 14 + .short _02216650 - _022165AE - 2 ; case 15 + .short _0221665C - _022165AE - 2 ; case 16 + .short _02216668 - _022165AE - 2 ; case 17 + .short _02216674 - _022165AE - 2 ; case 18 + .short _02216680 - _022165AE - 2 ; case 19 + .short _0221668C - _022165AE - 2 ; case 20 + .short _02216698 - _022165AE - 2 ; case 21 + .short _022166A4 - _022165AE - 2 ; case 22 + .short _022166B0 - _022165AE - 2 ; case 23 + .short _022166BC - _022165AE - 2 ; case 24 + .short _022166C8 - _022165AE - 2 ; case 25 + .short _022166D4 - _022165AE - 2 ; case 26 + .short _022166E0 - _022165AE - 2 ; case 27 + .short _022167B4 - _022165AE - 2 ; case 28 + .short _02216872 - _022165AE - 2 ; case 29 + .short _02216804 - _022165AE - 2 ; case 30 + .short _022167DA - _022165AE - 2 ; case 31 + .short _0221683C - _022165AE - 2 ; case 32 + .short _022167C0 - _022165AE - 2 ; case 33 + .short _022167CE - _022165AE - 2 ; case 34 +_022165F4: + cmp r2, #0x65 + bne _022165FA + b _0221677E +_022165FA: + b _02216872 +_022165FC: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222771C + b _02216872 +_02216608: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222771C + b _02216872 +_02216614: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222774C + b _02216872 +_02216620: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222774C + b _02216872 +_0221662C: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222777C + b _02216872 +_02216638: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222777C + b _02216872 +_02216644: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_022277AC + b _02216872 +_02216650: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_022277AC + b _02216872 +_0221665C: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_022277DC + b _02216872 +_02216668: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_022277DC + b _02216872 +_02216674: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222780C + b _02216872 +_02216680: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222780C + b _02216872 +_0221668C: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222783C + b _02216872 +_02216698: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222783C + b _02216872 +_022166A4: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222786C + b _02216872 +_022166B0: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222786C + b _02216872 +_022166BC: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222789C + b _02216872 +_022166C8: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222789C + b _02216872 +_022166D4: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_022278CC + b _02216872 +_022166E0: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_022278CC + b _02216872 +_022166EC: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222792C + b _02216872 +_022166F8: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222792C + b _02216872 +_02216704: + ldr r0, [r4] + add r1, sp, #0xa0 + mov r2, #4 + bl MOD08_02215434 + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #0xa4] + str r0, [sp, #0xb0] + ldr r0, [sp, #0xa8] + str r0, [sp, #0xb4] + ldr r0, [sp, #0xac] + str r0, [sp, #0xb8] + ldr r0, [sp, #0xa0] + cmp r0, #1 + bne _0221672C + mov r0, #1 + strb r0, [r4, #8] +_0221672C: + mov r0, #8 + ldrsb r1, [r4, r0] + ldr r2, [sp, #0xb0] + mul r1, r2 + str r1, [sp, #0xb0] + ldrsb r0, [r4, r0] + ldr r1, [sp, #0xb4] + mul r0, r1 + str r0, [sp, #0xb4] + b _02216872 +_02216740: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222771C + add r0, r4, #0 + add r1, sp, #0xb0 + bl MOD08_0221734C + b _02216872 +_02216754: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222771C + add r0, r4, #0 + add r1, sp, #0xb0 + bl MOD08_0221734C + b _02216872 +_02216768: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222771C + ldr r1, [r4, #0x24] + add r0, r4, #0 + add r2, sp, #0xb0 + bl MOD08_022172C0 + b _02216872 +_0221677E: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0xb0 + bl MOD08_0222771C + ldr r1, [r4, #0x28] + add r0, r4, #0 + add r2, sp, #0xb0 + bl MOD08_022172C0 + b _02216872 +_02216794: + add r2, sp, #0xb0 + bl MOD08_0221654C + add r0, r4, #0 + add r1, sp, #0xb0 + bl MOD08_0221734C + b _02216872 +_022167A4: + add r2, sp, #0xb0 + bl MOD08_0221650C + add r0, r4, #0 + add r1, sp, #0xb0 + bl MOD08_0221734C + b _02216872 +_022167B4: + ldr r0, _022168A8 ; =0x00002CE0 + str r0, [sp, #0xb0] + mov r0, #0 + str r0, [sp, #0xb4] + str r0, [sp, #0xb8] + b _02216872 +_022167C0: + ldr r0, _022168AC ; =0xFFFFEC78 + str r0, [sp, #0xb0] + ldr r0, _022168B0 ; =0xFFFFE890 + str r0, [sp, #0xb4] + mov r0, #0 + str r0, [sp, #0xb8] + b _02216872 +_022167CE: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0xb0 + bl MOD08_0222771C + b _02216872 +_022167DA: + ldr r6, _022168B4 ; =0x0222B344 + add r3, sp, #0x70 + mov r2, #6 +_022167E0: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022167E0 + ldr r0, [r4] + ldr r1, [r4, #0x24] + bl MOD08_02227468 + lsl r1, r0, #3 + add r0, sp, #0x70 + ldr r0, [r0, r1] + str r0, [sp, #0xb0] + add r0, sp, #0x74 + ldr r0, [r0, r1] + str r0, [sp, #0xb4] + mov r0, #0 + str r0, [sp, #0xb8] + b _02216872 +_02216804: + ldr r6, _022168B8 ; =0x0222B3DC + add r3, sp, #0x38 + mov r2, #7 +_0221680A: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0221680A + ldr r0, [r4] + bl MOD08_02212004 + cmp r0, #1 + bne _02216820 + mov r0, #6 + b _02216828 +_02216820: + ldr r0, [r4] + ldr r1, [r4, #0x24] + bl MOD08_02227468 +_02216828: + lsl r1, r0, #3 + add r0, sp, #0x38 + ldr r0, [r0, r1] + str r0, [sp, #0xb0] + add r0, sp, #0x3c + ldr r0, [r0, r1] + str r0, [sp, #0xb4] + mov r0, #0 + str r0, [sp, #0xb8] + b _02216872 +_0221683C: + ldr r6, _022168BC ; =0x0222B3A4 + add r3, sp, #0 + mov r2, #7 +_02216842: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02216842 + ldr r0, [r4] + bl MOD08_02212004 + cmp r0, #1 + bne _02216858 + mov r0, #6 + b _02216860 +_02216858: + ldr r0, [r4] + ldr r1, [r4, #0x24] + bl MOD08_02227468 +_02216860: + lsl r1, r0, #3 + add r0, sp, #0 + ldr r0, [r0, r1] + str r0, [sp, #0xb0] + add r0, sp, #4 + ldr r0, [r0, r1] + str r0, [sp, #0xb4] + mov r0, #0 + str r0, [sp, #0xb8] +_02216872: + add r2, sp, #0xb0 + ldmia r2!, {r0, r1} + add r4, #0x2c + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0xb0] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0xb4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #0xb8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xbc + pop {r3, r4, r5, r6, pc} + nop +_022168A8: .word 0x00002CE0 +_022168AC: .word 0xFFFFEC78 +_022168B0: .word 0xFFFFE890 +_022168B4: .word 0x0222B344 +_022168B8: .word 0x0222B3DC +_022168BC: .word 0x0222B3A4 + + thumb_func_start MOD08_022168C0 +MOD08_022168C0: ; 0x022168C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x148 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r1] + ldr r1, [r1, #0x24] + bl MOD08_02227468 + str r0, [sp, #0x18] + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x28] + bl MOD08_02227468 + str r0, [sp, #0x14] + ldr r0, [sp, #4] + ldr r0, [r0, #0x18] + cmp r0, #0x1a + bls _022168EC + bl _022170F2 +_022168EC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022168F8: ; jump table + .short _0221692E - _022168F8 - 2 ; case 0 + .short _0221693A - _022168F8 - 2 ; case 1 + .short _0221693A - _022168F8 - 2 ; case 2 + .short _02217024 - _022168F8 - 2 ; case 3 + .short _022169A2 - _022168F8 - 2 ; case 4 + .short _02216A5C - _022168F8 - 2 ; case 5 + .short _02216D90 - _022168F8 - 2 ; case 6 + .short _02216D90 - _022168F8 - 2 ; case 7 + .short _02216B16 - _022168F8 - 2 ; case 8 + .short _02216B16 - _022168F8 - 2 ; case 9 + .short _02216B7E - _022168F8 - 2 ; case 10 + .short _02216B7E - _022168F8 - 2 ; case 11 + .short _02216BCC - _022168F8 - 2 ; case 12 + .short _02216BCC - _022168F8 - 2 ; case 13 + .short _02216C14 - _022168F8 - 2 ; case 14 + .short _02216C14 - _022168F8 - 2 ; case 15 + .short _02216C5C - _022168F8 - 2 ; case 16 + .short _02216C5C - _022168F8 - 2 ; case 17 + .short _02216D00 - _022168F8 - 2 ; case 18 + .short _02216D00 - _022168F8 - 2 ; case 19 + .short _02216D48 - _022168F8 - 2 ; case 20 + .short _02216D48 - _022168F8 - 2 ; case 21 + .short _02217038 - _022168F8 - 2 ; case 22 + .short _022170F2 - _022168F8 - 2 ; case 23 + .short _022170C4 - _022168F8 - 2 ; case 24 + .short _02217080 - _022168F8 - 2 ; case 25 + .short _02217092 - _022168F8 - 2 ; case 26 +_0221692E: + mov r1, #0 + add r0, sp, #0x20 + strh r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + b _022170F2 +_0221693A: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216974 + ldr r0, [sp, #4] + ldr r0, [r0, #0x10] + cmp r0, #2 + add r0, sp, #0x20 + bne _02216962 + ldr r1, _02216CA4 ; =0xFFFFF2F8 + strh r1, [r0] + mov r1, #0x73 + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216962: + mov r1, #0x92 + lsl r1, r1, #4 + strh r1, [r0] + ldr r1, _02216CA8 ; =0xFFFFFA60 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216974: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CAC ; =0x0222BB44 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CB0 ; =0x0222BB48 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CB4 ; =0x0222BB4C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_022169A2: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _022169DE + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CAC ; =0x0222BB44 + add r2, r2, r0 + ldr r2, [r1, r2] + neg r3, r2 + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CB0 ; =0x0222BB48 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CB4 ; =0x0222BB4C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_022169DE: + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x24] + bl MOD08_02227470 + add r4, r0, #0 + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x28] + bl MOD08_02227470 + cmp r4, r0 + bne _02216A2A + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CAC ; =0x0222BB44 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CB0 ; =0x0222BB48 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CB4 ; =0x0222BB4C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_02216A2A: + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x24] + bl MOD08_02227470 + cmp r0, #3 + add r0, sp, #0x20 + bne _02216A4E + mov r1, #0x3b + lsl r1, r1, #6 + strh r1, [r0] + mov r1, #0x21 + lsl r1, r1, #6 + strh r1, [r0, #2] + ldr r1, _02216CB8 ; =0x000005FC + strh r1, [r0, #4] + b _022170F2 +_02216A4E: + ldr r1, _02216CBC ; =0xFFFFEF7C + strh r1, [r0] + ldr r1, _02216CC0 ; =0xFFFFF558 + strh r1, [r0, #2] + ldr r1, _02216CB8 ; =0x000005FC + strh r1, [r0, #4] + b _022170F2 +_02216A5C: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216A98 + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CAC ; =0x0222BB44 + add r2, r2, r0 + ldr r2, [r1, r2] + neg r3, r2 + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CB0 ; =0x0222BB48 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CB4 ; =0x0222BB4C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_02216A98: + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x24] + bl MOD08_02227470 + add r4, r0, #0 + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x28] + bl MOD08_02227470 + cmp r4, r0 + bne _02216AE4 + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CAC ; =0x0222BB44 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CB0 ; =0x0222BB48 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CB4 ; =0x0222BB4C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_02216AE4: + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x24] + bl MOD08_02227470 + cmp r0, #3 + add r0, sp, #0x20 + bne _02216B08 + mov r1, #0x3b + lsl r1, r1, #6 + strh r1, [r0] + mov r1, #0x21 + lsl r1, r1, #6 + strh r1, [r0, #2] + ldr r1, _02216CB8 ; =0x000005FC + strh r1, [r0, #4] + b _022170F2 +_02216B08: + ldr r1, _02216CBC ; =0xFFFFEF7C + strh r1, [r0] + ldr r1, _02216CC0 ; =0xFFFFF558 + strh r1, [r0, #2] + ldr r1, _02216CB8 ; =0x000005FC + strh r1, [r0, #4] + b _022170F2 +_02216B16: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216B50 + ldr r0, [sp, #4] + ldr r0, [r0, #0x10] + cmp r0, #2 + add r0, sp, #0x20 + bne _02216B3E + ldr r1, _02216CC4 ; =0xFFFFF6E0 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216B3E: + mov r1, #0x92 + lsl r1, r1, #4 + strh r1, [r0] + ldr r1, _02216CA8 ; =0xFFFFFA60 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216B50: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CC8 ; =0x0222B484 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CCC ; =0x0222B488 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CD0 ; =0x0222B48C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_02216B7E: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216B9E + ldr r1, _02216CC4 ; =0xFFFFF6E0 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216B9E: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CD4 ; =0x0222B634 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CCC ; =0x0222B488 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CD0 ; =0x0222B48C + add r0, r3, r0 + ldr r1, [r1, r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + strh r0, [r2, #4] + b _022170F2 +_02216BCC: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216BEC + ldr r1, _02216CD8 ; =0xFFFFF488 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216BEC: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CDC ; =0x0222B994 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CE0 ; =0x0222B998 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CE4 ; =0x0222B99C + add r0, r3, r0 + ldr r0, [r1, r0] + strh r0, [r2, #4] + b _022170F2 +_02216C14: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216C34 + ldr r1, _02216CC4 ; =0xFFFFF6E0 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216C34: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CE8 ; =0x0222BCF4 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CEC ; =0x0222BCF8 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CF0 ; =0x0222BCFC + add r0, r3, r0 + ldr r0, [r1, r0] + strh r0, [r2, #4] + b _022170F2 +_02216C5C: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216C7C + ldr r1, _02216CC4 ; =0xFFFFF6E0 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216C7C: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02216CF4 ; =0x0222B7E4 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _02216CF8 ; =0x0222B7E8 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02216CFC ; =0x0222B7EC + add r0, r3, r0 + ldr r0, [r1, r0] + strh r0, [r2, #4] + b _022170F2 + .align 2, 0 +_02216CA4: .word 0xFFFFF2F8 +_02216CA8: .word 0xFFFFFA60 +_02216CAC: .word 0x0222BB44 +_02216CB0: .word 0x0222BB48 +_02216CB4: .word 0x0222BB4C +_02216CB8: .word 0x000005FC +_02216CBC: .word 0xFFFFEF7C +_02216CC0: .word 0xFFFFF558 +_02216CC4: .word 0xFFFFF6E0 +_02216CC8: .word 0x0222B484 +_02216CCC: .word 0x0222B488 +_02216CD0: .word 0x0222B48C +_02216CD4: .word 0x0222B634 +_02216CD8: .word 0xFFFFF488 +_02216CDC: .word 0x0222B994 +_02216CE0: .word 0x0222B998 +_02216CE4: .word 0x0222B99C +_02216CE8: .word 0x0222BCF4 +_02216CEC: .word 0x0222BCF8 +_02216CF0: .word 0x0222BCFC +_02216CF4: .word 0x0222B7E4 +_02216CF8: .word 0x0222B7E8 +_02216CFC: .word 0x0222B7EC +_02216D00: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216D20 + ldr r1, _02217044 ; =0xFFFFF6E0 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216D20: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02217048 ; =0x0222BEA4 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _0221704C ; =0x0222BEA8 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02217050 ; =0x0222BEAC + add r0, r3, r0 + ldr r0, [r1, r0] + strh r0, [r2, #4] + b _022170F2 +_02216D48: + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216D68 + ldr r1, _02217054 ; =0xFFFFEF10 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x5a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x2e + lsl r1, r1, #4 + strh r1, [r0, #4] + b _022170F2 +_02216D68: + ldr r0, [sp, #0x14] + mov r1, #0xc + mul r1, r0 + ldr r2, [sp, #0x18] + mov r0, #0x48 + mul r0, r2 + ldr r2, _02217058 ; =0x0222C054 + add r2, r2, r0 + ldr r3, [r1, r2] + add r2, sp, #0x20 + strh r3, [r2] + ldr r3, _0221705C ; =0x0222C058 + add r3, r3, r0 + ldr r3, [r1, r3] + strh r3, [r2, #2] + ldr r3, _02217060 ; =0x0222C05C + add r0, r3, r0 + ldr r0, [r1, r0] + strh r0, [r2, #4] + b _022170F2 +_02216D90: + ldr r4, _02217064 ; =0x0222B414 + add r3, sp, #0xd8 + mov r2, #0xe +_02216D96: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02216D96 + ldr r3, _02217068 ; =0x0222B334 + add r2, sp, #0x58 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r1, sp, #0xc8 + mov r0, #0 + str r1, [sp, #0xc] + add r1, sp, #0xb8 + mov ip, r0 + str r1, [sp, #0x1c] + add r0, sp, #0xd8 + add r7, sp, #0xa8 + add r6, sp, #0x98 + add r5, sp, #0x88 + add r1, sp, #0x78 + add r2, sp, #0x68 +_02216DC2: + ldr r4, [r0] + ldr r3, [sp, #0xc] + str r4, [r3] + ldr r4, [r0, #0x10] + ldr r3, [sp, #0x1c] + str r4, [r3] + ldr r3, [r0, #0x20] + stmia r7!, {r3} + ldr r3, [r0, #0x30] + stmia r6!, {r3} + ldr r3, [r0, #0x40] + stmia r5!, {r3} + ldr r3, [r0, #0x50] + stmia r1!, {r3} + ldr r3, [r0, #0x60] + add r0, r0, #4 + stmia r2!, {r3} + ldr r3, [sp, #0xc] + add r3, r3, #4 + str r3, [sp, #0xc] + ldr r3, [sp, #0x1c] + add r3, r3, #4 + str r3, [sp, #0x1c] + mov r3, ip + add r3, r3, #1 + mov ip, r3 + cmp r3, #4 + blt _02216DC2 + ldr r0, [sp, #4] + ldr r0, [r0] + bl MOD08_02212004 + cmp r0, #1 + bne _02216E3E + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x58 + str r0, [sp, #0x10] + add r7, sp, #0xc8 + add r6, sp, #0xb8 + add r0, sp, #0xa8 + add r1, sp, #0x98 + add r2, sp, #0x88 + add r3, sp, #0x78 + add r4, sp, #0x68 +_02216E1C: + ldr r5, [sp, #0x10] + ldr r5, [r5] + stmia r7!, {r5} + stmia r6!, {r5} + stmia r0!, {r5} + stmia r1!, {r5} + stmia r2!, {r5} + stmia r3!, {r5} + stmia r4!, {r5} + ldr r5, [sp, #0x10] + add r5, r5, #4 + str r5, [sp, #0x10] + ldr r5, [sp, #8] + add r5, r5, #1 + str r5, [sp, #8] + cmp r5, #4 + blt _02216E1C +_02216E3E: + ldr r0, [sp, #0x18] + cmp r0, #5 + bhi _02216E5C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02216E50: ; jump table + .short _02216E5C - _02216E50 - 2 ; case 0 + .short _02216E6C - _02216E50 - 2 ; case 1 + .short _02216E98 - _02216E50 - 2 ; case 2 + .short _02216ED0 - _02216E50 - 2 ; case 3 + .short _02216F5E - _02216E50 - 2 ; case 4 + .short _02216F96 - _02216E50 - 2 ; case 5 +_02216E5C: + ldr r1, [sp, #0xc8] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0xcc] + strh r1, [r0, #2] + ldr r1, [sp, #0xd0] + strh r1, [r0, #4] + b _022170F2 +_02216E6C: + ldr r0, [sp, #0xd4] + cmp r0, #1 + bne _02216E82 + ldr r1, [sp, #0xc8] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0xcc] + strh r1, [r0, #2] + ldr r1, [sp, #0xd0] + strh r1, [r0, #4] + b _022170F2 +_02216E82: + ldr r0, [sp, #0xc8] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0xcc] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0xd0] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02216E98: + ldr r0, [sp, #0x14] + cmp r0, #3 + bne _02216EAE + ldr r1, [sp, #0xb8] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0xbc] + strh r1, [r0, #2] + ldr r1, [sp, #0xc0] + strh r1, [r0, #4] + b _022170F2 +_02216EAE: + cmp r0, #5 + add r0, sp, #0x20 + bne _02216EC2 + ldr r1, [sp, #0x98] + strh r1, [r0] + ldr r1, [sp, #0x9c] + strh r1, [r0, #2] + ldr r1, [sp, #0xa0] + strh r1, [r0, #4] + b _022170F2 +_02216EC2: + ldr r1, [sp, #0xa8] + strh r1, [r0] + ldr r1, [sp, #0xac] + strh r1, [r0, #2] + ldr r1, [sp, #0xb0] + strh r1, [r0, #4] + b _022170F2 +_02216ED0: + ldr r0, [sp, #0x14] + cmp r0, #2 + bne _02216F02 + ldr r0, [sp, #0xc4] + cmp r0, #1 + bne _02216EEC + ldr r1, [sp, #0xb8] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0xbc] + strh r1, [r0, #2] + ldr r1, [sp, #0xc0] + strh r1, [r0, #4] + b _022170F2 +_02216EEC: + ldr r0, [sp, #0xb8] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0xbc] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0xc0] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02216F02: + cmp r0, #5 + bne _02216F32 + ldr r0, [sp, #0xb4] + cmp r0, #1 + bne _02216F22 + ldr r0, [sp, #0x88] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x8c] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x90] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02216F22: + ldr r1, [sp, #0x88] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x8c] + strh r1, [r0, #2] + ldr r1, [sp, #0x90] + strh r1, [r0, #4] + b _022170F2 +_02216F32: + ldr r0, [sp, #0x84] + cmp r0, #1 + bne _02216F48 + ldr r1, [sp, #0x78] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x7c] + strh r1, [r0, #2] + ldr r1, [sp, #0x80] + strh r1, [r0, #4] + b _022170F2 +_02216F48: + ldr r0, [sp, #0x78] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x7c] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x80] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02216F5E: + ldr r0, [sp, #0x14] + cmp r0, #3 + bne _02216F74 + ldr r1, [sp, #0x78] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x7c] + strh r1, [r0, #2] + ldr r1, [sp, #0x80] + strh r1, [r0, #4] + b _022170F2 +_02216F74: + cmp r0, #5 + add r0, sp, #0x20 + bne _02216F88 + ldr r1, [sp, #0x68] + strh r1, [r0] + ldr r1, [sp, #0x6c] + strh r1, [r0, #2] + ldr r1, [sp, #0x70] + strh r1, [r0, #4] + b _022170F2 +_02216F88: + ldr r1, [sp, #0x88] + strh r1, [r0] + ldr r1, [sp, #0x8c] + strh r1, [r0, #2] + ldr r1, [sp, #0x90] + strh r1, [r0, #4] + b _022170F2 +_02216F96: + ldr r0, [sp, #0x14] + cmp r0, #3 + bne _02216FC8 + ldr r0, [sp, #0xc4] + cmp r0, #1 + bne _02216FB2 + ldr r1, [sp, #0x88] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x8c] + strh r1, [r0, #2] + ldr r1, [sp, #0x90] + strh r1, [r0, #4] + b _022170F2 +_02216FB2: + ldr r0, [sp, #0x88] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x8c] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x90] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02216FC8: + cmp r0, #2 + bne _02216FF8 + ldr r0, [sp, #0xc4] + cmp r0, #1 + bne _02216FE2 + ldr r1, [sp, #0x98] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x9c] + strh r1, [r0, #2] + ldr r1, [sp, #0xa0] + strh r1, [r0, #4] + b _022170F2 +_02216FE2: + ldr r0, [sp, #0x98] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x9c] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0xa0] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02216FF8: + ldr r0, [sp, #0xc4] + cmp r0, #1 + bne _0221700E + ldr r1, [sp, #0x68] + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x6c] + strh r1, [r0, #2] + ldr r1, [sp, #0x70] + strh r1, [r0, #4] + b _022170F2 +_0221700E: + ldr r0, [sp, #0x68] + neg r1, r0 + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, [sp, #0x6c] + neg r1, r1 + strh r1, [r0, #2] + ldr r1, [sp, #0x70] + neg r1, r1 + strh r1, [r0, #4] + b _022170F2 +_02217024: + ldr r1, _0221706C ; =0xFFFFFCE0 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x4b + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0x7d + lsl r1, r1, #2 + strh r1, [r0, #4] + b _022170F2 +_02217038: + ldr r1, _02217070 ; =0xFFFFF2AE + add r0, sp, #0x20 + strh r1, [r0] + ldr r1, _02217074 ; =0xFFFFF5AC + b _02217078 + nop +_02217044: .word 0xFFFFF6E0 +_02217048: .word 0x0222BEA4 +_0221704C: .word 0x0222BEA8 +_02217050: .word 0x0222BEAC +_02217054: .word 0xFFFFEF10 +_02217058: .word 0x0222C054 +_0221705C: .word 0x0222C058 +_02217060: .word 0x0222C05C +_02217064: .word 0x0222B414 +_02217068: .word 0x0222B334 +_0221706C: .word 0xFFFFFCE0 +_02217070: .word 0xFFFFF2AE +_02217074: .word 0xFFFFF5AC +_02217078: + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + b _022170F2 +_02217080: + ldr r1, _02217114 ; =0xFFFFF290 + add r0, sp, #0x20 + strh r1, [r0] + mov r1, #0x7a + lsl r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + b _022170F2 +_02217092: + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x24] + bl MOD08_02227470 + cmp r0, #3 + add r0, sp, #0x20 + bne _022170B6 + mov r1, #0x3b + lsl r1, r1, #6 + strh r1, [r0] + mov r1, #0x21 + lsl r1, r1, #6 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + b _022170F2 +_022170B6: + ldr r1, _02217118 ; =0xFFFFE890 + strh r1, [r0] + ldr r1, _0221711C ; =0xFFFFF768 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + b _022170F2 +_022170C4: + ldr r4, _02217120 ; =0x0222B374 + add r3, sp, #0x28 + mov r2, #6 +_022170CA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022170CA + ldr r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r1, [r1, #0x24] + bl MOD08_02227468 + lsl r2, r0, #3 + add r0, sp, #0x28 + ldr r1, [r0, r2] + add r0, sp, #0x20 + strh r1, [r0] + add r1, sp, #0x2c + ldr r1, [r1, r2] + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] +_022170F2: + add r1, sp, #0x20 + ldr r0, [sp] + ldrh r2, [r1] + add r0, #0x50 + strh r2, [r0] + ldr r0, [sp] + ldrh r2, [r1, #2] + add r0, #0x52 + strh r2, [r0] + ldr r0, [sp] + ldrh r1, [r1, #4] + add r0, #0x54 + str r0, [sp] + strh r1, [r0] + add sp, #0x148 + pop {r3, r4, r5, r6, r7, pc} + nop +_02217114: .word 0xFFFFF290 +_02217118: .word 0xFFFFE890 +_0221711C: .word 0xFFFFF768 +_02217120: .word 0x0222B374 + + thumb_func_start MOD08_02217124 +MOD08_02217124: ; 0x02217124 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + bl MOD08_022178CC + add r6, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _02217154 +_02217136: + add r0, r4, #0 + bl MOD08_022178A4 + ldr r1, [r5, #0x1c] + and r1, r0 + cmp r0, r1 + bne _0221714E + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD08_0221788C +_0221714E: + add r4, r4, #1 + cmp r4, r6 + blt _02217136 +_02217154: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02217158 +MOD08_02217158: ; 0x02217158 + add r3, r0, #0 + add r2, r1, #0 + add r1, r3, #0 + ldr r3, _02217164 ; =MOD08_02217B04 + ldr r0, [r2, #0x20] + bx r3 + .align 2, 0 +_02217164: .word MOD08_02217B04 + + thumb_func_start MOD08_02217168 +MOD08_02217168: ; 0x02217168 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r4, #0x24] + bl MOD08_02227468 + ldr r0, [r4] + ldr r1, [r4, #0x28] + bl MOD08_02227468 + ldr r1, [r4, #0xc] + cmp r1, #3 + bhi _022171B0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02217190: ; jump table + .short _022171B0 - _02217190 - 2 ; case 0 + .short _02217198 - _02217190 - 2 ; case 1 + .short _022171A6 - _02217190 - 2 ; case 2 + .short _022171B0 - _02217190 - 2 ; case 3 +_02217198: + cmp r0, #0 + bne _022171A2 + mov r5, #1 + lsl r5, r5, #8 + b _022171B0 +_022171A2: + ldr r5, _022171C4 ; =0xFFFFEC00 + b _022171B0 +_022171A6: + cmp r0, #0 + bne _022171AE + mov r5, #0 + b _022171B0 +_022171AE: + ldr r5, _022171C8 ; =0xFFFFEB00 +_022171B0: + ldr r0, [r4, #4] + bl FUN_02013448 + ldr r0, [r6, #0x20] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r5, r0 + str r0, [r6, #0x30] + pop {r4, r5, r6, pc} + nop +_022171C4: .word 0xFFFFEC00 +_022171C8: .word 0xFFFFEB00 + + thumb_func_start MOD08_022171CC +MOD08_022171CC: ; 0x022171CC + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_0201341C + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212468 + str r0, [r4, #4] + add r1, r4, #0 + ldr r0, [r4] + add r1, #0xc + mov r2, #6 + bl MOD08_02215434 + ldr r0, [r4, #0x10] + cmp r0, #4 + bhi _02217214 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221720A: ; jump table + .short _02217214 - _0221720A - 2 ; case 0 + .short _02217226 - _0221720A - 2 ; case 1 + .short _02217238 - _0221720A - 2 ; case 2 + .short _0221724A - _0221720A - 2 ; case 3 + .short _0221725C - _0221720A - 2 ; case 4 +_02217214: + ldr r0, [r4] + bl MOD08_02212458 + str r0, [r4, #0x24] + ldr r0, [r4] + bl MOD08_02212460 + str r0, [r4, #0x28] + b _0221726C +_02217226: + ldr r0, [r4] + bl MOD08_02212460 + str r0, [r4, #0x24] + ldr r0, [r4] + bl MOD08_02212458 + str r0, [r4, #0x28] + b _0221726C +_02217238: + ldr r0, [r4] + bl MOD08_02212458 + str r0, [r4, #0x24] + ldr r0, [r4] + bl MOD08_02212460 + str r0, [r4, #0x28] + b _0221726C +_0221724A: + ldr r0, [r4] + bl MOD08_02212460 + str r0, [r4, #0x24] + ldr r0, [r4] + bl MOD08_02212458 + str r0, [r4, #0x28] + b _0221726C +_0221725C: + ldr r0, [r4] + bl MOD08_02212458 + str r0, [r4, #0x24] + ldr r0, [r4] + bl MOD08_02212460 + str r0, [r4, #0x28] +_0221726C: + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_022164C8 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_0221727C +MOD08_0221727C: ; 0x0221727C + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6] + ldr r1, [r6, #0x24] + mov r4, #1 + bl MOD08_02227468 + add r5, r0, #0 + ldr r0, [r6] + ldr r1, [r6, #0x28] + bl MOD08_02227468 + cmp r5, #5 + bhi _022172BA + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022172A4: ; jump table + .short _022172BA - _022172A4 - 2 ; case 0 + .short _022172B0 - _022172A4 - 2 ; case 1 + .short _022172BA - _022172A4 - 2 ; case 2 + .short _022172B4 - _022172A4 - 2 ; case 3 + .short _022172BA - _022172A4 - 2 ; case 4 + .short _022172B8 - _022172A4 - 2 ; case 5 +_022172B0: + sub r4, r4, #2 + b _022172BA +_022172B4: + sub r4, r4, #2 + b _022172BA +_022172B8: + sub r4, r4, #2 +_022172BA: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_022172C0 +MOD08_022172C0: ; 0x022172C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, sp, #0x20 + mov r4, #0 + str r4, [r0] + str r4, [r0, #4] + add r6, r1, #0 + add r7, r2, #0 + str r4, [r0, #8] +_022172D4: + ldr r0, [r5] + add r1, r6, #0 + bl MOD08_02227468 + cmp r4, r0 + ldr r0, [r5] + bne _022172EC + add r1, sp, #0x10 + mov r2, #4 + bl MOD08_02215434 + b _022172F4 +_022172EC: + add r1, sp, #0 + mov r2, #4 + bl MOD08_02215434 +_022172F4: + add r4, r4, #1 + cmp r4, #6 + blt _022172D4 + add r0, r5, #0 + bl MOD08_0221727C + strb r0, [r5, #8] + ldr r0, [sp, #0x14] + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x28] + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _02217318 + mov r0, #1 + strb r0, [r5, #8] +_02217318: + mov r1, #8 + ldrsb r0, [r5, r1] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + mul r0, r2 + str r0, [sp, #0x20] + ldrsb r2, [r5, r1] + mul r2, r3 + str r2, [sp, #0x24] + ldrsb r1, [r5, r1] + ldr r2, [sp, #0x28] + mul r1, r2 + str r1, [sp, #0x28] + ldr r1, [r7] + add r0, r1, r0 + str r0, [r7] + ldr r1, [r7, #4] + ldr r0, [sp, #0x24] + add r0, r1, r0 + str r0, [r7, #4] + ldr r1, [r7, #8] + ldr r0, [sp, #0x28] + add r0, r1, r0 + str r0, [r7, #8] + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0221734C +MOD08_0221734C: ; 0x0221734C + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + add r4, r1, #0 + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldr r0, [r5] + add r1, sp, #0xc + mov r2, #4 + bl MOD08_02215434 + add r0, r5, #0 + bl MOD08_0221727C + strb r0, [r5, #8] + ldr r0, [sp, #0x10] + str r0, [sp] + ldr r0, [sp, #0x14] + str r0, [sp, #4] + ldr r0, [sp, #0x18] + str r0, [sp, #8] + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _02217386 + mov r0, #1 + strb r0, [r5, #8] +_02217386: + mov r1, #8 + ldrsb r0, [r5, r1] + ldr r2, [sp] + ldr r3, [sp, #4] + mul r0, r2 + str r0, [sp] + ldrsb r2, [r5, r1] + mul r2, r3 + str r2, [sp, #4] + ldrsb r1, [r5, r1] + ldr r2, [sp, #8] + mul r1, r2 + str r1, [sp, #8] + ldr r1, [r4] + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #4] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [r4, #4] + ldr r1, [r4, #8] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [r4, #8] + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022173BC +MOD08_022173BC: ; 0x022173BC + ldr r3, _022173C4 ; =MOD08_02215434 + ldr r0, [r0] + mov r2, #5 + bx r3 + .align 2, 0 +_022173C4: .word MOD08_02215434 + + thumb_func_start MOD08_022173C8 +MOD08_022173C8: ; 0x022173C8 + mov r0, #1 + bx lr + + thumb_func_start MOD08_022173CC +MOD08_022173CC: ; 0x022173CC + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + add r4, r1, #0 + add r1, sp, #0 + mov r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + strh r0, [r1, #4] + add r0, r4, #0 + add r1, sp, #8 + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _022173F8 + mov r0, #1 + strb r0, [r4, #8] +_022173F8: + ldr r0, [sp, #8] + cmp r0, #3 + bgt _02217416 + cmp r0, #0 + blt _02217482 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221740E: ; jump table + .short _0221741A - _0221740E - 2 ; case 0 + .short _02217446 - _0221740E - 2 ; case 1 + .short _02217482 - _0221740E - 2 ; case 2 + .short _02217482 - _0221740E - 2 ; case 3 +_02217416: + cmp r0, #0xff + b _02217482 +_0221741A: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02013514 + add r2, sp, #0 + mov r0, #0 + mov r1, #8 + ldrsh r3, [r2, r0] + ldrsb r0, [r4, r1] + mul r0, r3 + strh r0, [r2] + mov r0, #2 + ldrsh r3, [r2, r0] + ldrsb r0, [r4, r1] + mul r0, r3 + strh r0, [r2, #2] + mov r0, #4 + ldrsh r3, [r2, r0] + ldrsb r0, [r4, r1] + mul r0, r3 + strh r0, [r2, #4] + b _02217482 +_02217446: + ldr r0, [sp, #0x10] + add r2, sp, #0 + strh r0, [r2] + ldr r0, [sp, #0x14] + mov r1, #8 + strh r0, [r2, #2] + ldr r0, [sp, #0x18] + strh r0, [r2, #4] + mov r0, #0 + ldrsh r3, [r2, r0] + ldrsb r0, [r4, r1] + mul r0, r3 + strh r0, [r2] + mov r0, #2 + ldrsh r3, [r2, r0] + ldrsb r0, [r4, r1] + mul r0, r3 + strh r0, [r2, #2] + mov r0, #4 + ldrsh r3, [r2, r0] + ldrsb r0, [r4, r1] + add r1, sp, #0 + mul r0, r3 + strh r0, [r2, #4] + add r0, r5, #0 + bl FUN_02013514 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, pc} +_02217482: + add r1, sp, #0 + mov r0, #0 + ldrsh r2, [r1, r0] + ldr r0, [r4, #0x2c] + sub r0, r2, r0 + strh r0, [r1] + mov r0, #2 + ldrsh r2, [r1, r0] + ldr r0, [r4, #0x30] + sub r0, r2, r0 + strh r0, [r1, #2] + mov r0, #4 + ldrsh r2, [r1, r0] + ldr r0, [r4, #0x34] + sub r0, r2, r0 + strh r0, [r1, #4] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02013514 + mov r0, #1 + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD08_022174B0 +MOD08_022174B0: ; 0x022174B0 + mov r0, #1 + bx lr + + thumb_func_start MOD08_022174B4 +MOD08_022174B4: ; 0x022174B4 + mov r0, #1 + bx lr + + thumb_func_start MOD08_022174B8 +MOD08_022174B8: ; 0x022174B8 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r1, #0 + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r4, #0 + add r1, sp, #0xc + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _022174E4 + mov r0, #1 + strb r0, [r4, #8] +_022174E4: + ldr r0, [sp, #0xc] + cmp r0, #3 + bgt _02217502 + cmp r0, #0 + blt _02217562 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022174FA: ; jump table + .short _02217506 - _022174FA - 2 ; case 0 + .short _0221752A - _022174FA - 2 ; case 1 + .short _0221754C - _022174FA - 2 ; case 2 + .short _02217558 - _022174FA - 2 ; case 3 +_02217502: + cmp r0, #0xff + b _02217562 +_02217506: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02013548 + mov r0, #8 + ldrsb r1, [r4, r0] + ldr r2, [sp] + mul r1, r2 + str r1, [sp] + ldrsb r1, [r4, r0] + ldr r2, [sp, #4] + mul r1, r2 + str r1, [sp, #4] + ldrsb r0, [r4, r0] + ldr r1, [sp, #8] + mul r0, r1 + str r0, [sp, #8] + b _02217562 +_0221752A: + ldr r2, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #8 + ldrsb r6, [r4, r3] + mul r6, r2 + str r6, [sp] + ldrsb r2, [r4, r3] + mul r2, r1 + str r2, [sp, #4] + ldrsb r1, [r4, r3] + mul r1, r0 + str r1, [sp, #8] + b _02217562 +_0221754C: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0 + bl MOD08_0222771C + b _02217562 +_02217558: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0 + bl MOD08_0222771C +_02217562: + ldr r1, [sp] + ldr r0, [r4, #0x2c] + sub r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r4, #0x30] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02013530 + mov r0, #1 + add sp, #0x20 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02217580 +MOD08_02217580: ; 0x02217580 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + add r0, r4, #0 + add r1, sp, #4 + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #8] + cmp r0, #1 + bne _022175A8 + mov r0, #1 + strb r0, [r4, #8] +_022175A8: + ldr r0, [sp, #4] + cmp r0, #3 + bgt _022175C6 + cmp r0, #0 + blt _022175F4 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022175BE: ; jump table + .short _022175CA - _022175BE - 2 ; case 0 + .short _022175E2 - _022175BE - 2 ; case 1 + .short _022175F4 - _022175BE - 2 ; case 2 + .short _022175F4 - _022175BE - 2 ; case 3 +_022175C6: + cmp r0, #0xff + b _022175F4 +_022175CA: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02013594 + add r1, sp, #0 + mov r0, #0 + ldrsh r2, [r1, r0] + mov r0, #8 + ldrsb r0, [r4, r0] + mul r0, r2 + strh r0, [r1] + b _022175F4 +_022175E2: + ldr r0, [sp, #0xc] + add r1, sp, #0 + strh r0, [r1] + mov r0, #0 + ldrsh r2, [r1, r0] + mov r0, #8 + ldrsb r0, [r4, r0] + mul r0, r2 + strh r0, [r1] +_022175F4: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0201357C + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02217604 +MOD08_02217604: ; 0x02217604 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + add r0, r4, #0 + add r1, sp, #4 + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #8] + cmp r0, #1 + bne _0221762C + mov r0, #1 + strb r0, [r4, #8] +_0221762C: + ldr r0, [sp, #4] + cmp r0, #3 + bgt _0221764A + cmp r0, #0 + blt _02217674 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02217642: ; jump table + .short _0221764E - _02217642 - 2 ; case 0 + .short _02217664 - _02217642 - 2 ; case 1 + .short _02217674 - _02217642 - 2 ; case 2 + .short _02217674 - _02217642 - 2 ; case 3 +_0221764A: + cmp r0, #0xff + b _02217674 +_0221764E: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_020135C4 + add r1, sp, #0 + mov r0, #8 + ldrh r2, [r1] + ldrsb r0, [r4, r0] + mul r0, r2 + strh r0, [r1] + b _02217674 +_02217664: + ldr r0, [sp, #0xc] + add r1, sp, #0 + strh r0, [r1] + mov r0, #8 + ldrh r2, [r1] + ldrsb r0, [r4, r0] + mul r0, r2 + strh r0, [r1] +_02217674: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_020135B0 + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02217684 +MOD08_02217684: ; 0x02217684 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + add r0, r4, #0 + add r1, sp, #4 + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #8] + cmp r0, #1 + bne _022176AC + mov r0, #1 + strb r0, [r4, #8] +_022176AC: + ldr r1, [sp, #4] + cmp r1, #3 + bgt _022176CA + cmp r1, #0 + blt _022176DE + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022176C2: ; jump table + .short _022176CE - _022176C2 - 2 ; case 0 + .short _022176D8 - _022176C2 - 2 ; case 1 + .short _022176DE - _022176C2 - 2 ; case 2 + .short _022176DE - _022176C2 - 2 ; case 3 +_022176CA: + cmp r1, #0xff + b _022176DE +_022176CE: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_020135F4 + b _022176DE +_022176D8: + ldr r1, [sp, #0xc] + add r0, sp, #0 + strh r1, [r0] +_022176DE: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_020135E0 + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022176EC +MOD08_022176EC: ; 0x022176EC + mov r0, #1 + bx lr + + thumb_func_start MOD08_022176F0 +MOD08_022176F0: ; 0x022176F0 + mov r0, #1 + bx lr + + thumb_func_start MOD08_022176F4 +MOD08_022176F4: ; 0x022176F4 + mov r0, #1 + bx lr + + thumb_func_start MOD08_022176F8 +MOD08_022176F8: ; 0x022176F8 + mov r0, #1 + bx lr + + thumb_func_start MOD08_022176FC +MOD08_022176FC: ; 0x022176FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r0, #0 + add r4, r1, #0 + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r4, #0 + add r1, sp, #0xc + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _02217728 + mov r0, #1 + strb r0, [r4, #8] +_02217728: + ldr r0, [sp, #0xc] + cmp r0, #4 + bgt _02217748 + cmp r0, #0 + blt _022177E2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221773E: ; jump table + .short _0221774C - _0221773E - 2 ; case 0 + .short _02217770 - _0221773E - 2 ; case 1 + .short _022177CC - _0221773E - 2 ; case 2 + .short _022177D8 - _0221773E - 2 ; case 3 + .short _02217792 - _0221773E - 2 ; case 4 +_02217748: + cmp r0, #0xff + b _022177E2 +_0221774C: + add r0, r7, #0 + add r1, sp, #0 + bl FUN_02013628 + mov r0, #8 + ldrsb r1, [r4, r0] + ldr r2, [sp] + mul r1, r2 + str r1, [sp] + ldrsb r1, [r4, r0] + ldr r2, [sp, #4] + mul r1, r2 + str r1, [sp, #4] + ldrsb r0, [r4, r0] + ldr r1, [sp, #8] + mul r0, r1 + str r0, [sp, #8] + b _022177E2 +_02217770: + ldr r2, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #8 + ldrsb r5, [r4, r3] + mul r5, r2 + str r5, [sp] + ldrsb r2, [r4, r3] + mul r2, r1 + str r2, [sp, #4] + ldrsb r1, [r4, r3] + mul r1, r0 + str r1, [sp, #8] + b _022177E2 +_02217792: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0 + bl MOD08_0222771C + ldr r1, [sp] + ldr r5, [sp, #0x14] + add r0, r1, #0 + ldr r6, [sp, #0x18] + mul r0, r5 + add r1, r6, #0 + bl _s32_div_f + ldr r1, [sp, #4] + str r0, [sp] + add r0, r1, #0 + mul r0, r5 + add r1, r6, #0 + bl _s32_div_f + ldr r1, [sp, #8] + str r0, [sp, #4] + add r0, r1, #0 + mul r0, r5 + add r1, r6, #0 + bl _s32_div_f + str r0, [sp, #8] + b _022177E2 +_022177CC: + ldr r0, [r4] + ldr r1, [r4, #0x24] + add r2, sp, #0 + bl MOD08_0222771C + b _022177E2 +_022177D8: + ldr r0, [r4] + ldr r1, [r4, #0x28] + add r2, sp, #0 + bl MOD08_0222771C +_022177E2: + ldr r1, [sp] + ldr r0, [r4, #0x2c] + sub r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r4, #0x30] + sub r0, r1, r0 + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r4, #0x34] + sub r0, r1, r0 + str r0, [sp, #8] + add r0, r7, #0 + add r1, sp, #0 + bl FUN_02013610 + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02217808 +MOD08_02217808: ; 0x02217808 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + add r0, r4, #0 + add r1, sp, #4 + bl MOD08_022173BC + add r0, r4, #0 + bl MOD08_0221727C + strb r0, [r4, #8] + ldr r0, [sp, #8] + cmp r0, #1 + bne _02217830 + mov r0, #1 + strb r0, [r4, #8] +_02217830: + ldr r0, [sp, #4] + cmp r0, #3 + bgt _0221784E + cmp r0, #0 + blt _0221787C + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02217846: ; jump table + .short _02217852 - _02217846 - 2 ; case 0 + .short _0221786A - _02217846 - 2 ; case 1 + .short _0221787C - _02217846 - 2 ; case 2 + .short _0221787C - _02217846 - 2 ; case 3 +_0221784E: + cmp r0, #0xff + b _0221787C +_02217852: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02013674 + add r1, sp, #0 + mov r0, #0 + ldrsh r2, [r1, r0] + mov r0, #8 + ldrsb r0, [r4, r0] + mul r0, r2 + strh r0, [r1] + b _0221787C +_0221786A: + ldr r0, [sp, #0xc] + add r1, sp, #0 + strh r0, [r1] + mov r0, #0 + ldrsh r2, [r1, r0] + mov r0, #8 + ldrsb r0, [r4, r0] + mul r0, r2 + strh r0, [r1] +_0221787C: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0201365C + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221788C +MOD08_0221788C: ; 0x0221788C + push {r3, lr} + add r3, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _022178A0 ; =0x0222C204 + lsl r3, r3, #2 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + nop +_022178A0: .word 0x0222C204 + + thumb_func_start MOD08_022178A4 +MOD08_022178A4: ; 0x022178A4 + push {r3, r4, r5} + sub sp, #0x3c + ldr r4, _022178C8 ; =0x0222C23C + add r5, r0, #0 + add r3, sp, #0 + mov r2, #7 +_022178B0: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022178B0 + ldr r0, [r4] + lsl r1, r5, #2 + str r0, [r3] + add r0, sp, #0 + ldr r0, [r0, r1] + add sp, #0x3c + pop {r3, r4, r5} + bx lr + .align 2, 0 +_022178C8: .word 0x0222C23C + + thumb_func_start MOD08_022178CC +MOD08_022178CC: ; 0x022178CC + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _022178F4 ; =0x0000FEFE + add r5, r4, #0 +_022178D4: + add r0, r4, #0 + bl MOD08_022178A4 + add r4, r4, #1 + cmp r0, r6 + beq _022178E6 + add r5, r5, #1 + cmp r5, #0xff + blt _022178D4 +_022178E6: + cmp r5, #0xff + blt _022178EE + mov r0, #0 + pop {r4, r5, r6, pc} +_022178EE: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_022178F4: .word 0x0000FEFE + + thumb_func_start MOD08_022178F8 +MOD08_022178F8: ; 0x022178F8 + ldr r3, _02217900 ; =MOD08_02215434 + ldr r0, [r0] + mov r2, #4 + bx r3 + .align 2, 0 +_02217900: .word MOD08_02215434 + + thumb_func_start MOD08_02217904 +MOD08_02217904: ; 0x02217904 + push {r3, lr} + sub sp, #8 + add r2, sp, #0 + mov r0, #0 + strh r0, [r2] + strh r0, [r2, #2] + strh r0, [r2, #4] + strh r0, [r2, #6] + ldr r0, [r1, #4] + bl FUN_0201343C + add r1, r0, #0 + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #1 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD08_02217928 +MOD08_02217928: ; 0x02217928 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _02217960 ; =0x0222C278 + add r0, sp, #0 + ldrh r2, [r1, #0x20] + strh r2, [r0] + ldrh r2, [r1, #0x22] + strh r2, [r0, #2] + ldrh r2, [r1, #0x24] + ldrh r1, [r1, #0x26] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #4] + bl FUN_0201343C + add r5, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02013440 + add r0, sp, #0 + add r1, r5, #0 + bl FUN_0201EF90 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02217960: .word 0x0222C278 + + thumb_func_start MOD08_02217964 +MOD08_02217964: ; 0x02217964 + push {r4, lr} + sub sp, #0x18 + add r4, r1, #0 + add r1, sp, #0 + mov r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + strh r0, [r1, #4] + strh r0, [r1, #6] + add r0, r4, #0 + add r1, sp, #8 + bl MOD08_022178F8 + ldr r1, [sp, #0xc] + add r0, sp, #0 + strh r1, [r0] + ldr r1, [sp, #0x10] + strh r1, [r0, #2] + ldr r1, [sp, #0x14] + strh r1, [r0, #4] + ldr r0, [r4, #4] + bl FUN_0201343C + add r1, r0, #0 + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #1 + add sp, #0x18 + pop {r4, pc} + + thumb_func_start MOD08_022179A0 +MOD08_022179A0: ; 0x022179A0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _022179D8 ; =0x0222C278 + add r0, sp, #0 + ldrh r2, [r1, #0x18] + strh r2, [r0] + ldrh r2, [r1, #0x1a] + strh r2, [r0, #2] + ldrh r2, [r1, #0x1c] + ldrh r1, [r1, #0x1e] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #4] + bl FUN_0201343C + add r5, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02013440 + add r0, sp, #0 + add r1, r5, #0 + bl FUN_0201EF90 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_022179D8: .word 0x0222C278 + + thumb_func_start MOD08_022179DC +MOD08_022179DC: ; 0x022179DC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r1, _02217A38 ; =0x0222C278 + add r0, sp, #0 + ldrh r2, [r1, #0x10] + strh r2, [r0, #8] + ldrh r2, [r1, #0x12] + strh r2, [r0, #0xa] + ldrh r2, [r1, #0x14] + strh r2, [r0, #0xc] + ldrh r2, [r1, #0x16] + strh r2, [r0, #0xe] + ldrh r2, [r1, #0x28] + strh r2, [r0] + ldrh r2, [r1, #0x2a] + strh r2, [r0, #2] + ldrh r2, [r1, #0x2c] + strh r2, [r0, #4] + ldrh r1, [r1, #0x2e] + strh r1, [r0, #6] + ldr r0, [r4, #4] + bl FUN_0201343C + add r5, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02013440 + ldr r0, [r4] + bl MOD08_02212004 + cmp r0, #1 + bne _02217A2A + add r0, sp, #8 + add r1, r5, #0 + bl FUN_0201EF90 + b _02217A32 +_02217A2A: + add r0, sp, #0 + add r1, r5, #0 + bl FUN_0201EF90 +_02217A32: + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02217A38: .word 0x0222C278 + + thumb_func_start MOD08_02217A3C +MOD08_02217A3C: ; 0x02217A3C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _02217A74 ; =0x0222C278 + add r0, sp, #0 + ldrh r2, [r1] + strh r2, [r0] + ldrh r2, [r1, #2] + strh r2, [r0, #2] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #4] + bl FUN_0201343C + add r5, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02013440 + add r0, sp, #0 + add r1, r5, #0 + bl FUN_0201EF90 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02217A74: .word 0x0222C278 + + thumb_func_start MOD08_02217A78 +MOD08_02217A78: ; 0x02217A78 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _02217AB0 ; =0x0222C278 + add r0, sp, #0 + ldrh r2, [r1, #8] + strh r2, [r0] + ldrh r2, [r1, #0xa] + strh r2, [r0, #2] + ldrh r2, [r1, #0xc] + ldrh r1, [r1, #0xe] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #4] + bl FUN_0201343C + add r5, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02013440 + add r0, sp, #0 + add r1, r5, #0 + bl FUN_0201EF90 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02217AB0: .word 0x0222C278 + + thumb_func_start MOD08_02217AB4 +MOD08_02217AB4: ; 0x02217AB4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r0, [r5, #4] + bl FUN_0201343C + add r4, r0, #0 + ldr r0, [r5] + ldr r1, [r5, #0x24] + add r2, sp, #0 + bl MOD08_022278FC + add r0, sp, #0 + add r1, r4, #0 + bl FUN_0201F04C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02217ADC +MOD08_02217ADC: ; 0x02217ADC + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r0, [r5, #4] + bl FUN_0201343C + add r4, r0, #0 + ldr r0, [r5] + ldr r1, [r5, #0x28] + add r2, sp, #0 + bl MOD08_022278FC + add r0, sp, #0 + add r1, r4, #0 + bl FUN_0201F04C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02217B04 +MOD08_02217B04: ; 0x02217B04 + push {r3, lr} + add r3, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _02217B18 ; =0x0222C2A8 + lsl r3, r3, #2 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + nop +_02217B18: .word 0x0222C2A8 + + thumb_func_start MOD08_02217B1C +MOD08_02217B1C: ; 0x02217B1C + push {r3, r4, r5, r6} + cmp r2, #0 + beq _02217B32 + mov r4, #0x18 + add r6, r0, #0 + mul r6, r4 + ldr r4, _02217B48 ; =0x0222C2CC + lsl r5, r1, #2 + add r4, r4, r6 + ldrsh r4, [r5, r4] + strh r4, [r2] +_02217B32: + cmp r3, #0 + beq _02217B44 + mov r2, #0x18 + mul r2, r0 + ldr r0, _02217B4C ; =0x0222C2CE + lsl r1, r1, #2 + add r0, r0, r2 + ldrsh r0, [r1, r0] + strh r0, [r3] +_02217B44: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_02217B48: .word 0x0222C2CC +_02217B4C: .word 0x0222C2CE + + thumb_func_start MOD08_02217B50 +MOD08_02217B50: ; 0x02217B50 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02217B70 + mov r0, #0 + add r1, r5, #2 + add r2, r4, #0 + add r3, r6, #0 + bl MOD08_02217B1C + pop {r3, r4, r5, r6, r7, pc} +_02217B70: + add r0, r7, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _02217B88 + mov r0, #1 + sub r1, r5, #2 + add r2, r4, #0 + add r3, r6, #0 + bl MOD08_02217B1C + pop {r3, r4, r5, r6, r7, pc} +_02217B88: + mov r0, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD08_02217B1C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02217B98 +MOD08_02217B98: ; 0x02217B98 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r2, #0 + bl MOD08_02227468 + add r4, r0, #0 + add r0, r7, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _02217BB2 + mov r5, #1 + b _02217BB4 +_02217BB2: + mov r5, #0 +_02217BB4: + add r0, r7, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02217BC0 + add r4, r4, #2 +_02217BC0: + cmp r6, #3 + bhi _02217BF8 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02217BD0: ; jump table + .short _02217BD8 - _02217BD0 - 2 ; case 0 + .short _02217BE8 - _02217BD0 - 2 ; case 1 + .short _02217BD8 - _02217BD0 - 2 ; case 2 + .short _02217BE8 - _02217BD0 - 2 ; case 3 +_02217BD8: + mov r0, #0x18 + add r2, r5, #0 + mul r2, r0 + ldr r0, _02217C00 ; =0x0222C2CC + lsl r1, r4, #2 + add r0, r0, r2 + ldrsh r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02217BE8: + mov r0, #0x18 + add r2, r5, #0 + mul r2, r0 + ldr r0, _02217C04 ; =0x0222C2CE + lsl r1, r4, #2 + add r0, r0, r2 + ldrsh r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02217BF8: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02217C00: .word 0x0222C2CC +_02217C04: .word 0x0222C2CE + + thumb_func_start MOD08_02217C08 +MOD08_02217C08: ; 0x02217C08 + push {r3, lr} + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + + thumb_func_start MOD08_02217C1C +MOD08_02217C1C: ; 0x02217C1C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r5, #1 + bl MOD08_02227470 + add r4, r0, #0 + add r0, r6, #0 + bl MOD08_02212004 + cmp r0, #0 + beq _02217C3A + cmp r4, #3 + bne _02217C40 + sub r5, r5, #2 + b _02217C40 +_02217C3A: + cmp r4, #4 + bne _02217C40 + sub r5, r5, #2 +_02217C40: + add r0, r5, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02217C44 +MOD08_02217C44: ; 0x02217C44 + push {r4, lr} + mov r4, #1 + bl MOD08_02227470 + cmp r0, #4 + bne _02217C52 + sub r4, r4, #2 +_02217C52: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02217C58 +MOD08_02217C58: ; 0x02217C58 + ldr r3, _02217C60 ; =0x020C50B8 + sub r0, r1, r0 + lsl r1, r2, #0xc + bx r3 + .align 2, 0 +_02217C60: .word 0x020C50B8 + + thumb_func_start MOD08_02217C64 +MOD08_02217C64: ; 0x02217C64 + push {r3, lr} + sub r0, r1, r0 + add r1, r2, #0 + bl FX_Div + add r1, sp, #0 + str r0, [sp] + bl FX_Modf + cmp r0, #0 + beq _02217C84 + mov r0, #1 + ldr r1, [sp] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp] +_02217C84: + ldr r0, [sp] + cmp r0, #0 + bge _02217C8C + neg r0, r0 +_02217C8C: + str r0, [sp] + asr r0, r0, #0xc + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02217C94 +MOD08_02217C94: ; 0x02217C94 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0 + ldrsh r1, [r4, r1] + add r1, r2, r1 + mov r2, #2 + ldrsh r2, [r4, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} + + thumb_func_start MOD08_02217CB4 +MOD08_02217CB4: ; 0x02217CB4 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD08_0221825C + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl FUN_0200C884 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_02217CD0 +MOD08_02217CD0: ; 0x02217CD0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + add r6, r3, #0 + ldrsh r3, [r5, r1] + add r0, r4, #0 + add r2, r2, r3 + bl FUN_02007558 + mov r2, #2 + ldrsh r2, [r5, r2] + add r0, r4, #0 + mov r1, #1 + add r2, r6, r2 + bl FUN_02007558 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02217CF4 +MOD08_02217CF4: ; 0x02217CF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #0 + add r4, r1, #0 + ldrsh r2, [r5, r2] + add r0, r4, #0 + mov r1, #0xc + bl FUN_02007558 + mov r2, #2 + ldrsh r2, [r5, r2] + add r0, r4, #0 + mov r1, #0xd + bl FUN_02007558 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02217D14 +MOD08_02217D14: ; 0x02217D14 + push {r3, r4, r5, lr} + add r4, r3, #0 + add r5, r0, #0 + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0x14] + str r3, [r5, #4] + str r1, [r5, #8] + str r0, [r5, #0xc] + ldr r0, [sp, #0x18] + str r4, [r5, #0x10] + str r0, [r5, #0x14] + sub r0, r2, r1 + add r1, r3, #0 + bl _s32_div_f + str r0, [r5, #0x18] + add r0, sp, #0 + ldrh r0, [r0, #0x10] + ldr r1, [sp, #0x1c] + sub r0, r0, r4 + bl _s32_div_f + str r0, [r5, #0x1c] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02217D44 +MOD08_02217D44: ; 0x02217D44 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp] + cmp r5, #0 + bne _02217D56 + bl ErrorHandling +_02217D56: + cmp r4, r7 + bls _02217D62 + add r0, sp, #8 + ldrh r1, [r0, #0x1c] + neg r1, r1 + strh r1, [r0, #0x1c] +_02217D62: + add r1, sp, #8 + mov r0, #0x1c + ldrsh r6, [r1, r0] + lsl r0, r4, #0xc + lsl r1, r7, #0xc + lsl r2, r6, #0xc + bl MOD08_02217C64 + str r0, [r5, #4] + ldr r0, [sp, #0x1c] + str r4, [r5, #8] + str r0, [r5, #0xc] + ldr r0, [sp] + str r0, [r5, #0x10] + ldr r0, [sp, #0x20] + str r0, [r5, #0x14] + str r6, [r5, #0x18] + add r0, sp, #8 + ldrh r1, [r0, #0x10] + ldr r0, [sp] + sub r0, r1, r0 + ldr r1, [r5, #4] + bl _s32_div_f + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02217D98 +MOD08_02217D98: ; 0x02217D98 + push {r4, lr} + add r4, r0, #0 + bne _02217DA2 + bl ErrorHandling +_02217DA2: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02217E26 + ldr r1, [r4, #8] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [r4, #8] + ldr r0, [r4, #0x10] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r2, [r4, #0xc] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02217E2C ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r0, r1, #0xc + strh r0, [r4] + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x14] + asr r0, r0, #4 + lsl r0, r0, #1 + add r0, r0, #1 + lsl r1, r0, #1 + ldr r0, _02217E2C ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r0, r1, #0xc + strh r0, [r4, #2] + mov r0, #1 + pop {r4, pc} +_02217E26: + mov r0, #0 + pop {r4, pc} + nop +_02217E2C: .word 0x020FFA38 + + thumb_func_start MOD08_02217E30 +MOD08_02217E30: ; 0x02217E30 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_02217D98 + cmp r0, #0 + beq _02217E52 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD08_02217C94 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02217E52: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02217E58 +MOD08_02217E58: ; 0x02217E58 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_02217D98 + cmp r0, #0 + beq _02217E7A + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD08_02217CD0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02217E7A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02217E80 +MOD08_02217E80: ; 0x02217E80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + str r2, [sp] + cmp r5, #0 + bne _02217E94 + bl ErrorHandling +_02217E94: + strh r4, [r5] + strh r6, [r5, #2] + add r0, sp, #0x10 + ldrh r7, [r0, #0x14] + lsl r0, r4, #0xc + str r0, [sp, #4] + str r7, [r5, #4] + ldr r1, [sp] + add r2, r7, #0 + lsl r1, r1, #0xc + bl MOD08_02217C58 + str r0, [r5, #8] + lsl r4, r6, #0xc + add r2, sp, #0x10 + mov r1, #0x10 + ldrsh r1, [r2, r1] + add r0, r4, #0 + add r2, r7, #0 + lsl r1, r1, #0xc + bl MOD08_02217C58 + str r0, [r5, #0xc] + ldr r0, [sp, #4] + str r0, [r5, #0x10] + str r4, [r5, #0x14] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02217ECC +MOD08_02217ECC: ; 0x02217ECC + push {r4, lr} + add r4, r0, #0 + bne _02217ED6 + bl ErrorHandling +_02217ED6: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02217F02 + ldr r1, [r4, #0x10] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r1, [r4, #0x14] + ldr r0, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x10] + asr r0, r0, #0xc + strh r0, [r4] + ldr r0, [r4, #0x14] + asr r0, r0, #0xc + strh r0, [r4, #2] + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_02217F02: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02217F08 +MOD08_02217F08: ; 0x02217F08 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_02217ECC + cmp r0, #0 + beq _02217F26 + mov r2, #0 + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD08_02217C94 + mov r0, #1 + pop {r3, r4, r5, pc} +_02217F26: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02217F2C +MOD08_02217F2C: ; 0x02217F2C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_02217ECC + cmp r0, #0 + beq _02217F4A + mov r2, #0 + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD08_02217CD0 + mov r0, #1 + pop {r3, r4, r5, pc} +_02217F4A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02217F50 +MOD08_02217F50: ; 0x02217F50 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, sp, #0x10 + mov r1, #0x14 + ldrsh r1, [r4, r1] + str r1, [sp] + ldrh r1, [r4, #0x18] + str r1, [sp, #4] + add r1, r2, #0 + add r2, r3, #0 + mov r3, #0x10 + ldrsh r3, [r4, r3] + bl MOD08_02217E80 + mov r1, #0 + strh r1, [r5] + ldr r0, _02217F94 ; =0x0000BFFF + strh r1, [r5, #2] + str r0, [sp] + ldr r0, [sp, #0x2c] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + ldrh r0, [r0, #0x18] + ldr r3, _02217F98 ; =0x00003FFF + add r2, r1, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + bl MOD08_02217D14 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02217F94: .word 0x0000BFFF +_02217F98: .word 0x00003FFF + + thumb_func_start MOD08_02217F9C +MOD08_02217F9C: ; 0x02217F9C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _02217FAA + bl ErrorHandling +_02217FAA: + cmp r4, #0 + bne _02217FB2 + bl ErrorHandling +_02217FB2: + add r0, r5, #0 + bl MOD08_02217ECC + add r6, r0, #0 + add r0, r4, #0 + bl MOD08_02217D98 + mov r2, #0 + ldrsh r3, [r5, r2] + ldrsh r1, [r4, r2] + add r1, r3, r1 + strh r1, [r5] + mov r1, #2 + ldrsh r3, [r5, r1] + ldrsh r1, [r4, r1] + add r1, r3, r1 + strh r1, [r5, #2] + cmp r6, r0 + bne _02217FE0 + cmp r6, #0 + bne _02217FE0 + add r0, r2, #0 + pop {r4, r5, r6, pc} +_02217FE0: + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02217FE4 +MOD08_02217FE4: ; 0x02217FE4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD08_02217F9C + cmp r0, #0 + beq _02218002 + mov r2, #0 + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD08_02217C94 + mov r0, #1 + pop {r3, r4, r5, pc} +_02218002: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02218008 +MOD08_02218008: ; 0x02218008 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + cmp r5, #0 + bne _0221801A + bl ErrorHandling +_0221801A: + str r6, [r5] + lsl r0, r6, #0xc + lsl r1, r7, #0xc + add r2, r4, #0 + str r4, [r5, #4] + bl MOD08_02217C58 + asr r0, r0, #0xc + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02218030 +MOD08_02218030: ; 0x02218030 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + cmp r5, #0 + bne _02218042 + bl ErrorHandling +_02218042: + str r6, [r5] + lsl r6, r6, #0xc + add r0, r6, #0 + lsl r1, r7, #0xc + add r2, r4, #0 + str r4, [r5, #4] + bl MOD08_02217C58 + str r0, [r5, #8] + str r6, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02218058 +MOD08_02218058: ; 0x02218058 + push {r4, lr} + add r4, r0, #0 + bne _02218062 + bl ErrorHandling +_02218062: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0221807A + ldr r1, [r4] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [r4] + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_0221807A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218080 +MOD08_02218080: ; 0x02218080 + push {r4, lr} + add r4, r0, #0 + bne _0221808A + bl ErrorHandling +_0221808A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _022180A6 + ldr r1, [r4, #0xc] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [r4, #0xc] + asr r0, r0, #0xc + str r0, [r4] + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_022180A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022180AC +MOD08_022180AC: ; 0x022180AC + push {r3, r4, r5, lr} + ldr r4, [sp, #0x10] + add r5, r0, #0 + str r4, [r5, #4] + str r1, [r5, #8] + sub r0, r2, r1 + add r1, r4, #0 + str r3, [r5, #0xc] + bl _u32_div_f + str r0, [r5, #0x10] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022180C4 +MOD08_022180C4: ; 0x022180C4 + push {r4, lr} + add r4, r0, #0 + bne _022180CE + bl ErrorHandling +_022180CE: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02218116 + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [r4, #8] + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r2, [r4, #0xc] + asr r0, r0, #4 + lsl r0, r0, #1 + add r0, r0, #1 + lsl r1, r0, #1 + ldr r0, _0221811C ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r0, r1, #0xc + str r0, [r4] + mov r0, #1 + pop {r4, pc} +_02218116: + mov r0, #0 + pop {r4, pc} + nop +_0221811C: .word 0x020FFA38 + + thumb_func_start MOD08_02218120 +MOD08_02218120: ; 0x02218120 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r4, #0 + bne _02218132 + bl ErrorHandling +_02218132: + ldr r0, [sp, #0x18] + add r1, r6, #0 + str r0, [r4, #4] + lsl r0, r5, #8 + bl _s32_div_f + add r5, r0, #0 + lsl r0, r7, #8 + add r1, r6, #0 + bl _s32_div_f + add r1, r0, #0 + ldr r2, [sp, #0x18] + lsl r0, r5, #0xc + lsl r1, r1, #0xc + bl MOD08_02217C58 + str r0, [r4, #8] + lsl r0, r5, #0x10 + asr r0, r0, #0x10 + strh r0, [r4] + strh r0, [r4, #2] + mov r0, #0 + ldrsh r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [r4, #0x10] + mov r0, #2 + ldrsh r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [r4, #0x14] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02218170 +MOD08_02218170: ; 0x02218170 + push {r4, lr} + add r4, r0, #0 + bne _0221817A + bl ErrorHandling +_0221817A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _022181A4 + sub r0, r0, #1 + str r0, [r4, #4] + ldr r1, [r4, #0x10] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r1, [r4, #0x14] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x10] + asr r0, r0, #0xc + strh r0, [r4] + ldr r0, [r4, #0x14] + asr r0, r0, #0xc + strh r0, [r4, #2] + mov r0, #1 + pop {r4, pc} +_022181A4: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD08_022181A8 +MOD08_022181A8: ; 0x022181A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + cmp r5, #0 + bne _022181BA + bl ErrorHandling +_022181BA: + ldr r0, [sp, #0x20] + add r1, sp, #8 + str r0, [r5, #4] + mov r0, #0x14 + ldrsh r4, [r1, r0] + lsl r0, r6, #8 + add r1, r4, #0 + bl _s32_div_f + add r6, r0, #0 + lsl r0, r7, #8 + add r1, r4, #0 + bl _s32_div_f + add r1, r0, #0 + ldr r2, [sp, #0x20] + lsl r0, r6, #0xc + lsl r1, r1, #0xc + bl MOD08_02217C58 + str r0, [r5, #8] + ldr r0, [sp] + add r1, r4, #0 + lsl r0, r0, #8 + bl _s32_div_f + add r7, r0, #0 + add r1, sp, #8 + mov r0, #0x10 + ldrsh r0, [r1, r0] + add r1, r4, #0 + lsl r0, r0, #8 + bl _s32_div_f + add r1, r0, #0 + ldr r2, [sp, #0x20] + lsl r0, r7, #0xc + lsl r1, r1, #0xc + bl MOD08_02217C58 + str r0, [r5, #0xc] + strh r6, [r5] + strh r7, [r5, #2] + mov r0, #0 + ldrsh r0, [r5, r0] + lsl r0, r0, #0xc + str r0, [r5, #0x10] + mov r0, #2 + ldrsh r0, [r5, r0] + lsl r0, r0, #0xc + str r0, [r5, #0x14] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02218224 +MOD08_02218224: ; 0x02218224 + push {r4, lr} + add r4, r0, #0 + bne _0221822E + bl ErrorHandling +_0221822E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02218258 + sub r0, r0, #1 + str r0, [r4, #4] + ldr r1, [r4, #0x10] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r1, [r4, #0x14] + ldr r0, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x10] + asr r0, r0, #0xc + strh r0, [r4] + ldr r0, [r4, #0x14] + asr r0, r0, #0xc + strh r0, [r4, #2] + mov r0, #1 + pop {r4, pc} +_02218258: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD08_0221825C +MOD08_0221825C: ; 0x0221825C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r5, r0] + add r4, r1, #0 + add r6, r2, #0 + bl _fflt + ldr r1, _02218288 ; =0x43800000 + bl _fdiv + str r0, [r4] + mov r0, #2 + ldrsh r0, [r5, r0] + bl _fflt + ldr r1, _02218288 ; =0x43800000 + bl _fdiv + str r0, [r6] + pop {r4, r5, r6, pc} + nop +_02218288: .word 0x43800000 + + thumb_func_start MOD08_0221828C +MOD08_0221828C: ; 0x0221828C + push {r3, r4, lr} + sub sp, #4 + lsl r1, r1, #1 + mov r0, #0x50 + sub r0, r0, r1 + lsl r4, r0, #0xc + asr r1, r4, #0x1f + add r0, r4, #0 + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + lsl r1, r2, #9 + bl FX_Div + sub r0, r4, r0 + add r1, sp, #0 + bl FX_Modf + cmp r0, #0 + beq _022182CA + mov r1, #2 + lsl r1, r1, #0xa + add r0, r0, r1 +_022182CA: + ldr r1, [sp] + add r0, r1, r0 + asr r1, r0, #0xc + lsr r0, r1, #0x1f + add r0, r1, r0 + lsl r0, r0, #0xf + asr r0, r0, #0x10 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022182DC +MOD08_022182DC: ; 0x022182DC + push {r4, r5, r6, lr} + add r6, r2, #0 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r3, #0 + bl MOD08_0221828C + add r2, r0, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _02218306 + mov r0, #0 + mvn r0, r0 + mul r0, r2 + lsl r0, r0, #0x10 + asr r2, r0, #0x10 + sub r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_02218306: + add r0, r5, #0 + mov r1, #1 + add r2, r4, r2 + bl FUN_02007558 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_02218314 +MOD08_02218314: ; 0x02218314 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r3, #0 + bl MOD08_0221828C + add r4, r0, #0 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _0221833E + mov r0, #0 + mvn r0, r0 + mul r0, r4 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + sub r0, r5, r7 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 +_0221833E: + add r1, sp, #0 + add r0, r6, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r2, sp, #0 + mov r1, #2 + ldrsh r1, [r2, r1] + add r2, r5, r4 + lsl r2, r2, #0x10 + add r0, r6, #0 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02218360 +MOD08_02218360: ; 0x02218360 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_02218170 + cmp r0, #0 + beq _0221837A + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217CB4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0221837A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02218380 +MOD08_02218380: ; 0x02218380 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_02218170 + cmp r0, #0 + beq _0221839A + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217CF4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0221839A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022183A0 +MOD08_022183A0: ; 0x022183A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_02218224 + cmp r0, #0 + beq _022183BA + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217CF4 + mov r0, #1 + pop {r3, r4, r5, pc} +_022183BA: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022183C0 +MOD08_022183C0: ; 0x022183C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _022183D2 + bl ErrorHandling +_022183D2: + str r7, [r5, #4] + ldr r0, [sp, #0x18] + str r7, [r5, #8] + str r0, [r5, #0xc] + mov r1, #0 + str r1, [r5, #0x10] + str r6, [r5, #0x14] + str r4, [r5, #0x18] + neg r0, r6 + str r0, [r5, #0x1c] + neg r0, r4 + str r0, [r5, #0x20] + strh r1, [r5] + strh r1, [r5, #2] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_022183F0 +MOD08_022183F0: ; 0x022183F0 + push {r4, lr} + add r4, r0, #0 + bne _022183FA + bl ErrorHandling +_022183FA: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0221844E + ldr r0, [r4, #4] + add r1, r0, #1 + str r1, [r4, #4] + ldr r0, [r4, #8] + cmp r1, r0 + blt _0221844A + mov r2, #0 + str r2, [r4, #4] + ldrsh r0, [r4, r2] + ldr r1, [r4, #0x1c] + str r0, [r4, #0x1c] + cmp r1, #0 + bne _0221841E + strh r2, [r4] + b _02218422 +_0221841E: + neg r0, r1 + strh r0, [r4] +_02218422: + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x20] + str r0, [r4, #0x20] + cmp r1, #0 + bne _02218432 + mov r0, #0 + b _02218434 +_02218432: + neg r0, r1 +_02218434: + strh r0, [r4, #2] + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #4 + blt _0221844A + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] +_0221844A: + mov r0, #1 + pop {r4, pc} +_0221844E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218454 +MOD08_02218454: ; 0x02218454 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_022183F0 + cmp r0, #0 + beq _02218476 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD08_02217CD0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02218476: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0221847C +MOD08_0221847C: ; 0x0221847C + push {r3, r4, r5, r6, r7, lr} + mov ip, r1 + str r0, [sp] + strh r3, [r0] + add r0, sp, #8 + mov r1, #0x10 + ldrsh r3, [r0, r1] + ldr r1, [sp] + mov r6, #0 + strh r3, [r1, #2] + add r1, #0x94 + str r2, [r1] + ldr r1, [sp] + ldrh r2, [r0, #0x14] + add r1, #0xa8 + strh r2, [r1] + ldr r1, [sp] + add r1, #0xaa + strh r6, [r1] + ldr r1, [sp] + ldrb r7, [r0, #0x18] + add r1, #0xac + strb r7, [r1] + ldr r1, [sp] + add r1, #0xad + strb r6, [r1] + ldrb r1, [r0, #0x1c] + ldr r0, [sp] + add r0, #0xae + strb r1, [r0] + cmp r7, #0 + ble _022184D8 + ldr r5, [sp] +_022184BE: + mov r4, ip + add r3, r5, #4 + mov r2, #4 +_022184C4: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022184C4 + ldr r0, [r4] + add r6, r6, #1 + str r0, [r3] + add r5, #0x24 + cmp r6, r7 + blt _022184BE +_022184D8: + ldr r0, [sp] + ldr r1, [sp, #0x28] + add r0, #0x98 + str r1, [r0] + ldr r0, [sp] + ldr r1, [sp, #0x2c] + add r0, #0x9c + str r1, [r0] + ldr r0, [sp] + ldr r1, [sp, #0x30] + add r0, #0xa0 + str r1, [r0] + ldr r0, [sp] + ldr r1, [sp, #0x34] + add r0, #0xa4 + str r1, [r0] + ldr r0, [sp] + mov r5, #0 + add r0, #0xac + ldrb r0, [r0] + cmp r0, #0 + ble _02218522 + ldr r4, [sp] + add r6, r5, #0 +_02218508: + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_0200C644 + ldr r0, [sp] + add r5, r5, #1 + add r0, #0xac + ldrb r0, [r0] + add r4, r4, #4 + cmp r5, r0 + blt _02218508 +_02218522: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02218524 +MOD08_02218524: ; 0x02218524 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r1, #1 +_02218530: + add r0, r0, #1 + stmia r2!, {r1} + cmp r0, #4 + blt _02218530 + add r0, r5, #0 + add r0, #0xa8 + ldrh r2, [r0] + add r0, r5, #0 + add r0, #0xaa + ldrh r0, [r0] + cmp r2, r0 + bhi _02218570 + add r0, r5, #0 + add r0, #0xad + ldrb r0, [r0] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0x98 + ldr r0, [r0] + bl FUN_0200C644 + add r0, r5, #0 + add r0, #0xad + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xad + strb r1, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0xaa + strh r1, [r0] +_02218570: + add r0, r5, #0 + add r0, #0xad + ldrb r1, [r0] + add r0, r5, #0 + add r0, #0xac + ldrb r0, [r0] + cmp r1, r0 + bhs _0221858E + add r0, r5, #0 + add r0, #0xaa + ldrh r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xaa + strh r1, [r0] +_0221858E: + mov r0, #0 + str r0, [sp] + add r0, r5, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + ble _0221862E + add r0, sp, #0x10 + add r7, r5, #4 + str r0, [sp, #4] + add r6, r5, #0 + add r4, r5, #0 +_022185A6: + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r7, #0 + blx r1 + ldr r1, [sp, #4] + cmp r0, #0 + str r0, [r1] + beq _02218604 + add r0, r5, #0 + add r0, #0xae + ldrb r0, [r0] + cmp r0, #0 + bne _022185EA + mov r1, #0 + mov r2, #4 + ldrsh r1, [r5, r1] + ldrsh r2, [r6, r2] + add r0, r4, #0 + add r0, #0x98 + add r1, r1, r2 + mov r2, #2 + ldrsh r3, [r5, r2] + mov r2, #6 + ldrsh r2, [r6, r2] + lsl r1, r1, #0x10 + ldr r0, [r0] + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + b _02218610 +_022185EA: + add r0, r7, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD08_0221825C + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + bl FUN_0200C884 + b _02218610 +_02218604: + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + mov r1, #0 + bl FUN_0200C644 +_02218610: + ldr r0, [sp, #4] + add r7, #0x24 + add r0, r0, #4 + str r0, [sp, #4] + ldr r0, [sp] + add r6, #0x24 + add r0, r0, #1 + str r0, [sp] + add r0, r5, #0 + add r0, #0xad + ldrb r1, [r0] + ldr r0, [sp] + add r4, r4, #4 + cmp r0, r1 + blt _022185A6 +_0221862E: + add r5, #0xac + ldrb r2, [r5] + mov r3, #0 + cmp r2, #0 + ble _0221864E + add r1, sp, #0x10 +_0221863A: + ldr r0, [r1] + cmp r0, #1 + bne _02218646 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02218646: + add r3, r3, #1 + add r1, r1, #4 + cmp r3, r2 + blt _0221863A +_0221864E: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02218654 +MOD08_02218654: ; 0x02218654 + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r3, _02218684 ; =0x0000FFFF + add r4, r1, #0 + mov r1, #2 + str r3, [sp] + lsl r1, r1, #0x10 + str r1, [sp, #4] + ldr r1, _02218688 ; =0xFFFF8000 + add r5, r0, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + mov r1, #0 + add r2, r3, #0 + add r3, r1, #0 + bl MOD08_02217D14 + ldr r0, [r5, #4] + add r1, r0, #0 + mul r1, r4 + str r1, [r5, #4] + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02218684: .word 0x0000FFFF +_02218688: .word 0xFFFF8000 + + thumb_func_start MOD08_0221868C +MOD08_0221868C: ; 0x0221868C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02217ECC + cmp r0, #0 + bne _022186A8 + mov r0, #1 + str r0, [r4, #0x24] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_022186A8: + mov r0, #0 + ldrsh r1, [r4, r0] + cmp r1, #0 + bge _022186B2 + strh r0, [r4] +_022186B2: + mov r0, #2 + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _022186BE + mov r0, #0 + strh r0, [r4, #2] +_022186BE: + mov r0, #0 + ldrsh r1, [r4, r0] + mov r0, #2 + ldrsh r0, [r4, r0] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _022186D0 ; =0x04000052 + strh r1, [r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_022186D0: .word 0x04000052 + + thumb_func_start MOD08_022186D4 +MOD08_022186D4: ; 0x022186D4 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, sp, #8 + mov r5, #0x10 + ldrsh r5, [r6, r5] + add r4, r0, #0 + str r5, [sp] + ldr r5, [sp, #0x1c] + lsl r5, r5, #0x10 + lsr r5, r5, #0x10 + str r5, [sp, #4] + bl MOD08_02217E80 + mov r2, #0 + ldr r0, _02218700 ; =MOD08_0221868C + add r1, r4, #0 + str r2, [r4, #0x24] + bl FUN_0200CA44 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02218700: .word MOD08_0221868C + + thumb_func_start MOD08_02218704 +MOD08_02218704: ; 0x02218704 + ldr r0, [r0, #0x24] + bx lr + + thumb_func_start MOD08_02218708 +MOD08_02218708: ; 0x02218708 + push {r3, lr} + ldr r0, [r1, #8] + cmp r0, #0 + beq _0221871C + mov r0, #1 + str r0, [r1, #0xc] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x10] + blx r1 + pop {r3, pc} +_0221871C: + bl FUN_020129C8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02218724 +MOD08_02218724: ; 0x02218724 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0221873E + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0221873E + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x14] + blx r1 + mov r0, #0 + str r0, [r4, #0xc] +_0221873E: + pop {r4, pc} + + thumb_func_start MOD08_02218740 +MOD08_02218740: ; 0x02218740 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _02218752 + bl ErrorHandling +_02218752: + mov r0, #1 + str r0, [r5, #8] + mov r2, #0 + str r2, [r5, #0xc] + str r4, [r5, #0x18] + str r6, [r5, #0x10] + ldr r0, _02218778 ; =MOD08_02218708 + str r7, [r5, #0x14] + add r1, r5, #0 + bl FUN_0200CA98 + str r0, [r5, #4] + ldr r0, _0221877C ; =MOD08_02218724 + add r1, r5, #0 + mov r2, #0 + bl FUN_0200CA60 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02218778: .word MOD08_02218708 +_0221877C: .word MOD08_02218724 + + thumb_func_start MOD08_02218780 +MOD08_02218780: ; 0x02218780 + push {r4, lr} + add r4, r0, #0 + bne _0221878A + bl ErrorHandling +_0221878A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02218794 + bl FUN_0200CAB4 +_02218794: + ldr r0, [r4] + cmp r0, #0 + beq _0221879E + bl FUN_0200CAB4 +_0221879E: + bl FUN_020129C8 + pop {r4, pc} + + thumb_func_start MOD08_022187A4 +MOD08_022187A4: ; 0x022187A4 + push {r4, lr} + add r4, r0, #0 + bne _022187AE + bl ErrorHandling +_022187AE: + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + + thumb_func_start MOD08_022187B4 +MOD08_022187B4: ; 0x022187B4 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0201299C + add r5, r0, #0 + bl FUN_020129C8 + mov r1, #0x62 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r5, #0 + mov r2, #4 + mov r3, #1 + bl FUN_020129D8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022187D8 +MOD08_022187D8: ; 0x022187D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_020129B4 + add r0, r4, #0 + bl MOD08_022187B4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022187EC +MOD08_022187EC: ; 0x022187EC + ldr r3, _022187F0 ; =MOD08_022187B4 + bx r3 + .align 2, 0 +_022187F0: .word MOD08_022187B4 + + thumb_func_start MOD08_022187F4 +MOD08_022187F4: ; 0x022187F4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r2, #0 + add r5, r0, #0 + ldr r1, _02218864 ; =0x00000624 + add r0, r7, #0 + bl FUN_02016998 + ldr r2, _02218864 ; =0x00000624 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + cmp r4, #0 + bne _02218816 + bl ErrorHandling +_02218816: + mov r2, #0x32 + add r1, r4, #0 + lsl r2, r2, #4 + add r0, r7, #0 + add r1, #0x20 + add r2, r4, r2 + bl FUN_02012944 + str r0, [r4, #0x1c] + cmp r0, #0 + bne _02218830 + bl ErrorHandling +_02218830: + mov r0, #0x62 + lsl r0, r0, #4 + add r1, r4, #0 + mov r2, #3 + str r5, [r4, r0] + add r0, r6, #0 + add r1, #0x20 + lsl r2, r2, #8 + bl MIi_CpuClear32 + mov r2, #0x32 + lsl r2, r2, #4 + add r1, r4, r2 + add r0, r6, #0 + sub r2, #0x20 + bl MIi_CpuClear32 + ldr r2, _02218868 ; =MOD08_022187D8 + ldr r3, _0221886C ; =MOD08_022187EC + add r0, r4, #0 + add r1, r4, #0 + bl MOD08_02218740 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02218864: .word 0x00000624 +_02218868: .word MOD08_022187D8 +_0221886C: .word MOD08_022187EC + + thumb_func_start MOD08_02218870 +MOD08_02218870: ; 0x02218870 + push {r4, lr} + add r4, r0, #0 + bne _0221887A + bl ErrorHandling +_0221887A: + add r0, r4, #0 + bl MOD08_02218780 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _0221888A + bl FUN_02012974 +_0221888A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218894 +MOD08_02218894: ; 0x02218894 + push {r4, lr} + add r4, r0, #0 + bne _0221889E + bl ErrorHandling +_0221889E: + ldr r0, [r4, #0x1c] + bl FUN_02012988 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022188A8 +MOD08_022188A8: ; 0x022188A8 + push {r4, lr} + add r4, r0, #0 + bne _022188B2 + bl ErrorHandling +_022188B2: + add r0, r4, #0 + bl MOD08_022187A4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022188BC +MOD08_022188BC: ; 0x022188BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_02012B30 + ldr r0, [r4, #0x1c] + bl FUN_02012B68 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022188D0 +MOD08_022188D0: ; 0x022188D0 + ldr r3, _022188D8 ; =0x02012B69 + ldr r0, [r0, #0x1c] + bx r3 + nop +_022188D8: .word 0x02012B69 + + thumb_func_start MOD08_022188DC +MOD08_022188DC: ; 0x022188DC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + str r1, [sp, #0x14] + ldr r0, [sp, #0x40] + mov r1, #0x20 + str r2, [sp, #0x18] + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _022188F8 + bl ErrorHandling +_022188F8: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r0, [sp, #0x34] + bl MOD08_022189A0 + add r6, r0, #0 + ldr r0, [sp, #0x40] + bl FUN_02012A00 + str r0, [r4, #0x1c] + str r5, [sp] + add r1, sp, #0x20 + mov r0, #0x10 + ldrsh r0, [r1, r0] + add r1, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x3c] + str r6, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + str r0, [sp, #0x10] + ldr r0, [r4, #0x1c] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + bl FUN_02012A30 + ldr r2, _02218944 ; =MOD08_022188BC + ldr r3, _02218948 ; =MOD08_022188D0 + add r0, r4, #0 + add r1, r4, #0 + bl MOD08_02218740 + add r0, r4, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02218944: .word MOD08_022188BC +_02218948: .word MOD08_022188D0 + + thumb_func_start MOD08_0221894C +MOD08_0221894C: ; 0x0221894C + push {r4, lr} + add r4, r0, #0 + bne _02218956 + bl ErrorHandling +_02218956: + add r0, r4, #0 + bl MOD08_02218780 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02218966 + bl FUN_02012B00 +_02218966: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218970 +MOD08_02218970: ; 0x02218970 + push {r4, lr} + add r4, r0, #0 + bne _0221897A + bl ErrorHandling +_0221897A: + ldr r0, [r4, #0x1c] + bl FUN_02012B20 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218984 +MOD08_02218984: ; 0x02218984 + push {r4, lr} + add r4, r0, #0 + bne _0221898E + bl ErrorHandling +_0221898E: + add r0, r4, #0 + bl MOD08_022187A4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218998 +MOD08_02218998: ; 0x02218998 + lsl r1, r1, #0x10 + orr r0, r1 + bx lr + .align 2, 0 + + thumb_func_start MOD08_022189A0 +MOD08_022189A0: ; 0x022189A0 + cmp r0, #3 + bhi _022189C6 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022189B0: ; jump table + .short _022189B8 - _022189B0 - 2 ; case 0 + .short _022189BC - _022189B0 - 2 ; case 1 + .short _022189C0 - _022189B0 - 2 ; case 2 + .short _022189C4 - _022189B0 - 2 ; case 3 +_022189B8: + ldr r0, _022189C8 ; =0x04000010 + bx lr +_022189BC: + ldr r0, _022189CC ; =0x04000014 + bx lr +_022189C0: + ldr r0, _022189D0 ; =0x04000018 + bx lr +_022189C4: + ldr r0, _022189D4 ; =0x0400001C +_022189C6: + bx lr + .align 2, 0 +_022189C8: .word 0x04000010 +_022189CC: .word 0x04000014 +_022189D0: .word 0x04000018 +_022189D4: .word 0x0400001C + + thumb_func_start MOD08_022189D8 +MOD08_022189D8: ; 0x022189D8 + add r2, r0, r2 + lsr r0, r2, #0x1f + add r0, r2, r0 + asr r2, r0, #1 + ldr r0, [sp] + add r1, r1, r3 + strh r2, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_022189F4 +MOD08_022189F4: ; 0x022189F4 + push {r3, lr} + sub r1, r1, r3 + neg r1, r1 + sub r0, r0, r2 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + asr r1, r1, #0x10 + add r2, r1, #0 + asr r0, r0, #0x10 + mul r2, r1 + add r1, r0, #0 + mul r1, r0 + add r0, r2, r1 + lsl r0, r0, #0xc + bl FX_Sqrt + ldr r1, [sp, #8] + str r0, [r1] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02218A1C +MOD08_02218A1C: ; 0x02218A1C + push {r4, r5, r6, lr} + add r6, r0, #0 + sub r0, r1, r3 + neg r0, r0 + lsl r0, r0, #0x10 + sub r1, r6, r2 + asr r4, r0, #0x10 + lsl r1, r1, #0x10 + ldr r5, [sp, #0x10] + lsl r0, r4, #0xc + asr r1, r1, #4 + bl FX_Atan2 + strh r0, [r5] + ldrh r1, [r5] + cmp r1, #0 + beq _02218A4C + cmp r4, #0 + bge _02218A4C + ldr r0, _02218A50 ; =0x00007FFF + sub r1, r1, r0 + ldr r0, _02218A54 ; =0x0000FFFF + mul r0, r1 + strh r0, [r5] +_02218A4C: + pop {r4, r5, r6, pc} + nop +_02218A50: .word 0x00007FFF +_02218A54: .word 0x0000FFFF + + thumb_func_start MOD08_02218A58 +MOD08_02218A58: ; 0x02218A58 + cmp r2, #0 + ldr r3, [r0] + bge _02218A70 + add r2, r3, r2 + cmp r2, r1 + ble _02218A6A + str r2, [r0] + mov r0, #0 + bx lr +_02218A6A: + str r1, [r0] + mov r0, #1 + bx lr +_02218A70: + add r2, r3, r2 + cmp r2, r1 + bge _02218A7C + str r2, [r0] + mov r0, #0 + bx lr +_02218A7C: + str r1, [r0] + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02218A84 +MOD08_02218A84: ; 0x02218A84 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02218AF4 + mov r0, #0x17 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0x17] + ldrsb r1, [r4, r0] + mov r0, #0x16 + ldrsb r0, [r4, r0] + cmp r1, r0 + blt _02218AF4 + mov r0, #0 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0x14] + str r0, [sp] + ldrh r0, [r4, #0x10] + str r0, [sp, #4] + ldrh r2, [r4, #0xc] + ldrh r3, [r4, #0xe] + ldr r0, [r4, #0x18] + ldr r1, [r4, #8] + bl FUN_020039E8 + ldrb r3, [r4, #0x13] + ldrb r1, [r4, #0x14] + cmp r1, r3 + bne _02218ACA + mov r0, #0 + add sp, #8 + str r0, [r4] + pop {r4, pc} +_02218ACA: + mov r0, #0x15 + ldrsb r2, [r4, r0] + add r1, r1, r2 + lsl r0, r1, #0x18 + asr r0, r0, #0x18 + cmp r2, #0 + ble _02218AE8 + cmp r0, r3 + ble _02218AE2 + add sp, #8 + strb r3, [r4, #0x14] + pop {r4, pc} +_02218AE2: + add sp, #8 + strb r1, [r4, #0x14] + pop {r4, pc} +_02218AE8: + cmp r0, r3 + bge _02218AF2 + add sp, #8 + strb r3, [r4, #0x14] + pop {r4, pc} +_02218AF2: + strb r1, [r4, #0x14] +_02218AF4: + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_02218AF8 +MOD08_02218AF8: ; 0x02218AF8 + push {r4, lr} + add r4, r0, #0 + bne _02218B02 + bl ErrorHandling +_02218B02: + ldr r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218B08 +MOD08_02218B08: ; 0x02218B08 + push {r4, lr} + add r4, r0, #0 + bne _02218B12 + bl ErrorHandling +_02218B12: + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD08_02218B20 +MOD08_02218B20: ; 0x02218B20 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x1c + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _02218B38 + bl ErrorHandling +_02218B38: + str r5, [r4, #0x18] + str r6, [r4, #8] + strh r7, [r4, #0xc] + add r1, sp, #8 + ldrh r0, [r1, #0x10] + strh r0, [r4, #0xe] + ldrh r0, [r1, #0x24] + strh r0, [r4, #0x10] + ldrb r2, [r1, #0x1c] + add r0, sp, #0x28 + ldrb r0, [r0] + strb r2, [r4, #0x12] + strb r0, [r4, #0x13] + strb r2, [r4, #0x14] + mov r0, #0x14 + ldrsb r0, [r1, r0] + strb r0, [r4, #0x16] + strb r0, [r4, #0x17] + ldrb r2, [r4, #0x12] + ldrb r0, [r4, #0x13] + cmp r2, r0 + bhs _02218B6A + mov r0, #0x18 + ldrsb r0, [r1, r0] + b _02218B70 +_02218B6A: + mov r0, #0x18 + ldrsb r0, [r1, r0] + neg r0, r0 +_02218B70: + strb r0, [r4, #0x15] + mov r0, #1 + str r0, [r4] + ldr r0, _02218B88 ; =MOD08_02218A84 + ldr r2, [sp, #0x30] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02218B88: .word MOD08_02218A84 + + thumb_func_start MOD08_02218B8C +MOD08_02218B8C: ; 0x02218B8C + push {r4, r5, r6, r7} + mov r7, #0 + cmp r1, #0 + ble _02218BCE + mov r2, #0x97 +_02218B96: + ldrh r6, [r0] + mov r3, #0x1f + add r7, r7, #1 + asr r4, r6, #0xa + and r4, r3 + add r5, r4, #0 + mov r3, #0x1d + mul r5, r3 + mov r3, #0x1f + and r3, r6 + mov r4, #0x4c + mul r4, r3 + asr r6, r6, #5 + mov r3, #0x1f + and r3, r6 + add r6, r3, #0 + mul r6, r2 + add r3, r4, r6 + add r3, r5, r3 + asr r5, r3, #8 + lsl r4, r5, #0xa + lsl r3, r5, #5 + orr r3, r4 + orr r3, r5 + strh r3, [r0] + add r0, r0, #2 + cmp r7, r1 + blt _02218B96 +_02218BCE: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + + thumb_func_start MOD08_02218BD4 +MOD08_02218BD4: ; 0x02218BD4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_02215504 + mov r1, #0 + bl FUN_02003204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02218BF8 + add r0, r4, #0 + mov r1, #0x30 + bl MOD08_02218B8C + pop {r3, r4, r5, pc} +_02218BF8: + add r0, r4, #0 + mov r1, #0x80 + bl MOD08_02218B8C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02218C04 +MOD08_02218C04: ; 0x02218C04 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD08_02215504 + add r4, r0, #0 + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02218C30 + mov r1, #0 + str r1, [sp] + mov r0, #0x60 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020031B8 + add sp, #8 + pop {r3, r4, r5, pc} +_02218C30: + mov r1, #0 + mov r0, #1 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020031B8 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02218C48 +MOD08_02218C48: ; 0x02218C48 + cmp r0, #0x54 + blo _02218C50 + mov r0, #0 + bx lr +_02218C50: + lsl r1, r0, #2 + ldr r0, _02218C58 ; =0x0222C384 + ldr r0, [r0, r1] + bx lr + .align 2, 0 +_02218C58: .word 0x0222C384 + + thumb_func_start MOD08_02218C5C +MOD08_02218C5C: ; 0x02218C5C + cmp r0, #0x21 + blo _02218C64 + mov r0, #0 + bx lr +_02218C64: + lsl r1, r0, #2 + ldr r0, _02218C6C ; =0x0222C300 + ldr r0, [r0, r1] + bx lr + .align 2, 0 +_02218C6C: .word 0x0222C300 + + thumb_func_start MOD08_02218C70 +MOD08_02218C70: ; 0x02218C70 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02218C74 +MOD08_02218C74: ; 0x02218C74 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _02218C86 + cmp r0, #1 + beq _02218C8C + pop {r4, pc} +_02218C86: + add r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_02218C8C: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD08_02218C9C +MOD08_02218C9C: ; 0x02218C9C + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r2, r0, #0 + mov r0, #0 + strb r0, [r2] + mov r3, #1 + ldr r1, _02218CC0 ; =MOD08_02218C74 + add r0, r4, #0 + lsl r3, r3, #0xc + str r4, [r2, #4] + bl MOD08_022123E4 + pop {r4, pc} + nop +_02218CC0: .word MOD08_02218C74 + + thumb_func_start MOD08_02218CC4 +MOD08_02218CC4: ; 0x02218CC4 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _02218CD6 + cmp r0, #1 + beq _02218CDC + pop {r4, pc} +_02218CD6: + add r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_02218CDC: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212448 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD08_02218CEC +MOD08_02218CEC: ; 0x02218CEC + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r2, r0, #0 + mov r0, #0 + strb r0, [r2] + mov r3, #1 + ldr r1, _02218D10 ; =MOD08_02218CC4 + add r0, r4, #0 + lsl r3, r3, #0xc + str r4, [r2, #4] + bl MOD08_0221241C + pop {r4, pc} + nop +_02218D10: .word MOD08_02218CC4 + + thumb_func_start MOD08_02218D14 +MOD08_02218D14: ; 0x02218D14 + push {r4, lr} + add r4, r1, #0 + ldrb r1, [r4] + cmp r1, #0 + beq _02218D24 + cmp r1, #1 + beq _02218D2A + pop {r4, pc} +_02218D24: + add r0, r1, #1 + strb r0, [r4] + pop {r4, pc} +_02218D2A: + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02218D38 +MOD08_02218D38: ; 0x02218D38 + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r1, r0, #0 + mov r0, #0 + strb r0, [r1] + mov r2, #1 + ldr r0, _02218D58 ; =MOD08_02218D14 + lsl r2, r2, #0xc + str r4, [r1, #4] + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_02218D58: .word MOD08_02218D14 + + thumb_func_start MOD08_02218D5C +MOD08_02218D5C: ; 0x02218D5C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _02218D6E + cmp r0, #1 + beq _02218DB4 + pop {r4, r5, r6, pc} +_02218D6E: + ldr r0, [r5, #0x14] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r5, #0x18] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r5, #0x14] + mov r1, #1 + ldr r0, [r0] + mov r2, #0 + bl FUN_0200C7FC + ldr r0, [r5, #0x18] + mov r1, #0 + ldr r0, [r0] + mvn r1, r1 + mov r2, #0 + bl FUN_0200C7FC + ldr r0, [r5, #0x1c] + mov r1, #1 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_0200C7FC + ldr r0, [r5, #0xc] + bl FUN_0200BC1C + pop {r4, r5, r6, pc} +_02218DB4: + ldr r0, [r5, #0x10] + ldr r4, [r5, #4] + bl FUN_0200C3DC + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + add r1, r6, #0 + bl MOD08_02212438 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02218DCC +MOD08_02218DCC: ; 0x02218DCC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r6, r1, #0 + mov r1, #0x73 + str r0, [sp] + mov r0, #5 + lsl r1, r1, #2 + add r7, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _02218DEA + bl ErrorHandling +_02218DEA: + mov r0, #0 + strb r0, [r4] + str r6, [r4, #8] + str r7, [r4, #0xc] + ldr r0, [sp] + str r5, [r4, #0x10] + str r0, [r4, #4] + ldr r1, [sp] + add r0, sp, #4 + bl MOD08_02215474 + str r5, [r4, #0x14] + mov r6, #1 + add r5, r4, #4 + add r7, sp, #4 +_02218E08: + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + add r2, r7, #0 + bl FUN_0200C154 + str r0, [r5, #0x14] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _02218E08 + mov r3, #1 + ldr r0, [sp] + ldr r1, _02218E30 ; =MOD08_02218D5C + add r2, r4, #0 + lsl r3, r3, #0xc + bl MOD08_022123E4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02218E30: .word MOD08_02218D5C + + thumb_func_start MOD08_02218E34 +MOD08_02218E34: ; 0x02218E34 + push {r4, lr} + mov r1, #0xc + add r2, r1, #0 + add r2, #0xf4 + add r4, r0, #0 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + pop {r4, pc} + + thumb_func_start MOD08_02218E50 +MOD08_02218E50: ; 0x02218E50 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r2, r0, #0 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _02218E62 + cmp r0, #1 + beq _02218E84 + b _02218F4E +_02218E62: + mov r0, #0x26 + ldrsh r0, [r5, r0] + mov r1, #0x20 + mov r2, #0x22 + str r0, [sp] + mov r3, #0x24 + add r0, r5, #0 + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + add r0, #0x7c + bl MOD08_022183C0 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_02218E84: + add r0, r5, #0 + add r0, #0x7c + bl MOD08_022183F0 + cmp r0, #0 + bne _02218E98 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_02218E98: + ldr r2, [r5, #0x28] + mov r1, #1 + lsl r1, r1, #8 + add r0, r2, #0 + and r0, r1 + cmp r0, r1 + bne _02218EE4 + ldr r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _02218F32 + add r4, r5, #0 + mov r7, #0x32 +_02218EB2: + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _02218ED8 + mov r2, #0x7c + mov r3, #0x30 + ldrsh r2, [r5, r2] + ldrsh r3, [r4, r3] + mov r1, #0 + add r2, r2, r3 + bl FUN_02007558 + mov r2, #0x7e + ldrsh r3, [r5, r2] + ldrsh r2, [r4, r7] + ldr r0, [r4, #0x34] + mov r1, #1 + add r2, r3, r2 + bl FUN_02007558 +_02218ED8: + ldr r0, [r5] + add r6, r6, #1 + add r4, #0x14 + cmp r6, r0 + blt _02218EB2 + b _02218F32 +_02218EE4: + lsl r0, r1, #1 + and r2, r0 + cmp r2, r0 + bne _02218F32 + ldr r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _02218F2C + add r4, r5, #0 + mov r7, #0x32 +_02218EF8: + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _02218F22 + mov r1, #0x7c + mov r2, #0x30 + ldrsh r1, [r5, r1] + ldrsh r2, [r4, r2] + add r1, r1, r2 + mov r2, #0x7e + ldrsh r3, [r5, r2] + ldrsh r2, [r4, r7] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #0x38] + bl FUN_0200C5A8 +_02218F22: + ldr r0, [r5] + add r6, r6, #1 + add r4, #0x14 + cmp r6, r0 + blt _02218EF8 +_02218F2C: + ldr r0, [r5, #0x10] + bl FUN_0200BC1C +_02218F32: + mov r0, #1 + ldr r1, [r5, #0x28] + lsl r0, r0, #0xa + and r1, r0 + cmp r1, r0 + bne _02218F5C + mov r3, #0x7c + ldrsh r3, [r5, r3] + ldr r0, [r5, #0x18] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + pop {r3, r4, r5, r6, r7, pc} +_02218F4E: + ldr r0, [r5, #8] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 +_02218F5C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02218F60 +MOD08_02218F60: ; 0x02218F60 + push {r3, r4, r5, lr} + mov r1, #0xa0 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #4 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + strh r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0x22] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + strh r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #0x26] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + mov r2, #1 + lsl r2, r2, #8 + str r0, [r4, #0x28] + add r1, r0, #0 + and r0, r2 + cmp r0, r2 + bne _02218FC0 + add r2, r4, #0 + add r0, r5, #0 + add r2, #0x2c + add r3, r4, #0 + bl MOD08_02227BAC + b _02218FD6 +_02218FC0: + lsl r0, r2, #1 + add r3, r1, #0 + and r3, r0 + cmp r3, r0 + bne _02218FD6 + add r2, r4, #0 + add r0, r5, #0 + add r2, #0x2c + add r3, r4, #0 + bl MOD08_02227F88 +_02218FD6: + ldr r0, [r4, #8] + ldr r1, _02218FE4 ; =MOD08_02218E50 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_02218FE4: .word MOD08_02218E50 + + thumb_func_start MOD08_02218FE8 +MOD08_02218FE8: ; 0x02218FE8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x1c] + cmp r0, #3 + bhi _022190B2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02219000: ; jump table + .short _02219008 - _02219000 - 2 ; case 0 + .short _02219026 - _02219000 - 2 ; case 1 + .short _02219068 - _02219000 - 2 ; case 2 + .short _02219074 - _02219000 - 2 ; case 3 +_02219008: + ldrh r0, [r4, #0x18] + mov r1, #4 + mov r2, #0x39 + str r0, [sp] + ldrh r3, [r4, #0x16] + ldr r0, _02219154 ; =0x04000050 + bl G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + ldrb r0, [r4, #0x1c] + add r0, r0, #1 + strb r0, [r4, #0x1c] +_02219026: + ldrh r1, [r4, #8] + ldrh r2, [r4, #0x16] + mov r0, #0 + sub r1, r1, #2 + cmp r2, r1 + bge _02219038 + add r1, r2, #2 + strh r1, [r4, #0x16] + b _0221903A +_02219038: + add r0, r0, #1 +_0221903A: + ldrh r1, [r4, #0x18] + cmp r1, #9 + bls _02219046 + sub r1, r1, #2 + strh r1, [r4, #0x18] + b _02219048 +_02219046: + add r0, r0, #1 +_02219048: + cmp r0, #2 + bne _0221905A + ldrh r0, [r4, #8] + strh r0, [r4, #0x16] + mov r0, #7 + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x1c] + add r0, r0, #1 + strb r0, [r4, #0x1c] +_0221905A: + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x16] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02219158 ; =0x04000052 + strh r1, [r0] + b _022190CA +_02219068: + ldr r1, [r4, #4] + cmp r1, #0 + beq _022190CA + add r0, r0, #1 + strb r0, [r4, #0x1c] + b _022190CA +_02219074: + ldrh r0, [r4, #0x16] + mov r1, #0 + cmp r0, #2 + bls _02219082 + sub r0, r0, #2 + strh r0, [r4, #0x16] + b _02219084 +_02219082: + add r1, r1, #1 +_02219084: + ldrh r0, [r4, #0x18] + cmp r0, #0x1d + bhs _02219090 + add r0, r0, #2 + strh r0, [r4, #0x18] + b _02219092 +_02219090: + add r1, r1, #1 +_02219092: + cmp r1, #2 + bne _022190A4 + mov r0, #0 + strh r0, [r4, #0x16] + mov r0, #0x1f + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x1c] + add r0, r0, #1 + strb r0, [r4, #0x1c] +_022190A4: + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x16] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02219158 ; =0x04000052 + strh r1, [r0] + b _022190CA +_022190B2: + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x20] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_022190CA: + mov r1, #0x10 + ldrsh r3, [r4, r1] + cmp r3, #0 + ble _022190DC + mov r0, #0xc + ldrsh r2, [r4, r0] + lsl r0, r1, #5 + cmp r2, r0 + bge _022190EA +_022190DC: + cmp r3, #0 + bge _022190EE + mov r0, #0xc + ldrsh r1, [r4, r0] + ldr r0, _0221915C ; =0xFFFFFE64 + cmp r1, r0 + bgt _022190EE +_022190EA: + mov r0, #1 + str r0, [r4, #4] +_022190EE: + mov r0, #0xa + ldrsh r1, [r4, r0] + mov r0, #0xe + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #0xa] + mov r0, #0xc + ldrsh r2, [r4, r0] + mov r0, #0x10 + ldrsh r1, [r4, r0] + add r1, r2, r1 + strh r1, [r4, #0xc] + ldrh r2, [r4, #0x12] + ldrh r1, [r4, #0x14] + cmp r2, r1 + bhs _02219132 + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _02219118 + add r0, r0, #1 + b _0221911A +_02219118: + mov r0, #0 +_0221911A: + strh r0, [r4, #0x10] + mov r0, #0xe + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _02219128 + add r0, r0, #1 + b _0221912A +_02219128: + mov r0, #0 +_0221912A: + strh r0, [r4, #0xe] + mov r0, #0 + strh r0, [r4, #0x14] + b _02219136 +_02219132: + add r0, r1, #1 + strh r0, [r4, #0x14] +_02219136: + mov r3, #0xa + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02219154: .word 0x04000050 +_02219158: .word 0x04000052 +_0221915C: .word 0xFFFFFE64 + + thumb_func_start MOD08_02219160 +MOD08_02219160: ; 0x02219160 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #0xb8 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x1c + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + strh r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #0xe] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strh r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + strh r0, [r4, #8] + add r0, r5, #0 + mov r1, #7 + bl MOD08_02212498 + strh r0, [r4, #0x12] + mov r0, #0 + strh r0, [r4, #0x14] + ldr r0, [r4] + cmp r0, #0 + beq _0221920C + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _0221920C + mov r0, #0xa + ldrsh r1, [r4, r0] + sub r0, #0xb + mul r0, r1 + strh r0, [r4, #0xa] + mov r1, #0xc + add r0, r1, #0 + ldrsh r2, [r4, r1] + sub r0, #0xd + mul r0, r2 + strh r0, [r4, #0xc] + mov r0, #0xe + ldrsh r2, [r4, r0] + sub r0, #0xf + mul r0, r2 + strh r0, [r4, #0xe] + mov r0, #0x10 + ldrsh r2, [r4, r0] + sub r0, #0x11 + mul r0, r2 + strh r0, [r4, #0x10] + ldrsh r0, [r4, r1] + sub r0, #0x54 + strh r0, [r4, #0xc] + b _02219214 +_0221920C: + mov r0, #0xc + ldrsh r0, [r4, r0] + add r0, #0x54 + strh r0, [r4, #0xc] +_02219214: + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02219228 + mov r0, #0xe + ldrsh r1, [r4, r0] + sub r0, #0xf + mul r0, r1 + strh r0, [r4, #0xe] +_02219228: + mov r1, #0 + strh r1, [r4, #0x16] + mov r0, #0x1f + strh r0, [r4, #0x18] + mov r0, #2 + str r1, [r4, #4] + bl FUN_0201797C + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + mov r1, #0 + add r7, r0, #0 + bl MOD08_022156AC + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #7 + add r1, r6, #0 + mov r3, #2 + bl FUN_0200687C + add r0, r7, #0 + mov r1, #1 + bl MOD08_022156AC + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x90 + str r0, [sp, #8] + ldr r0, [r4, #0x34] + mov r1, #7 + add r2, r6, #0 + bl FUN_020030E8 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_02018744 + add r0, r5, #0 + mov r6, #2 + bl MOD08_02212004 + cmp r0, #1 + bne _022192A8 + mov r6, #4 + b _022192BC +_022192A8: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _022192BC + mov r6, #3 +_022192BC: + add r0, r7, #0 + add r1, r6, #0 + bl MOD08_022156AC + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #7 + add r1, r6, #0 + mov r3, #2 + bl FUN_020068C8 + mov r3, #0xa + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + ldr r0, [r4, #0x20] + ldr r1, _02219310 ; =MOD08_02218FE8 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219310: .word MOD08_02218FE8 + + thumb_func_start MOD08_02219314 +MOD08_02219314: ; 0x02219314 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x1c] + cmp r0, #3 + bhi _022193DA + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221932C: ; jump table + .short _02219334 - _0221932C - 2 ; case 0 + .short _02219352 - _0221932C - 2 ; case 1 + .short _02219390 - _0221932C - 2 ; case 2 + .short _0221939C - _0221932C - 2 ; case 3 +_02219334: + ldrh r0, [r4, #0x18] + mov r1, #4 + mov r2, #0x39 + str r0, [sp] + ldrh r3, [r4, #0x16] + ldr r0, _0221947C ; =0x04000050 + bl G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + ldrb r0, [r4, #0x1c] + add r0, r0, #1 + strb r0, [r4, #0x1c] +_02219352: + ldrh r0, [r4, #0x16] + mov r1, #0 + cmp r0, #0x10 + bhs _02219360 + add r0, r0, #2 + strh r0, [r4, #0x16] + b _02219362 +_02219360: + add r1, r1, #1 +_02219362: + ldrh r0, [r4, #0x18] + cmp r0, #4 + bls _0221936E + sub r0, r0, #2 + strh r0, [r4, #0x18] + b _02219370 +_0221936E: + add r1, r1, #1 +_02219370: + cmp r1, #2 + bne _02219382 + mov r0, #0x10 + strh r0, [r4, #0x16] + mov r0, #4 + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x1c] + add r0, r0, #1 + strb r0, [r4, #0x1c] +_02219382: + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x16] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02219480 ; =0x04000052 + strh r1, [r0] + b _022193F2 +_02219390: + ldr r1, [r4, #4] + cmp r1, #0 + beq _022193F2 + add r0, r0, #1 + strb r0, [r4, #0x1c] + b _022193F2 +_0221939C: + ldrh r0, [r4, #0x16] + mov r1, #0 + cmp r0, #2 + bls _022193AA + sub r0, r0, #2 + strh r0, [r4, #0x16] + b _022193AC +_022193AA: + add r1, r1, #1 +_022193AC: + ldrh r0, [r4, #0x18] + cmp r0, #0x10 + bhs _022193B8 + add r0, r0, #2 + strh r0, [r4, #0x18] + b _022193BA +_022193B8: + add r1, r1, #1 +_022193BA: + cmp r1, #2 + bne _022193CC + mov r0, #0 + strh r0, [r4, #0x16] + mov r0, #0x1f + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x1c] + add r0, r0, #1 + strb r0, [r4, #0x1c] +_022193CC: + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x16] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02219480 ; =0x04000052 + strh r1, [r0] + b _022193F2 +_022193DA: + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x20] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_022193F2: + mov r1, #0x10 + ldrsh r3, [r4, r1] + cmp r3, #0 + ble _02219404 + mov r0, #0xc + ldrsh r2, [r4, r0] + lsl r0, r1, #5 + cmp r2, r0 + bge _02219412 +_02219404: + cmp r3, #0 + bge _02219416 + mov r0, #0xc + ldrsh r1, [r4, r0] + ldr r0, _02219484 ; =0xFFFFFE64 + cmp r1, r0 + bgt _02219416 +_02219412: + mov r0, #1 + str r0, [r4, #4] +_02219416: + mov r0, #0xa + ldrsh r1, [r4, r0] + mov r0, #0xe + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #0xa] + mov r0, #0xc + ldrsh r2, [r4, r0] + mov r0, #0x10 + ldrsh r1, [r4, r0] + add r1, r2, r1 + strh r1, [r4, #0xc] + ldrh r2, [r4, #0x12] + ldrh r1, [r4, #0x14] + cmp r2, r1 + bhs _0221945A + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _02219440 + add r0, r0, #1 + b _02219442 +_02219440: + mov r0, #0 +_02219442: + strh r0, [r4, #0x10] + mov r0, #0xe + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _02219450 + add r0, r0, #1 + b _02219452 +_02219450: + mov r0, #0 +_02219452: + strh r0, [r4, #0xe] + mov r0, #0 + strh r0, [r4, #0x14] + b _0221945E +_0221945A: + add r0, r1, #1 + strh r0, [r4, #0x14] +_0221945E: + mov r3, #0xa + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221947C: .word 0x04000050 +_02219480: .word 0x04000052 +_02219484: .word 0xFFFFFE64 + + thumb_func_start MOD08_02219488 +MOD08_02219488: ; 0x02219488 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #0xb8 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x1c + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + strh r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #0xe] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strh r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + strh r0, [r4, #8] + add r0, r5, #0 + mov r1, #7 + bl MOD08_02212498 + strh r0, [r4, #0x12] + mov r0, #0 + strh r0, [r4, #0x14] + ldr r0, [r4] + cmp r0, #0 + beq _02219534 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _02219534 + mov r0, #0xa + ldrsh r1, [r4, r0] + sub r0, #0xb + mul r0, r1 + strh r0, [r4, #0xa] + mov r1, #0xc + add r0, r1, #0 + ldrsh r2, [r4, r1] + sub r0, #0xd + mul r0, r2 + strh r0, [r4, #0xc] + mov r0, #0xe + ldrsh r2, [r4, r0] + sub r0, #0xf + mul r0, r2 + strh r0, [r4, #0xe] + mov r0, #0x10 + ldrsh r2, [r4, r0] + sub r0, #0x11 + mul r0, r2 + strh r0, [r4, #0x10] + ldrsh r0, [r4, r1] + sub r0, #0x54 + strh r0, [r4, #0xc] + b _0221953C +_02219534: + mov r0, #0xc + ldrsh r0, [r4, r0] + add r0, #0x54 + strh r0, [r4, #0xc] +_0221953C: + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02219550 + mov r0, #0xe + ldrsh r1, [r4, r0] + sub r0, #0xf + mul r0, r1 + strh r0, [r4, #0xe] +_02219550: + mov r0, #4 + strh r0, [r4, #0x16] + mov r0, #0x10 + strh r0, [r4, #0x18] + mov r1, #0 + strh r1, [r4, #0x16] + strh r0, [r4, #0x18] + mov r0, #2 + str r1, [r4, #4] + bl FUN_0201797C + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + mov r1, #0 + add r7, r0, #0 + bl MOD08_022156AC + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #7 + add r1, r6, #0 + mov r3, #2 + bl FUN_0200687C + add r0, r7, #0 + mov r1, #1 + bl MOD08_022156AC + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x90 + str r0, [sp, #8] + ldr r0, [r4, #0x34] + mov r1, #7 + add r2, r6, #0 + bl FUN_020030E8 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_02018744 + add r0, r5, #0 + mov r6, #2 + bl MOD08_02212004 + cmp r0, #1 + bne _022195D6 + mov r6, #4 + b _022195EA +_022195D6: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _022195EA + mov r6, #3 +_022195EA: + add r0, r7, #0 + add r1, r6, #0 + bl MOD08_022156AC + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #7 + add r1, r6, #0 + mov r3, #2 + bl FUN_020068C8 + mov r3, #0xa + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x30] + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + ldr r0, [r4, #0x20] + ldr r1, _0221963C ; =MOD08_02219314 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221963C: .word MOD08_02219314 + + thumb_func_start MOD08_02219640 +MOD08_02219640: ; 0x02219640 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _02219656 + cmp r0, #1 + beq _02219656 + cmp r0, #2 + beq _02219688 + pop {r3, r4, r5, pc} +_02219656: + add r0, r4, #0 + add r0, #0xc + bl MOD08_02218058 + cmp r0, #1 + bne _02219672 + ldr r2, [r4, #0xc] + ldr r0, [r4, #8] + lsl r2, r2, #0x10 + mov r1, #9 + lsr r2, r2, #0x10 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_02219672: + add r0, r4, #0 + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x20] + ldr r3, [r4, #0x24] + add r0, #0xc + bl MOD08_02218008 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02219688: + ldr r0, [r4, #8] + mov r1, #0xa + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + mov r1, #0xb + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + mov r1, #9 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022196B8 +MOD08_022196B8: ; 0x022196B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x2c + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + str r5, [r4, #4] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + add r7, r0, #0 + beq _022196F2 + cmp r7, #2 + bne _022196FC +_022196F2: + ldr r0, [r4, #4] + bl MOD08_02212460 + str r0, [sp] + b _02219704 +_022196FC: + ldr r0, [r4, #4] + bl MOD08_02212458 + str r0, [sp] +_02219704: + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r2, r0, #0 + add r0, r4, #0 + ldr r1, [r4, #0x20] + ldr r3, [r4, #0x24] + add r0, #0xc + bl MOD08_02218008 + ldr r1, [sp] + add r0, r5, #0 + bl MOD08_02217C1C + add r6, r0, #0 + ldr r0, [r4, #0x14] + add r1, r0, #0 + mul r1, r6 + str r1, [r4, #0x14] + cmp r7, #2 + bne _02219736 + mov r0, #0 + mvn r0, r0 + mul r6, r0 +_02219736: + ldr r0, [r4, #4] + ldr r1, [sp] + bl MOD08_022154D4 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + cmp r0, #1 + bne _02219760 + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strh r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + b _02219768 +_02219760: + mov r0, #0x28 + add r1, r6, #0 + mul r1, r0 + strh r1, [r4, #0x28] +_02219768: + strh r0, [r4, #0x2a] + mov r2, #0x28 + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0xa + bl FUN_02007558 + mov r2, #0x2a + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0xb + bl FUN_02007558 + ldr r0, [r4, #4] + ldr r1, _02219790 ; =MOD08_02219640 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219790: .word MOD08_02219640 + + thumb_func_start MOD08_02219794 +MOD08_02219794: ; 0x02219794 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x2c + mov r2, #0x2e + add r5, r0, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x28] + add r0, r4, #4 + bl MOD08_02217E58 + cmp r0, #0 + bne _022197E0 + mov r2, #0x2c + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x2e + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x28] + mov r1, #1 + sub r2, #8 + bl FUN_02007558 + ldr r0, [r4, #0x28] + mov r1, #9 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_022197E0: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022197E4 +MOD08_022197E4: ; 0x022197E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x30 + bl FUN_02016998 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + str r5, [r4] + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r2, r0, #0 + add r0, r4, #4 + add r1, r6, #0 + bl MOD08_02218654 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + cmp r0, #8 + bgt _0221982E + cmp r0, #2 + blt _022198A0 + beq _02219834 + cmp r0, #4 + beq _02219850 + cmp r0, #8 + beq _02219874 + b _022198A0 +_0221982E: + cmp r0, #0x10 + beq _02219886 + b _022198A0 +_02219834: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x28] + mov r0, #0 + ldr r1, [r4, #0x10] + mvn r0, r0 + mul r0, r1 + str r0, [r4, #0x10] + b _022198A4 +_02219850: + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022274C0 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x28] + mov r0, #0 + ldr r1, [r4, #0x10] + mvn r0, r0 + mul r0, r1 + str r0, [r4, #0x10] + b _022198A4 +_02219874: + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x28] + b _022198A4 +_02219886: + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022274C0 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x28] + b _022198A4 +_022198A0: + bl ErrorHandling +_022198A4: + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x2c] + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x2e] + mov r0, #0x2e + ldrsh r0, [r4, r0] + ldr r1, _022198CC ; =MOD08_02219794 + add r2, r4, #0 + add r0, #8 + strh r0, [r4, #0x2e] + ldr r0, [r4] + bl MOD08_02212400 + pop {r4, r5, r6, pc} + .align 2, 0 +_022198CC: .word MOD08_02219794 + + thumb_func_start MOD08_022198D0 +MOD08_022198D0: ; 0x022198D0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, [r5, #0x14] + add r4, r1, #0 + mov r1, #1 + add r6, r2, #0 + bl FUN_0200C644 + ldr r0, [r5, #0x14] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200C714 + mov r0, #0 + str r0, [r5, #0x40] + mov r0, #4 + mov r1, #0xa + add r5, #0x18 + str r0, [sp] + add r0, r5, #0 + add r2, r1, #0 + mov r3, #0xe + bl MOD08_02218120 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_02219908 +MOD08_02219908: ; 0x02219908 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r1, [r4, #0x14] + add r0, #0x18 + bl MOD08_02218360 + cmp r0, #0 + bne _02219944 + ldr r0, [r4, #0x40] + cmp r0, #0 + beq _0221992E + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200C644 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_0221992E: + mov r0, #1 + str r0, [r4, #0x40] + mov r0, #2 + add r4, #0x18 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xe + mov r2, #0xa + mov r3, #0xc + bl MOD08_02218120 +_02219944: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221994C +MOD08_0221994C: ; 0x0221994C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4, #0x48] + mov r5, #0 + cmp r1, #4 + bhi _022199E4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02219964: ; jump table + .short _0221996E - _02219964 - 2 ; case 0 + .short _02219994 - _02219964 - 2 ; case 1 + .short _022199A4 - _02219964 - 2 ; case 2 + .short _022199D2 - _02219964 - 2 ; case 3 + .short _022199E2 - _02219964 - 2 ; case 4 +_0221996E: + mov r1, #0x4c + ldrsh r3, [r4, r1] + ldr r2, [r4, #0x3c] + mov r1, #0x18 + mul r1, r2 + mov r2, #0x4e + ldrsh r2, [r4, r2] + add r1, r3, r1 + lsl r1, r1, #0x10 + sub r2, #0x10 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_022198D0 + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] + b _022199E4 +_02219994: + bl MOD08_02219908 + cmp r0, #0 + beq _022199E4 + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] + b _022199E4 +_022199A4: + ldr r1, [r4, #0x44] + sub r1, r1, #1 + str r1, [r4, #0x44] + bpl _022199E4 + ldr r1, [r4, #0x48] + add r1, r1, #1 + str r1, [r4, #0x48] + mov r1, #0x4c + ldrsh r3, [r4, r1] + ldr r2, [r4, #0x3c] + mov r1, #0x18 + mul r1, r2 + mov r2, #0x4e + ldrsh r2, [r4, r2] + sub r1, r3, r1 + lsl r1, r1, #0x10 + sub r2, #0x18 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_022198D0 + b _022199E4 +_022199D2: + bl MOD08_02219908 + cmp r0, #0 + beq _022199E4 + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] + b _022199E4 +_022199E2: + mov r5, #1 +_022199E4: + add r0, r5, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022199E8 +MOD08_022199E8: ; 0x022199E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _022199FA + cmp r0, #1 + beq _02219A0C + b _02219A22 +_022199FA: + add r0, r4, #0 + bl MOD08_0221994C + cmp r0, #0 + beq _02219A22 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02219A22 +_02219A0C: + ldr r0, [r4, #0x14] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_02219A22: + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02219A2C +MOD08_02219A2C: ; 0x02219A2C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x50 + add r5, r0, #0 + str r2, [sp] + add r6, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #8] + str r6, [r4, #0x14] + add r0, r6, #0 + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x14] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200C644 + mov r0, #4 + str r0, [r4, #0x44] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + add r5, r0, #0 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x4c + strh r0, [r1] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x4e + strh r0, [r1] + ldr r0, [r4] + ldr r1, _02219AB4 ; =MOD08_022199E8 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219AB4: .word MOD08_022199E8 + + thumb_func_start MOD08_02219AB8 +MOD08_02219AB8: ; 0x02219AB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_020038E4 + cmp r0, #0 + bne _02219AD6 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_02219AD6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02219AD8 +MOD08_02219AD8: ; 0x02219AD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r1, #8 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02215504 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + cmp r0, #0 + beq _02219B06 + cmp r0, #1 + beq _02219B12 + cmp r0, #2 + beq _02219B18 + b _02219B1E +_02219B06: + add r0, r5, #0 + bl MOD08_02214540 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _02219B22 +_02219B12: + mov r6, #1 + lsl r6, r6, #8 + b _02219B22 +_02219B18: + mov r6, #2 + lsl r6, r6, #8 + b _02219B22 +_02219B1E: + bl ErrorHandling +_02219B22: + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [sp, #0x10] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + ldr r1, [sp, #0xc] + lsl r0, r0, #0x10 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + ldr r1, [sp, #0x10] + lsl r3, r7, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #4] + mov r1, #1 + add r2, r6, #0 + asr r3, r3, #0x18 + bl FUN_02003210 + ldr r0, [r4] + ldr r1, _02219B7C ; =MOD08_02219AB8 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02219B7C: .word MOD08_02219AB8 + + thumb_func_start MOD08_02219B80 +MOD08_02219B80: ; 0x02219B80 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #5 + bhi _02219C28 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02219B98: ; jump table + .short _02219BA4 - _02219B98 - 2 ; case 0 + .short _02219BBC - _02219B98 - 2 ; case 1 + .short _02219BCE - _02219B98 - 2 ; case 2 + .short _02219BE0 - _02219B98 - 2 ; case 3 + .short _02219BF8 - _02219B98 - 2 ; case 4 + .short _02219C1A - _02219B98 - 2 ; case 5 +_02219BA4: + ldr r0, [r4, #0x14] + mov r1, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r2, [r4, #0x18] + ldr r3, [r4, #0x10] + bl FUN_02007E68 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02219BBC: + ldr r0, [r4, #4] + bl FUN_02007F20 + cmp r0, #0 + bne _02219C28 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02219BCE: + ldr r1, [r4, #0x1c] + cmp r1, #0 + bne _02219BDA + add r0, r0, #1 + str r0, [r4, #8] + b _02219BE0 +_02219BDA: + sub r0, r1, #1 + str r0, [r4, #0x1c] + pop {r3, r4, r5, pc} +_02219BE0: + ldr r0, [r4, #0x14] + mov r2, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, [r4, #0x18] + ldr r3, [r4, #0x10] + bl FUN_02007E68 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02219BF8: + ldr r0, [r4, #4] + bl FUN_02007F20 + cmp r0, #0 + bne _02219C28 + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0 + bgt _02219C14 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02219C14: + mov r0, #0 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02219C1A: + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_02219C28: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02219C2C +MOD08_02219C2C: ; 0x02219C2C + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x20 + add r4, r0, #0 + bl MOD08_02228064 + add r6, r0, #0 + str r4, [r6] + mov r1, #0 + add r0, r4, #0 + str r1, [r6, #4] + bl MOD08_02212498 + ldr r2, _02219DF4 ; =0x00000802 + cmp r0, r2 + bgt _02219C66 + bge _02219CEC + cmp r0, #8 + bgt _02219C60 + cmp r0, #2 + blt _02219C5E + beq _02219C7E + cmp r0, #4 + beq _02219C90 + cmp r0, #8 + beq _02219CB6 +_02219C5E: + b _02219DA4 +_02219C60: + cmp r0, #0x10 + beq _02219CC8 + b _02219DA4 +_02219C66: + add r1, r2, #6 + cmp r0, r1 + bgt _02219C76 + bge _02219D48 + add r1, r2, #2 + cmp r0, r1 + beq _02219D1C + b _02219DA4 +_02219C76: + add r2, #0xe + cmp r0, r2 + beq _02219D78 + b _02219DA4 +_02219C7E: + add r0, r4, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219C90: + add r0, r4, #0 + bl MOD08_0221553C + cmp r0, #1 + beq _02219C9C + b _02219DA8 +_02219C9C: + ldr r0, [r6] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022274C0 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219CB6: + add r0, r4, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219CC8: + add r0, r4, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _02219DA8 + ldr r0, [r6] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022274C0 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219CEC: + mov r7, #0xff + mov r5, #0 +_02219CF0: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #0 + beq _02219D00 + cmp r0, #2 + bne _02219D04 +_02219D00: + add r7, r5, #0 + b _02219D0A +_02219D04: + add r5, r5, #1 + cmp r5, #4 + blt _02219CF0 +_02219D0A: + cmp r7, #0xff + bne _02219D10 + mov r7, #0 +_02219D10: + ldr r0, [r6] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219D1C: + mov r7, #0xff + mov r5, #0 +_02219D20: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #4 + bne _02219D30 + add r7, r5, #0 + b _02219D36 +_02219D30: + add r5, r5, #1 + cmp r5, #4 + blt _02219D20 +_02219D36: + cmp r7, #0xff + bne _02219D3C + mov r7, #0 +_02219D3C: + ldr r0, [r6] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219D48: + mov r7, #0xff + mov r5, #0 +_02219D4C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #1 + beq _02219D5C + cmp r0, #3 + bne _02219D60 +_02219D5C: + add r7, r5, #0 + b _02219D66 +_02219D60: + add r5, r5, #1 + cmp r5, #4 + blt _02219D4C +_02219D66: + cmp r7, #0xff + bne _02219D6C + mov r7, #0 +_02219D6C: + ldr r0, [r6] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219D78: + mov r7, #0xff + mov r5, #0 +_02219D7C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02215490 + cmp r0, #5 + bne _02219D8C + add r7, r5, #0 + b _02219D92 +_02219D8C: + add r5, r5, #1 + cmp r5, #4 + blt _02219D7C +_02219D92: + cmp r7, #0xff + bne _02219D98 + mov r7, #0 +_02219D98: + ldr r0, [r6] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r6, #4] + b _02219DA8 +_02219DA4: + bl ErrorHandling +_02219DA8: + ldr r0, [r6, #4] + cmp r0, #0 + bne _02219DB6 + add r0, r6, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_02219DB6: + add r0, r4, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r6, #0x10] + add r0, r4, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r6, #0xc] + add r0, r4, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r6, #0x14] + add r0, r4, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r6, #0x18] + add r0, r4, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r6, #0x1c] + ldr r0, [r6] + ldr r1, _02219DF8 ; =MOD08_02219B80 + add r2, r6, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02219DF4: .word 0x00000802 +_02219DF8: .word MOD08_02219B80 + + thumb_func_start MOD08_02219DFC +MOD08_02219DFC: ; 0x02219DFC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #4 + bls _02219E0C + b _02219F60 +_02219E0C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02219E18: ; jump table + .short _02219E22 - _02219E18 - 2 ; case 0 + .short _02219E70 - _02219E18 - 2 ; case 1 + .short _02219EC2 - _02219E18 - 2 ; case 2 + .short _02219EEC - _02219E18 - 2 ; case 3 + .short _02219F4E - _02219E18 - 2 ; case 4 +_02219E22: + ldr r0, [r4, #0x4c] + asr r0, r0, #0x10 + str r0, [sp] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x44] + ldr r3, [r4, #0x40] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x14 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02218120 + add r0, r4, #0 + add r0, #0x14 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _02219E5E + ldr r1, [sp, #8] + mov r0, #0 + bl _fsub + str r0, [sp, #8] +_02219E5E: + ldr r0, [r4, #0x10] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_0200C884 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02219F60 +_02219E70: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x14 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _02219E96 + ldr r1, [sp, #8] + mov r0, #0 + bl _fsub + str r0, [sp, #8] +_02219E96: + ldr r0, [r4, #0x10] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_0200C884 + cmp r5, #0 + beq _02219EBA + mov r0, #0 + str r0, [sp] + mov r1, #0xc + mov r2, #0xe + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r3, [r4, #0x28] + bl MOD08_02218314 + b _02219F60 +_02219EBA: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02219F60 +_02219EC2: + ldr r0, [r4, #0x4c] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x44] + ldr r3, [r4, #0x3c] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x14 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02218120 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02219F60 +_02219EEC: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x14 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _02219F12 + ldr r1, [sp, #8] + mov r0, #0 + bl _fsub + str r0, [sp, #8] +_02219F12: + ldr r0, [r4, #0x10] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_0200C884 + cmp r5, #0 + beq _02219F36 + mov r0, #0 + str r0, [sp] + mov r1, #0xc + mov r2, #0xe + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r3, [r4, #0x28] + bl MOD08_02218314 + b _02219F60 +_02219F36: + ldr r0, [r4, #0x48] + sub r0, r0, #1 + str r0, [r4, #0x48] + cmp r0, #0 + bgt _02219F48 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02219F60 +_02219F48: + mov r0, #0 + str r0, [r4, #8] + b _02219F60 +_02219F4E: + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add sp, #0xc + pop {r4, r5, pc} +_02219F60: + ldr r0, [r4, #4] + bl FUN_0200BC1C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02219F6C +MOD08_02219F6C: ; 0x02219F6C + push {r4, r5, r6, lr} + mov r1, #0x54 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + cmp r0, #0 + bne _02219FAE + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + add r6, r0, #0 + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C + b _02219FCC +_02219FAE: + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + add r6, r0, #0 + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C +_02219FCC: + strh r0, [r4, #0xe] + add r0, r6, #0 + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #0x29 + bl FUN_0200782C + mov r1, #0xc + ldrsh r1, [r4, r1] + sub r0, r1, r0 + strh r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r4, #0x38] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #0x3c] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #0x40] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r4, #0x44] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4, #0x48] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + str r0, [r4, #0x4c] + add r0, r5, #0 + mov r1, #7 + bl MOD08_02212498 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022124D8 + str r0, [r4, #0x10] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_0200C840 + ldr r1, [r4, #0x38] + mov r2, #0x10 + ldr r0, [r4] + sub r2, r2, r1 + bl MOD08_02227994 + ldr r0, [r4] + ldr r1, _0221A08C ; =MOD08_02219DFC + add r2, r4, #0 + bl MOD08_02212400 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + cmp r0, #0 + beq _0221A07A + mov r1, #1 + b _0221A07C +_0221A07A: + mov r1, #0 +_0221A07C: + ldr r0, [r4] + bl MOD08_02215680 + cmp r0, #1 + bne _0221A08A + mov r0, #1 + str r0, [r4, #0x50] +_0221A08A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0221A08C: .word MOD08_02219DFC + + thumb_func_start MOD08_0221A090 +MOD08_0221A090: ; 0x0221A090 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #5 + bls _0221A0A0 + b _0221A1DC +_0221A0A0: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221A0AC: ; jump table + .short _0221A0B8 - _0221A0AC - 2 ; case 0 + .short _0221A0FC - _0221A0AC - 2 ; case 1 + .short _0221A12C - _0221A0AC - 2 ; case 2 + .short _0221A140 - _0221A0AC - 2 ; case 3 + .short _0221A186 - _0221A0AC - 2 ; case 4 + .short _0221A1C8 - _0221A0AC - 2 ; case 5 +_0221A0B8: + ldr r0, [r4, #0x40] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x44] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4, #0x4c] + asr r0, r0, #0x10 + str r0, [sp, #8] + ldr r1, [r4, #0x34] + ldr r2, [r4, #0x38] + ldr r3, [r4, #0x3c] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_022181A8 + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_02218380 + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_0221A0FC: + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_022183A0 + cmp r0, #0 + beq _0221A122 + mov r0, #0 + str r0, [sp] + mov r1, #8 + mov r2, #0xa + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + bl MOD08_022182DC + add sp, #0xc + pop {r4, r5, pc} +_0221A122: + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_0221A12C: + ldr r1, [r4, #0x50] + cmp r1, #0 + bne _0221A138 + add r0, r0, #1 + str r0, [r4, #4] + b _0221A140 +_0221A138: + sub r0, r1, #1 + add sp, #0xc + str r0, [r4, #0x50] + pop {r4, r5, pc} +_0221A140: + ldr r0, [r4, #0x3c] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x44] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4, #0x4c] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r1, [r4, #0x38] + ldr r2, [r4, #0x34] + ldr r3, [r4, #0x40] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_022181A8 + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_022183A0 + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_0221A186: + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_022183A0 + cmp r0, #0 + beq _0221A1AC + mov r0, #0 + str r0, [sp] + mov r1, #8 + mov r2, #0xa + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + bl MOD08_022182DC + add sp, #0xc + pop {r4, r5, pc} +_0221A1AC: + ldr r0, [r4, #0x48] + sub r0, r0, #1 + str r0, [r4, #0x48] + cmp r0, #0 + bgt _0221A1C0 + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_0221A1C0: + mov r0, #0 + add sp, #0xc + str r0, [r4, #4] + pop {r4, r5, pc} +_0221A1C8: + ldr r0, [r4, #0xc] + bl MOD08_02218E34 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_0221A1DC: + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD08_0221A1E0 +MOD08_0221A1E0: ; 0x0221A1E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + add r5, r0, #0 + mov r1, #0x54 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + str r5, [r4] + bl MOD08_02212498 + ldr r2, _0221A3E4 ; =0x00000802 + cmp r0, r2 + bgt _0221A224 + bge _0221A290 + mov r2, #0x42 + lsl r2, r2, #2 + cmp r0, r2 + bgt _0221A21C + sub r1, r2, #6 + cmp r0, r1 + blt _0221A21A + beq _0221A23C + sub r1, r2, #4 + cmp r0, r1 + beq _0221A23C + cmp r0, r2 + beq _0221A266 +_0221A21A: + b _0221A346 +_0221A21C: + add r2, #8 + cmp r0, r2 + beq _0221A266 + b _0221A346 +_0221A224: + add r1, r2, #6 + cmp r0, r1 + bgt _0221A234 + bge _0221A2EC + add r1, r2, #2 + cmp r0, r1 + beq _0221A2C0 + b _0221A346 +_0221A234: + add r2, #0xe + cmp r0, r2 + beq _0221A31C + b _0221A346 +_0221A23C: + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C + strh r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r1, r0, #0 + ldr r0, [r4] + add r2, sp, #4 + add r3, sp, #0 + bl MOD08_02227BAC + ldr r0, [sp, #0xc] + str r0, [r4, #0xc] + b _0221A346 +_0221A266: + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C + strh r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r1, r0, #0 + ldr r0, [r4] + add r2, sp, #4 + add r3, sp, #0 + bl MOD08_02227BAC + ldr r0, [sp, #0xc] + str r0, [r4, #0xc] + b _0221A346 +_0221A290: + mov r7, #0xff + mov r6, #0 +_0221A294: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02215490 + cmp r0, #0 + beq _0221A2A4 + cmp r0, #2 + bne _0221A2A8 +_0221A2A4: + add r7, r6, #0 + b _0221A2AE +_0221A2A8: + add r6, r6, #1 + cmp r6, #4 + blt _0221A294 +_0221A2AE: + cmp r7, #0xff + bne _0221A2B4 + mov r7, #0 +_0221A2B4: + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r4, #0xc] + b _0221A346 +_0221A2C0: + mov r7, #0xff + mov r6, #0 +_0221A2C4: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02215490 + cmp r0, #4 + bne _0221A2D4 + add r7, r6, #0 + b _0221A2DA +_0221A2D4: + add r6, r6, #1 + cmp r6, #4 + blt _0221A2C4 +_0221A2DA: + cmp r7, #0xff + bne _0221A2E0 + mov r7, #0 +_0221A2E0: + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r4, #0xc] + b _0221A346 +_0221A2EC: + mov r7, #0xff + mov r6, #0 +_0221A2F0: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02215490 + cmp r0, #1 + beq _0221A300 + cmp r0, #3 + bne _0221A304 +_0221A300: + add r7, r6, #0 + b _0221A30A +_0221A304: + add r6, r6, #1 + cmp r6, #4 + blt _0221A2F0 +_0221A30A: + cmp r7, #0xff + bne _0221A310 + mov r7, #0 +_0221A310: + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r4, #0xc] + b _0221A346 +_0221A31C: + mov r7, #0xff + mov r6, #0 +_0221A320: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02215490 + cmp r0, #5 + bne _0221A330 + add r7, r6, #0 + b _0221A336 +_0221A330: + add r6, r6, #1 + cmp r6, #4 + blt _0221A320 +_0221A336: + cmp r7, #0xff + bne _0221A33C + mov r7, #0 +_0221A33C: + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_022154D4 + str r0, [r4, #0xc] +_0221A346: + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _0221A356 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x54 + pop {r4, r5, r6, r7, pc} +_0221A356: + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #0x29 + bl FUN_0200782C + strh r0, [r4, #0xa] + mov r0, #0xa + ldrsh r0, [r4, r0] + mov r1, #1 + add r0, #0x10 + strh r0, [r4, #0xa] + add r0, r5, #0 + bl MOD08_02212498 + str r0, [r4, #0x34] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #0x38] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #0x3c] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r4, #0x40] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4, #0x44] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + str r0, [r4, #0x48] + add r0, r5, #0 + mov r1, #7 + bl MOD08_02212498 + str r0, [r4, #0x4c] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [r4, #0x48] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + asr r0, r0, #0x10 + str r0, [r4, #0x50] + ldr r0, [r4] + ldr r1, _0221A3E8 ; =MOD08_0221A090 + add r2, r4, #0 + bl MOD08_02212400 + add r1, r4, #0 + bl MOD08_0221A090 + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221A3E4: .word 0x00000802 +_0221A3E8: .word MOD08_0221A090 + + thumb_func_start MOD08_0221A3EC +MOD08_0221A3EC: ; 0x0221A3EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #8 + bl MOD08_02218704 + cmp r0, #0 + beq _0221A40E + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + pop {r3, r4, r5, pc} +_0221A40E: + ldr r0, [r4, #4] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221A418 +MOD08_0221A418: ; 0x0221A418 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #0x30 + add r7, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r7, [r4] + add r0, r7, #0 + bl MOD08_02212504 + str r0, [r4, #4] + add r0, r7, #0 + mov r1, #0 + bl MOD08_02212498 + add r6, r0, #0 + mov r5, #0 +_0221A43C: + mov r0, #1 + lsl r0, r5 + tst r0, r6 + beq _0221A452 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_022124D8 + mov r1, #1 + bl FUN_0200C90C +_0221A452: + add r5, r5, #1 + cmp r5, #4 + blt _0221A43C + add r0, r7, #0 + mov r1, #1 + bl MOD08_02212498 + add r5, r0, #0 + add r0, r7, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [sp, #8] + ldr r0, [r4] + ldr r2, [sp, #8] + add r1, r5, #0 + bl MOD08_02227994 + add r0, r7, #0 + mov r1, #2 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r7, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [sp, #0xc] + add r0, r7, #0 + mov r1, #5 + bl MOD08_02212498 + ldr r1, [sp, #0xc] + ldr r3, [sp, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + str r1, [sp] + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r5, #0x10 + lsl r2, r6, #0x10 + lsl r3, r3, #0x10 + add r0, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_022186D4 + ldr r0, [r4] + ldr r1, _0221A4C0 ; =MOD08_0221A3EC + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221A4C0: .word MOD08_0221A3EC + + thumb_func_start MOD08_0221A4C4 +MOD08_0221A4C4: ; 0x0221A4C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + mov r1, #1 + bl MOD08_02212498 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl MOD08_02212498 + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #4 + add r3, sp, #0 + bl MOD08_02227BAC + ldr r0, [sp] + mov r4, #0 + cmp r0, #0 + ble _0221A512 + mov r7, #6 +_0221A4F0: + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl MOD08_02215554 + cmp r0, #1 + bne _0221A500 + cmp r5, #0 + beq _0221A50A +_0221A500: + ldr r0, [sp, #0xc] + add r1, r7, #0 + add r2, r5, #0 + bl FUN_02007558 +_0221A50A: + ldr r0, [sp] + add r4, r4, #1 + cmp r4, r0 + blt _0221A4F0 +_0221A512: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0221A518 +MOD08_0221A518: ; 0x0221A518 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4, #4] + ldr r0, [r4, #8] + cmp r1, r0 + blt _0221A566 + ldr r0, [r4] + cmp r0, #0 + ldr r0, [r4, #0x14] + bne _0221A546 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4, #0x3c] + add r1, r5, #0 + bl MOD08_02212438 + pop {r3, r4, r5, pc} +_0221A546: + mov r1, #6 + bl FUN_0200782C + add r3, r0, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + mov r1, #6 + eor r2, r3 + bl FUN_02007558 + ldr r0, [r4] + sub r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_0221A566: + add r0, r1, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0221A56C +MOD08_0221A56C: ; 0x0221A56C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0x40 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + str r5, [r4, #0x3c] + bl MOD08_02212498 + lsl r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r1, r4, #0 + str r0, [r4, #8] + add r0, r5, #0 + add r1, #0x20 + bl MOD08_02227B70 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022154D4 + str r0, [r4, #0x14] + ldr r0, [r4, #0x3c] + ldr r1, _0221A5B8 ; =MOD08_0221A518 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0221A5B8: .word MOD08_0221A518 + + thumb_func_start MOD08_0221A5BC +MOD08_0221A5BC: ; 0x0221A5BC + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + cmp r0, #0 + beq _0221A5D4 + cmp r0, #1 + beq _0221A608 + b _0221A632 +_0221A5D4: + mov r0, #0x16 + ldrsh r3, [r4, r0] + mov r0, #0x14 + ldrsh r1, [r4, r0] + mov r2, #0xc + str r3, [sp] + ldr r0, [r4, #8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldrsh r2, [r4, r2] + add r0, r4, #0 + add r0, #0x40 + add r2, r1, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + add r4, #0x24 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_0221A608: + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221A622 + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] +_0221A622: + mov r2, #0x40 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_0221A632: + ldr r0, [r4, #0x64] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_0221A644 +MOD08_0221A644: ; 0x0221A644 + push {r4, r5, r6, lr} + mov r1, #0x68 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #0x64] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + mov r6, #0xff + add r1, r6, #0 + add r1, #9 + cmp r0, r1 + bgt _0221A690 + add r1, r6, #3 + cmp r0, r1 + blt _0221A6E6 + beq _0221A69A + add r1, r6, #5 + cmp r0, r1 + beq _0221A6A4 + add r1, r6, #0 + add r1, #9 + cmp r0, r1 + beq _0221A6C0 + b _0221A6E6 +_0221A690: + add r1, r6, #0 + add r1, #0x11 + cmp r0, r1 + beq _0221A6CA + b _0221A6E6 +_0221A69A: + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + b _0221A6EA +_0221A6A4: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _0221A6EA + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221A6EA +_0221A6C0: + add r0, r5, #0 + bl MOD08_02212460 + add r6, r0, #0 + b _0221A6EA +_0221A6CA: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _0221A6EA + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221A6EA +_0221A6E6: + bl ErrorHandling +_0221A6EA: + cmp r6, #0xff + bne _0221A6F6 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_0221A6F6: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x24 + bl MOD08_02227B70 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + add r1, r4, #0 + add r1, #0x14 + str r0, [r4, #0x18] + bl MOD08_02227B2C + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + cmp r0, #0 + bgt _0221A728 + mov r0, #0xc + ldrsh r1, [r4, r0] + sub r0, #0xd + mul r0, r1 + strh r0, [r4, #0xc] +_0221A728: + ldr r0, [r4, #0x64] + ldr r1, _0221A734 ; =MOD08_0221A5BC + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + .align 2, 0 +_0221A734: .word MOD08_0221A5BC + + thumb_func_start MOD08_0221A738 +MOD08_0221A738: ; 0x0221A738 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _0221A750 + cmp r0, #1 + beq _0221A792 + b _0221A7BC +_0221A750: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0221A760 + mov r0, #0xff + add r4, #0x20 + add sp, #8 + strb r0, [r4] + pop {r4, pc} +_0221A760: + mov r0, #0x12 + ldrsh r3, [r4, r0] + mov r0, #0x10 + ldrsh r1, [r4, r0] + mov r2, #0x64 + str r3, [sp] + ldr r0, [r4, #8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldrsh r2, [r4, r2] + add r0, r4, #0 + add r0, #0x3c + add r2, r1, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] +_0221A792: + add r0, r4, #0 + add r0, #0x3c + bl MOD08_02217ECC + cmp r0, #0 + bne _0221A7AC + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] +_0221A7AC: + mov r2, #0x3c + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_0221A7BC: + ldr r0, [r4, #0x60] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221A7D0 +MOD08_0221A7D0: ; 0x0221A7D0 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x68 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #0x60] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x64 + strh r0, [r1] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r1, r4, #0 + add r7, r0, #0 + add r0, r5, #0 + add r1, #0x20 + bl MOD08_02227B70 + mov r6, #0xff + add r0, r6, #0 + add r0, #9 + cmp r7, r0 + bgt _0221A82C + add r0, r6, #3 + cmp r7, r0 + blt _0221A882 + beq _0221A836 + add r0, r6, #5 + cmp r7, r0 + beq _0221A840 + add r0, r6, #0 + add r0, #9 + cmp r7, r0 + beq _0221A85C + b _0221A882 +_0221A82C: + add r0, r6, #0 + add r0, #0x11 + cmp r7, r0 + beq _0221A866 + b _0221A882 +_0221A836: + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + b _0221A886 +_0221A840: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _0221A886 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221A886 +_0221A85C: + add r0, r5, #0 + bl MOD08_02212460 + add r6, r0, #0 + b _0221A886 +_0221A866: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _0221A886 + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221A886 +_0221A882: + bl ErrorHandling +_0221A886: + cmp r6, #0xff + bne _0221A892 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_0221A892: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + add r1, r4, #0 + add r1, #0x10 + str r0, [r4, #0x14] + bl MOD08_02227B2C + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + cmp r0, #0 + bgt _0221A8C0 + mov r0, #0x64 + ldrsh r1, [r4, r0] + sub r0, #0x65 + add r2, r1, #0 + mul r2, r0 + add r0, r4, #0 + add r0, #0x64 + strh r2, [r0] +_0221A8C0: + add r0, r5, #0 + bl MOD08_02212004 + ldr r0, [r4, #0x60] + ldr r1, _0221A8D8 ; =MOD08_0221A738 + add r2, r4, #0 + bl MOD08_02212400 + add r1, r4, #0 + bl MOD08_0221A738 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221A8D8: .word MOD08_0221A738 + + thumb_func_start MOD08_0221A8DC +MOD08_0221A8DC: ; 0x0221A8DC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bls _0221A8EC + b _0221AA6A +_0221A8EC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221A8F8: ; jump table + .short _0221A900 - _0221A8F8 - 2 ; case 0 + .short _0221A962 - _0221A8F8 - 2 ; case 1 + .short _0221A9AC - _0221A8F8 - 2 ; case 2 + .short _0221A9FA - _0221A8F8 - 2 ; case 3 +_0221A900: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + bne _0221A958 + add r0, r4, #0 + add r0, #0x38 + bl MOD08_022183F0 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xd + bl FUN_02007558 + mov r2, #0x38 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020079E0 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221A958: + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221A962: + ldrb r0, [r4, #9] + add r0, r0, #1 + strb r0, [r4, #9] + ldrb r1, [r4, #9] + ldrb r0, [r4, #0xa] + cmp r1, r0 + bhi _0221A972 + b _0221AA78 +_0221A972: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD08_02212498 + add r5, r0, #0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD08_02212498 + add r6, r0, #0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl MOD08_02212498 + str r0, [sp] + add r0, r4, #0 + lsl r1, r5, #0x10 + lsl r3, r6, #0x10 + add r0, #0x14 + asr r1, r1, #0x10 + mov r2, #0x64 + asr r3, r3, #0x10 + bl MOD08_02218120 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221A9AC: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + bne _0221A9F0 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221A9F0: + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221A9FA: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + ldr r0, [r4, #0x10] + bne _0221AA3E + mov r2, #0x14 + ldrsh r2, [r4, r2] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221AA3E: + mov r1, #0xc + add r2, r1, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0x10] + add r2, #0xf3 + bl FUN_02007558 + mov r2, #2 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007558 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221AA6A: + ldr r0, [r4, #0xc] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221AA78: + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD08_0221AA7C +MOD08_0221AA7C: ; 0x0221AA7C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x5c + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4] + str r5, [r4, #0xc] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r0, #0 + strb r0, [r4, #9] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strb r0, [r4, #0xa] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + ldr r0, [r4, #0xc] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_0221552C + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x64 + lsl r3, r6, #0x10 + add r0, #0x14 + add r2, r1, #0 + asr r3, r3, #0x10 + bl MOD08_02218120 + mov r0, #0xa + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r0, #0x38 + mov r1, #2 + add r3, r2, #0 + bl MOD08_022183C0 + ldr r0, [r4, #0xc] + ldr r1, _0221AB14 ; =MOD08_0221A8DC + add r2, r4, #0 + bl MOD08_02212400 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0221AB14: .word MOD08_0221A8DC + + thumb_func_start MOD08_0221AB18 +MOD08_0221AB18: ; 0x0221AB18 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bls _0221AB28 + b _0221ACA8 +_0221AB28: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221AB34: ; jump table + .short _0221AB3C - _0221AB34 - 2 ; case 0 + .short _0221AB9E - _0221AB34 - 2 ; case 1 + .short _0221ABEA - _0221AB34 - 2 ; case 2 + .short _0221AC38 - _0221AB34 - 2 ; case 3 +_0221AB3C: + add r0, r4, #0 + add r0, #0x20 + bl MOD08_02218224 + cmp r0, #1 + bne _0221AB94 + add r0, r4, #0 + add r0, #0x44 + bl MOD08_022183F0 + mov r2, #0x20 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x22 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xd + bl FUN_02007558 + mov r2, #0x44 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_020079E0 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x34] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221AB94: + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221AB9E: + ldrb r0, [r4, #9] + add r0, r0, #1 + strb r0, [r4, #9] + ldrb r1, [r4, #9] + ldrb r0, [r4, #0xa] + cmp r1, r0 + bhi _0221ABAE + b _0221ACB6 +_0221ABAE: + ldr r3, [r4, #0x10] + ldr r2, [r4, #0xc] + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + asr r1, r2, #0x10 + mov r0, #0x64 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + asr r3, r3, #0x10 + str r0, [sp, #8] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x20 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_022181A8 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221ABEA: + add r0, r4, #0 + add r0, #0x20 + bl MOD08_02218224 + cmp r0, #1 + bne _0221AC2E + mov r2, #0x20 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x22 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x34] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221AC2E: + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221AC38: + add r0, r4, #0 + add r0, #0x20 + bl MOD08_02218224 + cmp r0, #1 + ldr r0, [r4, #0x1c] + bne _0221AC7C + mov r2, #0x20 + ldrsh r2, [r4, r2] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x22 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x34] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221AC7C: + mov r1, #0xc + add r2, r1, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0x1c] + add r2, #0xf3 + bl FUN_02007558 + mov r2, #2 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_02007558 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221ACA8: + ldr r0, [r4, #0x18] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221ACB6: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221ACBC +MOD08_0221ACBC: ; 0x0221ACBC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x68 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4] + str r5, [r4, #0x18] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0x18] + bl MOD08_022154D4 + str r0, [r4, #0x1c] + mov r0, #0 + strb r0, [r4, #9] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + strb r0, [r4, #0xa] + ldr r0, [r4, #0x18] + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + mov r1, #4 + bl MOD08_02212498 + str r0, [r4, #0x10] + ldr r0, [r4, #0x18] + mov r1, #5 + bl MOD08_02212498 + str r0, [r4, #0x14] + ldr r0, [r4, #0x18] + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #0 + add r3, r4, #2 + bl MOD08_02217B50 + ldr r0, [r4, #0x18] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0x18] + bl MOD08_0221552C + str r0, [r4, #4] + mov r1, #2 + ldrsh r1, [r4, r1] + add r0, r1, r0 + strh r0, [r4, #2] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + asr r0, r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + asr r0, r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r6, [sp] + mov r1, #0x64 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, [sp, #0x10] + ldr r3, [sp, #0xc] + add r0, #0x20 + add r2, r7, #0 + bl MOD08_022181A8 + mov r0, #0xa + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r0, #0x44 + mov r1, #2 + add r3, r2, #0 + bl MOD08_022183C0 + ldr r0, [r4, #0x18] + ldr r1, _0221ADBC ; =MOD08_0221AB18 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0221ADBC: .word MOD08_0221AB18 + + thumb_func_start MOD08_0221ADC0 +MOD08_0221ADC0: ; 0x0221ADC0 + push {r3, r4, r5, lr} + mov r2, #1 + lsl r2, r2, #0x1a + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r2] + ldr r0, _0221ADEC ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + ldr r0, [r4, #8] + mov r1, #2 + bl MOD08_02214850 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + nop +_0221ADEC: .word 0xFFFF1FFF + + thumb_func_start MOD08_0221ADF0 +MOD08_0221ADF0: ; 0x0221ADF0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0x28 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r0, r5, #0 + add r1, r4, #4 + bl MOD08_02227B70 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD08_0221477C + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x24] + mov r1, #2 + bl FUN_0200C90C + ldr r0, [r4, #0x24] + mov r1, #2 + bl FUN_0200C840 + ldr r1, _0221AE70 ; =0x3F99999A + ldr r0, [r4, #0x24] + add r2, r1, #0 + bl FUN_0200C884 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _0221AE74 ; =0xFFFF1FFF + and r2, r1 + lsr r1, r0, #0xb + orr r1, r2 + str r1, [r0] + add r0, #0x4a + ldrh r2, [r0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1b + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _0221AE78 ; =0xFFFFC0FF + and r2, r1 + mov r1, #7 + lsl r1, r1, #8 + orr r1, r2 + strh r1, [r0] + ldr r0, [r4, #8] + ldr r1, _0221AE7C ; =MOD08_0221ADC0 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0221AE70: .word 0x3F99999A +_0221AE74: .word 0xFFFF1FFF +_0221AE78: .word 0xFFFFC0FF +_0221AE7C: .word MOD08_0221ADC0 + + thumb_func_start MOD08_0221AE80 +MOD08_0221AE80: ; 0x0221AE80 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _0221AE98 + cmp r0, #1 + beq _0221AED4 + b _0221AF0A +_0221AE98: + mov r0, #0x12 + ldrsh r3, [r4, r0] + mov r0, #0x10 + ldrsh r1, [r4, r0] + mov r0, #0x66 + ldrsh r0, [r4, r0] + mov r2, #0x64 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldrsh r2, [r4, r2] + add r0, r4, #0 + add r0, #0x3c + add r2, r1, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] +_0221AED4: + add r0, r4, #0 + add r0, #0x3c + bl MOD08_02217ECC + cmp r0, #0 + bne _0221AEEE + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] +_0221AEEE: + mov r2, #0x3c + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x3e + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_0221AF0A: + ldr r0, [r4, #0x60] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_0221AF1C +MOD08_0221AF1C: ; 0x0221AF1C + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x68 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #0x60] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x64 + strh r0, [r1] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x66 + strh r0, [r1] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + add r1, r4, #0 + add r7, r0, #0 + add r0, r5, #0 + add r1, #0x20 + bl MOD08_02227B70 + mov r6, #0xff + add r0, r6, #0 + add r0, #9 + cmp r7, r0 + bgt _0221AF86 + add r0, r6, #3 + cmp r7, r0 + blt _0221AFDC + beq _0221AF90 + add r0, r6, #5 + cmp r7, r0 + beq _0221AF9A + add r0, r6, #0 + add r0, #9 + cmp r7, r0 + beq _0221AFB6 + b _0221AFDC +_0221AF86: + add r0, r6, #0 + add r0, #0x11 + cmp r7, r0 + beq _0221AFC0 + b _0221AFDC +_0221AF90: + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + b _0221AFE0 +_0221AF9A: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _0221AFE0 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221AFE0 +_0221AFB6: + add r0, r5, #0 + bl MOD08_02212460 + add r6, r0, #0 + b _0221AFE0 +_0221AFC0: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _0221AFE0 + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221AFE0 +_0221AFDC: + bl ErrorHandling +_0221AFE0: + cmp r6, #0xff + bne _0221AFEC + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_0221AFEC: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x14] + cmp r0, #0 + bne _0221B002 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_0221B002: + add r1, r4, #0 + add r1, #0x10 + bl MOD08_02227B2C + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + cmp r0, #0 + bgt _0221B036 + mov r0, #0x64 + ldrsh r1, [r4, r0] + sub r0, #0x65 + add r2, r1, #0 + mul r2, r0 + add r0, r4, #0 + add r0, #0x64 + strh r2, [r0] + mov r0, #0x66 + ldrsh r1, [r4, r0] + sub r0, #0x67 + add r2, r1, #0 + mul r2, r0 + add r0, r4, #0 + add r0, #0x66 + strh r2, [r0] +_0221B036: + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _0221B050 + mov r0, #0x66 + ldrsh r1, [r4, r0] + sub r0, #0x67 + add r2, r1, #0 + mul r2, r0 + add r0, r4, #0 + add r0, #0x66 + strh r2, [r0] +_0221B050: + ldr r0, [r4, #0x60] + ldr r1, _0221B064 ; =MOD08_0221AE80 + add r2, r4, #0 + bl MOD08_02212400 + add r1, r4, #0 + bl MOD08_0221AE80 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221B064: .word MOD08_0221AE80 + + thumb_func_start MOD08_0221B068 +MOD08_0221B068: ; 0x0221B068 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x20 + mov r2, #0x22 + add r5, r0, #0 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x24] + add r0, #0x30 + bl MOD08_02217E58 + cmp r0, #0 + bne _0221B0AC + mov r2, #0x20 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x22 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + mov r1, #1 + sub r2, #8 + bl FUN_02007558 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221B0AC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221B0B0 +MOD08_0221B0B0: ; 0x0221B0B0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r1, #0x54 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r2, r4, #0 + add r1, r0, #0 + add r0, r5, #0 + add r2, #0x1c + add r3, sp, #0 + bl MOD08_02227BAC + mov r0, #0x22 + ldrsh r0, [r4, r0] + mov r1, #1 + add r0, #8 + strh r0, [r4, #0x22] + add r0, r5, #0 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x30 + add r1, r6, #0 + bl MOD08_02218654 + ldr r1, [r4, #0x3c] + add r2, r4, #0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [r4, #0x3c] + ldr r1, [r4, #0x44] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [r4, #0x44] + ldr r0, [r4, #4] + ldr r1, _0221B124 ; =MOD08_0221B068 + bl MOD08_02212400 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0221B124: .word MOD08_0221B068 + + thumb_func_start MOD08_0221B128 +MOD08_0221B128: ; 0x0221B128 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + bne _0221B160 + add r0, r4, #0 + add r0, #0x30 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221B146 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221B146: + mov r2, #0x30 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x32 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_02007558 + pop {r4, pc} +_0221B160: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD08_0221B170 +MOD08_0221B170: ; 0x0221B170 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #0x5c + add r6, r0, #0 + bl MOD08_02228064 + add r5, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD08_02227B70 + add r0, r6, #0 + mov r1, #0 + bl MOD08_02212498 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD08_02212498 + add r7, r0, #0 + cmp r4, #8 + bgt _0221B1AE + cmp r4, #2 + blt _0221B1EC + beq _0221B1B4 + cmp r4, #4 + beq _0221B1BE + cmp r4, #8 + beq _0221B1D0 + b _0221B1EC +_0221B1AE: + cmp r4, #0x10 + beq _0221B1DA + b _0221B1EC +_0221B1B4: + add r0, r6, #0 + bl MOD08_02212458 + str r0, [sp, #8] + b _0221B1F0 +_0221B1BE: + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022274C0 + str r0, [sp, #8] + b _0221B1F0 +_0221B1D0: + add r0, r6, #0 + bl MOD08_02212460 + str r0, [sp, #8] + b _0221B1F0 +_0221B1DA: + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022274C0 + str r0, [sp, #8] + b _0221B1F0 +_0221B1EC: + bl ErrorHandling +_0221B1F0: + add r2, r5, #0 + ldr r1, [sp, #8] + add r0, r6, #0 + add r2, #0x54 + bl MOD08_022275C0 + add r2, r5, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, #0x1c + add r3, sp, #0xc + bl MOD08_02227BAC + add r0, r5, #0 + mov r1, #0 + add r0, #0x58 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x5a + strh r1, [r0] + ldr r0, [r5, #4] + ldr r1, [sp, #8] + bl MOD08_02227470 + cmp r0, #3 + bne _0221B22A + mov r1, #0x4f + mvn r1, r1 + b _0221B22E +_0221B22A: + mov r1, #0x15 + lsl r1, r1, #4 +_0221B22E: + add r0, r5, #0 + add r0, #0x58 + strh r1, [r0] + mov r0, #0x22 + ldrsh r3, [r5, r0] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r3, [sp] + str r0, [sp, #4] + mov r1, #0x20 + mov r2, #0x58 + add r0, r5, #0 + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + add r0, #0x30 + bl MOD08_02217E80 + ldr r0, [r5, #4] + ldr r1, _0221B260 ; =MOD08_0221B128 + add r2, r5, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221B260: .word MOD08_0221B128 + + thumb_func_start MOD08_0221B264 +MOD08_0221B264: ; 0x0221B264 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r1, #0x5c + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r7, r0, #0 + cmp r6, #8 + bgt _0221B2AC + cmp r6, #2 + blt _0221B2EA + beq _0221B2B2 + cmp r6, #4 + beq _0221B2BC + cmp r6, #8 + beq _0221B2CE + b _0221B2EA +_0221B2AC: + cmp r6, #0x10 + beq _0221B2D8 + b _0221B2EA +_0221B2B2: + add r0, r5, #0 + bl MOD08_02212458 + str r0, [sp, #8] + b _0221B2EE +_0221B2BC: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + str r0, [sp, #8] + b _0221B2EE +_0221B2CE: + add r0, r5, #0 + bl MOD08_02212460 + str r0, [sp, #8] + b _0221B2EE +_0221B2D8: + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + str r0, [sp, #8] + b _0221B2EE +_0221B2EA: + bl ErrorHandling +_0221B2EE: + add r2, r4, #0 + ldr r1, [sp, #8] + add r0, r5, #0 + add r2, #0x54 + bl MOD08_022275C0 + add r2, r4, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, #0x1c + add r3, sp, #0x10 + bl MOD08_02227BAC + add r0, r4, #0 + mov r1, #0 + add r0, #0x58 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x5a + strh r1, [r0] + ldr r0, [r4, #4] + ldr r1, [sp, #8] + bl MOD08_02227470 + cmp r0, #3 + bne _0221B328 + mov r1, #0x4f + mvn r1, r1 + b _0221B32C +_0221B328: + mov r1, #0x15 + lsl r1, r1, #4 +_0221B32C: + add r0, r4, #0 + add r0, #0x58 + strh r1, [r0] + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221B356 + mov r0, #0x22 + ldrsh r3, [r4, r0] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r3, [sp] + str r0, [sp, #4] + mov r1, #0x20 + mov r2, #0x58 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + add r0, #0x30 + bl MOD08_02217E80 + b _0221B37A +_0221B356: + ldr r1, [sp, #8] + add r0, r5, #0 + mov r2, #0 + bl MOD08_02217B98 + add r2, r0, #0 + mov r0, #0x22 + ldrsh r3, [r4, r0] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r3, [sp] + str r0, [sp, #4] + mov r1, #0x58 + add r0, r4, #0 + ldrsh r1, [r4, r1] + add r0, #0x30 + bl MOD08_02217E80 +_0221B37A: + ldr r0, [r4, #4] + ldr r1, _0221B388 ; =MOD08_0221B128 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221B388: .word MOD08_0221B128 + + thumb_func_start MOD08_0221B38C +MOD08_0221B38C: ; 0x0221B38C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + mov r1, #0 + add r5, r0, #0 + bl MOD08_02212498 + add r4, r0, #0 + cmp r4, #8 + bgt _0221B3AE + cmp r4, #2 + blt _0221B3EC + beq _0221B3B4 + cmp r4, #4 + beq _0221B3BE + cmp r4, #8 + beq _0221B3D0 + b _0221B3EC +_0221B3AE: + cmp r4, #0x10 + beq _0221B3DA + b _0221B3EC +_0221B3B4: + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + b _0221B3F0 +_0221B3BE: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221B3F0 +_0221B3D0: + add r0, r5, #0 + bl MOD08_02212460 + add r6, r0, #0 + b _0221B3F0 +_0221B3DA: + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r6, r0, #0 + b _0221B3F0 +_0221B3EC: + bl ErrorHandling +_0221B3F0: + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0 + bl MOD08_022275C0 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD08_02227BAC + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_0221552C + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + mov r1, #0 + add r2, sp, #0 + ldrsh r2, [r2, r1] + ldr r0, [sp, #0x10] + bl FUN_02007558 + add r3, sp, #0 + mov r2, #2 + ldrsh r2, [r3, r2] + ldr r0, [sp, #0x10] + mov r1, #1 + add r2, r2, r4 + bl FUN_02007558 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0221B434 +MOD08_0221B434: ; 0x0221B434 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + bl MOD08_02218AF8 + cmp r0, #0 + bne _0221B458 + ldr r0, [r4, #0x30] + bl MOD08_02218B08 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221B458: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221B45C +MOD08_0221B45C: ; 0x0221B45C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + mov r1, #0x34 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [sp, #0x20] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [sp, #0x24] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + add r2, r4, #0 + str r0, [sp, #0x28] + add r0, r5, #0 + add r1, r7, #0 + add r2, #0x1c + add r3, sp, #0x2c + bl MOD08_02227F88 + ldr r0, [r4, #0x28] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r7, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + lsl r0, r6, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + lsl r3, r7, #0x14 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x20] + mov r2, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + lsr r3, r3, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, _0221B520 ; =0x0000044C + str r0, [sp, #0x18] + ldr r0, [r4, #0x18] + bl MOD08_02218B20 + str r0, [r4, #0x30] + ldr r0, [r4, #4] + ldr r1, _0221B524 ; =MOD08_0221B434 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221B520: .word 0x0000044C +_0221B524: .word MOD08_0221B434 + + thumb_func_start MOD08_0221B528 +MOD08_0221B528: ; 0x0221B528 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + bne _0221B59C + ldr r0, [r4, #0x4c] + add r1, r0, #1 + str r1, [r4, #0x4c] + ldr r0, [r4, #0x44] + cmp r1, r0 + blt _0221B5B0 + mov r1, #0 + str r1, [r4, #0x4c] + ldr r0, [r4, #0x48] + cmp r0, #0 + ldr r0, [r4, #0x54] + bne _0221B560 + cmp r0, #0 + bge _0221B552 + str r1, [r4, #0x54] +_0221B552: + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _0221B574 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221B574 +_0221B560: + cmp r0, #0x50 + ble _0221B568 + mov r0, #0x50 + str r0, [r4, #0x54] +_0221B568: + ldr r0, [r4, #0x54] + cmp r0, #0x50 + bne _0221B574 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221B574: + ldr r0, [r4, #0x24] + ldr r2, [r4, #0x54] + mov r1, #0x12 + bl FUN_02007558 + ldr r0, [r4, #0x24] + ldr r2, [r4, #0x50] + mov r1, #1 + bl FUN_02007558 + mov r0, #0x42 + ldrsh r1, [r4, r0] + ldr r2, [r4, #0x50] + sub r1, r2, r1 + str r1, [r4, #0x50] + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_0221B59C: + ldr r0, [r4, #0x24] + bl MOD08_02218E34 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221B5B0: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221B5B4 +MOD08_0221B5B4: ; 0x0221B5B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x58 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r6, r0, #0 + add r2, r4, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, #0x1c + add r3, sp, #4 + bl MOD08_02227BAC + cmp r6, #8 + bgt _0221B5F6 + cmp r6, #2 + blt _0221B634 + beq _0221B5FC + cmp r6, #4 + beq _0221B606 + cmp r6, #8 + beq _0221B618 + b _0221B634 +_0221B5F6: + cmp r6, #0x10 + beq _0221B622 + b _0221B634 +_0221B5FC: + add r0, r5, #0 + bl MOD08_02212458 + add r7, r0, #0 + b _0221B638 +_0221B606: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r7, r0, #0 + b _0221B638 +_0221B618: + add r0, r5, #0 + bl MOD08_02212460 + add r7, r0, #0 + b _0221B638 +_0221B622: + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r7, r0, #0 + b _0221B638 +_0221B634: + bl ErrorHandling +_0221B638: + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r4, #0x48] + cmp r0, #0 + ldr r0, [r4, #0x24] + bne _0221B68C + mov r1, #1 + bl FUN_0200782C + str r0, [r4, #0x50] + ldr r0, [r4, #0x24] + mov r1, #0x12 + bl FUN_0200782C + mov r1, #0x50 + sub r0, r1, r0 + str r0, [r4, #0x54] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x40 + strh r0, [r1] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x42 + strh r0, [r1] + mov r0, #0x42 + ldrsh r1, [r4, r0] + sub r0, #0x43 + add r2, r1, #0 + mul r2, r0 + add r0, r4, #0 + add r0, #0x42 + strh r2, [r0] + b _0221B6BA +_0221B68C: + mov r1, #1 + bl FUN_0200782C + str r0, [r4, #0x50] + ldr r0, [r4, #0x24] + mov r1, #0x12 + bl FUN_0200782C + str r0, [r4, #0x54] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x40 + strh r0, [r1] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + add r1, r4, #0 + add r1, #0x42 + strh r0, [r1] +_0221B6BA: + mov r0, #0 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + mov r0, #0x50 + str r0, [r4, #0x38] + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_0221552C + mov r1, #0x50 + sub r0, r1, r0 + str r0, [r4, #0x3c] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r4, #0x44] + mov r0, #0 + str r0, [r4, #0x4c] + ldr r0, [r4, #0x3c] + str r0, [sp] + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x34] + ldr r3, [r4, #0x38] + bl FUN_02007E40 + ldr r0, [r4, #4] + ldr r1, _0221B700 ; =MOD08_0221B528 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221B700: .word MOD08_0221B528 + + thumb_func_start MOD08_0221B704 +MOD08_0221B704: ; 0x0221B704 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + cmp r1, #8 + bgt _0221B71E + cmp r1, #2 + blt _0221B754 + beq _0221B724 + cmp r1, #4 + beq _0221B72C + cmp r1, #8 + beq _0221B73C + b _0221B754 +_0221B71E: + cmp r1, #0x10 + beq _0221B744 + b _0221B754 +_0221B724: + bl MOD08_02212458 + add r4, r0, #0 + b _0221B758 +_0221B72C: + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r4, r0, #0 + b _0221B758 +_0221B73C: + bl MOD08_02212460 + add r4, r0, #0 + b _0221B758 +_0221B744: + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022274C0 + add r4, r0, #0 + b _0221B758 +_0221B754: + bl ErrorHandling +_0221B758: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0221B75C +MOD08_0221B75C: ; 0x0221B75C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221B76E + cmp r0, #1 + beq _0221B7B4 + pop {r3, r4, r5, pc} +_0221B76E: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r1, r0 + blt _0221B7E6 + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #0x1c + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x44] + add r2, r1, r0 + str r2, [r4, #0x44] + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_02007558 + mov r0, #0x1c + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x3c] + sub r1, r1, r0 + str r1, [r4, #0x3c] + ldr r0, [r4, #0x40] + cmp r1, r0 + ble _0221B7A8 + str r0, [r4, #0x3c] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221B7A8: + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x3c] + mov r1, #0x12 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0221B7B4: + ldr r0, [r4, #0x30] + mov r1, #0xe + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x48] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x40] + mov r1, #0x12 + bl FUN_02007558 + ldr r0, [r4, #0x30] + bl MOD08_02218E34 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221B7E6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0221B7E8 +MOD08_0221B7E8: ; 0x0221B7E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221B7FA + cmp r0, #1 + beq _0221B83E + pop {r3, r4, r5, pc} +_0221B7FA: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r1, r0 + blt _0221B870 + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #0x1c + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x44] + add r2, r1, r0 + str r2, [r4, #0x44] + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_02007558 + mov r0, #0x1c + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x3c] + sub r0, r1, r0 + str r0, [r4, #0x3c] + bpl _0221B832 + mov r0, #0 + str r0, [r4, #0x3c] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221B832: + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x3c] + mov r1, #0x12 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0221B83E: + ldr r0, [r4, #0x30] + mov r1, #0xe + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x48] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x40] + mov r1, #0x12 + bl FUN_02007558 + ldr r0, [r4, #0x30] + bl MOD08_02218E34 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221B870: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221B874 +MOD08_0221B874: ; 0x0221B874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221B886 + cmp r0, #1 + beq _0221B8C8 + pop {r3, r4, r5, pc} +_0221B886: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r1, r0 + blt _0221B8E6 + mov r0, #0 + str r0, [r4, #0x24] + mov r1, #0x1c + ldrsh r2, [r4, r1] + ldr r3, [r4, #0x3c] + sub r2, r3, r2 + str r2, [r4, #0x3c] + ldrsh r1, [r4, r1] + ldr r2, [r4, #0x40] + add r1, r2, r1 + str r1, [r4, #0x40] + ldr r1, [r4, #0x3c] + cmp r1, #0 + bge _0221B8B6 + str r0, [r4, #0x3c] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221B8B6: + ldr r0, [r4, #0x40] + mov r1, #0 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x3c] + mov r3, #0x50 + bl FUN_02007E40 + pop {r3, r4, r5, pc} +_0221B8C8: + ldr r0, [r4, #0x30] + mov r1, #0xe + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #0x30] + bl MOD08_02218E34 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221B8E6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0221B8E8 +MOD08_0221B8E8: ; 0x0221B8E8 + push {r4, r5, r6, lr} + sub sp, #8 + mov r1, #0x50 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r6, r0, #0 + add r2, r4, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, #0x28 + add r3, sp, #4 + bl MOD08_02227BAC + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_0221B704 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + cmp r0, #0 + beq _0221B96A + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_0221552C + mov r3, #0x50 + sub r0, r3, r0 + str r0, [r4, #0x3c] + mov r1, #0 + str r1, [r4, #0x40] + str r1, [sp] + ldr r0, [r4, #0x30] + ldr r2, [r4, #0x3c] + bl FUN_02007E40 + ldr r0, [r4, #4] + ldr r1, _0221B9DC ; =MOD08_0221B874 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r4, r5, r6, pc} +_0221B96A: + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200782C + str r0, [r4, #0x44] + str r0, [r4, #0x48] + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_0221552C + mov r3, #0x50 + sub r0, r3, r0 + str r0, [r4, #0x3c] + str r0, [r4, #0x40] + mov r0, #0x1c + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0221B9AA + ldr r0, [r4, #0x3c] + mov r1, #0 + str r0, [sp] + ldr r0, [r4, #0x30] + add r2, r1, #0 + bl FUN_02007E40 + ldr r0, [r4, #4] + ldr r1, _0221B9E0 ; =MOD08_0221B7E8 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r4, r5, r6, pc} +_0221B9AA: + mov r0, #0 + str r0, [r4, #0x3c] + ldr r1, [r4, #0x44] + ldr r0, [r4, #0x40] + add r2, r1, r0 + str r2, [r4, #0x44] + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #0x3c] + mov r1, #0 + str r0, [sp] + ldr r0, [r4, #0x30] + add r2, r1, #0 + mov r3, #0x50 + bl FUN_02007E40 + ldr r0, [r4, #4] + ldr r1, _0221B9E4 ; =MOD08_0221B75C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0221B9DC: .word MOD08_0221B874 +_0221B9E0: .word MOD08_0221B7E8 +_0221B9E4: .word MOD08_0221B75C + + thumb_func_start MOD08_0221B9E8 +MOD08_0221B9E8: ; 0x0221B9E8 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221B9FC + cmp r0, #1 + beq _0221BA1C + b _0221BAAC +_0221B9FC: + ldr r0, [r4, #0x10] + str r0, [sp] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r3, [r4, #0xc] + add r0, #0xd4 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_022183C0 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221BA1C: + add r0, r4, #0 + add r0, #0xd4 + bl MOD08_022183F0 + cmp r0, #0 + bne _0221BA70 + ldrb r1, [r4, #1] + ldr r0, [r4, #0x18] + cmp r1, r0 + ldrb r0, [r4] + blt _0221BA36 + add r0, r0, #1 + b _0221BA38 +_0221BA36: + sub r0, r0, #1 +_0221BA38: + strb r0, [r4] + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0221BA50 + ldr r1, [r4, #0x1c] + mov r2, #0 + lsl r1, r1, #0x18 + ldr r0, [r4, #0x28] + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 +_0221BA50: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _0221BA66 + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x28] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 +_0221BA66: + ldrb r0, [r4, #1] + add sp, #4 + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, pc} +_0221BA70: + mov r3, #0xd4 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0221BA8C + mov r0, #1 + str r0, [r4, #0x20] + ldr r1, [r4, #0x1c] + ldrsh r3, [r4, r3] + lsl r1, r1, #0x18 + ldr r0, [r4, #0x28] + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_020179E0 +_0221BA8C: + mov r3, #0xd6 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0221BABA + mov r0, #1 + str r0, [r4, #0x24] + ldr r1, [r4, #0x1c] + ldrsh r3, [r4, r3] + lsl r1, r1, #0x18 + ldr r0, [r4, #0x28] + lsr r1, r1, #0x18 + mov r2, #3 + bl FUN_020179E0 + add sp, #4 + pop {r3, r4, pc} +_0221BAAC: + ldr r0, [r4, #0x2c] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221BABA: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221BAC0 +MOD08_0221BAC0: ; 0x0221BAC0 + push {r3, r4, r5, lr} + mov r1, #0xf8 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + str r5, [r4, #0x2c] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #0x30] + ldr r0, [r4, #0x2c] + bl MOD08_02212490 + str r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r4, #0x18] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + cmp r0, #0 + bne _0221BB26 + mov r0, #3 + b _0221BB28 +_0221BB26: + mov r0, #2 +_0221BB28: + str r0, [r4, #0x1c] + ldr r0, [r4, #0x2c] + ldr r1, _0221BB38 ; =MOD08_0221B9E8 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0221BB38: .word MOD08_0221B9E8 + + thumb_func_start MOD08_0221BB3C +MOD08_0221BB3C: ; 0x0221BB3C + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #0x2c] + ldr r3, [r4, #0x24] + cmp r3, r0 + beq _0221BB50 + ldr r1, [r4, #0x28] + cmp r1, r0 + bne _0221BB60 +_0221BB50: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} +_0221BB60: + mov r1, #0x20 + ldrsh r2, [r4, r1] + cmp r2, #0 + bge _0221BB82 + add r2, r3, r2 + cmp r2, #0 + ble _0221BB7A + str r2, [r4, #0x24] + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x28] + add r0, r2, r0 + str r0, [r4, #0x28] + b _0221BB9A +_0221BB7A: + str r0, [r4, #0x24] + ldr r0, [r4, #0x2c] + str r0, [r4, #0x28] + b _0221BB9A +_0221BB82: + add r2, r3, r2 + cmp r2, #0xf + bge _0221BB94 + str r2, [r4, #0x24] + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x28] + add r0, r2, r0 + str r0, [r4, #0x28] + b _0221BB9A +_0221BB94: + str r0, [r4, #0x24] + ldr r0, [r4, #0x2c] + str r0, [r4, #0x28] +_0221BB9A: + ldr r0, [r4, #0x1c] + bl FUN_0200C5A8 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x24] + lsl r0, r0, #4 + orr r1, r0 + ldr r0, _0221BBB4 ; =0x0400004D + strb r1, [r0] + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + pop {r4, pc} + .align 2, 0 +_0221BBB4: .word 0x0400004D + + thumb_func_start MOD08_0221BBB8 +MOD08_0221BBB8: ; 0x0221BBB8 + push {r3, r4, r5, lr} + mov r1, #0x30 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r0, [r4, #4] + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0x20] + ldr r0, [r4, #4] + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #0x24] + ldr r0, [r4, #4] + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #0x28] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD08_02212498 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022124D8 + mov r1, #1 + str r0, [r4, #0x1c] + bl FUN_0200C644 + mov r0, #0x20 + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _0221BC0E + mov r0, #0 + b _0221BC10 +_0221BC0E: + mov r0, #0xf +_0221BC10: + str r0, [r4, #0x2c] + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200C8F8 + ldr r0, [r4, #4] + ldr r1, _0221BC2C ; =MOD08_0221BB3C + add r2, r4, #0 + bl MOD08_02212400 + add r1, r4, #0 + bl MOD08_0221BB3C + pop {r3, r4, r5, pc} + .align 2, 0 +_0221BC2C: .word MOD08_0221BB3C + + thumb_func_start MOD08_0221BC30 +MOD08_0221BC30: ; 0x0221BC30 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + strh r0, [r4, #0xe] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #4] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strh r0, [r4, #6] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + str r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #8 + bl MOD08_02212498 + str r0, [r4, #0x30] + add r0, r5, #0 + mov r1, #7 + bl MOD08_02212498 + ldr r2, _0221BCFC ; =0xFFFF0000 + mov r1, #0 + and r2, r0 + lsl r0, r0, #0x10 + str r1, [r4, #0x1c] + lsr r2, r2, #0x10 + str r2, [r4, #0x20] + lsr r0, r0, #0x10 + str r0, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _0221BCA6 + str r1, [r4, #0x20] +_0221BCA6: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _0221BCB0 + mov r0, #0xff + str r0, [r4, #0x24] +_0221BCB0: + ldr r1, [r4] + add r0, r5, #0 + bl MOD08_02212484 + str r0, [r4, #0x38] + add r0, r5, #0 + bl MOD08_02212468 + str r0, [r4, #0x34] + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _0221BCDA + add r0, r5, #0 + bl MOD08_02212458 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD08_02212460 + str r0, [r4, #0x18] + b _0221BCEE +_0221BCDA: + cmp r0, #1 + bne _0221BCEE + add r0, r5, #0 + bl MOD08_02212460 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD08_02212458 + str r0, [r4, #0x18] +_0221BCEE: + ldr r0, [r4, #0x38] + cmp r0, #0 + bne _0221BCF8 + bl ErrorHandling +_0221BCF8: + pop {r3, r4, r5, pc} + nop +_0221BCFC: .word 0xFFFF0000 + + thumb_func_start MOD08_0221BD00 +MOD08_0221BD00: ; 0x0221BD00 + ldr r0, [r0, #8] + mov r1, #0 + cmp r0, #0 + beq _0221BD12 +_0221BD08: + ldrh r2, [r0, #0x26] + ldrh r3, [r0, #0x24] + ldr r0, [r0] + cmp r0, #0 + bne _0221BD08 +_0221BD12: + cmp r2, r3 + beq _0221BD18 + mov r1, #1 +_0221BD18: + add r0, r1, #0 + bx lr + + thumb_func_start MOD08_0221BD1C +MOD08_0221BD1C: ; 0x0221BD1C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl MOD08_0221BD00 + add r4, r0, #0 + mov r0, #4 + ldrsh r0, [r5, r0] + ldr r1, [r5, #0x28] + cmp r1, r0 + bge _0221BD3A + add r0, r1, #1 + str r0, [r5, #0x28] + pop {r4, r5, r6, pc} +_0221BD3A: + add r0, r5, #0 + add r0, #0xa8 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221BD62 + cmp r4, #0 + bne _0221BD62 + ldr r0, [r5, #0x34] + ldr r1, [r5, #0x38] + bl FUN_020133DC + ldr r0, [r5, #0x40] + add r1, r6, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl MOD08_02228094 + pop {r4, r5, r6, pc} +_0221BD62: + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + cmp r0, r1 + bgt _0221BD70 + ldr r0, [r5, #0x24] + cmp r0, r1 + bge _0221BD76 +_0221BD70: + ldr r0, [r5, #0x24] + cmp r0, #0xff + bne _0221BDD4 +_0221BD76: + mov r0, #0xa8 + ldrsh r2, [r5, r0] + ldr r1, [r5, #0x38] + mov r3, #0xac + add r0, r2, #0 + ldr r2, [r1, #0x20] + mul r0, r3 + ldr r2, [r2] + ldr r2, [r2, #4] + add r0, r0, r2 + str r0, [r1, #0x28] + mov r0, #0xaa + ldrsh r4, [r5, r0] + ldr r2, [r5, #0x38] + add r1, r4, #0 + mul r1, r3 + ldr r3, [r2, #0x20] + ldr r3, [r3] + ldr r3, [r3, #8] + add r1, r1, r3 + str r1, [r2, #0x2c] + ldr r1, [r5, #0x30] + cmp r1, #0 + beq _0221BDD4 + mov r1, #6 + ldrsh r1, [r5, r1] + add r0, #0xbe + bl _s32_div_f + ldr r1, [r5, #0x2c] + add r0, r1, r0 + str r0, [r5, #0x2c] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B970 + mov r1, #0xaa + ldrsh r2, [r5, r1] + mov r1, #0xac + mul r1, r2 + add r2, r1, r0 + ldr r1, [r5, #0x38] + ldr r0, [r1, #0x20] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r2, r0 + str r0, [r1, #0x2c] +_0221BDD4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0221BDD8 +MOD08_0221BDD8: ; 0x0221BDD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + mov r1, #0x41 + lsl r1, r1, #2 + add r6, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x3c + bl MOD08_02227B70 + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_0221BC30 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02217C1C + add r5, r0, #0 + ldr r1, [r4, #0x14] + add r0, r6, #0 + add r2, sp, #0x18 + bl MOD08_0222771C + ldr r1, [r4, #0x18] + add r0, r6, #0 + add r2, sp, #0xc + bl MOD08_0222771C + ldr r0, [sp, #0x18] + mov r1, #0xac + bl _s32_div_f + add r6, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0xac + bl _s32_div_f + add r7, r0, #0 + ldr r0, [sp, #0x1c] + mov r1, #0xac + bl _s32_div_f + str r0, [sp, #8] + ldr r0, [sp, #0x10] + mov r1, #0xac + bl _s32_div_f + mov r1, #0xe + ldrsh r1, [r4, r1] + add r2, r1, #0 + mul r2, r5 + add r0, r0, r2 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldrh r0, [r4, #6] + lsl r1, r6, #0x10 + mov r2, #0xc + str r0, [sp, #4] + ldrsh r2, [r4, r2] + add r0, r4, #0 + add r0, #0xa8 + add r3, r2, #0 + mul r3, r5 + add r2, r7, r3 + ldr r3, [sp, #8] + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + cmp r5, #0 + ldr r2, _0221BEFC ; =0x00005C71 + ble _0221BE90 + ldr r1, _0221BF00 ; =0x00000E38 + add r0, r4, #0 + add r0, #0xf0 + mul r1, r5 + mul r2, r5 + mov r3, #0xa + bl MOD08_02218008 + b _0221BEA0 +_0221BE90: + ldr r1, _0221BF04 ; =0x00003FFF + add r0, r4, #0 + add r0, #0xf0 + mul r1, r5 + mul r2, r5 + mov r3, #0xa + bl MOD08_02218008 +_0221BEA0: + ldr r0, [r4, #0x20] + mov r5, #0 + cmp r0, #0 + ble _0221BEBA + add r6, r4, #0 + add r6, #0xa8 +_0221BEAC: + add r0, r6, #0 + bl MOD08_02217ECC + ldr r0, [r4, #0x20] + add r5, r5, #1 + cmp r5, r0 + blt _0221BEAC +_0221BEBA: + ldr r0, [r4, #0x24] + cmp r0, #0xff + beq _0221BEC4 + add r0, r0, #1 + str r0, [r4, #0x1c] +_0221BEC4: + mov r0, #0xa8 + ldrsh r3, [r4, r0] + ldr r1, [r4, #0x38] + mov r2, #0xac + add r0, r3, #0 + ldr r3, [r1, #0x20] + mul r0, r2 + ldr r3, [r3] + ldr r3, [r3, #4] + add r0, r0, r3 + str r0, [r1, #0x28] + mov r1, #0xaa + ldrsh r1, [r4, r1] + ldr r0, [r4, #0x38] + mul r2, r1 + ldr r1, [r0, #0x20] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r0, [r4, #0x40] + ldr r1, _0221BF08 ; =MOD08_0221BD1C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0221BEFC: .word 0x00005C71 +_0221BF00: .word 0x00000E38 +_0221BF04: .word 0x00003FFF +_0221BF08: .word MOD08_0221BD1C + + thumb_func_start MOD08_0221BF0C +MOD08_0221BF0C: ; 0x0221BF0C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r1, #0x41 + lsl r1, r1, #2 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3c + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #6] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strh r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + ldr r2, _0221C098 ; =0xFFFF0000 + mov r1, #0 + and r2, r0 + lsl r0, r0, #0x10 + str r1, [r4, #0x1c] + lsr r2, r2, #0x10 + str r2, [r4, #0x20] + lsr r0, r0, #0x10 + str r0, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _0221BF7E + str r1, [r4, #0x20] +_0221BF7E: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _0221BF88 + mov r0, #0xff + str r0, [r4, #0x24] +_0221BF88: + ldr r1, [r4] + add r0, r5, #0 + bl MOD08_02212484 + str r0, [r4, #0x38] + add r0, r5, #0 + bl MOD08_02212468 + str r0, [r4, #0x34] + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _0221BFB0 + add r0, r5, #0 + bl MOD08_02212458 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD08_02212458 + b _0221BFBE +_0221BFB0: + add r0, r5, #0 + bl MOD08_02212460 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD08_02212460 +_0221BFBE: + str r0, [r4, #0x18] + ldr r0, [r4, #0x38] + cmp r0, #0 + bne _0221BFCA + bl ErrorHandling +_0221BFCA: + ldr r1, [r4, #0x14] + add r0, r5, #0 + add r2, sp, #0x14 + bl MOD08_0222771C + ldr r1, [r4, #0x18] + add r0, r5, #0 + add r2, sp, #8 + bl MOD08_0222771C + cmp r6, #0 + bne _0221BFEE + add r0, sp, #0x14 + bl MOD08_0222795C + ldr r0, [sp, #8] + str r0, [sp, #0x14] + b _0221BFF8 +_0221BFEE: + add r0, sp, #8 + bl MOD08_0222795C + ldr r0, [sp, #0x14] + str r0, [sp, #8] +_0221BFF8: + ldr r0, [sp, #0x14] + mov r1, #0xac + bl _s32_div_f + add r5, r0, #0 + ldr r0, [sp, #8] + mov r1, #0xac + bl _s32_div_f + add r6, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0xac + bl _s32_div_f + add r7, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0xac + bl _s32_div_f + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldrh r0, [r4, #6] + lsl r1, r5, #0x10 + lsl r2, r6, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r7, #0x10 + add r0, #0xa8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + ldr r0, [r4, #0x20] + mov r5, #0 + cmp r0, #0 + ble _0221C056 + add r6, r4, #0 + add r6, #0xa8 +_0221C048: + add r0, r6, #0 + bl MOD08_02217ECC + ldr r0, [r4, #0x20] + add r5, r5, #1 + cmp r5, r0 + blt _0221C048 +_0221C056: + ldr r0, [r4, #0x24] + cmp r0, #0xff + beq _0221C060 + add r0, r0, #1 + str r0, [r4, #0x1c] +_0221C060: + mov r0, #0xa8 + ldrsh r3, [r4, r0] + ldr r1, [r4, #0x38] + mov r2, #0xac + add r0, r3, #0 + ldr r3, [r1, #0x20] + mul r0, r2 + ldr r3, [r3] + ldr r3, [r3, #4] + add r0, r0, r3 + str r0, [r1, #0x28] + mov r1, #0xaa + ldrsh r1, [r4, r1] + ldr r0, [r4, #0x38] + mul r2, r1 + ldr r1, [r0, #0x20] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r0, [r4, #0x40] + ldr r1, _0221C09C ; =MOD08_0221BD1C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221C098: .word 0xFFFF0000 +_0221C09C: .word MOD08_0221BD1C + + thumb_func_start MOD08_0221C0A0 +MOD08_0221C0A0: ; 0x0221C0A0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl MOD08_0221BD00 + add r4, r0, #0 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xcc + bl MOD08_02217F9C + cmp r0, #0 + bne _0221C0DA + cmp r4, #0 + bne _0221C0DA + ldr r0, [r5, #0x34] + ldr r1, [r5, #0x38] + bl FUN_020133DC + ldr r0, [r5, #0x40] + add r1, r6, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl MOD08_02228094 + pop {r4, r5, r6, pc} +_0221C0DA: + mov r1, #0xa8 + ldrsh r1, [r5, r1] + ldr r0, [r5, #0x38] + mov r2, #0xac + add r3, r1, #0 + ldr r1, [r0, #0x20] + mul r3, r2 + ldr r1, [r1] + ldr r1, [r1, #4] + add r1, r3, r1 + str r1, [r0, #0x28] + mov r1, #0xaa + ldrsh r1, [r5, r1] + ldr r0, [r5, #0x38] + mul r2, r1 + ldr r1, [r0, #0x20] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_0221C104 +MOD08_0221C104: ; 0x0221C104 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + mov r1, #0x41 + lsl r1, r1, #2 + add r6, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x3c + bl MOD08_02227B70 + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_0221BC30 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02217C1C + add r5, r0, #0 + ldr r1, [r4, #0x14] + add r0, r6, #0 + add r2, sp, #0x20 + bl MOD08_0222771C + ldr r1, [r4, #0x18] + add r0, r6, #0 + add r2, sp, #0x14 + bl MOD08_0222771C + ldr r0, [sp, #0x20] + mov r1, #0xac + bl _s32_div_f + add r6, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0xac + bl _s32_div_f + str r0, [sp, #0x10] + ldr r0, [sp, #0x24] + mov r1, #0xac + bl _s32_div_f + add r7, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0xac + bl _s32_div_f + lsl r1, r7, #0x10 + asr r1, r1, #0x10 + str r1, [sp] + mov r1, #0xe + ldrsh r1, [r4, r1] + mov r3, #0xc + add r2, r1, #0 + mul r2, r5 + add r0, r0, r2 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldrh r0, [r4, #6] + lsl r2, r6, #0x10 + add r1, r4, #0 + str r0, [sp, #8] + ldr r0, [r4, #8] + add r1, #0xcc + lsl r0, r0, #0xc + neg r0, r0 + str r0, [sp, #0xc] + ldrsh r6, [r4, r3] + add r0, r4, #0 + add r0, #0xa8 + add r3, r6, #0 + ldr r6, [sp, #0x10] + mul r3, r5 + add r3, r6, r3 + lsl r3, r3, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217F50 + cmp r5, #0 + ldr r2, _0221C23C ; =0x00005C71 + ble _0221C1CA + ldr r1, _0221C240 ; =0x00000E38 + add r0, r4, #0 + add r0, #0xf0 + mul r1, r5 + mul r2, r5 + mov r3, #0xa + bl MOD08_02218008 + b _0221C1DA +_0221C1CA: + ldr r1, _0221C244 ; =0x00003FFF + add r0, r4, #0 + add r0, #0xf0 + mul r1, r5 + mul r2, r5 + mov r3, #0xa + bl MOD08_02218008 +_0221C1DA: + ldr r0, [r4, #0x20] + mov r5, #0 + cmp r0, #0 + ble _0221C1FA + add r6, r4, #0 + add r7, r4, #0 + add r6, #0xa8 + add r7, #0xcc +_0221C1EA: + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_02217F9C + ldr r0, [r4, #0x20] + add r5, r5, #1 + cmp r5, r0 + blt _0221C1EA +_0221C1FA: + ldr r0, [r4, #0x24] + cmp r0, #0xff + beq _0221C204 + add r0, r0, #1 + str r0, [r4, #0x1c] +_0221C204: + mov r0, #0xa8 + ldrsh r3, [r4, r0] + ldr r1, [r4, #0x38] + mov r2, #0xac + add r0, r3, #0 + ldr r3, [r1, #0x20] + mul r0, r2 + ldr r3, [r3] + ldr r3, [r3, #4] + add r0, r0, r3 + str r0, [r1, #0x28] + mov r1, #0xaa + ldrsh r1, [r4, r1] + ldr r0, [r4, #0x38] + mul r2, r1 + ldr r1, [r0, #0x20] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r0, [r4, #0x40] + ldr r1, _0221C248 ; =MOD08_0221C0A0 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_0221C23C: .word 0x00005C71 +_0221C240: .word 0x00000E38 +_0221C244: .word 0x00003FFF +_0221C248: .word MOD08_0221C0A0 + + thumb_func_start MOD08_0221C24C +MOD08_0221C24C: ; 0x0221C24C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl MOD08_0221BD00 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x58 + bl MOD08_02217D98 + cmp r0, #0 + bne _0221C282 + cmp r4, #0 + bne _0221C282 + ldr r0, [r5, #0x34] + ldr r1, [r5, #0x38] + bl FUN_020133DC + ldr r0, [r5, #0x40] + add r1, r6, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_0221C282: + add r0, r5, #0 + add r0, #0x8c + ldr r2, [r0] + mov r0, #0x5a + ldrsh r0, [r5, r0] + mov r3, #0xac + add r1, r0, #0 + mul r1, r3 + add r1, r2, r1 + add r2, r5, #0 + add r2, #0x88 + ldr r4, [r2] + mov r2, #0x58 + ldrsh r2, [r5, r2] + ldr r0, [r5, #0x38] + mul r3, r2 + ldr r2, [r0, #0x20] + add r3, r4, r3 + ldr r2, [r2] + ldr r2, [r2, #4] + add r2, r3, r2 + str r2, [r0, #0x28] + ldr r2, [r5, #0x38] + ldr r0, [r2, #0x20] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r2, #0x2c] + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_0221C2BC +MOD08_0221C2BC: ; 0x0221C2BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #0x94 + add r4, r0, #0 + bl MOD08_02228064 + add r5, r0, #0 + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x3c + bl MOD08_02227B70 + add r0, r4, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r5] + add r0, r4, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r5, #4] + add r0, r4, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r5, #0xc] + add r0, r4, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r5, #8] + add r0, r4, #0 + mov r1, #4 + bl MOD08_02212498 + str r0, [r5, #0x10] + add r0, r4, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r5, #0x14] + add r0, r4, #0 + mov r1, #6 + bl MOD08_02212498 + str r0, [r5, #0x18] + add r0, r4, #0 + mov r1, #7 + bl MOD08_02212498 + str r0, [r5, #0x1c] + add r0, r4, #0 + mov r1, #8 + bl MOD08_02212498 + str r0, [r5, #0x20] + cmp r0, #0 + bne _0221C33A + add r0, r4, #0 + bl MOD08_02212458 + b _0221C340 +_0221C33A: + add r0, r4, #0 + bl MOD08_02212460 +_0221C340: + str r0, [r5, #0x24] + add r2, r5, #0 + ldr r1, [r5, #0x24] + add r0, r4, #0 + add r2, #0x88 + bl MOD08_0222771C + ldr r1, [r5] + add r0, r4, #0 + bl MOD08_02212484 + str r0, [r5, #0x38] + add r0, r4, #0 + mov r1, #9 + bl MOD08_02212498 + add r1, r0, #0 + add r0, r4, #0 + bl MOD08_02212478 + str r0, [r5, #0x34] + ldr r1, [r5, #4] + ldr r0, _0221C420 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #2 + bl _s32_div_f + add r4, r0, #0 + ldr r1, [r5, #0xc] + ldr r0, _0221C420 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #2 + bl _s32_div_f + add r6, r0, #0 + ldr r1, [r5, #8] + ldr r0, _0221C420 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #2 + bl _s32_div_f + add r7, r0, #0 + ldr r1, [r5, #0x10] + ldr r0, _0221C420 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #2 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + ldr r0, [r5, #0x14] + lsl r1, r4, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r0, [r5, #0x18] + lsl r2, r6, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r5, #0x1c] + lsl r3, r7, #0x10 + str r0, [sp, #0xc] + add r0, r5, #0 + add r0, #0x58 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD08_02217D14 + add r0, r5, #0 + add r0, #0x58 + bl MOD08_02217D98 + add r0, r5, #0 + add r0, #0x8c + ldr r2, [r0] + mov r0, #0x5a + ldrsh r0, [r5, r0] + mov r3, #0x58 + mov r4, #0xac + add r1, r0, #0 + add r0, r5, #0 + mul r1, r4 + ldrsh r3, [r5, r3] + add r0, #0x88 + add r2, r2, r1 + ldr r1, [r5, #0x38] + ldr r0, [r0] + mul r4, r3 + add r3, r0, r4 + ldr r0, [r1, #0x20] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r3, r0 + str r0, [r1, #0x28] + ldr r1, [r5, #0x38] + ldr r0, [r1, #0x20] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r2, r0 + str r0, [r1, #0x2c] + ldr r0, [r5, #0x40] + ldr r1, _0221C424 ; =MOD08_0221C24C + add r2, r5, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221C420: .word 0x0000FFFF +_0221C424: .word MOD08_0221C24C + + thumb_func_start MOD08_0221C428 +MOD08_0221C428: ; 0x0221C428 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0200C608 + cmp r0, #0 + ldr r0, [r4, #0x1c] + bne _0221C44E + bl FUN_0200C3DC + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_0221C44E: + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221C45C +MOD08_0221C45C: ; 0x0221C45C + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x20 + add r5, r0, #0 + add r4, r3, #0 + bl MOD08_02228064 + add r7, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + str r4, [r7, #0x1c] + bl MOD08_02212498 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + lsl r0, r0, #0x10 + asr r2, r0, #0x10 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200C82C + ldr r0, [r7, #4] + ldr r1, _0221C4A0 ; =MOD08_0221C428 + add r2, r7, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221C4A0: .word MOD08_0221C428 + + thumb_func_start MOD08_0221C4A4 +MOD08_0221C4A4: ; 0x0221C4A4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _0221C4B6 + cmp r0, #1 + beq _0221C534 + b _0221C59E +_0221C4B6: + ldr r1, [r5, #0x34] + ldr r0, _0221C5C4 ; =0x0222C4D4 + lsl r2, r1, #1 + ldrsh r4, [r0, r2] + add r0, r1, #1 + str r0, [r5, #0x34] + cmp r4, #0xff + beq _0221C506 + cmp r4, #0 + bne _0221C4FA + ldr r0, [r5, #0x1c] + bl FUN_0200C6A4 + add r6, r0, #0 + ldr r0, [r5, #4] + bl MOD08_02215574 + cmp r6, r0 + ldr r0, [r5, #4] + bne _0221C4EE + mov r1, #2 + bl MOD08_02215600 + add r1, r0, #0 + ldr r0, [r5, #0x1c] + bl FUN_0200C6B0 + b _0221C4FA +_0221C4EE: + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r5, #0x1c] + bl FUN_0200C6B0 +_0221C4FA: + ldr r0, [r5, #0x1c] + add r1, r4, #0 + mov r2, #0 + bl FUN_0200C82C + b _0221C5B4 +_0221C506: + ldr r0, [r5, #0x1c] + mov r1, #2 + bl FUN_0200C840 + add r0, r5, #0 + ldr r2, _0221C5C8 ; =0x00001FFF + add r0, #0x20 + mov r1, #0 + mov r3, #8 + bl MOD08_02218008 + mov r1, #7 + ldr r0, [r5, #0x1c] + mvn r1, r1 + mov r2, #0x10 + bl FUN_0200C8DC + mov r0, #0 + str r0, [r5, #0x34] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _0221C5B4 +_0221C534: + add r0, r5, #0 + add r0, #0x20 + bl MOD08_02218058 + cmp r0, #1 + bne _0221C54E + ldr r1, [r5, #0x20] + ldr r0, [r5, #0x1c] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0200C898 + b _0221C5B4 +_0221C54E: + ldr r0, [r5, #0x34] + cmp r0, #3 + ble _0221C55C + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _0221C5B4 +_0221C55C: + add r0, r0, #1 + str r0, [r5, #0x34] + cmp r0, #1 + beq _0221C56E + cmp r0, #2 + beq _0221C57E + cmp r0, #3 + beq _0221C58E + b _0221C5B4 +_0221C56E: + add r0, r5, #0 + ldr r1, _0221C5C8 ; =0x00001FFF + ldr r2, _0221C5CC ; =0xFFFFE001 + add r0, #0x20 + mov r3, #8 + bl MOD08_02218008 + b _0221C5B4 +_0221C57E: + ldr r1, _0221C5CC ; =0xFFFFE001 + add r0, r5, #0 + add r0, #0x20 + lsr r2, r1, #0x13 + mov r3, #8 + bl MOD08_02218008 + b _0221C5B4 +_0221C58E: + add r0, r5, #0 + ldr r1, _0221C5C8 ; =0x00001FFF + add r0, #0x20 + mov r2, #0 + mov r3, #8 + bl MOD08_02218008 + b _0221C5B4 +_0221C59E: + ldr r0, [r5, #0x1c] + bl FUN_0200C3DC + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_0221C5B4: + ldr r0, [r5, #0x1c] + bl FUN_0200C5A8 + ldr r0, [r5, #0x10] + bl FUN_0200BC1C + pop {r4, r5, r6, pc} + nop +_0221C5C4: .word 0x0222C4D4 +_0221C5C8: .word 0x00001FFF +_0221C5CC: .word 0xFFFFE001 + + thumb_func_start MOD08_0221C5D0 +MOD08_0221C5D0: ; 0x0221C5D0 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x38 + add r5, r0, #0 + add r6, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + str r6, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x34] + add r0, r5, #0 + bl MOD08_02212460 + add r7, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD08_02217B98 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #1 + bl MOD08_02217B98 + add r2, r0, #0 + ldr r0, [r4, #0x1c] + add r1, r6, #0 + bl FUN_0200C714 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + ldr r0, [r4, #0x1c] + bne _0221C630 + mov r1, #1 + bl FUN_0200C5C0 + b _0221C636 +_0221C630: + mov r1, #0 + bl FUN_0200C5C0 +_0221C636: + ldr r0, [r4, #4] + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #0xc + bl FUN_0200C82C + ldr r0, [r4, #4] + ldr r1, _0221C65C ; =MOD08_0221C4A4 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221C65C: .word MOD08_0221C4A4 + + thumb_func_start MOD08_0221C660 +MOD08_0221C660: ; 0x0221C660 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0200C608 + cmp r0, #0 + ldr r0, [r4, #0x1c] + bne _0221C686 + bl FUN_0200C3DC + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_0221C686: + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221C694 +MOD08_0221C694: ; 0x0221C694 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x38 + add r5, r0, #0 + add r6, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + str r6, [r4, #0x1c] + bl MOD08_02212460 + add r7, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD08_02217B98 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #1 + bl MOD08_02217B98 + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _0221C6DC + mov r6, #0x48 + mov r2, #0x20 + mov r5, #0 + b _0221C6F2 +_0221C6DC: + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _0221C6EE + mov r2, #0x7e + mov r5, #1 + b _0221C6F2 +_0221C6EE: + mov r2, #0x20 + mov r5, #0 +_0221C6F2: + ldr r0, [r4, #0x1c] + add r1, r6, #0 + bl FUN_0200C714 + ldr r0, [r4, #0x1c] + add r1, r5, #0 + bl FUN_0200C5C0 + ldr r0, [r4, #4] + mov r1, #2 + bl MOD08_02215600 + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0200C6B0 + ldr r0, [r4, #4] + ldr r1, _0221C720 ; =MOD08_0221C660 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221C720: .word MOD08_0221C660 + + thumb_func_start MOD08_0221C724 +MOD08_0221C724: ; 0x0221C724 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhi _0221C816 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221C73E: ; jump table + .short _0221C746 - _0221C73E - 2 ; case 0 + .short _0221C76C - _0221C73E - 2 ; case 1 + .short _0221C784 - _0221C73E - 2 ; case 2 + .short _0221C7C0 - _0221C73E - 2 ; case 3 +_0221C746: + mov r0, #0xa0 + str r0, [sp] + mov r3, #0x70 + mov r0, #1 + str r3, [sp, #4] + mov r2, #0x15 + str r2, [sp, #8] + lsl r0, r0, #0x12 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x24 + add r1, #0x48 + sub r2, #0x33 + bl MOD08_02217F50 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221C82E +_0221C76C: + add r0, r4, #0 + ldr r2, [r4, #0x1c] + add r0, #0x24 + add r1, #0x48 + bl MOD08_02217FE4 + cmp r0, #0 + bne _0221C82E + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221C82E +_0221C784: + ldr r0, [r4, #0x1c] + bl FUN_0200C608 + cmp r0, #0 + bne _0221C82E + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200C90C + add r0, r4, #0 + add r2, r4, #0 + mov r1, #0x10 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x21 + strb r1, [r0] + add r1, r4, #0 + add r1, #0x20 + add r2, #0x21 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4, #4] + bl MOD08_02227994 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221C82E +_0221C7C0: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _0221C7D8 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] +_0221C7D8: + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + cmp r0, #0x10 + bhs _0221C7F0 + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x21 + strb r1, [r0] +_0221C7F0: + add r0, r4, #0 + add r0, #0x20 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221C840 ; =0x04000052 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + bne _0221C82E + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221C82E +_0221C816: + ldr r0, [r4, #0x1c] + bl FUN_0200C3DC + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0221C82E: + ldr r0, [r4, #0x1c] + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0221C840: .word 0x04000052 + + thumb_func_start MOD08_0221C844 +MOD08_0221C844: ; 0x0221C844 + push {r4, r5, r6, lr} + mov r1, #0x6c + add r6, r0, #0 + add r5, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_02227B70 + mov r1, #0x1d + str r5, [r4, #0x1c] + add r0, r5, #0 + mvn r1, r1 + mov r2, #0xa0 + bl FUN_0200C714 + ldr r0, [r4, #4] + mov r1, #2 + bl MOD08_02215600 + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0200C6B0 + ldr r0, [r4, #4] + ldr r1, _0221C884 ; =MOD08_0221C724 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + .align 2, 0 +_0221C884: .word MOD08_0221C724 + + thumb_func_start MOD08_0221C888 +MOD08_0221C888: ; 0x0221C888 + push {r4, lr} + mov r1, #0 + add r4, r0, #0 + bl MOD08_02212498 + cmp r0, #0 + beq _0221C89E + add r0, r4, #0 + bl MOD08_02218BD4 + pop {r4, pc} +_0221C89E: + add r0, r4, #0 + bl MOD08_02218C04 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221C8A8 +MOD08_0221C8A8: ; 0x0221C8A8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0x18 + bls _0221C8B6 + b _0221CAAA +_0221C8B6: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221C8C2: ; jump table + .short _0221C8F4 - _0221C8C2 - 2 ; case 0 + .short _0221CAAA - _0221C8C2 - 2 ; case 1 + .short _0221CAAA - _0221C8C2 - 2 ; case 2 + .short _0221CAAA - _0221C8C2 - 2 ; case 3 + .short _0221CAAA - _0221C8C2 - 2 ; case 4 + .short _0221C9A0 - _0221C8C2 - 2 ; case 5 + .short _0221C9A0 - _0221C8C2 - 2 ; case 6 + .short _0221C9CA - _0221C8C2 - 2 ; case 7 + .short _0221CAAA - _0221C8C2 - 2 ; case 8 + .short _0221CAAA - _0221C8C2 - 2 ; case 9 + .short _0221C9E4 - _0221C8C2 - 2 ; case 10 + .short _0221C9E4 - _0221C8C2 - 2 ; case 11 + .short _0221CA0E - _0221C8C2 - 2 ; case 12 + .short _0221CAAA - _0221C8C2 - 2 ; case 13 + .short _0221CAAA - _0221C8C2 - 2 ; case 14 + .short _0221CA26 - _0221C8C2 - 2 ; case 15 + .short _0221CA26 - _0221C8C2 - 2 ; case 16 + .short _0221CA50 - _0221C8C2 - 2 ; case 17 + .short _0221CAAA - _0221C8C2 - 2 ; case 18 + .short _0221CAAA - _0221C8C2 - 2 ; case 19 + .short _0221CAAA - _0221C8C2 - 2 ; case 20 + .short _0221CAAA - _0221C8C2 - 2 ; case 21 + .short _0221CA68 - _0221C8C2 - 2 ; case 22 + .short _0221CA68 - _0221C8C2 - 2 ; case 23 + .short _0221CA92 - _0221C8C2 - 2 ; case 24 +_0221C8F4: + ldr r0, [r4, #0x34] + ldr r1, _0221CAF0 ; =0xFFFF1FFF + cmp r0, #0 + bne _0221C94E + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + add r5, r0, #0 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + add r5, #0x48 + ldrh r3, [r5] + mov r2, #0x3f + mov r1, #0xf + bic r3, r2 + orr r1, r3 + mov r3, #0x20 + orr r1, r3 + strh r1, [r5] + add r5, r0, #0 + add r5, #0x4a + ldrh r6, [r5] + mov r1, #0x1f + bic r6, r2 + orr r1, r6 + orr r1, r3 + strh r1, [r5] + add r1, r0, #0 + mov r2, #0x80 + add r1, #0x40 + strh r2, [r1] + ldr r1, _0221CAF4 ; =0x0000A0C0 + add r0, #0x44 + strh r1, [r0] + bl FUN_0201B9EC + mov r1, #5 + bl _s32_div_f + add r1, #0x23 + add sp, #4 + str r1, [r4, #0x3c] + pop {r3, r4, r5, r6, pc} +_0221C94E: + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + add r5, r0, #0 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + add r5, #0x48 + ldrh r3, [r5] + mov r2, #0x3f + mov r1, #0xf + bic r3, r2 + orr r1, r3 + mov r3, #0x20 + orr r1, r3 + strh r1, [r5] + add r5, r0, #0 + add r5, #0x4a + ldrh r6, [r5] + mov r1, #0x1f + bic r6, r2 + orr r1, r6 + orr r1, r3 + strh r1, [r5] + add r1, r0, #0 + lsl r2, r3, #0xa + add r1, #0x40 + strh r2, [r1] + ldr r1, _0221CAF8 ; =0x000056C0 + add r0, #0x44 + strh r1, [r0] + bl FUN_0201B9EC + mov r1, #5 + bl _s32_div_f + add r1, #0x23 + add sp, #4 + str r1, [r4, #0x3c] + pop {r3, r4, r5, r6, pc} +_0221C9A0: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _0221C9D0 + ldr r0, [r4, #0x38] + cmp r0, #0 + bne _0221C9D0 + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221C9CA: + ldr r0, [r4, #0x38] + cmp r0, #1 + bne _0221C9D2 +_0221C9D0: + b _0221CAEC +_0221C9D2: + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221C9E4: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _0221CAEC + ldr r0, [r4, #0x38] + cmp r0, #1 + bne _0221CAEC + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221CA0E: + ldr r0, [r4, #0x38] + cmp r0, #2 + beq _0221CAEC + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221CA26: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _0221CAEC + ldr r0, [r4, #0x38] + cmp r0, #2 + bne _0221CAEC + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221CA50: + ldr r0, [r4, #0x38] + cmp r0, #3 + beq _0221CAEC + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221CA68: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _0221CAEC + ldr r0, [r4, #0x38] + cmp r0, #3 + bne _0221CAEC + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #8 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221CA92: + ldr r0, [r4, #0x38] + cmp r0, #4 + beq _0221CAEC + add r0, r0, #1 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #8 + bl FUN_0200C82C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221CAAA: + ldr r1, [r4, #0x3c] + cmp r0, r1 + ble _0221CAEC + ldr r0, [r4, #0x38] + cmp r0, #0x14 + ldr r0, [r4, #0x1c] + bge _0221CAE6 + mov r1, #0 + mov r2, #4 + bl FUN_0200C82C + add r1, sp, #0 + ldr r0, [r4, #0x1c] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r0, sp, #0 + mov r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0x82 + ble _0221CADC + ldr r0, [r4, #0x1c] + bl FUN_0200C644 +_0221CADC: + ldr r0, [r4, #0x38] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r3, r4, r5, r6, pc} +_0221CAE6: + mov r1, #0 + bl FUN_0200C644 +_0221CAEC: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0221CAF0: .word 0xFFFF1FFF +_0221CAF4: .word 0x0000A0C0 +_0221CAF8: .word 0x000056C0 + + thumb_func_start MOD08_0221CAFC +MOD08_0221CAFC: ; 0x0221CAFC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _0221CB0E + add r0, r4, #0 + bl MOD08_0221C8A8 +_0221CB0E: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + ldrb r1, [r4] + ldr r0, [r4, #0x24] + cmp r1, r0 + blt _0221CB66 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _0221CB74 ; =0xFFFF1FFF + and r1, r2 + add r2, r0, #0 + str r1, [r0] + add r2, #0x48 + ldrh r3, [r2] + mov r1, #0x3f + bic r3, r1 + strh r3, [r2] + add r2, r0, #0 + add r2, #0x4a + ldrh r3, [r2] + bic r3, r1 + strh r3, [r2] + add r2, r0, #0 + mov r1, #0 + add r2, #0x40 + strh r1, [r2] + add r0, #0x44 + strh r1, [r0] + ldr r0, [r4, #0x1c] + bl FUN_0200C644 + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_0221CB66: + ldr r0, [r4, #0x1c] + bl FUN_0200C5A8 + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 +_0221CB74: .word 0xFFFF1FFF + + thumb_func_start MOD08_0221CB78 +MOD08_0221CB78: ; 0x0221CB78 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x40 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #0x2c] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4, #0x30] + add r0, r5, #0 + mov r1, #6 + bl MOD08_02212498 + str r0, [r4, #0x34] + ldr r0, [r4, #4] + ldr r1, [r4, #0x20] + bl MOD08_022124D8 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x38] + ldr r1, [r4, #0x28] + cmp r1, #0xff + beq _0221CBEA + add r0, r5, #0 + bl MOD08_02215600 + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_0200C6B0 +_0221CBEA: + ldr r1, [r4, #0x2c] + cmp r1, #0xff + beq _0221CBF6 + ldr r0, [r4, #0x1c] + bl FUN_0200C6C4 +_0221CBF6: + add r0, r5, #0 + bl MOD08_0221553C + cmp r0, #1 + beq _0221CC28 + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + cmp r0, #2 + beq _0221CC18 + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + cmp r0, #3 + bne _0221CC28 +_0221CC18: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0200C644 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_0221CC28: + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + add r7, r0, #0 + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212460 + str r0, [sp] + ldr r0, [r4, #0x2c] + cmp r0, #0xff + beq _0221CC76 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227468 + add r6, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + bl MOD08_02227468 + cmp r7, #3 + bhi _0221CC76 + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221CC6A: ; jump table + .short _0221CC72 - _0221CC6A - 2 ; case 0 + .short _0221CCFC - _0221CC6A - 2 ; case 1 + .short _0221CCB8 - _0221CC6A - 2 ; case 2 + .short _0221CD40 - _0221CC6A - 2 ; case 3 +_0221CC72: + cmp r6, #5 + bls _0221CC78 +_0221CC76: + b _0221CD82 +_0221CC78: + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221CC84: ; jump table + .short _0221CD82 - _0221CC84 - 2 ; case 0 + .short _0221CD82 - _0221CC84 - 2 ; case 1 + .short _0221CC90 - _0221CC84 - 2 ; case 2 + .short _0221CC9A - _0221CC84 - 2 ; case 3 + .short _0221CCA4 - _0221CC84 - 2 ; case 4 + .short _0221CCAE - _0221CC84 - 2 ; case 5 +_0221CC90: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CC9A: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CCA4: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CCAE: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CCB8: + cmp r6, #5 + bhi _0221CD82 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221CCC8: ; jump table + .short _0221CD82 - _0221CCC8 - 2 ; case 0 + .short _0221CD82 - _0221CCC8 - 2 ; case 1 + .short _0221CCD4 - _0221CCC8 - 2 ; case 2 + .short _0221CCDE - _0221CCC8 - 2 ; case 3 + .short _0221CCE8 - _0221CCC8 - 2 ; case 4 + .short _0221CCF2 - _0221CCC8 - 2 ; case 5 +_0221CCD4: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CCDE: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CCE8: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CCF2: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CCFC: + cmp r0, #5 + bhi _0221CD82 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221CD0C: ; jump table + .short _0221CD82 - _0221CD0C - 2 ; case 0 + .short _0221CD82 - _0221CD0C - 2 ; case 1 + .short _0221CD18 - _0221CD0C - 2 ; case 2 + .short _0221CD22 - _0221CD0C - 2 ; case 3 + .short _0221CD2C - _0221CD0C - 2 ; case 4 + .short _0221CD36 - _0221CD0C - 2 ; case 5 +_0221CD18: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CD22: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CD2C: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CD36: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CD40: + cmp r0, #5 + bhi _0221CD82 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221CD50: ; jump table + .short _0221CD82 - _0221CD50 - 2 ; case 0 + .short _0221CD82 - _0221CD50 - 2 ; case 1 + .short _0221CD5C - _0221CD50 - 2 ; case 2 + .short _0221CD66 - _0221CD50 - 2 ; case 3 + .short _0221CD70 - _0221CD50 - 2 ; case 4 + .short _0221CD7A - _0221CD50 - 2 ; case 5 +_0221CD5C: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + b _0221CD82 +_0221CD66: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CD70: + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + b _0221CD82 +_0221CD7A: + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 +_0221CD82: + ldr r0, [r4, #4] + ldr r1, _0221CD90 ; =MOD08_0221CAFC + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221CD90: .word MOD08_0221CAFC + + thumb_func_start MOD08_0221CD94 +MOD08_0221CD94: ; 0x0221CD94 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r2, r0, #0 + ldr r0, [r6, #0x2c] + cmp r0, #0 + bne _0221CDB0 + ldr r0, [r6, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_0221CDB0: + sub r0, r0, #1 + str r0, [r6, #0x2c] + mov r4, #0 + add r5, r6, #0 +_0221CDB8: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0221CDC2 + bl FUN_0200C5A8 +_0221CDC2: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0221CDB8 + ldr r0, [r6, #0xc] + bl FUN_0200BC1C + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0221CDD4 +MOD08_0221CDD4: ; 0x0221CDD4 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x34 + add r4, r0, #0 + bl MOD08_02228064 + add r7, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD08_02227B70 + add r0, r4, #0 + mov r1, #0 + bl MOD08_02212498 + cmp r0, #0 + bne _0221CDF8 + mov r0, #3 + b _0221CE00 +_0221CDF8: + add r0, r4, #0 + mov r1, #0 + bl MOD08_02212498 +_0221CE00: + ldr r5, _0221CE38 ; =0x0222D5A0 + str r0, [r7, #0x2c] + mov r6, #0 + add r4, r7, #0 +_0221CE08: + ldr r0, [r7, #4] + add r1, r6, #0 + bl MOD08_022124D8 + str r0, [r4, #0x1c] + cmp r0, #0 + beq _0221CE1C + ldr r1, [r5] + bl FUN_0200C6C4 +_0221CE1C: + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #4 + blt _0221CE08 + ldr r0, [r7, #4] + ldr r1, _0221CE3C ; =MOD08_0221CD94 + add r2, r7, #0 + bl MOD08_02212400 + add r1, r7, #0 + bl MOD08_0221CD94 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221CE38: .word 0x0222D5A0 +_0221CE3C: .word MOD08_0221CD94 + + thumb_func_start MOD08_0221CE40 +MOD08_0221CE40: ; 0x0221CE40 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #8] + cmp r0, #0 + beq _0221CE54 + cmp r0, #1 + beq _0221CE9A + b _0221CEB2 +_0221CE54: + mov r0, #0 + str r0, [r5] + ldr r0, [r5, #0xc] + mov r1, #2 + bl MOD08_022155C4 + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl MOD08_02218998 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl MOD08_02212014 + mov r1, #0xc8 + str r1, [sp] + mov r3, #2 + str r4, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + str r6, [sp, #0xc] + str r0, [sp, #0x10] + add r0, r1, #0 + mov r1, #0xa0 + mov r2, #0xb6 + lsl r3, r3, #0x10 + bl MOD08_022188DC + str r0, [r5, #0x24] + ldrb r0, [r5, #8] + add sp, #0x14 + add r0, r0, #1 + strb r0, [r5, #8] + pop {r3, r4, r5, r6, pc} +_0221CE9A: + ldr r0, [r5] + add r1, r0, #1 + str r1, [r5] + ldr r0, [r5, #4] + cmp r1, r0 + blt _0221CEC0 + ldr r0, [r5, #0x24] + bl MOD08_0221894C + ldrb r0, [r5, #8] + add r0, r0, #1 + strb r0, [r5, #8] +_0221CEB2: + ldr r0, [r5, #0xc] + add r1, r4, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 +_0221CEC0: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD08_0221CEC4 +MOD08_0221CEC4: ; 0x0221CEC4 + push {r3, r4, r5, lr} + mov r1, #0x28 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #8 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #4] + ldr r0, [r4, #0xc] + ldr r1, _0221CEF0 ; =MOD08_0221CE40 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221CEF0: .word MOD08_0221CE40 + + thumb_func_start MOD08_0221CEF4 +MOD08_0221CEF4: ; 0x0221CEF4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + str r0, [sp, #0xc] + ldrb r0, [r4] + cmp r0, #3 + bls _0221CF04 + b _0221D076 +_0221CF04: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221CF10: ; jump table + .short _0221CF18 - _0221CF10 - 2 ; case 0 + .short _0221CFCA - _0221CF10 - 2 ; case 1 + .short _0221CFE8 - _0221CF10 - 2 ; case 2 + .short _0221D042 - _0221CF10 - 2 ; case 3 +_0221CF18: + ldrb r0, [r4, #4] + mov r7, #0 + add r1, r7, #0 + add r0, r0, #1 + strb r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD08_02212498 + cmp r0, #0 + ble _0221CF8E + ldr r6, _0221D0E4 ; =0x0222C536 + add r5, r4, #0 +_0221CF30: + add r1, sp, #0x10 + ldr r0, [r5, #0x14] + add r1, #2 + add r2, sp, #0x10 + bl FUN_0200C7A0 + ldrb r1, [r4, #4] + ldrb r0, [r6] + cmp r1, r0 + blo _0221CF74 + add r0, r4, r7 + ldrb r1, [r0, #1] + add r1, r1, #1 + strb r1, [r0, #1] + ldrb r2, [r0, #1] + ldrb r1, [r6, #1] + cmp r2, r1 + blo _0221CF7C + mov r1, #0 + strb r1, [r0, #1] + ldr r0, [r5, #0x14] + bl FUN_0200C658 + cmp r0, #1 + ldr r0, [r5, #0x14] + bne _0221CF6C + mov r1, #0 + bl FUN_0200C644 + b _0221CF7C +_0221CF6C: + mov r1, #1 + bl FUN_0200C644 + b _0221CF7C +_0221CF74: + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_0200C644 +_0221CF7C: + ldr r0, [r4, #8] + mov r1, #0 + add r5, r5, #4 + add r6, r6, #2 + add r7, r7, #1 + bl MOD08_02212498 + cmp r7, r0 + blt _0221CF30 +_0221CF8E: + ldrb r0, [r4, #4] + cmp r0, #0x2d + blo _0221D02C + mov r5, #0 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221CFBE + add r6, r4, #0 + mov r7, #1 +_0221CFA6: + ldr r0, [r6, #0x14] + add r1, r7, #0 + bl FUN_0200C644 + ldr r0, [r4, #8] + mov r1, #0 + add r6, r6, #4 + add r5, r5, #1 + bl MOD08_02212498 + cmp r5, r0 + blt _0221CFA6 +_0221CFBE: + mov r0, #0 + strb r0, [r4, #4] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221D0B0 +_0221CFCA: + mov r1, #0x64 + str r1, [sp] + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x20 + mov r2, #0x3c + add r3, r1, #0 + bl MOD08_022181A8 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221D0B0 +_0221CFE8: + add r0, r4, #0 + add r0, #0x20 + bl MOD08_02218224 + cmp r0, #1 + bne _0221D02E + mov r5, #0 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221D0B0 + add r7, r4, #0 + add r6, r4, #0 + add r7, #0x20 +_0221D008: + add r0, r7, #0 + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD08_0221825C + ldr r0, [r6, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + bl FUN_0200C884 + ldr r0, [r4, #8] + mov r1, #0 + add r6, r6, #4 + add r5, r5, #1 + bl MOD08_02212498 + cmp r5, r0 + blt _0221D008 +_0221D02C: + b _0221D0B0 +_0221D02E: + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] + ldrb r0, [r4, #4] + cmp r0, #0x2d + blo _0221D0B0 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221D0B0 +_0221D042: + ldrb r0, [r4, #5] + cmp r0, #0 + beq _0221D04C + sub r0, r0, #1 + strb r0, [r4, #5] +_0221D04C: + ldrb r0, [r4, #6] + cmp r0, #0xf + bhs _0221D056 + add r0, r0, #1 + strb r0, [r4, #6] +_0221D056: + ldrb r0, [r4, #5] + cmp r0, #0 + bne _0221D068 + ldrb r0, [r4, #6] + cmp r0, #0xf + bne _0221D068 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221D068: + ldrb r0, [r4, #6] + ldrb r1, [r4, #5] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221D0E8 ; =0x04000052 + strh r1, [r0] + b _0221D0B0 +_0221D076: + mov r5, #0 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221D09E + add r6, r4, #0 + add r7, r5, #0 +_0221D088: + ldr r0, [r6, #0x14] + bl FUN_0200C3DC + ldr r0, [r4, #8] + add r1, r7, #0 + add r6, r6, #4 + add r5, r5, #1 + bl MOD08_02212498 + cmp r5, r0 + blt _0221D088 +_0221D09E: + ldr r0, [r4, #8] + ldr r1, [sp, #0xc] + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_0221D0B0: + mov r5, #0 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221D0DA + add r6, r4, #0 + add r7, r5, #0 +_0221D0C2: + ldr r0, [r6, #0x14] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r4, #8] + add r1, r7, #0 + add r6, r6, #4 + add r5, r5, #1 + bl MOD08_02212498 + cmp r5, r0 + blt _0221D0C2 +_0221D0DA: + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221D0E4: .word 0x0222C536 +_0221D0E8: .word 0x04000052 + + thumb_func_start MOD08_0221D0EC +MOD08_0221D0EC: ; 0x0221D0EC + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_02212014 + mov r1, #0x44 + bl FUN_02016998 + add r4, r0, #0 + bne _0221D10A + bl ErrorHandling +_0221D10A: + mov r0, #0 + strb r0, [r4, #4] + strb r0, [r4] + str r5, [r4, #0xc] + ldr r0, [sp] + str r6, [r4, #0x10] + str r0, [r4, #8] + ldr r1, [sp] + add r0, sp, #8 + bl MOD08_02215474 + mov r1, #0 + mvn r1, r1 + ldr r0, [r4, #8] + add r2, r1, #0 + bl MOD08_02227994 + mov r0, #0xf + strb r0, [r4, #5] + mov r0, #0 + strb r0, [r4, #6] + ldrb r0, [r4, #6] + ldrb r1, [r4, #5] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221D21C ; =0x04000052 + strh r1, [r0] + ldr r0, [sp] + str r7, [r4, #0x14] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [sp] + bl MOD08_02227470 + cmp r0, #3 + bne _0221D166 + ldr r0, [sp] + bl MOD08_02212004 + add r1, r0, #0 + mov r0, #0 + add r2, sp, #4 + bl MOD08_02227564 + b _0221D176 +_0221D166: + ldr r0, [sp] + bl MOD08_02212004 + add r1, r0, #0 + mov r0, #1 + add r2, sp, #4 + bl MOD08_02227564 +_0221D176: + ldr r0, [r4, #8] + mov r1, #0 + mov r6, #1 + bl MOD08_02212498 + cmp r0, #1 + ble _0221D1B0 + add r5, r4, #4 + add r7, sp, #4 +_0221D188: + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r2, sp, #8 + bl FUN_0200C154 + str r0, [r5, #0x14] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r7, r1] + ldrsh r2, [r7, r2] + bl FUN_0200C714 + ldr r0, [r4, #8] + mov r1, #0 + add r5, r5, #4 + add r6, r6, #1 + bl MOD08_02212498 + cmp r6, r0 + blt _0221D188 +_0221D1B0: + add r3, sp, #4 + mov r1, #0 + mov r2, #2 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r4, #0x14] + bl FUN_0200C714 + mov r6, #0 + ldr r0, [r4, #8] + add r1, r6, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221D20A + add r5, r4, #0 + add r7, r6, #0 +_0221D1D2: + add r1, r4, r6 + mov r0, #0 + strb r0, [r1, #1] + ldr r0, [r5, #0x14] + mov r1, #2 + bl FUN_0200C840 + mov r2, #0x20 + sub r2, r2, r7 + lsl r2, r2, #0x10 + ldr r0, [r5, #0x14] + mov r1, #0 + asr r2, r2, #0x10 + bl FUN_0200C82C + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #8] + mov r1, #0 + add r5, r5, #4 + add r7, r7, #4 + add r6, r6, #1 + bl MOD08_02212498 + cmp r6, r0 + blt _0221D1D2 +_0221D20A: + mov r3, #1 + ldr r0, [sp] + ldr r1, _0221D220 ; =MOD08_0221CEF4 + add r2, r4, #0 + lsl r3, r3, #0xc + bl MOD08_022123E4 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221D21C: .word 0x04000052 +_0221D220: .word MOD08_0221CEF4 + + thumb_func_start MOD08_0221D224 +MOD08_0221D224: ; 0x0221D224 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #5 + bls _0221D234 + b _0221D404 +_0221D234: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221D240: ; jump table + .short _0221D24C - _0221D240 - 2 ; case 0 + .short _0221D2AE - _0221D240 - 2 ; case 1 + .short _0221D2C8 - _0221D240 - 2 ; case 2 + .short _0221D2EC - _0221D240 - 2 ; case 3 + .short _0221D346 - _0221D240 - 2 ; case 4 + .short _0221D394 - _0221D240 - 2 ; case 5 +_0221D24C: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + bne _0221D2A4 + add r0, r4, #0 + add r0, #0x38 + bl MOD08_022183F0 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xd + bl FUN_02007558 + mov r2, #0x38 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020079E0 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221D2A4: + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D2AE: + mov r0, #0x1f + str r0, [sp] + mov r1, #0 + ldr r0, [r4, #0x10] + mov r2, #0xa + add r3, r1, #0 + bl FUN_02007E68 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D2C8: + ldr r0, [r4, #0x10] + bl FUN_02007F20 + cmp r0, #0 + bne _0221D2F6 + mov r0, #0x1f + str r0, [sp] + mov r2, #0 + ldr r0, [r4, #0x10] + mov r1, #0xa + add r3, r2, #0 + bl FUN_02007E68 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D2EC: + ldr r0, [r4, #0x10] + bl FUN_02007F20 + cmp r0, #0 + beq _0221D2F8 +_0221D2F6: + b _0221D412 +_0221D2F8: + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] + ldrb r0, [r4, #8] + cmp r0, #3 + blo _0221D33E + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD08_02212498 + add r5, r0, #0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD08_02212498 + add r6, r0, #0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl MOD08_02212498 + str r0, [sp] + add r0, r4, #0 + lsl r1, r5, #0x10 + lsl r3, r6, #0x10 + add r0, #0x14 + asr r1, r1, #0x10 + mov r2, #0x64 + asr r3, r3, #0x10 + bl MOD08_02218120 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D33E: + mov r0, #1 + add sp, #4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D346: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + bne _0221D38A + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221D38A: + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D394: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + ldr r0, [r4, #0x10] + bne _0221D3D8 + mov r2, #0x14 + ldrsh r2, [r4, r2] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0221D3D8: + mov r1, #0xc + add r2, r1, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0x10] + add r2, #0xf3 + bl FUN_02007558 + mov r2, #2 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007558 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221D404: + ldr r0, [r4, #0xc] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221D412: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0221D418 +MOD08_0221D418: ; 0x0221D418 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x5c + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4] + str r5, [r4, #0xc] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + ldr r0, [r4, #0xc] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_0221552C + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x64 + lsl r3, r6, #0x10 + add r0, #0x14 + add r2, r1, #0 + asr r3, r3, #0x10 + bl MOD08_02218120 + mov r0, #0xa + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r0, #0x38 + mov r1, #2 + add r3, r2, #0 + bl MOD08_022183C0 + ldr r0, [r4, #0xc] + ldr r1, _0221D4A0 ; =MOD08_0221D224 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0221D4A0: .word MOD08_0221D224 + + thumb_func_start MOD08_0221D4A4 +MOD08_0221D4A4: ; 0x0221D4A4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #4 + bls _0221D4B4 + b _0221D6CC +_0221D4B4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221D4C0: ; jump table + .short _0221D4CA - _0221D4C0 - 2 ; case 0 + .short _0221D530 - _0221D4C0 - 2 ; case 1 + .short _0221D594 - _0221D4C0 - 2 ; case 2 + .short _0221D5F8 - _0221D4C0 - 2 ; case 3 + .short _0221D65C - _0221D4C0 - 2 ; case 4 +_0221D4CA: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #1 + bne _0221D50E + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x24] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221D50E: + mov r1, #0x96 + str r1, [sp] + mov r0, #0x64 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r4, #0 + mov r2, #0x32 + add r0, #0x10 + add r3, r2, #0 + bl MOD08_022181A8 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221D530: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #1 + bne _0221D574 + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x24] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221D574: + mov r2, #0x64 + str r2, [sp] + str r2, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + mov r1, #0x32 + mov r3, #0x96 + bl MOD08_022181A8 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221D594: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #1 + bne _0221D5D8 + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x24] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221D5D8: + mov r2, #0x96 + mov r1, #0x64 + str r2, [sp] + str r1, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + add r3, r1, #0 + bl MOD08_022181A8 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221D5F8: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #1 + bne _0221D63C + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x24] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221D63C: + mov r2, #0x64 + str r2, [sp] + str r2, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x96 + add r0, #0x10 + add r3, r1, #0 + bl MOD08_022181A8 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221D65C: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #1 + ldr r0, [r4, #0xc] + bne _0221D6A0 + mov r2, #0x10 + ldrsh r2, [r4, r2] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + ldrsh r0, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r4, #0x24] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r3, r4, pc} +_0221D6A0: + mov r1, #0xc + add r2, r1, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0xc] + add r2, #0xf3 + bl FUN_02007558 + mov r2, #2 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02007558 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221D6CC: + ldr r0, [r4, #8] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221D6E0 +MOD08_0221D6E0: ; 0x0221D6E0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x58 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + str r5, [r4, #8] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_0221552C + str r0, [r4, #4] + mov r0, #0x32 + str r0, [sp] + mov r1, #0x64 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + mov r2, #0x96 + add r3, r1, #0 + bl MOD08_022181A8 + ldr r0, [r4, #8] + ldr r1, _0221D748 ; =MOD08_0221D4A4 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0xc + pop {r4, r5, pc} + nop +_0221D748: .word MOD08_0221D4A4 + + thumb_func_start MOD08_0221D74C +MOD08_0221D74C: ; 0x0221D74C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r2, r0, #0 + ldrb r0, [r5, #1] + cmp r0, #0 + beq _0221D766 + cmp r0, #1 + beq _0221D84C + cmp r0, #2 + bne _0221D764 + b _0221D8AE +_0221D764: + b _0221D8E2 +_0221D766: + ldrb r3, [r5] + mov r0, #0x1f + lsr r2, r3, #0x1f + lsl r1, r3, #0x1f + sub r1, r1, r2 + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #1 + add r1, r3, #1 + str r0, [sp, #0xc] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [sp, #8] + ldr r1, [sp, #0xc] + mov r0, #6 + mul r0, r1 + ldr r1, _0221D900 ; =0x0222C59A + ldrsh r2, [r1, r0] + ldr r1, [sp, #8] + sub r7, r2, r1 + mov r1, #0xa + ldrsh r3, [r5, r1] + ldr r1, _0221D904 ; =0x0222C598 + ldrsh r6, [r1, r0] + mov r1, #8 + ldrsh r2, [r5, r1] + ldr r1, _0221D908 ; =0x0222C596 + ldrsh r4, [r1, r0] + lsl r0, r7, #0x10 + str r3, [sp] + add r1, r2, r4 + lsr r0, r0, #0x10 + add r2, r2, r6 + str r0, [sp, #4] + add r0, r5, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, #0x28 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + mov r0, #0xa + ldrsh r3, [r5, r0] + mov r0, #8 + ldrsh r2, [r5, r0] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + sub r1, r2, r4 + str r3, [sp] + sub r2, r2, r6 + str r0, [sp, #4] + add r0, r5, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, #0x4c + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + ldr r0, [sp, #0xc] + add r1, r0, #1 + mov r0, #6 + mul r0, r1 + ldr r1, _0221D900 ; =0x0222C59A + ldrsh r2, [r1, r0] + ldr r1, [sp, #8] + sub r7, r2, r1 + mov r1, #0xa + ldrsh r3, [r5, r1] + ldr r1, _0221D904 ; =0x0222C598 + ldrsh r6, [r1, r0] + mov r1, #8 + ldrsh r2, [r5, r1] + ldr r1, _0221D908 ; =0x0222C596 + ldrsh r4, [r1, r0] + lsl r0, r7, #0x10 + str r3, [sp] + add r1, r2, r4 + lsr r0, r0, #0x10 + add r2, r2, r6 + str r0, [sp, #4] + add r0, r5, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, #0x70 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + mov r0, #0xa + ldrsh r3, [r5, r0] + mov r0, #8 + ldrsh r2, [r5, r0] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + sub r1, r2, r4 + str r3, [sp] + sub r2, r2, r6 + str r0, [sp, #4] + add r0, r5, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, #0x94 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02217E80 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_0221D84C: + mov r0, #0 + add r7, r5, #0 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + add r7, #0x28 + add r6, r5, #0 + add r4, r5, #0 +_0221D85A: + add r0, r7, #0 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221D870 + ldr r0, [sp, #0x10] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + b _0221D87E +_0221D870: + mov r1, #0x28 + mov r2, #0x2a + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + ldr r0, [r4, #0x18] + bl FUN_0200C714 +_0221D87E: + ldr r0, [r4, #0x18] + bl FUN_0200C5A8 + ldr r0, [sp, #0x14] + add r7, #0x24 + add r0, r0, #1 + add r6, #0x24 + add r4, r4, #4 + str r0, [sp, #0x14] + cmp r0, #4 + blt _0221D85A + ldr r0, [sp, #0x10] + cmp r0, #4 + bne _0221D8F4 + ldrb r0, [r5] + cmp r0, #9 + bne _0221D8A8 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _0221D8F4 +_0221D8A8: + mov r0, #0 + strb r0, [r5, #1] + b _0221D8F4 +_0221D8AE: + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0221D8B8 + sub r0, r0, #1 + strb r0, [r5, #4] +_0221D8B8: + ldrb r0, [r5, #5] + cmp r0, #0xf + bhs _0221D8C2 + add r0, r0, #1 + strb r0, [r5, #5] +_0221D8C2: + ldrb r0, [r5, #4] + cmp r0, #0 + bne _0221D8D4 + ldrb r0, [r5, #5] + cmp r0, #0xf + bne _0221D8D4 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_0221D8D4: + ldrb r0, [r5, #5] + ldrb r1, [r5, #4] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221D90C ; =0x04000052 + strh r1, [r0] + b _0221D8F4 +_0221D8E2: + ldr r0, [r5, #0xc] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0221D8F4: + ldr r0, [r5, #0x14] + bl FUN_0200BC1C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221D900: .word 0x0222C59A +_0221D904: .word 0x0222C598 +_0221D908: .word 0x0222C596 +_0221D90C: .word 0x04000052 + + thumb_func_start MOD08_0221D910 +MOD08_0221D910: ; 0x0221D910 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x18] + bl MOD08_02212014 + mov r1, #0xb8 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4, #1] + strb r0, [r4] + ldr r0, [sp, #0x18] + str r0, [r4, #0xc] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #8] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0xa] + ldr r0, [r4, #0x10] + mov r1, #0x29 + bl FUN_0200782C + mov r1, #0xa + ldrsh r1, [r4, r1] + sub r0, r1, r0 + strh r0, [r4, #0xa] + ldr r0, [r4, #0xc] + bl MOD08_02212504 + str r0, [r4, #0x14] + mov r0, #8 + strb r0, [r4, #4] + mov r1, #6 + strb r1, [r4, #5] + sub r1, r1, #7 + ldr r0, [r4, #0xc] + add r2, r1, #0 + bl MOD08_02227994 + ldrb r0, [r4, #5] + ldrb r1, [r4, #4] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221DB90 ; =0x04000052 + strh r1, [r0] + ldr r0, [r4, #0xc] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_0221550C + str r0, [sp, #0x20] + ldr r0, [r4, #0xc] + bl MOD08_02215574 + add r7, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_0221551C + str r0, [sp, #0x1c] + mov r6, #0 + add r5, r4, #0 +_0221D9AE: + ldr r0, [r4, #0xc] + add r1, r6, #0 + bl MOD08_022124D8 + mov r1, #1 + str r0, [r5, #0x18] + bl FUN_0200C90C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0221D9AE + ldr r0, [r4, #0xc] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_02227470 + cmp r0, #3 + ldr r0, [r4, #0x18] + bne _0221DA9E + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x20] + mov r1, #0x14 + bl FUN_0200C6C4 + ldr r0, [r4, #0x24] + mov r1, #0x14 + bl FUN_0200C6C4 + ldr r0, [r4, #0x18] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x20] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x24] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x18] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [r4, #0xc] + bl MOD08_02215504 + add r6, r0, #0 + ldr r0, [sp, #0x18] + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r5, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r0, r6, #0 + bl FUN_02003B40 + ldr r0, [r4, #0x20] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [r4, #0xc] + bl MOD08_02215504 + add r6, r0, #0 + ldr r0, [sp, #0x18] + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r5, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0xc4 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r0, r6, #0 + bl FUN_02003B40 + b _0221DB80 +_0221DA9E: + mov r1, #0x14 + bl FUN_0200C6C4 + ldr r0, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200C6C4 + ldr r0, [r4, #0x20] + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x24] + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x18] + add r1, r7, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + add r1, r7, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x20] + add r1, r7, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x24] + add r1, r7, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x18] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x20] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x24] + add r1, r7, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x18] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [r4, #0xc] + bl MOD08_02215504 + add r6, r0, #0 + ldr r0, [sp, #0x18] + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r5, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0xc4 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r0, r6, #0 + bl FUN_02003B40 + ldr r0, [r4, #0x20] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [r4, #0xc] + bl MOD08_02215504 + add r6, r0, #0 + ldr r0, [sp, #0x18] + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r5, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r0, r6, #0 + bl FUN_02003B40 +_0221DB80: + ldr r0, [r4, #0xc] + ldr r1, _0221DB94 ; =MOD08_0221D74C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0221DB90: .word 0x04000052 +_0221DB94: .word MOD08_0221D74C + + thumb_func_start MOD08_0221DB98 +MOD08_0221DB98: ; 0x0221DB98 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221DBAA + cmp r0, #1 + beq _0221DC04 + b _0221DC44 +_0221DBAA: + ldrb r1, [r4, #2] + ldr r5, _0221DC54 ; =0x0222C531 + mov r2, #0x64 + lsl r0, r1, #1 + add r3, r1, r0 + ldr r0, _0221DC58 ; =0x0222C532 + ldr r1, _0221DC5C ; =0x0222C530 + ldrb r0, [r0, r3] + ldrb r1, [r1, r3] + ldrb r3, [r5, r3] + str r0, [sp] + add r0, r4, #0 + add r0, #0xc + bl MOD08_02218120 + ldrb r0, [r4, #2] + cmp r0, #0 + ldr r0, _0221DC60 ; =0x00007FFF + bne _0221DBE0 + str r0, [sp] + mov r1, #0 + ldr r0, [r4, #8] + mov r2, #6 + add r3, r1, #0 + bl FUN_02007E68 + b _0221DBEE +_0221DBE0: + str r0, [sp] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #6 + add r3, r2, #0 + bl FUN_02007E68 +_0221DBEE: + ldrb r1, [r4, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #2] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0221DC04: + add r0, r4, #0 + add r0, #0xc + bl MOD08_02218170 + cmp r0, #0 + bne _0221DC2C + ldr r0, [r4, #8] + bl FUN_02007F20 + cmp r0, #0 + bne _0221DC2C + ldrb r0, [r4, #1] + cmp r0, #4 + ldrb r0, [r4] + bhs _0221DC28 + sub r0, r0, #1 + strb r0, [r4] + b _0221DC2C +_0221DC28: + add r0, r0, #1 + strb r0, [r4] +_0221DC2C: + mov r1, #0xc + ldrsh r2, [r4, r1] + ldr r0, [r4, #8] + bl FUN_02007558 + mov r2, #0xe + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0xd + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0221DC44: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221DC54: .word 0x0222C531 +_0221DC58: .word 0x0222C532 +_0221DC5C: .word 0x0222C530 +_0221DC60: .word 0x00007FFF + + thumb_func_start MOD08_0221DC64 +MOD08_0221DC64: ; 0x0221DC64 + push {r3, r4, r5, lr} + mov r1, #0x30 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #2] + strb r0, [r4, #1] + str r5, [r4, #4] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #8] + ldr r0, [r4, #4] + ldr r1, _0221DC98 ; =MOD08_0221DB98 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0221DC98: .word MOD08_0221DB98 + + thumb_func_start MOD08_0221DC9C +MOD08_0221DC9C: ; 0x0221DC9C + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221DCB0 + cmp r0, #1 + beq _0221DCEA + b _0221DD42 +_0221DCB0: + ldrb r1, [r4, #1] + ldr r2, _0221DD54 ; =0x0222C578 + ldr r5, _0221DD58 ; =0x0222C579 + lsl r0, r1, #2 + add r3, r1, r0 + ldr r0, _0221DD5C ; =0x0222C57A + ldr r1, _0221DD60 ; =0x0222C577 + ldrb r0, [r0, r3] + ldrb r1, [r1, r3] + ldrb r2, [r2, r3] + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + ldr r0, _0221DD64 ; =0x0222C57B + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + bl MOD08_022181A8 + ldrb r0, [r4, #1] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, pc} +_0221DCEA: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #0 + bne _0221DD08 + ldrb r0, [r4, #1] + cmp r0, #3 + ldrb r0, [r4] + bhs _0221DD04 + sub r0, r0, #1 + strb r0, [r4] + b _0221DD08 +_0221DD04: + add r0, r0, #1 + strb r0, [r4] +_0221DD08: + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #2 + mov r1, #4 + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r1] + ldr r2, [r4, #0x24] + bl MOD08_0221828C + mov r2, #2 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + add sp, #0xc + pop {r4, r5, pc} +_0221DD42: + ldr r0, [r4, #8] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0221DD54: .word 0x0222C578 +_0221DD58: .word 0x0222C579 +_0221DD5C: .word 0x0222C57A +_0221DD60: .word 0x0222C577 +_0221DD64: .word 0x0222C57B + + thumb_func_start MOD08_0221DD68 +MOD08_0221DD68: ; 0x0221DD68 + push {r3, r4, r5, lr} + mov r1, #0x34 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + str r5, [r4, #8] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_0221552C + strh r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _0221DDB0 ; =MOD08_0221DC9C + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221DDB0: .word MOD08_0221DC9C + + thumb_func_start MOD08_0221DDB4 +MOD08_0221DDB4: ; 0x0221DDB4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #5 + bls _0221DDC4 + b _0221DF24 +_0221DDC4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221DDD0: ; jump table + .short _0221DDDC - _0221DDD0 - 2 ; case 0 + .short _0221DE16 - _0221DDD0 - 2 ; case 1 + .short _0221DE58 - _0221DDD0 - 2 ; case 2 + .short _0221DE82 - _0221DDD0 - 2 ; case 3 + .short _0221DEA4 - _0221DDD0 - 2 ; case 4 + .short _0221DEE2 - _0221DDD0 - 2 ; case 5 +_0221DDDC: + ldrb r1, [r4, #1] + ldr r2, _0221DF64 ; =0x0222C550 + ldr r5, _0221DF68 ; =0x0222C551 + lsl r0, r1, #2 + add r3, r1, r0 + ldr r0, _0221DF6C ; =0x0222C552 + ldr r1, _0221DF70 ; =0x0222C54F + ldrb r0, [r0, r3] + ldrb r1, [r1, r3] + ldrb r2, [r2, r3] + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + ldr r0, _0221DF74 ; =0x0222C553 + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + bl MOD08_022181A8 + ldrb r0, [r4, #1] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, pc} +_0221DE16: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #0 + bne _0221DE28 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221DE28: + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #0 + str r0, [sp] + mov r1, #2 + mov r2, #6 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + bl MOD08_022182DC + add sp, #0xc + pop {r4, r5, pc} +_0221DE58: + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + mov r1, #0 + add r3, r0, #0 + lsl r3, r3, #0x10 + str r1, [sp] + mov r0, #5 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + add r2, r1, #0 + asr r3, r3, #0x10 + bl MOD08_02217E80 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, pc} +_0221DE82: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221DE94 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221DE94: + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02007558 + add sp, #0xc + pop {r4, r5, pc} +_0221DEA4: + ldrb r1, [r4, #1] + ldr r2, _0221DF64 ; =0x0222C550 + ldr r5, _0221DF68 ; =0x0222C551 + lsl r0, r1, #2 + add r3, r1, r0 + ldr r0, _0221DF6C ; =0x0222C552 + ldr r1, _0221DF70 ; =0x0222C54F + ldrb r0, [r0, r3] + ldrb r1, [r1, r3] + ldrb r2, [r2, r3] + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + ldr r0, _0221DF74 ; =0x0222C553 + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + bl MOD08_022181A8 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, pc} +_0221DEE2: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218224 + cmp r0, #0 + bne _0221DEF4 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221DEF4: + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #1 + str r0, [sp] + mov r1, #2 + mov r2, #6 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + bl MOD08_022182DC + add sp, #0xc + pop {r4, r5, pc} +_0221DF24: + mov r2, #4 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #0xc] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #0xc] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0xc] + add r2, #0xf3 + bl FUN_02007558 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0221DF64: .word 0x0222C550 +_0221DF68: .word 0x0222C551 +_0221DF6C: .word 0x0222C552 +_0221DF70: .word 0x0222C54F +_0221DF74: .word 0x0222C553 + + thumb_func_start MOD08_0221DF78 +MOD08_0221DF78: ; 0x0221DF78 + push {r3, r4, r5, lr} + mov r1, #0x34 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + str r5, [r4, #8] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + mov r0, #2 + ldrsh r0, [r4, r0] + strh r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_0221552C + strh r0, [r4, #6] + ldr r0, [r4, #8] + ldr r1, _0221DFC8 ; =MOD08_0221DDB4 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0221DFC8: .word MOD08_0221DDB4 + + thumb_func_start MOD08_0221DFCC +MOD08_0221DFCC: ; 0x0221DFCC + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #4 + bhi _0221E0B6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221DFE6: ; jump table + .short _0221DFF0 - _0221DFE6 - 2 ; case 0 + .short _0221E02A - _0221DFE6 - 2 ; case 1 + .short _0221E048 - _0221DFE6 - 2 ; case 2 + .short _0221E05E - _0221DFE6 - 2 ; case 3 + .short _0221E098 - _0221DFE6 - 2 ; case 4 +_0221DFF0: + ldr r0, [r4, #8] + bl MOD08_02214540 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _0221E0C8 ; =0x00007FFF + mov r1, #1 + str r0, [sp, #8] + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + lsr r2, r2, #0x10 + sub r3, r1, #3 + bl FUN_02003210 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x10] + mov r2, #0x10 + add r3, r1, #0 + bl FUN_02007E68 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221E02A: + ldr r0, [r4, #4] + bl FUN_020038E4 + cmp r0, #0 + bne _0221E0C4 + ldr r0, [r4, #0x10] + bl FUN_02007F20 + cmp r0, #0 + bne _0221E0C4 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221E048: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #5 + bls _0221E0C4 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221E05E: + ldr r0, [r4, #8] + bl MOD08_02214540 + add r2, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0221E0C8 ; =0x00007FFF + mov r1, #1 + str r0, [sp, #8] + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + lsr r2, r2, #0x10 + sub r3, r1, #3 + bl FUN_02003210 + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #0x10] + mov r1, #0x10 + add r3, r2, #0 + bl FUN_02007E68 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221E098: + ldr r0, [r4, #4] + bl FUN_020038E4 + cmp r0, #0 + bne _0221E0C4 + ldr r0, [r4, #0x10] + bl FUN_02007F20 + cmp r0, #0 + bne _0221E0C4 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221E0B6: + ldr r0, [r4, #8] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221E0C4: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0221E0C8: .word 0x00007FFF + + thumb_func_start MOD08_0221E0CC +MOD08_0221E0CC: ; 0x0221E0CC + push {r3, r4, r5, lr} + mov r1, #0x14 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #8] + add r0, r5, #0 + bl MOD08_02215504 + str r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + ldr r1, _0221E100 ; =MOD08_0221DFCC + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0221E100: .word MOD08_0221DFCC + + thumb_func_start MOD08_0221E104 +MOD08_0221E104: ; 0x0221E104 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221E118 + cmp r0, #1 + beq _0221E184 + b _0221E1F8 +_0221E118: + ldrb r1, [r4, #1] + ldr r2, _0221E20C ; =0x0222C55A + ldr r5, _0221E210 ; =0x0222C55B + lsl r0, r1, #2 + add r3, r1, r0 + ldr r0, _0221E214 ; =0x0222C55C + ldr r1, _0221E218 ; =0x0222C559 + ldrb r0, [r0, r3] + ldrb r1, [r1, r3] + ldrb r2, [r2, r3] + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + ldr r0, _0221E21C ; =0x0222C55D + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + bl MOD08_022181A8 + ldrb r1, [r4, #1] + ldr r6, _0221E220 ; =0x0222C53C + lsl r0, r1, #1 + add r5, r1, r0 + mov r0, #4 + ldrsh r3, [r4, r0] + ldr r0, _0221E224 ; =0x0222C53D + mov r1, #0 + ldrb r0, [r0, r5] + add r2, r1, #0 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, _0221E228 ; =0x0222C53E + ldrb r0, [r0, r5] + ldrb r5, [r6, r5] + str r0, [sp, #4] + add r3, r3, r5 + add r0, r4, #0 + lsl r3, r3, #0x10 + add r0, #0x34 + asr r3, r3, #0x10 + bl MOD08_02217E80 + ldrb r0, [r4, #1] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0221E184: + add r0, r4, #0 + add r0, #0x10 + mov r5, #0 + bl MOD08_02218224 + cmp r0, #0 + bne _0221E194 + add r5, r5, #1 +_0221E194: + add r0, r4, #0 + add r0, #0x34 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221E1A2 + add r5, r5, #1 +_0221E1A2: + cmp r5, #2 + blt _0221E1C8 + ldrb r0, [r4, #1] + cmp r0, #3 + blo _0221E1C4 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + mov r0, #0 + strb r0, [r4, #1] + ldrb r0, [r4, #2] + cmp r0, #3 + blo _0221E1C8 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E1C8 +_0221E1C4: + mov r0, #0 + strb r0, [r4] +_0221E1C8: + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0xd + bl FUN_02007558 + mov r0, #0 + str r0, [sp] + mov r1, #0x36 + mov r2, #6 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + bl MOD08_022182DC + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0221E1F8: + ldr r0, [r4, #8] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0221E20C: .word 0x0222C55A +_0221E210: .word 0x0222C55B +_0221E214: .word 0x0222C55C +_0221E218: .word 0x0222C559 +_0221E21C: .word 0x0222C55D +_0221E220: .word 0x0222C53C +_0221E224: .word 0x0222C53D +_0221E228: .word 0x0222C53E + + thumb_func_start MOD08_0221E22C +MOD08_0221E22C: ; 0x0221E22C + push {r3, r4, r5, lr} + mov r1, #0x58 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + str r5, [r4, #8] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_0221552C + strh r0, [r4, #6] + ldr r0, [r4, #8] + ldr r1, _0221E274 ; =MOD08_0221E104 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221E274: .word MOD08_0221E104 + + thumb_func_start MOD08_0221E278 +MOD08_0221E278: ; 0x0221E278 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221E28E + cmp r0, #1 + beq _0221E2A6 + cmp r0, #2 + beq _0221E2C6 + b _0221E308 +_0221E28E: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #0xa + blo _0221E324 + mov r0, #0 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E324 +_0221E2A6: + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_0200C90C + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E324 +_0221E2C6: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #0xa + blo _0221E324 + ldr r0, _0221E338 ; =0x0400004A + mov r1, #0x3f + ldrh r2, [r0] + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _0221E33C ; =0xFFFFC0FF + lsl r1, r1, #8 + and r2, r3 + orr r1, r2 + strh r1, [r0] + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E324 +_0221E308: + mov r3, #1 + lsl r3, r3, #0x1a + ldr r1, [r3] + ldr r0, _0221E340 ; =0xFFFF1FFF + and r0, r1 + str r0, [r3] + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} +_0221E324: + ldr r0, [r4, #0xc] + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + bl FUN_0200C5A8 + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r4, pc} + .align 2, 0 +_0221E338: .word 0x0400004A +_0221E33C: .word 0xFFFFC0FF +_0221E340: .word 0xFFFF1FFF + + thumb_func_start MOD08_0221E344 +MOD08_0221E344: ; 0x0221E344 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r1, #0x14 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #4] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #8] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x10] + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _0221E41C ; =0xFFFF1FFF + and r2, r1 + lsr r1, r0, #0xb + orr r1, r2 + str r1, [r0] + add r0, #0x4a + ldrh r2, [r0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1f + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _0221E420 ; =0xFFFFC0FF + and r2, r1 + mov r1, #0x12 + lsl r1, r1, #8 + orr r1, r2 + strh r1, [r0] + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_0221550C + add r7, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_0221551C + str r0, [sp, #0x18] + ldr r0, [r4, #0xc] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02215504 + str r0, [sp, #0x1c] + add r0, r5, #0 + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r1, #0x20 + lsl r0, r6, #0x14 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r1, #0xe0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r7, #0 + bl FUN_02003B40 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #4] + ldr r1, _0221E424 ; =MOD08_0221E278 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221E41C: .word 0xFFFF1FFF +_0221E420: .word 0xFFFFC0FF +_0221E424: .word MOD08_0221E278 + + thumb_func_start MOD08_0221E428 +MOD08_0221E428: ; 0x0221E428 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bls _0221E438 + b _0221E61A +_0221E438: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221E444: ; jump table + .short _0221E44C - _0221E444 - 2 ; case 0 + .short _0221E45E - _0221E444 - 2 ; case 1 + .short _0221E576 - _0221E444 - 2 ; case 2 + .short _0221E5AE - _0221E444 - 2 ; case 3 +_0221E44C: + ldr r0, [r4, #0xc] + mov r1, #0xe + mov r2, #1 + bl FUN_02007558 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E636 +_0221E45E: + mov r0, #0 + add r6, r4, #0 + ldr r7, _0221E640 ; =0x0222C52C + str r0, [sp, #0x10] + str r0, [sp, #0x14] + add r5, r4, #0 + add r6, #0x20 +_0221E46C: + ldrb r0, [r5, #0x18] + cmp r0, #0 + beq _0221E478 + cmp r0, #1 + beq _0221E4A6 + b _0221E4F4 +_0221E478: + ldrb r0, [r5, #0x19] + add r0, r0, #1 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x19] + ldrb r0, [r7] + cmp r1, r0 + blo _0221E4FA + mov r0, #5 + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + mov r0, #5 + mov r1, #0x64 + str r0, [sp, #8] + add r0, r6, #0 + mov r2, #5 + add r3, r1, #0 + bl MOD08_022181A8 + ldrb r0, [r5, #0x18] + add r0, r0, #1 + strb r0, [r5, #0x18] + b _0221E4FA +_0221E4A6: + add r0, r6, #0 + bl MOD08_02218224 + cmp r0, #0 + bne _0221E4B8 + ldrb r0, [r5, #0x18] + add r0, r0, #1 + strb r0, [r5, #0x18] + b _0221E4FA +_0221E4B8: + add r0, r6, #0 + add r1, sp, #0x28 + add r2, sp, #0x24 + bl MOD08_0221825C + mov r0, #8 + ldrsb r0, [r4, r0] + bl _fflt + add r1, r0, #0 + ldr r0, [sp, #0x28] + bl _fmul + add r1, r0, #0 + ldr r0, [r5, #0x1c] + ldr r2, [sp, #0x24] + bl FUN_0200C884 + mov r0, #0 + str r0, [sp] + mov r1, #2 + ldr r2, [r4, #4] + ldrsh r1, [r4, r1] + lsl r2, r2, #0x10 + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x34] + asr r2, r2, #0x10 + bl MOD08_02218314 + b _0221E4FA +_0221E4F4: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] +_0221E4FA: + ldr r0, [r5, #0x1c] + bl FUN_0200C5A8 + ldr r0, [sp, #0x14] + add r5, #0x2c + add r0, r0, #1 + add r7, r7, #1 + add r6, #0x2c + str r0, [sp, #0x14] + cmp r0, #3 + blt _0221E46C + ldr r0, [sp, #0x10] + cmp r0, #3 + bge _0221E518 + b _0221E636 +_0221E518: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #3 + bhs _0221E56E + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0221E52A: + add r1, sp, #0x18 + ldr r0, [r5, #0x1c] + add r1, #2 + add r2, sp, #0x18 + bl FUN_0200C7A0 + add r2, sp, #0x18 + mov r1, #2 + ldrsh r1, [r2, r1] + mov r2, #2 + ldrsh r2, [r4, r2] + ldr r0, [r5, #0x1c] + bl FUN_0200C714 + mov r0, #8 + ldrsb r0, [r4, r0] + bl _fflt + add r1, r0, #0 + mov r2, #0xfe + ldr r0, [r5, #0x1c] + lsl r2, r2, #0x16 + bl FUN_0200C884 + strb r7, [r5, #0x18] + strb r7, [r5, #0x19] + add r6, r6, #1 + add r5, #0x2c + cmp r6, #3 + blt _0221E52A + ldrb r0, [r4] + sub r0, r0, #1 + strb r0, [r4] + b _0221E636 +_0221E56E: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E636 +_0221E576: + add r5, r4, #0 + mov r7, #0 + add r6, r4, #0 + add r5, #0x20 +_0221E57E: + ldr r0, [r6, #0x1c] + mov r1, #0 + bl FUN_0200C90C + mov r0, #0x64 + str r0, [sp] + str r0, [sp, #4] + mov r0, #5 + mov r1, #5 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x64 + add r3, r1, #0 + bl MOD08_022181A8 + add r7, r7, #1 + add r6, #0x2c + add r5, #0x2c + cmp r7, #3 + blt _0221E57E + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E636 +_0221E5AE: + mov r7, #0 + add r6, r4, #0 + str r7, [sp, #0xc] + add r6, #0x20 + add r5, r4, #0 +_0221E5B8: + add r0, r6, #0 + bl MOD08_02218224 + cmp r0, #0 + bne _0221E5C6 + add r7, r7, #1 + b _0221E600 +_0221E5C6: + add r0, r6, #0 + add r1, sp, #0x20 + add r2, sp, #0x1c + bl MOD08_0221825C + mov r0, #8 + ldrsb r0, [r4, r0] + bl _fflt + add r1, r0, #0 + ldr r0, [sp, #0x20] + bl _fmul + add r1, r0, #0 + ldr r0, [r5, #0x1c] + ldr r2, [sp, #0x1c] + bl FUN_0200C884 + mov r0, #0 + str r0, [sp] + mov r1, #2 + ldr r2, [r4, #4] + ldrsh r1, [r4, r1] + lsl r2, r2, #0x10 + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x34] + asr r2, r2, #0x10 + bl MOD08_02218314 +_0221E600: + ldr r0, [sp, #0xc] + add r6, #0x2c + add r0, r0, #1 + add r5, #0x2c + str r0, [sp, #0xc] + cmp r0, #3 + blt _0221E5B8 + cmp r7, #3 + blt _0221E636 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221E636 +_0221E61A: + ldr r0, [r4, #0xc] + mov r1, #0xe + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} +_0221E636: + ldr r0, [r4, #0x14] + bl FUN_0200BC1C + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221E640: .word 0x0222C52C + + thumb_func_start MOD08_0221E644 +MOD08_0221E644: ; 0x0221E644 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x9c + str r0, [sp] + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + ldr r0, [sp] + str r0, [r4, #0x10] + bl MOD08_02212504 + str r0, [r4, #0x14] + ldr r0, [r4, #0x10] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + ldr r0, [r4, #0xc] + mov r1, #0x29 + bl FUN_0200782C + mov r1, #2 + ldrsh r1, [r4, r1] + sub r0, r1, r0 + strh r0, [r4, #2] + ldr r0, [r4, #0x10] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl MOD08_0221552C + mov r1, #0 + str r0, [r4, #4] + mvn r1, r1 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD08_02227994 + mov r6, #0 + ldr r1, _0221E720 ; =0x0000060C + ldr r0, _0221E724 ; =0x04000052 + add r5, r4, #0 + strh r1, [r0] + add r7, r6, #0 +_0221E6B0: + strb r7, [r5, #0x18] + strb r7, [r5, #0x19] + ldr r0, [r4, #0x10] + add r1, r6, #0 + bl MOD08_022124D8 + str r0, [r5, #0x1c] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r5, #0x1c] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x1c] + add r1, r6, #1 + bl FUN_0200C6C4 + add r6, r6, #1 + add r5, #0x2c + cmp r6, #3 + blt _0221E6B0 + ldr r0, [sp] + mov r1, #0 + bl MOD08_02215680 + cmp r0, #1 + bne _0221E6EE + mov r0, #0 + mvn r0, r0 + b _0221E6F0 +_0221E6EE: + mov r0, #1 +_0221E6F0: + strb r0, [r4, #8] + mov r6, #0 + add r5, r4, #0 + mov r7, #8 +_0221E6F8: + ldrsb r0, [r4, r7] + bl _fflt + add r1, r0, #0 + mov r2, #0xfe + ldr r0, [r5, #0x1c] + lsl r2, r2, #0x16 + bl FUN_0200C884 + add r6, r6, #1 + add r5, #0x2c + cmp r6, #3 + blt _0221E6F8 + ldr r0, [r4, #0x10] + ldr r1, _0221E728 ; =MOD08_0221E428 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221E720: .word 0x0000060C +_0221E724: .word 0x04000052 +_0221E728: .word MOD08_0221E428 + + thumb_func_start MOD08_0221E72C +MOD08_0221E72C: ; 0x0221E72C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bls _0221E73C + b _0221E866 +_0221E73C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221E748: ; jump table + .short _0221E750 - _0221E748 - 2 ; case 0 + .short _0221E782 - _0221E748 - 2 ; case 1 + .short _0221E796 - _0221E748 - 2 ; case 2 + .short _0221E7F2 - _0221E748 - 2 ; case 3 +_0221E750: + ldr r0, [r4, #0xc] + bl MOD08_02215504 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl MOD08_02214540 + add r2, r0, #0 + mov r1, #0 + lsl r2, r2, #0x10 + str r1, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #1 + add r0, r5, #0 + lsr r2, r2, #0x10 + add r3, r1, #0 + bl FUN_02003210 + ldrb r0, [r4] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, r7, pc} +_0221E782: + ldr r0, [r4, #0xc] + bl MOD08_02215504 + bl FUN_020038E4 + cmp r0, #0 + bne _0221E874 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221E796: + mov r0, #5 + str r0, [sp] + ldrb r1, [r4, #1] + add r0, r4, #0 + add r0, #0xb4 + lsl r2, r1, #1 + ldr r1, _0221E878 ; =0x0222C586 + ldrsh r1, [r1, r2] + mov r2, #0 + add r3, r2, #0 + bl MOD08_022183C0 + ldrb r0, [r4, #2] + cmp r0, #0 + ldr r0, [r4, #0xc] + bne _0221E7C8 + bl MOD08_02215504 + mov r1, #0 + mov r2, #0xff + mov r3, #0xa + str r1, [sp] + bl FUN_02003A64 + b _0221E7DA +_0221E7C8: + bl MOD08_02215504 + ldr r1, _0221E87C ; =0x00007FFF + mov r2, #0xff + str r1, [sp] + mov r1, #0 + mov r3, #0xa + bl FUN_02003A64 +_0221E7DA: + mov r0, #3 + strb r0, [r4, #3] + ldrb r1, [r4, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #2] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221E7F2: + add r0, r4, #0 + add r0, #0xb4 + bl MOD08_022183F0 + cmp r0, #0 + bne _0221E810 + ldrb r0, [r4, #1] + cmp r0, #8 + ldrb r0, [r4] + blo _0221E80C + add r0, r0, #1 + strb r0, [r4] + b _0221E810 +_0221E80C: + sub r0, r0, #1 + strb r0, [r4] +_0221E810: + ldrb r0, [r4, #3] + cmp r0, #0 + beq _0221E832 + sub r0, r0, #1 + strb r0, [r4, #3] + ldrb r0, [r4, #3] + cmp r0, #0 + bne _0221E832 + ldr r0, [r4, #0xc] + bl MOD08_02215504 + mov r1, #0 + mov r2, #0xff + add r3, r1, #0 + str r1, [sp] + bl FUN_02003A64 +_0221E832: + mov r6, #0 + add r5, r4, #0 + mov r7, #0x14 +_0221E838: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0221E84C + mov r2, #0xb4 + ldrsh r3, [r4, r2] + ldrsh r2, [r5, r7] + mov r1, #0 + add r2, r3, r2 + bl FUN_02007558 +_0221E84C: + add r6, r6, #1 + add r5, #0x14 + cmp r6, #4 + blt _0221E838 + mov r3, #0xb4 + ldrsh r3, [r4, r3] + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0221E866: + ldr r0, [r4, #0xc] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221E874: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221E878: .word 0x0222C586 +_0221E87C: .word 0x00007FFF + + thumb_func_start MOD08_0221E880 +MOD08_0221E880: ; 0x0221E880 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0xd8 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + str r5, [r4, #0xc] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + bl MOD08_02212490 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + bl MOD08_0221553C + cmp r0, #1 + bne _0221E8B2 + mov r1, #0x40 + b _0221E8B4 +_0221E8B2: + mov r1, #0xa +_0221E8B4: + add r2, r4, #0 + add r0, r5, #0 + add r2, #0x14 + add r3, r4, #4 + bl MOD08_02227BAC + ldr r0, [r4, #4] + mov r6, #0 + cmp r0, #0 + ble _0221E8EA + add r5, r4, #0 + add r7, r6, #0 +_0221E8CC: + ldr r0, [r5, #0x1c] + add r1, r7, #0 + bl FUN_0200782C + strh r0, [r5, #0x14] + ldr r0, [r5, #0x1c] + mov r1, #1 + bl FUN_0200782C + strh r0, [r5, #0x16] + ldr r0, [r4, #4] + add r6, r6, #1 + add r5, #0x14 + cmp r6, r0 + blt _0221E8CC +_0221E8EA: + ldr r0, [r4, #0xc] + ldr r1, _0221E8F8 ; =MOD08_0221E72C + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221E8F8: .word MOD08_0221E72C + + thumb_func_start MOD08_0221E8FC +MOD08_0221E8FC: ; 0x0221E8FC + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + bne _0221E946 + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02217ECC + cmp r0, #0 + bne _0221E91A + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221E91A: + add r0, r4, #0 + add r0, #0x1c + bl MOD08_022183F0 + add r0, r4, #0 + add r0, #0x64 + bl MOD08_02218704 + mov r1, #0x40 + mov r2, #0x42 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + bl FUN_0200C714 + ldr r0, [r4, #0x18] + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + pop {r4, pc} +_0221E946: + ldr r0, [r4, #0xc] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221E958 +MOD08_0221E958: ; 0x0221E958 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x8c + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + str r5, [r4, #0xc] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + bl MOD08_02212490 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x18] + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + cmp r0, #0 + ldr r0, [r4, #0xc] + bne _0221E99C + bl MOD08_02212460 + b _0221E9A0 +_0221E99C: + bl MOD08_02212458 +_0221E9A0: + add r6, r0, #0 + ldr r0, [r4, #0xc] + add r1, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x14] + add r1, r4, #4 + bl MOD08_02227B2C + ldr r0, [r4, #0x14] + mov r1, #0x29 + bl FUN_0200782C + mov r1, #6 + ldrsh r1, [r4, r1] + sub r0, r1, r0 + strh r0, [r4, #6] + ldr r0, [r4, #0xc] + add r1, r6, #0 + bl MOD08_02217C1C + add r7, r0, #0 + ldr r0, [r4, #0xc] + add r1, r6, #0 + bl MOD08_02217C44 + add r6, r0, #0 + mov r0, #6 + ldrsh r3, [r4, r0] + mov r0, #4 + ldrsh r1, [r4, r0] + mov r2, #0x14 + add r0, r6, #0 + mul r0, r2 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + str r2, [sp, #4] + sub r2, #0x28 + mul r2, r7 + add r2, r1, r2 + add r0, r4, #0 + lsl r2, r2, #0x10 + add r0, #0x40 + asr r2, r2, #0x10 + bl MOD08_02217E80 + add r0, r5, #0 + mov r1, #2 + bl MOD08_022155C4 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD08_022155C4 + mov r5, #1 + add r3, r5, #0 + lsl r3, r6 + add r1, r0, #0 + add r6, r3, #0 + mov r2, #0x20 + add r3, r5, #0 + orr r6, r2 + lsl r3, r1 + add r1, r6, #0 + orr r1, r3 + sub r2, #0x21 + ldr r0, [r4, #0xc] + orr r1, r5 + add r3, r2, #0 + bl MOD08_022279D0 + mov r1, #0x1f + mov r2, #0 + str r1, [sp] + mov r0, #0xf + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x64 + add r3, r2, #0 + bl MOD08_022186D4 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_0200C90C + ldr r0, [r4, #0xc] + ldr r1, _0221EA60 ; =MOD08_0221E8FC + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221EA60: .word MOD08_0221E8FC + + thumb_func_start MOD08_0221EA64 +MOD08_0221EA64: ; 0x0221EA64 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221EA76 + cmp r0, #1 + beq _0221EAB6 + b _0221EAE6 +_0221EA76: + ldrb r0, [r4, #1] + cmp r0, #0 + ldrb r0, [r4, #2] + bne _0221EA88 + lsl r3, r0, #3 + ldr r0, _0221EB00 ; =0x0222C5B0 + ldr r2, [r0, r3] + neg r1, r2 + b _0221EA90 +_0221EA88: + lsl r3, r0, #3 + ldr r0, _0221EB00 ; =0x0222C5B0 + ldr r1, [r0, r3] + neg r2, r1 +_0221EA90: + ldr r5, _0221EB04 ; =0x0222C5B4 + add r0, r4, #0 + ldr r3, [r5, r3] + add r0, #0x5c + bl MOD08_02218008 + ldrb r0, [r4, #1] + cmp r0, #1 + bne _0221EAA8 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] +_0221EAA8: + ldrb r1, [r4, #1] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221EAB6: + add r0, r4, #0 + add r0, #0x5c + bl MOD08_02218058 + cmp r0, #1 + bne _0221EAD2 + ldr r2, [r4, #0x5c] + ldr r0, [r4, #0x28] + lsl r2, r2, #0x10 + mov r1, #9 + lsr r2, r2, #0x10 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0221EAD2: + ldrb r0, [r4, #2] + cmp r0, #5 + ldrb r0, [r4] + blo _0221EAE0 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0221EAE0: + sub r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0221EAE6: + ldr r0, [r4, #0x28] + mov r1, #9 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221EB00: .word 0x0222C5B0 +_0221EB04: .word 0x0222C5B4 + + thumb_func_start MOD08_0221EB08 +MOD08_0221EB08: ; 0x0221EB08 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221EB1C + cmp r0, #1 + beq _0221EB40 + b _0221EB6A +_0221EB1C: + mov r0, #0x22 + ldrsh r0, [r4, r0] + mov r1, #0x1c + mov r2, #0x1e + str r0, [sp] + mov r3, #0x20 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + add r0, #0x38 + bl MOD08_022183C0 + ldrb r0, [r4] + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_0221EB40: + ldr r0, [r4, #0x2c] + add r1, sp, #4 + bl MOD08_02227B2C + add r0, r4, #0 + add r3, sp, #4 + mov r1, #0 + mov r2, #2 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r3, [r4, #0x2c] + add r0, #0x38 + bl MOD08_02218454 + cmp r0, #0 + bne _0221EB78 + ldrb r0, [r4] + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_0221EB6A: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0221EB78: + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_0221EB7C +MOD08_0221EB7C: ; 0x0221EB7C + push {r4, r5, r6, lr} + mov r1, #0x70 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0x28] + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x28] + mov r1, #0xb + mov r2, #0x64 + bl FUN_02007558 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #2 + bl MOD08_02212498 + strh r0, [r4, #0x1e] + add r0, r5, #0 + mov r1, #3 + bl MOD08_02212498 + strh r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #4 + bl MOD08_02212498 + strh r0, [r4, #0x22] + add r0, r5, #0 + mov r1, #5 + bl MOD08_02212498 + str r0, [r4, #0x24] + cmp r6, #0 + ldr r0, [r4, #4] + bne _0221EC06 + ldr r1, _0221EC10 ; =MOD08_0221EA64 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} +_0221EC06: + ldr r1, _0221EC14 ; =MOD08_0221EB08 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + .align 2, 0 +_0221EC10: .word MOD08_0221EA64 +_0221EC14: .word MOD08_0221EB08 + + thumb_func_start MOD08_0221EC18 +MOD08_0221EC18: ; 0x0221EC18 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r2, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _0221EC2A + cmp r0, #1 + beq _0221EC4C + b _0221ECA0 +_0221EC2A: + ldr r2, [r5, #0x48] + mov r0, #0xa + add r1, r2, #2 + str r0, [sp] + add r0, r5, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, #0x4c + asr r1, r1, #0x10 + asr r2, r2, #0x10 + mov r3, #0 + bl MOD08_022183C0 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0221EC4C: + add r0, r5, #0 + add r0, #0x4c + bl MOD08_022183F0 + cmp r0, #0 + bne _0221EC60 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0221EC60: + mov r6, #0 + add r4, r5, #0 + mov r7, #0x28 +_0221EC66: + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _0221EC7A + mov r2, #0x4c + ldrsh r3, [r5, r2] + ldrsh r2, [r4, r7] + mov r1, #0 + add r2, r3, r2 + bl FUN_02007558 +_0221EC7A: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0221EC66 + mov r3, #0x4c + ldrsh r3, [r5, r3] + ldr r0, [r5, #0x14] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0x4e + mov r1, #3 + ldrsh r3, [r5, r3] + ldr r0, [r5, #0x14] + add r2, r1, #0 + bl FUN_020179E0 + pop {r3, r4, r5, r6, r7, pc} +_0221ECA0: + ldr r0, [r5, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0221ECB0 +MOD08_0221ECB0: ; 0x0221ECB0 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x70 + add r4, r0, #0 + bl MOD08_02228064 + add r7, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD08_02227B70 + ldr r0, [r7, #4] + mov r1, #1 + bl MOD08_02212758 + cmp r0, #0x46 + bgt _0221ECE0 + bge _0221ED02 + cmp r0, #0x1e + bgt _0221ECDA + beq _0221ED0E + b _0221ED14 +_0221ECDA: + cmp r0, #0x32 + beq _0221ED08 + b _0221ED14 +_0221ECE0: + cmp r0, #0x6e + bgt _0221ECEC + bge _0221ECF6 + cmp r0, #0x5a + beq _0221ECFC + b _0221ED14 +_0221ECEC: + cmp r0, #0x96 + bne _0221ED14 + mov r0, #6 + str r0, [r7, #0x48] + b _0221ED18 +_0221ECF6: + mov r0, #5 + str r0, [r7, #0x48] + b _0221ED18 +_0221ECFC: + mov r0, #4 + str r0, [r7, #0x48] + b _0221ED18 +_0221ED02: + mov r0, #3 + str r0, [r7, #0x48] + b _0221ED18 +_0221ED08: + mov r0, #2 + str r0, [r7, #0x48] + b _0221ED18 +_0221ED0E: + mov r0, #1 + str r0, [r7, #0x48] + b _0221ED18 +_0221ED14: + mov r0, #0 + str r0, [r7, #0x48] +_0221ED18: + add r5, r7, #0 + mov r6, #0 + add r4, r7, #0 + add r5, #0x28 +_0221ED20: + ldr r0, [r7, #4] + add r1, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x38] + cmp r0, #0 + beq _0221ED34 + add r1, r5, #0 + bl MOD08_02227B2C +_0221ED34: + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #4 + blt _0221ED20 + ldr r0, [r7, #4] + ldr r1, _0221ED4C ; =MOD08_0221EC18 + add r2, r7, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221ED4C: .word MOD08_0221EC18 + + thumb_func_start MOD08_0221ED50 +MOD08_0221ED50: ; 0x0221ED50 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0221ED64 + cmp r0, #1 + beq _0221ED92 + b _0221EE00 +_0221ED64: + mov r0, #0xa + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r0, #0x40 + mov r1, #0x14 + add r3, r2, #0 + bl MOD08_022183C0 + mov r0, #0xa + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r0, #0x64 + mov r1, #2 + add r3, r2, #0 + bl MOD08_022183C0 + ldrb r0, [r4] + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, pc} +_0221ED92: + add r0, r4, #0 + add r0, #0x40 + bl MOD08_022183F0 + cmp r0, #0 + bne _0221EDA6 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221EDF6 +_0221EDA6: + mov r1, #0x2c + ldrsh r2, [r4, r1] + mov r1, #0x40 + ldrsh r1, [r4, r1] + ldr r0, [r4, #0x38] + add r1, r2, r1 + mov r2, #0x2e + ldrsh r3, [r4, r2] + mov r2, #0x42 + ldrsh r2, [r4, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r1, #0x40 + ldrsh r2, [r4, r1] + mov r1, #0x2c + ldrsh r1, [r4, r1] + ldr r0, [r4, #0x3c] + sub r1, r2, r1 + mov r2, #0x2e + ldrsh r3, [r4, r2] + mov r2, #0x42 + ldrsh r2, [r4, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #0x38] + bl FUN_0200C5A8 + ldr r0, [r4, #0x3c] + bl FUN_0200C5A8 +_0221EDF6: + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + add sp, #4 + pop {r3, r4, pc} +_0221EE00: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_0221EE14 +MOD08_0221EE14: ; 0x0221EE14 + push {r3, r4, r5, lr} + mov r1, #0x88 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x38] + ldr r0, [r4, #4] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x3c] + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0x30] + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0x34] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x28 + bl MOD08_02227B2C + add r1, r4, #0 + ldr r0, [r4, #0x34] + add r1, #0x2c + bl MOD08_02227B2C + ldr r0, [r4, #4] + ldr r1, _0221EE7C ; =MOD08_0221ED50 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221EE7C: .word MOD08_0221ED50 + + thumb_func_start MOD08_0221EE80 +MOD08_0221EE80: ; 0x0221EE80 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + ldr r2, [r4, #0x38] + add r0, #0x8c + add r1, #0xb0 + bl MOD08_02217FE4 + cmp r0, #0 + bne _0221EEAC + ldr r0, [r4, #0x38] + bl FUN_0200C3DC + ldr r0, [r4, #0x14] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl MOD08_02228094 + pop {r3, r4, r5, pc} +_0221EEAC: + add r0, r4, #0 + add r0, #0xd4 + bl MOD08_02218058 + cmp r0, #1 + bne _0221EEC8 + add r1, r4, #0 + add r1, #0xd4 + ldr r1, [r1] + ldr r0, [r4, #0x38] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0200C898 +_0221EEC8: + ldr r0, [r4, #0x38] + bl FUN_0200C5A8 + ldr r0, [r4, #0x20] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0221EED8 +MOD08_0221EED8: ; 0x0221EED8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #0xe8 + add r6, r0, #0 + add r7, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x10 + bl MOD08_02227B70 + add r0, r6, #0 + mov r1, #0 + bl MOD08_02212498 + strh r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #1 + bl MOD08_02212498 + strh r0, [r4, #0xe] + add r0, r6, #0 + mov r1, #2 + bl MOD08_02212498 + str r0, [r4, #4] + add r0, r6, #0 + mov r1, #3 + bl MOD08_02212498 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02217C1C + add r5, r0, #0 + add r0, r7, #0 + mov r1, #2 + str r7, [r4, #0x38] + bl FUN_0200C840 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x44] + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x58] + add r1, r4, #0 + ldr r0, [r4, #0x44] + add r1, #0x40 + bl MOD08_02227B2C + add r1, r4, #0 + ldr r0, [r4, #0x58] + add r1, #0x54 + bl MOD08_02227B2C + mov r0, #0x42 + ldrsh r0, [r4, r0] + mov r3, #0x54 + str r0, [sp] + mov r0, #0x56 + ldrsh r2, [r4, r0] + mov r0, #0xe + ldrsh r0, [r4, r0] + add r1, r0, #0 + mul r1, r5 + add r0, r2, r1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4, #4] + add r1, r4, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #8] + mov r2, #0x40 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldrsh r3, [r4, r3] + add r0, r4, #0 + ldrsh r2, [r4, r2] + mov ip, r3 + mov r3, #0xc + ldrsh r3, [r4, r3] + add r0, #0x8c + add r1, #0xb0 + add r7, r3, #0 + mul r7, r5 + mov r3, ip + add r3, r3, r7 + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217F50 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02215490 + cmp r0, #4 + bne _0221EFE0 + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02215490 + cmp r0, #2 + bne _0221EFE0 + mov r0, #0 + mvn r0, r0 + mul r5, r0 +_0221EFE0: + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02215490 + cmp r0, #5 + bne _0221F00A + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02215490 + cmp r0, #3 + bne _0221F00A + mov r0, #0 + mvn r0, r0 + mul r5, r0 +_0221F00A: + cmp r5, #0 + ldr r2, _0221F064 ; =0x00005C71 + ble _0221F022 + ldr r1, _0221F068 ; =0x00000E38 + add r0, r4, #0 + add r0, #0xd4 + mul r1, r5 + mul r2, r5 + mov r3, #0xa + bl MOD08_02218008 + b _0221F032 +_0221F022: + ldr r1, _0221F06C ; =0x00003FFF + add r0, r4, #0 + add r0, #0xd4 + mul r1, r5 + mul r2, r5 + mov r3, #0xa + bl MOD08_02218008 +_0221F032: + add r1, r4, #0 + add r1, #0xd4 + ldr r1, [r1] + ldr r0, [r4, #0x38] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0200C898 + add r0, r4, #0 + add r1, r4, #0 + ldr r2, [r4, #0x38] + add r0, #0x8c + add r1, #0xb0 + bl MOD08_02217FE4 + ldr r0, [r4, #0x38] + bl FUN_0200C5A8 + ldr r0, [r4, #0x14] + ldr r1, _0221F070 ; =MOD08_0221EE80 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221F064: .word 0x00005C71 +_0221F068: .word 0x00000E38 +_0221F06C: .word 0x00003FFF +_0221F070: .word MOD08_0221EE80 + + thumb_func_start MOD08_0221F074 +MOD08_0221F074: ; 0x0221F074 + push {r4, r5, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x18] + cmp r0, #3 + bls _0221F084 + b _0221F1F0 +_0221F084: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221F090: ; jump table + .short _0221F098 - _0221F090 - 2 ; case 0 + .short _0221F0C8 - _0221F090 - 2 ; case 1 + .short _0221F168 - _0221F090 - 2 ; case 2 + .short _0221F17A - _0221F090 - 2 ; case 3 +_0221F098: + mov r0, #0x12 + ldrsh r2, [r4, r0] + mov r0, #0x96 + mov r3, #0x3c + str r0, [sp] + mov r1, #0x64 + str r1, [sp, #4] + mov r0, #0xc + mul r1, r2 + mul r3, r2 + lsl r2, r3, #0x10 + str r0, [sp, #8] + add r0, r4, #0 + lsl r1, r1, #0x10 + add r0, #0x9c + asr r1, r1, #0x10 + asr r2, r2, #0x10 + mov r3, #5 + bl MOD08_022181A8 + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0221F20E +_0221F0C8: + add r0, r4, #0 + add r0, #0x9c + bl MOD08_02218224 + cmp r0, #0 + bne _0221F106 + mov r0, #0x12 + ldrsh r2, [r4, r0] + mov r0, #0xa + mov r1, #0x3c + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + mov r0, #0xc + mul r1, r2 + str r0, [sp, #8] + add r0, r4, #0 + lsl r1, r1, #0x10 + mov r3, #0x96 + add r5, r2, #0 + mul r5, r3 + lsl r2, r5, #0x10 + add r0, #0x9c + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_022181A8 + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0221F20E +_0221F106: + add r0, r4, #0 + add r0, #0x9c + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD08_0221825C + ldr r0, [r4, #0x40] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + bl FUN_0200C884 + mov r0, #0x16 + add r2, r4, #0 + add r2, #0xb0 + ldrsh r0, [r4, r0] + ldr r2, [r2] + mov r1, #0x10 + bl MOD08_0221828C + mov r2, #0x16 + add r3, r0, #0 + ldrsh r2, [r4, r2] + mov r1, #0x14 + ldrsh r1, [r4, r1] + add r2, r2, r3 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x40] + asr r2, r2, #0x10 + bl FUN_0200C714 + ldrb r1, [r4, #0xc] + ldrb r0, [r4, #0x10] + cmp r1, r0 + bhs _0221F14E + add r0, r1, #1 + strb r0, [r4, #0xc] +_0221F14E: + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0x11] + cmp r1, r0 + bls _0221F15A + sub r0, r1, #1 + strb r0, [r4, #0xd] +_0221F15A: + ldrb r0, [r4, #0xd] + ldrb r1, [r4, #0xc] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221F220 ; =0x04000052 + strh r1, [r0] + b _0221F20E +_0221F168: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #4 + blt _0221F20E + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0221F20E +_0221F17A: + add r0, r4, #0 + add r0, #0x9c + bl MOD08_02218224 + cmp r0, #0 + bne _0221F18E + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0221F20E +_0221F18E: + add r0, r4, #0 + add r0, #0x9c + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD08_0221825C + ldr r0, [r4, #0x40] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl FUN_0200C884 + mov r0, #0x16 + add r2, r4, #0 + add r2, #0xb0 + ldrsh r0, [r4, r0] + ldr r2, [r2] + mov r1, #0x10 + bl MOD08_0221828C + mov r2, #0x16 + add r3, r0, #0 + ldrsh r2, [r4, r2] + mov r1, #0x14 + ldrsh r1, [r4, r1] + add r2, r2, r3 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x40] + asr r2, r2, #0x10 + bl FUN_0200C714 + ldrb r1, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r1, r0 + bls _0221F1D6 + sub r0, r1, #1 + strb r0, [r4, #0xc] +_0221F1D6: + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xf] + cmp r1, r0 + bhs _0221F1E2 + add r0, r1, #1 + strb r0, [r4, #0xd] +_0221F1E2: + ldrb r0, [r4, #0xd] + ldrb r1, [r4, #0xc] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221F220 ; =0x04000052 + strh r1, [r0] + b _0221F20E +_0221F1F0: + ldr r0, [r4, #0x44] + bl FUN_0200C3DC + ldr r0, [r4, #0x48] + bl FUN_0200C3DC + ldr r0, [r4, #0x1c] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl MOD08_02228094 + add sp, #0x1c + pop {r4, r5, pc} +_0221F20E: + ldr r0, [r4, #0x40] + bl FUN_0200C5A8 + ldr r0, [r4, #0x28] + bl FUN_0200BC1C + add sp, #0x1c + pop {r4, r5, pc} + nop +_0221F220: .word 0x04000052 + + thumb_func_start MOD08_0221F224 +MOD08_0221F224: ; 0x0221F224 + push {r4, r5, lr} + sub sp, #0x14 + mov r1, #0xd4 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x18 + bl MOD08_02227B70 + add r0, r5, #0 + mov r1, #0 + bl MOD08_022124B0 + str r0, [r4, #0x44] + add r0, r5, #0 + mov r1, #1 + bl MOD08_022124B0 + mov r1, #0 + str r0, [r4, #0x48] + mvn r1, r1 + ldr r0, [r4, #0x1c] + add r2, r1, #0 + bl MOD08_02227994 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + mov r1, #0 + strb r1, [r4, #0xc] + mov r0, #0x1f + strb r0, [r4, #0xd] + strb r1, [r4, #0xe] + strb r0, [r4, #0xf] + strb r0, [r4, #0x10] + mov r0, #4 + strb r0, [r4, #0x11] + add r0, r5, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _0221F2B4 + ldr r0, [r4, #0x44] + mov r1, #0 + str r0, [r4, #0x40] + ldr r0, [r4, #0x48] + bl FUN_0200C644 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_0200C5C0 + mov r0, #0xb3 + strh r0, [r4, #0x14] + mov r0, #0x78 + strh r0, [r4, #0x16] + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x40] + add r1, r1, #1 + bl FUN_0200C6B0 + mov r0, #0 + mvn r0, r0 + strh r0, [r4, #0x12] + b _0221F314 +_0221F2B4: + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _0221F2E4 + ldr r0, [r4, #0x48] + mov r1, #0 + str r0, [r4, #0x40] + ldr r0, [r4, #0x44] + bl FUN_0200C644 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_0200C5C0 + mov r0, #0x90 + strh r0, [r4, #0x14] + mov r0, #0x40 + strh r0, [r4, #0x16] + b _0221F310 +_0221F2E4: + ldr r0, [r4, #0x44] + mov r1, #0 + str r0, [r4, #0x40] + ldr r0, [r4, #0x48] + bl FUN_0200C644 + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_0200C5C0 + mov r0, #0x4c + strh r0, [r4, #0x14] + mov r0, #0x78 + strh r0, [r4, #0x16] + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x40] + add r1, r1, #1 + bl FUN_0200C6B0 +_0221F310: + mov r0, #1 + strh r0, [r4, #0x12] +_0221F314: + mov r1, #0x14 + mov r2, #0x16 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x40] + bl FUN_0200C714 + ldr r0, [r4, #0x40] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_0200C90C + mov r0, #0x12 + ldrsh r0, [r4, r0] + mov r3, #0x64 + add r1, r0, #0 + mov r0, #5 + str r0, [sp] + mul r1, r3 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + str r3, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x9c + add r2, r1, #0 + bl MOD08_022181A8 + add r0, r4, #0 + add r0, #0x9c + bl MOD08_02218224 + add r0, r4, #0 + add r0, #0x9c + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD08_0221825C + ldr r0, [r4, #0x40] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl FUN_0200C884 + mov r0, #0x16 + add r2, r4, #0 + add r2, #0xb0 + ldrsh r0, [r4, r0] + ldr r2, [r2] + mov r1, #0x10 + bl MOD08_0221828C + mov r2, #0x16 + add r3, r0, #0 + ldrsh r2, [r4, r2] + mov r1, #0x14 + ldrsh r1, [r4, r1] + add r2, r2, r3 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x40] + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #0x1c] + ldr r1, _0221F3A8 ; =MOD08_0221F074 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0221F3A8: .word MOD08_0221F074 + + thumb_func_start MOD08_0221F3AC +MOD08_0221F3AC: ; 0x0221F3AC + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r1, #0 + str r0, [sp, #0x10] + ldrb r0, [r4] + cmp r0, #8 + bls _0221F3BC + b _0221F710 +_0221F3BC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221F3C8: ; jump table + .short _0221F3DA - _0221F3C8 - 2 ; case 0 + .short _0221F412 - _0221F3C8 - 2 ; case 1 + .short _0221F46C - _0221F3C8 - 2 ; case 2 + .short _0221F486 - _0221F3C8 - 2 ; case 3 + .short _0221F4BA - _0221F3C8 - 2 ; case 4 + .short _0221F53E - _0221F3C8 - 2 ; case 5 + .short _0221F5D0 - _0221F3C8 - 2 ; case 6 + .short _0221F66E - _0221F3C8 - 2 ; case 7 + .short _0221F6B6 - _0221F3C8 - 2 ; case 8 +_0221F3DA: + ldrb r1, [r4, #0xc] + ldr r2, _0221F6F4 ; =0x0222C569 + ldr r5, _0221F6F8 ; =0x0222C56A + lsl r0, r1, #2 + add r3, r1, r0 + ldr r0, _0221F6FC ; =0x0222C56B + ldr r1, _0221F700 ; =0x0222C568 + ldrb r0, [r0, r3] + ldrb r1, [r1, r3] + ldrb r2, [r2, r3] + str r0, [sp] + mov r0, #0x64 + str r0, [sp, #4] + ldr r0, _0221F704 ; =0x0222C56C + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xcc + bl MOD08_022181A8 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F412: + add r0, r4, #0 + add r0, #0xcc + bl MOD08_02218224 + cmp r0, #1 + bne _0221F458 + mov r2, #0xcc + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xc + bl FUN_02007558 + mov r2, #0xce + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #0xd + bl FUN_02007558 + mov r0, #0x20 + add r2, r4, #0 + add r2, #0xe0 + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x24] + ldr r2, [r2] + bl MOD08_0221828C + mov r2, #0x20 + add r3, r0, #0 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x1c] + mov r1, #1 + add r2, r2, r3 + bl FUN_02007558 + b _0221F74A +_0221F458: + ldrb r0, [r4, #0xc] + cmp r0, #3 + ldrb r0, [r4] + blo _0221F466 + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F466: + sub r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F46C: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #0xf + blo _0221F54A + mov r0, #0 + strb r0, [r4, #1] + strb r0, [r4, #0xc] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F486: + add r1, sp, #0x2c + ldr r0, [r4, #0x30] + add r1, #2 + add r2, sp, #0x2c + bl FUN_0200C7A0 + add r1, sp, #0x14 + mov r0, #0x18 + ldrsh r0, [r1, r0] + cmp r0, #0x68 + bgt _0221F4B2 + ldr r0, [r4, #0x30] + mov r1, #0 + mov r2, #2 + bl FUN_0200C82C + ldr r0, [r4, #0x7c] + mov r1, #0 + mov r2, #2 + bl FUN_0200C82C + b _0221F74A +_0221F4B2: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F4BA: + add r1, sp, #0x28 + ldr r0, [r4, #0x30] + add r1, #2 + add r2, sp, #0x28 + bl FUN_0200C7A0 + add r1, sp, #0x14 + mov r0, #0x14 + ldrsh r0, [r1, r0] + cmp r0, #0x68 + bgt _0221F4E6 + ldr r0, [r4, #0x30] + mov r1, #0 + mov r2, #2 + bl FUN_0200C82C + ldr r0, [r4, #0x7c] + mov r1, #0 + mov r2, #2 + bl FUN_0200C82C + b _0221F4F2 +_0221F4E6: + ldr r0, _0221F708 ; =0x04000052 + mov r1, #0x10 + strh r1, [r0] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221F4F2: + ldrb r0, [r4, #1] + mov r1, #0x10 + add r2, r1, #0 + add r0, r0, #1 + strb r0, [r4, #1] + add r0, r4, #4 + bl MOD08_02218A58 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + add r0, #8 + sub r2, #0x10 + bl MOD08_02218A58 + ldr r0, [r4, #8] + ldr r1, [r4, #4] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221F708 ; =0x04000052 + strh r1, [r0] + ldrb r0, [r4, #1] + cmp r0, #0xa + bne _0221F52C + ldr r0, [r4, #0x30] + mov r1, #0 + mov r2, #0x10 + bl FUN_0200C82C +_0221F52C: + ldrb r0, [r4, #1] + cmp r0, #0xc + bne _0221F54A + ldr r0, [r4, #0x7c] + mov r1, #0 + mov r2, #0x10 + bl FUN_0200C82C + b _0221F74A +_0221F53E: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #0xf + bhs _0221F54C +_0221F54A: + b _0221F74A +_0221F54C: + mov r0, #0 + strb r0, [r4, #1] + add r1, sp, #0x24 + ldr r0, [r4, #0x30] + add r1, #2 + add r2, sp, #0x24 + bl FUN_0200C7A0 + add r1, sp, #0x20 + ldr r0, [r4, #0x7c] + add r1, #2 + add r2, sp, #0x20 + bl FUN_0200C7A0 + add r0, r4, #0 + add r0, #0xc8 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + str r0, [sp, #4] + add r3, sp, #0x14 + mov r0, #0x12 + mov r1, #0x10 + mov r2, #0xe + mov r5, #0xc + ldrsh r0, [r3, r0] + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldrsh r3, [r3, r5] + bl MOD08_022189D8 + add r0, r4, #0 + add r0, #0x2c + str r0, [sp] + mov r3, #0xca + add r2, sp, #0x14 + mov r0, #0x12 + mov r1, #0x10 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + mov r2, #0xc8 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + bl MOD08_022189F4 + add r0, r4, #0 + add r0, #0x28 + str r0, [sp] + mov r3, #0xca + add r2, sp, #0x14 + mov r0, #0x12 + mov r1, #0x10 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + mov r2, #0xc8 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + bl MOD08_02218A1C + mov r0, #0xa + lsl r0, r0, #0xe + str r0, [r4, #0x2c] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F5D0: + ldr r3, _0221F70C ; =0x0222C545 + add r2, sp, #0x30 + mov r1, #0xa +_0221F5D6: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0221F5D6 + add r1, sp, #0x1c + ldr r0, [r4, #0x30] + add r1, #2 + add r2, sp, #0x1c + bl FUN_0200C7A0 + add r1, sp, #0x18 + ldr r0, [r4, #0x7c] + add r1, #2 + add r2, sp, #0x18 + bl FUN_0200C7A0 + add r3, sp, #0x14 + mov r0, #8 + ldrsh r0, [r3, r0] + mov r2, #0xa + str r0, [sp] + mov r0, #4 + ldrsh r0, [r3, r0] + str r0, [sp, #4] + str r2, [sp, #8] + ldrb r1, [r4, #0xc] + ldr r0, [r4, #0x2c] + lsl r5, r1, #1 + add r1, sp, #0x30 + ldrsb r1, [r1, r5] + mov r5, #6 + mul r1, r0 + str r1, [sp, #0xc] + ldrsh r2, [r3, r2] + add r0, r4, #0 + add r1, r4, #0 + ldrsh r3, [r3, r5] + add r0, #0x34 + add r1, #0x58 + bl MOD08_02217F50 + add r3, sp, #0x14 + mov r0, #4 + ldrsh r0, [r3, r0] + mov r5, #0xa + str r0, [sp] + mov r0, #8 + ldrsh r0, [r3, r0] + str r0, [sp, #4] + str r5, [sp, #8] + ldrb r1, [r4, #0xc] + ldr r0, [r4, #0x2c] + lsl r2, r1, #1 + add r1, sp, #0x30 + add r1, #1 + ldrsb r1, [r1, r2] + mov r2, #6 + mul r1, r0 + str r1, [sp, #0xc] + ldrsh r2, [r3, r2] + add r0, r4, #0 + add r1, r4, #0 + ldrsh r3, [r3, r5] + add r0, #0x80 + add r1, #0xa4 + bl MOD08_02217F50 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F66E: + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x34 + add r1, #0x58 + mov r5, #0 + bl MOD08_02217FE4 + cmp r0, #0 + bne _0221F686 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0221F686: + add r0, r4, #0 + add r1, r4, #0 + ldr r2, [r4, #0x7c] + add r0, #0x80 + add r1, #0xa4 + bl MOD08_02217FE4 + cmp r0, #0 + bne _0221F69E + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0221F69E: + cmp r5, #2 + bne _0221F74A + ldrb r0, [r4, #0xc] + cmp r0, #5 + ldrb r0, [r4] + bne _0221F6B0 + add r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F6B0: + sub r0, r0, #1 + strb r0, [r4] + b _0221F74A +_0221F6B6: + mov r5, #0 + add r0, r4, #4 + add r1, r5, #0 + sub r2, r5, #2 + bl MOD08_02218A58 + cmp r0, #1 + bne _0221F6C8 + add r5, r5, #1 +_0221F6C8: + add r0, r4, #0 + add r0, #8 + mov r1, #0x10 + mov r2, #2 + bl MOD08_02218A58 + cmp r0, #1 + bne _0221F6DA + add r5, r5, #1 +_0221F6DA: + ldr r0, [r4, #8] + ldr r1, [r4, #4] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221F708 ; =0x04000052 + cmp r5, #2 + strh r1, [r0] + bne _0221F74A + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221F74A + nop +_0221F6F4: .word 0x0222C569 +_0221F6F8: .word 0x0222C56A +_0221F6FC: .word 0x0222C56B +_0221F700: .word 0x0222C568 +_0221F704: .word 0x0222C56C +_0221F708: .word 0x04000052 +_0221F70C: .word 0x0222C545 +_0221F710: + mov r6, #0 + ldr r0, [r4, #0x10] + add r1, r6, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221F738 + add r5, r4, #0 + add r7, r6, #0 +_0221F722: + ldr r0, [r5, #0x30] + bl FUN_0200C3DC + ldr r0, [r4, #0x10] + add r1, r7, #0 + add r5, #0x4c + add r6, r6, #1 + bl MOD08_02212498 + cmp r6, r0 + blt _0221F722 +_0221F738: + ldr r0, [r4, #0x10] + ldr r1, [sp, #0x10] + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} +_0221F74A: + mov r6, #0 + ldr r0, [r4, #0x10] + add r1, r6, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221F7B6 + add r5, r4, #0 + add r7, sp, #0x14 +_0221F75C: + add r1, sp, #0x14 + ldr r0, [r5, #0x30] + add r1, #2 + add r2, sp, #0x14 + bl FUN_0200C7A0 + mov r0, #0 + ldrsh r0, [r7, r0] + cmp r0, #0x50 + bge _0221F780 + ldr r0, [r4, #0x10] + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r5, #0x30] + bl FUN_0200C6B0 + b _0221F7A6 +_0221F780: + mov r0, #2 + ldrsh r0, [r7, r0] + cmp r0, #0x80 + ldr r0, [r4, #0x10] + ble _0221F798 + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r5, #0x30] + bl FUN_0200C6B0 + b _0221F7A6 +_0221F798: + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r5, #0x30] + add r1, r1, #1 + bl FUN_0200C6B0 +_0221F7A6: + ldr r0, [r4, #0x10] + mov r1, #0 + add r5, #0x4c + add r6, r6, #1 + bl MOD08_02212498 + cmp r6, r0 + blt _0221F75C +_0221F7B6: + ldrb r0, [r4] + cmp r0, #4 + blo _0221F7EA + mov r5, #0 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221F7E4 + add r6, r4, #0 + add r7, r5, #0 +_0221F7CE: + ldr r0, [r6, #0x30] + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + add r1, r7, #0 + add r6, #0x4c + add r5, r5, #1 + bl MOD08_02212498 + cmp r5, r0 + blt _0221F7CE +_0221F7E4: + ldr r0, [r4, #0x18] + bl FUN_0200BC1C +_0221F7EA: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0221F7F0 +MOD08_0221F7F0: ; 0x0221F7F0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r1, #0 + mov r1, #0xf0 + str r0, [sp] + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r1, #0 + strb r1, [r4] + ldr r0, [sp] + strb r1, [r4, #1] + str r0, [r4, #0x10] + str r6, [r4, #0x18] + str r5, [r4, #0x14] + str r1, [r4, #4] + mov r0, #0x10 + str r0, [r4, #8] + ldr r0, [r4, #0x10] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl MOD08_022154D4 + str r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x20] + ldr r0, [r4, #0x10] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl MOD08_0221552C + str r0, [r4, #0x24] + ldr r0, [sp] + mov r1, #2 + bl MOD08_022155C4 + add r5, r0, #0 + ldr r0, [sp] + mov r1, #1 + bl MOD08_022155C4 + mov r2, #1 + add r1, r2, #0 + add r3, r0, #0 + lsl r1, r5 + add r5, r2, #0 + lsl r5, r3 + orr r1, r5 + orr r1, r2 + sub r2, r2, #2 + ldr r0, [r4, #0x10] + add r3, r2, #0 + bl MOD08_022279D0 + ldr r0, [r4, #8] + ldr r1, [r4, #4] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221F92C ; =0x04000052 + strh r1, [r0] + ldr r1, [sp] + add r0, sp, #4 + bl MOD08_02215474 + str r7, [r4, #0x30] + ldr r0, [r4, #0x10] + mov r1, #0 + mov r6, #1 + bl MOD08_02212498 + cmp r0, #1 + ble _0221F8B2 + add r5, r4, #0 + add r5, #0x4c + add r7, sp, #4 +_0221F896: + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r2, r7, #0 + bl FUN_0200C154 + str r0, [r5, #0x30] + ldr r0, [r4, #0x10] + mov r1, #0 + add r5, #0x4c + add r6, r6, #1 + bl MOD08_02212498 + cmp r6, r0 + blt _0221F896 +_0221F8B2: + mov r6, #0 + ldr r0, [r4, #0x10] + add r1, r6, #0 + bl MOD08_02212498 + cmp r0, #0 + ble _0221F8EC + add r5, r4, #0 + mov r7, #1 +_0221F8C4: + ldr r0, [r5, #0x30] + add r1, r7, #0 + bl FUN_0200C90C + ldr r0, [r4, #0x10] + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r5, #0x30] + add r1, r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x10] + mov r1, #0 + add r5, #0x4c + add r6, r6, #1 + bl MOD08_02212498 + cmp r6, r0 + blt _0221F8C4 +_0221F8EC: + ldr r0, [sp] + bl MOD08_02212004 + cmp r0, #1 + ldr r0, [r4, #0x30] + bne _0221F90C + mov r1, #0xa0 + mov r2, #0x2c + bl FUN_0200C714 + ldr r0, [r4, #0x7c] + mov r1, #0x50 + mov r2, #0x1d + bl FUN_0200C714 + b _0221F91E +_0221F90C: + mov r1, #0x64 + mov r2, #0x2c + bl FUN_0200C714 + ldr r0, [r4, #0x7c] + mov r1, #0xb4 + mov r2, #0x1d + bl FUN_0200C714 +_0221F91E: + ldr r0, [r4, #0x10] + ldr r1, _0221F930 ; =MOD08_0221F3AC + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221F92C: .word 0x04000052 +_0221F930: .word MOD08_0221F3AC + + thumb_func_start MOD08_0221F934 +MOD08_0221F934: ; 0x0221F934 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _0221F946 + cmp r0, #1 + beq _0221F9BA + b _0221F9EE +_0221F946: + ldrb r0, [r5, #6] + cmp r0, #0xf + bhs _0221F950 + add r0, r0, #1 + strb r0, [r5, #6] +_0221F950: + ldrb r0, [r5, #7] + cmp r0, #0 + beq _0221F95A + sub r0, r0, #1 + strb r0, [r5, #7] +_0221F95A: + ldrb r0, [r5, #7] + ldrb r1, [r5, #6] + mov r6, #0 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221FA3C ; =0x04000052 + strh r1, [r0] + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + ldrb r0, [r5, #5] + cmp r0, #0 + ble _0221F9AC + ldr r4, _0221FA40 ; =0x0222C5DC + add r7, r5, #0 +_0221F978: + add r1, sp, #0 + ldr r0, [r7, #0x14] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + ldrb r1, [r5, #4] + ldrb r0, [r4] + cmp r1, r0 + blo _0221F9A0 + add r0, r5, r6 + ldrb r1, [r0, #1] + add r1, r1, #1 + strb r1, [r0, #1] + ldrb r2, [r0, #1] + ldrb r1, [r4, #1] + cmp r2, r1 + blo _0221F9A0 + mov r1, #0 + strb r1, [r0, #1] +_0221F9A0: + ldrb r0, [r5, #5] + add r6, r6, #1 + add r7, r7, #4 + add r4, r4, #2 + cmp r6, r0 + blt _0221F978 +_0221F9AC: + ldrb r0, [r5, #4] + cmp r0, #0x2d + blo _0221FA18 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _0221FA18 +_0221F9BA: + ldrb r0, [r5, #6] + cmp r0, #0 + beq _0221F9C4 + sub r0, r0, #1 + strb r0, [r5, #6] +_0221F9C4: + ldrb r0, [r5, #7] + cmp r0, #0xf + bhs _0221F9CE + add r0, r0, #1 + strb r0, [r5, #7] +_0221F9CE: + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0221F9E0 + ldrb r0, [r5, #7] + cmp r0, #0xf + bne _0221F9E0 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_0221F9E0: + ldrb r0, [r5, #7] + ldrb r1, [r5, #6] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221FA3C ; =0x04000052 + strh r1, [r0] + b _0221FA18 +_0221F9EE: + ldrb r0, [r5, #5] + mov r6, #0 + cmp r0, #0 + ble _0221FA08 + add r4, r5, #0 +_0221F9F8: + ldr r0, [r4, #0x14] + bl FUN_0200C3DC + ldrb r0, [r5, #5] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r0 + blt _0221F9F8 +_0221FA08: + ldr r0, [r5, #8] + add r1, r7, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_0221FA18: + ldrb r0, [r5, #5] + mov r6, #0 + cmp r0, #0 + ble _0221FA34 + add r4, r5, #0 +_0221FA22: + ldr r0, [r4, #0x14] + ldr r0, [r0] + bl FUN_0200C59C + ldrb r0, [r5, #5] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r0 + blt _0221FA22 +_0221FA34: + ldr r0, [r5, #0x10] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221FA3C: .word 0x04000052 +_0221FA40: .word 0x0222C5DC + + thumb_func_start MOD08_0221FA44 +MOD08_0221FA44: ; 0x0221FA44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl MOD08_02212014 + mov r1, #0x44 + bl FUN_02016998 + add r4, r0, #0 + bne _0221FA62 + bl ErrorHandling +_0221FA62: + mov r0, #0 + strb r0, [r4, #4] + strb r0, [r4] + str r5, [r4, #0xc] + str r6, [r4, #0x10] + add r0, sp, #4 + add r1, r7, #0 + str r7, [r4, #8] + bl MOD08_02215474 + mov r1, #0 + mvn r1, r1 + ldr r0, [r4, #8] + add r2, r1, #0 + bl MOD08_02227994 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_02212498 + strb r0, [r4, #5] + mov r0, #0 + strb r0, [r4, #6] + mov r0, #0xf + strb r0, [r4, #7] + ldrb r0, [r4, #7] + ldrb r1, [r4, #6] + mov r6, #1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221FBA8 ; =0x04000052 + strh r1, [r0] + ldr r0, [sp] + str r0, [r4, #0x14] + ldrb r0, [r4, #5] + cmp r0, #1 + ble _0221FAC4 + add r5, r4, #4 +_0221FAAE: + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r2, sp, #4 + bl FUN_0200C154 + str r0, [r5, #0x14] + ldrb r0, [r4, #5] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0221FAAE +_0221FAC4: + add r0, r7, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r7, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _0221FB18 + add r0, r7, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r7, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _0221FB04 + add r0, r7, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r7, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _0221FB04 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200C5C0 + b _0221FB0C +_0221FB04: + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C5C0 +_0221FB0C: + ldr r0, [r4, #0x14] + mov r1, #0x80 + mov r2, #0x50 + bl FUN_0200C714 + b _0221FB58 +_0221FB18: + add r0, r7, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r7, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _0221FB46 + add r0, r7, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r7, #0 + bl MOD08_02227470 + cmp r0, #4 + bne _0221FB46 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C5C0 + b _0221FB4E +_0221FB46: + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200C5C0 +_0221FB4E: + ldr r0, [r4, #0x14] + mov r1, #0x80 + mov r2, #0x50 + bl FUN_0200C714 +_0221FB58: + ldrb r0, [r4, #5] + mov r6, #0 + cmp r0, #0 + ble _0221FB98 + add r5, r4, #0 +_0221FB62: + add r1, r4, r6 + mov r0, #0 + strb r0, [r1, #1] + ldr r0, [r5, #0x14] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #8] + bl MOD08_02212004 + cmp r0, #1 + bne _0221FB8E + mov r2, #0xfe + ldr r0, [r5, #0x14] + ldr r1, _0221FBAC ; =0xBF800000 + lsl r2, r2, #0x16 + bl FUN_0200C884 +_0221FB8E: + ldrb r0, [r4, #5] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0221FB62 +_0221FB98: + ldr r1, _0221FBB0 ; =MOD08_0221F934 + ldr r3, _0221FBB4 ; =0x0000044C + add r0, r7, #0 + add r2, r4, #0 + bl MOD08_022123E4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221FBA8: .word 0x04000052 +_0221FBAC: .word 0xBF800000 +_0221FBB0: .word MOD08_0221F934 +_0221FBB4: .word 0x0000044C + + thumb_func_start MOD08_0221FBB8 +MOD08_0221FBB8: ; 0x0221FBB8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r7, r0, #0 + ldrb r0, [r4] + mov r6, #0 + cmp r0, #3 + bls _0221FBCA + b _0221FD70 +_0221FBCA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221FBD6: ; jump table + .short _0221FBDE - _0221FBD6 - 2 ; case 0 + .short _0221FC12 - _0221FBD6 - 2 ; case 1 + .short _0221FCEA - _0221FBD6 - 2 ; case 2 + .short _0221FD36 - _0221FBD6 - 2 ; case 3 +_0221FBDE: + ldrb r0, [r4, #9] + cmp r0, #0xf + bhs _0221FBE8 + add r0, r0, #1 + strb r0, [r4, #9] +_0221FBE8: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0221FBF2 + sub r0, r0, #1 + strb r0, [r4, #0xa] +_0221FBF2: + ldrb r0, [r4, #9] + cmp r0, #0xf + bne _0221FC04 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0221FC04 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221FC04: + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #9] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221FDCC ; =0x04000052 + strh r1, [r0] + b _0221FD9C +_0221FC12: + ldr r0, [r4, #0x30] + cmp r0, #3 + bhi _0221FC78 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221FC24: ; jump table + .short _0221FC2C - _0221FC24 - 2 ; case 0 + .short _0221FC46 - _0221FC24 - 2 ; case 1 + .short _0221FC60 - _0221FC24 - 2 ; case 2 + .short _0221FC60 - _0221FC24 - 2 ; case 3 +_0221FC2C: + ldr r0, [r4, #0x18] + mov r1, #1 + str r0, [r4, #0x34] + ldr r0, [r4, #0x24] + str r0, [r4, #0x38] + ldr r0, [r4, #0x34] + bl FUN_0200C644 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_0200C644 + b _0221FC78 +_0221FC46: + ldr r0, [r4, #0x1c] + mov r1, #1 + str r0, [r4, #0x34] + ldr r0, [r4, #0x20] + str r0, [r4, #0x38] + ldr r0, [r4, #0x34] + bl FUN_0200C644 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_0200C644 + b _0221FC78 +_0221FC60: + ldr r0, [r4, #0x28] + mov r1, #1 + str r0, [r4, #0x34] + ldr r0, [r4, #0x2c] + str r0, [r4, #0x38] + ldr r0, [r4, #0x34] + bl FUN_0200C644 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_0200C644 +_0221FC78: + add r1, sp, #8 + ldr r0, [r4, #0x34] + add r1, #2 + add r2, sp, #8 + bl FUN_0200C7A0 + ldr r1, [r4, #0x30] + ldr r0, _0221FDD0 ; =0x0222C614 + lsl r2, r1, #3 + ldrsh r0, [r0, r2] + ldr r5, _0221FDD4 ; =0x0222C612 + add r3, sp, #8 + str r0, [sp] + ldr r0, _0221FDD8 ; =0x0222C5D8 + ldrsh r2, [r5, r2] + ldrb r0, [r0, r1] + mov r1, #2 + mov r5, #0 + str r0, [sp, #4] + ldrsh r1, [r3, r1] + add r0, r4, #0 + ldrsh r3, [r3, r5] + add r0, #0x3c + bl MOD08_02217E80 + add r1, sp, #8 + ldr r0, [r4, #0x38] + add r1, #2 + add r2, sp, #8 + bl FUN_0200C7A0 + ldr r1, [r4, #0x30] + ldr r0, _0221FDDC ; =0x0222C618 + lsl r2, r1, #3 + ldrsh r0, [r0, r2] + ldr r5, _0221FDE0 ; =0x0222C616 + add r3, sp, #8 + str r0, [sp] + ldr r0, _0221FDD8 ; =0x0222C5D8 + ldrsh r2, [r5, r2] + ldrb r0, [r0, r1] + mov r1, #2 + mov r5, #0 + str r0, [sp, #4] + ldrsh r1, [r3, r1] + add r0, r4, #0 + ldrsh r3, [r3, r5] + add r0, #0x60 + bl MOD08_02217E80 + ldr r0, [r4, #0x30] + add r0, r0, #1 + str r0, [r4, #0x30] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221FD9C +_0221FCEA: + add r0, r4, #0 + ldr r1, [r4, #0x34] + add r0, #0x3c + add r5, r6, #0 + bl MOD08_02217F08 + cmp r0, #0 + bne _0221FCFC + add r5, r5, #1 +_0221FCFC: + add r0, r4, #0 + ldr r1, [r4, #0x38] + add r0, #0x60 + bl MOD08_02217F08 + cmp r0, #0 + bne _0221FD0C + add r5, r5, #1 +_0221FD0C: + cmp r5, #2 + blt _0221FD9C + ldr r0, [r4, #0x30] + cmp r0, #3 + bgt _0221FD2E + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_0200C644 + ldrb r0, [r4] + sub r0, r0, #1 + strb r0, [r4] + b _0221FD9C +_0221FD2E: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0221FD9C +_0221FD36: + ldrb r0, [r4, #9] + cmp r0, #0 + beq _0221FD40 + sub r0, r0, #1 + strb r0, [r4, #9] +_0221FD40: + ldrb r0, [r4, #0xa] + cmp r0, #0xf + bhs _0221FD4A + add r0, r0, #1 + strb r0, [r4, #0xa] +_0221FD4A: + ldrb r1, [r4, #0xa] + cmp r1, #7 + blo _0221FD52 + mov r6, #1 +_0221FD52: + ldrb r0, [r4, #9] + cmp r0, #0 + bne _0221FD62 + cmp r1, #0xf + bne _0221FD62 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_0221FD62: + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #9] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0221FDCC ; =0x04000052 + strh r1, [r0] + b _0221FD9C +_0221FD70: + ldrb r0, [r4, #8] + mov r6, #0 + cmp r0, #0 + ble _0221FD8A + add r5, r4, #0 +_0221FD7A: + ldr r0, [r5, #0x18] + bl FUN_0200C3DC + ldrb r0, [r4, #8] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0221FD7A +_0221FD8A: + ldr r0, [r4, #0xc] + add r1, r7, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0221FD9C: + ldrb r0, [r4] + cmp r0, #3 + bhs _0221FDC2 + cmp r6, #0 + bne _0221FDC2 + ldrb r0, [r4, #8] + mov r6, #0 + cmp r0, #0 + ble _0221FDC2 + add r5, r4, #0 +_0221FDB0: + ldr r0, [r5, #0x18] + ldr r0, [r0] + bl FUN_0200C59C + ldrb r0, [r4, #8] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0221FDB0 +_0221FDC2: + ldr r0, [r4, #0x14] + bl FUN_0200BC1C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221FDCC: .word 0x04000052 +_0221FDD0: .word 0x0222C614 +_0221FDD4: .word 0x0222C612 +_0221FDD8: .word 0x0222C5D8 +_0221FDDC: .word 0x0222C618 +_0221FDE0: .word 0x0222C616 + + thumb_func_start MOD08_0221FDE4 +MOD08_0221FDE4: ; 0x0221FDE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_02212014 + mov r1, #0x84 + bl FUN_02016998 + add r4, r0, #0 + bne _0221FE02 + bl ErrorHandling +_0221FE02: + mov r0, #0 + strb r0, [r4, #7] + strb r0, [r4] + str r5, [r4, #0x10] + str r6, [r4, #0x14] + str r0, [r4, #0x30] + ldr r0, [sp] + ldr r1, [sp] + str r0, [r4, #0xc] + add r0, sp, #4 + bl MOD08_02215474 + mov r1, #0 + mvn r1, r1 + ldr r0, [r4, #0xc] + add r2, r1, #0 + bl MOD08_02227994 + mov r1, #0 + strb r1, [r4, #9] + mov r0, #0xf + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + ldrb r2, [r4, #9] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _0221FF0C ; =0x04000052 + strh r2, [r0] + ldr r0, [r4, #0xc] + bl MOD08_02212498 + strb r0, [r4, #8] + str r7, [r4, #0x18] + ldrb r0, [r4, #8] + mov r6, #1 + cmp r0, #1 + ble _0221FE66 + add r5, r4, #4 + add r7, sp, #4 +_0221FE50: + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + add r2, r7, #0 + bl FUN_0200C154 + str r0, [r5, #0x18] + ldrb r0, [r4, #8] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0221FE50 +_0221FE66: + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r4, #0x20] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_0200C5C0 + ldr r0, [r4, #0x2c] + mov r1, #3 + bl FUN_0200C5C0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_0200C8D0 + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200C8D0 + ldrb r0, [r4, #8] + mov r7, #0 + cmp r0, #0 + ble _0221FEDC + ldr r6, _0221FF10 ; =0x0222C5FA + add r5, r4, #0 +_0221FEB2: + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C5E0 + mov r1, #0 + mov r2, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + ldr r0, [r5, #0x18] + bl FUN_0200C714 + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C90C + ldrb r0, [r4, #8] + add r7, r7, #1 + add r5, r5, #4 + add r6, r6, #4 + cmp r7, r0 + blt _0221FEB2 +_0221FEDC: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x20] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x2c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [sp] + ldr r1, _0221FF14 ; =MOD08_0221FBB8 + ldr r3, _0221FF18 ; =0x0000044C + add r2, r4, #0 + bl MOD08_022123E4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221FF0C: .word 0x04000052 +_0221FF10: .word 0x0222C5FA +_0221FF14: .word MOD08_0221FBB8 +_0221FF18: .word 0x0000044C + + thumb_func_start MOD08_0221FF1C +MOD08_0221FF1C: ; 0x0221FF1C + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #7 + bls _0221FF2C + b _02220084 +_0221FF2C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221FF38: ; jump table + .short _0221FF48 - _0221FF38 - 2 ; case 0 + .short _0221FF5C - _0221FF38 - 2 ; case 1 + .short _0221FF7E - _0221FF38 - 2 ; case 2 + .short _0221FFAC - _0221FF38 - 2 ; case 3 + .short _0221FFDA - _0221FF38 - 2 ; case 4 + .short _0221FFF8 - _0221FF38 - 2 ; case 5 + .short _02220020 - _0221FF38 - 2 ; case 6 + .short _02220068 - _0221FF38 - 2 ; case 7 +_0221FF48: + ldrb r0, [r4, #0xe] + sub r0, r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #0xa + bhi _0221FF68 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_0221FF5C: + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xd] + cmp r0, #3 + bhs _0221FF6A +_0221FF68: + b _02220092 +_0221FF6A: + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_0221FF7E: + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xd] + cmp r0, #3 + bhi _0221FFA0 + ldr r0, [r4, #0x38] + ldr r1, _0222009C ; =0x3DCCCCCD + bl _fadd + str r0, [r4, #0x38] + ldr r1, [r4, #0x38] + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl FUN_0200C884 + b _02220092 +_0221FFA0: + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_0221FFAC: + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xd] + cmp r0, #3 + bhi _0221FFCE + ldr r0, [r4, #0x38] + ldr r1, _0222009C ; =0x3DCCCCCD + bl _fsub + str r0, [r4, #0x38] + ldr r1, [r4, #0x38] + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl FUN_0200C884 + b _02220092 +_0221FFCE: + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_0221FFDA: + ldrb r0, [r4, #0xe] + sub r0, r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #0xa + bhi _02220092 + ldr r0, [r4, #0x3c] + mov r1, #1 + str r1, [r0] + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_0221FFF8: + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xd] + cmp r0, #0x1e + bls _02220010 + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_02220010: + ldr r0, [r4, #0x3c] + ldr r0, [r0] + cmp r0, #2 + bne _02220092 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_02220020: + bl FUN_0201B9EC + mov r1, #0xa + bl _s32_div_f + add r5, r1, #0 + add r2, sp, #8 + ldr r0, [r4, #0x10] + add r1, sp, #8 + add r2, #2 + add r5, #0xa + bl FUN_0200C7A0 + ldrb r0, [r4, #0xf] + add r3, sp, #8 + mov r1, #0 + lsl r2, r0, #2 + ldr r0, _022200A0 ; =0x0222C5E4 + ldrsh r0, [r0, r2] + str r0, [sp] + lsl r0, r5, #0x10 + ldr r5, _022200A4 ; =0x0222C5E2 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldrsh r2, [r5, r2] + add r0, r4, #0 + mov r5, #2 + ldrsh r1, [r3, r1] + ldrsh r3, [r3, r5] + add r0, #0x14 + bl MOD08_02217E80 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + b _02220092 +_02220068: + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl MOD08_02217F08 + cmp r0, #0 + bne _02220092 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200C644 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02220084: + ldr r0, [r4, #0x3c] + mov r1, #3 + str r1, [r0] + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_02220092: + ldr r0, [r4, #0x10] + bl FUN_0200C5A8 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222009C: .word 0x3DCCCCCD +_022200A0: .word 0x0222C5E4 +_022200A4: .word 0x0222C5E2 + + thumb_func_start MOD08_022200A8 +MOD08_022200A8: ; 0x022200A8 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhi _02220164 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022200C0: ; jump table + .short _022200C8 - _022200C0 - 2 ; case 0 + .short _022200F4 - _022200C0 - 2 ; case 1 + .short _02220116 - _022200C0 - 2 ; case 2 + .short _02220142 - _022200C0 - 2 ; case 3 +_022200C8: + ldrb r6, [r4, #2] + mov r3, #1 + mov r2, #0 + cmp r6, #0 + ble _022200E8 + ldr r0, _0222017C ; =0x00000514 + add r5, r4, #0 +_022200D6: + ldr r1, [r5, r0] + cmp r1, #1 + beq _022200E0 + mov r3, #0 + b _022200E8 +_022200E0: + add r2, r2, #1 + add r5, r5, #4 + cmp r2, r6 + blt _022200D6 +_022200E8: + cmp r3, #1 + bne _02220174 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _02220174 +_022200F4: + ldrb r0, [r4, #2] + mov r5, #0 + cmp r0, #0 + ble _0222010E + ldr r0, _0222017C ; =0x00000514 + add r3, r4, #0 + mov r2, #2 +_02220102: + str r2, [r3, r0] + ldrb r1, [r4, #2] + add r5, r5, #1 + add r3, r3, #4 + cmp r5, r1 + blt _02220102 +_0222010E: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _02220174 +_02220116: + ldrb r5, [r4, #2] + mov r2, #1 + mov r6, #0 + cmp r5, #0 + ble _02220136 + ldr r0, _0222017C ; =0x00000514 + add r3, r4, #0 +_02220124: + ldr r1, [r3, r0] + cmp r1, #3 + beq _0222012E + mov r2, #0 + b _02220136 +_0222012E: + add r6, r6, #1 + add r3, r3, #4 + cmp r6, r5 + blt _02220124 +_02220136: + cmp r2, #1 + bne _02220174 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _02220174 +_02220142: + ldrb r0, [r4, #2] + mov r6, #0 + cmp r0, #0 + ble _0222015C + add r5, r4, #0 +_0222014C: + ldr r0, [r5, #0x24] + bl FUN_0200C3DC + ldrb r0, [r4, #2] + add r6, r6, #1 + add r5, #0x40 + cmp r6, r0 + blt _0222014C +_0222015C: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _02220174 +_02220164: + ldr r0, [r4, #8] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_02220174: + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + pop {r4, r5, r6, pc} + .align 2, 0 +_0222017C: .word 0x00000514 + + thumb_func_start MOD08_02220180 +MOD08_02220180: ; 0x02220180 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD08_02212014 + ldr r1, _022202E8 ; =0x00000564 + bl FUN_02016998 + add r4, r0, #0 + bne _0222019E + bl ErrorHandling +_0222019E: + mov r0, #0 + strb r0, [r4, #1] + strb r0, [r4] + str r5, [r4, #0xc] + ldr r0, [sp] + str r6, [r4, #0x10] + str r0, [r4, #8] + ldr r1, [sp] + add r0, sp, #0x1c + bl MOD08_02215474 + mov r1, #0 + mvn r1, r1 + ldr r0, [r4, #8] + add r2, r1, #0 + bl MOD08_02227994 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_02212498 + strb r0, [r4, #2] + mov r0, #0xc + strb r0, [r4, #2] + mov r0, #0 + str r7, [r4, #0x24] + str r0, [sp, #4] + str r0, [sp, #0x14] + ldrb r0, [r4, #2] + cmp r0, #0 + ble _022202D8 + ldr r0, _022202EC ; =0x00000514 + add r5, r4, #0 + add r0, r4, r0 + str r0, [sp, #0xc] + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0x14 + str r0, [sp, #8] +_022201EC: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _022201FE + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r2, sp, #0x1c + bl FUN_0200C154 + str r0, [r5, #0x24] +_022201FE: + add r1, r5, #0 + ldr r6, [r5, #0x24] + add r1, #0x20 + mov r0, #0 + strb r0, [r1] + add r1, r5, #0 + add r1, #0x21 + strb r0, [r1] + bl FUN_0201B9EC + mov r1, #0xa + bl _s32_div_f + ldr r0, [sp, #0x14] + add r1, #0xa + add r1, r0, r1 + add r0, r5, #0 + add r0, #0x22 + strb r1, [r0] + bl FUN_0201B9EC + mov r1, #6 + bl _s32_div_f + add r0, r5, #0 + add r0, #0x23 + strb r1, [r0] + mov r0, #0xfe + lsl r0, r0, #0x16 + str r0, [r5, #0x4c] + ldr r0, [r4, #8] + ldr r1, _022202F0 ; =0x0222C632 + str r0, [r5, #0x14] + ldr r0, [r4, #0xc] + str r0, [r5, #0x18] + ldr r0, [r4, #0x10] + str r0, [r5, #0x1c] + ldr r0, [sp, #0xc] + str r0, [r5, #0x50] + ldr r0, [sp, #4] + lsl r0, r0, #3 + str r0, [sp, #0x18] + add r7, r1, r0 + bl FUN_0201B9EC + mov r1, #6 + ldrsh r1, [r7, r1] + bl _s32_div_f + mov r0, #2 + ldrsh r0, [r7, r0] + add r0, r0, r1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x10] + bl FUN_0201B9EC + mov r1, #4 + ldrsh r1, [r7, r1] + bl _s32_div_f + ldr r2, _022202F0 ; =0x0222C632 + ldr r0, [sp, #0x18] + ldrsh r0, [r2, r0] + add r0, r0, r1 + lsl r0, r0, #0x10 + asr r2, r0, #0x10 + ldr r1, [sp, #0x10] + add r0, r6, #0 + bl FUN_0200C714 + add r0, r6, #0 + mov r1, #2 + bl FUN_0200C840 + ldr r1, [r5, #0x4c] + add r0, r6, #0 + add r2, r1, #0 + bl FUN_0200C884 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200C644 + ldr r0, [sp] + ldr r1, _022202F4 ; =MOD08_0221FF1C + ldr r2, [sp, #8] + ldr r3, _022202F8 ; =0x0000044B + bl MOD08_022123E4 + ldr r0, [sp, #4] + mov r1, #6 + add r0, r0, #1 + bl _s32_div_f + ldr r0, [sp, #0xc] + str r1, [sp, #4] + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + ldrb r1, [r4, #2] + add r0, #0x40 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r5, #0x40 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r1 + blt _022201EC +_022202D8: + ldr r0, [sp] + ldr r1, _022202FC ; =MOD08_022200A8 + ldr r3, _02220300 ; =0x0000044D + add r2, r4, #0 + bl MOD08_022123E4 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022202E8: .word 0x00000564 +_022202EC: .word 0x00000514 +_022202F0: .word 0x0222C632 +_022202F4: .word MOD08_0221FF1C +_022202F8: .word 0x0000044B +_022202FC: .word MOD08_022200A8 +_02220300: .word 0x0000044D + + thumb_func_start MOD08_02220304 +MOD08_02220304: ; 0x02220304 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #4] + cmp r0, #3 + bhi _022203EA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222031E: ; jump table + .short _02220326 - _0222031E - 2 ; case 0 + .short _02220344 - _0222031E - 2 ; case 1 + .short _02220396 - _0222031E - 2 ; case 2 + .short _022203C0 - _0222031E - 2 ; case 3 +_02220326: + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] + b _02220410 +_02220344: + add r0, r4, #0 + add r0, #0x2c + bl MOD08_02218704 + cmp r0, #0 + beq _02220410 + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #8] + mov r1, #1 + bl MOD08_022155C4 + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl MOD08_02218998 + add r6, r0, #0 + ldr r0, [r4, #8] + bl MOD08_02212014 + mov r1, #0xc8 + str r1, [sp] + mov r3, #3 + str r5, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + str r6, [sp, #0xc] + str r0, [sp, #0x10] + add r0, r1, #0 + mov r1, #0xa0 + add r2, r1, #0 + add r2, #0xcc + lsl r3, r3, #0xe + bl MOD08_022188DC + str r0, [r4, #0x28] + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] + b _02220410 +_02220396: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + cmp r0, #0x78 + blt _02220410 + ldr r0, [r4, #0x28] + bl MOD08_0221894C + mov r1, #2 + mov r2, #0x10 + str r1, [sp] + add r0, r4, #0 + str r2, [sp, #4] + add r0, #0x2c + add r3, r2, #0 + bl MOD08_022186D4 + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] + b _02220410 +_022203C0: + add r0, r4, #0 + add r0, #0x2c + bl MOD08_02218704 + cmp r0, #0 + beq _02220410 + ldr r0, [r4, #8] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MOD08_022154D4 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] + b _02220410 +_022203EA: + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02220428 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + ldr r0, [r4, #8] + mov r1, #2 + bl MOD08_02214850 + ldr r0, [r4, #8] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_02220410: + ldr r0, [r4, #0x24] + bl FUN_0200C5A8 + ldr r0, [r4, #0x20] + bl FUN_0200C5A8 + ldr r0, [r4, #0x10] + bl FUN_0200BC1C + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02220428: .word 0xFFFF1FFF + + thumb_func_start MOD08_0222042C +MOD08_0222042C: ; 0x0222042C + push {r3, r4, r5, lr} + sub sp, #8 + mov r1, #0x54 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #4 + bl MOD08_02227B70 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_022124D8 + mov r1, #2 + str r0, [r4, #0x20] + bl FUN_0200C90C + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _022204C0 ; =0xFFFF1FFF + and r2, r1 + lsr r1, r0, #0xb + orr r1, r2 + str r1, [r0] + add r0, #0x4a + ldrh r2, [r0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1b + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _022204C4 ; =0xFFFFC0FF + and r2, r1 + mov r1, #0x17 + lsl r1, r1, #8 + orr r1, r2 + strh r1, [r0] + ldr r0, [r4, #8] + mov r1, #1 + bl MOD08_022124D8 + mov r1, #1 + str r0, [r4, #0x24] + bl FUN_0200C90C + mov r1, #0x10 + str r1, [sp] + add r0, r4, #0 + mov r2, #2 + str r1, [sp, #4] + add r0, #0x2c + add r3, r2, #0 + bl MOD08_022186D4 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD08_0221477C + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + ldr r0, [r4, #8] + ldr r1, _022204C8 ; =MOD08_02220304 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_022204C0: .word 0xFFFF1FFF +_022204C4: .word 0xFFFFC0FF +_022204C8: .word MOD08_02220304 + + thumb_func_start MOD08_022204CC +MOD08_022204CC: ; 0x022204CC + push {r4, lr} + add r4, r0, #0 + bl FUN_0200C658 + cmp r0, #1 + bne _022204DE + add r0, r4, #0 + bl FUN_0200C5A8 +_022204DE: + pop {r4, pc} + + thumb_func_start MOD08_022204E0 +MOD08_022204E0: ; 0x022204E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp, #4] + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0x1c + ldrsh r0, [r0, r1] + cmp r0, #0 + bgt _02220504 + ldr r0, [sp, #4] + ldr r0, [r0, #0x30] + bl MOD08_022204CC + ldr r0, [sp, #4] + ldr r0, [r0, #0x34] + bl MOD08_022204CC + b _0222050A +_02220504: + sub r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0, #0x1c] +_0222050A: + ldr r0, [sp, #4] + ldr r0, [r0, #0x28] + bl MOD08_022204CC + ldr r0, [sp, #4] + ldr r0, [r0, #0x2c] + bl MOD08_022204CC + ldr r4, [sp, #4] + mov r6, #0 + add r7, r6, #0 + add r5, r4, #0 +_02220522: + mov r0, #0x1e + ldrsh r0, [r4, r0] + add r0, r0, #1 + strh r0, [r4, #0x1e] + mov r0, #0x1e + ldrsh r0, [r4, r0] + cmp r0, #0x28 + blt _0222053C + ldr r0, [r5, #0x28] + mov r1, #0 + bl FUN_0200C644 + add r6, r6, #1 +_0222053C: + add r7, r7, #1 + add r4, r4, #2 + add r5, r5, #4 + cmp r7, #4 + blt _02220522 + cmp r6, #4 + bne _02220570 + ldr r4, [sp, #4] + mov r5, #0 +_0222054E: + ldr r0, [r4, #0x28] + bl FUN_0200C3DC + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #4 + blt _0222054E + ldr r0, [sp, #4] + ldr r1, [sp] + ldr r0, [r0, #4] + bl MOD08_02212438 + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02220570: + ldr r0, [sp, #4] + ldr r0, [r0, #0x10] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222057C +MOD08_0222057C: ; 0x0222057C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r1, #0x38 + add r5, r0, #0 + add r4, r3, #0 + bl MOD08_02228064 + add r6, r0, #0 + mov r0, #0xa + strh r0, [r6, #0x1c] + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227B70 + ldr r1, [r6, #4] + add r0, sp, #0 + bl MOD08_02215474 + str r4, [r6, #0x28] + mov r0, #0 + strh r0, [r6, #0x1e] + mov r7, #1 + add r4, r6, #2 + add r5, r6, #4 +_022205AC: + mov r0, #0 + strh r0, [r4, #0x1e] + ldr r0, [r6, #8] + ldr r1, [r6, #0x10] + add r2, sp, #0 + bl FUN_0200C154 + str r0, [r5, #0x28] + add r7, r7, #1 + add r4, r4, #2 + add r5, r5, #4 + cmp r7, #4 + blt _022205AC + ldr r0, [r6, #0x28] + mov r1, #1 + bl FUN_0200C8D0 + ldr r0, [r6, #0x2c] + mov r1, #1 + bl FUN_0200C8D0 + mov r1, #0x1f + ldr r0, [r6, #0x28] + mvn r1, r1 + mov r2, #0 + bl FUN_0200C82C + mov r1, #0x1f + ldr r0, [r6, #0x2c] + mvn r1, r1 + mov r2, #0x20 + bl FUN_0200C82C + ldr r0, [r6, #0x30] + mov r1, #0x20 + mov r2, #0 + bl FUN_0200C82C + mov r1, #0x20 + ldr r0, [r6, #0x34] + add r2, r1, #0 + bl FUN_0200C82C + ldr r0, [r6, #4] + ldr r1, _02220610 ; =MOD08_022204E0 + add r2, r6, #0 + bl MOD08_02212400 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02220610: .word MOD08_022204E0 + + thumb_func_start MOD08_02220614 +MOD08_02220614: ; 0x02220614 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + mov r4, #0 + str r0, [sp, #0x1c] + str r4, [sp, #0x20] + add r6, r5, #0 + add r7, r5, #0 +_02220624: + mov r0, #0x22 + ldrsh r0, [r6, r0] + add r0, r0, #1 + strh r0, [r6, #0x22] + mov r0, #0x22 + ldrsh r0, [r6, r0] + cmp r0, #0x14 + blt _02220676 + ldr r0, [r7, #0x2c] + bl MOD08_022204CC + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x6e + bne _02220676 + mov r1, #0 + mvn r1, r1 + ldr r0, [r5, #4] + add r2, r1, #0 + bl MOD08_02227994 + ldr r0, [r5, #0x2c] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x34] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x38] + mov r1, #1 + bl FUN_0200C90C + mov r0, #0xf + str r0, [r5, #0x54] + mov r0, #0 + str r0, [r5, #0x58] +_02220676: + add r4, r4, #1 + add r6, r6, #2 + add r7, r7, #4 + cmp r4, #4 + blt _02220624 + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x32 + bne _022206BA + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _02220894 ; =0x0000FFFF + str r0, [sp, #0x14] + ldr r0, _02220898 ; =0x000003EA + str r0, [sp, #0x18] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x18] + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl MOD08_02218B20 + str r0, [r5, #0x3c] +_022206BA: + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x3c + bne _022206F4 + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _02220894 ; =0x0000FFFF + str r0, [sp, #0x14] + ldr r0, _02220898 ; =0x000003EA + str r0, [sp, #0x18] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x18] + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl MOD08_02218B20 + str r0, [r5, #0x40] +_022206F4: + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x46 + bne _0222072E + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _02220894 ; =0x0000FFFF + str r0, [sp, #0x14] + ldr r0, _02220898 ; =0x000003EA + str r0, [sp, #0x18] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x18] + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl MOD08_02218B20 + str r0, [r5, #0x44] +_0222072E: + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x50 + bne _02220768 + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _02220894 ; =0x0000FFFF + str r0, [sp, #0x14] + ldr r0, _02220898 ; =0x000003EA + str r0, [sp, #0x18] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x18] + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl MOD08_02218B20 + str r0, [r5, #0x48] +_02220768: + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x5a + bne _022207A2 + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _02220894 ; =0x0000FFFF + str r0, [sp, #0x14] + ldr r0, _02220898 ; =0x000003EA + str r0, [sp, #0x18] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x18] + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl MOD08_02218B20 + str r0, [r5, #0x4c] +_022207A2: + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x64 + bne _022207DC + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _02220894 ; =0x0000FFFF + str r0, [sp, #0x14] + ldr r0, _02220898 ; =0x000003EA + str r0, [sp, #0x18] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x18] + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl MOD08_02218B20 + str r0, [r5, #0x50] +_022207DC: + mov r1, #0x22 + ldrsh r0, [r5, r1] + cmp r0, #0x6e + bne _02220816 + sub r1, #0x23 + ldr r0, [r5, #4] + add r2, r1, #0 + bl MOD08_02227994 + ldr r0, [r5, #0x2c] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x34] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x38] + mov r1, #1 + bl FUN_0200C90C + mov r0, #0xf + str r0, [r5, #0x54] + mov r0, #0 + str r0, [r5, #0x58] +_02220816: + mov r0, #0x22 + ldrsh r0, [r5, r0] + cmp r0, #0x6e + blt _0222084E + ldr r0, [r5, #0x54] + cmp r0, #0 + ble _02220828 + sub r0, r0, #1 + str r0, [r5, #0x54] +_02220828: + ldr r0, [r5, #0x58] + cmp r0, #0xf + bge _02220832 + add r0, r0, #1 + str r0, [r5, #0x58] +_02220832: + ldr r0, [r5, #0x58] + ldr r1, [r5, #0x54] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0222089C ; =0x04000052 + strh r1, [r0] + ldr r0, [r5, #0x54] + cmp r0, #0 + bne _0222084E + ldr r0, [r5, #0x58] + cmp r0, #0xf + bne _0222084E + mov r0, #4 + str r0, [sp, #0x20] +_0222084E: + ldr r0, [sp, #0x20] + cmp r0, #4 + bne _0222088A + mov r6, #0 + add r4, r5, #0 +_02220858: + ldr r0, [r4, #0x2c] + bl FUN_0200C3DC + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02220858 + mov r6, #0 + add r4, r5, #0 +_0222086A: + ldr r0, [r4, #0x3c] + bl MOD08_02218B08 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _0222086A + ldr r0, [r5, #4] + ldr r1, [sp, #0x1c] + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_0222088A: + ldr r0, [r5, #0x10] + bl FUN_0200BC1C + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02220894: .word 0x0000FFFF +_02220898: .word 0x000003EA +_0222089C: .word 0x04000052 + + thumb_func_start MOD08_022208A0 +MOD08_022208A0: ; 0x022208A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + mov r1, #0x5c + str r0, [sp] + add r5, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0xa + strh r0, [r4, #0x20] + ldr r0, [sp] + add r1, r4, #0 + bl MOD08_02227B70 + ldr r1, [r4, #4] + add r0, sp, #0xc + bl MOD08_02215474 + str r5, [r4, #0x2c] + mov r0, #0 + strh r0, [r4, #0x22] + mov r0, #1 + str r0, [sp, #8] + mov r7, #5 + add r6, r4, #2 + add r5, r4, #4 +_022208D4: + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r1, r2 + add r0, r7, r0 + strh r0, [r6, #0x22] + ldr r0, [r4, #8] + ldr r1, [r4, #0x10] + add r2, sp, #0xc + bl FUN_0200C154 + str r0, [r5, #0x2c] + ldr r0, [sp, #8] + add r7, r7, #5 + add r0, r0, #1 + add r6, r6, #2 + add r5, r5, #4 + str r0, [sp, #8] + cmp r0, #4 + blt _022208D4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C8D0 + ldr r0, [r4, #0x34] + mov r1, #1 + bl FUN_0200C8D0 + ldr r0, [sp] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [sp] + bl MOD08_022154D4 + mov r1, #0 + add r5, r0, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + add r0, r5, #0 + mov r1, #0x29 + bl FUN_0200782C + ldr r0, [sp] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [sp] + bl MOD08_02227470 + cmp r0, #3 + bne _02220956 + mov r7, #0x8c + b _02220958 +_02220956: + mov r7, #0x54 +_02220958: + mov r6, #0 + add r5, r4, #0 +_0222095C: + ldr r0, [r5, #0x2c] + ldr r1, [sp, #4] + add r2, r7, #0 + bl FUN_0200C714 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0222095C + ldr r0, [sp] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [sp] + bl MOD08_02227470 + cmp r0, #3 + ldr r0, [r4, #0x2c] + bne _022209A2 + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x34] + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x30] + mov r1, #0x12 + bl FUN_0200C6C4 + ldr r0, [r4, #0x38] + mov r1, #0x12 + bl FUN_0200C6C4 + b _022209C0 +_022209A2: + mov r1, #0x12 + bl FUN_0200C6C4 + ldr r0, [r4, #0x34] + mov r1, #0x12 + bl FUN_0200C6C4 + ldr r0, [r4, #0x30] + mov r1, #0xa + bl FUN_0200C6C4 + ldr r0, [r4, #0x38] + mov r1, #0xa + bl FUN_0200C6C4 +_022209C0: + mov r1, #0x1f + ldr r0, [r4, #0x2c] + mvn r1, r1 + mov r2, #0 + bl FUN_0200C82C + mov r1, #0x27 + ldr r0, [r4, #0x38] + mvn r1, r1 + mov r2, #4 + bl FUN_0200C82C + ldr r0, [r4, #0x34] + mov r1, #0x20 + mov r2, #0 + bl FUN_0200C82C + ldr r0, [r4, #0x30] + mov r1, #0x28 + mov r2, #4 + bl FUN_0200C82C + ldr r0, [r4, #0x2c] + bl FUN_0200C68C + str r0, [r4, #0x1c] + ldr r0, [r4, #4] + ldr r1, _02220A04 ; =MOD08_02220614 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_02220A04: .word MOD08_02220614 + + thumb_func_start MOD08_02220A08 +MOD08_02220A08: ; 0x02220A08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + bne _02220A8E + add r0, r4, #0 + add r0, #0x60 + bl MOD08_02218224 + cmp r0, #0 + bne _02220A4C + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl MOD08_02228094 + add sp, #0xc + pop {r4, r5, pc} +_02220A4C: + add r0, r4, #0 + add r0, #0x60 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x28] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_0200C884 + mov r0, #0 + str r0, [sp] + mov r1, #0x58 + mov r2, #0x5a + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x28] + ldr r3, [r4, #0x74] + bl MOD08_02218314 + ldr r0, [r4, #0x28] + bl FUN_0200C5A8 + ldr r0, [r4, #0x3c] + bl FUN_0200C5A8 + ldr r0, [r4, #0x50] + bl FUN_0200C5A8 + ldr r0, [r4, #0xc] + bl FUN_0200BC1C +_02220A8E: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02220A94 +MOD08_02220A94: ; 0x02220A94 + push {r4, r5, lr} + sub sp, #0xc + mov r1, #0x84 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + mov r1, #1 + str r0, [r4, #0x24] + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x58 + strh r0, [r1] + mov r0, #0x58 + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0x5c + strh r1, [r0] + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_0221552C + add r1, r4, #0 + add r1, #0x5a + strh r0, [r1] + add r0, r5, #0 + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x3c] + add r0, r5, #0 + mov r1, #2 + bl MOD08_022124D8 + str r0, [r4, #0x50] + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_0200C840 + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200C6B0 + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0200C6B0 + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x50] + bl FUN_0200C6B0 + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02215490 + sub r0, r0, #3 + cmp r0, #1 + ldr r0, [r4, #0x28] + bhi _02220B62 + mov r1, #0x1e + bl FUN_0200C6C4 + ldr r0, [r4, #0x3c] + mov r1, #0x32 + bl FUN_0200C6C4 + ldr r0, [r4, #0x50] + mov r1, #0x46 + bl FUN_0200C6C4 + b _02220B78 +_02220B62: + mov r1, #0x3c + bl FUN_0200C6C4 + ldr r0, [r4, #0x3c] + mov r1, #0x46 + bl FUN_0200C6C4 + ldr r0, [r4, #0x50] + mov r1, #0x32 + bl FUN_0200C6C4 +_02220B78: + mov r2, #0x14 + mov r1, #0x64 + str r2, [sp] + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x60 + add r3, r1, #0 + bl MOD08_022181A8 + ldr r0, [r4, #4] + ldr r1, _02220B9C ; =MOD08_02220A08 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02220B9C: .word MOD08_02220A08 + + thumb_func_start MOD08_02220BA0 +MOD08_02220BA0: ; 0x02220BA0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _02220BB4 + cmp r0, #1 + beq _02220CB2 + b _02220D00 +_02220BB4: + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _02220C2E + mov r0, #0x22 + ldrsh r3, [r4, r0] + mov r0, #0x20 + ldrsh r1, [r4, r0] + mov r0, #3 + add r2, r1, #0 + str r3, [sp] + add r2, #0x30 + str r0, [sp, #4] + add r0, r4, #0 + lsl r2, r2, #0x10 + add r0, #0x34 + asr r2, r2, #0x10 + bl MOD08_02217E80 + mov r0, #0x22 + ldrsh r1, [r4, r0] + mov r0, #0xa4 + ldrsh r0, [r4, r0] + add r2, r1, r0 + mov r0, #0x20 + ldrsh r1, [r4, r0] + lsl r0, r2, #0x10 + asr r3, r0, #0x10 + add r2, r1, #0 + add r2, #0x30 + lsl r2, r2, #0x10 + str r3, [sp] + mov r0, #6 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x58 + asr r2, r2, #0x10 + bl MOD08_02217E80 + mov r0, #0x22 + ldrsh r1, [r4, r0] + mov r0, #0xa4 + ldrsh r0, [r4, r0] + add r2, r1, r0 + mov r0, #0x20 + ldrsh r1, [r4, r0] + lsl r0, r2, #0x10 + asr r3, r0, #0x10 + add r2, r1, #0 + add r2, #0x30 + lsl r2, r2, #0x10 + str r3, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x7c + asr r2, r2, #0x10 + bl MOD08_02217E80 + b _02220C9C +_02220C2E: + mov r0, #0x22 + ldrsh r3, [r4, r0] + mov r0, #0x20 + ldrsh r2, [r4, r0] + mov r0, #3 + add r1, r2, #0 + str r3, [sp] + add r1, #0x30 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #0x10 + add r0, #0x34 + asr r1, r1, #0x10 + bl MOD08_02217E80 + mov r0, #0x22 + ldrsh r1, [r4, r0] + mov r0, #0xa4 + ldrsh r0, [r4, r0] + add r1, r1, r0 + mov r0, #0x20 + ldrsh r2, [r4, r0] + lsl r0, r1, #0x10 + asr r3, r0, #0x10 + add r1, r2, #0 + add r1, #0x30 + lsl r1, r1, #0x10 + str r3, [sp] + mov r0, #6 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x58 + asr r1, r1, #0x10 + bl MOD08_02217E80 + mov r0, #0x22 + ldrsh r1, [r4, r0] + mov r0, #0xa4 + ldrsh r0, [r4, r0] + add r1, r1, r0 + mov r0, #0x20 + ldrsh r2, [r4, r0] + lsl r0, r1, #0x10 + asr r3, r0, #0x10 + add r1, r2, #0 + add r1, #0x30 + lsl r1, r1, #0x10 + str r3, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x7c + asr r1, r1, #0x10 + bl MOD08_02217E80 +_02220C9C: + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xa0 + strb r1, [r0] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _02220D12 +_02220CB2: + add r0, r4, #0 + ldr r1, [r4, #0x28] + add r0, #0x58 + mov r5, #0 + bl MOD08_02217F08 + cmp r0, #0 + bne _02220CC4 + add r5, r5, #1 +_02220CC4: + add r0, r4, #0 + ldr r1, [r4, #0x24] + add r0, #0x34 + bl MOD08_02217F2C + cmp r0, #0 + bne _02220CD4 + add r5, r5, #1 +_02220CD4: + add r0, r4, #0 + ldr r1, [r4, #0x30] + add r0, #0x7c + bl MOD08_02217F08 + cmp r0, #0 + bne _02220CE4 + add r5, r5, #1 +_02220CE4: + cmp r5, #3 + blt _02220D12 + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #1 + ldrb r0, [r4] + bne _02220CFA + sub r0, r0, #1 + strb r0, [r4] + b _02220D12 +_02220CFA: + add r0, r0, #1 + strb r0, [r4] + b _02220D12 +_02220D00: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl MOD08_02228094 + add sp, #8 + pop {r3, r4, r5, pc} +_02220D12: + ldr r0, [r4, #0x28] + bl FUN_0200C5A8 + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02220D24 +MOD08_02220D24: ; 0x02220D24 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + mov r1, #0xa8 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + add r0, r4, #0 + mov r1, #0 + add r0, #0xa1 + strb r1, [r0] + add r0, r4, #0 + mov r1, #8 + add r0, #0xa2 + strb r1, [r0] + add r0, r4, #0 + add r0, #0xa3 + strb r1, [r0] + sub r1, #9 + ldr r0, [r4, #4] + add r2, r1, #0 + bl MOD08_02227994 + add r0, r4, #0 + add r0, #0xa2 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xa3 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02220E94 ; =0x04000052 + strh r1, [r0] + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0x24] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x20] + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x22] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x28] + ldr r0, [r4, #4] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x30] + ldr r0, [r4, #0x24] + mov r1, #0x29 + bl FUN_0200782C + neg r1, r0 + add r0, r4, #0 + add r0, #0xa4 + strh r1, [r0] + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_0221550C + add r7, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_0221551C + str r0, [sp, #0x18] + ldr r0, [r4, #4] + ldr r5, [r4, #0x28] + bl MOD08_02215574 + add r1, r0, #0 + add r0, r5, #0 + add r1, r1, #1 + bl FUN_0200C6B0 + ldr r0, [r5] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02215504 + str r0, [sp, #0x1c] + ldr r0, [r4, #4] + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r6, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0xc4 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r7, #0 + bl FUN_02003B40 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #4] + ldr r5, [r4, #0x30] + bl MOD08_02215574 + add r1, r0, #0 + add r0, r5, #0 + add r1, r1, #1 + bl FUN_0200C6B0 + ldr r0, [r5] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02215504 + str r0, [sp, #0x20] + ldr r0, [r4, #4] + bl MOD08_02212014 + add r3, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r6, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0xc4 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x18] + add r2, r7, #0 + bl FUN_02003B40 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #4] + ldr r1, _02220E98 ; =MOD08_02220BA0 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02220E94: .word 0x04000052 +_02220E98: .word MOD08_02220BA0 + + thumb_func_start MOD08_02220E9C +MOD08_02220E9C: ; 0x02220E9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r6, #0 + str r0, [sp] + str r1, [sp, #4] + add r7, r6, #0 + add r4, r1, #0 + add r5, r1, #0 +_02220EAC: + mov r0, #0x1e + ldrsh r0, [r4, r0] + add r0, r0, #1 + strh r0, [r4, #0x1e] + mov r0, #0x1e + ldrsh r0, [r4, r0] + cmp r0, #0x20 + blt _02220ED4 + ldr r0, [r5, #0x30] + bl MOD08_022204CC + mov r0, #0x1e + ldrsh r0, [r4, r0] + cmp r0, #0xa0 + blt _02220ED4 + ldr r0, [r5, #0x30] + mov r1, #0 + bl FUN_0200C644 + add r6, r6, #1 +_02220ED4: + add r7, r7, #1 + add r4, r4, #2 + add r5, r5, #4 + cmp r7, #8 + blt _02220EAC + cmp r6, #8 + bne _02220F08 + ldr r4, [sp, #4] + mov r5, #0 +_02220EE6: + ldr r0, [r4, #0x30] + bl FUN_0200C3DC + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #8 + blt _02220EE6 + ldr r0, [sp, #4] + ldr r1, [sp] + ldr r0, [r0, #4] + bl MOD08_02212438 + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02220F08: + ldr r0, [sp, #4] + ldr r0, [r0, #0x10] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02220F14 +MOD08_02220F14: ; 0x02220F14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + mov r1, #0x74 + add r6, r0, #0 + add r5, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + mov r0, #0xa + strh r0, [r4, #0x1c] + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r1, [r4, #4] + add r0, sp, #0x24 + bl MOD08_02215474 + str r5, [r4, #0x30] + mov r6, #1 + add r5, r4, #4 + mov r7, #0x1f +_02220F40: + ldr r0, [r4, #8] + ldr r1, [r4, #0x10] + add r2, sp, #0x24 + bl FUN_0200C154 + str r0, [r5, #0x30] + lsr r1, r6, #0x1f + lsl r0, r6, #0x1f + sub r0, r0, r1 + ror r0, r7 + add r0, r1, r0 + beq _02220F60 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_0200C8D0 +_02220F60: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _02220F40 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + mov r1, #0 + add r5, r0, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [sp, #0x1c] + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [sp, #0x1c] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x14 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x50 + add r1, r7, #0 + add r2, r6, #0 + add r3, r5, #0 + bl MOD08_02217E80 + mov r7, #0 + ldr r0, [r4, #4] + add r6, r7, #0 + str r7, [sp, #0x14] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02227470 + cmp r0, #4 + bne _02220FE4 + mov r0, #1 + str r0, [sp, #0x14] +_02220FE4: + add r0, r4, #0 + str r0, [sp, #0x20] + add r0, #0x50 + add r5, r4, #0 + str r0, [sp, #0x20] +_02220FEE: + ldr r0, [sp, #0x20] + bl MOD08_02217ECC + str r0, [sp, #0x18] + lsr r2, r7, #0x1f + lsl r1, r7, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _02221026 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02221022 + cmp r6, #8 + bge _02221026 + mov r1, #0x50 + mov r2, #0x52 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r5, #0x30] + bl FUN_0200C714 + add r5, r5, #4 + add r6, r6, #1 + b _02221026 +_02221022: + mov r0, #0 + str r0, [sp, #0x14] +_02221026: + ldr r0, [sp, #0x18] + add r7, r7, #1 + cmp r0, #1 + beq _02220FEE + ldr r0, [r4, #4] + mov r1, #1 + bl MOD08_02215600 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + mov r1, #2 + bl MOD08_02215600 + add r7, r0, #0 + mov r6, #0 + str r4, [sp, #0xc] + add r5, r4, #0 +_02221048: + mov r0, #8 + sub r0, r0, r6 + str r0, [sp, #8] + lsl r1, r0, #2 + ldr r0, [sp, #0xc] + strh r1, [r0, #0x1e] + ldr r0, [r4, #4] + bl MOD08_02212004 + cmp r0, #0 + bne _022210A4 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02227470 + cmp r0, #3 + bne _02221086 + cmp r6, #4 + ldr r0, [r5, #0x30] + bge _0222107E + add r1, r7, #0 + bl FUN_0200C6B0 + b _0222109A +_0222107E: + ldr r1, [sp, #0x10] + bl FUN_0200C6B0 + b _0222109A +_02221086: + cmp r6, #4 + ldr r0, [r5, #0x30] + blt _02221094 + add r1, r7, #0 + bl FUN_0200C6B0 + b _0222109A +_02221094: + ldr r1, [sp, #0x10] + bl FUN_0200C6B0 +_0222109A: + ldr r0, [r5, #0x30] + ldr r1, [sp, #8] + bl FUN_0200C6C4 + b _022210B4 +_022210A4: + ldr r0, [r5, #0x30] + add r1, r6, #0 + bl FUN_0200C6C4 + ldr r0, [r5, #0x30] + add r1, r7, #0 + bl FUN_0200C6B0 +_022210B4: + ldr r0, [sp, #0xc] + add r6, r6, #1 + add r0, r0, #2 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r6, #8 + blt _02221048 + ldr r0, [r4, #4] + ldr r1, _022210D0 ; =MOD08_02220E9C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022210D0: .word MOD08_02220E9C + + thumb_func_start MOD08_022210D4 +MOD08_022210D4: ; 0x022210D4 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _022210EA + cmp r0, #1 + beq _02221178 + cmp r0, #2 + b _022211D6 +_022210EA: + ldr r0, [r5, #0x28] + cmp r0, #0xe + ble _02221140 + ldr r0, [r5, #0x30] + ldr r1, _0222121C ; =0x3E4CCCCD + bl _fsub + str r0, [r5, #0x30] + ldr r0, [r5, #0x2c] + ldr r1, _0222121C ; =0x3E4CCCCD + bl _fadd + str r0, [r5, #0x2c] + ldr r0, [r5, #0x30] + bl _f2d + ldr r2, _02221220 ; =0x9999999A + ldr r3, _02221224 ; =0x3FC99999 + bl _dleq + bhi _02221124 + ldrb r0, [r5] + mov r1, #0 + add r0, r0, #1 + strb r0, [r5] + ldr r0, [r5, #0x1c] + bl FUN_0200C644 + b _022211FE +_02221124: + mov r0, #0x36 + ldrsb r0, [r5, r0] + bl _fflt + add r1, r0, #0 + ldr r0, [r5, #0x2c] + bl _fmul + add r1, r0, #0 + ldr r0, [r5, #0x1c] + ldr r2, [r5, #0x30] + bl FUN_0200C884 + b _022211FE +_02221140: + add r0, r5, #0 + add r0, #0x34 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x34 + strb r1, [r0] + add r0, r5, #0 + add r0, #0x35 + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0x35 + strb r1, [r0] + add r0, r5, #0 + add r0, #0x34 + ldrb r1, [r0] + add r0, r5, #0 + add r0, #0x35 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02221228 ; =0x04000052 + strh r1, [r0] + ldr r0, [r5, #0x28] + add r0, r0, #1 + str r0, [r5, #0x28] + b _022211FE +_02221178: + ldr r0, [r5, #0x3c] + bl MOD08_02218AF8 + cmp r0, #0 + bne _022211FE + ldr r0, [r5, #0x38] + bl MOD08_02218B08 + ldr r0, [r5, #0x3c] + bl MOD08_02218B08 + ldr r0, [r5, #0x24] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r4, r0, #0 + ldr r0, [r5, #4] + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + lsl r3, r4, #0x14 + str r2, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + str r2, [sp, #0x10] + ldr r0, _0222122C ; =0x0000FFFF + mov r2, #2 + str r0, [sp, #0x14] + ldr r0, _02221230 ; =0x0000044C + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + ldr r0, [r5, #0x18] + bl MOD08_02218B20 + str r0, [r5, #0x3c] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _022211FE +_022211D6: + ldr r0, [r5, #0x3c] + bl MOD08_02218AF8 + cmp r0, #0 + bne _022211FE + ldr r0, [r5, #0x20] + bl FUN_0200C5A8 + ldr r0, [r5, #0x3c] + bl MOD08_02218B08 + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, pc} +_022211FE: + ldr r0, [r5, #0x1c] + bl FUN_0200C5A8 + ldr r0, [r5, #0x20] + bl FUN_0200C5A8 + ldr r0, [r5, #0x24] + bl FUN_0200C5A8 + ldr r0, [r5, #0xc] + bl FUN_0200BC1C + add sp, #0x1c + pop {r4, r5, pc} + nop +_0222121C: .word 0x3E4CCCCD +_02221220: .word 0x9999999A +_02221224: .word 0x3FC99999 +_02221228: .word 0x04000052 +_0222122C: .word 0x0000FFFF +_02221230: .word 0x0000044C + + thumb_func_start MOD08_02221234 +MOD08_02221234: ; 0x02221234 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + mov r1, #0x40 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x1c] + ldr r0, [r4, #4] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x20] + ldr r0, [r4, #4] + mov r1, #2 + bl MOD08_022124D8 + str r0, [r4, #0x24] + mov r6, #0 + str r6, [r4, #0x28] + add r0, r5, #0 + sub r6, #0x20 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02217C1C + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + mul r0, r6 + add r6, r0, #0 + mov r0, #0xfe + lsl r0, r0, #0x16 + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02215680 + cmp r0, #1 + bne _0222129E + mov r1, #0 + mvn r1, r1 + b _022212A0 +_0222129E: + mov r1, #1 +_022212A0: + add r0, r4, #0 + add r0, #0x36 + strb r1, [r0] + add r1, sp, #0x24 + ldr r0, [r4, #0x20] + add r1, #2 + add r2, sp, #0x24 + bl FUN_0200C7A0 + add r2, sp, #0x24 + mov r1, #2 + ldrsh r1, [r2, r1] + mov r3, #0 + ldrsh r2, [r2, r3] + add r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r4, #0x1c] + asr r1, r1, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #0x1c] + mov r1, #2 + bl FUN_0200C840 + mov r0, #0x36 + ldrsb r0, [r4, r0] + bl _fflt + add r1, r0, #0 + ldr r0, [r4, #0x2c] + bl _fmul + add r1, r0, #0 + ldr r0, [r4, #0x1c] + ldr r2, [r4, #0x30] + bl FUN_0200C884 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + lsl r3, r6, #0x14 + str r2, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r2, [sp, #0xc] + mov r0, #0xf + str r0, [sp, #0x10] + ldr r0, _0222147C ; =0x0000FFFF + mov r2, #2 + str r0, [sp, #0x14] + ldr r0, _02221480 ; =0x0000044C + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + ldr r0, [r4, #0x18] + bl MOD08_02218B20 + str r0, [r4, #0x38] + ldr r0, [r4, #0x24] + ldr r0, [r0] + bl FUN_02020354 + mov r1, #1 + bl FUN_0201E28C + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212014 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + lsl r3, r6, #0x14 + str r2, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r2, [sp, #0xc] + mov r0, #0xf + str r0, [sp, #0x10] + ldr r0, _0222147C ; =0x0000FFFF + mov r2, #2 + str r0, [sp, #0x14] + ldr r0, _02221480 ; =0x0000044C + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + ldr r0, [r4, #0x18] + bl MOD08_02218B20 + str r0, [r4, #0x3c] + ldr r0, [r4, #4] + bl MOD08_02212458 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_02227468 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [r4, #4] + bl MOD08_02212004 + add r1, r0, #0 + add r0, r5, #0 + add r2, sp, #0x2c + bl MOD08_02227564 + add r2, sp, #0x28 + ldr r0, [r4, #0x1c] + add r1, sp, #0x28 + add r2, #2 + bl FUN_0200C7A0 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _022213BC + ldr r0, [r4, #0x1c] + mov r1, #1 + mov r5, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + add r1, r5, #0 + bl FUN_0200C6C4 + b _022213CE +_022213BC: + ldr r0, [r4, #0x1c] + mov r1, #2 + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0200C6C4 + mov r5, #2 +_022213CE: + ldr r0, [r4, #4] + bl MOD08_02212460 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_022154A8 + add r7, r0, #0 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_0221549C + str r0, [sp, #0x1c] + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_022154B8 + str r0, [sp, #0x20] + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_022154C4 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x20] + str r0, [sp] + lsl r0, r7, #0x10 + lsl r1, r1, #0x18 + lsl r2, r5, #0x18 + lsl r3, r3, #0x18 + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068E88 + add r2, r0, #0 + add r5, sp, #0x24 + mov r3, #0xa + ldrsh r3, [r5, r3] + mov r1, #4 + ldrsh r1, [r5, r1] + add r2, r3, r2 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x1c] + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200C644 + add r0, r4, #0 + mov r1, #0 + add r0, #0x34 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0xf + add r0, #0x35 + strb r1, [r0] + sub r1, #0x10 + ldr r0, [r4, #4] + add r2, r1, #0 + bl MOD08_02227994 + add r0, r4, #0 + add r0, #0x34 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + add r2, r4, #0 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02221484 ; =0x04000052 + strh r1, [r0] + ldr r0, [r4, #4] + ldr r1, _02221488 ; =MOD08_022210D4 + bl MOD08_02212400 + add r1, r4, #0 + bl MOD08_022210D4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222147C: .word 0x0000FFFF +_02221480: .word 0x0000044C +_02221484: .word 0x04000052 +_02221488: .word MOD08_022210D4 + + thumb_func_start MOD08_0222148C +MOD08_0222148C: ; 0x0222148C + push {r3, r4, r5, lr} + sub sp, #0x58 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _022214A0 + cmp r0, #1 + beq _022214E6 + b _02221560 +_022214A0: + ldr r0, [r4, #0x68] + mov r1, #0x20 + lsl r0, r0, #2 + add r2, r4, r0 + ldr r0, [r2, #0x78] + lsl r0, r0, #0x10 + asr r3, r0, #0x10 + str r3, [sp] + mov r0, #0xf + str r0, [sp, #4] + ldr r2, [r2, #0x6c] + add r0, r4, #0 + lsl r2, r2, #0x10 + ldrsh r1, [r4, r1] + add r0, #0x30 + asr r2, r2, #0x10 + bl MOD08_02217E80 + ldr r2, [r4, #0x68] + ldr r0, [r4, #0x24] + lsl r2, r2, #2 + add r2, r4, r2 + add r2, #0x84 + ldr r2, [r2] + mov r1, #2 + bl FUN_02007558 + ldr r0, [r4, #0x24] + mov r1, #0x2c + mov r2, #1 + bl FUN_02007558 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_022214E6: + add r0, r4, #0 + add r0, #0x30 + bl MOD08_02217ECC + cmp r0, #0 + bne _02221544 + ldr r0, [r4, #0x68] + add r0, r0, #1 + str r0, [r4, #0x68] + cmp r0, #2 + ble _02221504 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _0222153A +_02221504: + ldr r0, [r4, #0x58] + cmp r0, #0 + bne _02221536 + ldr r0, [r4, #4] + add r1, sp, #8 + mov r2, #3 + bl MOD08_022127A8 + ldr r0, [r4, #0x68] + cmp r0, #2 + ldr r0, [r4, #4] + bne _0222152A + bl MOD08_02212014 + add r1, r0, #0 + add r0, sp, #8 + bl MOD08_0222A494 + b _02221536 +_0222152A: + bl MOD08_02212014 + add r1, r0, #0 + add r0, sp, #8 + bl MOD08_0222A2A4 +_02221536: + mov r0, #0 + strb r0, [r4] +_0222153A: + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x20] +_02221544: + mov r2, #0x30 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x32 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_02007558 + add sp, #0x58 + pop {r3, r4, r5, pc} +_02221560: + ldr r0, [r4, #0x24] + mov r1, #0x2c + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x58 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0222157C +MOD08_0222157C: ; 0x0222157C + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r1, #0x90 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02227B70 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + add r2, r4, #0 + ldr r0, [r4, #4] + add r2, #0x5c + bl MOD08_022275C0 + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + add r2, r4, #0 + ldr r0, [r4, #4] + add r2, #0x60 + bl MOD08_022275C0 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _022215CE + mov r1, #1 + b _022215D2 +_022215CE: + mov r1, #0 + mvn r1, r1 +_022215D2: + add r0, r4, #0 + add r0, #0x54 + strh r1, [r0] + ldr r0, [r4, #4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02227470 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02227470 + cmp r6, r0 + bne _022215FE + mov r0, #1 + b _02221600 +_022215FE: + mov r0, #0 +_02221600: + str r0, [r4, #0x58] + mov r1, #0 + add r0, r5, #0 + str r1, [r4, #0x68] + bl MOD08_02212498 + add r2, r4, #0 + add r1, r0, #0 + add r0, r5, #0 + add r2, #0x1c + add r3, sp, #0 + bl MOD08_02227BAC + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200782C + mov r1, #0x5e + ldrsh r2, [r4, r1] + mov r3, #0x54 + sub r0, r0, r2 + ldrsh r2, [r4, r3] + cmp r2, #0 + ble _02221672 + add r2, r3, #0 + add r2, #0xfb + str r2, [r4, #0x6c] + sub r3, #0xa4 + str r3, [r4, #0x70] + mov r2, #0x5c + ldrsh r2, [r4, r2] + str r2, [r4, #0x74] + ldrsh r2, [r4, r1] + add r2, r2, r0 + str r2, [r4, #0x78] + mov r2, #0x62 + ldrsh r2, [r4, r2] + add r2, r2, r0 + str r2, [r4, #0x7c] + ldrsh r1, [r4, r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + ldr r1, _022216C8 ; =0xFFFFFD76 + add r0, #0x88 + str r1, [r0] + ldr r0, [r4, #0x24] + mov r1, #2 + bl FUN_0200782C + b _022216B2 +_02221672: + add r2, r3, #0 + sub r2, #0xa4 + str r2, [r4, #0x6c] + add r3, #0xfb + str r3, [r4, #0x70] + mov r2, #0x5c + ldrsh r2, [r4, r2] + str r2, [r4, #0x74] + ldrsh r2, [r4, r1] + add r2, r2, r0 + str r2, [r4, #0x78] + mov r2, #0x62 + ldrsh r2, [r4, r2] + add r2, r2, r0 + str r2, [r4, #0x7c] + ldrsh r1, [r4, r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + ldr r1, _022216C8 ; =0xFFFFFD76 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x88 + str r1, [r0] + ldr r0, [r4, #0x24] + mov r1, #2 + bl FUN_0200782C +_022216B2: + add r1, r4, #0 + add r1, #0x8c + str r0, [r1] + ldr r0, [r4, #4] + ldr r1, _022216CC ; =MOD08_0222148C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_022216C8: .word 0xFFFFFD76 +_022216CC: .word MOD08_0222148C + + thumb_func_start MOD08_022216D0 +MOD08_022216D0: ; 0x022216D0 + push {r3, r4, lr} + sub sp, #4 + add r4, r2, #0 + ldr r2, [sp, #0x10] + str r2, [sp] + mov r2, #0x50 + sub r2, r2, r3 + add r3, r4, #0 + bl FUN_02007E40 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022216E8 +MOD08_022216E8: ; 0x022216E8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #3 + bls _022216FC + b _0222181E +_022216FC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02221708: ; jump table + .short _02221710 - _02221708 - 2 ; case 0 + .short _0222176C - _02221708 - 2 ; case 1 + .short _022217AE - _02221708 - 2 ; case 2 + .short _02221804 - _02221708 - 2 ; case 3 +_02221710: + ldr r2, [r4, #0x10] + add r2, #0x4f + str r2, [r4, #0x10] + cmp r2, #0x50 + blt _02221738 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add sp, #4 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] + ldr r1, [r4, #0x14] + mov r0, #1 + eor r0, r1 + str r0, [r4, #0x14] + mov r0, #0 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, pc} +_02221738: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _02221754 + mov r0, #2 + str r0, [sp] + ldr r3, [r4] + ldr r0, [r4, #0x1c] + add r3, r3, #2 + mov r1, #0 + lsl r3, r3, #1 + bl MOD08_022216D0 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_02221754: + mov r0, #2 + str r0, [sp] + ldr r3, [r4] + mov r1, #0x50 + add r3, r3, #2 + ldr r0, [r4, #0x1c] + sub r1, r1, r2 + lsl r3, r3, #1 + bl MOD08_022216D0 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0222176C: + ldr r0, [r4, #4] + mov r3, #0xff + sub r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #0xc] + lsl r3, r3, #8 + add r2, r0, #1 + str r2, [r4, #0xc] + ldr r6, [r4, #8] + ldr r1, [r4, #4] + lsl r0, r6, #8 + add r5, r0, #0 + add r6, #0x50 + lsl r0, r6, #0x18 + and r5, r3 + lsr r0, r0, #0x18 + lsl r1, r1, #8 + orr r5, r0 + ldr r0, _02221868 ; =0x04000040 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + strh r5, [r0] + orr r1, r3 + strh r1, [r0, #4] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_022217AE: + ldr r0, [r4, #4] + mov r3, #0xff + sub r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #0xc] + lsl r3, r3, #8 + add r2, r0, #1 + str r2, [r4, #0xc] + ldr r6, [r4, #8] + ldr r1, [r4, #4] + lsl r0, r6, #8 + add r5, r0, #0 + add r6, #0x50 + lsl r0, r6, #0x18 + and r5, r3 + lsr r0, r0, #0x18 + lsl r1, r1, #8 + orr r5, r0 + ldr r0, _02221868 ; =0x04000040 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + strh r5, [r0] + orr r1, r3 + strh r1, [r0, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + cmp r0, #0x26 + ble _022217FA + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_022217FA: + mov r0, #0 + add r4, #0x20 + add sp, #4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_02221804: + ldr r0, [r4, #0x1c] + mov r1, #0xe + mov r2, #0 + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0222181E: + mov r0, #1 + lsl r0, r0, #0x1a + ldr r3, [r0] + ldr r1, _0222186C ; =0xFFFF1FFF + and r1, r3 + add r3, r0, #0 + str r1, [r0] + add r3, #0x48 + ldrh r5, [r3] + mov r1, #0x3f + bic r5, r1 + strh r5, [r3] + add r3, r0, #0 + add r3, #0x4a + ldrh r5, [r3] + bic r5, r1 + add r1, r0, #0 + strh r5, [r3] + mov r3, #0 + add r1, #0x40 + strh r3, [r1] + add r0, #0x44 + strh r3, [r0] + ldr r0, [r4, #0x24] + add r1, r2, #0 + bl MOD08_02212438 + ldr r0, [r4, #0x1c] + ldr r2, [r4, #0x18] + mov r1, #0x17 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02221868: .word 0x04000040 +_0222186C: .word 0xFFFF1FFF + + thumb_func_start MOD08_02221870 +MOD08_02221870: ; 0x02221870 + push {r4, r5, r6, lr} + mov r1, #0x50 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x20 + bl MOD08_02227B70 + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_022154D4 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227468 + cmp r0, #3 + beq _022218B0 + cmp r0, #4 + bne _022218C4 +_022218B0: + add r0, r5, #0 + bl MOD08_02215574 + add r1, r0, #0 + sub r1, r1, #1 + lsl r1, r1, #0x18 + mov r0, #2 + lsr r1, r1, #0x18 + bl FUN_020178BC +_022218C4: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #0x1c] + mov r1, #0x29 + bl FUN_0200782C + sub r0, r5, r0 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #0x1c] + mov r1, #0x17 + bl FUN_0200782C + str r0, [r4, #0x18] + ldr r0, [r4, #0x1c] + mov r1, #0x17 + mov r2, #8 + bl FUN_02007558 + sub r6, #0x28 + str r6, [r4, #8] + add r5, #0x28 + mov r6, #1 + lsl r6, r6, #0x1a + add r3, r6, #0 + str r5, [r4, #4] + mov r1, #0 + str r1, [r4, #0x10] + ldr r0, [r4, #4] + add r3, #0x48 + str r0, [r4, #0xc] + str r1, [r4, #0x14] + ldr r1, [r6] + ldr r0, _0222197C ; =0xFFFF1FFF + and r1, r0 + lsr r0, r6, #0xd + orr r0, r1 + str r0, [r6] + ldrh r2, [r3] + mov r1, #0x3f + mov r0, #0x1f + bic r2, r1 + orr r0, r2 + mov r2, #0x20 + orr r0, r2 + strh r0, [r3] + add r3, r6, #0 + add r3, #0x4a + ldrh r5, [r3] + mov r0, #0x1b + bic r5, r1 + orr r0, r5 + orr r0, r2 + strh r0, [r3] + ldr r2, [r4, #8] + mov r0, #0xff + lsl r1, r2, #8 + add r2, #0x50 + lsl r0, r0, #8 + lsl r2, r2, #0x18 + and r1, r0 + lsr r2, r2, #0x18 + orr r2, r1 + add r1, r6, #0 + ldr r5, [r4, #0xc] + ldr r3, [r4, #4] + add r1, #0x40 + strh r2, [r1] + lsl r1, r3, #8 + and r1, r0 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + add r6, #0x44 + strh r0, [r6] + ldr r0, [r4, #0x24] + ldr r1, _02221980 ; =MOD08_022216E8 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + nop +_0222197C: .word 0xFFFF1FFF +_02221980: .word MOD08_022216E8 + + thumb_func_start MOD08_02221984 +MOD08_02221984: ; 0x02221984 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + mov r1, #0xe8 + mov r2, #0xea + add r5, r0, #0 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #8] + add r0, #0xc + bl MOD08_02217E58 + str r0, [sp] + add r0, r4, #0 + add r0, #0x38 + bl MOD08_02218524 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_0200BC1C + mov r1, #0 + add r2, sp, #0 +_022219B8: + ldr r0, [r2] + cmp r0, #1 + beq _022219EE + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #3 + blt _022219B8 + mov r2, #0xe8 + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02007558 + mov r2, #0xea + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #1 + sub r2, #8 + bl FUN_02007558 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_022219EE: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022219F4 +MOD08_022219F4: ; 0x022219F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0xf0 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #4] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #8] + bl FUN_0200782C + add r1, r4, #0 + add r1, #0xe8 + strh r0, [r1] + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0xea + strh r0, [r1] + ldr r0, [r4, #8] + mov r1, #0x29 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0xec + strh r0, [r1] + mov r0, #0xea + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xea + add r1, #8 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xc + mov r1, #1 + mov r2, #8 + bl MOD08_02218654 + add r0, sp, #0x20 + mov r1, #1 + mov r2, #0xa + bl MOD08_02218654 + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + ldr r1, [r4, #0x18] + mov r6, #0 + add r2, r1, #0 + mul r2, r0 + str r2, [r4, #0x18] + ldr r1, [sp, #0x2c] + add r5, r4, #0 + mul r0, r1 + str r0, [sp, #0x2c] + mov r7, #0x64 +_02221A8C: + ldr r0, [r4] + add r1, r6, #0 + bl MOD08_022124D8 + str r0, [r5, #0x30] + add r1, r7, #0 + bl FUN_0200C6C4 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_0200C90C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _02221A8C + mov r0, #0xea + ldrsh r1, [r4, r0] + mov r0, #0xec + ldrsh r0, [r4, r0] + mov r3, #0xe8 + ldr r2, _02221B04 ; =MOD08_02217D98 + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4, #0x30] + str r0, [sp, #0x10] + ldr r0, [r4, #0x34] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, r4, #0 + ldrsh r3, [r4, r3] + add r0, #0x38 + add r1, sp, #0x20 + bl MOD08_0221847C + mov r1, #0 + mvn r1, r1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD08_02227994 + ldr r0, [r4] + ldr r1, _02221B08 ; =MOD08_02221984 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02221B04: .word MOD08_02217D98 +_02221B08: .word MOD08_02221984 + + thumb_func_start MOD08_02221B0C +MOD08_02221B0C: ; 0x02221B0C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #6 + bls _02221B1C + b _02221C62 +_02221B1C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02221B28: ; jump table + .short _02221B36 - _02221B28 - 2 ; case 0 + .short _02221B78 - _02221B28 - 2 ; case 1 + .short _02221BAE - _02221B28 - 2 ; case 2 + .short _02221BC6 - _02221B28 - 2 ; case 3 + .short _02221BF6 - _02221B28 - 2 ; case 4 + .short _02221C0E - _02221B28 - 2 ; case 5 + .short _02221C32 - _02221B28 - 2 ; case 6 +_02221B36: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02217ECC + cmp r0, #0 + beq _02221B58 + mov r2, #0x48 + mov r3, #0x4a + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_02217CD0 + add sp, #8 + pop {r3, r4, r5, pc} +_02221B58: + mov r2, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r1, #0x10 + add r0, r4, #0 + ldrsh r1, [r4, r1] + add r0, #0x10 + add r3, r2, #0 + bl MOD08_02217E80 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02221B78: + add r0, r4, #0 + add r0, #0x34 + bl MOD08_02218058 + cmp r0, #0 + beq _02221B92 + ldr r0, [r4, #0xc] + ldr r2, [r4, #0x34] + mov r1, #9 + bl FUN_02007558 + add sp, #8 + pop {r3, r4, r5, pc} +_02221B92: + add r0, r4, #0 + ldr r1, [r4, #0x34] + add r0, #0x34 + mov r2, #0 + mov r3, #4 + bl MOD08_02218008 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #2 + strh r0, [r4, #8] + pop {r3, r4, r5, pc} +_02221BAE: + mov r0, #8 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, #8] + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _02221C62 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02221BC6: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02217ECC + cmp r0, #0 + beq _02221BE8 + mov r2, #0x48 + mov r3, #0x4a + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_02217CD0 + add sp, #8 + pop {r3, r4, r5, pc} +_02221BE8: + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x20 + strh r0, [r4, #8] + pop {r3, r4, r5, pc} +_02221BF6: + mov r0, #8 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, #8] + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _02221C62 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02221C0E: + add r0, r4, #0 + add r0, #0x34 + bl MOD08_02218058 + cmp r0, #0 + beq _02221C28 + ldr r0, [r4, #0xc] + ldr r2, [r4, #0x34] + mov r1, #9 + bl FUN_02007558 + add sp, #8 + pop {r3, r4, r5, pc} +_02221C28: + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02221C32: + mov r2, #0x48 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x4a + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #0xc] + mov r1, #9 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_02221C62: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02221C68 +MOD08_02221C68: ; 0x02221C68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0xf0 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #0xc] + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x48 + strh r0, [r1] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x4a + strh r0, [r1] + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + mov r2, #3 + str r2, [sp, #4] + add r0, #0x10 + sub r2, #0x23 + add r3, r1, #0 + bl MOD08_02217E80 + add r0, r4, #0 + ldr r2, _02221D78 ; =0x00000E38 + add r0, #0x34 + mov r1, #0 + mov r3, #8 + bl MOD08_02218008 + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + ldr r1, [r4, #0x18] + add r2, r1, #0 + mul r2, r0 + str r2, [r4, #0x18] + ldr r1, [r4, #0x3c] + mul r0, r1 + str r0, [r4, #0x3c] + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + add r7, r0, #0 + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + add r6, r0, #0 + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r6, #3 + bne _02221D36 + cmp r0, #3 + bne _02221D36 + mov r1, #0xa + add r2, r1, #0 + ldr r0, [r4, #0xc] + sub r2, #0x32 + bl FUN_02007558 + ldr r0, [r4, #0xc] + mov r1, #0xb + mov r2, #0x28 + bl FUN_02007558 + b _02221D6A +_02221D36: + cmp r6, #4 + bne _02221D54 + cmp r0, #4 + bne _02221D54 + ldr r0, [r4, #0xc] + mov r1, #0xa + mov r2, #0x28 + bl FUN_02007558 + ldr r0, [r4, #0xc] + mov r1, #0xb + mov r2, #0x28 + bl FUN_02007558 + b _02221D6A +_02221D54: + mov r2, #0x28 + ldr r0, [r4, #0xc] + mov r1, #0xa + mul r2, r7 + bl FUN_02007558 + ldr r0, [r4, #0xc] + mov r1, #0xb + mov r2, #0x28 + bl FUN_02007558 +_02221D6A: + ldr r0, [r4] + ldr r1, _02221D7C ; =MOD08_02221B0C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02221D78: .word 0x00000E38 +_02221D7C: .word MOD08_02221B0C + + thumb_func_start MOD08_02221D80 +MOD08_02221D80: ; 0x02221D80 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r4, [sp, #0x10] + bl FUN_0200C154 + str r0, [r5] + add r6, r4, #4 + add r3, r5, #4 + mov r2, #4 +_02221D98: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02221D98 + ldr r0, [r6] + add r2, r5, #0 + str r0, [r3] + add r3, r4, #0 + add r3, #0x28 + ldmia r3!, {r0, r1} + add r2, #0x28 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x3c + ldrsh r0, [r4, r0] + strh r0, [r5, #0x3c] + mov r0, #0x3e + ldrsh r0, [r4, r0] + strh r0, [r5, #0x3e] + mov r0, #0x40 + ldrsh r1, [r4, r0] + add r0, r5, #0 + add r0, #0x40 + strh r1, [r0] + ldr r0, [r4, #0x44] + mov r1, #0 + str r0, [r5, #0x44] + str r1, [r5, #0x48] + ldr r0, [r5] + bl FUN_0200C644 + ldr r0, [r5] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5] + mov r1, #1 + bl FUN_0200C6B0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_02221DF0 +MOD08_02221DF0: ; 0x02221DF0 + ldr r3, _02221DF8 ; =0x0200C3DD + ldr r0, [r0] + bx r3 + nop +_02221DF8: .word 0x0200C3DD + + thumb_func_start MOD08_02221DFC +MOD08_02221DFC: ; 0x02221DFC + ldr r3, _02221E04 ; =0x0200C645 + ldr r0, [r0] + bx r3 + nop +_02221E04: .word 0x0200C645 + + thumb_func_start MOD08_02221E08 +MOD08_02221E08: ; 0x02221E08 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x48] + cmp r0, #0 + bne _02221E1A + add sp, #0x10 + mov r0, #1 + pop {r4, pc} +_02221E1A: + ldr r0, [r4, #0x44] + cmp r0, #0 + beq _02221E2A + cmp r0, #1 + beq _02221E2A + cmp r0, #2 + beq _02221EAC + b _02221EB2 +_02221E2A: + add r0, r4, #4 + bl MOD08_02217D98 + cmp r0, #0 + beq _02221E6A + add r0, r4, #0 + add r0, #0x28 + bl MOD08_022180C4 + mov r0, #0x3c + ldrsh r1, [r4, r0] + ldr r0, [r4, #0x28] + add r0, r1, r0 + str r0, [r4, #0x1c] + mov r1, #0x3e + ldrsh r2, [r4, r1] + mov r1, #4 + ldrsh r1, [r4, r1] + ldr r0, [r4] + add r1, r2, r1 + mov r2, #0x40 + ldrsh r3, [r4, r2] + mov r2, #6 + ldrsh r2, [r4, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + b _02221EB2 +_02221E6A: + ldr r0, [r4, #0x44] + cmp r0, #1 + bge _02221EA4 + cmp r0, #0 + bne _02221E92 + ldr r1, [r4, #0xc] + ldr r2, _02221EB8 ; =0x00007FFF + lsl r1, r1, #0x10 + str r2, [sp] + ldr r0, [r4, #0x10] + lsr r1, r1, #0x10 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + add r3, r1, #0 + str r0, [sp, #8] + ldr r0, _02221EBC ; =0x0000071C + str r0, [sp, #0xc] + add r0, r4, #4 + bl MOD08_02217D44 +_02221E92: + ldr r0, [r4, #8] + ldr r2, _02221EC0 ; =0x0000FFFF + str r0, [sp] + add r0, r4, #0 + ldr r3, _02221EC4 ; =0xFFFFF000 + add r0, #0x28 + mov r1, #0 + bl MOD08_022180AC +_02221EA4: + ldr r0, [r4, #0x44] + add r0, r0, #1 + str r0, [r4, #0x44] + b _02221EB2 +_02221EAC: + add sp, #0x10 + mov r0, #0 + pop {r4, pc} +_02221EB2: + mov r0, #1 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02221EB8: .word 0x00007FFF +_02221EBC: .word 0x0000071C +_02221EC0: .word 0x0000FFFF +_02221EC4: .word 0xFFFFF000 + + thumb_func_start MOD08_02221EC8 +MOD08_02221EC8: ; 0x02221EC8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #6 + bhi _02221F3C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02221EE4: ; jump table + .short _02221EF2 - _02221EE4 - 2 ; case 0 + .short _02221F0A - _02221EE4 - 2 ; case 1 + .short _02221F56 - _02221EE4 - 2 ; case 2 + .short _02221F6C - _02221EE4 - 2 ; case 3 + .short _0222200C - _02221EE4 - 2 ; case 4 + .short _02222036 - _02221EE4 - 2 ; case 5 + .short _02222076 - _02221EE4 - 2 ; case 6 +_02221EF2: + add r0, r4, #0 + add r0, #0xc + bl MOD08_02221E08 + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + b _022220A0 +_02221F0A: + add r0, r4, #0 + add r0, #0xfc + ldr r1, [r0] + add r0, r4, #0 + add r1, #0xa + add r0, #0xfc + str r1, [r0] + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0xa + bl _s32_div_f + mov r1, #0x1f + sub r1, r1, r0 + lsl r1, r1, #8 + orr r1, r0 + ldr r0, _022220A8 ; =0x04000052 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xfc + ldr r1, [r0] + ldr r0, _022220AC ; =0x00000136 + cmp r1, r0 + bge _02221F3E +_02221F3C: + b _022220A0 +_02221F3E: + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_0200C90C + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + b _022220A0 +_02221F56: + ldr r1, _022220B0 ; =0x0000FFFF + ldr r0, _022220A8 ; =0x04000052 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + b _022220A0 +_02221F6C: + add r0, r4, #0 + add r0, #0xf4 + ldr r0, [r0] + cmp r0, #0 + bgt _02221FB0 + add r0, r4, #0 + add r0, #0xf8 + ldr r0, [r0] + mov r2, #0x4c + add r3, r0, #0 + mul r3, r2 + add r0, r4, r3 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf8 + ldr r0, [r0] + mul r2, r0 + add r0, r4, r2 + ldr r0, [r0, #0x58] + bl FUN_0200C644 + add r0, r4, #0 + add r0, #0xf8 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r4, #0 + mov r1, #8 + add r0, #0xf4 + str r1, [r0] +_02221FB0: + add r0, r4, #0 + add r0, #0xf8 + ldr r0, [r0] + cmp r0, #2 + bge _02221FC8 + add r0, r4, #0 + add r0, #0xf4 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf4 + str r1, [r0] +_02221FC8: + add r0, r4, #0 + add r0, #0xc + bl MOD08_02221E08 + add r5, r4, #0 + add r6, r0, #0 + mov r7, #0 + add r5, #0x58 +_02221FD8: + add r0, r5, #0 + bl MOD08_02221E08 + str r0, [sp] + cmp r0, #0 + bne _02221FEC + add r0, r5, #0 + mov r1, #0 + bl MOD08_02221DFC +_02221FEC: + ldr r0, [sp] + add r7, r7, #1 + orr r6, r0 + add r5, #0x4c + cmp r7, #2 + blt _02221FD8 + cmp r6, #0 + bne _022220A0 + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + b _022220A0 +_0222200C: + ldr r0, [r4, #0xc] + bl FUN_0200C5A8 + ldr r0, [r4, #0xc] + ldr r0, [r0] + bl FUN_02020388 + cmp r0, #0 + bne _022220A0 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200C90C + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + b _022220A0 +_02222036: + add r0, r4, #0 + add r0, #0xfc + ldr r1, [r0] + add r0, r4, #0 + sub r1, #0xa + add r0, #0xfc + str r1, [r0] + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + mov r1, #0xa + bl _s32_div_f + mov r1, #0x1f + sub r1, r1, r0 + lsl r1, r1, #8 + orr r1, r0 + ldr r0, _022220A8 ; =0x04000052 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + cmp r0, #0 + bgt _022220A0 + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + b _022220A0 +_02222076: + add r5, r4, #0 + mov r6, #0 + add r5, #0x58 +_0222207C: + add r0, r5, #0 + bl MOD08_02221DF0 + add r6, r6, #1 + add r5, #0x4c + cmp r6, #2 + blt _0222207C + ldr r0, [r4, #0xc] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_022220A0: + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022220A8: .word 0x04000052 +_022220AC: .word 0x00000136 +_022220B0: .word 0x0000FFFF + + thumb_func_start MOD08_022220B4 +MOD08_022220B4: ; 0x022220B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp, #0x10] + bl MOD08_02212014 + mov r1, #1 + lsl r1, r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + mov r1, #8 + add r0, #0xf4 + str r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + ldr r1, [sp, #0x10] + lsl r0, r0, #0x11 + str r1, [r4, #0xc] + mov r1, #0 + str r1, [r4, #0x50] + ldr r2, _022221EC ; =0x0000BFFF + neg r0, r0 + str r2, [sp] + str r0, [sp, #4] + ldr r1, _022221F0 ; =0xFFFF8000 + ldr r0, _022221F4 ; =0x0000071C + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + lsr r1, r1, #0x12 + add r0, #0x10 + add r3, r1, #0 + bl MOD08_02217D44 + ldr r0, [r4, #0x14] + ldr r2, _022221F8 ; =0x0000FFFF + str r0, [sp] + add r0, r4, #0 + ldr r3, _022221FC ; =0xFFFFF000 + add r0, #0x34 + mov r1, #0 + bl MOD08_022180AC + add r0, r4, #0 + ldr r1, [r4, #0x28] + add r0, #0x48 + strh r1, [r0] + mov r0, #1 + str r0, [r4, #0x54] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD08_02217B98 + add r1, r4, #0 + add r1, #0x4a + strh r0, [r1] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD08_02217B98 + add r1, r4, #0 + add r1, #0x4c + strh r0, [r1] + mov r1, #0x4a + mov r2, #0x4c + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + bl FUN_0200C714 + ldr r0, [r4, #0xc] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200C6B0 + ldr r1, [r4] + add r0, sp, #0x14 + bl MOD08_02215474 + mov r0, #0x4a + ldrsh r0, [r4, r0] + add r1, sp, #0x14 + add r5, r4, #0 + strh r0, [r1] + mov r0, #0x4c + ldrsh r0, [r4, r0] + add r7, r4, #0 + mov r6, #0 + strh r0, [r1, #2] + add r5, #0x58 + add r7, #0xc +_0222219A: + str r7, [sp] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + add r0, r5, #0 + add r3, sp, #0x14 + bl MOD08_02221D80 + add r6, r6, #1 + add r5, #0x4c + cmp r6, #2 + blt _0222219A + add r0, r4, #0 + mov r1, #0 + add r0, #0xfc + str r1, [r0] + ldr r0, [r4] + mov r2, #0x1f + bl MOD08_02227994 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200C90C + mov r6, #0 + add r5, r4, #0 + mov r7, #1 +_022221CE: + ldr r0, [r5, #0x58] + add r1, r7, #0 + bl FUN_0200C90C + add r6, r6, #1 + add r5, #0x4c + cmp r6, #2 + blt _022221CE + ldr r0, [r4] + ldr r1, _02222200 ; =MOD08_02221EC8 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022221EC: .word 0x0000BFFF +_022221F0: .word 0xFFFF8000 +_022221F4: .word 0x0000071C +_022221F8: .word 0x0000FFFF +_022221FC: .word 0xFFFFF000 +_02222200: .word MOD08_02221EC8 + + thumb_func_start MOD08_02222204 +MOD08_02222204: ; 0x02222204 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r2, #0x60 + ldrsh r3, [r4, r2] + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x5c] + mov r1, #0 + add r2, r3, r2 + bl FUN_02007558 + mov r2, #0x62 + ldrsh r3, [r4, r2] + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x5c] + mov r1, #1 + add r2, r3, r2 + bl FUN_02007558 + mov r1, #0x60 + ldrsh r2, [r4, r1] + mov r1, #0x10 + ldrsh r1, [r4, r1] + ldr r0, [r4, #0x58] + add r1, r2, r1 + mov r2, #0x62 + ldrsh r3, [r4, r2] + mov r2, #0x12 + ldrsh r2, [r4, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r3, r3, r2 + mov r2, #0x66 + ldrsh r2, [r4, r2] + sub r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r4, #0 + add r0, #0x34 + add r1, sp, #4 + add r2, sp, #0 + bl MOD08_0221825C + mov r0, #0x64 + ldrsh r0, [r4, r0] + bl _fflt + add r1, r0, #0 + ldr r0, _02222298 ; =0x3DCCCCCD + bl _fmul + add r1, r0, #0 + ldr r0, [sp, #4] + bl _fadd + add r1, r0, #0 + str r1, [sp, #4] + ldr r0, [r4, #0x58] + ldr r2, [sp] + bl FUN_0200C884 + mov r0, #0x64 + ldrsh r1, [r4, r0] + sub r0, #0x65 + add r4, #0x64 + mul r0, r1 + strh r0, [r4] + add sp, #8 + pop {r4, pc} + nop +_02222298: .word 0x3DCCCCCD + + thumb_func_start MOD08_0222229C +MOD08_0222229C: ; 0x0222229C + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _022222B4 + cmp r0, #1 + beq _022222EE + cmp r0, #2 + beq _0222232A + b _0222233C +_022222B4: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_022183F0 + add r0, r4, #0 + add r0, #0x34 + bl MOD08_02218224 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02222204 + cmp r5, #0 + bne _0222233C + mov r2, #0xa + str r2, [sp] + str r2, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x34 + mov r1, #0xc + mov r3, #0xf + bl MOD08_022181A8 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _0222233C +_022222EE: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_022183F0 + add r0, r4, #0 + add r0, #0x34 + bl MOD08_02218224 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02222204 + cmp r5, #0 + bne _0222233C + mov r2, #0x60 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x62 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _0222233C +_0222232A: + ldr r0, [r4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, pc} +_0222233C: + ldr r0, [r4, #4] + bl FUN_0200BC1C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02222348 +MOD08_02222348: ; 0x02222348 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x68 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #0x5c] + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x60 + strh r0, [r1] + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x62 + strh r0, [r1] + ldr r0, [r4, #0x5c] + mov r1, #0x29 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x66 + strh r0, [r1] + mov r0, #6 + str r0, [sp] + add r0, r4, #0 + add r0, #0x10 + mov r1, #2 + mov r2, #0 + mov r3, #1 + bl MOD08_022183C0 + ldr r0, [r4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x58] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x58] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x58] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_0200C6B0 + mov r0, #0xf + str r0, [sp] + mov r1, #0xa + str r1, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x34 + mov r2, #0xc + add r3, r1, #0 + bl MOD08_022181A8 + add r0, r4, #0 + mov r1, #1 + add r0, #0x64 + strh r1, [r0] + ldr r0, [r4] + mov r1, #0x1c + mov r2, #0xf + bl MOD08_02227994 + ldr r0, [r4] + ldr r1, _02222414 ; =MOD08_0222229C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02222414: .word MOD08_0222229C + + thumb_func_start MOD08_02222418 +MOD08_02222418: ; 0x02222418 + mov r2, #0x12 + ldrsh r2, [r0, r2] + mov r3, #0x10 + ldrsh r0, [r0, r3] + neg r2, r2 + lsl r2, r2, #0x10 + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + orr r0, r2 + mov r2, #3 + ldr r3, _02222434 ; =0x020CE1FC + lsl r2, r2, #8 + bx r3 + .align 2, 0 +_02222434: .word 0x020CE1FC + + thumb_func_start MOD08_02222438 +MOD08_02222438: ; 0x02222438 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x18] + bl MOD08_02218970 + str r0, [sp, #0xc] + ldr r1, [sp, #0xc] + add r0, r5, #0 + bl MOD08_02222418 + add r0, r5, #0 + add r0, #0x1c + bl MOD08_02217ECC + str r0, [sp, #8] + mov r0, #0x14 + ldrsh r4, [r5, r0] + mov r0, #0x16 + ldrsh r0, [r5, r0] + cmp r4, r0 + bgt _022224D8 + ldr r1, [sp, #0xc] + lsl r2, r4, #2 + add r1, r1, r2 + str r1, [sp] +_0222246C: + ldr r1, [sp] + sub r0, r0, r4 + ldr r2, [r1] + lsl r1, r2, #0x10 + asr r1, r1, #0x10 + str r1, [sp, #4] + lsr r1, r2, #0x10 + lsl r1, r1, #0x10 + asr r7, r1, #0x10 + mov r1, #0x1e + ldrsh r1, [r5, r1] + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + sub r0, r7, r0 + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + mov r0, #0x1c + ldrsh r1, [r5, r0] + mov r0, #0x14 + ldrsh r0, [r5, r0] + add r0, #0x28 + sub r0, r0, r4 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [sp, #4] + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + sub r6, r4, #1 + bpl _022224B4 + add r6, #0xc0 +_022224B4: + ldr r0, [sp, #4] + lsl r1, r7, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD08_02218998 + ldr r1, [sp, #0xc] + lsl r2, r6, #2 + str r0, [r1, r2] + ldr r0, [sp] + add r4, r4, #1 + add r0, r0, #4 + str r0, [sp] + mov r0, #0x16 + ldrsh r0, [r5, r0] + cmp r4, r0 + ble _0222246C +_022224D8: + ldr r0, [sp, #8] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_022224E0 +MOD08_022224E0: ; 0x022224E0 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + cmp r0, #4 + bhi _02222548 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022224FA: ; jump table + .short _02222504 - _022224FA - 2 ; case 0 + .short _02222536 - _022224FA - 2 ; case 1 + .short _0222255E - _022224FA - 2 ; case 2 + .short _022225AE - _022224FA - 2 ; case 3 + .short _022225CE - _022224FA - 2 ; case 4 +_02222504: + add r0, r4, #0 + bl MOD08_02222438 + cmp r0, #0 + bne _02222548 + ldr r0, [r4, #4] + mov r1, #0x1f + add r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4] + mov r2, #0 + bl MOD08_02227A00 + mov r1, #0x1f + mov r2, #0 + str r1, [sp] + mov r0, #0x10 + add r4, #0x40 + str r0, [sp, #4] + add r0, r4, #0 + add r3, r2, #0 + bl MOD08_022186D4 + add sp, #8 + pop {r4, r5, r6, pc} +_02222536: + add r0, r4, #0 + bl MOD08_02222438 + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02218704 + cmp r0, #0 + bne _0222254A +_02222548: + b _02222650 +_0222254A: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #0x18] + bl MOD08_02218984 + mov r0, #0 + add sp, #8 + str r0, [r4, #8] + pop {r4, r5, r6, pc} +_0222255E: + ldr r0, [r4] + bl MOD08_02212490 + mov r3, #0x10 + ldrsh r3, [r4, r3] + mov r1, #2 + mov r2, #0 + neg r3, r3 + bl FUN_020179E0 + ldr r0, [r4] + bl MOD08_02212490 + mov r3, #0x12 + ldrsh r3, [r4, r3] + mov r1, #2 + mov r2, #3 + neg r3, r3 + bl FUN_020179E0 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #8 + ble _02222650 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + add r0, #0x40 + add r3, r2, #0 + bl MOD08_022186D4 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_022225AE: + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02218704 + cmp r0, #0 + beq _02222650 + ldr r0, [r4, #0xc] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_022225CE: + ldr r0, [r4, #0x18] + bl MOD08_0221894C + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215600 + add r1, r0, #0 + lsl r0, r5, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + lsl r1, r1, #0x18 + mov r0, #0 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02212014 + add r3, r0, #0 + lsl r0, r5, #0x18 + mov r1, #1 + lsr r0, r0, #0x18 + lsl r1, r1, #0xe + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4] + bl MOD08_02212490 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_02018744 + ldr r0, [r4] + add r1, r6, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_02222650: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02222654 +MOD08_02222654: ; 0x02222654 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x68 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x68 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r1, _022227BC ; =MOD08_022224E0 + str r5, [r4] + add r0, r5, #0 + add r2, r4, #0 + bl MOD08_02212400 + str r0, [sp, #0x14] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x10] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x12] + ldr r0, [r4, #0xc] + mov r1, #0x29 + bl FUN_0200782C + mov r1, #0x12 + ldrsh r2, [r4, r1] + sub r0, r2, r0 + strh r0, [r4, #0x12] + mov r0, #0x10 + ldrsh r0, [r4, r0] + mov r2, #1 + sub r0, #0x28 + strh r0, [r4, #0x10] + ldrsh r0, [r4, r1] + mov r1, #6 + sub r0, #0x28 + strh r0, [r4, #0x12] + ldr r0, [r4, #0xc] + bl FUN_02007558 + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + add r6, r0, #0 + mov r0, #0x12 + ldrsh r1, [r4, r0] + sub r1, #8 + strh r1, [r4, #0x14] + ldrsh r0, [r4, r0] + add r0, #0x58 + strh r0, [r4, #0x16] + mov r0, #0x14 + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _022226F0 + mov r0, #0 + strh r0, [r4, #0x14] +_022226F0: + mov r0, #0x16 + ldrsh r0, [r4, r0] + cmp r0, #0xc0 + ble _022226FC + mov r0, #0xc0 + strh r0, [r4, #0x16] +_022226FC: + add r0, r5, #0 + mov r1, #1 + bl MOD08_022155C4 + add r7, r0, #0 + ldr r0, [sp, #0x14] + bl FUN_0201B6CC + str r0, [sp, #0x18] + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0x12] + bl MOD08_02218998 + str r0, [sp, #0x1c] + add r0, r5, #0 + bl MOD08_02212014 + mov r1, #0x50 + str r1, [sp] + ldr r1, [sp, #0x18] + str r7, [sp, #4] + add r1, r1, #1 + str r1, [sp, #8] + ldr r1, [sp, #0x1c] + ldr r2, _022227C0 ; =0x0000038E + str r1, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x14 + mov r1, #0x16 + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r1] + lsl r3, r6, #0xf + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl MOD08_022188DC + str r0, [r4, #0x18] + mov r0, #0x28 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + add r0, #0x1c + mov r2, #0x50 + add r3, r1, #0 + bl MOD08_02217E80 + ldr r0, [r4, #0x24] + add r1, r0, #0 + mul r1, r6 + str r1, [r4, #0x24] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + sub r0, r0, #3 + cmp r0, #1 + bhi _022227AE + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + lsl r0, r5, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x18 + mov r0, #0 + lsr r1, r1, #0x18 + bl FUN_020178BC +_022227AE: + ldr r0, [sp, #0x14] + add r1, r4, #0 + bl MOD08_022224E0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_022227BC: .word MOD08_022224E0 +_022227C0: .word 0x0000038E + + thumb_func_start MOD08_022227C4 +MOD08_022227C4: ; 0x022227C4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _02222874 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022227DE: ; jump table + .short _022227E6 - _022227DE - 2 ; case 0 + .short _0222280C - _022227DE - 2 ; case 1 + .short _0222281E - _022227DE - 2 ; case 2 + .short _02222862 - _022227DE - 2 ; case 3 +_022227E6: + add r0, r4, #0 + add r0, #0x38 + bl MOD08_02218080 + ldr r2, [r4, #0x38] + mov r1, #0x1f + sub r1, r1, r2 + lsl r1, r1, #8 + orr r2, r1 + ldr r1, _02222880 ; =0x04000052 + cmp r0, #0 + strh r2, [r1] + bne _02222874 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + b _02222874 +_0222280C: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0x20 + ble _02222874 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02222874 +_0222281E: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x14 + add r1, sp, #4 + add r2, sp, #0 + bl MOD08_0221825C + ldr r0, [r4, #0x4c] + cmp r0, #1 + bne _02222844 + ldr r1, [sp, #4] + mov r0, #0 + bl _fsub + str r0, [sp, #4] +_02222844: + ldr r0, [r4, #0x10] + ldr r1, [sp, #4] + ldr r2, [sp] + bl FUN_0200C884 + cmp r5, #0 + bne _02222874 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02222874 +_02222862: + ldr r0, [r4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, pc} +_02222874: + ldr r0, [r4, #4] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02222880: .word 0x04000052 + + thumb_func_start MOD08_02222884 +MOD08_02222884: ; 0x02222884 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r2, r0, #0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _022228A0 + cmp r0, #1 + beq _02222928 + cmp r0, #2 + bne _0222289C + b _022229B4 +_0222289C: + add sp, #0xc + pop {r4, r5, pc} +_022228A0: + add r0, r5, #0 + add r0, #0x14 + bl MOD08_022183F0 + mov r2, #0x38 + mov r3, #0x3a + add r0, r5, #0 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r1, [r5, #8] + add r0, #0x14 + bl MOD08_02217CD0 + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _022228DA + mov r3, #0x3a + ldrsh r4, [r5, r3] + ldr r3, [r5, #0x3c] + mov r2, #0x38 + sub r3, r4, r3 + add r0, r5, #0 + lsl r3, r3, #0x10 + ldrsh r2, [r5, r2] + ldr r1, [r5, #0xc] + add r0, #0x14 + asr r3, r3, #0x10 + bl MOD08_02217C94 +_022228DA: + ldr r0, [r5, #8] + bl FUN_02007F20 + cmp r0, #0 + bne _022229C2 + mov r2, #0 + str r2, [sp] + ldr r0, [r5, #8] + mov r1, #0x10 + add r3, r2, #0 + bl FUN_02007E68 + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _0222291E + ldr r0, [r5, #0xc] + bl MOD08_02217C08 + mov r1, #1 + add r4, r1, #0 + lsl r4, r0 + ldr r0, [r5] + bl MOD08_02215504 + mov r1, #0x10 + str r1, [sp] + mov r3, #0 + lsl r2, r4, #0x10 + str r3, [sp, #4] + mov r1, #4 + lsr r2, r2, #0x10 + str r3, [sp, #8] + bl FUN_02003210 +_0222291E: + ldr r0, [r5, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, pc} +_02222928: + add r0, r5, #0 + add r0, #0x14 + bl MOD08_022183F0 + mov r2, #0x38 + mov r3, #0x3a + add r0, r5, #0 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r1, [r5, #8] + add r0, #0x14 + bl MOD08_02217CD0 + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _02222962 + mov r3, #0x3a + ldrsh r4, [r5, r3] + ldr r3, [r5, #0x3c] + mov r2, #0x38 + sub r3, r4, r3 + add r0, r5, #0 + lsl r3, r3, #0x10 + ldrsh r2, [r5, r2] + ldr r1, [r5, #0xc] + add r0, #0x14 + asr r3, r3, #0x10 + bl MOD08_02217C94 +_02222962: + ldr r0, [r5, #8] + bl FUN_02007F20 + cmp r0, #0 + bne _022229C2 + mov r2, #0x38 + ldrsh r2, [r5, r2] + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x3a + ldrsh r2, [r5, r2] + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _022229AA + ldr r0, [r5, #8] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + mov r2, #0x3a + ldrsh r3, [r5, r2] + ldr r2, [r5, #0x3c] + mov r1, #0x38 + sub r2, r3, r2 + lsl r2, r2, #0x10 + ldrsh r1, [r5, r1] + ldr r0, [r5, #0xc] + asr r2, r2, #0x10 + bl FUN_0200C714 +_022229AA: + ldr r0, [r5, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, pc} +_022229B4: + ldr r0, [r5] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r5, #0 + bl FUN_02016A18 +_022229C2: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022229C8 +MOD08_022229C8: ; 0x022229C8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x50 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x50 + bl Call_FillMemWithValue + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD08_02212004 + str r0, [r4, #0x4c] + ldr r0, [r4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x10] + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + mov r2, #0xa + add r0, #0x14 + mov r1, #0xe + add r3, r2, #0 + bl MOD08_02218120 + add r0, r4, #0 + add r0, #0x38 + mov r1, #0 + mov r2, #0x10 + mov r3, #8 + bl MOD08_02218030 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4] + mov r1, #0 + mov r2, #0x1f + bl MOD08_02227994 + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x4c] + cmp r0, #1 + ldr r0, [r4, #0x10] + bne _02222A48 + ldr r1, _02222A6C ; =0xBFB33333 + ldr r2, _02222A70 ; =0x3FB33333 + bl FUN_0200C884 + b _02222A50 +_02222A48: + ldr r1, _02222A70 ; =0x3FB33333 + add r2, r1, #0 + bl FUN_0200C884 +_02222A50: + ldr r0, [r4, #0x10] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4] + ldr r1, _02222A74 ; =MOD08_022227C4 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + .align 2, 0 +_02222A6C: .word 0xBFB33333 +_02222A70: .word 0x3FB33333 +_02222A74: .word MOD08_022227C4 + + thumb_func_start MOD08_02222A78 +MOD08_02222A78: ; 0x02222A78 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl MOD08_02212014 + mov r1, #0x40 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x40 + bl Call_FillMemWithValue + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x38] + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x3a] + ldr r0, [r4, #8] + mov r1, #0x29 + bl FUN_0200782C + str r0, [r4, #0x3c] + mov r1, #4 + add r0, r4, #0 + str r1, [sp] + add r0, #0x14 + mov r2, #0 + mov r3, #1 + bl MOD08_022183C0 + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + mov r1, #0x14 + ldrsh r1, [r4, r1] + mov r2, #0x10 + add r0, r1, r0 + mov r1, #0 + strh r0, [r4, #0x14] + str r1, [sp] + ldr r0, [r4, #8] + add r3, r1, #0 + bl FUN_02007E68 + ldr r0, [r4] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0xc] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + cmp r5, #2 + bne _02222B24 + cmp r0, #4 + beq _02222B2C +_02222B24: + cmp r5, #5 + bne _02222B5E + cmp r0, #3 + bne _02222B5E +_02222B2C: + ldr r0, [r4, #0xc] + bl MOD08_02217C08 + mov r1, #1 + add r5, r1, #0 + lsl r5, r0 + ldr r0, [r4] + bl MOD08_02215504 + mov r3, #0 + lsl r2, r5, #0x10 + str r3, [sp] + mov r1, #0x10 + str r1, [sp, #4] + mov r1, #4 + lsr r2, r2, #0x10 + str r3, [sp, #8] + bl FUN_02003210 + mov r2, #1 + str r2, [r4, #0x10] + ldr r0, [r4, #8] + mov r1, #6 + bl FUN_02007558 +_02222B5E: + ldr r0, [r4] + ldr r1, _02222B6C ; =MOD08_02222884 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02222B6C: .word MOD08_02222884 + + thumb_func_start MOD08_02222B70 +MOD08_02222B70: ; 0x02222B70 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r5, #0 + cmp r0, #3 + bhi _02222BEC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02222B8A: ; jump table + .short _02222B92 - _02222B8A - 2 ; case 0 + .short _02222BAA - _02222B8A - 2 ; case 1 + .short _02222BD0 - _02222B8A - 2 ; case 2 + .short _02222BEA - _02222B8A - 2 ; case 3 +_02222B92: + add r0, r4, #0 + add r0, #0x1c + bl MOD08_02218704 + cmp r0, #1 + bne _02222BEC + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0x20 + str r0, [r4, #0x44] + b _02222BEC +_02222BAA: + ldr r0, [r4, #0x44] + sub r0, r0, #1 + str r0, [r4, #0x44] + bpl _02222BEC + ldr r0, [r4, #8] + mov r1, #8 + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0x10 + str r0, [sp] + mov r0, #0x18 + add r4, #0x1c + str r0, [sp, #4] + add r0, r4, #0 + add r2, r5, #0 + add r3, r1, #0 + bl MOD08_022186D4 + b _02222BEC +_02222BD0: + add r0, r4, #0 + add r0, #0x1c + bl MOD08_02218704 + cmp r0, #1 + bne _02222BEC + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + bl MOD08_0221894C + b _02222BEC +_02222BEA: + mov r5, #1 +_02222BEC: + add r0, r5, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02222BF4 +MOD08_02222BF4: ; 0x02222BF4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _02222C0A + cmp r0, #1 + beq _02222C2C + cmp r0, #2 + beq _02222C3E + pop {r4, r5, r6, pc} +_02222C0A: + ldr r0, [r4, #0x48] + bl FUN_0200C658 + cmp r0, #1 + bne _02222C1E + ldr r0, [r4, #0x10] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 +_02222C1E: + add r0, r4, #0 + bl MOD08_02222B70 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_02222C2C: + add r0, r4, #0 + bl MOD08_02222B70 + cmp r0, #0 + beq _02222CC4 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_02222C3E: + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215600 + add r1, r0, #0 + lsl r0, r5, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + lsl r1, r1, #0x18 + mov r0, #0 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4, #0x10] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02212014 + add r3, r0, #0 + lsl r0, r5, #0x18 + mov r1, #1 + lsr r0, r0, #0x18 + lsl r1, r1, #0xe + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4] + bl MOD08_02212490 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_02018744 + ldr r0, [r4] + add r1, r6, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_02222CC4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_02222CC8 +MOD08_02222CC8: ; 0x02222CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + mov r1, #0x4c + add r7, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r7, [r4] + add r0, r7, #0 + bl MOD08_02215504 + str r0, [r4, #0x18] + ldr r0, [r4] + mov r1, #0 + mov r2, #0x10 + bl MOD08_02227A00 + mov r2, #8 + str r2, [sp] + mov r0, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + mov r1, #0 + mov r3, #0x10 + bl MOD08_022186D4 + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #0x10] + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #0x10] + mov r1, #0x29 + bl FUN_0200782C + sub r0, r5, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r0, #0x28 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x48] + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + cmp r0, #5 + beq _02222D58 + cmp r0, #2 + bne _02222D6A +_02222D58: + ldr r0, [r4, #0x48] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4, #0x48] + mov r1, #2 + bl FUN_0200C6B0 + b _02222DA6 +_02222D6A: + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + str r0, [sp, #0x14] + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [sp, #0x14] + lsl r1, r1, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x18 + mov r0, #0 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4, #0x48] + mov r1, #0 + bl FUN_0200C644 +_02222DA6: + add r0, r7, #0 + mov r1, #1 + bl MOD08_022155C4 + neg r1, r5 + lsl r1, r1, #0x10 + sub r6, #0x28 + str r0, [sp, #0x18] + lsl r0, r6, #0x10 + asr r0, r0, #0x10 + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD08_02218998 + add r6, r0, #0 + add r0, r7, #0 + bl MOD08_02212014 + mov r1, #0x64 + str r1, [sp] + ldr r1, [sp, #0x18] + mov r3, #5 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + str r6, [sp, #0xc] + str r0, [sp, #0x10] + lsl r0, r5, #0x18 + add r5, #0x50 + lsl r1, r5, #0x18 + ldr r2, _02222E14 ; =0x0000038E + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + lsl r3, r3, #0xc + bl MOD08_022188DC + mov r2, #1 + str r0, [r4, #0x14] + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x18] + lsl r2, r2, #8 + mov r3, #8 + bl FUN_02003A64 + ldr r0, [r4] + ldr r1, _02222E18 ; =MOD08_02222BF4 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02222E14: .word 0x0000038E +_02222E18: .word MOD08_02222BF4 + + thumb_func_start MOD08_02222E1C +MOD08_02222E1C: ; 0x02222E1C + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #3 + bhi _02222F1E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02222E36: ; jump table + .short _02222E3E - _02222E36 - 2 ; case 0 + .short _02222E8E - _02222E36 - 2 ; case 1 + .short _02222ECC - _02222E36 - 2 ; case 2 + .short _02222F06 - _02222E36 - 2 ; case 3 +_02222E3E: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + bne _02222E70 + add r0, r4, #0 + add r0, #0x14 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x54] + bl _fflt + add r1, r0, #0 + ldr r0, [sp, #8] + bl _fmul + add r1, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [sp, #4] + bl FUN_0200C884 + b _02222F1E +_02222E70: + ldr r0, [r4, #0xc] + mov r1, #0xa + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #5 + str r0, [r4, #0x4c] + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x14 + add r2, r1, #0 + mov r3, #1 + bl MOD08_02218120 + b _02222F1E +_02222E8E: + add r0, r4, #0 + add r0, #0x38 + bl MOD08_02218058 + ldr r1, [r4, #0x38] + add r5, r0, #0 + lsl r1, r1, #0x10 + ldr r0, [r4, #0x10] + lsr r1, r1, #0x10 + bl FUN_0200C898 + cmp r5, #0 + bne _02222F1E + ldr r0, [r4, #0x4c] + cmp r0, #0 + ble _02222EC4 + sub r0, r0, #1 + str r0, [r4, #0x4c] + add r0, r4, #0 + ldr r1, [r4, #0x38] + ldr r2, [r4, #0x50] + add r0, #0x38 + mov r3, #4 + str r1, [r4, #0x50] + bl MOD08_02218008 + b _02222F1E +_02222EC4: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02222F1E +_02222ECC: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #1 + bne _02222EFE + add r0, r4, #0 + add r0, #0x14 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x54] + bl _fflt + add r1, r0, #0 + ldr r0, [sp, #8] + bl _fmul + add r1, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [sp, #4] + bl FUN_0200C884 + b _02222F1E +_02222EFE: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02222F1E +_02222F06: + ldr r0, [r4, #0x10] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, pc} +_02222F1E: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD08_02222F28 +MOD08_02222F28: ; 0x02222F28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0x58 + add r5, r0, #0 + add r7, r2, #0 + str r3, [sp, #4] + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + add r7, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl MOD08_02215680 + cmp r0, #1 + bne _02222F68 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x54] + neg r6, r7 + b _02222F6E +_02222F68: + mov r0, #1 + str r0, [r4, #0x54] + add r6, r7, #0 +_02222F6E: + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #0 + bl MOD08_02217B98 + str r0, [sp, #8] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #1 + bl MOD08_02217B98 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + mov r1, #2 + str r0, [r4, #0x10] + bl FUN_0200C840 + mov r1, #0xfe + lsl r1, r1, #0x16 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl FUN_0200C884 + ldr r0, [r4, #0x10] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + bl FUN_0200C714 + mov r1, #0x28 + mul r1, r7 + lsl r1, r1, #0x10 + ldr r0, [r4, #0x10] + asr r1, r1, #0x10 + mov r2, #0 + bl FUN_0200C82C + ldr r0, [r4, #0x10] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C6B0 + mov r1, #0xb + mvn r1, r1 + mul r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r4, #0x10] + asr r1, r1, #0x10 + mov r2, #0xc + bl FUN_0200C8DC + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + bl MOD08_02227470 + cmp r0, #4 + ldr r0, [r4, #0x10] + bne _02223000 + mov r1, #1 + bl FUN_0200C5C0 + b _02223006 +_02223000: + mov r1, #0 + bl FUN_0200C5C0 +_02223006: + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + mov r2, #0xa + add r0, #0x14 + mov r1, #1 + add r3, r2, #0 + bl MOD08_02218120 + cmp r6, #0 + blt _0222302E + add r0, r4, #0 + ldr r1, _02223050 ; =0x0000FF48 + ldr r2, _02223054 ; =0x0000E38D + add r0, #0x38 + mov r3, #4 + bl MOD08_02218008 + ldr r0, _02223050 ; =0x0000FF48 + b _0222303E +_0222302E: + add r0, r4, #0 + ldr r2, _02223058 ; =0x00001C71 + add r0, #0x38 + mov r1, #0 + mov r3, #4 + bl MOD08_02218008 + mov r0, #0 +_0222303E: + str r0, [r4, #0x50] + ldr r0, [r4] + ldr r1, _0222305C ; =MOD08_02222E1C + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02223050: .word 0x0000FF48 +_02223054: .word 0x0000E38D +_02223058: .word 0x00001C71 +_0222305C: .word MOD08_02222E1C + + thumb_func_start MOD08_02223060 +MOD08_02223060: ; 0x02223060 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + str r1, [r5] + add r6, r3, #0 + mov r3, #8 + mov r1, #0xa + add r4, r2, #0 + add r0, r5, #4 + add r2, r1, #0 + str r3, [sp] + bl MOD08_02218120 + mov r0, #3 + str r0, [r5, #0x2c] + mov r0, #8 + str r0, [r5, #0x30] + mov r0, #0xa + str r0, [r5, #0x34] + ldr r0, [sp, #0x18] + add r1, r4, #0 + str r0, [r5, #0x28] + ldr r0, [r5] + add r2, r6, #0 + bl FUN_0200C714 + ldr r0, [r5] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200C714 + ldr r0, [r5] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r5] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _022230C8 + mov r2, #0xfe + ldr r0, [r5] + ldr r1, _022230D4 ; =0xBF800000 + lsl r2, r2, #0x16 + bl FUN_0200C884 +_022230C8: + ldr r0, [r5] + mov r1, #0 + bl FUN_0200C644 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022230D4: .word 0xBF800000 + + thumb_func_start MOD08_022230D8 +MOD08_022230D8: ; 0x022230D8 + ldr r3, _022230E0 ; =0x0200C3DD + ldr r0, [r0] + bx r3 + nop +_022230E0: .word 0x0200C3DD + + thumb_func_start MOD08_022230E4 +MOD08_022230E4: ; 0x022230E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200C5E0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022230FC +MOD08_022230FC: ; 0x022230FC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, r4, #4 + bl MOD08_02218170 + cmp r0, #1 + bne _02223140 + add r0, r4, #4 + add r1, sp, #8 + add r2, sp, #4 + bl MOD08_0221825C + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _02223132 + ldr r1, [sp, #8] + mov r0, #0 + bl _fsub + add r1, r0, #0 + mov r2, #0xfe + ldr r0, [r4] + lsl r2, r2, #0x16 + bl FUN_0200C884 + b _02223172 +_02223132: + mov r2, #0xfe + ldr r0, [r4] + ldr r1, [sp, #8] + lsl r2, r2, #0x16 + bl FUN_0200C884 + b _02223172 +_02223140: + ldr r0, [r4, #0x2c] + cmp r0, #0 + ble _0222316C + sub r0, r0, #1 + str r0, [r4, #0x2c] + mov r0, #8 + str r0, [sp] + ldr r1, [r4, #0x30] + ldr r3, [r4, #0x34] + lsl r1, r1, #0x10 + lsl r3, r3, #0x10 + add r0, r4, #4 + asr r1, r1, #0x10 + mov r2, #0xa + asr r3, r3, #0x10 + bl MOD08_02218120 + ldr r1, [r4, #0x30] + ldr r0, [r4, #0x34] + str r0, [r4, #0x30] + str r1, [r4, #0x34] + b _02223172 +_0222316C: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_02223172: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD08_02223178 +MOD08_02223178: ; 0x02223178 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #3 + bhi _02223244 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02223190: ; jump table + .short _02223198 - _02223190 - 2 ; case 0 + .short _022231CA - _02223190 - 2 ; case 1 + .short _022231E8 - _02223190 - 2 ; case 2 + .short _02223208 - _02223190 - 2 ; case 3 +_02223198: + ldr r0, [r4, #0x10] + cmp r0, #4 + blt _022231C2 + mov r0, #0 + str r0, [r4, #0x10] + ldr r1, [r4, #0x14] + add r2, r4, #0 + mov r0, #0x38 + add r2, #0x44 + mul r0, r1 + add r0, r2, r0 + bl MOD08_022230E4 + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #4 + blt _022231C2 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] +_022231C2: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _02223244 +_022231CA: + mov r1, #0x1c + mov r2, #0x1e + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, #0x20 + bl MOD08_02218454 + cmp r0, #0 + bne _02223244 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02223244 +_022231E8: + add r5, r4, #0 + mov r6, #0 + add r5, #0x44 +_022231EE: + add r0, r5, #0 + bl MOD08_022230FC + add r6, r6, #1 + add r5, #0x38 + cmp r6, #4 + blt _022231EE + cmp r0, #0 + bne _02223244 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02223244 +_02223208: + mov r2, #0x1c + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x1e + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02007558 + add r5, r4, #0 + mov r6, #0 + add r5, #0x44 +_02223226: + add r0, r5, #0 + bl MOD08_022230D8 + add r6, r6, #1 + add r5, #0x38 + cmp r6, #4 + blt _02223226 + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_02223244: + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222324C +MOD08_0222324C: ; 0x0222324C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + str r1, [sp, #4] + mov r1, #0x4a + lsl r1, r1, #2 + add r4, r0, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + bl MOD08_02228064 + add r7, r0, #0 + ldr r0, [sp, #4] + str r4, [r7] + str r0, [r7, #4] + ldr r0, [sp, #8] + str r0, [r7, #8] + add r0, r4, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r7] + bl MOD08_022154D4 + str r0, [r7, #0x18] + mov r1, #0 + bl FUN_0200782C + strh r0, [r7, #0x1c] + ldr r0, [r7, #0x18] + mov r1, #1 + bl FUN_0200782C + strh r0, [r7, #0x1e] + add r0, r7, #0 + mov r3, #1 + add r0, #0x20 + mov r1, #4 + mov r2, #0 + str r3, [sp] + bl MOD08_022183C0 + mov r0, #0x1e + ldrsh r4, [r7, r0] + ldr r1, [r7] + add r0, sp, #0x14 + add r4, #0x10 + mov r5, #0 + bl MOD08_02215474 + add r0, r5, #0 + add r6, r7, #0 + str r0, [sp, #0x10] + add r6, #0x44 +_022232B6: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _022232D0 + str r5, [sp] + mov r2, #0x1c + lsl r3, r4, #0x10 + ldrsh r2, [r7, r2] + ldr r1, [sp, #0xc] + add r0, r6, #0 + asr r3, r3, #0x10 + bl MOD08_02223060 + b _022232EC +_022232D0: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, sp, #0x14 + bl FUN_0200C154 + lsl r3, r4, #0x10 + add r1, r0, #0 + str r5, [sp] + mov r2, #0x1c + ldrsh r2, [r7, r2] + add r0, r6, #0 + asr r3, r3, #0x10 + bl MOD08_02223060 +_022232EC: + mov r0, #1 + eor r5, r0 + ldr r0, [sp, #0x10] + sub r4, #0xa + add r0, r0, #1 + add r6, #0x38 + str r0, [sp, #0x10] + cmp r0, #4 + blt _022232B6 + ldr r0, [r7] + ldr r1, _0222330C ; =MOD08_02223178 + add r2, r7, #0 + bl MOD08_02212400 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222330C: .word MOD08_02223178 + + thumb_func_start MOD08_02223310 +MOD08_02223310: ; 0x02223310 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #6 + bls _02223320 + b _022234D2 +_02223320: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222332C: ; jump table + .short _0222333A - _0222332C - 2 ; case 0 + .short _0222337C - _0222332C - 2 ; case 1 + .short _022233DC - _0222332C - 2 ; case 2 + .short _0222341C - _0222332C - 2 ; case 3 + .short _0222343C - _0222332C - 2 ; case 4 + .short _0222347A - _0222332C - 2 ; case 5 + .short _022234BA - _0222332C - 2 ; case 6 +_0222333A: + add r0, r4, #0 + add r0, #0x18 + bl MOD08_02217ECC + cmp r0, #0 + beq _0222335C + mov r2, #0x14 + mov r3, #0x16 + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0x10] + add r0, #0x18 + bl MOD08_02217CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0222335C: + mov r2, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r1, #0x18 + add r0, r4, #0 + ldrsh r1, [r4, r1] + add r0, #0x18 + add r3, r2, #0 + bl MOD08_02217E80 + ldr r0, [r4, #0xc] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0222337C: + add r0, r4, #0 + add r0, #0x18 + bl MOD08_02217ECC + cmp r0, #0 + beq _0222339E + mov r2, #0x14 + mov r3, #0x16 + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0x10] + add r0, #0x18 + bl MOD08_02217CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0222339E: + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007558 + mov r1, #0 + str r1, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r2, [r4, #0x3c] + add r0, r4, #0 + lsl r2, r2, #5 + neg r2, r2 + lsl r2, r2, #0x10 + add r0, #0x18 + asr r2, r2, #0x10 + add r3, r1, #0 + bl MOD08_02217E80 + ldr r0, [r4, #0xc] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022233DC: + add r0, r4, #0 + ldr r2, [r4, #0x48] + add r0, #0x4c + add r1, #0x70 + bl MOD08_02217FE4 + cmp r0, #0 + bne _022234D2 + mov r0, #0x46 + ldrsh r0, [r4, r0] + add r1, r4, #0 + mov r2, #0x44 + str r0, [sp] + mov r0, #0x16 + ldrsh r0, [r4, r0] + mov r3, #0x14 + add r1, #0x70 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r0, _022234DC ; =0xFFFE0000 + str r0, [sp, #0xc] + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + add r0, #0x4c + bl MOD08_02217F50 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _022234D2 +_0222341C: + add r0, r4, #0 + ldr r2, [r4, #0x48] + add r0, #0x4c + add r1, #0x70 + bl MOD08_02217FE4 + cmp r0, #0 + bne _022234D2 + ldr r0, [r4, #0x48] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _022234D2 +_0222343C: + add r0, r4, #0 + add r0, #0x18 + bl MOD08_02217ECC + cmp r0, #0 + beq _0222345C + mov r2, #0x14 + mov r3, #0x16 + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0x10] + add r0, #0x18 + bl MOD08_02217CD0 + b _022234D2 +_0222345C: + mov r2, #0 + str r2, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r1, #0x18 + add r0, r4, #0 + ldrsh r1, [r4, r1] + add r0, #0x18 + add r3, r2, #0 + bl MOD08_02217E80 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _022234D2 +_0222347A: + add r0, r4, #0 + add r0, #0x18 + bl MOD08_02217ECC + cmp r0, #0 + beq _0222349A + mov r2, #0x14 + mov r3, #0x16 + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0x10] + add r0, #0x18 + bl MOD08_02217CD0 + b _022234D2 +_0222349A: + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _022234D2 +_022234BA: + ldr r0, [r4, #0x48] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x10 + pop {r3, r4, r5, pc} +_022234D2: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022234DC: .word 0xFFFE0000 + + thumb_func_start MOD08_022234E0 +MOD08_022234E0: ; 0x022234E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + mov r1, #0x94 + add r5, r0, #0 + str r2, [sp, #0x10] + add r6, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + ldr r0, [sp, #0x10] + str r7, [r4, #4] + str r0, [r4, #8] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x14] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x16] + mov r1, #0 + str r1, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r2, [r4, #0x3c] + add r0, r4, #0 + lsl r2, r2, #4 + neg r2, r2 + lsl r2, r2, #0x10 + add r0, #0x18 + asr r2, r2, #0x10 + add r3, r1, #0 + bl MOD08_02217E80 + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #0x40] + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x44 + strh r0, [r1] + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x46 + strh r0, [r1] + add r0, r6, #0 + mov r1, #1 + str r6, [r4, #0x48] + bl FUN_0200C5E0 + ldr r0, [r4, #0x48] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x48] + mov r1, #1 + bl FUN_0200C6B0 + mov r0, #0x16 + ldrsh r0, [r4, r0] + add r1, r4, #0 + mov r2, #0x14 + str r0, [sp] + mov r0, #0x46 + ldrsh r0, [r4, r0] + mov r3, #0x44 + add r1, #0x70 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #2 + lsl r0, r0, #0x10 + str r0, [sp, #0xc] + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + add r0, #0x4c + bl MOD08_02217F50 + ldr r0, [r4] + ldr r1, _022235C8 ; =MOD08_02223310 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022235C8: .word MOD08_02223310 + + thumb_func_start MOD08_022235CC +MOD08_022235CC: ; 0x022235CC + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _02223676 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022235E6: ; jump table + .short _022235EE - _022235E6 - 2 ; case 0 + .short _0222361A - _022235E6 - 2 ; case 1 + .short _0222363E - _022235E6 - 2 ; case 2 + .short _02223664 - _022235E6 - 2 ; case 3 +_022235EE: + mov r2, #0x1a + ldrsh r3, [r4, r2] + mov r2, #0x68 + ldrsh r2, [r4, r2] + mov r1, #0x18 + ldrsh r1, [r4, r1] + sub r2, r3, r2 + add r0, r4, #0 + lsl r2, r2, #0x10 + ldr r3, [r4, #0x14] + add r0, #0x1c + asr r2, r2, #0x10 + bl MOD08_02217E30 + cmp r0, #0 + bne _02223676 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0x10 + str r0, [r4, #0xc] + b _02223676 +_0222361A: + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] + bpl _02223676 + ldr r0, [r4, #8] + mov r2, #0x10 + add r0, r0, #1 + str r0, [r4, #8] + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x40 + add r3, r2, #0 + bl MOD08_022186D4 + b _02223676 +_0222363E: + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02218704 + cmp r0, #0 + beq _02223676 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4, #0x10] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02223676 +_02223664: + ldr r0, [r4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r4, pc} +_02223676: + ldr r0, [r4, #4] + bl FUN_0200BC1C + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_02223680 +MOD08_02223680: ; 0x02223680 + push {r4, r5, r6, lr} + sub sp, #8 + mov r1, #0x6c + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #4] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x18] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x1a] + ldr r0, [r4, #0x10] + mov r1, #0x29 + bl FUN_0200782C + add r1, r4, #0 + add r1, #0x68 + strh r0, [r1] + mov r0, #0x1a + ldrsh r0, [r4, r0] + mov r1, #0 + add r0, #8 + strh r0, [r4, #0x1a] + ldr r0, [r4] + bl MOD08_022124D8 + str r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x10] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x1c + mov r1, #2 + mov r2, #0x10 + bl MOD08_02218654 + ldr r0, [r4] + mov r1, #0x10 + mov r2, #0 + bl MOD08_02227994 + mov r1, #0x10 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0 + add r0, #0x40 + add r3, r2, #0 + bl MOD08_022186D4 + ldr r0, [r4, #0x28] + add r2, r4, #0 + add r1, r0, #0 + mul r1, r6 + str r1, [r4, #0x28] + ldr r0, [r4] + ldr r1, _02223740 ; =MOD08_022235CC + bl MOD08_02212400 + ldr r0, [r4, #4] + bl FUN_0200BC1C + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02223740: .word MOD08_022235CC + + thumb_func_start MOD08_02223744 +MOD08_02223744: ; 0x02223744 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + mov r4, #0 + cmp r0, #0 + beq _0222375A + cmp r0, #1 + beq _0222378E + cmp r0, #2 + beq _022237BA + b _022237BC +_0222375A: + add r0, r5, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #0 + beq _02223774 + mov r2, #0x16 + ldrsh r2, [r5, r2] + ldr r0, [r5, #0x10] + mov r1, #0xd + bl FUN_02007558 + b _022237BC +_02223774: + ldr r0, [r5, #0x38] + mov r2, #0xa + add r0, r0, #1 + str r0, [r5, #0x38] + mov r0, #0xc + add r5, #0x14 + str r0, [sp] + add r0, r5, #0 + mov r1, #0xf + add r3, r2, #0 + bl MOD08_02218120 + b _022237BC +_0222378E: + add r0, r5, #0 + add r0, #0x14 + bl MOD08_02218170 + cmp r0, #0 + ldr r0, [r5, #0x10] + beq _022237A8 + mov r2, #0x16 + ldrsh r2, [r5, r2] + mov r1, #0xd + bl FUN_02007558 + b _022237BC +_022237A8: + mov r1, #0xd + add r2, r1, #0 + add r2, #0xf3 + bl FUN_02007558 + ldr r0, [r5, #0x38] + add r0, r0, #1 + str r0, [r5, #0x38] + b _022237BC +_022237BA: + mov r4, #1 +_022237BC: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_022237C0 +MOD08_022237C0: ; 0x022237C0 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x40] + mov r4, #0 + cmp r0, #0 + beq _022237D8 + cmp r0, #1 + beq _0222381E + cmp r0, #2 + beq _0222383A + b _0222383C +_022237D8: + add r0, r5, #0 + ldr r1, [r5, #0x3c] + add r0, #0x44 + bl MOD08_02218360 + add r0, r5, #0 + add r0, #0x68 + bl MOD08_02217ECC + cmp r0, #0 + beq _02223802 + mov r2, #0xb4 + mov r3, #0xb6 + add r0, r5, #0 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r1, [r5, #0x3c] + add r0, #0x68 + bl MOD08_02217C94 + b _0222383C +_02223802: + ldr r0, [r5, #0x40] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r5, #0x40] + str r1, [sp] + mov r0, #8 + add r5, #0x8c + str r0, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + mov r3, #0xe + bl MOD08_022186D4 + b _0222383C +_0222381E: + add r0, r5, #0 + add r0, #0x8c + bl MOD08_02218704 + cmp r0, #0 + beq _0222383C + ldr r0, [r5, #0x3c] + add r1, r4, #0 + bl FUN_0200C644 + ldr r0, [r5, #0x40] + add r0, r0, #1 + str r0, [r5, #0x40] + b _0222383C +_0222383A: + mov r4, #1 +_0222383C: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02223844 +MOD08_02223844: ; 0x02223844 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02223856 + cmp r0, #1 + beq _0222386E + b _02223884 +_02223856: + add r0, r4, #0 + bl MOD08_02223744 + add r0, r4, #0 + bl MOD08_022237C0 + cmp r0, #0 + beq _02223884 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02223884 +_0222386E: + ldr r0, [r4, #0x3c] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_02223884: + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_0222388C +MOD08_0222388C: ; 0x0222388C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + mov r1, #0xb8 + add r6, r0, #0 + add r7, r2, #0 + str r3, [sp, #8] + bl MOD08_02228064 + add r4, r0, #0 + str r6, [r4] + str r5, [r4, #4] + str r7, [r4, #8] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C1C + str r0, [sp, #0xc] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02217C44 + add r5, r0, #0 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #0x10] + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x14 + add r2, r1, #0 + mov r3, #0xf + bl MOD08_02218120 + ldr r0, [sp, #8] + mov r1, #1 + str r0, [r4, #0x3c] + bl FUN_0200C5E0 + ldr r0, [r4, #0x3c] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x3c] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [sp, #0xc] + lsl r0, r0, #5 + add r1, r7, r0 + add r0, r4, #0 + add r0, #0xb4 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xb6 + strh r6, [r0] + cmp r5, #0 + bge _02223942 + mov r1, #7 + b _02223944 +_02223942: + mov r1, #0x17 +_02223944: + mvn r1, r1 + add r0, r1, #0 + mul r0, r5 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r1, #0 + mov r0, #0x20 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x68 + add r2, r1, #0 + add r3, r1, #0 + bl MOD08_02217E80 + mov r0, #0x20 + str r0, [sp] + add r0, r4, #0 + add r0, #0x44 + mov r1, #5 + mov r2, #0xa + mov r3, #0xc + bl MOD08_02218120 + mov r0, #0x1a + str r0, [sp] + ldr r0, _02223994 ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x1f + bl G2x_SetBlendAlpha_ + ldr r0, [r4] + ldr r1, _02223998 ; =MOD08_02223844 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02223994: .word 0x04000050 +_02223998: .word MOD08_02223844 + + thumb_func_start MOD08_0222399C +MOD08_0222399C: ; 0x0222399C + push {r3, lr} + sub sp, #8 + ldr r1, [r0, #0x68] + cmp r1, #5 + bhi _02223A50 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022239B2: ; jump table + .short _022239BE - _022239B2 - 2 ; case 0 + .short _022239D4 - _022239B2 - 2 ; case 1 + .short _022239EE - _022239B2 - 2 ; case 2 + .short _02223A08 - _022239B2 - 2 ; case 3 + .short _02223A22 - _022239B2 - 2 ; case 4 + .short _02223A38 - _022239B2 - 2 ; case 5 +_022239BE: + mov r2, #0x28 + str r2, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x18 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_022239D4: + mov r1, #0x4f + mvn r1, r1 + str r1, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x18 + add r2, r1, #0 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_022239EE: + mov r1, #0x50 + str r1, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r1, #0 + add r2, r1, #0 + add r0, #0x18 + sub r2, #0x50 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223A08: + mov r1, #0x4f + mvn r1, r1 + str r1, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x18 + add r2, r1, #0 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223A22: + mov r2, #0x50 + str r2, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x18 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223A38: + mov r2, #0x27 + mvn r2, r2 + str r2, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x18 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223A50: + bl ErrorHandling + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD08_02223A58 +MOD08_02223A58: ; 0x02223A58 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #4 + bls _02223A68 + b _02223B7C +_02223A68: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02223A74: ; jump table + .short _02223A7E - _02223A74 - 2 ; case 0 + .short _02223A9A - _02223A74 - 2 ; case 1 + .short _02223B1C - _02223A74 - 2 ; case 2 + .short _02223B52 - _02223A74 - 2 ; case 3 + .short _02223B64 - _02223A74 - 2 ; case 4 +_02223A7E: + ldr r0, [r4, #0x6c] + add r0, r0, #1 + str r0, [r4, #0x6c] + cmp r0, #4 + ble _02223B7C + add r0, r4, #0 + bl MOD08_0222399C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x6c] + b _02223B7C +_02223A9A: + add r0, r4, #0 + add r0, #0x18 + bl MOD08_02217ECC + cmp r0, #0 + beq _02223ABA + mov r2, #0x64 + mov r3, #0x66 + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0x14] + add r0, #0x18 + bl MOD08_02217C94 + b _02223B7C +_02223ABA: + ldr r0, [r4, #0x68] + add r0, r0, #1 + str r0, [r4, #0x68] + cmp r0, #6 + bge _02223AEA + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #0x64 + ldrsh r1, [r4, r0] + mov r0, #0x18 + ldrsh r0, [r4, r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x64 + strh r1, [r0] + mov r0, #0x66 + ldrsh r1, [r4, r0] + mov r0, #0x1a + ldrsh r0, [r4, r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x66 + strh r1, [r0] + b _02223B7C +_02223AEA: + ldr r0, [r4, #0xc] + mov r1, #1 + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x14] + bl FUN_0200C90C + mov r1, #0x10 + add r0, r4, #0 + mov r2, #0 + str r1, [sp] + add r0, #0x3c + add r3, r2, #0 + str r1, [sp, #4] + bl MOD08_022186D4 + ldr r0, _02223B88 ; =0x00007FFF + mov r1, #0 + str r0, [sp] + ldr r0, [r4, #0x10] + mov r2, #0xa + add r3, r1, #0 + bl FUN_02007E68 + b _02223B7C +_02223B1C: + add r0, r4, #0 + add r0, #0x3c + bl MOD08_02218704 + cmp r0, #0 + beq _02223B30 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200C644 +_02223B30: + ldr r0, [r4, #0x10] + bl FUN_02007F20 + cmp r0, #0 + bne _02223B7C + ldr r0, [r4, #0xc] + mov r2, #0 + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, _02223B88 ; =0x00007FFF + mov r1, #0xa + str r0, [sp] + ldr r0, [r4, #0x10] + add r3, r2, #0 + bl FUN_02007E68 + b _02223B7C +_02223B52: + ldr r0, [r4, #0x10] + bl FUN_02007F20 + cmp r0, #0 + bne _02223B7C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02223B7C +_02223B64: + ldr r0, [r4, #0x14] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, pc} +_02223B7C: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02223B88: .word 0x00007FFF + + thumb_func_start MOD08_02223B8C +MOD08_02223B8C: ; 0x02223B8C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x70 + add r5, r0, #0 + str r2, [sp] + add r6, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x10] + str r6, [r4, #0x14] + add r0, r6, #0 + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C6B0 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x64 + add r2, #0x66 + bl FUN_0200C7A0 + ldr r0, [r4] + ldr r1, _02223BE4 ; =MOD08_02223A58 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_02223BE4: .word MOD08_02223A58 + + thumb_func_start MOD08_02223BE8 +MOD08_02223BE8: ; 0x02223BE8 + push {r3, lr} + sub sp, #8 + ldr r1, [r0, #0x50] + cmp r1, #3 + bhi _02223C6A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02223BFE: ; jump table + .short _02223C06 - _02223BFE - 2 ; case 0 + .short _02223C1C - _02223BFE - 2 ; case 1 + .short _02223C36 - _02223BFE - 2 ; case 2 + .short _02223C50 - _02223BFE - 2 ; case 3 +_02223C06: + mov r2, #0x50 + str r2, [sp] + mov r1, #4 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x28 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223C1C: + mov r1, #0x4f + mvn r1, r1 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x28 + add r2, r1, #0 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223C36: + mov r1, #0x50 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + mov r1, #0 + add r2, r1, #0 + add r0, #0x28 + sub r2, #0x50 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223C50: + mov r1, #0x27 + mvn r1, r1 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x28 + mov r2, #0x28 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02223C6A: + bl ErrorHandling + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02223C74 +MOD08_02223C74: ; 0x02223C74 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #6 + bhi _02223D7E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02223C8E: ; jump table + .short _02223C9C - _02223C8E - 2 ; case 0 + .short _02223CB8 - _02223C8E - 2 ; case 1 + .short _02223D24 - _02223C8E - 2 ; case 2 + .short _02223D80 - _02223C8E - 2 ; case 3 + .short _02223DE2 - _02223C8E - 2 ; case 4 + .short _02223E02 - _02223C8E - 2 ; case 5 + .short _02223E30 - _02223C8E - 2 ; case 6 +_02223C9C: + ldr r0, [r4, #0x54] + add r0, r0, #1 + str r0, [r4, #0x54] + cmp r0, #1 + ble _02223D7E + add r0, r4, #0 + bl MOD08_02223BE8 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x54] + b _02223E48 +_02223CB8: + add r0, r4, #0 + add r0, #0x28 + bl MOD08_02217ECC + cmp r0, #0 + beq _02223CD8 + mov r2, #0x4c + mov r3, #0x4e + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #0x24] + add r0, #0x28 + bl MOD08_02217C94 + b _02223E48 +_02223CD8: + ldr r0, [r4, #0x50] + add r0, r0, #1 + str r0, [r4, #0x50] + cmp r0, #4 + bge _02223D08 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #0x4c + ldrsh r1, [r4, r0] + mov r0, #0x28 + ldrsh r0, [r4, r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x4c + strh r1, [r0] + mov r0, #0x4e + ldrsh r1, [r4, r0] + mov r0, #0x2a + ldrsh r0, [r4, r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x4e + strh r1, [r0] + b _02223E48 +_02223D08: + ldr r0, [r4, #0xc] + mov r1, #1 + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #8 + str r0, [r4, #0x54] + ldr r0, [r4, #0x24] + bl FUN_0200C5C0 + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200C5E0 + b _02223E48 +_02223D24: + ldr r0, [r4, #0x54] + sub r0, r0, #1 + str r0, [r4, #0x54] + bpl _02223D7E + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4] + bl MOD08_02215504 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02214540 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _02223E54 ; =0x0000FFFF + mov r1, #1 + lsl r2, r2, #0x10 + add r3, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + lsr r2, r2, #0x10 + sub r3, #9 + bl FUN_02003210 + ldr r7, _02223E54 ; =0x0000FFFF + mov r6, #0 + add r5, r4, #0 +_02223D64: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _02223D76 + mov r1, #0xe + mov r2, #0x10 + mov r3, #0 + str r7, [sp] + bl FUN_02007E68 +_02223D76: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02223D64 +_02223D7E: + b _02223E48 +_02223D80: + ldr r0, [r4] + bl MOD08_02215504 + bl FUN_020038E4 + cmp r0, #0 + bne _02223E48 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4] + bl MOD08_02215504 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02214540 + add r2, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _02223E54 ; =0x0000FFFF + mov r1, #1 + lsl r2, r2, #0x10 + add r3, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + lsr r2, r2, #0x10 + sub r3, #9 + bl FUN_02003210 + ldr r7, _02223E54 ; =0x0000FFFF + mov r6, #0 + add r5, r4, #0 +_02223DC6: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _02223DD8 + mov r2, #0 + mov r1, #2 + add r3, r2, #0 + str r7, [sp] + bl FUN_02007E68 +_02223DD8: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02223DC6 + b _02223E48 +_02223DE2: + ldr r0, [r4] + bl MOD08_02215504 + bl FUN_020038E4 + cmp r0, #0 + bne _02223E48 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #4 + str r0, [r4, #0x54] + str r0, [r4, #0x50] + mov r0, #0 + str r0, [r4, #0x58] + b _02223E48 +_02223E02: + ldr r0, [r4, #0x54] + sub r0, r0, #1 + str r0, [r4, #0x54] + bpl _02223E48 + mov r0, #4 + str r0, [r4, #0x54] + ldr r0, [r4, #0x50] + sub r0, r0, #1 + str r0, [r4, #0x50] + bpl _02223E1E + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02223E48 +_02223E1E: + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x58] + bl FUN_0200C644 + ldr r1, [r4, #0x58] + mov r0, #1 + eor r0, r1 + str r0, [r4, #0x58] + b _02223E48 +_02223E30: + ldr r0, [r4, #0x24] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02223E48: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02223E54: .word 0x0000FFFF + + thumb_func_start MOD08_02223E58 +MOD08_02223E58: ; 0x02223E58 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0x5c + add r5, r0, #0 + str r2, [sp, #4] + add r7, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + ldr r0, [sp, #4] + str r6, [r4, #4] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r6, #0 + add r5, r4, #0 +_02223E88: + ldr r0, [r4] + add r1, r6, #0 + bl MOD08_022154D4 + str r0, [r5, #0x14] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02223E88 + str r7, [r4, #0x24] + add r0, r7, #0 + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200C6B0 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x24] + add r1, #0x4c + add r2, #0x4e + bl FUN_0200C7A0 + mov r1, #0x4c + ldrsh r2, [r4, r1] + add r0, r4, #0 + add r0, #0x4c + sub r2, #0x28 + strh r2, [r0] + mov r2, #0x4e + ldrsh r3, [r4, r2] + add r0, r4, #0 + add r0, #0x4e + sub r3, #0x28 + strh r3, [r0] + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + bl FUN_0200C714 + ldr r0, [r4, #0x24] + mov r1, #1 + bl FUN_0200C90C + mov r0, #0xf + mvn r0, r0 + str r0, [r4, #0x54] + mov r0, #0x1a + str r0, [sp] + ldr r0, _02223F08 ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x1f + bl G2x_SetBlendAlpha_ + ldr r0, [r4] + ldr r1, _02223F0C ; =MOD08_02223C74 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02223F08: .word 0x04000050 +_02223F0C: .word MOD08_02223C74 + + thumb_func_start MOD08_02223F10 +MOD08_02223F10: ; 0x02223F10 + push {r3, r4, r5, lr} + ldr r2, _02223F50 ; =0x00000AAA + add r4, r0, #0 + add r5, r1, #0 + add r0, #0x10 + mov r1, #0 + mov r3, #3 + bl MOD08_02218030 + cmp r5, #0 + beq _02223F3C + mov r0, #0 + ldr r1, [r4, #0x18] + mvn r0, r0 + mul r0, r1 + str r0, [r4, #0x18] + ldr r0, [r4, #8] + mov r1, #0xa + mov r2, #0x10 + bl FUN_02007558 + b _02223F48 +_02223F3C: + mov r1, #0xa + add r2, r1, #0 + ldr r0, [r4, #8] + sub r2, #0x1a + bl FUN_02007558 +_02223F48: + mov r0, #0 + str r0, [r4, #0x4c] + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} + .align 2, 0 +_02223F50: .word 0x00000AAA + + thumb_func_start MOD08_02223F54 +MOD08_02223F54: ; 0x02223F54 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x4c] + mov r5, #0 + cmp r0, #3 + bhi _0222405E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02223F6E: ; jump table + .short _02223F76 - _02223F6E - 2 ; case 0 + .short _02223FB6 - _02223F6E - 2 ; case 1 + .short _02224012 - _02223F6E - 2 ; case 2 + .short _0222405C - _02223F6E - 2 ; case 3 +_02223F76: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218080 + ldr r0, [r4, #8] + ldr r2, [r4, #0x10] + mov r1, #9 + bl FUN_02007558 + ldr r0, [r4, #0x50] + sub r0, r0, #1 + str r0, [r4, #0x50] + bpl _0222405E + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + mov r0, #0xe + ldrsh r3, [r4, r0] + mov r0, #0xc + ldrsh r1, [r4, r0] + add r0, r3, #2 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r0, #2 + add r4, #0x24 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + bl MOD08_02217E80 + b _0222405E +_02223FB6: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218080 + cmp r0, #0 + beq _02223FCC + ldr r0, [r4, #8] + ldr r2, [r4, #0x10] + mov r1, #9 + bl FUN_02007558 +_02223FCC: + add r0, r4, #0 + ldr r1, [r4, #8] + add r0, #0x24 + bl MOD08_02217F2C + cmp r0, #0 + bne _0222405E + ldr r0, [r4, #0x4c] + mov r2, #0 + add r0, r0, #1 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x10] + add r0, r4, #0 + lsl r1, r1, #0x10 + add r0, #0x10 + asr r1, r1, #0x10 + mov r3, #3 + bl MOD08_02218030 + mov r0, #0xe + ldrsh r3, [r4, r0] + mov r0, #0xc + ldrsh r1, [r4, r0] + mov r0, #2 + add r4, #0x24 + str r3, [sp] + add r3, r3, #2 + lsl r3, r3, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + asr r3, r3, #0x10 + bl MOD08_02217E80 + b _0222405E +_02224012: + add r0, r4, #0 + ldr r1, [r4, #8] + add r0, #0x24 + bl MOD08_02217F2C + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02218080 + cmp r0, #0 + ldr r0, [r4, #8] + beq _02224034 + ldr r2, [r4, #0x10] + mov r1, #9 + bl FUN_02007558 + b _0222405E +_02224034: + mov r2, #0xc + ldrsh r2, [r4, r2] + add r1, r5, #0 + bl FUN_02007558 + mov r2, #0xe + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_02007558 + ldr r0, [r4, #8] + mov r1, #9 + add r2, r5, #0 + bl FUN_02007558 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222405E +_0222405C: + mov r5, #1 +_0222405E: + add r0, r5, #0 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02224064 +MOD08_02224064: ; 0x02224064 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02224076 + cmp r0, #1 + beq _022240A8 + pop {r4, pc} +_02224076: + add r0, r4, #0 + bl MOD08_02223F54 + cmp r0, #0 + beq _022240B6 + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] + cmp r0, #4 + bge _022240A0 + ldr r1, [r4, #0x54] + mov r0, #1 + eor r1, r0 + add r0, r4, #0 + str r1, [r4, #0x54] + bl MOD08_02223F10 + add r0, r4, #0 + bl MOD08_02223F54 + pop {r4, pc} +_022240A0: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022240A8: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_022240B6: + pop {r4, pc} + + thumb_func_start MOD08_022240B8 +MOD08_022240B8: ; 0x022240B8 + push {r4, r5, r6, lr} + mov r1, #0x58 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #4] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02217C1C + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD08_02212498 + cmp r0, #0 + bne _02224104 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0xc] + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200782C + b _02224124 +_02224104: + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0xc] + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200782C +_02224124: + strh r0, [r4, #0xe] + ldr r0, [r4, #8] + mov r1, #0xb + mov r2, #0x32 + bl FUN_02007558 + cmp r6, #1 + bne _02224138 + mov r0, #0 + b _0222413A +_02224138: + mov r0, #1 +_0222413A: + str r0, [r4, #0x54] + ldr r1, [r4, #0x54] + add r0, r4, #0 + bl MOD08_02223F10 + ldr r0, [r4, #4] + ldr r1, _02224150 ; =MOD08_02224064 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + .align 2, 0 +_02224150: .word MOD08_02224064 + + thumb_func_start MOD08_02224154 +MOD08_02224154: ; 0x02224154 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + mov r5, #0 + cmp r0, #3 + bhi _02224210 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222416C: ; jump table + .short _02224174 - _0222416C - 2 ; case 0 + .short _022241A4 - _0222416C - 2 ; case 1 + .short _022241C6 - _0222416C - 2 ; case 2 + .short _022241F6 - _0222416C - 2 ; case 3 +_02224174: + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_02218380 + cmp r0, #0 + beq _0222419C + add r0, r5, #0 + str r0, [sp] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x40] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_022182DC + b _02224210 +_0222419C: + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + b _02224210 +_022241A4: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _02224210 + ldr r0, [r4, #0x38] + mov r2, #0xa + add r0, r0, #1 + str r0, [r4, #0x38] + mov r0, #8 + add r4, #0x10 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xf + add r3, r2, #0 + bl MOD08_02218120 + b _02224210 +_022241C6: + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + bl MOD08_02218380 + cmp r0, #0 + beq _022241EE + add r0, r5, #0 + str r0, [sp] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x40] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x24] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_022182DC + b _02224210 +_022241EE: + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + b _02224210 +_022241F6: + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #0xc] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0xc] + add r2, #0xf3 + bl FUN_02007558 + mov r5, #1 +_02224210: + add r0, r5, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02224214 +MOD08_02224214: ; 0x02224214 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0222422A + cmp r0, #1 + beq _02224240 + cmp r0, #2 + beq _02224250 + pop {r4, pc} +_0222422A: + add r0, r4, #0 + bl MOD08_02224154 + cmp r0, #0 + beq _0222425E + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x10 + str r0, [r4, #8] + pop {r4, pc} +_02224240: + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + bpl _0222425E + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, pc} +_02224250: + ldr r0, [r4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_0222425E: + pop {r4, pc} + + thumb_func_start MOD08_02224260 +MOD08_02224260: ; 0x02224260 + push {r3, r4, r5, lr} + mov r1, #0x44 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x10 + add r2, r1, #0 + mov r3, #0xf + bl MOD08_02218120 + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C + str r0, [r4, #0x40] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + str r0, [r4, #0x3c] + ldr r0, [r4] + ldr r1, _022242BC ; =MOD08_02224214 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_022242BC: .word MOD08_02224214 + + thumb_func_start MOD08_022242C0 +MOD08_022242C0: ; 0x022242C0 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x74] + mov r1, #0x64 + bl _s32_div_f + add r4, r0, #0 + ldr r0, [r5, #0x78] + mov r1, #0x64 + bl _s32_div_f + add r6, r0, #0 + ldr r0, [r5, #0x70] + mov r1, #0x64 + bl _s32_div_f + str r0, [sp] + add r0, r5, #0 + lsl r1, r4, #0x10 + lsl r3, r6, #0x10 + add r0, #0x18 + asr r1, r1, #0x10 + mov r2, #0xa + asr r3, r3, #0x10 + bl MOD08_02218120 + ldr r0, [r5] + mov r1, #0x10 + mov r2, #0 + bl MOD08_02227994 + ldr r0, [r5, #0x70] + mov r1, #0x64 + bl _s32_div_f + mov r1, #6 + str r1, [sp] + lsl r0, r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x3c + mov r1, #0x10 + mov r2, #0xa + mov r3, #0 + bl MOD08_022186D4 + mov r0, #0 + str r0, [r5, #0x64] + str r0, [r5, #0x68] + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02224328 +MOD08_02224328: ; 0x02224328 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + mov r5, #0 + cmp r0, #3 + bhi _022243FC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02224340: ; jump table + .short _02224348 - _02224340 - 2 ; case 0 + .short _0222438E - _02224340 - 2 ; case 1 + .short _022243E4 - _02224340 - 2 ; case 2 + .short _022243FA - _02224340 - 2 ; case 3 +_02224348: + add r0, r4, #0 + ldr r1, [r4, #0x14] + add r0, #0x18 + bl MOD08_02218360 + cmp r0, #0 + bne _022243FC + ldr r0, [r4, #0x78] + mov r1, #0x64 + bl _s32_div_f + add r6, r0, #0 + ldr r0, [r4, #0x74] + mov r1, #0x64 + bl _s32_div_f + add r7, r0, #0 + ldr r0, [r4, #0x70] + mov r1, #0x64 + bl _s32_div_f + str r0, [sp] + add r0, r4, #0 + lsl r1, r6, #0x10 + lsl r3, r7, #0x10 + add r0, #0x18 + asr r1, r1, #0x10 + mov r2, #0xa + asr r3, r3, #0x10 + bl MOD08_02218120 + ldr r0, [r4, #0x64] + add r0, r0, #1 + str r0, [r4, #0x64] + b _022243FC +_0222438E: + add r0, r4, #0 + ldr r1, [r4, #0x14] + add r0, #0x18 + bl MOD08_02218360 + cmp r0, #0 + bne _022243FC + ldr r0, [r4, #0x68] + add r0, r0, #1 + str r0, [r4, #0x68] + cmp r0, #2 + bge _022243DC + add r0, r5, #0 + str r0, [r4, #0x64] + ldr r0, [r4, #0x74] + mov r1, #0x64 + bl _s32_div_f + add r6, r0, #0 + ldr r0, [r4, #0x78] + mov r1, #0x64 + bl _s32_div_f + add r7, r0, #0 + ldr r0, [r4, #0x70] + mov r1, #0x64 + bl _s32_div_f + lsl r1, r6, #0x10 + lsl r3, r7, #0x10 + add r4, #0x18 + str r0, [sp] + add r0, r4, #0 + asr r1, r1, #0x10 + mov r2, #0xa + asr r3, r3, #0x10 + bl MOD08_02218120 + b _022243FC +_022243DC: + ldr r0, [r4, #0x64] + add r0, r0, #1 + str r0, [r4, #0x64] + b _022243FC +_022243E4: + add r0, r4, #0 + add r0, #0x3c + bl MOD08_02218704 + cmp r0, #0 + beq _022243FC + ldr r0, [r4, #0x64] + mov r5, #1 + add r0, r0, #1 + str r0, [r4, #0x64] + b _022243FC +_022243FA: + mov r5, #1 +_022243FC: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02224400 +MOD08_02224400: ; 0x02224400 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5, #0x7c] + mov r4, #0 + cmp r1, #0 + beq _02224416 + cmp r1, #1 + beq _02224428 + cmp r1, #2 + beq _02224472 + b _02224474 +_02224416: + bl MOD08_022242C0 + add r0, r5, #0 + bl MOD08_02224328 + ldr r0, [r5, #0x7c] + add r0, r0, #1 + str r0, [r5, #0x7c] + b _02224474 +_02224428: + bl MOD08_02224328 + cmp r0, #0 + beq _02224474 + ldr r0, [r5, #0x6c] + sub r0, r0, #1 + str r0, [r5, #0x6c] + bmi _02224468 + ldr r0, [r5, #0x70] + mov r1, #3 + bl _s32_div_f + ldr r1, [r5, #0x70] + sub r0, r1, r0 + str r0, [r5, #0x70] + ldr r0, [r5, #0x74] + mov r1, #3 + bl _s32_div_f + ldr r1, [r5, #0x74] + sub r0, r1, r0 + str r0, [r5, #0x74] + ldr r0, [r5, #0x78] + mov r1, #3 + bl _s32_div_f + ldr r1, [r5, #0x78] + sub r0, r1, r0 + str r0, [r5, #0x78] + add r0, r4, #0 + str r0, [r5, #0x7c] + b _02224474 +_02224468: + ldr r0, [r5, #0x7c] + mov r4, #1 + add r0, r0, #1 + str r0, [r5, #0x7c] + b _02224474 +_02224472: + mov r4, #1 +_02224474: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02224478 +MOD08_02224478: ; 0x02224478 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #4 + bls _02224488 + b _022245A8 +_02224488: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02224494: ; jump table + .short _0222449E - _02224494 - 2 ; case 0 + .short _022244E4 - _02224494 - 2 ; case 1 + .short _02224544 - _02224494 - 2 ; case 2 + .short _02224574 - _02224494 - 2 ; case 3 + .short _02224590 - _02224494 - 2 ; case 4 +_0222449E: + add r0, r4, #0 + bl MOD08_02224400 + cmp r0, #0 + beq _022245A8 + ldr r0, [r4, #0xc] + mov r1, #0 + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x1e + str r0, [r4, #0x10] + ldr r0, [r4, #0x14] + bl FUN_0200C5C0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C5E0 + mov r1, #0xfe + lsl r1, r1, #0x16 + ldr r0, [r4, #0x14] + add r2, r1, #0 + bl FUN_0200C884 + mov r1, #0 + mov r2, #0x10 + str r1, [sp] + mov r0, #4 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x3c + add r3, r2, #0 + bl MOD08_022186D4 + b _022245A8 +_022244E4: + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _02224502 + mov r0, #1 + str r0, [sp] + mov r0, #8 + mov r1, #0x10 + mov r2, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x10] + b _02224508 +_02224502: + ble _02224508 + sub r0, r0, #1 + str r0, [r4, #0x10] +_02224508: + mov r0, #0 + ldr r1, [r4, #0x10] + mvn r0, r0 + cmp r1, r0 + bne _02224532 + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _02224532 + mov r0, #1 + str r0, [sp] + mov r0, #8 + mov r1, #0 + mov r2, #0x10 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #1 + mvn r0, r0 + str r0, [r4, #0x10] +_02224532: + ldr r0, [r4, #0x14] + bl FUN_0200C608 + cmp r0, #0 + bne _022245A8 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _022245A8 +_02224544: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _022245A8 + ldr r0, [r4, #0xc] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4] + mov r2, #0 + bl MOD08_02227994 + mov r1, #0x10 + mov r2, #0 + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x3c + add r3, r2, #0 + bl MOD08_022186D4 + b _022245A8 +_02224574: + add r0, r4, #0 + add r0, #0x3c + bl MOD08_02218704 + cmp r0, #0 + beq _022245A8 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _022245A8 +_02224590: + ldr r0, [r4, #0x14] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, pc} +_022245A8: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022245B4 +MOD08_022245B4: ; 0x022245B4 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x80 + add r6, r0, #0 + str r2, [sp] + add r5, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r6, [r4] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #8] + str r5, [r4, #0x14] + add r0, r5, #0 + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x14] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x14] + mov r1, #4 + bl FUN_0200C61C + mov r0, #3 + str r0, [r4, #0x6c] + mov r0, #0x19 + lsl r0, r0, #4 + str r0, [r4, #0x70] + ldr r0, _02224618 ; =0x000005DC + ldr r1, _0222461C ; =MOD08_02224478 + str r0, [r4, #0x74] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [r4, #0x78] + ldr r0, [r4] + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02224618: .word 0x000005DC +_0222461C: .word MOD08_02224478 + + thumb_func_start MOD08_02224620 +MOD08_02224620: ; 0x02224620 + push {r3, lr} + sub sp, #8 + ldr r1, [r0, #0x34] + cmp r1, #3 + bhi _02224668 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02224636: ; jump table + .short _0222463E - _02224636 - 2 ; case 0 + .short _02224656 - _02224636 - 2 ; case 1 + .short _0222463E - _02224636 - 2 ; case 2 + .short _02224656 - _02224636 - 2 ; case 3 +_0222463E: + mov r1, #0x20 + str r1, [sp] + mov r1, #6 + str r1, [sp, #4] + mov r1, #0 + add r0, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl MOD08_02217E80 + add sp, #8 + pop {r3, pc} +_02224656: + mov r1, #0 + str r1, [sp] + mov r2, #6 + str r2, [sp, #4] + add r0, #0x10 + add r2, r1, #0 + mov r3, #0x20 + bl MOD08_02217E80 +_02224668: + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD08_0222466C +MOD08_0222466C: ; 0x0222466C + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02224682 + cmp r0, #1 + beq _02224690 + cmp r0, #2 + beq _022246C8 + pop {r4, pc} +_02224682: + add r0, r4, #0 + bl MOD08_02224620 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02224690: + add r0, r4, #0 + add r0, #0x10 + bl MOD08_02217ECC + cmp r0, #0 + beq _022246B0 + mov r2, #0xc + mov r3, #0xe + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + ldr r1, [r4, #8] + add r0, #0x10 + bl MOD08_02217CD0 + pop {r4, pc} +_022246B0: + ldr r0, [r4, #0x34] + add r0, r0, #1 + str r0, [r4, #0x34] + cmp r0, #4 + bge _022246C0 + mov r0, #0 + str r0, [r4] + pop {r4, pc} +_022246C0: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022246C8: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD08_022246D8 +MOD08_022246D8: ; 0x022246D8 + push {r3, r4, r5, lr} + mov r1, #0x38 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #4] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0xc] + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0xe] + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #4] + ldr r1, _02224718 ; =MOD08_0222466C + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + .align 2, 0 +_02224718: .word MOD08_0222466C + + thumb_func_start MOD08_0222471C +MOD08_0222471C: ; 0x0222471C + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4] + cmp r0, #6 + bhi _0222477E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02224736: ; jump table + .short _02224744 - _02224736 - 2 ; case 0 + .short _02224762 - _02224736 - 2 ; case 1 + .short _022247DA - _02224736 - 2 ; case 2 + .short _0222481E - _02224736 - 2 ; case 3 + .short _0222485C - _02224736 - 2 ; case 4 + .short _022248A4 - _02224736 - 2 ; case 5 + .short _022248D4 - _02224736 - 2 ; case 6 +_02224744: + add r0, r4, #0 + add r0, #0x14 + mov r1, #1 + mov r2, #0x40 + bl MOD08_02218654 + ldr r1, [r4, #0x20] + ldr r0, [r4, #8] + add sp, #8 + mul r0, r1 + str r0, [r4, #0x20] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02224762: + mov r2, #0x12 + ldrsh r2, [r4, r2] + mov r1, #0x10 + add r0, r4, #0 + add r2, #8 + lsl r2, r2, #0x10 + ldrsh r1, [r4, r1] + ldr r3, [r4, #0xc] + add r0, #0x14 + asr r2, r2, #0x10 + bl MOD08_02217E58 + cmp r0, #0 + beq _02224780 +_0222477E: + b _022248E2 +_02224780: + mov r2, #0x10 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x12 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_02007558 + mov r0, #0x10 + ldrsh r1, [r4, r0] + mov r3, #0 + mov r0, #2 + add r2, r1, #0 + str r3, [sp] + add r2, #0x20 + str r0, [sp, #4] + add r0, r4, #0 + lsl r2, r2, #0x10 + add r0, #0x14 + asr r2, r2, #0x10 + bl MOD08_02217E80 + ldr r1, [r4, #0x1c] + ldr r0, [r4, #8] + mul r0, r1 + str r0, [r4, #0x1c] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02217ECC + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_022247DA: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02217ECC + cmp r0, #0 + beq _022247F6 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_022247F6: + mov r0, #0x3c + ldrsh r1, [r4, r0] + mov r3, #0 + mov r0, #2 + str r3, [sp] + str r0, [sp, #4] + ldr r2, [r4, #8] + add r0, r4, #0 + lsl r2, r2, #5 + add r2, r1, r2 + lsl r2, r2, #0x10 + add r0, #0x40 + asr r2, r2, #0x10 + bl MOD08_02217E80 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0222481E: + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02217ECC + cmp r0, #0 + beq _0222483A + mov r2, #0x40 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_0222483A: + mov r3, #0 + str r3, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r1, #0x14 + mov r2, #0x10 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + add r0, #0x14 + bl MOD08_02217E80 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0222485C: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02217ECC + cmp r0, #0 + ldr r0, [r4, #0xc] + beq _02224878 + mov r2, #0x14 + ldrsh r2, [r4, r2] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_02224878: + mov r2, #0x10 + ldrsh r2, [r4, r2] + mov r1, #0 + bl FUN_02007558 + mov r3, #0 + str r3, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r1, #0x40 + mov r2, #0x3c + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + add r0, #0x40 + bl MOD08_02217E80 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022248A4: + add r0, r4, #0 + add r0, #0x40 + bl MOD08_02217ECC + cmp r0, #0 + ldr r0, [r4, #0x38] + beq _022248C0 + mov r2, #0x40 + ldrsh r2, [r4, r2] + mov r1, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, pc} +_022248C0: + mov r2, #0x3c + ldrsh r2, [r4, r2] + mov r1, #0 + bl FUN_02007558 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022248D4: + ldr r0, [r4, #4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_022248E2: + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022248E8 +MOD08_022248E8: ; 0x022248E8 + push {r3, r4, r5, lr} + mov r1, #0x64 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4, #4] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_02217C1C + str r0, [r4, #8] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0xc] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x10] + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x12] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD08_022154D4 + str r0, [r4, #0x38] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x3c] + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x3e] + ldr r0, [r4, #4] + ldr r1, _02224958 ; =MOD08_0222471C + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_02224958: .word MOD08_0222471C + + thumb_func_start MOD08_0222495C +MOD08_0222495C: ; 0x0222495C + push {lr} + sub sp, #0xc + mov r1, #0 + str r1, [r0, #0x40] + mov r1, #8 + str r1, [sp] + mov r1, #0xa + str r1, [sp, #4] + mov r2, #2 + str r2, [sp, #8] + add r0, #0x1c + mov r2, #9 + add r3, r1, #0 + bl MOD08_022181A8 + add sp, #0xc + pop {pc} + .align 2, 0 + + thumb_func_start MOD08_02224980 +MOD08_02224980: ; 0x02224980 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x40] + mov r5, #0 + cmp r0, #3 + bhi _02224A72 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222499A: ; jump table + .short _022249A2 - _0222499A - 2 ; case 0 + .short _022249E8 - _0222499A - 2 ; case 1 + .short _02224A2A - _0222499A - 2 ; case 2 + .short _02224A70 - _0222499A - 2 ; case 3 +_022249A2: + add r0, r4, #0 + ldr r1, [r4, #0x18] + add r0, #0x1c + bl MOD08_022183A0 + cmp r0, #0 + beq _022249C6 + add r0, r5, #0 + str r0, [sp] + mov r1, #0x44 + mov r2, #0x46 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + ldr r3, [r4, #0x30] + bl MOD08_022182DC + b _02224A72 +_022249C6: + ldr r0, [r4, #0x40] + mov r1, #9 + add r0, r0, #1 + str r0, [r4, #0x40] + mov r0, #0xf + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + add r4, #0x1c + str r0, [sp, #8] + add r0, r4, #0 + mov r2, #0xb + mov r3, #8 + bl MOD08_022181A8 + b _02224A72 +_022249E8: + add r0, r4, #0 + ldr r1, [r4, #0x18] + add r0, #0x1c + bl MOD08_022183A0 + cmp r0, #0 + beq _02224A0C + add r0, r5, #0 + str r0, [sp] + mov r1, #0x44 + mov r2, #0x46 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + ldr r3, [r4, #0x30] + bl MOD08_022182DC + b _02224A72 +_02224A0C: + ldr r0, [r4, #0x40] + mov r2, #0xa + add r0, r0, #1 + str r0, [r4, #0x40] + str r2, [sp] + str r2, [sp, #4] + mov r0, #2 + add r4, #0x1c + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xb + mov r3, #0xf + bl MOD08_022181A8 + b _02224A72 +_02224A2A: + add r0, r4, #0 + ldr r1, [r4, #0x18] + add r0, #0x1c + bl MOD08_022183A0 + cmp r0, #0 + beq _02224A4E + add r0, r5, #0 + str r0, [sp] + mov r1, #0x44 + mov r2, #0x46 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x18] + ldr r3, [r4, #0x30] + bl MOD08_022182DC + b _02224A72 +_02224A4E: + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #0x18] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0x18] + add r2, #0xf3 + bl FUN_02007558 + ldr r0, [r4, #0x40] + mov r5, #1 + add r0, r0, #1 + str r0, [r4, #0x40] + b _02224A72 +_02224A70: + mov r5, #1 +_02224A72: + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD08_02224A78 +MOD08_02224A78: ; 0x02224A78 + push {r3, r4, r5, lr} + add r4, r2, #0 + mov r2, #0 + str r2, [r1] + add r5, r0, #0 + mov r1, #0x64 + bl FUN_0200C6C4 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C6B0 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C644 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C5E0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C5F4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200C5C0 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200C61C + mov r1, #0x37 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0200C5B4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02224AC4 +MOD08_02224AC4: ; 0x02224AC4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + mov r4, #0 + cmp r1, #0 + beq _02224AD6 + cmp r1, #1 + beq _02224AE8 + b _02224AEC +_02224AD6: + bl FUN_0200C608 + cmp r0, #0 + bne _02224AEE + ldr r0, [r5] + mov r4, #1 + add r0, r0, #1 + str r0, [r5] + b _02224AEE +_02224AE8: + mov r4, #1 + b _02224AEE +_02224AEC: + mov r4, #1 +_02224AEE: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02224AF4 +MOD08_02224AF4: ; 0x02224AF4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #5 + bls _02224B02 + b _02224C14 +_02224B02: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02224B0E: ; jump table + .short _02224B1A - _02224B0E - 2 ; case 0 + .short _02224B3E - _02224B0E - 2 ; case 1 + .short _02224B76 - _02224B0E - 2 ; case 2 + .short _02224BA6 - _02224B0E - 2 ; case 3 + .short _02224BCC - _02224B0E - 2 ; case 4 + .short _02224BF2 - _02224B0E - 2 ; case 5 +_02224B1A: + add r0, r4, #0 + bl MOD08_0222495C + ldr r0, [r4, #0x10] + add r1, r4, #0 + lsl r2, r0, #2 + add r0, r4, r2 + add r1, #0x60 + add r1, r1, r2 + mov r2, #2 + ldr r0, [r0, #0x48] + lsl r2, r2, #0xc + bl MOD08_02224A78 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224C14 +_02224B3E: + add r0, r4, #0 + bl MOD08_02224980 + add r5, r0, #0 + ldr r0, [r4, #0x10] + add r1, r4, #0 + lsl r2, r0, #2 + add r0, r4, r2 + add r1, #0x60 + ldr r0, [r0, #0x48] + add r1, r1, r2 + bl MOD08_02224AC4 + cmp r5, r0 + bne _02224C14 + cmp r5, #1 + bne _02224C14 + ldr r0, [r4, #0x10] + mov r1, #1 + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x48] + bl FUN_0200C5C0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224C14 +_02224B76: + ldr r0, [r4, #0x10] + add r2, r4, #0 + add r2, #0x78 + lsl r1, r0, #2 + ldr r0, [r2, r1] + sub r0, r0, #1 + str r0, [r2, r1] + ldr r1, [r4, #0x10] + lsl r0, r1, #2 + add r0, r4, r0 + ldr r0, [r0, #0x78] + cmp r0, #0 + bge _02224C14 + add r0, r1, #1 + str r0, [r4, #0x10] + cmp r0, #6 + bge _02224B9E + mov r0, #0 + str r0, [r4, #0xc] + b _02224C14 +_02224B9E: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224C14 +_02224BA6: + add r6, r4, #0 + mov r7, #0 + add r6, #0x60 + add r5, r4, #0 +_02224BAE: + mov r2, #2 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #0xc + bl MOD08_02224A78 + add r7, r7, #1 + add r6, r6, #4 + add r5, r5, #4 + cmp r7, #6 + blt _02224BAE + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224C14 +_02224BCC: + add r6, r4, #0 + mov r7, #0 + add r6, #0x60 + add r5, r4, #0 +_02224BD4: + ldr r0, [r5, #0x48] + add r1, r6, #0 + bl MOD08_02224AC4 + add r7, r7, #1 + add r6, r6, #4 + add r5, r5, #4 + cmp r7, #6 + blt _02224BD4 + cmp r0, #1 + bne _02224C14 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224C14 +_02224BF2: + mov r6, #0 + add r5, r4, #0 +_02224BF6: + ldr r0, [r5, #0x48] + bl FUN_0200C3DC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02224BF6 + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_02224C14: + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02224C1C +MOD08_02224C1C: ; 0x02224C1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + str r1, [sp] + mov r1, #0x90 + add r4, r0, #0 + str r2, [sp, #4] + str r3, [sp, #8] + bl MOD08_02228064 + ldr r1, [sp] + str r4, [r0] + str r1, [r0, #4] + ldr r1, [sp, #4] + str r0, [sp, #0x14] + str r1, [r0, #8] + ldr r0, [r0] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [sp, #0x14] + ldr r0, [r0] + bl MOD08_022154D4 + ldr r1, [sp, #0x14] + str r0, [r1, #0x18] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [sp, #0x14] + mov r1, #1 + ldr r0, [r0, #0x18] + bl FUN_0200782C + ldr r1, [sp, #0x14] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r1, #0x44 + str r0, [sp, #0xc] + strh r0, [r1] + ldr r0, [sp, #0x14] + ldr r0, [r0] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [sp, #0x14] + ldr r0, [r0] + bl MOD08_0221552C + ldr r1, [sp, #0x14] + add r1, #0x46 + strh r0, [r1] + ldr r1, [sp, #0x14] + add r0, sp, #0x1c + ldr r1, [r1] + bl MOD08_02215474 + ldr r5, [sp, #0x14] + mov r4, #0 +_02224C94: + cmp r4, #0 + bne _02224C9C + ldr r0, [sp, #8] + b _02224CA6 +_02224C9C: + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, sp, #0x1c + bl FUN_0200C154 +_02224CA6: + str r0, [r5, #0x48] + ldr r0, [r5, #0x48] + mov r1, #0 + bl FUN_0200C644 + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r1, r0, #1 + ldr r0, _02224D6C ; =0x00001555 + mov r2, #3 + mul r0, r1 + asr r0, r0, #4 + lsl r0, r0, #2 + ldr r1, _02224D70 ; =0x020FFA38 + str r0, [sp, #0x18] + add r1, r1, r0 + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r2, r2, #0x10 + mov r3, #0 + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r2, r0, r2 + ldr r0, _02224D74 ; =0x00000000 + adc r1, r0 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + lsl r0, r1, #4 + asr r6, r0, #0x10 + mov r2, #3 + ldr r1, _02224D70 ; =0x020FFA38 + ldr r0, [sp, #0x18] + lsl r2, r2, #0x10 + ldrsh r0, [r1, r0] + mov r3, #0 + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02224D74 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + lsl r0, r0, #4 + asr r0, r0, #0x10 + str r0, [sp, #0x10] + lsr r2, r4, #0x1f + lsl r1, r4, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + bne _02224D2E + add r0, r7, r6 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_0200C8D0 + b _02224D34 +_02224D2E: + sub r0, r7, r6 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 +_02224D34: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r2, r0, #0x10 + ldr r0, [r5, #0x48] + add r1, r6, #0 + bl FUN_0200C714 + cmp r4, #2 + bge _02224D4E + mov r0, #8 + b _02224D50 +_02224D4E: + mov r0, #0 +_02224D50: + add r4, r4, #1 + str r0, [r5, #0x78] + add r5, r5, #4 + cmp r4, #6 + blt _02224C94 + ldr r0, [sp, #0x14] + ldr r1, _02224D78 ; =MOD08_02224AF4 + ldr r0, [r0] + ldr r2, [sp, #0x14] + bl MOD08_02212400 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + nop +_02224D6C: .word 0x00001555 +_02224D70: .word 0x020FFA38 +_02224D74: .word 0x00000000 +_02224D78: .word MOD08_02224AF4 + + thumb_func_start MOD08_02224D7C +MOD08_02224D7C: ; 0x02224D7C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #5 + bhi _02224DBC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02224D96: ; jump table + .short _02224DA2 - _02224D96 - 2 ; case 0 + .short _02224DB2 - _02224D96 - 2 ; case 1 + .short _02224E12 - _02224D96 - 2 ; case 2 + .short _02224E6E - _02224D96 - 2 ; case 3 + .short _02224E9E - _02224D96 - 2 ; case 4 + .short _02224EC2 - _02224D96 - 2 ; case 5 +_02224DA2: + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_0200C5E0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224EDA +_02224DB2: + ldr r0, [r4, #0x5c] + bl FUN_0200C608 + cmp r0, #0 + beq _02224DBE +_02224DBC: + b _02224EDA +_02224DBE: + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_0200C5E0 + ldr r0, [r4, #0xc] + mov r1, #0xa + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x14 + add r2, r1, #0 + mov r3, #0 + bl MOD08_02218120 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + add r5, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + add r3, r0, #0 + mov r0, #0x8a + ldrsh r0, [r4, r0] + lsl r1, r5, #0x10 + lsl r3, r3, #0x10 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r2, #0x88 + add r0, r4, #0 + ldrsh r2, [r4, r2] + add r0, #0x38 + asr r1, r1, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + b _02224EDA +_02224E12: + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x38 + bl MOD08_02217F2C + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl MOD08_02218380 + cmp r0, #0 + bne _02224EDA + ldr r0, [r4, #0x10] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #0x10] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0x10] + add r2, #0xf3 + bl FUN_02007558 + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_0200C5C0 + mov r1, #1 + ldr r0, [r4, #0x5c] + lsl r1, r1, #0xc + bl FUN_0200C5F4 + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_0200C5E0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224EDA +_02224E6E: + ldr r0, [r4, #0x5c] + bl FUN_0200C608 + cmp r0, #0 + bne _02224EDA + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_0200C5E0 + ldr r0, [r4, #0xc] + mov r1, #0 + add r0, r0, #1 + str r0, [r4, #0xc] + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r3, #0x8a + add r0, r4, #0 + ldrsh r3, [r4, r3] + add r0, #0x60 + add r2, r1, #0 + bl MOD08_02217E80 + b _02224EDA +_02224E9E: + add r0, r4, #0 + add r0, #0x60 + bl MOD08_02217ECC + cmp r0, #0 + beq _02224EBA + mov r1, #0x88 + mov r2, #0x62 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x5c] + bl FUN_0200C714 + b _02224EDA +_02224EBA: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02224EDA +_02224EC2: + ldr r0, [r4, #0x5c] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, pc} +_02224EDA: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02224EE4 +MOD08_02224EE4: ; 0x02224EE4 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x8c + add r5, r0, #0 + str r2, [sp] + add r6, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #6 + mov r2, #0 + str r0, [r4, #0x10] + bl FUN_02007558 + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #0 + bl MOD08_02217B98 + add r1, r4, #0 + add r1, #0x88 + strh r0, [r1] + add r0, r5, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #1 + bl MOD08_02217B98 + add r1, r4, #0 + add r1, #0x8a + strh r0, [r1] + str r6, [r4, #0x5c] + add r0, r6, #0 + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_0200C6B0 + mov r1, #0x88 + mov r2, #0x8a + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x5c] + bl FUN_0200C714 + ldr r0, [r4] + ldr r1, _02224F70 ; =MOD08_02224D7C + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_02224F70: .word MOD08_02224D7C + + thumb_func_start MOD08_02224F74 +MOD08_02224F74: ; 0x02224F74 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r0, r1, #0 + bl MOD08_02217C08 + mov r1, #1 + add r2, r1, #0 + lsl r2, r0 + mov r0, #0 + lsl r2, r2, #0x10 + add r4, #0xc4 + str r0, [sp] + ldr r0, [r4] + mov r1, #2 + lsr r2, r2, #0x10 + mov r3, #8 + bl FUN_02003A64 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02224FA0 +MOD08_02224FA0: ; 0x02224FA0 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r1, #0xa + mov r0, #0x14 + str r0, [sp] + str r1, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x28 + add r2, r1, #0 + add r3, r1, #0 + bl MOD08_022181A8 + mov r0, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x4c + add r2, r1, #0 + mov r3, #1 + bl MOD08_02218120 + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + mov r1, #6 + add r0, #0x98 + str r1, [r0] + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + add r1, r0, #0 + lsl r2, r1, #1 + ldr r1, _0222503C ; =0x0222C664 + ldr r0, [r4, #0x20] + ldrh r1, [r1, r2] + bl FUN_0200C644 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_0200C644 + add r0, r4, #0 + add r0, #0x28 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD08_0221825C + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #1 + bne _02225024 + ldr r1, [sp, #0x10] + mov r0, #0 + bl _fsub + str r0, [sp, #0x10] +_02225024: + ldr r0, [r4, #0x18] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl FUN_0200C884 + ldr r1, [r4, #0x18] + add r0, r4, #0 + bl MOD08_02224F74 + add sp, #0x14 + pop {r3, r4, pc} + nop +_0222503C: .word 0x0222C664 + + thumb_func_start MOD08_02225040 +MOD08_02225040: ; 0x02225040 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, #0x94 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _0222505C + cmp r0, #1 + beq _022250E4 + cmp r0, #2 + bne _0222505A + b _02225164 +_0222505A: + b _02225166 +_0222505C: + add r0, r5, #0 + add r0, #0x28 + bl MOD08_02218224 + add r0, r5, #0 + add r0, #0x28 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD08_0221825C + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #1 + bne _02225084 + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl _fsub + str r0, [sp, #0x10] +_02225084: + ldr r0, [r5, #0x18] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl FUN_0200C884 + mov r0, #0 + str r0, [sp] + ldr r1, [r5, #0x14] + ldr r2, [r5, #0x10] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0x18] + ldr r3, [r5, #0x3c] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02218314 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + bge _02225166 + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + mov r3, #0x14 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x94 + str r1, [r0] + str r3, [sp] + mov r1, #0xa + str r1, [sp, #4] + mov r0, #4 + add r5, #0x28 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #1 + bl MOD08_022181A8 + b _02225166 +_022250E4: + add r0, r5, #0 + add r0, #0x28 + bl MOD08_02218224 + add r0, r5, #0 + add r0, #0x4c + bl MOD08_02218170 + cmp r0, #0 + beq _02225142 + mov r0, #0x4c + ldrsh r0, [r5, r0] + add r1, sp, #0x10 + add r2, sp, #0xc + strh r0, [r5, #0x28] + add r0, r5, #0 + add r0, #0x28 + bl MOD08_0221825C + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #1 + bne _0222511E + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl _fsub + str r0, [sp, #0x10] +_0222511E: + ldr r0, [r5, #0x18] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl FUN_0200C884 + mov r0, #0 + str r0, [sp] + ldr r1, [r5, #0x14] + ldr r2, [r5, #0x10] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0x18] + ldr r3, [r5, #0x3c] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02218314 + b _02225166 +_02225142: + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x94 + str r1, [r0] + ldr r0, [r5, #0x20] + add r1, r4, #0 + bl FUN_0200C644 + ldr r0, [r5, #0x18] + add r1, r4, #0 + bl FUN_0200C644 + mov r4, #1 + b _02225166 +_02225164: + mov r4, #1 +_02225166: + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + + thumb_func_start MOD08_0222516C +MOD08_0222516C: ; 0x0222516C + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + add r1, sp, #0xc + ldr r0, [r4, #0x1c] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + add r1, sp, #0xc + mov r0, #0 + ldrsh r3, [r1, r0] + mov r0, #2 + ldrsh r1, [r1, r0] + mov r0, #8 + str r3, [sp] + sub r3, #0x40 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #0x10 + add r0, #0x70 + add r2, r1, #0 + asr r3, r3, #0x10 + bl MOD08_02217E80 + mov r2, #0xa + str r2, [sp] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x28 + mov r1, #2 + mov r3, #0x14 + bl MOD08_022181A8 + add r0, r4, #0 + add r0, #0x28 + add r1, sp, #0x14 + add r2, sp, #0x10 + bl MOD08_0221825C + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + cmp r0, #1 + bne _022251D4 + ldr r1, [sp, #0x14] + mov r0, #0 + bl _fsub + str r0, [sp, #0x14] +_022251D4: + ldr r0, [r4, #0x1c] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + bl FUN_0200C884 + add r0, r4, #0 + ldr r1, [r4, #0x1c] + add r0, #0x70 + bl MOD08_02217F08 + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + mov r1, #6 + add r0, #0x98 + str r1, [r0] + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + add r1, r0, #0 + lsl r2, r1, #1 + ldr r1, _02225228 ; =0x0222C664 + ldr r0, [r4, #0x24] + ldrh r1, [r1, r2] + bl FUN_0200C644 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200C644 + ldr r1, [r4, #0x1c] + add r0, r4, #0 + bl MOD08_02224F74 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02225228: .word 0x0222C664 + + thumb_func_start MOD08_0222522C +MOD08_0222522C: ; 0x0222522C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0x94 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _02225246 + cmp r0, #1 + beq _02225276 + cmp r0, #2 + beq _022252C8 + b _022252CA +_02225246: + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x1c] + add r0, #0x70 + bl MOD08_02217F08 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + bge _022252CA + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + add r5, #0x94 + add r0, r0, #1 + str r0, [r5] + b _022252CA +_02225276: + add r0, r5, #0 + ldr r1, [r5, #0x1c] + add r0, #0x70 + bl MOD08_02217F08 + add r0, r5, #0 + add r0, #0x28 + bl MOD08_02218224 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x28 + add r1, sp, #4 + add r2, sp, #0 + bl MOD08_0221825C + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + cmp r0, #1 + bne _022252AA + ldr r1, [sp, #4] + add r0, r4, #0 + bl _fsub + str r0, [sp, #4] +_022252AA: + ldr r0, [r5, #0x1c] + ldr r1, [sp, #4] + ldr r2, [sp] + bl FUN_0200C884 + cmp r6, #0 + bne _022252CA + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + add r5, #0x94 + add r0, r0, #1 + str r0, [r5] + mov r4, #1 + b _022252CA +_022252C8: + mov r4, #1 +_022252CA: + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_022252D0 +MOD08_022252D0: ; 0x022252D0 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #6 + bhi _022253AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022252EA: ; jump table + .short _022252F8 - _022252EA - 2 ; case 0 + .short _0222531C - _022252EA - 2 ; case 1 + .short _02225336 - _022252EA - 2 ; case 2 + .short _0222534C - _022252EA - 2 ; case 3 + .short _02225362 - _022252EA - 2 ; case 4 + .short _02225388 - _022252EA - 2 ; case 5 + .short _0222539C - _022252EA - 2 ; case 6 +_022252F8: + ldr r0, [r4] + mov r1, #0 + mov r2, #0x10 + bl MOD08_02227994 + mov r2, #8 + str r2, [sp] + add r0, r4, #0 + str r2, [sp, #4] + add r0, #0x9c + mov r1, #0 + mov r3, #0x10 + bl MOD08_022186D4 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022253AA +_0222531C: + add r0, r4, #0 + add r0, #0x9c + bl MOD08_02218704 + cmp r0, #0 + beq _022253AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + add r0, r4, #0 + bl MOD08_02224FA0 + b _022253AA +_02225336: + add r0, r4, #0 + bl MOD08_02225040 + cmp r0, #0 + beq _022253AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #2 + str r0, [r4, #0xc] + b _022253AA +_0222534C: + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] + bpl _022253AA + add r0, r4, #0 + bl MOD08_0222516C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022253AA +_02225362: + add r0, r4, #0 + bl MOD08_0222522C + cmp r0, #0 + beq _022253AA + ldr r0, [r4, #8] + mov r1, #8 + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0x10 + str r0, [sp] + add r0, r4, #0 + add r0, #0x9c + mov r2, #0 + add r3, r1, #0 + str r1, [sp, #4] + bl MOD08_022186D4 + b _022253AA +_02225388: + add r0, r4, #0 + add r0, #0x9c + bl MOD08_02218704 + cmp r0, #0 + beq _022253AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022253AA +_0222539C: + ldr r0, [r4] + add r1, r2, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 +_022253AA: + ldr r0, [r4, #4] + bl FUN_0200BC1C + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD08_022253B4 +MOD08_022253B4: ; 0x022253B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0xd0 + add r6, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r6, [r4] + add r0, r6, #0 + bl MOD08_02212504 + str r0, [r4, #4] + ldr r0, [r4] + bl MOD08_02215504 + add r1, r4, #0 + add r1, #0xc4 + str r0, [r1] + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + add r7, r0, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + add r0, r7, #0 + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + add r0, r7, #0 + mov r1, #0x29 + bl FUN_0200782C + sub r0, r5, r0 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [sp, #4] + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [sp, #4] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [sp, #4] + mov r1, #0x29 + bl FUN_0200782C + sub r0, r6, r0 + lsl r0, r0, #0x10 + str r5, [r4, #0x14] + asr r6, r0, #0x10 + ldr r0, [r4] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C + str r0, [r4, #0x10] + ldr r0, [r4] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x18] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x18] + ldr r1, [sp] + add r2, r5, #0 + bl FUN_0200C714 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x1c] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x1c] + add r1, r7, #0 + add r2, r6, #0 + bl FUN_0200C714 + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x1c] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x1c] + mov r1, #0 + mov r2, #0x28 + bl FUN_0200C8DC + ldr r0, [r4] + mov r1, #0 + bl MOD08_02215680 + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215680 + add r1, r4, #0 + add r1, #0xcc + str r0, [r1] + ldr r0, [r4] + mov r1, #2 + bl MOD08_022124D8 + str r0, [r4, #0x20] + ldr r0, [r4] + mov r1, #3 + bl MOD08_022124D8 + str r0, [r4, #0x24] + ldr r0, [r4, #0x20] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4] + ldr r1, _02225520 ; =MOD08_022252D0 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02225520: .word MOD08_022252D0 + + thumb_func_start MOD08_02225524 +MOD08_02225524: ; 0x02225524 + push {r4, lr} + sub sp, #0x20 + mov r2, #0xa + add r4, r0, #0 + add r0, #0xf8 + mov r1, #0x19 + add r3, r2, #0 + str r2, [sp] + bl MOD08_02218120 + mov r0, #0x3a + ldrsh r0, [r4, r0] + add r1, r4, #0 + mov r3, #0x38 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [r4, #0x44] + ldr r2, _02225570 ; =MOD08_02218170 + str r0, [sp, #0x10] + ldr r0, [r4, #0x40] + add r1, #0xf8 + str r0, [sp, #0x14] + ldr r0, [r4, #0x3c] + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + add r0, r4, #0 + ldrsh r3, [r4, r3] + add r0, #0x48 + bl MOD08_0221847C + add sp, #0x20 + pop {r4, pc} + .align 2, 0 +_02225570: .word MOD08_02218170 + + thumb_func_start MOD08_02225574 +MOD08_02225574: ; 0x02225574 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0 + mov r0, #6 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xa + add r0, #0xf8 + add r2, r1, #0 + mov r3, #0x19 + bl MOD08_02218120 + mov r0, #0x3a + ldrsh r0, [r4, r0] + add r1, r4, #0 + mov r3, #0x38 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [r4, #0x3c] + ldr r2, _022255CC ; =MOD08_02218170 + str r0, [sp, #0x10] + ldr r0, [r4, #0x40] + add r1, #0xf8 + str r0, [sp, #0x14] + ldr r0, [r4, #0x44] + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + add r0, r4, #0 + ldrsh r3, [r4, r3] + add r0, #0x48 + bl MOD08_0221847C + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_0200C644 + add sp, #0x20 + pop {r4, pc} + .align 2, 0 +_022255CC: .word MOD08_02218170 + + thumb_func_start MOD08_022255D0 +MOD08_022255D0: ; 0x022255D0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #4 + bhi _02225688 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022255E8: ; jump table + .short _022255F2 - _022255E8 - 2 ; case 0 + .short _02225600 - _022255E8 - 2 ; case 1 + .short _0222562E - _022255E8 - 2 ; case 2 + .short _02225652 - _022255E8 - 2 ; case 3 + .short _02225666 - _022255E8 - 2 ; case 4 +_022255F2: + add r0, r4, #0 + bl MOD08_02225524 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02225688 +_02225600: + add r0, r4, #0 + add r0, #0x48 + bl MOD08_02218524 + cmp r0, #0 + bne _02225688 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4, #0xc] + mov r1, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #6 + str r0, [sp] + add r0, r4, #0 + add r0, #0x14 + mov r2, #0 + mov r3, #1 + bl MOD08_022183C0 + b _02225688 +_0222562E: + mov r1, #0x38 + mov r2, #0x3a + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x10] + add r0, #0x14 + bl MOD08_02218454 + cmp r0, #0 + bne _02225688 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + add r0, r4, #0 + bl MOD08_02225574 + b _02225688 +_02225652: + add r0, r4, #0 + add r0, #0x48 + bl MOD08_02218524 + cmp r0, #0 + bne _02225688 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02225688 +_02225666: + mov r6, #0 + add r5, r4, #0 +_0222566A: + ldr r0, [r5, #0x3c] + bl FUN_0200C3DC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0222566A + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + pop {r3, r4, r5, r6, r7, pc} +_02225688: + ldr r0, [r4, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02225690 +MOD08_02225690: ; 0x02225690 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r6, r1, #0 + mov r1, #0x47 + lsl r1, r1, #2 + add r5, r0, #0 + str r2, [sp] + add r7, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + ldr r0, [sp] + str r6, [r4, #4] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x38] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x3a] + ldr r0, [r4, #0x10] + mov r1, #0x29 + bl FUN_0200782C + mov r1, #0x3a + ldrsh r1, [r4, r1] + sub r0, r1, r0 + strh r0, [r4, #0x3a] + add r0, sp, #4 + add r1, r5, #0 + bl MOD08_02215474 + mov r6, #0 + add r5, r4, #0 +_022256EC: + cmp r6, #0 + bne _022256FC + add r0, r7, #0 + mov r1, #1 + str r7, [r5, #0x3c] + bl FUN_0200C5C0 + b _0222570E +_022256FC: + ldr r0, [r4, #4] + ldr r1, [r4, #8] + add r2, sp, #4 + bl FUN_0200C154 + mov r1, #1 + str r0, [r5, #0x3c] + bl FUN_0200C90C +_0222570E: + ldr r0, [r5, #0x3c] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5, #0x3c] + mov r1, #1 + bl FUN_0200C6B0 + mov r1, #0x38 + mov r2, #0x3a + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r5, #0x3c] + bl FUN_0200C714 + ldr r0, [r5, #0x3c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r5, #0x3c] + mov r1, #2 + bl FUN_0200C840 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _022256EC + ldr r0, [r4] + ldr r1, _02225754 ; =MOD08_022255D0 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02225754: .word MOD08_022255D0 + + thumb_func_start MOD08_02225758 +MOD08_02225758: ; 0x02225758 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r7, #0 + add r6, r5, #0 + str r1, [sp, #0x10] + add r6, #0x30 + add r4, r7, #0 +_02225768: + mov r0, #0 + str r0, [sp] + mov r0, #0x32 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0 + str r0, [sp, #0xc] + ldr r2, _022257A8 ; =0x00007FFF + add r0, r6, #0 + add r3, r1, #0 + bl MOD08_02217D14 + ldr r0, [r5, #0x38] + add r7, r7, #1 + add r0, r0, r4 + str r0, [r5, #0x38] + ldr r1, [r5, #0x48] + ldr r0, [sp, #0x10] + add r6, #0x24 + mul r0, r1 + str r0, [r5, #0x48] + ldr r0, _022257AC ; =0x00002AAA + add r5, #0x24 + add r4, r4, r0 + cmp r7, #6 + blt _02225768 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022257A8: .word 0x00007FFF +_022257AC: .word 0x00002AAA + + thumb_func_start MOD08_022257B0 +MOD08_022257B0: ; 0x022257B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0 + str r0, [sp, #4] + add r0, r6, #0 + str r0, [sp] + add r0, #0x30 + str r0, [sp] + add r5, r6, #0 + add r4, r6, #0 +_022257C6: + ldr r0, [sp] + bl MOD08_02217D98 + ldr r1, [r5, #0x38] + mov r2, #0xa + lsl r0, r1, #2 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _0222586C ; =0x020FFA38 + ldr r3, [r6, #0x14] + ldrsh r0, [r0, r1] + lsl r2, r2, #0xc + mul r2, r3 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + add r3, r1, #0 + mov r1, #0x13 + lsl r1, r1, #4 + mov r2, #0x30 + add r7, r0, #0 + ldrsh r1, [r6, r1] + ldrsh r2, [r5, r2] + ldr r0, [r4, #0x18] + add r1, r1, r2 + ldr r2, _02225870 ; =0x00000132 + lsl r1, r1, #0x10 + ldrsh r2, [r6, r2] + asr r1, r1, #0x10 + mov ip, r2 + mov r2, #2 + lsl r2, r2, #0xa + add r7, r7, r2 + ldr r2, _02225874 ; =0x00000000 + adc r3, r2 + lsl r2, r3, #0x14 + lsr r3, r7, #0xc + orr r3, r2 + lsl r2, r3, #4 + asr r2, r2, #0x10 + mov r3, ip + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r1, [r5, #0x38] + ldr r0, _02225878 ; =0x00003FFF + cmp r1, r0 + blt _02225842 + ldr r0, _0222587C ; =0x0000BF49 + cmp r1, r0 + bgt _02225842 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_0200C6B0 + b _02225852 +_02225842: + ldr r0, [r6] + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r4, #0x18] + add r1, r1, #1 + bl FUN_0200C6B0 +_02225852: + ldr r0, [sp] + add r5, #0x24 + add r0, #0x24 + str r0, [sp] + ldr r0, [sp, #4] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #6 + blt _022257C6 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222586C: .word 0x020FFA38 +_02225870: .word 0x00000132 +_02225874: .word 0x00000000 +_02225878: .word 0x00003FFF +_0222587C: .word 0x0000BF49 + + thumb_func_start MOD08_02225880 +MOD08_02225880: ; 0x02225880 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #4 + bhi _02225966 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222589A: ; jump table + .short _022258A4 - _0222589A - 2 ; case 0 + .short _022258DA - _0222589A - 2 ; case 1 + .short _022258FA - _0222589A - 2 ; case 2 + .short _02225926 - _0222589A - 2 ; case 3 + .short _02225942 - _0222589A - 2 ; case 4 +_022258A4: + ldr r0, [r4] + mov r1, #1 + mov r2, #0xf + bl MOD08_02227994 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, #0xfe + add r0, r4, r0 + mov r1, #1 + mov r2, #0x10 + mov r3, #0xf + bl MOD08_022186D4 + ldr r1, [r4, #0x14] + add r0, r4, #0 + bl MOD08_02225758 + add r0, r4, #0 + bl MOD08_022257B0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02225966 +_022258DA: + add r0, r4, #0 + bl MOD08_022257B0 + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD08_02218704 + cmp r0, #0 + beq _02225966 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x1c + str r0, [r4, #0x10] + b _02225966 +_022258FA: + add r0, r4, #0 + bl MOD08_022257B0 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + bpl _02225966 + ldr r0, [r4, #0xc] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0xf + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, #0xfe + add r0, r4, r0 + mov r2, #1 + mov r3, #0 + bl MOD08_022186D4 + b _02225966 +_02225926: + add r0, r4, #0 + bl MOD08_022257B0 + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD08_02218704 + cmp r0, #0 + beq _02225966 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02225966 +_02225942: + mov r6, #0 + add r5, r4, #0 +_02225946: + ldr r0, [r5, #0x18] + bl FUN_0200C3DC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02225946 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02225966: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02225970 +MOD08_02225970: ; 0x02225970 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r1, #0 + mov r1, #0x4d + lsl r1, r1, #2 + add r4, r0, #0 + str r2, [sp] + add r7, r3, #0 + bl MOD08_02228064 + add r6, r0, #0 + str r4, [r6] + ldr r0, [sp] + str r5, [r6, #4] + str r0, [r6, #8] + add r0, r4, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + mov r1, #0 + add r5, r0, #0 + bl FUN_0200782C + mov r1, #0x13 + lsl r1, r1, #4 + strh r0, [r6, r1] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + ldr r1, _02225A14 ; =0x00000132 + strh r0, [r6, r1] + add r0, sp, #4 + add r1, r4, #0 + bl MOD08_02215474 + mov r4, #0 + add r5, r6, #0 +_022259C2: + cmp r4, #0 + bne _022259CA + str r7, [r5, #0x18] + b _022259D6 +_022259CA: + ldr r0, [r6, #4] + ldr r1, [r6, #8] + add r2, sp, #4 + bl FUN_0200C154 + str r0, [r5, #0x18] +_022259D6: + ldr r0, [r5, #0x18] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C5E0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _022259C2 + ldr r0, [r6] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_02217C1C + str r0, [r6, #0x14] + ldr r0, [r6] + ldr r1, _02225A18 ; =MOD08_02225880 + add r2, r6, #0 + bl MOD08_02212400 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02225A14: .word 0x00000132 +_02225A18: .word MOD08_02225880 + + thumb_func_start MOD08_02225A1C +MOD08_02225A1C: ; 0x02225A1C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + add r1, sp, #8 + add r5, r2, #0 + add r1, #2 + add r2, sp, #8 + add r6, r0, #0 + add r4, r3, #0 + bl FUN_0200C7A0 + add r0, sp, #8 + mov r1, #0 + ldrsh r3, [r0, r1] + mov r1, #2 + ldrsh r2, [r0, r1] + lsl r0, r4, #7 + neg r0, r0 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + lsl r1, r2, #0x10 + lsl r4, r5, #8 + add r2, r2, r4 + str r0, [sp] + mov r0, #0x3b + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + add r0, r6, #0 + mov r1, #1 + bl FUN_0200C644 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02225A70 +MOD08_02225A70: ; 0x02225A70 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, r1, #0 + add r1, r4, #0 + bl MOD08_02217F08 + cmp r0, #0 + beq _02225B2A + add r1, sp, #8 + add r0, r4, #0 + add r1, #2 + add r2, sp, #8 + bl FUN_0200C7A0 + add r1, sp, #8 + mov r0, #2 + ldrsh r0, [r1, r0] + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [sp] + ldr r0, [sp] + mov r2, #0xe + mul r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02225B30 ; =0x020FFA38 + lsl r2, r2, #0xc + ldrsh r0, [r0, r1] + mov r3, #0 + asr r7, r0, #0x1f + add r1, r7, #0 + str r0, [sp, #4] + bl _ll_mul + add r3, r0, #0 + add r5, r1, #0 + add r6, sp, #8 + mov r2, #0 + ldrsh r2, [r6, r2] + mov r6, #2 + lsl r6, r6, #0xa + add r0, r4, #0 + add r6, r3, r6 + ldr r3, _02225B34 ; =0x00000000 + ldr r1, [sp] + adc r5, r3 + lsl r3, r5, #0x14 + lsr r5, r6, #0xc + orr r5, r3 + lsl r3, r5, #4 + asr r3, r3, #0x10 + add r2, r2, r3 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r2, #0xae + ldr r0, [sp, #4] + add r1, r7, #0 + lsl r2, r2, #2 + mov r3, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + neg r0, r1 + bl _fflt + ldr r1, _02225B38 ; =0x45800000 + bl _fdiv + add r1, r0, #0 + mov r0, #0xfe + lsl r0, r0, #0x16 + bl _fadd + add r1, r0, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_0200C884 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02225B2A: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02225B30: .word 0x020FFA38 +_02225B34: .word 0x00000000 +_02225B38: .word 0x45800000 + + thumb_func_start MOD08_02225B3C +MOD08_02225B3C: ; 0x02225B3C + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x9d + add r7, r0, #0 + lsl r1, r1, #2 + ldr r0, [r7, r1] + cmp r0, #0xf + bge _02225B84 + sub r0, r1, #4 + ldr r0, [r7, r0] + add r2, r0, #1 + sub r0, r1, #4 + str r2, [r7, r0] + ldr r0, [r7, r0] + cmp r0, #6 + ble _02225B84 + mov r2, #0 + sub r0, r1, #4 + str r2, [r7, r0] + ldr r1, [r7, r1] + add r3, r7, #0 + lsl r0, r1, #2 + mov r2, #0x24 + add r0, r7, r0 + add r3, #0x54 + mul r2, r1 + add r1, r3, r2 + ldr r0, [r0, #0x18] + ldr r2, [r7, #0x10] + ldr r3, [r7, #0x14] + bl MOD08_02225A1C + mov r0, #0x9d + lsl r0, r0, #2 + ldr r1, [r7, r0] + add r1, r1, #1 + str r1, [r7, r0] +_02225B84: + mov r0, #0x9d + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r4, #0 + cmp r0, #0 + ble _02225BB0 + add r6, r7, #0 + add r6, #0x54 + add r5, r7, #0 +_02225B96: + ldr r0, [r5, #0x18] + add r1, r6, #0 + bl MOD08_02225A70 + str r0, [sp] + mov r0, #0x9d + lsl r0, r0, #2 + ldr r0, [r7, r0] + add r4, r4, #1 + add r6, #0x24 + add r5, r5, #4 + cmp r4, r0 + blt _02225B96 +_02225BB0: + cmp r0, #0xf + blt _02225BBE + ldr r0, [sp] + cmp r0, #1 + bne _02225BBE + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02225BBE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02225BC4 +MOD08_02225BC4: ; 0x02225BC4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r0, r6, #0 + bl MOD08_02225B3C + cmp r0, #0 + beq _02225BF6 + mov r4, #0 + add r5, r6, #0 +_02225BD8: + ldr r0, [r5, #0x18] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _02225BD8 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r6] + add r1, r7, #0 + bl MOD08_02212438 + pop {r3, r4, r5, r6, r7, pc} +_02225BF6: + ldr r0, [r6, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02225C00 +MOD08_02225C00: ; 0x02225C00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r1, #0 + mov r1, #0x9e + lsl r1, r1, #2 + add r4, r0, #0 + str r2, [sp] + add r7, r3, #0 + bl MOD08_02228064 + add r6, r0, #0 + str r4, [r6] + ldr r0, [sp] + str r5, [r6, #4] + str r0, [r6, #8] + add r0, r4, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + mov r1, #0 + add r5, r0, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + add r0, sp, #0xc + add r1, r4, #0 + bl MOD08_02215474 + mov r4, #0 + add r5, r6, #0 +_02225C54: + cmp r4, #0 + bne _02225C5C + str r7, [r5, #0x18] + b _02225C68 +_02225C5C: + ldr r0, [r6, #4] + ldr r1, [r6, #8] + add r2, sp, #0xc + bl FUN_0200C154 + str r0, [r5, #0x18] +_02225C68: + ldr r0, [r5, #0x18] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r5, #0x18] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r5, #0x18] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r5, #0x18] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_0200C714 + add r0, r4, #0 + mov r1, #3 + bl _s32_div_f + ldr r0, [r5, #0x18] + bl FUN_0200C5C0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _02225C54 + ldr r0, [r6] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_02217C1C + str r0, [r6, #0x10] + ldr r0, [r6] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_02217C44 + str r0, [r6, #0x14] + ldr r0, [r6] + ldr r1, _02225CD8 ; =MOD08_02225BC4 + add r2, r6, #0 + bl MOD08_02212400 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_02225CD8: .word MOD08_02225BC4 + + thumb_func_start MOD08_02225CDC +MOD08_02225CDC: ; 0x02225CDC + ldr r1, [r0, #0x2c] + cmp r1, #0 + beq _02225CEC + cmp r1, #1 + beq _02225D00 + cmp r1, #2 + beq _02225D14 + bx lr +_02225CEC: + ldr r1, _02225D28 ; =0x00007FFF + str r1, [r0, #0x18] + mov r1, #5 + str r1, [r0, #0x24] + mov r1, #1 + lsl r1, r1, #0x10 + str r1, [r0, #0x1c] + mov r1, #0x10 + str r1, [r0, #0x28] + bx lr +_02225D00: + ldr r1, _02225D28 ; =0x00007FFF + str r1, [r0, #0x18] + mov r1, #4 + mvn r1, r1 + str r1, [r0, #0x24] + ldr r1, _02225D2C ; =0xFFFF0000 + str r1, [r0, #0x1c] + mov r1, #0x10 + str r1, [r0, #0x28] + bx lr +_02225D14: + ldr r1, _02225D28 ; =0x00007FFF + str r1, [r0, #0x18] + mov r1, #0xa + str r1, [r0, #0x24] + lsl r1, r1, #0xd + str r1, [r0, #0x1c] + mov r1, #0x10 + str r1, [r0, #0x28] + bx lr + nop +_02225D28: .word 0x00007FFF +_02225D2C: .word 0xFFFF0000 + + thumb_func_start MOD08_02225D30 +MOD08_02225D30: ; 0x02225D30 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #4] + bl MOD08_02218894 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + str r0, [sp] + str r0, [sp, #4] + sub r0, #8 + str r0, [sp, #4] + ldr r0, [sp] + add r0, #0x58 + str r0, [sp] + ldr r0, [sp, #4] + cmp r0, #0 + bge _02225D58 + mov r0, #0 + str r0, [sp, #4] +_02225D58: + ldr r0, [sp] + cmp r0, #0xc0 + ble _02225D62 + mov r0, #0xc0 + str r0, [sp] +_02225D62: + mov r0, #0 + ldr r1, [r5, #0x20] + mvn r0, r0 + mul r0, r1 + ldr r4, [sp, #4] + str r0, [r5, #0x20] + ldr r0, [sp] + add r1, r4, #0 + cmp r1, r0 + bge _02225E02 +_02225D76: + mov r0, #2 + tst r0, r4 + ldr r1, [r5, #0x1c] + beq _02225D86 + ldr r0, [r5, #0x20] + lsl r0, r0, #0xc + add r2, r1, r0 + b _02225D8C +_02225D86: + ldr r0, [r5, #0x20] + lsl r0, r0, #0xc + sub r2, r1, r0 +_02225D8C: + ldr r1, [sp, #4] + ldr r0, [r5, #0x18] + sub r3, r4, r1 + ldr r1, _02225E08 ; =0x00000199 + mul r1, r3 + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02225E0C ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r2, r0, r2 + ldr r0, _02225E10 ; =0x00000000 + adc r1, r0 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + lsl r0, r1, #4 + asr r7, r0, #0x10 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x24] + sub r0, r4, r0 + mul r0, r1 + mov r1, #0xa + bl _s32_div_f + add r0, r7, r0 + lsl r0, r0, #0x10 + ldr r1, [r5, #0x30] + asr r7, r0, #0x10 + lsl r0, r1, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + asr r0, r0, #0x10 + asr r1, r1, #0x10 + sub r6, r4, #1 + bpl _02225DE6 + add r6, #0xc0 +_02225DE6: + add r0, r0, r7 + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD08_02218998 + ldr r1, [sp, #8] + lsl r2, r6, #2 + str r0, [r1, r2] + ldr r0, [sp] + add r4, r4, #1 + cmp r4, r0 + blt _02225D76 +_02225E02: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02225E08: .word 0x00000199 +_02225E0C: .word 0x020FFA38 +_02225E10: .word 0x00000000 + + thumb_func_start MOD08_02225E14 +MOD08_02225E14: ; 0x02225E14 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02225E2A + cmp r0, #1 + beq _02225E3E + cmp r0, #2 + beq _02225E68 + pop {r4, r5, r6, pc} +_02225E2A: + add r0, r4, #0 + bl MOD08_02225CDC + add r0, r4, #0 + bl MOD08_02225D30 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, r5, r6, pc} +_02225E3E: + ldr r0, [r4, #0x28] + sub r0, r0, #1 + str r0, [r4, #0x28] + add r0, r4, #0 + bl MOD08_02225D30 + ldr r0, [r4, #0x28] + cmp r0, #0 + bge _02225EFA + ldr r0, [r4, #0x2c] + add r0, r0, #1 + str r0, [r4, #0x2c] + cmp r0, #3 + bge _02225E60 + mov r0, #0 + str r0, [r4, #8] + pop {r4, r5, r6, pc} +_02225E60: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, r5, r6, pc} +_02225E68: + ldr r0, [r4, #0xc] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + bl MOD08_022188A8 + ldr r0, [r4, #4] + bl MOD08_02218870 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215600 + add r1, r0, #0 + lsl r0, r5, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + lsl r1, r1, #0x18 + mov r0, #0 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02212014 + add r3, r0, #0 + lsl r0, r5, #0x18 + mov r1, #1 + lsr r0, r0, #0x18 + lsl r1, r1, #0xe + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4] + bl MOD08_02212490 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_02018744 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r6, #0 + bl MOD08_02212438 +_02225EFA: + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_02225EFC +MOD08_02225EFC: ; 0x02225EFC + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x34 + add r7, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r7, [r4] + add r0, r7, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + mov r1, #0 + str r0, [r4, #0xc] + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #0xc] + mov r1, #0x29 + bl FUN_0200782C + sub r0, r5, r0 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #0xc] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + sub r6, #0x28 + lsl r0, r6, #0x10 + str r5, [r4, #0x14] + sub r5, #0x28 + asr r0, r0, #0x10 + neg r0, r0 + neg r1, r5 + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + str r5, [r4, #0x10] + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD08_02218998 + str r0, [r4, #0x30] + ldr r0, [r4] + mov r1, #1 + bl MOD08_022155C4 + bl MOD08_022189A0 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02212014 + add r2, r0, #0 + ldr r1, [r4, #0x30] + add r0, r5, #0 + bl MOD08_022187F4 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x20] + add r0, r7, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_02227468 + sub r0, r0, #3 + cmp r0, #1 + bhi _02225FD0 + ldr r0, [r4] + mov r1, #1 + bl MOD08_02215588 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + lsl r0, r5, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldr r0, [r4] + bl MOD08_02215574 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x18 + mov r0, #0 + lsr r1, r1, #0x18 + bl FUN_020178BC +_02225FD0: + ldr r0, [r4] + ldr r1, _02225FDC ; =MOD08_02225E14 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02225FDC: .word MOD08_02225E14 + + thumb_func_start MOD08_02225FE0 +MOD08_02225FE0: ; 0x02225FE0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #5 + bls _02225FF0 + b _02226134 +_02225FF0: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02225FFC: ; jump table + .short _02226008 - _02225FFC - 2 ; case 0 + .short _0222604E - _02225FFC - 2 ; case 1 + .short _02226088 - _02225FFC - 2 ; case 2 + .short _022260C2 - _02225FFC - 2 ; case 3 + .short _0222610E - _02225FFC - 2 ; case 4 + .short _02226126 - _02225FFC - 2 ; case 5 +_02226008: + mov r2, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xc + mov r1, #0x7f + add r3, r2, #0 + bl MOD08_02217E80 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02226138 ; =0xFFFF1FFF + and r1, r0 + lsr r0, r2, #0xd + orr r0, r1 + str r0, [r2] + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + bl MOD08_02227A4C + ldr r1, _0222613C ; =0x04000040 + mov r0, #0xff + strh r0, [r1] + mov r0, #0xbf + strh r0, [r1, #4] + mov r0, #7 + str r0, [r4, #8] + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_0222604E: + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + bpl _02226134 + ldr r0, [r4] + bl MOD08_02215504 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02214540 + add r2, r0, #0 + mov r3, #0 + lsl r2, r2, #0x10 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _02226140 ; =0x0000FFFF + mov r1, #1 + str r0, [sp, #8] + add r0, r5, #0 + lsr r2, r2, #0x10 + bl FUN_02003210 + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_02226088: + add r0, r4, #0 + add r0, #0xc + bl MOD08_02217ECC + cmp r0, #0 + beq _022260B8 + mov r0, #0xc + ldrsh r2, [r4, r0] + mov r0, #0x7f + add sp, #0xc + sub r0, r0, r2 + lsl r1, r0, #8 + mov r0, #0xff + lsl r0, r0, #8 + add r2, #0x80 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0222613C ; =0x04000040 + strh r0, [r1] + mov r0, #0xbf + strh r0, [r1, #4] + pop {r4, r5, pc} +_022260B8: + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_022260C2: + ldr r0, [r4] + bl MOD08_02215504 + bl FUN_020038E4 + cmp r0, #0 + bne _02226134 + ldr r0, [r4, #4] + mov r2, #1 + add r0, r0, #1 + str r0, [r4, #4] + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02226138 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + ldr r0, [r4] + bl MOD08_02215504 + add r5, r0, #0 + ldr r0, [r4] + bl MOD08_02214540 + add r2, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + lsl r2, r2, #0x10 + ldr r0, _02226140 ; =0x0000FFFF + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #1 + lsr r2, r2, #0x10 + bl FUN_02003210 + add sp, #0xc + pop {r4, r5, pc} +_0222610E: + ldr r0, [r4] + bl MOD08_02215504 + bl FUN_020038E4 + cmp r0, #0 + bne _02226134 + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_02226126: + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_02226134: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02226138: .word 0xFFFF1FFF +_0222613C: .word 0x04000040 +_02226140: .word 0x0000FFFF + + thumb_func_start MOD08_02226144 +MOD08_02226144: ; 0x02226144 + push {r4, lr} + mov r1, #0x34 + add r4, r0, #0 + bl MOD08_02228064 + add r2, r0, #0 + ldr r1, _0222615C ; =MOD08_02225FE0 + add r0, r4, #0 + str r4, [r2] + bl MOD08_02212400 + pop {r4, pc} + .align 2, 0 +_0222615C: .word MOD08_02225FE0 + + thumb_func_start MOD08_02226160 +MOD08_02226160: ; 0x02226160 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #4 + bhi _02226210 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222617A: ; jump table + .short _02226184 - _0222617A - 2 ; case 0 + .short _022261AA - _0222617A - 2 ; case 1 + .short _022261BE - _0222617A - 2 ; case 2 + .short _022261E4 - _0222617A - 2 ; case 3 + .short _022261F8 - _0222617A - 2 ; case 4 +_02226184: + ldr r0, [r4] + mov r1, #0 + mov r2, #0x10 + bl MOD08_02227994 + mov r1, #0 + mov r2, #0x10 + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x14 + add r3, r2, #0 + bl MOD08_022186D4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02226210 +_022261AA: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218704 + cmp r0, #0 + beq _02226210 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02226210 +_022261BE: + ldr r0, [r4, #0x10] + bl FUN_0200C608 + cmp r0, #0 + bne _02226210 + ldr r0, [r4, #0xc] + mov r2, #0 + add r0, r0, #1 + str r0, [r4, #0xc] + mov r1, #0x10 + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x14 + add r3, r2, #0 + bl MOD08_022186D4 + b _02226210 +_022261E4: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218704 + cmp r0, #0 + beq _02226210 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02226210 +_022261F8: + ldr r0, [r4, #0x10] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, pc} +_02226210: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0222621C +MOD08_0222621C: ; 0x0222621C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x3c + add r6, r0, #0 + str r2, [sp] + add r5, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r6, [r4] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #8] + str r5, [r4, #0x10] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C5E0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4] + ldr r1, _02226254 ; =MOD08_02226160 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02226254: .word MOD08_02226160 + + thumb_func_start MOD08_02226258 +MOD08_02226258: ; 0x02226258 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #4 + bhi _0222631C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02226272: ; jump table + .short _0222627C - _02226272 - 2 ; case 0 + .short _022262E6 - _02226272 - 2 ; case 1 + .short _02226328 - _02226272 - 2 ; case 2 + .short _02226394 - _02226272 - 2 ; case 3 + .short _022263E6 - _02226272 - 2 ; case 4 +_0222627C: + ldr r0, [r4, #0x68] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x6c] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4, #0x74] + asr r0, r0, #0x10 + str r0, [sp, #8] + ldr r1, [r4, #0x5c] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x14 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_022181A8 + mov r1, #0xa + mov r2, #8 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x10] + add r0, #0x38 + bl MOD08_02218454 + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl MOD08_022183A0 + mov r0, #0 + str r0, [sp] + mov r1, #8 + mov r2, #0xc + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r3, [r4, #0x28] + bl MOD08_022182DC + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_022262E6: + mov r1, #0xa + mov r2, #8 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x10] + add r0, #0x38 + bl MOD08_02218454 + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl MOD08_022183A0 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + mov r1, #8 + mov r2, #0xc + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r3, [r4, #0x28] + bl MOD08_022182DC + cmp r5, #0 + beq _0222631E +_0222631C: + b _02226424 +_0222631E: + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_02226328: + ldr r0, [r4, #0x64] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x6c] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4, #0x74] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r1, [r4, #0x60] + ldr r2, [r4, #0x5c] + ldr r3, [r4, #0x68] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x14 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_022181A8 + mov r1, #0xa + mov r2, #8 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x10] + add r0, #0x38 + bl MOD08_02218454 + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl MOD08_022183A0 + mov r0, #0 + str r0, [sp] + mov r1, #8 + mov r2, #0xc + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r3, [r4, #0x28] + bl MOD08_022182DC + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_02226394: + mov r1, #0xa + mov r2, #8 + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x10] + add r0, #0x38 + bl MOD08_02218454 + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl MOD08_022183A0 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + mov r1, #8 + mov r2, #0xc + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r3, [r4, #0x28] + bl MOD08_022182DC + cmp r5, #0 + bne _02226424 + ldr r0, [r4, #0x70] + sub r0, r0, #1 + str r0, [r4, #0x70] + cmp r0, #0 + bgt _022263DE + ldr r0, [r4, #4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, pc} +_022263DE: + mov r0, #0 + add sp, #0xc + str r0, [r4, #4] + pop {r4, r5, pc} +_022263E6: + mov r2, #0xa + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_02007558 + mov r2, #8 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007558 + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #0x10] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #0x10] + add r2, #0xf3 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_02226424: + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD08_02226428 +MOD08_02226428: ; 0x02226428 + push {r3, r4, r5, lr} + mov r1, #0x78 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_0221552C + strh r0, [r4, #0xc] + ldr r0, [r4] + bl MOD08_02212460 + add r1, r0, #0 + ldr r0, [r4] + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #8] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0xa] + mov r1, #0xa + str r1, [r4, #0x5c] + mov r0, #7 + str r0, [r4, #0x60] + str r1, [r4, #0x64] + mov r0, #0x1e + str r0, [r4, #0x68] + str r1, [r4, #0x6c] + mov r3, #1 + ldr r0, _0222649C ; =0x00040003 + str r3, [r4, #0x70] + str r0, [r4, #0x74] + mov r1, #2 + add r0, r4, #0 + str r1, [sp] + add r0, #0x38 + mov r2, #0 + bl MOD08_022183C0 + ldr r0, [r4] + ldr r1, _022264A0 ; =MOD08_02226258 + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, pc} + nop +_0222649C: .word 0x00040003 +_022264A0: .word MOD08_02226258 + + thumb_func_start MOD08_022264A4 +MOD08_022264A4: ; 0x022264A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + ldr r1, [r4, #0x2c] + add r0, #8 + bl MOD08_02217F08 + cmp r0, #0 + bne _022264CE + ldr r0, [r4, #0x2c] + bl FUN_0200C3DC + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + pop {r3, r4, r5, pc} +_022264CE: + ldr r0, [r4, #4] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_022264D8 +MOD08_022264D8: ; 0x022264D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r1, #0x30 + add r5, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r5, [r4] + add r0, r5, #0 + bl MOD08_02212518 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD08_02212458 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02227470 + cmp r0, #3 + bne _0222651C + add r0, r5, #0 + mov r1, #0 + bl MOD08_022124B0 + str r0, [r4, #0x2c] + add r0, r5, #0 + mov r1, #1 + bl MOD08_022124B0 + bl FUN_0200C3DC + b _02226532 +_0222651C: + add r0, r5, #0 + mov r1, #1 + bl MOD08_022124B0 + str r0, [r4, #0x2c] + add r0, r5, #0 + mov r1, #0 + bl MOD08_022124B0 + bl FUN_0200C3DC +_02226532: + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + add r7, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C44 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD08_02217B98 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD08_02217B98 + ldr r1, [sp, #0x10] + lsl r2, r7, #6 + add r6, r1, r2 + ldr r1, [sp, #0xc] + lsl r1, r1, #4 + neg r1, r1 + add r5, r0, r1 + str r1, [sp, #8] + lsl r1, r6, #0x10 + lsl r2, r5, #0x10 + ldr r0, [r4, #0x2c] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [sp, #8] + mov r2, #0x30 + add r0, r5, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + mul r2, r7 + str r0, [sp] + mov r0, #6 + add r2, r6, r2 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r6, #0x10 + lsl r2, r2, #0x10 + lsl r3, r5, #0x10 + add r0, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + ldr r0, [r4] + ldr r1, _022265B0 ; =MOD08_022264A4 + add r2, r4, #0 + bl MOD08_02212400 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022265B0: .word MOD08_022264A4 + + thumb_func_start MOD08_022265B4 +MOD08_022265B4: ; 0x022265B4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #5 + bls _022265C4 + b _022266E0 +_022265C4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022265D0: ; jump table + .short _022265DC - _022265D0 - 2 ; case 0 + .short _022265F6 - _022265D0 - 2 ; case 1 + .short _02226644 - _022265D0 - 2 ; case 2 + .short _02226660 - _022265D0 - 2 ; case 3 + .short _022266A2 - _022265D0 - 2 ; case 4 + .short _022266BA - _022265D0 - 2 ; case 5 +_022265DC: + mov r1, #4 + add r0, r4, #0 + str r1, [sp] + add r0, #0x40 + mov r2, #0 + mov r3, #1 + bl MOD08_022183C0 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_022265F6: + mov r1, #0x18 + mov r2, #0x1a + add r0, r4, #0 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r3, [r4, #0x14] + add r0, #0x40 + bl MOD08_02218454 + cmp r0, #0 + bne _022266E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x1a + ldrsh r3, [r4, r0] + mov r0, #0x18 + ldrsh r1, [r4, r0] + ldr r2, [r4, #0x10] + sub r0, #0x1f + mul r0, r2 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + add r0, r4, #0 + ldr r4, [r4, #0xc] + mov r2, #0x28 + mul r2, r4 + add r2, r1, r2 + lsl r2, r2, #0x10 + add r0, #0x1c + asr r2, r2, #0x10 + bl MOD08_02217E80 + add sp, #8 + pop {r4, r5, r6, pc} +_02226644: + add r0, r4, #0 + ldr r1, [r4, #0x14] + add r0, #0x1c + bl MOD08_02217F2C + cmp r0, #0 + bne _022266E0 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #8 + str r0, [r4, #8] + pop {r4, r5, r6, pc} +_02226660: + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + bpl _022266E0 + ldr r0, [r4, #4] + mov r5, #0x28 + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x1a + ldrsh r3, [r4, r0] + mov r0, #0x18 + ldrsh r2, [r4, r0] + mov r0, #4 + str r3, [sp] + str r0, [sp, #4] + ldr r1, [r4, #0xc] + add r0, r4, #0 + add r6, r1, #0 + mul r6, r5 + add r1, r2, r6 + lsl r1, r1, #0x10 + ldr r4, [r4, #0x10] + sub r5, #0x2f + mul r5, r4 + add r3, r3, r5 + lsl r3, r3, #0x10 + add r0, #0x1c + asr r1, r1, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + add sp, #8 + pop {r4, r5, r6, pc} +_022266A2: + add r0, r4, #0 + ldr r1, [r4, #0x14] + add r0, #0x1c + bl MOD08_02217F2C + cmp r0, #0 + bne _022266E0 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_022266BA: + mov r2, #0x18 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x1a + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_022266E0: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_022266E4 +MOD08_022266E4: ; 0x022266E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0x64 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + str r5, [r4] + bl MOD08_02212458 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x18] + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x1a] + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + str r0, [r4, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C44 + str r0, [r4, #0x10] + ldr r0, [r4] + ldr r1, _02226738 ; =MOD08_022265B4 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + nop +_02226738: .word MOD08_022265B4 + + thumb_func_start MOD08_0222673C +MOD08_0222673C: ; 0x0222673C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #4 + bls _0222674C + b _0222685C +_0222674C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02226758: ; jump table + .short _02226762 - _02226758 - 2 ; case 0 + .short _02226798 - _02226758 - 2 ; case 1 + .short _022267C0 - _02226758 - 2 ; case 2 + .short _0222681E - _02226758 - 2 ; case 3 + .short _02226836 - _02226758 - 2 ; case 4 +_02226762: + mov r0, #0x16 + ldrsh r3, [r4, r0] + mov r0, #0x14 + ldrsh r1, [r4, r0] + ldr r0, [r4, #0xc] + mov r5, #4 + lsl r0, r0, #4 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + str r5, [sp, #4] + ldr r2, [r4, #8] + sub r5, #0x2c + mul r5, r2 + add r2, r1, r5 + add r0, r4, #0 + lsl r2, r2, #0x10 + add r0, #0x18 + asr r2, r2, #0x10 + bl MOD08_02217E80 + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02226798: + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x18 + bl MOD08_02217F2C + cmp r0, #0 + bne _0222685C + ldr r0, [r4, #4] + mov r1, #4 + add r0, r0, #1 + str r0, [r4, #4] + add r4, #0x3c + add r0, r4, #0 + mov r2, #0 + mov r3, #1 + str r1, [sp] + bl MOD08_022183C0 + add sp, #8 + pop {r3, r4, r5, pc} +_022267C0: + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #0x10 + asr r2, r0, #0x10 + add r0, r4, #0 + ldr r3, [r4, #0x10] + add r0, #0x3c + add r1, r5, #0 + bl MOD08_02218454 + cmp r0, #0 + bne _0222685C + ldr r0, [r4, #4] + mov r5, #4 + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x16 + ldrsh r3, [r4, r0] + mov r0, #0x14 + ldrsh r2, [r4, r0] + add r0, r4, #0 + add r0, #0x18 + str r3, [sp] + str r5, [sp, #4] + ldr r1, [r4, #8] + ldr r4, [r4, #0xc] + sub r5, #0x2c + mul r5, r1 + lsl r4, r4, #4 + add r1, r2, r5 + add r3, r3, r4 + lsl r1, r1, #0x10 + lsl r3, r3, #0x10 + asr r1, r1, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + add sp, #8 + pop {r3, r4, r5, pc} +_0222681E: + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x18 + bl MOD08_02217F2C + cmp r0, #0 + bne _0222685C + ldr r0, [r4, #4] + add sp, #8 + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02226836: + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_02007558 + mov r2, #0x16 + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 +_0222685C: + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02226860 +MOD08_02226860: ; 0x02226860 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0x60 + bl MOD08_02228064 + add r4, r0, #0 + add r0, r5, #0 + str r5, [r4] + bl MOD08_02212460 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_022154D4 + str r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200782C + strh r0, [r4, #0x14] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #0x16] + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C1C + str r0, [r4, #8] + add r0, r5, #0 + add r1, r6, #0 + bl MOD08_02217C44 + str r0, [r4, #0xc] + ldr r0, [r4] + ldr r1, _022268B4 ; =MOD08_0222673C + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + nop +_022268B4: .word MOD08_0222673C + + thumb_func_start MOD08_022268B8 +MOD08_022268B8: ; 0x022268B8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r7, r1, #0 + add r4, r0, #0 + mov r1, #0xac + add r6, r2, #0 + str r3, [sp] + bl MOD08_02228064 + str r4, [r0] + str r0, [sp, #4] + str r6, [r0, #0xc] + add r0, r4, #0 + bl MOD08_02212458 + add r5, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02217C1C + ldr r1, [sp, #4] + str r0, [r1, #0x10] + ldr r1, [r1] + add r0, sp, #8 + bl MOD08_02215474 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD08_02217B98 + add r1, sp, #8 + strh r0, [r1] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD08_02217B98 + add r1, sp, #8 + ldr r5, [sp, #4] + strh r0, [r1, #2] + mov r4, #0 +_0222690C: + cmp r4, #0 + add r2, sp, #8 + bne _02226926 + ldr r0, [sp] + mov r1, #0 + str r0, [r5, #0x14] + ldrsh r1, [r2, r1] + add r3, r2, #0 + mov r2, #2 + ldrsh r2, [r3, r2] + bl FUN_0200C714 + b _02226930 +_02226926: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_0200C154 + str r0, [r5, #0x14] +_02226930: + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r5, #0x14] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_0200C6B0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0222690C + ldr r0, [sp, #4] + ldr r1, _02226960 ; =MOD08_02226964 + ldr r0, [r0] + ldr r2, [sp, #4] + bl MOD08_02212400 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02226960: .word MOD08_02226964 + + thumb_func_start MOD08_02226964 +MOD08_02226964: ; 0x02226964 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #4] + cmp r0, #4 + bhi _02226A48 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222697C: ; jump table + .short _02226986 - _0222697C - 2 ; case 0 + .short _022269AE - _0222697C - 2 ; case 1 + .short _022269CE - _0222697C - 2 ; case 2 + .short _02226A00 - _0222697C - 2 ; case 3 + .short _02226A26 - _0222697C - 2 ; case 4 +_02226986: + add r2, r4, #0 + ldr r0, [r4, #0x14] + ldr r3, [r4, #0x10] + add r1, #0x1c + add r2, #0x64 + bl MOD08_02226A50 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x1c + add r2, #0x64 + bl MOD08_02226AB0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #8 + str r0, [r4, #8] + b _02226A48 +_022269AE: + ldr r0, [r4, #8] + add r2, r4, #0 + sub r0, r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + add r1, #0x1c + add r2, #0x64 + bl MOD08_02226AB0 + ldr r0, [r4, #8] + cmp r0, #0 + bge _02226A48 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _02226A48 +_022269CE: + add r2, r4, #0 + ldr r0, [r4, #0x18] + ldr r3, [r4, #0x10] + add r1, #0x40 + add r2, #0x88 + bl MOD08_02226A50 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x40 + add r2, #0x88 + bl MOD08_02226AB0 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x1c + add r2, #0x64 + bl MOD08_02226AB0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _02226A48 +_02226A00: + add r2, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x1c + add r2, #0x64 + bl MOD08_02226AB0 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x40 + add r2, #0x88 + bl MOD08_02226AB0 + cmp r0, #0 + beq _02226A48 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _02226A48 +_02226A26: + mov r6, #0 + add r5, r4, #0 +_02226A2A: + ldr r0, [r5, #0x14] + bl FUN_0200C3DC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _02226A2A + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_02226A48: + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02226A50 +MOD08_02226A50: ; 0x02226A50 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + add r5, r0, #0 + mov r1, #2 + add r7, r2, #0 + add r4, r3, #0 + bl FUN_0200C840 + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C644 + add r1, sp, #8 + add r0, r5, #0 + add r1, #2 + add r2, sp, #8 + bl FUN_0200C7A0 + add r1, sp, #8 + mov r0, #0 + ldrsh r3, [r1, r0] + mov r0, #2 + ldrsh r1, [r1, r0] + add r0, r3, #0 + sub r0, #0x20 + lsl r0, r0, #0x10 + lsl r2, r4, #4 + asr r0, r0, #0x10 + add r2, r1, r2 + str r0, [sp] + mov r0, #0x20 + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + asr r2, r2, #0x10 + bl MOD08_02217E80 + mov r0, #0x20 + mov r2, #0xa + str r0, [sp] + add r0, r7, #0 + mov r1, #2 + add r3, r2, #0 + bl MOD08_02218120 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02226AB0 +MOD08_02226AB0: ; 0x02226AB0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r1, r5, #0 + bl MOD08_02217F08 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02218360 + cmp r0, #0 + beq _02226ACE + mov r0, #0 + pop {r3, r4, r5, pc} +_02226ACE: + add r0, r5, #0 + mov r1, #0 + bl FUN_0200C644 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02226ADC +MOD08_02226ADC: ; 0x02226ADC + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x3c + add r6, r0, #0 + add r7, r2, #0 + add r5, r3, #0 + bl MOD08_02228064 + add r4, r0, #0 + str r6, [r4] + str r7, [r4, #0xc] + str r5, [r4, #0x10] + add r0, r5, #0 + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #0x10] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r4, #0x10] + bl FUN_0200C68C + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, _02226B28 ; =MOD08_02226B2C + add r2, r4, #0 + bl MOD08_02212400 + pop {r3, r4, r5, r6, r7, pc} + nop +_02226B28: .word MOD08_02226B2C + + thumb_func_start MOD08_02226B2C +MOD08_02226B2C: ; 0x02226B2C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #4 + bhi _02226C18 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02226B46: ; jump table + .short _02226B50 - _02226B46 - 2 ; case 0 + .short _02226B80 - _02226B46 - 2 ; case 1 + .short _02226BA6 - _02226B46 - 2 ; case 2 + .short _02226BE4 - _02226B46 - 2 ; case 3 + .short _02226C00 - _02226B46 - 2 ; case 4 +_02226B50: + mov r0, #4 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x14 + mov r1, #0 + mov r2, #0x10 + mov r3, #0x14 + bl MOD08_022186D4 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4] + mov r1, #0 + mov r2, #0x14 + bl MOD08_02227994 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _02226C18 +_02226B80: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218704 + cmp r0, #0 + beq _02226C18 + ldr r0, [r4, #4] + mov r1, #1 + add r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #0x10] + bl FUN_0200C5E0 + mov r1, #1 + ldr r0, [r4, #0x10] + lsl r1, r1, #0xc + bl FUN_0200C5F4 + b _02226C18 +_02226BA6: + ldr r0, [r4, #0x10] + bl FUN_0200C630 + mov r1, #3 + bl _s32_div_f + ldr r2, [r4, #8] + ldr r0, [r4, #0x10] + add r1, r2, r1 + bl FUN_0200C680 + ldr r0, [r4, #0x10] + bl FUN_0200C608 + cmp r0, #0 + bne _02226C18 + ldr r0, [r4, #4] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x14 + mov r2, #0 + mov r3, #4 + bl MOD08_022186D4 + b _02226C18 +_02226BE4: + add r0, r4, #0 + add r0, #0x14 + bl MOD08_02218704 + cmp r0, #0 + beq _02226C18 + ldr r0, [r4, #4] + mov r1, #0 + add r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #0x10] + bl FUN_0200C644 + b _02226C18 +_02226C00: + ldr r0, [r4, #0x10] + bl FUN_0200C3DC + ldr r0, [r4] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, pc} +_02226C18: + ldr r0, [r4, #0xc] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02226C24 +MOD08_02226C24: ; 0x02226C24 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + str r1, [sp, #4] + str r2, [sp, #8] + mov r1, #0x54 + add r5, r0, #0 + str r3, [sp, #0xc] + bl MOD08_02228064 + ldr r1, [sp, #8] + str r5, [r0] + str r0, [sp, #0x14] + str r1, [r0, #8] + ldr r0, [r0] + bl MOD08_02212458 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_02217C1C + ldr r1, [sp, #0x14] + str r0, [sp, #0x10] + ldr r1, [r1] + add r0, sp, #0x18 + bl MOD08_02215474 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD08_02217B98 + add r1, sp, #0x18 + strh r0, [r1] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD08_02217B98 + ldr r7, [sp, #0x14] + ldr r6, [sp, #0x14] + ldr r5, [sp, #0x14] + add r1, sp, #0x18 + add r7, #0x3c + add r6, #0x24 + strh r0, [r1, #2] + mov r4, #5 + add r5, #0x14 + add r7, #0x14 + add r6, #0x14 +_02226C88: + cmp r4, #5 + add r2, sp, #0x18 + bne _02226CA2 + ldr r0, [sp, #0xc] + mov r1, #0 + str r0, [r5, #0xc] + ldrsh r1, [r2, r1] + add r3, r2, #0 + mov r2, #2 + ldrsh r2, [r3, r2] + bl FUN_0200C714 + b _02226CAC +_02226CA2: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl FUN_0200C154 + str r0, [r5, #0xc] +_02226CAC: + ldr r0, [r5, #0xc] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5, #0xc] + mov r1, #1 + bl FUN_0200C6B0 + ldr r0, [r5, #0xc] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [sp, #0x10] + add r1, r6, #0 + str r0, [sp] + ldr r0, [r5, #0xc] + add r2, r7, #0 + add r3, r4, #0 + bl MOD08_02226CF4 + sub r5, r5, #4 + sub r7, r7, #4 + sub r6, r6, #4 + sub r4, r4, #1 + bpl _02226C88 + ldr r0, [sp, #0x14] + ldr r1, _02226CF0 ; =MOD08_02226D78 + ldr r0, [r0] + ldr r2, [sp, #0x14] + bl MOD08_02212400 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_02226CF0: .word MOD08_02226D78 + + thumb_func_start MOD08_02226CF4 +MOD08_02226CF4: ; 0x02226CF4 + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r1, #0 + lsr r1, r4, #0x1f + add r1, r4, r1 + asr r1, r1, #1 + add r5, r0, #0 + add r7, r2, #0 + bl FUN_0200C5C0 + lsl r0, r4, #1 + str r0, [r7] + mov r0, #0x10 + add r1, sp, #0 + str r0, [r6] + add r0, r5, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + mov r1, #2 + add r6, r1, #0 + add r2, sp, #0 + sub r6, #0xe + mul r6, r4 + ldr r0, [sp, #0x18] + ldrsh r3, [r2, r1] + add r6, #0x28 + add r4, r0, #0 + mul r4, r6 + add r0, r3, r4 + mov r3, #0 + strh r0, [r2, #2] + ldrsh r0, [r2, r3] + add r0, #0x28 + strh r0, [r2] + ldrsh r1, [r2, r1] + ldrsh r2, [r2, r3] + add r0, r5, #0 + bl FUN_0200C714 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02226D48 +MOD08_02226D48: ; 0x02226D48 + push {r3, lr} + ldr r3, [r2] + cmp r3, #0 + ble _02226D5E + sub r1, r3, #1 + str r1, [r2] + bne _02226D74 + mov r1, #1 + bl FUN_0200C644 + b _02226D74 +_02226D5E: + ldr r2, [r1] + cmp r2, #0 + ble _02226D6A + sub r0, r2, #1 + str r0, [r1] + b _02226D74 +_02226D6A: + mov r1, #0 + bl FUN_0200C644 + mov r0, #1 + pop {r3, pc} +_02226D74: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD08_02226D78 +MOD08_02226D78: ; 0x02226D78 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r1, #4] + str r1, [sp] + cmp r0, #0 + beq _02226D8A + cmp r0, #1 + beq _02226DBC + b _02226DE0 +_02226D8A: + add r6, r1, #0 + add r4, r1, #0 + mov r7, #0 + add r6, #0x3c + add r4, #0x24 + add r5, r1, #0 +_02226D96: + ldr r0, [r5, #0xc] + add r1, r4, #0 + add r2, r6, #0 + bl MOD08_02226D48 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + add r5, r5, #4 + cmp r7, #6 + blt _02226D96 + cmp r0, #0 + beq _02226DE0 + ldr r0, [sp] + ldr r0, [r0, #4] + add r1, r0, #1 + ldr r0, [sp] + str r1, [r0, #4] + b _02226DE0 +_02226DBC: + mov r5, #0 + add r4, r1, #0 +_02226DC0: + ldr r0, [r4, #0xc] + bl FUN_0200C3DC + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #6 + blt _02226DC0 + ldr r0, [sp] + add r1, r6, #0 + ldr r0, [r0] + bl MOD08_02212438 + ldr r0, [sp] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_02226DE0: + ldr r0, [sp] + ldr r0, [r0, #8] + bl FUN_0200BC1C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02226DEC +MOD08_02226DEC: ; 0x02226DEC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r7, #0 + add r6, r5, #0 + str r1, [sp, #0x10] + add r6, #0x30 + add r4, r7, #0 +_02226DFC: + mov r0, #0 + str r0, [sp] + mov r0, #0x32 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0 + str r0, [sp, #0xc] + ldr r2, _02226E3C ; =0x00007FFF + add r0, r6, #0 + add r3, r1, #0 + bl MOD08_02217D14 + ldr r0, [r5, #0x38] + add r7, r7, #1 + add r0, r0, r4 + str r0, [r5, #0x38] + ldr r1, [r5, #0x48] + ldr r0, [sp, #0x10] + add r6, #0x24 + mul r0, r1 + str r0, [r5, #0x48] + ldr r0, _02226E40 ; =0x00002AAA + add r5, #0x24 + add r4, r4, r0 + cmp r7, #6 + blt _02226DFC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02226E3C: .word 0x00007FFF +_02226E40: .word 0x00002AAA + + thumb_func_start MOD08_02226E44 +MOD08_02226E44: ; 0x02226E44 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0 + add r7, r6, #0 + str r0, [sp] + add r7, #0x30 + add r4, r6, #0 + add r5, r6, #0 +_02226E54: + add r0, r7, #0 + bl MOD08_02217D98 + mov r1, #0x13 + lsl r1, r1, #4 + mov r2, #0x30 + ldrsh r1, [r6, r1] + ldrsh r2, [r4, r2] + ldr r0, [r5, #0x18] + add r1, r1, r2 + ldr r2, _02226EB0 ; =0x00000132 + lsl r1, r1, #0x10 + ldrsh r2, [r6, r2] + asr r1, r1, #0x10 + bl FUN_0200C714 + ldr r1, [r4, #0x38] + ldr r0, _02226EB4 ; =0x00003FFF + cmp r1, r0 + blt _02226E8C + ldr r0, _02226EB8 ; =0x0000BF49 + cmp r1, r0 + bgt _02226E8C + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C6B0 + b _02226E9C +_02226E8C: + ldr r0, [r6] + bl MOD08_02215574 + add r1, r0, #0 + ldr r0, [r5, #0x18] + add r1, r1, #1 + bl FUN_0200C6B0 +_02226E9C: + ldr r0, [sp] + add r7, #0x24 + add r0, r0, #1 + add r4, #0x24 + add r5, r5, #4 + str r0, [sp] + cmp r0, #6 + blt _02226E54 + pop {r3, r4, r5, r6, r7, pc} + nop +_02226EB0: .word 0x00000132 +_02226EB4: .word 0x00003FFF +_02226EB8: .word 0x0000BF49 + + thumb_func_start MOD08_02226EBC +MOD08_02226EBC: ; 0x02226EBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #4 + bhi _02226FA2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02226ED6: ; jump table + .short _02226EE0 - _02226ED6 - 2 ; case 0 + .short _02226F16 - _02226ED6 - 2 ; case 1 + .short _02226F36 - _02226ED6 - 2 ; case 2 + .short _02226F62 - _02226ED6 - 2 ; case 3 + .short _02226F7E - _02226ED6 - 2 ; case 4 +_02226EE0: + ldr r0, [r4] + mov r1, #1 + mov r2, #0xf + bl MOD08_02227994 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, #0xfe + add r0, r4, r0 + mov r1, #1 + mov r2, #0x10 + mov r3, #0xf + bl MOD08_022186D4 + ldr r1, [r4, #0x14] + add r0, r4, #0 + bl MOD08_02226DEC + add r0, r4, #0 + bl MOD08_02226E44 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02226FA2 +_02226F16: + add r0, r4, #0 + bl MOD08_02226E44 + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD08_02218704 + cmp r0, #0 + beq _02226FA2 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x1c + str r0, [r4, #0x10] + b _02226FA2 +_02226F36: + add r0, r4, #0 + bl MOD08_02226E44 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + bpl _02226FA2 + ldr r0, [r4, #0xc] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0xf + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, #0xfe + add r0, r4, r0 + mov r2, #1 + mov r3, #0 + bl MOD08_022186D4 + b _02226FA2 +_02226F62: + add r0, r4, #0 + bl MOD08_02226E44 + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD08_02218704 + cmp r0, #0 + beq _02226FA2 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02226FA2 +_02226F7E: + mov r6, #0 + add r5, r4, #0 +_02226F82: + ldr r0, [r5, #0x18] + bl FUN_0200C3DC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02226F82 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r1, r7, #0 + bl MOD08_02212438 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02226FA2: + ldr r0, [r4, #8] + bl FUN_0200BC1C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02226FAC +MOD08_02226FAC: ; 0x02226FAC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r1, #0 + mov r1, #0x4d + lsl r1, r1, #2 + add r4, r0, #0 + str r2, [sp] + add r7, r3, #0 + bl MOD08_02228064 + add r6, r0, #0 + str r4, [r6] + ldr r0, [sp] + str r5, [r6, #4] + str r0, [r6, #8] + add r0, r4, #0 + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_022154D4 + mov r1, #0 + add r5, r0, #0 + bl FUN_0200782C + mov r1, #0x13 + lsl r1, r1, #4 + strh r0, [r6, r1] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + ldr r1, _02227050 ; =0x00000132 + strh r0, [r6, r1] + add r0, sp, #4 + add r1, r4, #0 + bl MOD08_02215474 + mov r4, #0 + add r5, r6, #0 +_02226FFE: + cmp r4, #0 + bne _02227006 + str r7, [r5, #0x18] + b _02227012 +_02227006: + ldr r0, [r6, #4] + ldr r1, [r6, #8] + add r2, sp, #4 + bl FUN_0200C154 + str r0, [r5, #0x18] +_02227012: + ldr r0, [r5, #0x18] + mov r1, #0x64 + bl FUN_0200C6C4 + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_0200C5E0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02226FFE + ldr r0, [r6] + bl MOD08_02212458 + add r1, r0, #0 + ldr r0, [r6] + bl MOD08_02217C1C + str r0, [r6, #0x14] + ldr r0, [r6] + ldr r1, _02227054 ; =MOD08_02226EBC + add r2, r6, #0 + bl MOD08_02212400 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02227050: .word 0x00000132 +_02227054: .word MOD08_02226EBC + + thumb_func_start MOD08_02227058 +MOD08_02227058: ; 0x02227058 + strh r1, [r0, #0xc] + strh r2, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02227060 +MOD08_02227060: ; 0x02227060 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + bx lr + .align 2, 0 + + thumb_func_start MOD08_02227068 +MOD08_02227068: ; 0x02227068 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x1c] + add r4, r1, #0 + bl MOD08_02212014 + add r6, r0, #0 + ldr r0, [r5, #0x1c] + mov r1, #3 + bl MOD08_02215600 + add r1, r0, #0 + lsl r0, r4, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r1, [r5, #4] + ldr r0, [r5] + lsl r2, r1, #4 + ldr r1, _022270F8 ; =0x0222C670 + add r3, r4, #0 + ldr r1, [r1, r2] + ldr r2, [r5, #0x2c] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + ldr r2, [r5, #4] + ldr r0, [r5, #0x30] + lsl r3, r2, #4 + ldr r2, _022270FC ; =0x0222C674 + ldr r1, [r5] + ldr r2, [r2, r3] + add r3, r6, #0 + bl FUN_020030E8 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x2c] + lsr r1, r1, #0x18 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r1, [r5, #4] + ldr r0, [r5] + lsl r2, r1, #4 + ldr r1, _02227100 ; =0x0222C678 + add r3, r4, #0 + ldr r1, [r1, r2] + ldr r2, [r5, #0x2c] + bl FUN_020068C8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_022270F8: .word 0x0222C670 +_022270FC: .word 0x0222C674 +_02227100: .word 0x0222C678 + + thumb_func_start MOD08_02227104 +MOD08_02227104: ; 0x02227104 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x18] + cmp r0, #3 + bhi _022271C0 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222711C: ; jump table + .short _02227124 - _0222711C - 2 ; case 0 + .short _02227134 - _0222711C - 2 ; case 1 + .short _0222714C - _0222711C - 2 ; case 2 + .short _0222716C - _0222711C - 2 ; case 3 +_02227124: + add r0, r4, #0 + mov r1, #2 + bl MOD08_02227068 + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0222720E +_02227134: + ldrh r0, [r4, #0x16] + mov r1, #4 + mov r2, #0x39 + str r0, [sp] + ldrh r3, [r4, #0x14] + ldr r0, _0222725C ; =0x04000050 + bl G2x_SetBlendAlpha_ + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0222720E +_0222714C: + add r1, r4, #0 + add r1, #0x40 + ldrb r1, [r1] + cmp r1, #0x14 + bls _0222715C + add r0, r0, #1 + strb r0, [r4, #0x18] + b _0222720E +_0222715C: + add r0, r4, #0 + add r0, #0x40 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x40 + strb r1, [r0] + b _0222720E +_0222716C: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _02227176 + sub r0, r0, #1 + strh r0, [r4, #0x14] +_02227176: + ldrh r0, [r4, #0x16] + cmp r0, #0x10 + bhs _02227180 + add r0, r0, #1 + strh r0, [r4, #0x16] +_02227180: + ldrh r0, [r4, #0x14] + cmp r0, #0 + bne _022271B2 + ldrh r0, [r4, #0x16] + cmp r0, #0x10 + bne _022271B2 + ldr r0, [r4, #0x2c] + mov r1, #2 + bl FUN_02018744 + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0200C644 + ldrb r0, [r4, #0x18] + add r0, r0, #1 + strb r0, [r4, #0x18] +_022271B2: + ldrh r0, [r4, #0x16] + ldrh r1, [r4, #0x14] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _02227260 ; =0x04000052 + strh r1, [r0] + b _0222720E +_022271C0: + ldr r0, _02227264 ; =0x0400004A + mov r1, #0x3f + ldrh r2, [r0] + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _02227268 ; =0xFFFFC0FF + lsl r1, r1, #8 + and r2, r3 + orr r1, r2 + strh r1, [r0] + mov r2, #0 + ldr r0, [r4, #0x2c] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x2c] + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0222726C ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + ldr r0, [r4, #0x1c] + add r1, r5, #0 + bl MOD08_02212438 + add r0, r4, #0 + bl MOD08_02228094 + pop {r3, r4, r5, pc} +_0222720E: + mov r3, #0x10 + mov r0, #0xc + ldrsh r1, [r4, r3] + ldrsh r0, [r4, r0] + mov r2, #0 + add r0, r1, r0 + strh r0, [r4, #0x10] + mov r0, #0x12 + ldrsh r1, [r4, r0] + mov r0, #0xe + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #0x12] + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x2c] + mov r1, #2 + bl FUN_020179E0 + mov r3, #0x12 + ldrsh r3, [r4, r3] + ldr r0, [r4, #0x2c] + mov r1, #2 + mov r2, #3 + bl FUN_020179E0 + ldr r0, [r4, #0x34] + bl FUN_0200C5A8 + ldr r0, [r4, #0x38] + bl FUN_0200C5A8 + ldr r0, [r4, #0x3c] + bl FUN_0200C5A8 + ldr r0, [r4, #0x24] + bl FUN_0200BC1C + pop {r3, r4, r5, pc} + nop +_0222725C: .word 0x04000050 +_02227260: .word 0x04000052 +_02227264: .word 0x0400004A +_02227268: .word 0xFFFFC0FF +_0222726C: .word 0xFFFF1FFF + + thumb_func_start MOD08_02227270 +MOD08_02227270: ; 0x02227270 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #7 + str r1, [r4] + add r5, r0, #0 + mov r1, #0 + bl MOD08_02212498 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #1 + bl MOD08_02212498 + str r0, [r4, #8] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02227290 +MOD08_02227290: ; 0x02227290 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x44 + add r6, r0, #0 + bl MOD08_02228064 + add r4, r0, #0 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x18 + bl MOD08_02227B70 + add r2, r4, #0 + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + mov r1, #0 + bl MOD08_022124D8 + str r0, [r4, #0x34] + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD08_022124D8 + str r0, [r4, #0x38] + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD08_022124D8 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD08_02215600 + ldr r0, [r4, #0x34] + mov r1, #2 + bl FUN_0200C6B0 + ldr r0, [r4, #0x38] + mov r1, #2 + bl FUN_0200C6B0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _022272FA + add r0, r6, #0 + bl MOD08_02212458 + b _02227300 +_022272FA: + add r0, r6, #0 + bl MOD08_02212460 +_02227300: + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r6, #0 + bl MOD08_02212004 + cmp r0, #1 + bne _02227338 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD08_02215600 + add r5, r0, #0 + ldr r0, [r4, #0x34] + add r1, r5, #0 + bl FUN_0200C6B0 + ldr r0, [r4, #0x38] + add r1, r5, #0 + bl FUN_0200C6B0 + b _0222735C +_02227338: + cmp r5, #1 + bhi _02227346 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0200C644 + b _0222735C +_02227346: + sub r0, r5, #3 + cmp r0, #1 + ldr r0, [r4, #0x3c] + bhi _02227356 + mov r1, #3 + bl FUN_0200C6B0 + b _0222735C +_02227356: + mov r1, #1 + bl FUN_0200C6B0 +_0222735C: + ldr r0, _022273A8 ; =0x0400004A + ldr r1, _022273AC ; =0xFFFFC0FF + ldrh r2, [r0] + and r2, r1 + mov r1, #0x16 + lsl r1, r1, #8 + orr r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1b + orr r2, r1 + mov r1, #0x20 + orr r2, r1 + strh r2, [r0] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _022273B0 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #0xa + orr r0, r2 + str r0, [r3] + ldr r0, [r4, #0x38] + mov r1, #2 + bl FUN_0200C90C + mov r0, #0 + strh r0, [r4, #0x10] + strh r0, [r4, #0x12] + ldr r0, [r4, #0x1c] + ldr r1, _022273B4 ; =MOD08_02227104 + add r2, r4, #0 + bl MOD08_02212400 + pop {r4, r5, r6, pc} + .align 2, 0 +_022273A8: .word 0x0400004A +_022273AC: .word 0xFFFFC0FF +_022273B0: .word 0xFFFF1FFF +_022273B4: .word MOD08_02227104 + + thumb_func_start MOD08_022273B8 +MOD08_022273B8: ; 0x022273B8 + push {r4, lr} + sub sp, #0x18 + add r1, sp, #0 + add r4, r0, #0 + bl MOD08_02227270 + add r0, sp, #0 + mov r1, #0 + mov r2, #3 + bl MOD08_02227058 + add r0, sp, #0 + mov r1, #0xc + mov r2, #4 + bl MOD08_02227060 + add r0, r4, #0 + add r1, sp, #0 + bl MOD08_02227290 + add sp, #0x18 + pop {r4, pc} + + thumb_func_start MOD08_022273E4 +MOD08_022273E4: ; 0x022273E4 + push {r4, lr} + sub sp, #0x18 + add r1, sp, #0 + add r4, r0, #0 + bl MOD08_02227270 + mov r1, #0 + add r0, sp, #0 + sub r2, r1, #3 + bl MOD08_02227058 + add r0, sp, #0 + mov r1, #0xc + mov r2, #4 + bl MOD08_02227060 + add r0, r4, #0 + add r1, sp, #0 + bl MOD08_02227290 + add sp, #0x18 + pop {r4, pc} + + thumb_func_start MOD08_02227410 +MOD08_02227410: ; 0x02227410 + push {r4, lr} + sub sp, #0x18 + add r1, sp, #0 + add r4, r0, #0 + bl MOD08_02227270 + add r0, sp, #0 + mov r1, #0 + mov r2, #3 + bl MOD08_02227058 + add r0, sp, #0 + mov r1, #0xc + mov r2, #4 + bl MOD08_02227060 + add r0, r4, #0 + add r1, sp, #0 + bl MOD08_02227290 + add sp, #0x18 + pop {r4, pc} + + thumb_func_start MOD08_0222743C +MOD08_0222743C: ; 0x0222743C + push {r4, lr} + sub sp, #0x18 + add r1, sp, #0 + add r4, r0, #0 + bl MOD08_02227270 + mov r1, #0 + add r0, sp, #0 + sub r2, r1, #6 + bl MOD08_02227058 + add r0, sp, #0 + mov r1, #0xc + mov r2, #4 + bl MOD08_02227060 + add r0, r4, #0 + add r1, sp, #0 + bl MOD08_02227290 + add sp, #0x18 + pop {r4, pc} + + thumb_func_start MOD08_02227468 +MOD08_02227468: ; 0x02227468 + ldr r3, _0222746C ; =MOD08_02215490 + bx r3 + .align 2, 0 +_0222746C: .word MOD08_02215490 + + thumb_func_start MOD08_02227470 +MOD08_02227470: ; 0x02227470 + push {r4, lr} + bl MOD08_02215490 + cmp r0, #5 + bhi _02227498 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02227486: ; jump table + .short _02227492 - _02227486 - 2 ; case 0 + .short _02227496 - _02227486 - 2 ; case 1 + .short _02227492 - _02227486 - 2 ; case 2 + .short _02227496 - _02227486 - 2 ; case 3 + .short _02227492 - _02227486 - 2 ; case 4 + .short _02227496 - _02227486 - 2 ; case 5 +_02227492: + mov r4, #3 + b _02227498 +_02227496: + mov r4, #4 +_02227498: + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD08_0222749C +MOD08_0222749C: ; 0x0222749C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r4, #0 +_022274A4: + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_02215490 + cmp r0, r5 + bne _022274B4 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_022274B4: + add r4, r4, #1 + cmp r4, #4 + blt _022274A4 + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_022274C0 +MOD08_022274C0: ; 0x022274C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD08_02215490 + add r5, r0, #0 + cmp r5, #1 + bls _02227520 + mov r4, #0 +_022274D0: + add r0, r6, #0 + add r1, r4, #0 + bl MOD08_02215490 + cmp r5, #5 + bhi _02227514 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022274E8: ; jump table + .short _02227514 - _022274E8 - 2 ; case 0 + .short _02227514 - _022274E8 - 2 ; case 1 + .short _022274F4 - _022274E8 - 2 ; case 2 + .short _02227504 - _022274E8 - 2 ; case 3 + .short _022274FC - _022274E8 - 2 ; case 4 + .short _0222750C - _022274E8 - 2 ; case 5 +_022274F4: + cmp r0, #4 + bne _02227514 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_022274FC: + cmp r0, #2 + bne _02227514 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02227504: + cmp r0, #5 + bne _02227514 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_0222750C: + cmp r0, #3 + bne _02227514 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02227514: + add r4, r4, #1 + cmp r4, #4 + blt _022274D0 + bl ErrorHandling + add r0, r5, #0 +_02227520: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_02227524 +MOD08_02227524: ; 0x02227524 + push {r3, lr} + cmp r0, #5 + bhi _0222755A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02227536: ; jump table + .short _02227542 - _02227536 - 2 ; case 0 + .short _02227546 - _02227536 - 2 ; case 1 + .short _0222754A - _02227536 - 2 ; case 2 + .short _0222754E - _02227536 - 2 ; case 3 + .short _02227552 - _02227536 - 2 ; case 4 + .short _02227556 - _02227536 - 2 ; case 5 +_02227542: + mov r0, #1 + pop {r3, pc} +_02227546: + mov r0, #0 + pop {r3, pc} +_0222754A: + mov r0, #3 + pop {r3, pc} +_0222754E: + mov r0, #2 + pop {r3, pc} +_02227552: + mov r0, #5 + pop {r3, pc} +_02227556: + mov r0, #4 + pop {r3, pc} +_0222755A: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_02227564 +MOD08_02227564: ; 0x02227564 + push {r3, r4, r5, r6} + sub sp, #0x30 + ldr r6, _022275B8 ; =0x0222C6C8 + add r5, sp, #0x18 + mov r4, #0xc +_0222756E: + ldrh r3, [r6] + add r6, r6, #2 + strh r3, [r5] + add r5, r5, #2 + sub r4, r4, #1 + bne _0222756E + ldr r6, _022275BC ; =0x0222C6E0 + add r5, sp, #0 + mov r4, #0xc +_02227580: + ldrh r3, [r6] + add r6, r6, #2 + strh r3, [r5] + add r5, r5, #2 + sub r4, r4, #1 + bne _02227580 + cmp r1, #0 + beq _022275A4 + lsl r3, r0, #2 + add r0, sp, #0 + add r1, r0, r3 + ldrh r0, [r0, r3] + add sp, #0x30 + strh r0, [r2] + ldrh r0, [r1, #2] + strh r0, [r2, #2] + pop {r3, r4, r5, r6} + bx lr +_022275A4: + lsl r3, r0, #2 + add r0, sp, #0x18 + add r1, r0, r3 + ldrh r0, [r0, r3] + strh r0, [r2] + ldrh r0, [r1, #2] + strh r0, [r2, #2] + add sp, #0x30 + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_022275B8: .word 0x0222C6C8 +_022275BC: .word 0x0222C6E0 + + thumb_func_start MOD08_022275C0 +MOD08_022275C0: ; 0x022275C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD08_02227468 + add r6, r0, #0 + add r0, r5, #0 + bl MOD08_02212004 + add r1, r0, #0 + add r0, r6, #0 + add r2, r4, #0 + bl MOD08_02227564 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_022275E0 +MOD08_022275E0: ; 0x022275E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x114 + add r7, r2, #0 + mov r2, #0x12 + str r3, [sp] + ldr r6, _02227654 ; =0x0222C6F8 + add r5, r0, #0 + add r4, r1, #0 + add r3, sp, #4 + lsl r2, r2, #4 +_022275FC: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022275FC + cmp r7, #1 + bne _0222761E + cmp r5, #0 + beq _02227612 + cmp r5, #1 + beq _02227616 + b _0222761A +_02227612: + mov r5, #6 + b _0222761E +_02227616: + mov r5, #7 + b _0222761E +_0222761A: + bl ErrorHandling +_0222761E: + mov r0, #0x12 + lsl r0, r0, #4 + add r1, sp, #4 + mul r0, r5 + add r0, r1, r0 + ldr r1, _02227658 ; =0x00000908 + add r1, sp + ldr r1, [r1, #0x10] + lsl r2, r1, #1 + ldr r1, [sp] + add r2, r1, r2 + mov r1, #0xc + add r3, r2, #0 + mul r3, r1 + add r1, r0, r3 + ldr r2, [r1, #8] + ldr r1, [r1, #4] + ldr r0, [r0, r3] + str r0, [r4] + str r1, [r4, #4] + str r2, [r4, #8] + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x114 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02227654: .word 0x0222C6F8 +_02227658: .word 0x00000908 + + thumb_func_start MOD08_0222765C +MOD08_0222765C: ; 0x0222765C + push {r3, r4, lr} + sub sp, #4 + mov r4, #0 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_0222766C +MOD08_0222766C: ; 0x0222766C + push {r3, r4, lr} + sub sp, #4 + mov r4, #1 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_0222767C +MOD08_0222767C: ; 0x0222767C + push {r3, r4, lr} + sub sp, #4 + mov r4, #2 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_0222768C +MOD08_0222768C: ; 0x0222768C + push {r3, r4, lr} + sub sp, #4 + mov r4, #3 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_0222769C +MOD08_0222769C: ; 0x0222769C + push {r3, r4, lr} + sub sp, #4 + mov r4, #4 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022276AC +MOD08_022276AC: ; 0x022276AC + push {r3, r4, lr} + sub sp, #4 + mov r4, #5 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022276BC +MOD08_022276BC: ; 0x022276BC + push {r3, r4, lr} + sub sp, #4 + mov r4, #6 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022276CC +MOD08_022276CC: ; 0x022276CC + push {r3, r4, lr} + sub sp, #4 + mov r4, #7 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022276DC +MOD08_022276DC: ; 0x022276DC + push {r3, r4, lr} + sub sp, #4 + mov r4, #8 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022276EC +MOD08_022276EC: ; 0x022276EC + push {r3, r4, lr} + sub sp, #4 + mov r4, #9 + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022276FC +MOD08_022276FC: ; 0x022276FC + push {r3, r4, lr} + sub sp, #4 + mov r4, #0xa + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_0222770C +MOD08_0222770C: ; 0x0222770C + push {r3, r4, lr} + sub sp, #4 + mov r4, #0xb + str r4, [sp] + bl MOD08_022275E0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_0222771C +MOD08_0222771C: ; 0x0222771C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222765C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222774C +MOD08_0222774C: ; 0x0222774C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222766C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222777C +MOD08_0222777C: ; 0x0222777C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222767C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_022277AC +MOD08_022277AC: ; 0x022277AC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222768C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_022277DC +MOD08_022277DC: ; 0x022277DC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222769C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222780C +MOD08_0222780C: ; 0x0222780C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_022276AC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222783C +MOD08_0222783C: ; 0x0222783C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_022276BC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222786C +MOD08_0222786C: ; 0x0222786C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_022276CC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222789C +MOD08_0222789C: ; 0x0222789C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_022276DC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_022278CC +MOD08_022278CC: ; 0x022278CC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_022276EC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_022278FC +MOD08_022278FC: ; 0x022278FC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_022276FC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222792C +MOD08_0222792C: ; 0x0222792C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD08_02212468 + bl FUN_02013448 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD08_02227468 + add r5, r0, #0 + add r0, r4, #0 + bl MOD08_02212004 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD08_0222770C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222795C +MOD08_0222795C: ; 0x0222795C + mov r2, #0 + ldr r1, _02227968 ; =0x000068D0 + str r2, [r0] + str r1, [r0, #4] + str r2, [r0, #8] + bx lr + .align 2, 0 +_02227968: .word 0x000068D0 + + thumb_func_start MOD08_0222796C +MOD08_0222796C: ; 0x0222796C + push {r3, lr} + bl MOD08_0222765C + pop {r3, pc} + + thumb_func_start MOD08_02227974 +MOD08_02227974: ; 0x02227974 + push {r3, lr} + add r3, r1, #0 + cmp r0, #0 + bne _02227984 + add r0, r3, #0 + bl FUN_02013428 + pop {r3, pc} +_02227984: + ldr r2, _02227990 ; =0x0222C6BC + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + pop {r3, pc} + .align 2, 0 +_02227990: .word 0x0222C6BC + + thumb_func_start MOD08_02227994 +MOD08_02227994: ; 0x02227994 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0 + mvn r1, r1 + add r4, r2, #0 + cmp r5, r1 + bne _022279A4 + mov r5, #0x1a +_022279A4: + mov r1, #0 + mvn r1, r1 + cmp r4, r1 + bne _022279AE + mov r4, #5 +_022279AE: + mov r1, #2 + bl MOD08_022155C4 + mov r1, #1 + add r2, r1, #0 + lsl r2, r0 + orr r2, r1 + ldr r0, _022279CC ; =0x04000050 + mov r1, #0 + add r3, r5, #0 + str r4, [sp] + bl G2x_SetBlendAlpha_ + pop {r3, r4, r5, pc} + nop +_022279CC: .word 0x04000050 + + thumb_func_start MOD08_022279D0 +MOD08_022279D0: ; 0x022279D0 + push {r3, r4, r5, lr} + mov r0, #0 + add r4, r2, #0 + mvn r0, r0 + add r5, r1, #0 + cmp r4, r0 + bne _022279E0 + mov r4, #0x1a +_022279E0: + mov r0, #0 + mvn r0, r0 + cmp r3, r0 + bne _022279EA + mov r3, #5 +_022279EA: + ldr r0, _022279FC ; =0x04000050 + str r3, [sp] + mov r1, #0 + add r2, r5, #0 + add r3, r4, #0 + bl G2x_SetBlendAlpha_ + pop {r3, r4, r5, pc} + nop +_022279FC: .word 0x04000050 + + thumb_func_start MOD08_02227A00 +MOD08_02227A00: ; 0x02227A00 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0 + add r5, r1, #0 + mvn r0, r0 + add r4, r2, #0 + cmp r5, r0 + bne _02227A12 + mov r5, #0x1a +_02227A12: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02227A1C + mov r4, #5 +_02227A1C: + add r0, r6, #0 + mov r1, #2 + bl MOD08_022155C4 + mov r1, #1 + add r2, r1, #0 + lsl r2, r0 + mov r0, #0x11 + add r7, r2, #0 + orr r7, r0 + add r0, r6, #0 + bl MOD08_022155C4 + mov r1, #1 + lsl r1, r0 + ldr r0, _02227A48 ; =0x04000050 + add r2, r7, #0 + add r3, r5, #0 + str r4, [sp] + bl G2x_SetBlendAlpha_ + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02227A48: .word 0x04000050 + + thumb_func_start MOD08_02227A4C +MOD08_02227A4C: ; 0x02227A4C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #0 + bne _02227AA0 + mov r1, #1 + bl MOD08_022155C4 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_022155C4 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD08_022155C4 + add r2, r0, #0 + mov r0, #1 + add r3, r0, #0 + add r1, r0, #0 + lsl r3, r7 + lsl r0, r2 + lsl r1, r6 + orr r0, r3 + orr r1, r0 + mov r0, #0x11 + add r2, r1, #0 + orr r2, r0 + ldr r0, _02227B20 ; =0x04000048 + ldrh r1, [r0] + mov r0, #0x3f + bic r1, r0 + orr r1, r2 + cmp r4, #0 + beq _02227A9A + mov r0, #0x20 + orr r1, r0 +_02227A9A: + ldr r0, _02227B20 ; =0x04000048 + strh r1, [r0] + b _02227AEA +_02227AA0: + mov r1, #1 + bl MOD08_022155C4 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl MOD08_022155C4 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD08_022155C4 + add r2, r0, #0 + mov r0, #1 + add r3, r0, #0 + add r1, r0, #0 + lsl r0, r2 + lsl r3, r7 + lsl r1, r6 + orr r0, r3 + orr r1, r0 + ldr r2, _02227B20 ; =0x04000048 + add r3, r1, #0 + mov r0, #0x11 + orr r3, r0 + ldrh r1, [r2] + ldr r0, _02227B24 ; =0xFFFFC0FF + and r1, r0 + lsl r0, r3, #8 + orr r1, r0 + cmp r4, #0 + beq _02227AE6 + lsr r0, r2, #0xd + orr r1, r0 +_02227AE6: + ldr r0, _02227B20 ; =0x04000048 + strh r1, [r0] +_02227AEA: + add r0, r5, #0 + mov r1, #0 + bl MOD08_022155C4 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD08_022155C4 + mov r1, #1 + add r2, r1, #0 + lsl r1, r0 + lsl r2, r4 + orr r1, r2 + add r3, r1, #0 + ldr r1, _02227B28 ; =0x0400004A + mov r0, #0x11 + orr r3, r0 + ldrh r2, [r1] + mov r0, #0x3f + bic r2, r0 + orr r2, r3 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02227B20: .word 0x04000048 +_02227B24: .word 0xFFFFC0FF +_02227B28: .word 0x0400004A + + thumb_func_start MOD08_02227B2C +MOD08_02227B2C: ; 0x02227B2C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _02227B3E + mov r0, #0 + strh r0, [r4] + strh r0, [r4, #2] + pop {r3, r4, r5, pc} +_02227B3E: + bl FUN_02008268 + cmp r0, #0 + bne _02227B4E + mov r0, #0 + strh r0, [r4] + strh r0, [r4, #2] + pop {r3, r4, r5, pc} +_02227B4E: + add r0, r5, #0 + mov r1, #0 + bl FUN_0200782C + strh r0, [r4] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200782C + strh r0, [r4, #2] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02227B64 +MOD08_02227B64: ; 0x02227B64 + ldr r3, _02227B6C ; =0x0200C7A1 + add r2, r1, #2 + bx r3 + nop +_02227B6C: .word 0x0200C7A1 + + thumb_func_start MOD08_02227B70 +MOD08_02227B70: ; 0x02227B70 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0 + strb r1, [r4] + strb r1, [r4, #1] + strb r1, [r4, #2] + add r5, r0, #0 + strb r1, [r4, #3] + str r5, [r4, #4] + bl MOD08_02212520 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD08_02212504 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD08_02212518 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD08_02212490 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD08_02215504 + str r0, [r4, #0x18] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02227BAC +MOD08_02227BAC: ; 0x02227BAC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + add r4, r3, #0 + mov r1, #0 + str r1, [r4] + mov r1, #0x40 + and r1, r7 + add r6, r0, #0 + add r5, r2, #0 + cmp r1, #0x40 + beq _02227BC6 + b _02227CE8 +_02227BC6: + bl MOD08_02212458 + add r7, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + cmp r0, #0 + beq _02227C08 + str r7, [r1, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227C08: + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_022274C0 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r6, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + ldr r1, [r0, #8] + cmp r1, #0 + beq _02227C50 + ldr r1, [sp, #4] + str r1, [r0, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227C50: + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_02215490 + bl MOD08_02227524 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_0222749C + add r7, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + cmp r0, #0 + beq _02227CA2 + str r7, [r1, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227CA2: + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_022274C0 + add r7, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_022154D4 + ldr r2, [r4] + mov r1, #0x14 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + str r0, [r2, #8] + ldr r0, [r4] + add r2, r0, #0 + mul r2, r1 + add r2, r5, r2 + ldr r0, [r2, #8] + cmp r0, #0 + beq _02227DCA + str r7, [r2, #0x10] + ldr r0, [r4] + mul r1, r0 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02227CE8: + mov r1, #0x20 + and r1, r7 + cmp r1, #0x20 + bne _02227DE8 + bl MOD08_02212458 + add r7, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_022274C0 + str r0, [sp, #8] + cmp r0, r7 + beq _02227D42 + ldr r1, [sp, #8] + add r0, r6, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + ldr r1, [r0, #8] + cmp r1, #0 + beq _02227D42 + ldr r1, [sp, #8] + str r1, [r0, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227D42: + add r0, r6, #0 + add r1, r7, #0 + bl MOD08_02215490 + bl MOD08_02227524 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_0222749C + str r0, [sp] + cmp r0, r7 + beq _02227D9A + ldr r1, [sp] + add r0, r6, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + ldr r1, [r0, #8] + cmp r1, #0 + beq _02227D9A + ldr r1, [sp] + str r1, [r0, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227D9A: + ldr r1, [sp] + add r0, r6, #0 + bl MOD08_022274C0 + str r0, [sp, #0xc] + cmp r0, r7 + beq _02227DCA + ldr r1, [sp, #0xc] + add r0, r6, #0 + bl MOD08_022154D4 + ldr r2, [r4] + mov r1, #0x14 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + str r0, [r2, #8] + ldr r0, [r4] + add r2, r0, #0 + mul r2, r1 + add r2, r5, r2 + ldr r0, [r2, #8] + cmp r0, #0 + bne _02227DCC +_02227DCA: + b _02227F82 +_02227DCC: + ldr r0, [sp, #0xc] + str r0, [r2, #0x10] + ldr r0, [r4] + mul r1, r0 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02227DE8: + mov r1, #2 + and r1, r7 + cmp r1, #2 + bne _02227E42 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + ldr r0, [r0, #8] + cmp r0, #0 + beq _02227E42 + add r0, r6, #0 + bl MOD08_02212458 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227E42: + add r0, r6, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _02227EB8 + mov r0, #4 + and r0, r7 + cmp r0, #4 + bne _02227EB8 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022274C0 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + ldr r0, [r0, #8] + cmp r0, #0 + beq _02227EB8 + add r0, r6, #0 + bl MOD08_02212458 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022274C0 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227EB8: + mov r0, #8 + and r0, r7 + cmp r0, #8 + bne _02227F14 + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022154D4 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #8] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + ldr r0, [r0, #8] + cmp r0, #0 + beq _02227F14 + add r0, r6, #0 + bl MOD08_02212460 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #0x10] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227F14: + add r0, r6, #0 + bl MOD08_0221553C + cmp r0, #1 + bne _02227F82 + mov r0, #0x10 + and r0, r7 + cmp r0, #0x10 + bne _02227F82 + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022274C0 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022154D4 + ldr r2, [r4] + mov r1, #0x14 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + str r0, [r2, #8] + ldr r0, [r4] + mul r1, r0 + add r0, r5, r1 + ldr r0, [r0, #8] + cmp r0, #0 + beq _02227F82 + add r0, r6, #0 + bl MOD08_02212460 + add r1, r0, #0 + add r0, r6, #0 + bl MOD08_022274C0 + ldr r2, [r4] + mov r1, #0x14 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + str r0, [r2, #0x10] + ldr r0, [r4] + mul r1, r0 + add r1, r5, r1 + ldr r0, [r1, #8] + add r1, r1, #4 + bl MOD08_02227B2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227F82: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02227F88 +MOD08_02227F88: ; 0x02227F88 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r3, #0 + mov r1, #0 + str r1, [r4] + mov r1, #2 + and r1, r6 + add r7, r0, #0 + add r5, r2, #0 + cmp r1, #2 + bne _02227FC8 + ldr r1, [r4] + bl MOD08_022124D8 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #0xc] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #0xc] + add r1, r1, #4 + bl MOD08_02227B64 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227FC8: + mov r0, #4 + and r0, r6 + cmp r0, #4 + bne _02227FFC + ldr r1, [r4] + add r0, r7, #0 + bl MOD08_022124D8 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #0xc] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #0xc] + add r1, r1, #4 + bl MOD08_02227B64 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02227FFC: + mov r0, #8 + and r0, r6 + cmp r0, #8 + bne _02228030 + ldr r1, [r4] + add r0, r7, #0 + bl MOD08_022124D8 + add r2, r0, #0 + ldr r0, [r4] + mov r3, #0x14 + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r2, [r0, #0xc] + ldr r0, [r4] + add r1, r0, #0 + mul r1, r3 + add r1, r5, r1 + ldr r0, [r1, #0xc] + add r1, r1, #4 + bl MOD08_02227B64 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02228030: + mov r0, #0x10 + and r0, r6 + cmp r0, #0x10 + bne _02228060 + ldr r1, [r4] + add r0, r7, #0 + bl MOD08_022124D8 + ldr r2, [r4] + mov r1, #0x14 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + str r0, [r2, #0xc] + ldr r0, [r4] + mul r1, r0 + add r1, r5, r1 + ldr r0, [r1, #0xc] + add r1, r1, #4 + bl MOD08_02227B64 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02228060: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_02228064 +MOD08_02228064: ; 0x02228064 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r4, #0 + bne _02228072 + bl ErrorHandling +_02228072: + add r0, r4, #0 + bl MOD08_02212014 + add r1, r5, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _02228086 + bl ErrorHandling +_02228086: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02228094 +MOD08_02228094: ; 0x02228094 + push {r4, lr} + add r4, r0, #0 + bne _0222809E + bl ErrorHandling +_0222809E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022280A8 +MOD08_022280A8: ; 0x022280A8 + cmp r0, #1 + blt _022280B2 + ldr r1, _022280C0 ; =0x00000113 + cmp r0, r1 + ble _022280B6 +_022280B2: + mov r0, #4 + b _022280BC +_022280B6: + cmp r0, #0xff + blt _022280BC + sub r0, #0xff +_022280BC: + sub r0, r0, #1 + bx lr + .align 2, 0 +_022280C0: .word 0x00000113 + + thumb_func_start MOD08_022280C4 +MOD08_022280C4: ; 0x022280C4 + push {r3, r4, r5} + sub sp, #0x2c + ldr r5, _02228100 ; =0x0222D0A4 + add r2, r0, #0 + add r4, sp, #0 + mov r3, #5 +_022280D0: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _022280D0 + ldr r0, [r5] + str r0, [r4] + mov r0, #0 + add r3, r0, #0 + add r4, sp, #0 +_022280E2: + ldr r1, [r4] + cmp r2, r1 + bne _022280F0 + add sp, #0x2c + mov r0, #1 + pop {r3, r4, r5} + bx lr +_022280F0: + add r3, r3, #1 + add r4, r4, #4 + cmp r3, #0xb + blo _022280E2 + add sp, #0x2c + pop {r3, r4, r5} + bx lr + nop +_02228100: .word 0x0222D0A4 + + thumb_func_start MOD08_02228104 +MOD08_02228104: ; 0x02228104 + push {r4, r5} + sub sp, #0x18 + ldr r3, _0222813C ; =0x0222D004 + add r2, sp, #0 + add r5, r0, #0 + add r4, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #0 + add r2, r0, #0 +_02228120: + ldr r1, [r4] + cmp r5, r1 + bne _0222812E + add sp, #0x18 + mov r0, #1 + pop {r4, r5} + bx lr +_0222812E: + add r2, r2, #1 + add r4, r4, #4 + cmp r2, #6 + blo _02228120 + add sp, #0x18 + pop {r4, r5} + bx lr + .align 2, 0 +_0222813C: .word 0x0222D004 + + thumb_func_start MOD08_02228140 +MOD08_02228140: ; 0x02228140 + push {r3, r4, r5} + sub sp, #0xc + ldr r5, _02228174 ; =0x0222CFF8 + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #0 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + mov r0, #1 + mov r4, #0 +_02228158: + ldr r1, [r2] + cmp r3, r1 + bne _02228166 + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5} + bx lr +_02228166: + add r4, r4, #1 + add r2, r2, #4 + cmp r4, #3 + blo _02228158 + add sp, #0xc + pop {r3, r4, r5} + bx lr + .align 2, 0 +_02228174: .word 0x0222CFF8 + + thumb_func_start MOD08_02228178 +MOD08_02228178: ; 0x02228178 + push {r3, lr} + bl MOD08_022280A8 + lsl r1, r0, #3 + ldr r0, _02228188 ; =0x0222D208 + ldr r0, [r0, r1] + pop {r3, pc} + nop +_02228188: .word 0x0222D208 + + thumb_func_start MOD08_0222818C +MOD08_0222818C: ; 0x0222818C + push {r3, lr} + bl MOD08_022280A8 + lsl r1, r0, #3 + ldr r0, _0222819C ; =0x0222D20C + ldr r0, [r0, r1] + pop {r3, pc} + nop +_0222819C: .word 0x0222D20C + + thumb_func_start MOD08_022281A0 +MOD08_022281A0: ; 0x022281A0 + push {r3, lr} + bl MOD08_022280A8 + mov r1, #0xc + mul r1, r0 + ldr r0, _022281B0 ; =0x0222D2A8 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 +_022281B0: .word 0x0222D2A8 + + thumb_func_start MOD08_022281B4 +MOD08_022281B4: ; 0x022281B4 + push {r3, lr} + bl MOD08_022280A8 + mov r1, #0xc + mul r1, r0 + ldr r0, _022281C4 ; =0x0222D2B0 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 +_022281C4: .word 0x0222D2B0 + + thumb_func_start MOD08_022281C8 +MOD08_022281C8: ; 0x022281C8 + push {r3, lr} + bl MOD08_022280A8 + mov r1, #0xc + mul r1, r0 + ldr r0, _022281D8 ; =0x0222D2AC + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 +_022281D8: .word 0x0222D2AC + + thumb_func_start MOD08_022281DC +MOD08_022281DC: ; 0x022281DC + push {r4, lr} + add r4, r1, #0 + bl MOD08_022280A8 + lsl r2, r0, #4 + ldr r0, _022281F0 ; =0x0222D398 + lsl r1, r4, #2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4, pc} + .align 2, 0 +_022281F0: .word 0x0222D398 + + thumb_func_start MOD08_022281F4 +MOD08_022281F4: ; 0x022281F4 + push {r4, lr} + mov r1, #0xb8 + add r4, r0, #0 + bl FUN_02016998 + cmp r0, #0 + bne _0222820A + bl ErrorHandling + mov r0, #0 + pop {r4, pc} +_0222820A: + add r1, r0, #0 + str r4, [r0] + mov r2, #0 + add r1, #0x88 + str r2, [r1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02228218 +MOD08_02228218: ; 0x02228218 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl MOD08_022281F4 + add r1, r5, #0 + add r4, r0, #0 + bl MOD08_02228244 + mov r1, #0 + str r1, [r4, #0x10] + add r2, r4, #0 + add r0, r1, #0 +_02228230: + str r0, [r2, #0x14] + str r0, [r2, #0x38] + str r0, [r2, #0x5c] + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #9 + blt _02228230 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_02228244 +MOD08_02228244: ; 0x02228244 + push {r4, lr} + add r3, r1, #0 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, r4, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0xa1 + str r0, [r2] + ldr r0, [r4, #0xc] + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + cmp r0, #0xd + blt _02228272 + bl ErrorHandling +_02228272: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + cmp r0, #0 + bne _0222829E + add r0, r4, #0 + mov r2, #0 + add r0, #0x94 + str r2, [r0] + ldr r0, [r4, #8] + cmp r0, #0 + beq _02228290 + add r4, #0x98 + str r0, [r4] + pop {r4, pc} +_02228290: + ldr r0, [r4, #0xc] + mov r1, #0x9a + bl FUN_020671BC + add r4, #0x98 + str r0, [r4] + pop {r4, pc} +_0222829E: + add r0, r4, #0 + mov r1, #1 + add r0, #0x94 + str r1, [r0] + ldr r0, [r4, #0xc] + add r4, #0xa0 + mov r1, #0xaa + add r2, r4, #0 + bl FUN_020671BC + pop {r4, pc} + + thumb_func_start MOD08_022282B4 +MOD08_022282B4: ; 0x022282B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r1, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #3 + bls _022282C8 + b _02228520 +_022282C8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022282D4: ; jump table + .short _022282DC - _022282D4 - 2 ; case 0 + .short _02228376 - _022282D4 - 2 ; case 1 + .short _02228402 - _022282D4 - 2 ; case 2 + .short _0222848E - _022282D4 - 2 ; case 3 +_022282DC: + ldr r1, [r4] + mov r0, #0x63 + bl FUN_02006670 + add r1, r4, #0 + add r1, #0x8c + str r0, [r1] + add r0, r4, #0 + add r6, r4, #0 + str r0, [sp, #0x14] + add r0, #0xa0 + mov r5, #0 + add r6, #0x10 + str r0, [sp, #0x14] +_022282F8: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_02029CC8 + add r7, r0, #0 + beq _02228360 + bl FUN_02029CE0 + cmp r0, #0 + beq _02228360 + cmp r0, #0x51 + bge _02228360 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FF4 + str r0, [sp, #0x10] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + str r7, [r0, #0x38] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _02228332 + bl ErrorHandling +_02228332: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [r4] + ldr r2, [sp, #0x10] + mov r3, #0 + bl MOD08_02215B00 + ldr r1, [r4, #0x10] + lsl r1, r1, #2 + add r1, r4, r1 + str r0, [r1, #0x14] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _0222835A + bl ErrorHandling +_0222835A: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_02228360: + add r5, r5, #1 + cmp r5, #2 + blt _022282F8 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + add r4, #0x90 + add r0, r0, #1 + add sp, #0x24 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_02228376: + add r0, r4, #0 + add r6, r4, #0 + str r0, [sp, #0x18] + add r0, #0xa0 + mov r5, #2 + add r6, #0x10 + str r0, [sp, #0x18] +_02228384: + ldr r0, [sp, #0x18] + add r1, r5, #0 + bl FUN_02029CC8 + add r7, r0, #0 + beq _022283EC + bl FUN_02029CE0 + cmp r0, #0 + beq _022283EC + cmp r0, #0x51 + bge _022283EC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FF4 + str r0, [sp, #4] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + str r7, [r0, #0x38] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022283BE + bl ErrorHandling +_022283BE: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [r4] + ldr r2, [sp, #4] + mov r3, #0 + bl MOD08_02215B00 + ldr r1, [r4, #0x10] + lsl r1, r1, #2 + add r1, r4, r1 + str r0, [r1, #0x14] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _022283E6 + bl ErrorHandling +_022283E6: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_022283EC: + add r5, r5, #1 + cmp r5, #4 + blt _02228384 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + add r4, #0x90 + add r0, r0, #1 + add sp, #0x24 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_02228402: + add r0, r4, #0 + add r6, r4, #0 + str r0, [sp, #0x1c] + add r0, #0xa0 + mov r5, #4 + add r6, #0x10 + str r0, [sp, #0x1c] +_02228410: + ldr r0, [sp, #0x1c] + add r1, r5, #0 + bl FUN_02029CC8 + add r7, r0, #0 + beq _02228478 + bl FUN_02029CE0 + cmp r0, #0 + beq _02228478 + cmp r0, #0x51 + bge _02228478 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FF4 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + str r7, [r0, #0x38] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _0222844A + bl ErrorHandling +_0222844A: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [r4] + ldr r2, [sp, #8] + mov r3, #0 + bl MOD08_02215B00 + ldr r1, [r4, #0x10] + lsl r1, r1, #2 + add r1, r4, r1 + str r0, [r1, #0x14] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _02228472 + bl ErrorHandling +_02228472: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_02228478: + add r5, r5, #1 + cmp r5, #6 + blt _02228410 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + add r4, #0x90 + add r0, r0, #1 + add sp, #0x24 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0222848E: + add r0, r4, #0 + add r6, r4, #0 + str r0, [sp, #0x20] + add r0, #0xa0 + mov r5, #6 + add r6, #0x10 + str r0, [sp, #0x20] +_0222849C: + ldr r0, [sp, #0x20] + add r1, r5, #0 + bl FUN_02029CC8 + add r7, r0, #0 + beq _02228504 + bl FUN_02029CE0 + cmp r0, #0 + beq _02228504 + cmp r0, #0x51 + bge _02228504 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FF4 + str r0, [sp, #0xc] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + str r7, [r0, #0x38] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022284D6 + bl ErrorHandling +_022284D6: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [r4] + ldr r2, [sp, #0xc] + mov r3, #0 + bl MOD08_02215B00 + ldr r1, [r4, #0x10] + lsl r1, r1, #2 + add r1, r4, r1 + str r0, [r1, #0x14] + ldr r0, [r4, #0x10] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _022284FE + bl ErrorHandling +_022284FE: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_02228504: + add r5, r5, #1 + cmp r5, #8 + blt _0222849C + add r0, r4, #0 + mov r1, #0xff + add r0, #0x90 + add r4, #0x8c + str r1, [r0] + ldr r0, [r4] + bl FUN_020066F4 + ldr r0, [sp] + bl FUN_0200CAB4 +_02228520: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02228524 +MOD08_02228524: ; 0x02228524 + push {r4, lr} + add r4, r0, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #0 + bne _0222854E + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + bl MOD08_02228178 + add r2, r0, #0 + mov r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4] + mov r1, #0x63 + mov r3, #0 + bl MOD08_02215ACC + str r0, [r4, #0x14] + pop {r4, pc} +_0222854E: + mov r1, #0 + add r0, r4, #0 + mov r2, #0xfa + str r1, [r4, #0x10] + add r0, #0x90 + str r1, [r0] + ldr r0, _0222856C ; =MOD08_022282B4 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + add r1, r4, #0 + bl MOD08_022282B4 + pop {r4, pc} + .align 2, 0 +_0222856C: .word MOD08_022282B4 + + thumb_func_start MOD08_02228570 +MOD08_02228570: ; 0x02228570 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228574 +MOD08_02228574: ; 0x02228574 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r1, #1 + add r0, #0x88 + str r1, [r0] + bl MOD08_0221268C + add r0, r5, #0 + add r1, r4, #0 + bl MOD08_0222865C + mov r2, #0xfa + ldr r0, _022285A0 ; =MOD08_022285BC + add r1, r5, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + add r5, #0x84 + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_022285A0: .word MOD08_022285BC + + thumb_func_start MOD08_022285A4 +MOD08_022285A4: ; 0x022285A4 + ldr r3, _022285AC ; =MOD08_02228574 + ldr r1, _022285B0 ; =MOD08_02228788 + bx r3 + nop +_022285AC: .word MOD08_02228574 +_022285B0: .word MOD08_02228788 + + thumb_func_start MOD08_022285B4 +MOD08_022285B4: ; 0x022285B4 + add r0, #0x88 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_022285BC +MOD08_022285BC: ; 0x022285BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + str r0, [sp] + ldr r0, [r6, #0x10] + mov r7, #0 + cmp r0, #9 + ble _022285CE + bl ErrorHandling +_022285CE: + ldr r0, [r6, #0x10] + mov r4, #0 + cmp r0, #0 + ble _02228606 + add r5, r6, #0 +_022285D8: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _022285FC + bl FUN_020133C8 + cmp r0, #0 + bne _022285FA + ldr r0, [r5, #0x5c] + cmp r0, #0 + beq _022285FA + ldr r0, [r5, #0x14] + bl MOD08_02215B40 + mov r0, #0 + str r0, [r5, #0x14] + str r0, [r5, #0x5c] + b _022285FC +_022285FA: + mov r7, #1 +_022285FC: + ldr r0, [r6, #0x10] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _022285D8 +_02228606: + cmp r7, #0 + bne _02228616 + mov r0, #0 + add r6, #0x88 + str r0, [r6] + ldr r0, [sp] + bl FUN_0200CAB4 +_02228616: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_02228618 +MOD08_02228618: ; 0x02228618 + ldr r3, _0222861C ; =0x02016A19 + bx r3 + .align 2, 0 +_0222861C: .word 0x02016A19 + + thumb_func_start MOD08_02228620 +MOD08_02228620: ; 0x02228620 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _02228654 + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0] + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x18] + mov r1, #0 + add r3, r4, #0 + bl FUN_020133AC + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02013440 + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_02228654: + sub r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0222865C +MOD08_0222865C: ; 0x0222865C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0x94 + ldr r0, [r0] + add r7, r1, #0 + cmp r0, #0 + bne _0222869A + add r0, r6, #0 + add r0, #0x98 + ldr r0, [r0] + bl MOD08_0222818C + add r5, r0, #0 + mov r4, #0 + cmp r5, #0 + ble _0222868E +_0222867C: + ldr r0, [r6, #0x14] + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl FUN_020133AC + add r4, r4, #1 + cmp r4, r5 + blt _0222867C +_0222868E: + mov r1, #1 + str r1, [r6, #0x5c] + ldr r0, [r6, #0x14] + bl FUN_02013440 + pop {r3, r4, r5, r6, r7, pc} +_0222869A: + ldr r0, [r6, #0x10] + mov r7, #0 + cmp r0, #0 + ble _02228700 + add r0, r6, #0 + str r0, [sp] + add r0, #0x5c + add r5, r6, #0 + str r0, [sp] +_022286AC: + ldr r0, [r6] + mov r1, #0x1c + bl FUN_02016998 + add r4, r0, #0 + bne _022286BC + bl ErrorHandling +_022286BC: + str r7, [r4] + ldr r0, [r6, #4] + str r0, [r4, #8] + ldr r0, _02228704 ; =MOD08_022287C4 + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r5, #0x5c] + ldr r0, [sp] + str r0, [r4, #0xc] + ldr r0, [r5, #0x14] + str r0, [r4, #0x10] + ldr r0, [r5, #0x38] + str r0, [r4, #0x14] + cmp r0, #0 + bne _022286DE + bl ErrorHandling +_022286DE: + ldr r0, [r4, #0x14] + bl MOD08_0222A078 + str r0, [r4, #4] + ldr r0, _02228708 ; =MOD08_02228620 + ldr r2, _0222870C ; =0x000003E9 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, [sp] + add r7, r7, #1 + add r0, r0, #4 + str r0, [sp] + ldr r0, [r6, #0x10] + add r5, r5, #4 + cmp r7, r0 + blt _022286AC +_02228700: + pop {r3, r4, r5, r6, r7, pc} + nop +_02228704: .word MOD08_022287C4 +_02228708: .word MOD08_02228620 +_0222870C: .word 0x000003E9 + + thumb_func_start MOD08_02228710 +MOD08_02228710: ; 0x02228710 + push {r3, r4, r5, lr} + mov r2, #0 + mov r3, #1 + add r5, r0, #0 + add r4, r1, #0 + bl MOD08_0222796C + cmp r5, #5 + bhi _02228766 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222872E: ; jump table + .short _0222873A - _0222872E - 2 ; case 0 + .short _02228742 - _0222872E - 2 ; case 1 + .short _0222874C - _0222872E - 2 ; case 2 + .short _02228754 - _0222872E - 2 ; case 3 + .short _0222875E - _0222872E - 2 ; case 4 + .short _02228766 - _0222872E - 2 ; case 5 +_0222873A: + mov r5, #0 + add r0, r5, #0 + sub r0, #0x10 + b _0222876E +_02228742: + mov r5, #0xe + mvn r5, r5 + add r0, r5, #0 + sub r0, #0xa + b _0222876E +_0222874C: + mov r5, #7 + mvn r5, r5 + sub r0, r5, #4 + b _0222876E +_02228754: + mov r5, #0xd + mvn r5, r5 + add r0, r5, #0 + sub r0, #0xb + b _0222876E +_0222875E: + mov r5, #7 + mvn r5, r5 + sub r0, r5, #4 + b _0222876E +_02228766: + mov r5, #0xf + mvn r5, r5 + add r0, r5, #0 + sub r0, #0xd +_0222876E: + add r5, #0xa + ldr r3, [r4] + mov r1, #0xac + add r2, r5, #0 + mul r2, r1 + sub r2, r3, r2 + str r2, [r4] + add r0, #0x20 + ldr r2, [r4, #4] + mul r1, r0 + sub r0, r2, r1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02228788 +MOD08_02228788: ; 0x02228788 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_0201341C + ldr r0, [r0, #4] + add r1, sp, #0 + bl MOD08_02228710 + ldr r0, [r4, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r4, #0x30] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022287C4 +MOD08_022287C4: ; 0x022287C4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r4, r0, #0 + ldr r0, [r4, #8] + add r1, sp, #0 + bl MOD08_02228710 + ldr r0, [r4, #0x14] + bl FUN_02029CE0 + bl FUN_02086018 + ldr r0, [r4, #0x14] + bl FUN_02029CE4 + add r6, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_02029CE8 + sub r6, #0xbe + lsl r1, r6, #0x10 + asr r3, r1, #0x10 + ldr r2, [sp] + mov r1, #0xac + add r4, r3, #0 + mul r4, r1 + add r3, r2, r4 + mov r4, #0x64 + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + ldr r2, [sp, #4] + mul r1, r0 + add r0, r2, r1 + str r3, [sp] + str r0, [sp, #4] + ldr r0, [r5, #0x20] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r3, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD08_02228838 +MOD08_02228838: ; 0x02228838 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201341C + mov r1, #2 + ldrsh r2, [r0, r1] + mov r1, #0x64 + mov r3, #0xac + sub r1, r1, r2 + lsl r1, r1, #0x10 + asr r2, r1, #0x10 + add r1, r2, #0 + mov r2, #0 + ldrsh r0, [r0, r2] + mul r1, r3 + sub r0, #0x81 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r2, r0, #0 + ldr r0, [r4, #0x20] + mul r2, r3 + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r2, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r0, [r0] + ldr r0, [r0, #0xc] + str r0, [r4, #0x30] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02228880 +MOD08_02228880: ; 0x02228880 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0 + bne _02228894 + bl ErrorHandling +_02228894: + ldmia r5!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + str r0, [r2] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022288B8 + ldr r0, _022288DC ; =0x00000113 + bl MOD08_022281A0 + str r0, [r4, #0x20] + ldr r0, _022288DC ; =0x00000113 + bl MOD08_022281B4 + b _022288C6 +_022288B8: + ldr r0, [r4, #4] + bl MOD08_022281A0 + str r0, [r4, #0x20] + ldr r0, [r4, #4] + bl MOD08_022281B4 +_022288C6: + str r0, [r4, #0x1c] + ldr r0, [r4, #8] + ldr r2, [r4, #0x20] + mov r1, #0x63 + mov r3, #0 + bl MOD08_02215ACC + str r0, [r4, #0x18] + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_022288DC: .word 0x00000113 + + thumb_func_start MOD08_022288E0 +MOD08_022288E0: ; 0x022288E0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5, #0xc] + cmp r1, #0xff + bne _0222893A + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _02228910 + ldr r0, [r5, #0x1c] + mov r4, #0 + cmp r0, #0 + ble _02228944 + ldr r6, _02228950 ; =MOD08_02228838 +_022288FA: + ldr r0, [r5, #0x18] + add r1, r4, #0 + add r2, r6, #0 + add r3, r5, #0 + bl FUN_020133AC + ldr r0, [r5, #0x1c] + add r4, r4, #1 + cmp r4, r0 + blt _022288FA + b _02228944 +_02228910: + ldr r0, [r5, #0x1c] + mov r4, #0 + cmp r0, #0 + ble _02228944 + ldr r6, _02228950 ; =MOD08_02228838 +_0222891A: + ldr r0, [r5, #4] + bl MOD08_022281C8 + cmp r4, r0 + beq _02228930 + ldr r0, [r5, #0x18] + add r1, r4, #0 + add r2, r6, #0 + add r3, r5, #0 + bl FUN_020133AC +_02228930: + ldr r0, [r5, #0x1c] + add r4, r4, #1 + cmp r4, r0 + blt _0222891A + b _02228944 +_0222893A: + ldr r0, [r5, #0x18] + ldr r2, _02228950 ; =MOD08_02228838 + add r3, r5, #0 + bl FUN_020133AC +_02228944: + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_02013440 + pop {r4, r5, r6, pc} + nop +_02228950: .word MOD08_02228838 + + thumb_func_start MOD08_02228954 +MOD08_02228954: ; 0x02228954 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_020133C8 + cmp r0, #0 + bne _0222896C + ldr r0, [r4, #0x18] + bl MOD08_02215B40 + mov r0, #0 + pop {r4, pc} +_0222896C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228970 +MOD08_02228970: ; 0x02228970 + ldr r3, _02228974 ; =0x02016A19 + bx r3 + .align 2, 0 +_02228974: .word 0x02016A19 + + thumb_func_start MOD08_02228978 +MOD08_02228978: ; 0x02228978 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _0222898C + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #1 + bl MOD08_02229A18 +_0222898C: + add r0, r4, #0 + mov r1, #2 + bl MOD08_02229A1C + cmp r0, #1 + bne _0222899C + mov r0, #0 + pop {r4, pc} +_0222899C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_022289A0 +MOD08_022289A0: ; 0x022289A0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _022289B4 + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #3 + bl MOD08_02229A18 +_022289B4: + add r0, r4, #0 + mov r1, #4 + bl MOD08_02229A1C + cmp r0, #1 + bne _022289C4 + mov r0, #0 + pop {r4, pc} +_022289C4: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_022289C8 +MOD08_022289C8: ; 0x022289C8 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _022289DC + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #5 + bl MOD08_02229A18 +_022289DC: + add r0, r4, #0 + mov r1, #6 + bl MOD08_02229A1C + cmp r0, #1 + bne _022289EC + mov r0, #0 + pop {r4, pc} +_022289EC: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_022289F0 +MOD08_022289F0: ; 0x022289F0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02228A04 + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #7 + bl MOD08_02229A18 +_02228A04: + add r0, r4, #0 + mov r1, #0xe + bl MOD08_02229A1C + cmp r0, #1 + bne _02228A14 + mov r0, #0 + pop {r4, pc} +_02228A14: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228A18 +MOD08_02228A18: ; 0x02228A18 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02228A2C + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #0xf + bl MOD08_02229A18 +_02228A2C: + add r0, r4, #0 + mov r1, #0x12 + bl MOD08_02229A1C + cmp r0, #1 + bne _02228A3C + mov r0, #0 + pop {r4, pc} +_02228A3C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228A40 +MOD08_02228A40: ; 0x02228A40 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02228A54 + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #0x13 + bl MOD08_02229A18 +_02228A54: + add r0, r4, #0 + mov r1, #0x1b + bl MOD08_02229A1C + cmp r0, #1 + bne _02228A64 + mov r0, #0 + pop {r4, pc} +_02228A64: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228A68 +MOD08_02228A68: ; 0x02228A68 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02228A7C + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #0x15 + bl MOD08_02229A18 +_02228A7C: + add r0, r4, #0 + mov r1, #0x16 + bl MOD08_02229A1C + cmp r0, #1 + bne _02228A8C + mov r0, #0 + pop {r4, pc} +_02228A8C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228A90 +MOD08_02228A90: ; 0x02228A90 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02228AA4 + add r1, r1, #1 + str r1, [r4, #4] + mov r1, #0x17 + bl MOD08_02229A18 +_02228AA4: + add r0, r4, #0 + mov r1, #0x1b + bl MOD08_02229A1C + cmp r0, #1 + bne _02228AB4 + mov r0, #0 + pop {r4, pc} +_02228AB4: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228AB8 +MOD08_02228AB8: ; 0x02228AB8 + str r1, [r0] + mov r1, #0 + str r1, [r0, #4] + bx lr + + thumb_func_start MOD08_02228AC0 +MOD08_02228AC0: ; 0x02228AC0 + push {r3, lr} + ldr r1, [r0] + lsl r2, r1, #2 + ldr r1, _02228AD0 ; =0x0222D034 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_02228AD0: .word 0x0222D034 + + thumb_func_start MOD08_02228AD4 +MOD08_02228AD4: ; 0x02228AD4 + str r1, [r0, #0x14] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x10] + bx lr + + thumb_func_start MOD08_02228AE0 +MOD08_02228AE0: ; 0x02228AE0 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228AE4 +MOD08_02228AE4: ; 0x02228AE4 + push {r4, lr} + add r4, r0, #0 + bl MOD08_02229114 + cmp r0, #0 + bne _02228AF8 + add r0, r4, #0 + mov r1, #2 + bl MOD08_02228AD4 +_02228AF8: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228AFC +MOD08_02228AFC: ; 0x02228AFC + push {r3, lr} + mov r1, #3 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228B08 +MOD08_02228B08: ; 0x02228B08 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _02228BD8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02228B20: ; jump table + .short _02228B28 - _02228B20 - 2 ; case 0 + .short _02228B7E - _02228B20 - 2 ; case 1 + .short _02228B94 - _02228B20 - 2 ; case 2 + .short _02228BB0 - _02228B20 - 2 ; case 3 +_02228B28: + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C5C0 + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + add r2, sp, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, sp, #0 + str r0, [sp, #8] + mov r0, #0xff + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r2, #2 + bl FUN_0200C7A0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xb4 + add r1, #0x94 + ldr r0, [r0] + ldr r1, [r1] + bl MOD08_0221590C + add r1, r4, #0 + add r1, #0xd8 + str r0, [r1] + add r0, sp, #0 + bl MOD08_02228880 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228BE0 +_02228B7E: + ldr r0, [r4, #0x30] + bl FUN_0200C630 + cmp r0, #2 + blt _02228BE0 + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228BE0 +_02228B94: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_022288E0 + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + bl MOD08_02215918 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228BE0 +_02228BB0: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_02228954 + cmp r0, #0 + bne _02228BE0 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200C61C + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_02228970 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228BE0 +_02228BD8: + add r0, r4, #0 + mov r1, #4 + bl MOD08_02228AD4 +_02228BE0: + mov r0, #1 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02228BE8 +MOD08_02228BE8: ; 0x02228BE8 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228BEC +MOD08_02228BEC: ; 0x02228BEC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0xc] + cmp r1, #0 + bne _02228C2C + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0xb8 + add r2, #0xba + bl FUN_0200C7A0 + add r0, r4, #0 + mov r1, #0x3c + add r0, #0xbc + strh r1, [r0] + add r0, r4, #0 + mov r1, #0xb4 + add r0, #0xbe + strh r1, [r0] + add r0, r4, #0 + mov r1, #0xa + add r0, #0xc0 + str r1, [r0] + add r0, r4, #0 + mov r1, #0xc + add r0, #0xc8 + str r1, [r0] + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02228C3C +_02228C2C: + bl MOD08_02229114 + cmp r0, #0 + bne _02228C3C + add r0, r4, #0 + mov r1, #6 + bl MOD08_02228AD4 +_02228C3C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD08_02228C40 +MOD08_02228C40: ; 0x02228C40 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228C44 +MOD08_02228C44: ; 0x02228C44 + push {r3, lr} + mov r1, #8 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228C50 +MOD08_02228C50: ; 0x02228C50 + push {r3, lr} + mov r1, #9 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228C5C +MOD08_02228C5C: ; 0x02228C5C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02228C6E + cmp r0, #1 + beq _02228CA2 + b _02228CE4 +_02228C6E: + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + ldr r0, _02228D00 ; =0x0000037F + mov r3, #1 + add r5, r3, #0 + str r0, [sp, #8] + add r0, r4, #0 + lsl r5, r2 + add r0, #0xb0 + lsl r2, r5, #0x10 + ldr r0, [r0] + mov r1, #4 + lsr r2, r2, #0x10 + sub r3, r3, #2 + bl FUN_02003210 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228CFA +_02228CA2: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02228CFA + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r2, r0, #0 + mov r0, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _02228D00 ; =0x0000037F + mov r3, #1 + add r5, r3, #0 + str r0, [sp, #8] + add r0, r4, #0 + lsl r5, r2 + add r0, #0xb0 + lsl r2, r5, #0x10 + ldr r0, [r0] + mov r1, #4 + lsr r2, r2, #0x10 + sub r3, r3, #2 + bl FUN_02003210 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228CFA +_02228CE4: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02228CFA + add r0, r4, #0 + mov r1, #0xa + bl MOD08_02228AD4 +_02228CFA: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02228D00: .word 0x0000037F + + thumb_func_start MOD08_02228D04 +MOD08_02228D04: ; 0x02228D04 + push {r3, lr} + mov r1, #0xb + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228D10 +MOD08_02228D10: ; 0x02228D10 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02228D22 + cmp r0, #1 + beq _02228D62 + b _02228D7E +_02228D22: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #1 + blt _02228D7E + add r1, sp, #8 + ldr r0, [r4, #0x30] + add r1, #2 + add r2, sp, #8 + bl FUN_0200C7A0 + add r1, sp, #8 + mov r0, #0 + ldrsh r3, [r1, r0] + mov r0, #2 + ldrsh r1, [r1, r0] + add r0, r3, #0 + add r0, #0x20 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x48 + add r2, r1, #0 + bl MOD08_02217E80 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228D7E +_02228D62: + add r0, r4, #0 + ldr r1, [r4, #0x30] + add r0, #0x48 + bl MOD08_02217F08 + cmp r0, #0 + bne _02228D7E + ldr r0, [r4, #8] + mov r1, #0xd + add r0, r0, #1 + str r0, [r4, #8] + add r0, r4, #0 + bl MOD08_02228AD4 +_02228D7E: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD08_02228D84 +MOD08_02228D84: ; 0x02228D84 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228D88 +MOD08_02228D88: ; 0x02228D88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5, #8] + cmp r1, #0 + beq _02228D98 + cmp r1, #1 + beq _02228DAE + b _02228E0E +_02228D98: + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5, #0x30] + mov r1, #0 + bl FUN_0200C61C + ldr r0, [r5, #8] + add r0, r0, #1 + str r0, [r5, #8] +_02228DAE: + ldr r1, [r5, #0xc] + mov r0, #6 + add r2, r1, #0 + mul r2, r0 + ldr r0, _02228E18 ; =0x0222D18A + ldr r1, _02228E1C ; =0x0222D18C + ldrsh r0, [r0, r2] + ldrh r1, [r1, r2] + str r0, [sp] + ldr r0, [r5, #0x30] + bl FUN_0200C61C + ldr r0, [r5, #0xc] + ldr r4, _02228E20 ; =0x0222D07C + add r0, r0, #1 + str r0, [r5, #0xc] + mov r6, #0 + mov r7, #0x75 +_02228DD2: + ldr r1, [r5, #0xc] + ldr r0, [r4] + cmp r1, r0 + bne _02228DE6 + ldr r0, [r4, #4] + add r1, r7, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020054A8 +_02228DE6: + add r6, r6, #1 + add r4, #8 + cmp r6, #5 + blt _02228DD2 + ldr r0, [r5, #0xc] + cmp r0, #0x14 + bgt _02228DFA + ldr r0, [sp] + cmp r0, #0xff + bne _02228E02 +_02228DFA: + ldr r0, [r5, #8] + add r0, r0, #1 + str r0, [r5, #8] + b _02228E14 +_02228E02: + ldr r0, [r5, #0x30] + ldr r2, [sp] + mov r1, #0 + bl FUN_0200C82C + b _02228E14 +_02228E0E: + mov r1, #0xe + bl MOD08_02228AD4 +_02228E14: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02228E18: .word 0x0222D18A +_02228E1C: .word 0x0222D18C +_02228E20: .word 0x0222D07C + + thumb_func_start MOD08_02228E24 +MOD08_02228E24: ; 0x02228E24 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228E28 +MOD08_02228E28: ; 0x02228E28 + push {r3, lr} + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + cmp r1, #0xe + blt _02228E44 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + mov r1, #0 + str r1, [r0, #0xc] + mov r1, #0x10 + bl MOD08_02228AD4 +_02228E44: + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228E48 +MOD08_02228E48: ; 0x02228E48 + push {r3, lr} + mov r1, #0x11 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228E54 +MOD08_02228E54: ; 0x02228E54 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + cmp r0, #0 + beq _02228E64 + cmp r0, #1 + beq _02228E74 + b _02228EDC +_02228E64: + ldr r0, [r5, #0x18] + cmp r0, #3 + blt _02228E6E + bl ErrorHandling +_02228E6E: + ldr r0, [r5, #8] + add r0, r0, #1 + str r0, [r5, #8] +_02228E74: + ldr r1, [r5, #0x18] + mov r0, #0x18 + add r3, r1, #0 + mul r3, r0 + ldr r0, _02228EE0 ; =0x0222D0D0 + ldr r1, [r5, #0xc] + add r0, r0, r3 + lsl r2, r1, #1 + ldrsh r4, [r2, r0] + add r0, r1, #1 + str r0, [r5, #0xc] + cmp r0, #0xb + bgt _02228E92 + cmp r4, #0xff + bne _02228EB2 +_02228E92: + ldr r0, [r5, #8] + mov r1, #0 + add r0, r0, #1 + str r0, [r5, #8] + ldr r0, [r5, #0x18] + add r0, r0, #1 + str r0, [r5, #0x18] + ldr r0, [r5, #0x30] + bl FUN_0200C898 + add r0, r5, #0 + mov r1, #0x12 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, r4, r5, pc} +_02228EB2: + cmp r0, #5 + bne _02228EBE + ldr r0, _02228EE4 ; =0x000005FE + mov r1, #0x75 + bl FUN_020054A8 +_02228EBE: + ldr r0, [r5, #0x30] + add r1, r4, #0 + mov r2, #0 + bl FUN_0200C82C + ldr r0, _02228EE8 ; =0x0001FFFE + mov r1, #0x5a + mul r0, r4 + lsl r1, r1, #2 + bl _s32_div_f + add r1, r0, #0 + ldr r0, [r5, #0x30] + bl FUN_0200C8BC +_02228EDC: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_02228EE0: .word 0x0222D0D0 +_02228EE4: .word 0x000005FE +_02228EE8: .word 0x0001FFFE + + thumb_func_start MOD08_02228EEC +MOD08_02228EEC: ; 0x02228EEC + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228EF0 +MOD08_02228EF0: ; 0x02228EF0 + push {r3, lr} + mov r1, #0x14 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228EFC +MOD08_02228EFC: ; 0x02228EFC + push {r3, lr} + mov r1, #0x1b + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_02228F08 +MOD08_02228F08: ; 0x02228F08 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _02228FDC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02228F20: ; jump table + .short _02228F28 - _02228F20 - 2 ; case 0 + .short _02228F5A - _02228F20 - 2 ; case 1 + .short _02228FA2 - _02228F20 - 2 ; case 2 + .short _02228FB4 - _02228F20 - 2 ; case 3 +_02228F28: + ldr r0, [r4, #0x30] + bl FUN_0200C68C + mov r1, #0 + mov r3, #1 + add r2, r0, #0 + add r5, r3, #0 + lsl r5, r2 + lsl r2, r5, #0x10 + str r1, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + str r1, [sp, #8] + add r0, #0xb0 + ldr r0, [r0] + mov r1, #4 + lsr r2, r2, #0x10 + sub r3, r3, #6 + bl FUN_02003210 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228FF2 +_02228F5A: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02228FF2 + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + add r1, r4, #0 + str r0, [sp, #0x10] + add r1, #0x94 + ldr r1, [r1] + str r1, [sp, #0x14] + bl MOD08_022281C8 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + add r2, sp, #0xc + ldr r0, [r4, #0x30] + add r1, sp, #0xc + add r2, #2 + bl FUN_0200C7A0 + add r0, sp, #0xc + bl MOD08_02228880 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228FF2 +_02228FA2: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_022288E0 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228FF2 +_02228FB4: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_02228954 + cmp r0, #0 + bne _02228FF2 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200C61C + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_02228970 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02228FF2 +_02228FDC: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02228FF2 + add r0, r4, #0 + mov r1, #0x16 + bl MOD08_02228AD4 +_02228FF2: + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, pc} + + thumb_func_start MOD08_02228FF8 +MOD08_02228FF8: ; 0x02228FF8 + mov r0, #1 + bx lr + + thumb_func_start MOD08_02228FFC +MOD08_02228FFC: ; 0x02228FFC + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _0222900E + cmp r1, #1 + beq _02229040 + b _02229054 +_0222900E: + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r2, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0 + mov r3, #1 + add r5, r3, #0 + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + lsl r5, r2 + add r0, #0xb0 + lsl r2, r5, #0x10 + ldr r0, [r0] + mov r1, #4 + lsr r2, r2, #0x10 + sub r3, r3, #6 + bl FUN_02003210 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _0222905A +_02229040: + add r0, #0xb0 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0222905A + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _0222905A +_02229054: + mov r1, #0x18 + bl MOD08_02228AD4 +_0222905A: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD08_02229060 +MOD08_02229060: ; 0x02229060 + push {r3, lr} + mov r1, #0x19 + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_0222906C +MOD08_0222906C: ; 0x0222906C + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _0222907C + cmp r1, #1 + beq _0222908A + b _022290E2 +_0222907C: + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C90C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] +_0222908A: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _022290B2 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x21 + strb r1, [r0] + b _022290CE +_022290B2: + add r0, r4, #0 + mov r1, #0 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + mov r2, #0xf + add r0, #0x21 + strb r2, [r0] + ldr r0, [r4, #0x30] + bl FUN_0200C644 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] +_022290CE: + add r0, r4, #0 + add r0, #0x20 + add r4, #0x21 + ldrb r1, [r0] + ldrb r0, [r4] + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _022290EC ; =0x04000052 + strh r1, [r0] + b _022290E8 +_022290E2: + mov r1, #0x1a + bl MOD08_02228AD4 +_022290E8: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_022290EC: .word 0x04000052 + + thumb_func_start MOD08_022290F0 +MOD08_022290F0: ; 0x022290F0 + push {r3, lr} + mov r1, #0x1b + bl MOD08_02228AD4 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD08_022290FC +MOD08_022290FC: ; 0x022290FC + mov r0, #0 + bx lr + + thumb_func_start MOD08_02229100 +MOD08_02229100: ; 0x02229100 + push {r3, lr} + ldr r1, [r0, #0x14] + lsl r2, r1, #2 + ldr r1, _02229110 ; =0x0222D118 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_02229110: .word 0x0222D118 + + thumb_func_start MOD08_02229114 +MOD08_02229114: ; 0x02229114 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bls _02229122 + b _02229322 +_02229122: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222912E: ; jump table + .short _02229136 - _0222912E - 2 ; case 0 + .short _022291A4 - _0222912E - 2 ; case 1 + .short _0222929E - _0222912E - 2 ; case 2 + .short _02229302 - _0222912E - 2 ; case 3 +_02229136: + mov r0, #0xba + ldrsh r0, [r4, r0] + add r1, r4, #0 + mov r2, #0xb8 + str r0, [sp] + mov r0, #0xbe + ldrsh r0, [r4, r0] + mov r3, #0xbc + add r1, #0x6c + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + add r0, #0x48 + bl MOD08_02217F50 + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + add r0, r4, #0 + add r0, #0xd4 + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_022280C4 + cmp r0, #1 + bne _0222928C + bl FUN_0201B9EC + mov r1, #0x14 + bl _s32_div_f + add r1, #0xa + ldr r0, [r4, #0x30] + lsl r1, r1, #0xd + bl FUN_0200C8BC + b _022293BE +_022291A4: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_022280C4 + cmp r0, #1 + bne _02229242 + mov r1, #2 + ldr r0, [r4, #0x30] + lsl r1, r1, #0xc + bl FUN_0200C8BC + add r0, r4, #0 + add r0, #0xc4 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, #0xa + cmp r2, r0 + ble _022291DE + mov r1, #2 + ldr r0, [r4, #0x30] + lsl r1, r1, #0xc + bl FUN_0200C8BC +_022291DE: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_02228104 + cmp r0, #1 + bne _02229242 + add r0, r4, #0 + add r0, #0xc4 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, #0xa + cmp r2, r0 + bne _02229242 + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + add r1, r4, #0 + lsl r3, r3, #0x14 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _022293C4 ; =0x0000FFFF + add r1, #0x94 + str r0, [sp, #0x14] + ldr r0, _022293C8 ; =0x000003EA + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r1, [r1] + bl MOD08_02218B20 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] +_02229242: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #6 + blt _0222927A + cmp r0, #8 + bgt _0222927A + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + ldr r1, [r0] + cmp r1, r2 + ble _0222927A + add r0, r2, #5 + cmp r1, r0 + blt _0222928C +_0222927A: + add r0, r4, #0 + add r1, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x48 + add r1, #0x6c + bl MOD08_02217FE4 + cmp r0, #0 + beq _0222928E +_0222928C: + b _022293BE +_0222928E: + add r0, r4, #0 + mov r1, #0 + bl MOD08_02229FFC + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022293BE +_0222929E: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_02228104 + cmp r0, #1 + bne _022292D2 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #0 + beq _022292D2 + bl MOD08_02218AF8 + cmp r0, #1 + beq _022293BE + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl MOD08_02218B08 + mov r0, #1 + str r0, [r4, #0x28] + add sp, #0x1c + mov r0, #0 + pop {r3, r4, pc} +_022292D2: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0xf + blt _022292E6 + mov r0, #1 + str r0, [r4, #0x28] + add sp, #0x1c + mov r0, #0 + pop {r3, r4, pc} +_022292E6: + add r0, r4, #0 + add r0, #0xa0 + ldr r1, [r0] + ldr r0, _022293CC ; =0x00000111 + cmp r1, r0 + bne _022292FA + ldr r0, _022293D0 ; =0x000007E8 + mov r1, #0x75 + bl FUN_020054A8 +_022292FA: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022293BE +_02229302: + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C5C0 + add r0, r4, #0 + mov r1, #1 + bl MOD08_0222A008 + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022293BE +_02229322: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0xf + bne _0222937C + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0xc + beq _02229378 + cmp r0, #0xd + beq _02229378 + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + add r1, r4, #0 + lsl r3, r3, #0x14 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _022293C4 ; =0x0000FFFF + add r1, #0x94 + str r0, [sp, #0x14] + ldr r0, _022293C8 ; =0x000003EA + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r1, [r1] + bl MOD08_02218B20 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] +_02229378: + mov r0, #1 + str r0, [r4, #0x28] +_0222937C: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0xf + ble _022293BE + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0xc + beq _022293B8 + cmp r0, #0xd + beq _022293B8 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl MOD08_02218AF8 + cmp r0, #1 + beq _022293BE + add r4, #0xd4 + ldr r0, [r4] + bl MOD08_02218B08 +_022293B8: + add sp, #0x1c + mov r0, #0 + pop {r3, r4, pc} +_022293BE: + mov r0, #1 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_022293C4: .word 0x0000FFFF +_022293C8: .word 0x000003EA +_022293CC: .word 0x00000111 +_022293D0: .word 0x000007E8 + + thumb_func_start MOD08_022293D4 +MOD08_022293D4: ; 0x022293D4 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bls _022293E2 + b _022295CE +_022293E2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022293EE: ; jump table + .short _022293F6 - _022293EE - 2 ; case 0 + .short _02229464 - _022293EE - 2 ; case 1 + .short _0222955E - _022293EE - 2 ; case 2 + .short _022295AE - _022293EE - 2 ; case 3 +_022293F6: + mov r0, #0xba + ldrsh r0, [r4, r0] + add r1, r4, #0 + mov r2, #0xb8 + str r0, [sp] + mov r0, #0xbe + ldrsh r0, [r4, r0] + mov r3, #0xbc + add r1, #0x6c + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, r4, #0 + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + add r0, #0x48 + bl MOD08_02217F50 + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + add r0, r4, #0 + add r0, #0xd4 + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_022280C4 + cmp r0, #1 + bne _0222954C + bl FUN_0201B9EC + mov r1, #0x14 + bl _s32_div_f + add r1, #0xa + ldr r0, [r4, #0x30] + lsl r1, r1, #0xd + bl FUN_0200C8BC + b _02229656 +_02229464: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_022280C4 + cmp r0, #1 + bne _02229502 + mov r1, #2 + ldr r0, [r4, #0x30] + lsl r1, r1, #0xc + bl FUN_0200C8BC + add r0, r4, #0 + add r0, #0xc4 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, #0xa + cmp r2, r0 + ble _0222949E + mov r1, #2 + ldr r0, [r4, #0x30] + lsl r1, r1, #0xc + bl FUN_0200C8BC +_0222949E: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_02228104 + cmp r0, #1 + bne _02229502 + add r0, r4, #0 + add r0, #0xc4 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, #0xa + cmp r2, r0 + bne _02229502 + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + add r1, r4, #0 + lsl r3, r3, #0x14 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _0222965C ; =0x0000FFFF + add r1, #0x94 + str r0, [sp, #0x14] + ldr r0, _02229660 ; =0x000003EA + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r1, [r1] + bl MOD08_02218B20 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] +_02229502: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #6 + blt _0222953A + cmp r0, #8 + bgt _0222953A + add r0, r4, #0 + add r0, #0xc0 + ldr r1, [r0] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + ldr r1, [r0] + cmp r1, r2 + ble _0222953A + add r0, r2, #5 + cmp r1, r0 + blt _0222954C +_0222953A: + add r0, r4, #0 + add r1, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x48 + add r1, #0x6c + bl MOD08_02217FE4 + cmp r0, #0 + beq _0222954E +_0222954C: + b _02229656 +_0222954E: + add r0, r4, #0 + mov r1, #0 + bl MOD08_02229FFC + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02229656 +_0222955E: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_02228104 + cmp r0, #1 + bne _02229592 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #0 + beq _02229592 + bl MOD08_02218AF8 + cmp r0, #1 + beq _02229656 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl MOD08_02218B08 + mov r0, #1 + str r0, [r4, #0x28] + add sp, #0x1c + mov r0, #0 + pop {r3, r4, pc} +_02229592: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0xf + blt _022295A6 + mov r0, #1 + str r0, [r4, #0x28] + add sp, #0x1c + mov r0, #0 + pop {r3, r4, pc} +_022295A6: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02229656 +_022295AE: + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C5C0 + add r0, r4, #0 + mov r1, #0 + bl MOD08_0222A008 + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02229656 +_022295CE: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0xf + bne _02229622 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_0200C61C + ldr r0, [r4, #0x30] + bl FUN_0200C68C + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + sub r0, #0x12 + str r0, [sp, #4] + mov r2, #2 + add r1, r4, #0 + lsl r3, r3, #0x14 + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + ldr r0, _0222965C ; =0x0000FFFF + add r1, #0x94 + str r0, [sp, #0x14] + ldr r0, _02229660 ; =0x000003EA + lsr r3, r3, #0x10 + str r0, [sp, #0x18] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r1, [r1] + bl MOD08_02218B20 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] + mov r0, #1 + str r0, [r4, #0x28] +_02229622: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0xf + ble _02229656 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl MOD08_02218AF8 + cmp r0, #1 + beq _02229656 + add r4, #0xd4 + ldr r0, [r4] + bl MOD08_02218B08 + add sp, #0x1c + mov r0, #0 + pop {r3, r4, pc} +_02229656: + mov r0, #1 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_0222965C: .word 0x0000FFFF +_02229660: .word 0x000003EA + + thumb_func_start MOD08_02229664 +MOD08_02229664: ; 0x02229664 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #7 + bls _02229672 + b _022297EA +_02229672: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222967E: ; jump table + .short _0222968E - _0222967E - 2 ; case 0 + .short _022296CC - _0222967E - 2 ; case 1 + .short _022296FC - _0222967E - 2 ; case 2 + .short _02229732 - _0222967E - 2 ; case 3 + .short _02229742 - _0222967E - 2 ; case 4 + .short _02229770 - _0222967E - 2 ; case 5 + .short _0222979E - _0222967E - 2 ; case 6 + .short _022297CC - _0222967E - 2 ; case 7 +_0222968E: + mov r1, #0 + bl MOD08_0222A008 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C5C0 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #2 + blt _022296E2 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200C61C + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_022296CC: + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #2 + bge _022296E4 +_022296E2: + b _022297F0 +_022296E4: + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_0200C61C + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_022296FC: + add r0, #0xa0 + ldr r0, [r0] + add r2, sp, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, sp, #0 + str r0, [sp, #8] + mov r0, #0xff + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r2, #2 + bl FUN_0200C7A0 + add r0, sp, #0 + bl MOD08_02228880 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_02229732: + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_022288E0 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_02229742: + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #6 + blt _022297F0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_0200C61C + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_02229770: + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #6 + blt _022297F0 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C61C + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_0222979E: + add r0, #0xc4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #6 + blt _022297F0 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200C61C + add r0, r4, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_022297CC: + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_02228954 + cmp r0, #0 + bne _022297F0 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl MOD08_02228970 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _022297F0 +_022297EA: + add sp, #0x14 + mov r0, #0 + pop {r3, r4, pc} +_022297F0: + mov r0, #1 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD08_022297F8 +MOD08_022297F8: ; 0x022297F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02229808 + cmp r0, #1 + beq _0222983C + b _0222986E +_02229808: + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _0222981E + ldr r1, _0222987C ; =0xFFFFE001 + add r0, r4, #0 + add r0, #0x34 + lsr r2, r1, #0x13 + mov r3, #0xa + bl MOD08_02218008 + b _0222982C +_0222981E: + add r0, r4, #0 + ldr r1, _02229880 ; =0x00001FFF + ldr r2, _0222987C ; =0xFFFFE001 + add r0, #0x34 + mov r3, #0xa + bl MOD08_02218008 +_0222982C: + ldr r1, [r4, #0x10] + mov r0, #1 + eor r0, r1 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02229876 +_0222983C: + ldr r1, [r4, #0x34] + ldr r0, [r4, #0x30] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0200C898 + add r0, r4, #0 + add r0, #0x34 + bl MOD08_02218058 + cmp r0, #0 + bne _02229876 + ldr r0, [r4, #0xc] + cmp r0, #1 + blt _02229862 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _02229876 +_02229862: + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + b _02229876 +_0222986E: + mov r0, #0 + add r4, #0xc4 + str r0, [r4] + pop {r4, pc} +_02229876: + mov r0, #1 + pop {r4, pc} + nop +_0222987C: .word 0xFFFFE001 +_02229880: .word 0x00001FFF + + thumb_func_start MOD08_02229884 +MOD08_02229884: ; 0x02229884 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0xff + bne _02229896 + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_02229896: + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _022298BA + add r1, sp, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r1, sp, #0 + mov r0, #2 + ldrsh r2, [r1, r0] + add r0, r4, #0 + add r0, #0xb8 + strh r2, [r0] + mov r0, #0 + ldrsh r0, [r1, r0] + add r4, #0xba + strh r0, [r4] +_022298BA: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD08_022298C0 +MOD08_022298C0: ; 0x022298C0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02229912 + add r0, r4, #0 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + ble _022298EA + add r0, r4, #0 + add r0, #0xdc + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xdc + str r1, [r0] + ldr r0, [r4, #0x2c] + bl FUN_0200BC1C + pop {r4, pc} +_022298EA: + add r1, #0x98 + ldr r1, [r1] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02229914 ; =0x0222D01C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + bne _02229900 + mov r0, #0 + str r0, [r4, #0x1c] +_02229900: + ldr r0, [r4, #0x24] + cmp r0, #1 + bne _0222990C + ldr r0, [r4, #0x30] + bl FUN_0200C5A8 +_0222990C: + ldr r0, [r4, #0x2c] + bl FUN_0200BC1C +_02229912: + pop {r4, pc} + .align 2, 0 +_02229914: .word 0x0222D01C + + thumb_func_start MOD08_02229918 +MOD08_02229918: ; 0x02229918 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + mov r1, #0xe0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0xe0 + add r4, r0, #0 + bl MI_CpuFill8 + cmp r4, #0 + bne _02229936 + bl ErrorHandling +_02229936: + add r3, r4, #0 + add r3, #0x90 + mov r2, #5 +_0222993C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222993C + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0xc] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4] + str r0, [r4, #4] + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + bl FUN_0200BB34 + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #0 + add r0, #0xdc + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD08_02228140 + str r0, [r4, #0x24] + add r0, r4, #0 + mov r2, #0 + add r0, #0xc4 + str r2, [r0] + add r0, r4, #0 + mov r1, #0x10 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x21 + strb r2, [r0] + bl MOD08_0221268C + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r0, r0, #0x1f + sub r0, r0, r1 + mov r2, #0x1f + ror r0, r2 + add r0, r1, r0 + beq _022299AA + add r0, r4, #0 + mov r1, #1 + add r0, #0x22 + strb r1, [r0] + b _022299B2 +_022299AA: + add r0, r4, #0 + sub r2, #0x20 + add r0, #0x22 + strb r2, [r0] +_022299B2: + add r0, r4, #0 + bl MOD08_02229E40 + add r0, r4, #0 + bl MOD08_02229F64 + add r0, r4, #0 + bl MOD08_02229A90 + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x28] + mov r2, #0xfa + ldr r0, _022299E4 ; =MOD08_022298C0 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + add r1, r4, #0 + add r1, #0xcc + str r0, [r1] + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_022299E4: .word MOD08_022298C0 + + thumb_func_start MOD08_022299E8 +MOD08_022299E8: ; 0x022299E8 + push {r4, lr} + add r4, r0, #0 + bne _022299F2 + bl ErrorHandling +_022299F2: + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _022299FC + mov r0, #1 + pop {r4, pc} +_022299FC: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD08_02229A00 +MOD08_02229A00: ; 0x02229A00 + push {r4, lr} + add r4, r0, #0 + bne _02229A0A + bl ErrorHandling +_02229A0A: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _02229A14 + mov r0, #1 + pop {r4, pc} +_02229A14: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD08_02229A18 +MOD08_02229A18: ; 0x02229A18 + str r1, [r0, #0x14] + bx lr + + thumb_func_start MOD08_02229A1C +MOD08_02229A1C: ; 0x02229A1C + ldr r0, [r0, #0x14] + cmp r0, r1 + bne _02229A26 + mov r0, #1 + bx lr +_02229A26: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD08_02229A2C +MOD08_02229A2C: ; 0x02229A2C + push {r4, lr} + add r4, r0, #0 + bne _02229A36 + bl ErrorHandling +_02229A36: + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x30] + bl FUN_0200C3DC + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02229A5C +MOD08_02229A5C: ; 0x02229A5C + add r2, r0, #0 + add r0, #0x98 + str r1, [r0] + mov r0, #0 + str r0, [r2, #8] + str r0, [r2, #0xc] + str r0, [r2, #0x10] + mov r0, #1 + add r1, r2, #0 + str r0, [r2, #0x1c] + ldr r0, [r2, #0x30] + ldr r3, _02229A7C ; =0x0200C7A1 + add r1, #0xb8 + add r2, #0xba + bx r3 + nop +_02229A7C: .word 0x0200C7A1 + + thumb_func_start MOD08_02229A80 +MOD08_02229A80: ; 0x02229A80 + push {r4, lr} + add r4, r0, #0 + bne _02229A8A + bl ErrorHandling +_02229A8A: + add r4, #0x98 + ldr r0, [r4] + pop {r4, pc} + + thumb_func_start MOD08_02229A90 +MOD08_02229A90: ; 0x02229A90 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0xb8 + add r2, #0xba + bl FUN_0200C7A0 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0x11 + bls _02229AAE + b _02229CF6 +_02229AAE: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02229ABA: ; jump table + .short _02229ADE - _02229ABA - 2 ; case 0 + .short _02229ADE - _02229ABA - 2 ; case 1 + .short _02229ADE - _02229ABA - 2 ; case 2 + .short _02229ADE - _02229ABA - 2 ; case 3 + .short _02229ADE - _02229ABA - 2 ; case 4 + .short _02229ADE - _02229ABA - 2 ; case 5 + .short _02229AF6 - _02229ABA - 2 ; case 6 + .short _02229B1C - _02229ABA - 2 ; case 7 + .short _02229B50 - _02229ABA - 2 ; case 8 + .short _02229B76 - _02229ABA - 2 ; case 9 + .short _02229B9C - _02229ABA - 2 ; case 10 + .short _02229BC2 - _02229ABA - 2 ; case 11 + .short _02229BE8 - _02229ABA - 2 ; case 12 + .short _02229C14 - _02229ABA - 2 ; case 13 + .short _02229C4C - _02229ABA - 2 ; case 14 + .short _02229C72 - _02229ABA - 2 ; case 15 + .short _02229C9E - _02229ABA - 2 ; case 16 + .short _02229CCA - _02229ABA - 2 ; case 17 +_02229ADE: + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0xbc + add r2, #0xbe + bl FUN_0200C7A0 + add r0, r4, #0 + mov r1, #0 + add r0, #0xc8 + str r1, [r0] + b _02229CF6 +_02229AF6: + mov r0, #0 + add r2, r4, #0 + add r3, r4, #0 + add r1, r0, #0 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x30 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229B1C: + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0xb8 + add r2, #0xba + bl FUN_0200C7A0 + add r2, r4, #0 + add r3, r4, #0 + mov r0, #1 + mov r1, #4 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x30 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229B50: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #1 + mov r1, #2 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x30 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229B76: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #0 + mov r1, #1 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x30 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229B9C: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #1 + mov r1, #3 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x30 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229BC2: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #1 + mov r1, #5 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x30 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229BE8: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #0 + mov r1, #1 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x10 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x10 + strh r1, [r0] + mov r0, #0xc + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} +_02229C14: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #0 + mov r1, #1 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x20 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbc + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbc + sub r1, #0x14 + strh r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x26 + strh r1, [r0] + mov r0, #0x10 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} +_02229C4C: + add r0, r4, #0 + mov r1, #0x80 + add r0, #0xbc + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x40 + add r0, #0xbe + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x20 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #0x20 + strh r1, [r0] + b _02229CF6 +_02229C72: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #0 + mov r1, #1 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x40 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #8 + strh r1, [r0] + mov r0, #0x10 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} +_02229C9E: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #1 + mov r1, #3 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x40 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #8 + strh r1, [r0] + mov r0, #0x10 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} +_02229CCA: + add r2, r4, #0 + add r3, r4, #0 + mov r0, #1 + mov r1, #5 + add r2, #0xbc + add r3, #0xbe + bl MOD08_02217B1C + add r0, r4, #0 + mov r1, #0x40 + add r0, #0xc8 + str r1, [r0] + mov r0, #0xbe + ldrsh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xbe + add r1, #8 + strh r1, [r0] + mov r0, #0x10 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} +_02229CF6: + mov r0, #0x14 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02229D00 +MOD08_02229D00: ; 0x02229D00 + push {r4, lr} + add r0, #0x90 + ldr r0, [r0] + add r3, r1, #0 + add r4, r2, #0 + cmp r0, #0x11 + bls _02229D10 + b _02229E3C +_02229D10: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02229D1C: ; jump table + .short _02229D40 - _02229D1C - 2 ; case 0 + .short _02229D56 - _02229D1C - 2 ; case 1 + .short _02229D6C - _02229D1C - 2 ; case 2 + .short _02229D98 - _02229D1C - 2 ; case 3 + .short _02229D82 - _02229D1C - 2 ; case 4 + .short _02229DAE - _02229D1C - 2 ; case 5 + .short _02229DC4 - _02229D1C - 2 ; case 6 + .short _02229DCE - _02229D1C - 2 ; case 7 + .short _02229DD8 - _02229D1C - 2 ; case 8 + .short _02229DE2 - _02229D1C - 2 ; case 9 + .short _02229DF0 - _02229D1C - 2 ; case 10 + .short _02229DFE - _02229D1C - 2 ; case 11 + .short _02229E0C - _02229D1C - 2 ; case 12 + .short _02229E1A - _02229D1C - 2 ; case 13 + .short _02229E28 - _02229D1C - 2 ; case 14 + .short _02229E32 - _02229D1C - 2 ; case 15 + .short _02229E32 - _02229D1C - 2 ; case 16 + .short _02229E32 - _02229D1C - 2 ; case 17 +_02229D40: + mov r0, #0 + add r2, r3, #0 + add r1, r0, #0 + add r3, r4, #0 + bl MOD08_02217B1C + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, #0x20 + strh r0, [r4] + pop {r4, pc} +_02229D56: + add r2, r3, #0 + mov r0, #0 + mov r1, #1 + add r3, r4, #0 + bl MOD08_02217B1C + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, #0x26 + strh r0, [r4] + pop {r4, pc} +_02229D6C: + add r2, r3, #0 + mov r0, #1 + mov r1, #2 + add r3, r4, #0 + bl MOD08_02217B1C + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, #0x20 + strh r0, [r4] + pop {r4, pc} +_02229D82: + add r2, r3, #0 + mov r0, #1 + mov r1, #4 + add r3, r4, #0 + bl MOD08_02217B1C + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, #0x20 + strh r0, [r4] + pop {r4, pc} +_02229D98: + add r2, r3, #0 + mov r0, #1 + mov r1, #3 + add r3, r4, #0 + bl MOD08_02217B1C + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, #0x26 + strh r0, [r4] + pop {r4, pc} +_02229DAE: + add r2, r3, #0 + mov r0, #1 + mov r1, #5 + add r3, r4, #0 + bl MOD08_02217B1C + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, #0x26 + strh r0, [r4] + pop {r4, pc} +_02229DC4: + mov r0, #0xa + strh r0, [r3] + mov r0, #0x64 + strh r0, [r4] + pop {r4, pc} +_02229DCE: + mov r0, #0xa + strh r0, [r3] + mov r0, #0x64 + strh r0, [r4] + pop {r4, pc} +_02229DD8: + mov r0, #0xa + strh r0, [r3] + mov r0, #0x64 + strh r0, [r4] + pop {r4, pc} +_02229DE2: + mov r0, #0 + add r2, r3, #0 + add r1, r0, #0 + add r3, r4, #0 + bl MOD08_02217B1C + pop {r4, pc} +_02229DF0: + mov r0, #0 + add r2, r3, #0 + add r1, r0, #0 + add r3, r4, #0 + bl MOD08_02217B1C + pop {r4, pc} +_02229DFE: + mov r0, #0 + add r2, r3, #0 + add r1, r0, #0 + add r3, r4, #0 + bl MOD08_02217B1C + pop {r4, pc} +_02229E0C: + mov r0, #0 + add r2, r3, #0 + add r1, r0, #0 + add r3, r4, #0 + bl MOD08_02217B1C + pop {r4, pc} +_02229E1A: + mov r0, #0 + add r2, r3, #0 + add r1, r0, #0 + add r3, r4, #0 + bl MOD08_02217B1C + pop {r4, pc} +_02229E28: + mov r0, #0xe6 + strh r0, [r3] + mov r0, #0x20 + strh r0, [r4] + pop {r4, pc} +_02229E32: + mov r0, #0x1d + mvn r0, r0 + strh r0, [r3] + mov r0, #0xa0 + strh r0, [r4] +_02229E3C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD08_02229E40 +MOD08_02229E40: ; 0x02229E40 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, #0x2c] + mov r2, #0xa + bl FUN_0200BBF0 + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + bne _02229E70 + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 +_02229E70: + mov r1, #0 + add r2, sp, #0x1c + mov r0, #0xa +_02229E76: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #6 + blt _02229E76 + mov r0, #0 + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, #0x2c] + add r2, sp, #0x1c + bl FUN_0200BF60 + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + mov r1, #0 + bl MOD08_022281DC + add r6, r0, #0 + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + mov r1, #1 + bl MOD08_022281DC + add r4, r0, #0 + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + mov r1, #2 + bl MOD08_022281DC + add r7, r0, #0 + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + mov r1, #3 + bl MOD08_022281DC + str r0, [sp, #0x18] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, _02229F60 ; =0x00001770 + mov r2, #0x1b + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, #0x2c] + add r3, r6, #0 + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + add r2, r5, #0 + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, _02229F60 ; =0x00001770 + add r2, #0xac + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r2, [r2] + ldr r3, [r5, #0x2c] + mov r1, #2 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, _02229F60 ; =0x00001770 + mov r2, #0x1b + add r0, r1, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, #0x2c] + add r3, r7, #0 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, _02229F60 ; =0x00001770 + ldr r3, [sp, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r5, #0x2c] + mov r2, #0x1b + bl FUN_0200C13C + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02229F60: .word 0x00001770 + + thumb_func_start MOD08_02229F64 +MOD08_02229F64: ; 0x02229F64 + push {r3, r4, lr} + sub sp, #0x34 + add r2, sp, #0 + add r1, sp, #0 + add r2, #2 + add r4, r0, #0 + bl MOD08_02229D00 + mov r0, #0 + add r1, sp, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + mov r1, #1 + str r1, [sp, #0x10] + add r1, r4, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + add r1, #0xa4 + ldr r1, [r1] + ldr r2, _02229FE0 ; =0x00001770 + str r1, [sp, #0x2c] + str r0, [sp, #0x30] + add r3, sp, #0 +_02229F92: + add r1, r4, #0 + add r1, #0x9c + ldr r1, [r1] + add r0, r0, #1 + add r1, r1, r2 + str r1, [r3, #0x14] + add r3, r3, #4 + cmp r0, #6 + blt _02229F92 + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + ldr r1, [r4, #0x2c] + add r2, sp, #0 + bl FUN_0200C154 + str r0, [r4, #0x30] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_0200C840 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200C61C + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r4, #0x30] + bl FUN_0200C5A8 + bl MOD08_0221268C + add sp, #0x34 + pop {r3, r4, pc} + .align 2, 0 +_02229FE0: .word 0x00001770 + + thumb_func_start MOD08_02229FE4 +MOD08_02229FE4: ; 0x02229FE4 + ldr r3, _02229FEC ; =0x0200C645 + ldr r0, [r0, #0x30] + bx r3 + nop +_02229FEC: .word 0x0200C645 + + thumb_func_start MOD08_02229FF0 +MOD08_02229FF0: ; 0x02229FF0 + ldr r3, _02229FF8 ; =0x0200C715 + ldr r0, [r0, #0x30] + bx r3 + nop +_02229FF8: .word 0x0200C715 + + thumb_func_start MOD08_02229FFC +MOD08_02229FFC: ; 0x02229FFC + ldr r3, _0222A004 ; =0x0200C899 + ldr r0, [r0, #0x30] + bx r3 + nop +_0222A004: .word 0x0200C899 + + thumb_func_start MOD08_0222A008 +MOD08_0222A008: ; 0x0222A008 + str r1, [r0, #0x24] + bx lr + + thumb_func_start MOD08_0222A00C +MOD08_0222A00C: ; 0x0222A00C + ldr r3, _0222A014 ; =0x0200C6C5 + ldr r0, [r0, #0x30] + bx r3 + nop +_0222A014: .word 0x0200C6C5 + + thumb_func_start MOD08_0222A018 +MOD08_0222A018: ; 0x0222A018 + ldr r3, _0222A020 ; =0x0200C6B1 + ldr r0, [r0, #0x30] + bx r3 + nop +_0222A020: .word 0x0200C6B1 + + thumb_func_start MOD08_0222A024 +MOD08_0222A024: ; 0x0222A024 + add r0, #0xdc + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD08_0222A02C +MOD08_0222A02C: ; 0x0222A02C + push {r3, lr} + sub r1, r1, r3 + neg r1, r1 + sub r0, r0, r2 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + asr r1, r1, #0x10 + add r2, r1, #0 + asr r0, r0, #0x10 + mul r2, r1 + add r1, r0, #0 + mul r1, r0 + add r0, r2, r1 + lsl r0, r0, #0xc + bl FX_Sqrt + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A058 +MOD08_0222A058: ; 0x0222A058 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02029CE4 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02029CE8 + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0xbe + mov r3, #0x46 + bl MOD08_0222A02C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A078 +MOD08_0222A078: ; 0x0222A078 + push {r4, lr} + sub sp, #8 + ldr r3, _0222A0D0 ; =0x0222D4D8 + add r4, r0, #0 + add r2, sp, #0 + mov r1, #7 +_0222A084: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0222A084 + add r0, r4, #0 + bl FUN_02029CE0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02086018 + cmp r0, #0 + bne _0222A0C6 + add r0, r4, #0 + bl MOD08_0222A058 + cmp r0, #0x38 + blt _0222A0B0 + mov r0, #3 + b _0222A0BE +_0222A0B0: + add r0, r0, #1 + mov r1, #0x14 + bl _s32_div_f + cmp r0, #3 + blt _0222A0BE + mov r0, #3 +_0222A0BE: + add r1, sp, #0 + add sp, #8 + ldrb r0, [r1, r0] + pop {r4, pc} +_0222A0C6: + add r0, sp, #0 + ldrb r0, [r0, #1] + add sp, #8 + pop {r4, pc} + nop +_0222A0D0: .word 0x0222D4D8 + + thumb_func_start MOD08_0222A0D4 +MOD08_0222A0D4: ; 0x0222A0D4 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x48 + add r6, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _0222A0EC + bl ErrorHandling + mov r0, #0 + pop {r4, r5, r6, pc} +_0222A0EC: + bl MOD08_0221268C + str r6, [r4] + cmp r5, #0 + beq _0222A0FA + ldr r0, [r5] + str r0, [r4, #4] +_0222A0FA: + mov r1, #0 + add r2, r4, #0 + add r0, r1, #0 +_0222A100: + add r1, r1, #1 + str r0, [r2, #8] + add r2, r2, #4 + cmp r1, #0x10 + blt _0222A100 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A110 +MOD08_0222A110: ; 0x0222A110 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r4, #0 + add r3, r0, #0 +_0222A118: + ldr r2, [r3, #8] + cmp r2, #0 + bne _0222A138 + add r4, r0, #0 + ldr r0, [r0] + add r4, #8 + lsl r6, r5, #2 + bl MOD08_0222A1A0 + str r0, [r4, r6] + ldr r0, [r4, r6] + mov r1, #0 + str r1, [r0, #0x18] + ldr r4, [r4, r6] + str r5, [r4] + b _0222A140 +_0222A138: + add r5, r5, #1 + add r3, r3, #4 + cmp r5, #0x10 + blt _0222A118 +_0222A140: + cmp r4, #0 + bne _0222A148 + bl ErrorHandling +_0222A148: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_0222A14C +MOD08_0222A14C: ; 0x0222A14C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_0222A154: + ldr r0, [r5, #8] + cmp r0, #0 + beq _0222A15E + bl FUN_02016A18 +_0222A15E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0222A154 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A170 +MOD08_0222A170: ; 0x0222A170 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0222A176: + ldr r0, [r5, #8] + cmp r0, #0 + beq _0222A194 + ldr r0, [r0, #0x10] + bl MOD08_02215B40 + ldr r1, [r5, #8] + ldr r0, [r1, #0x20] + cmp r0, #0 + beq _0222A194 + ldr r0, [r1, #0x18] + cmp r0, #0 + beq _0222A194 + bl FUN_0200CAB4 +_0222A194: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0222A176 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A1A0 +MOD08_0222A1A0: ; 0x0222A1A0 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x24 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _0222A1B8 + bl ErrorHandling + mov r0, #0 + pop {r4, r5, r6, pc} +_0222A1B8: + str r5, [r4, #4] + ldr r1, [r6] + ldr r0, [r6, #4] + str r1, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [r4, #8] + bl MOD08_0222A260 + str r0, [r4, #0x1c] + ldr r0, [r4, #4] + ldr r1, [r4, #8] + mov r2, #1 + bl MOD08_02215AA4 + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A1DC +MOD08_0222A1DC: ; 0x0222A1DC + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + str r1, [r4, #0x20] + ldr r1, _0222A1FC ; =MOD08_0222A258 + bl MOD08_0222A22C + mov r2, #0xfa + ldr r0, _0222A200 ; =MOD08_0222A208 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r4, #0x18] + pop {r4, pc} + nop +_0222A1FC: .word MOD08_0222A258 +_0222A200: .word MOD08_0222A208 + + thumb_func_start MOD08_0222A204 +MOD08_0222A204: ; 0x0222A204 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start MOD08_0222A208 +MOD08_0222A208: ; 0x0222A208 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020133C8 + cmp r0, #0 + bne _0222A228 + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x10] + bl MOD08_02215B40 + add r0, r5, #0 + bl FUN_0200CAB4 +_0222A228: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A22C +MOD08_0222A22C: ; 0x0222A22C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + add r6, r1, #0 + mov r4, #0 + cmp r0, #0 + ble _0222A24E +_0222A23A: + ldr r0, [r5, #0x10] + add r1, r4, #0 + add r2, r6, #0 + add r3, r5, #0 + bl FUN_020133AC + ldr r0, [r5, #0x1c] + add r4, r4, #1 + cmp r4, r0 + blt _0222A23A +_0222A24E: + ldr r0, [r5, #0x10] + ldr r1, [r5, #0xc] + bl FUN_02013440 + pop {r4, r5, r6, pc} + + thumb_func_start MOD08_0222A258 +MOD08_0222A258: ; 0x0222A258 + ldr r3, _0222A25C ; =0x0201341D + bx r3 + .align 2, 0 +_0222A25C: .word 0x0201341D + + thumb_func_start MOD08_0222A260 +MOD08_0222A260: ; 0x0222A260 + push {r3, r4, r5, lr} + sub sp, #0x58 + ldr r4, _0222A290 ; =0x0222D4E0 + add r5, r0, #0 + add r3, sp, #0 + mov r2, #0xb +_0222A26C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222A26C + sub r0, r5, #5 + cmp r0, #0x16 + blo _0222A284 + bl ErrorHandling + add sp, #0x58 + mov r0, #0 + pop {r3, r4, r5, pc} +_0222A284: + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + add sp, #0x58 + pop {r3, r4, r5, pc} + nop +_0222A290: .word 0x0222D4E0 + + thumb_func_start MOD08_0222A294 +MOD08_0222A294: ; 0x0222A294 + push {r3, lr} + add r3, r1, #0 + ldr r1, [r0] + mov r2, #0 + bl MOD08_0222A2B4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A2A4 +MOD08_0222A2A4: ; 0x0222A2A4 + push {r3, lr} + add r3, r1, #0 + ldr r1, [r0, #4] + mov r2, #1 + bl MOD08_0222A2B4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A2B4 +MOD08_0222A2B4: ; 0x0222A2B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + add r7, r2, #0 + str r3, [sp, #0x10] + bl FUN_020080E0 + ldr r0, [r5, #4] + lsl r1, r0, #1 + add r1, r5, r1 + ldrh r6, [r1, #0x28] + add r1, r5, r0 + add r1, #0x30 + ldrb r1, [r1] + add r2, r5, r0 + add r2, #0x38 + str r1, [sp, #0x1c] + add r1, r5, r0 + lsl r0, r0, #2 + ldrb r2, [r2] + add r0, r5, r0 + add r1, #0x34 + ldr r0, [r0, #0x3c] + ldrb r1, [r1] + str r2, [sp, #0x18] + str r0, [sp, #0x14] + cmp r7, #0 + beq _0222A30A + add r0, r5, r4 + add r0, #0x4c + ldrb r2, [r0] + mov r0, #1 + tst r0, r2 + beq _0222A306 + mov r4, #0 + b _0222A31C +_0222A306: + mov r4, #2 + b _0222A31C +_0222A30A: + add r0, r5, r4 + add r0, #0x4c + ldrb r2, [r0] + mov r0, #1 + tst r0, r2 + beq _0222A31A + mov r4, #2 + b _0222A31C +_0222A31A: + mov r4, #0 +_0222A31C: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x1c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + lsl r1, r6, #0x10 + lsl r2, r2, #0x18 + lsl r3, r4, #0x18 + str r0, [sp, #8] + add r0, sp, #0x28 + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068C00 + ldr r0, [r5] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_020081C0 + add r7, r0, #0 + add r3, sp, #0x28 + add r2, r7, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_020080D0 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + ldrh r0, [r7, #6] + str r0, [sp, #0xc] + ldr r3, [r5] + ldrh r0, [r7] + lsl r3, r3, #2 + add r3, r5, r3 + ldr r3, [r3, #8] + ldrh r1, [r7, #2] + ldr r3, [r3] + bl FUN_02012560 + ldr r1, [r5] + ldr r3, [sp, #0x18] + lsl r1, r1, #2 + add r1, r5, r1 + lsl r2, r4, #0x18 + lsl r3, r3, #0x18 + ldrh r0, [r7] + ldr r1, [r1, #8] + lsr r2, r2, #0x18 + str r0, [r1, #4] + ldr r1, [r5] + ldrh r0, [r7, #4] + lsl r1, r1, #2 + add r1, r5, r1 + ldr r1, [r1, #8] + lsr r3, r3, #0x18 + str r0, [r1, #8] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r0, [sp] + lsl r0, r6, #0x10 + lsl r1, r1, #0x18 + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + bl FUN_02068E88 + ldr r1, [r5] + lsl r1, r1, #2 + add r1, r5, r1 + ldr r1, [r1, #8] + str r0, [r1, #0xc] + ldr r0, [r5] + lsl r1, r0, #2 + add r1, r5, r1 + ldr r1, [r1, #8] + add r0, r5, r0 + ldr r1, [r1, #0xc] + add r0, #0x4c + lsl r1, r1, #0x18 + asr r7, r1, #0x18 + ldrb r0, [r0] + mov r1, #1 + bl MOD08_0222A6A4 + str r0, [sp, #0x20] + ldr r0, [r5] + ldr r2, [sp, #0x20] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r1, #1 + add r2, r2, r7 + bl FUN_02007558 + cmp r4, #2 + bne _0222A48E + mov r0, #1 + str r0, [sp] + add r0, sp, #0x24 + add r0, #2 + mov r1, #0x8a + mov r2, #0 + add r3, r6, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, sp, #0x24 + add r0, #1 + mov r1, #0x90 + mov r2, #0 + add r3, r6, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, sp, #0x24 + mov r1, #0x8e + mov r2, #0 + add r3, r6, #0 + bl FUN_02006548 + ldr r0, [r5] + add r2, sp, #0x24 + lsl r0, r0, #2 + add r0, r5, r0 + ldrb r2, [r2] + ldr r0, [r0, #0x18] + mov r1, #0x2e + bl FUN_02007558 + ldr r0, [r5] + ldr r2, [sp, #0x20] + lsl r0, r0, #2 + add r0, r5, r0 + add r2, #0x24 + ldr r0, [r0, #0x18] + mov r1, #0x14 + str r2, [sp, #0x20] + bl FUN_02007558 + ldr r0, [r5] + add r3, sp, #0x24 + lsl r0, r0, #2 + mov r2, #1 + add r0, r5, r0 + ldrsb r2, [r3, r2] + ldr r0, [r0, #0x18] + mov r1, #0x15 + bl FUN_02007558 + ldr r0, [r5] + mov r2, #0x24 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r1, #0x16 + sub r2, r2, r7 + bl FUN_02007558 + ldr r0, [r5] + add r3, sp, #0x24 + lsl r0, r0, #2 + mov r2, #2 + add r0, r5, r0 + ldrsb r2, [r3, r2] + ldr r0, [r0, #0x18] + mov r1, #0x29 + bl FUN_02007558 +_0222A48E: + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A494 +MOD08_0222A494: ; 0x0222A494 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5] + str r1, [sp, #0x10] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_0200813C + ldr r0, [r5] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_020081C0 + add r4, r0, #0 + ldr r0, [r5] + lsl r1, r0, #1 + add r1, r5, r1 + ldrh r1, [r1, #0x28] + lsl r3, r0, #2 + str r1, [sp, #0x1c] + add r1, r5, r0 + add r1, #0x30 + ldrb r1, [r1] + str r1, [sp, #0x18] + add r1, r5, r0 + add r1, #0x38 + ldrb r1, [r1] + add r0, r5, r0 + add r0, #0x4c + str r1, [sp, #0x14] + add r1, r5, r3 + ldr r7, [r1, #0x3c] + ldrb r1, [r0] + mov r0, #1 + tst r0, r1 + beq _0222A4E6 + mov r6, #2 + b _0222A4E8 +_0222A4E6: + mov r6, #0 +_0222A4E8: + str r7, [sp] + mov r0, #0 + str r0, [sp, #4] + str r6, [sp, #8] + ldrh r0, [r4, #6] + add r3, r5, r3 + ldr r2, [sp, #0x10] + str r0, [sp, #0xc] + ldr r3, [r3, #8] + ldrh r0, [r4] + ldrh r1, [r4, #2] + ldr r3, [r3] + bl FUN_02012560 + ldr r1, [r5] + ldrh r0, [r4] + lsl r1, r1, #2 + add r1, r5, r1 + ldr r1, [r1, #8] + ldr r3, [sp, #0x14] + str r0, [r1, #4] + ldr r1, [r5] + lsl r2, r6, #0x18 + lsl r1, r1, #2 + add r1, r5, r1 + lsl r3, r3, #0x18 + ldrh r0, [r4, #4] + ldr r1, [r1, #8] + lsr r2, r2, #0x18 + str r0, [r1, #8] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + lsl r0, r0, #0x10 + lsl r1, r1, #0x18 + str r7, [sp] + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068E88 + ldr r1, [r5] + lsl r1, r1, #2 + add r1, r5, r1 + ldr r1, [r1, #8] + str r0, [r1, #0xc] + ldr r0, [r5] + mov r1, #1 + lsl r4, r0, #2 + add r0, r5, r0 + add r0, #0x4c + ldrb r0, [r0] + bl MOD08_0222A6A4 + add r1, r5, r4 + add r2, r0, #0 + ldr r0, [r1, #8] + ldr r3, [r0, #0xc] + ldr r0, [r1, #0x18] + mov r1, #1 + add r2, r3, r2 + bl FUN_02007558 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD08_0222A568 +MOD08_0222A568: ; 0x0222A568 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_020080E0 + mov r0, #0x75 + add r2, sp, #0 + strh r0, [r2, #4] + mov r0, #0xd2 + strh r0, [r2, #8] + mov r0, #0 + strh r0, [r2, #0xa] + strb r0, [r2, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, r5, r0 + add r1, #0x4c + ldrb r3, [r1] + mov r1, #1 + tst r1, r3 + beq _0222A5A4 + mov r1, #0xd1 + strh r1, [r2, #6] + mov r4, #0x87 + b _0222A5AA +_0222A5A4: + mov r1, #0xd0 + strh r1, [r2, #6] + mov r4, #0x86 +_0222A5AA: + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_020081C0 + add r7, r0, #0 + add r3, sp, #4 + add r2, r7, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + bl FUN_020080D0 + ldr r3, [r5] + ldrh r0, [r7] + lsl r3, r3, #2 + add r3, r5, r3 + ldr r3, [r3, #8] + ldrh r1, [r7, #2] + ldr r3, [r3] + add r2, r6, #0 + bl FUN_02012420 + ldr r2, [r5] + add r1, sp, #0 + lsl r2, r2, #2 + add r2, r5, r2 + ldrh r0, [r1, #4] + ldr r2, [r2, #8] + str r0, [r2, #4] + ldr r0, [r5] + ldrh r1, [r1, #8] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #8] + add r2, r4, #0 + str r1, [r0, #8] + add r0, sp, #0 + mov r1, #0x79 + bl LoadFromNARC + add r0, sp, #0 + ldrb r1, [r0] + ldr r0, [r5] + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #8] + str r1, [r0, #0xc] + ldr r0, [r5] + mov r1, #1 + lsl r4, r0, #2 + add r0, r5, r0 + add r0, #0x4c + ldrb r0, [r0] + bl MOD08_0222A6A4 + add r2, r5, r4 + ldr r1, [r2, #8] + ldr r1, [r1, #0xc] + add r4, r1, r0 + ldr r0, [r2, #0x18] + mov r1, #1 + add r2, r4, #0 + bl FUN_02007558 + ldr r1, [r5] + mov r2, #1 + add r0, r5, r1 + add r0, #0x4c + ldrb r0, [r0] + tst r0, r2 + beq _0222A69E + lsl r0, r1, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r1, #0x2e + bl FUN_02007558 + ldr r0, [r5] + add r2, sp, #0 + ldrb r3, [r2] + lsl r0, r0, #2 + add r0, r5, r0 + mov r2, #0x24 + sub r2, r2, r3 + ldr r0, [r0, #0x18] + mov r1, #0x14 + add r2, r4, r2 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #0x15 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r5] + add r2, sp, #0 + lsl r0, r0, #2 + ldrb r3, [r2] + add r0, r5, r0 + mov r2, #0x24 + ldr r0, [r0, #0x18] + mov r1, #0x16 + sub r2, r2, r3 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #0x29 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r2, #0 + bl FUN_02007558 +_0222A69E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD08_0222A6A4 +MOD08_0222A6A4: ; 0x0222A6A4 + cmp r1, #0 + bne _0222A6B0 + lsl r1, r0, #2 + ldr r0, _0222A6C0 ; =0x0222D538 + ldrsh r0, [r0, r1] + bx lr +_0222A6B0: + mov r2, #6 + mul r2, r0 + ldr r0, _0222A6C4 ; =0x0222D550 + lsl r1, r1, #1 + add r0, r0, r2 + ldrsh r0, [r1, r0] + bx lr + nop +_0222A6C0: .word 0x0222D538 +_0222A6C4: .word 0x0222D550 + + thumb_func_start MOD08_0222A6C8 +MOD08_0222A6C8: ; 0x0222A6C8 + ldr r1, _0222A75C ; =0x0000013B + cmp r0, r1 + bhi _0222A6F6 + bhs _0222A754 + cmp r0, #0x7d + bhi _0222A6E4 + bhs _0222A754 + cmp r0, #0x63 + bhi _0222A6DE + beq _0222A754 + b _0222A758 +_0222A6DE: + cmp r0, #0x78 + beq _0222A754 + b _0222A758 +_0222A6E4: + cmp r0, #0xc9 + bhi _0222A6F0 + bhs _0222A754 + cmp r0, #0x9f + beq _0222A754 + b _0222A758 +_0222A6F0: + cmp r0, #0xd7 + beq _0222A754 + b _0222A758 +_0222A6F6: + add r2, r1, #0 + add r2, #0x4a + cmp r0, r2 + bhi _0222A71E + add r2, r1, #0 + add r2, #0x4a + cmp r0, r2 + bhs _0222A754 + add r2, r1, #0 + add r2, #0x14 + cmp r0, r2 + bhi _0222A716 + add r1, #0x14 + cmp r0, r1 + beq _0222A754 + b _0222A758 +_0222A716: + add r1, #0x2c + cmp r0, r1 + beq _0222A754 + b _0222A758 +_0222A71E: + add r2, r1, #0 + add r2, #0x98 + cmp r0, r2 + bhi _0222A74E + add r2, r1, #0 + add r2, #0x98 + cmp r0, r2 + bhs _0222A754 + add r2, r1, #0 + add r2, #0x5c + cmp r0, r2 + bhi _0222A758 + add r2, r1, #0 + add r2, #0x5b + cmp r0, r2 + blo _0222A758 + add r2, r1, #0 + add r2, #0x5b + cmp r0, r2 + beq _0222A754 + add r1, #0x5c + cmp r0, r1 + beq _0222A754 + b _0222A758 +_0222A74E: + add r1, #0x99 + cmp r0, r1 + bne _0222A758 +_0222A754: + mov r0, #0 + bx lr +_0222A758: + mov r0, #1 + bx lr + .align 2, 0 +_0222A75C: .word 0x0000013B + + .section .data + ; 0x0222A760 + .incbin "baserom.nds", 0x1A0100, 0x2E60 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 021deaa1..5626ffc3 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -344,6 +344,14 @@ FUN_0222F440 = 0x0222F440; FUN_0222F480 = 0x0222F480; FUN_0222F7E0 = 0x0222F7E0; FUN_0222F990 = 0x0222F990; +FUN_02230078 = 0x02230078; +FUN_02230080 = 0x02230080; +FUN_022300CC = 0x022300CC; +FUN_022312D0 = 0x022312D0; +FUN_02231504 = 0x02231504; +FUN_02231534 = 0x02231534; +FUN_02231678 = 0x02231678; +FUN_02233560 = 0x02233560; FUN_022300D4 = 0x022300D4; FUN_022300DC = 0x022300DC; FUN_022300E4 = 0x022300E4; -- cgit v1.2.3 From 57b127f74e47ebc2fec758c559650c601f88a501 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 17:49:49 -0400 Subject: Disassemble module 09 --- arm9/arm9.lcf | 16 +- arm9/global.inc | 73 + arm9/modules/09/asm/module_09.s | 17663 ++++++++++++++++++++++++++++++++++++++ arm9/undefined_syms.txt | 30 + 4 files changed, 17780 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/09/asm/module_09.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 2fa78f43..5a8a9a55 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -19,7 +19,7 @@ MEMORY { MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 MODULE_12 (RWX) : ORIGIN=0, LENGTH=0 @@ -457,7 +457,19 @@ SECTIONS { module_08.o (.bss) } >> MODULE_08 - OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) + .MODULE.09 : AT (0x19F000) + { + module_09.o (.text) + module_09.o (.sdata) + module_09.o (.data) + } > MODULE_09 + + .MODULE.09.bss : + { + module_09.o (.sbss) + module_09.o (.bss) + } >> MODULE_09 + OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o) diff --git a/arm9/global.inc b/arm9/global.inc index 9dee371a..f4a01650 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4664,3 +4664,76 @@ .extern FUN_02231678 .extern FUN_02233560 .extern FX_Modf +.extern FUN_02002F40 +.extern FUN_0200B144 +.extern FUN_0200C5CC +.extern FUN_0200CD60 +.extern FUN_02016BF4 +.extern FUN_0201878C +.extern FUN_0201C62C +.extern FUN_02020AA4 +.extern FUN_0206AB18 +.extern FUN_0206AB30 +.extern FUN_0206B334 +.extern FUN_0206E0F0 +.extern FUN_0206E114 +.extern FUN_0206E12C +.extern FUN_0206E130 +.extern FUN_0206E198 +.extern FUN_0206E1D4 +.extern FUN_0206E278 +.extern FUN_0206E290 +.extern FUN_0206E2A8 +.extern FUN_0206E2AC +.extern FUN_0206E708 +.extern FUN_0206E70C +.extern FUN_0206E710 +.extern FUN_0206E7DC +.extern FUN_0206F0D8 +.extern FUN_0206F1A0 +.extern FUN_0206F1AC +.extern FUN_0206F1B0 +.extern FUN_0206F1B4 +.extern FUN_0206F1B8 +.extern FUN_0206F1E4 +.extern FUN_0206F1EC +.extern FUN_020724C4 +.extern FUN_020724C8 +.extern FUN_020724CC +.extern FUN_020724D0 +.extern FUN_0207C2C4 +.extern FUN_0207C2C8 +.extern FUN_0207C2CC +.extern FUN_0207C2D0 +.extern FUN_02083114 +.extern FUN_0208315C +.extern FUN_0222FF68 +.extern FUN_0222FF74 +.extern FUN_0222FF78 +.extern FUN_0222FF88 +.extern FUN_02230014 +.extern FUN_02230188 +.extern FUN_02230214 +.extern FUN_02230218 +.extern FUN_02230260 +.extern FUN_02230290 +.extern FUN_022302BC +.extern FUN_02230370 +.extern FUN_02230E44 +.extern FUN_02230E54 +.extern FUN_02231238 +.extern FUN_0224C474 +.extern FUN_0225D3EC +.extern FUN_0225D45C +.extern FUN_0225D484 +.extern FUN_0225D508 +.extern FUN_0225D5DC +.extern FUN_0225D648 +.extern FUN_0225D6A4 +.extern FUN_0225D714 +.extern FUN_0225D73C +.extern FUN_0225D7B8 +.extern FUN_0225D800 +.extern FUN_0225D80C +.extern FUN_0225D820 +.extern FUN_0225D824 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s new file mode 100644 index 00000000..7e5ad9c1 --- /dev/null +++ b/arm9/modules/09/asm/module_09.s @@ -0,0 +1,17663 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD09_02211E60 +MOD09_02211E60: ; 0x02211E60 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r0, [r5, #0x11] + cmp r0, #5 + bls _02211E6E + mov r0, #0 + strb r0, [r5, #0x11] +_02211E6E: + ldr r0, _02211ED8 ; =MOD09_02211EEC + ldr r1, _02211EDC ; =0x00002090 + ldr r3, [r5, #0xc] + mov r2, #0 + bl FUN_020061E8 + bl FUN_0201B6C8 + ldr r2, _02211EDC ; =0x00002090 + add r4, r0, #0 + mov r1, #0 + bl Call_FillMemWithValue + str r5, [r4] + ldr r0, [r5, #8] + bl FUN_0222FF68 + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #8] + bl FUN_022300CC + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, _02211EE0 ; =0x00002078 + mov r1, #0 + strb r1, [r4, r0] + ldrb r1, [r5, #0x11] + sub r0, r0, #2 + strb r1, [r4, r0] + ldr r0, [r5, #8] + bl FUN_02231238 + ldr r3, _02211EE4 ; =0x00002077 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1c + ldrb r1, [r4, r3] + mov r2, #0xf0 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r4, r3] + ldr r0, [r5, #8] + ldr r1, [r5, #0x28] + bl FUN_02230260 + ldr r1, _02211EE8 ; =0x0000208F + strb r0, [r4, r1] + pop {r3, r4, r5, pc} + nop +_02211ED8: .word MOD09_02211EEC +_02211EDC: .word 0x00002090 +_02211EE0: .word 0x00002078 +_02211EE4: .word 0x00002077 +_02211EE8: .word 0x0000208F + + thumb_func_start MOD09_02211EEC +MOD09_02211EEC: ; 0x02211EEC + push {r4, lr} + ldr r2, _02212094 ; =0x00002078 + add r4, r1, #0 + ldrb r2, [r4, r2] + cmp r2, #0x1a + bls _02211EFA + b _0221207C +_02211EFA: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02211F06: ; jump table + .short _02211F3C - _02211F06 - 2 ; case 0 + .short _02211F48 - _02211F06 - 2 ; case 1 + .short _02211F54 - _02211F06 - 2 ; case 2 + .short _02211F60 - _02211F06 - 2 ; case 3 + .short _02211F6C - _02211F06 - 2 ; case 4 + .short _02211F78 - _02211F06 - 2 ; case 5 + .short _02211F84 - _02211F06 - 2 ; case 6 + .short _02211F90 - _02211F06 - 2 ; case 7 + .short _02211F9C - _02211F06 - 2 ; case 8 + .short _02211FA8 - _02211F06 - 2 ; case 9 + .short _02211FB4 - _02211F06 - 2 ; case 10 + .short _02211FC0 - _02211F06 - 2 ; case 11 + .short _02211FCC - _02211F06 - 2 ; case 12 + .short _02211FD8 - _02211F06 - 2 ; case 13 + .short _02211FE4 - _02211F06 - 2 ; case 14 + .short _02211FF0 - _02211F06 - 2 ; case 15 + .short _02211FFC - _02211F06 - 2 ; case 16 + .short _02212008 - _02211F06 - 2 ; case 17 + .short _02212014 - _02211F06 - 2 ; case 18 + .short _02212020 - _02211F06 - 2 ; case 19 + .short _0221202C - _02211F06 - 2 ; case 20 + .short _02212038 - _02211F06 - 2 ; case 21 + .short _02212044 - _02211F06 - 2 ; case 22 + .short _02212050 - _02211F06 - 2 ; case 23 + .short _0221205C - _02211F06 - 2 ; case 24 + .short _02212068 - _02211F06 - 2 ; case 25 + .short _02212074 - _02211F06 - 2 ; case 26 +_02211F3C: + add r0, r4, #0 + bl MOD09_0221209C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F48: + add r0, r4, #0 + bl MOD09_022121A0 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F54: + add r0, r4, #0 + bl MOD09_0221236C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F60: + add r0, r4, #0 + bl MOD09_0221241C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F6C: + add r0, r4, #0 + bl MOD09_022124DC + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F78: + add r0, r4, #0 + bl MOD09_022125E0 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F84: + add r0, r4, #0 + bl MOD09_0221296C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F90: + add r0, r4, #0 + bl MOD09_02212978 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211F9C: + add r0, r4, #0 + bl MOD09_02212984 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FA8: + add r0, r4, #0 + bl MOD09_02212990 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FB4: + add r0, r4, #0 + bl MOD09_0221299C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FC0: + add r0, r4, #0 + bl MOD09_022129A8 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FCC: + add r0, r4, #0 + bl MOD09_022129CC + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FD8: + add r0, r4, #0 + bl MOD09_022129F8 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FE4: + add r0, r4, #0 + bl MOD09_02212A1C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FF0: + add r0, r4, #0 + bl MOD09_02212A5C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02211FFC: + add r0, r4, #0 + bl MOD09_02212A74 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212008: + add r0, r4, #0 + bl MOD09_02212A88 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212014: + add r0, r4, #0 + bl MOD09_02212AA4 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212020: + add r0, r4, #0 + bl MOD09_02212658 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_0221202C: + add r0, r4, #0 + bl MOD09_0221274C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212038: + add r0, r4, #0 + bl MOD09_02212868 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212044: + add r0, r4, #0 + bl MOD09_02212ACC + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212050: + add r0, r4, #0 + bl MOD09_02212AE4 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_0221205C: + add r0, r4, #0 + bl MOD09_02212C8C + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212068: + add r0, r4, #0 + bl MOD09_02212DB8 + ldr r1, _02212094 ; =0x00002078 + strb r0, [r4, r1] + b _0221207C +_02212074: + bl MOD09_02212DE4 + cmp r0, #1 + beq _02212090 +_0221207C: + add r0, r4, #0 + bl MOD09_02217580 + ldr r0, _02212098 ; =0x00001FB4 + ldr r0, [r4, r0] + bl FUN_0200BC1C + add r0, r4, #0 + bl MOD09_02218218 +_02212090: + pop {r4, pc} + nop +_02212094: .word 0x00002078 +_02212098: .word 0x00001FB4 + + thumb_func_start MOD09_0221209C +MOD09_0221209C: ; 0x0221209C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02212190 ; =0x04001050 + mov r1, #0 + strh r1, [r0] + ldr r0, [r5] + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #3 + ldr r0, _02212194 ; =0x0000207A + bne _022120BC + mov r1, #6 + strb r1, [r5, r0] + mov r4, #0x13 + b _022120C0 +_022120BC: + strb r1, [r5, r0] + mov r4, #1 +_022120C0: + ldr r0, [r5] + ldr r0, [r0, #0xc] + bl MOD09_0221AC04 + ldr r1, _02212198 ; =0x00002088 + str r0, [r5, r1] + add r0, r5, #0 + bl MOD09_022131C8 + add r0, r5, #0 + bl MOD09_02212E4C + add r0, r5, #0 + bl MOD09_02212F8C + add r0, r5, #0 + bl MOD09_02213138 + ldr r1, [r5] + mov r0, #2 + ldr r1, [r1, #0xc] + bl FUN_02002C50 + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_02213968 + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_022182E8 + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_02218640 + add r0, r5, #0 + bl MOD09_02216734 + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_02216D80 + add r0, r5, #0 + bl MOD09_02213CB8 + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_02213E28 + ldr r0, [r5] + add r0, #0x32 + ldrb r0, [r0] + cmp r0, #0 + beq _02212140 + ldr r0, _02212198 ; =0x00002088 + mov r1, #1 + ldr r0, [r5, r0] + bl MOD09_0221AC2C +_02212140: + ldr r0, _02212194 ; =0x0000207A + ldrb r0, [r5, r0] + cmp r0, #0 + bne _0221215A + add r0, r5, #0 + mov r1, #0 + bl MOD09_02213BDC + cmp r0, #1 + bne _0221215A + ldr r0, [r5] + mov r1, #1 + strb r1, [r0, #0x11] +_0221215A: + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_02217838 + ldr r1, _02212194 ; =0x0000207A + add r0, r5, #0 + ldrb r1, [r5, r1] + bl MOD09_02213710 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x7a + lsl r0, r0, #2 + mov r1, #0xa + add r3, r1, #0 + ldr r0, [r5, r0] + ldr r2, _0221219C ; =0x0000FFFF + sub r3, #0x12 + bl FUN_02003210 + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02212190: .word 0x04001050 +_02212194: .word 0x0000207A +_02212198: .word 0x00002088 +_0221219C: .word 0x0000FFFF + + thumb_func_start MOD09_022121A0 +MOD09_022121A0: ; 0x022121A0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020038E4 + cmp r0, #0 + beq _022121B6 + mov r0, #1 + pop {r4, pc} +_022121B6: + add r0, r4, #0 + bl MOD09_0221347C + cmp r0, #1 + bne _0221220E + ldr r1, [r4] + ldrb r0, [r1, #0x11] + cmp r0, #6 + bne _022121E2 + add r1, #0x35 + ldrb r0, [r1] + cmp r0, #1 + beq _0221220E + ldr r0, _02212214 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + mov r0, #0x19 + pop {r4, pc} +_022121E2: + ldr r0, _02212214 ; =0x000005DD + bl FUN_020054C8 + ldr r1, [r4] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + bl MOD09_022181C8 + ldr r0, [r4] + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #2 + bne _02212204 + add r0, r4, #0 + bl MOD09_0221221C + pop {r4, pc} +_02212204: + ldr r0, _02212218 ; =0x00002079 + mov r1, #7 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_0221220E: + mov r0, #1 + pop {r4, pc} + nop +_02212214: .word 0x000005DD +_02212218: .word 0x00002079 + + thumb_func_start MOD09_0221221C +MOD09_0221221C: ; 0x0221221C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5] + ldrb r1, [r4, #0x11] + cmp r1, #0 + bne _0221222E + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02212238 +_0221222E: + cmp r1, #1 + bne _02212254 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02212254 +_02212238: + add r0, r5, #0 + bl MOD09_022166D0 + add r0, r5, #0 + bl MOD09_02216314 + ldr r0, [r5] + mov r1, #6 + strb r1, [r0, #0x11] + ldr r0, _02212360 ; =0x00002079 + mov r1, #0x19 + strb r1, [r5, r0] + mov r0, #0x11 + pop {r3, r4, r5, pc} +_02212254: + ldrh r0, [r4, #0x22] + ldr r2, [r4, #0xc] + mov r1, #0x24 + bl FUN_0206E7B8 + cmp r0, #0 + beq _0221228A + ldrh r0, [r4, #0x22] + ldr r2, [r4, #0xc] + mov r1, #0x25 + bl FUN_0206E7B8 + cmp r0, #0 + bne _0221228A + ldrb r1, [r4, #0x11] + mov r0, #0x50 + mul r0, r1 + add r0, r5, r0 + ldrb r0, [r0, #0x1b] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _0221228A + ldr r0, _02212360 ; =0x00002079 + mov r1, #0xd + strb r1, [r5, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221228A: + ldrh r0, [r4, #0x22] + mov r3, #0 + str r0, [sp] + ldrb r2, [r4, #0x11] + ldr r0, [r4, #8] + ldr r1, [r4, #0x28] + add r2, r4, r2 + add r2, #0x2c + ldrb r2, [r2] + bl FUN_02230370 + cmp r0, #1 + bne _0221233A + ldrh r0, [r4, #0x22] + ldr r2, [r4, #0xc] + mov r1, #0x25 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022122BA + ldr r0, _02212360 ; =0x00002079 + mov r1, #0xd + strb r1, [r5, r0] + b _02212330 +_022122BA: + ldrb r1, [r4, #0x11] + add r0, r5, #0 + bl MOD09_02213620 + cmp r0, #1 + bne _0221232A + ldrh r0, [r4, #0x22] + ldr r2, [r4, #0xc] + mov r1, #0x17 + bl FUN_0206E7B8 + cmp r0, #0 + bne _0221232A + add r2, r4, #0 + add r2, #0x33 + ldrh r1, [r4, #0x22] + ldrb r2, [r2] + ldr r0, [r4, #8] + ldr r3, [r4, #0xc] + bl MOD09_02213C84 + ldrb r2, [r4, #0x11] + ldr r0, [r4, #8] + ldr r1, [r4, #0x28] + add r2, r4, r2 + add r2, #0x2c + ldrb r2, [r2] + bl FUN_02230014 + ldrb r2, [r4, #0x11] + mov r1, #0x50 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + str r0, [r2, #4] + ldrb r0, [r4, #0x11] + mov r2, #0 + mul r1, r0 + add r0, r5, r1 + ldr r0, [r0, #4] + mov r1, #0xa2 + bl FUN_020671BC + strh r0, [r4, #0x20] + ldrb r1, [r4, #0x11] + mov r0, #0x50 + ldrh r2, [r4, #0x20] + mul r0, r1 + add r0, r5, r0 + ldrh r0, [r0, #0x14] + mov r1, #0x19 + sub r0, r2, r0 + strh r0, [r4, #0x20] + ldr r0, _02212360 ; =0x00002079 + strb r1, [r5, r0] + b _02212330 +_0221232A: + ldr r0, _02212360 ; =0x00002079 + mov r1, #0x17 + strb r1, [r5, r0] +_02212330: + ldr r0, _02212364 ; =0x0000207C + mov r1, #0 + strb r1, [r5, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221233A: + ldr r2, _02212368 ; =0x00001FA8 + mov r1, #0x51 + ldr r0, [r5, r2] + add r2, #8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + add r0, r5, #0 + bl MOD09_02216314 + ldr r0, [r5] + mov r1, #6 + strb r1, [r0, #0x11] + ldr r0, _02212360 ; =0x00002079 + mov r1, #0x19 + strb r1, [r5, r0] + mov r0, #0x11 + pop {r3, r4, r5, pc} + nop +_02212360: .word 0x00002079 +_02212364: .word 0x0000207C +_02212368: .word 0x00001FA8 + + thumb_func_start MOD09_0221236C +MOD09_0221236C: ; 0x0221236C + push {r4, lr} + add r4, r0, #0 + bl MOD09_022134F4 + cmp r0, #3 + bhi _0221240E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02212384: ; jump table + .short _0221238C - _02212384 - 2 ; case 0 + .short _022123B2 - _02212384 - 2 ; case 1 + .short _022123D4 - _02212384 - 2 ; case 2 + .short _022123F6 - _02212384 - 2 ; case 3 +_0221238C: + ldr r0, _02212414 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #7 + bl MOD09_022181C8 + add r0, r4, #0 + bl MOD09_022139D4 + cmp r0, #1 + bne _022123A8 + mov r0, #0x19 + pop {r4, pc} +_022123A8: + ldr r0, _02212418 ; =0x00002079 + mov r1, #0xf + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_022123B2: + add r0, r4, #0 + bl MOD09_02213B7C + cmp r0, #1 + beq _0221240E + ldr r0, _02212414 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #8 + bl MOD09_022181C8 + ldr r0, _02212418 ; =0x00002079 + mov r1, #8 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_022123D4: + add r0, r4, #0 + bl MOD09_02213B7C + cmp r0, #1 + beq _0221240E + ldr r0, _02212414 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xa + bl MOD09_022181C8 + ldr r0, _02212418 ; =0x00002079 + mov r1, #9 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_022123F6: + ldr r0, _02212414 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _02212418 ; =0x00002079 + mov r1, #6 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_0221240E: + mov r0, #2 + pop {r4, pc} + nop +_02212414: .word 0x000005DD +_02212418: .word 0x00002079 + + thumb_func_start MOD09_0221241C +MOD09_0221241C: ; 0x0221241C + push {r4, lr} + add r4, r0, #0 + bl MOD09_0221353C + cmp r0, #3 + bhi _022124CC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02212434: ; jump table + .short _0221243C - _02212434 - 2 ; case 0 + .short _0221246A - _02212434 - 2 ; case 1 + .short _02212496 - _02212434 - 2 ; case 2 + .short _022124AE - _02212434 - 2 ; case 3 +_0221243C: + ldr r1, [r4] + mov r2, #0 + ldrb r1, [r1, #0x11] + add r0, r4, #0 + mvn r2, r2 + bl MOD09_02213658 + cmp r0, #0xff + beq _022124CC + ldr r1, [r4] + strb r0, [r1, #0x11] + ldr r0, _022124D0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xc + bl MOD09_022181C8 + ldr r0, _022124D4 ; =0x00002079 + mov r1, #0xe + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_0221246A: + ldr r1, [r4] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + mov r2, #1 + bl MOD09_02213658 + cmp r0, #0xff + beq _022124CC + ldr r1, [r4] + strb r0, [r1, #0x11] + ldr r0, _022124D0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xd + bl MOD09_022181C8 + ldr r0, _022124D4 ; =0x00002079 + mov r1, #0xe + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_02212496: + ldr r0, _022124D0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xb + bl MOD09_022181C8 + ldr r0, _022124D4 ; =0x00002079 + mov r1, #9 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_022124AE: + ldr r0, _022124D0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _022124D8 ; =0x0000208C + mov r1, #1 + strb r1, [r4, r0] + mov r1, #7 + sub r0, #0x13 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r4, pc} +_022124CC: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_022124D0: .word 0x000005DD +_022124D4: .word 0x00002079 +_022124D8: .word 0x0000208C + + thumb_func_start MOD09_022124DC +MOD09_022124DC: ; 0x022124DC + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD09_02213584 + add r5, r0, #0 + cmp r5, #7 + bhi _022125CE + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022124F6: ; jump table + .short _02212506 - _022124F6 - 2 ; case 0 + .short _02212506 - _022124F6 - 2 ; case 1 + .short _02212506 - _022124F6 - 2 ; case 2 + .short _02212506 - _022124F6 - 2 ; case 3 + .short _0221253E - _022124F6 - 2 ; case 4 + .short _0221256C - _022124F6 - 2 ; case 5 + .short _02212598 - _022124F6 - 2 ; case 6 + .short _022125B0 - _022124F6 - 2 ; case 7 +_02212506: + ldr r0, [r4] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r1, r4, r0 + lsl r0, r5, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x34] + cmp r0, #0 + beq _022125CE + ldr r0, _022125D4 ; =0x000005DD + bl FUN_020054C8 + add r1, r5, #0 + add r1, #0xe + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD09_022181C8 + ldr r0, [r4] + mov r1, #0xa + add r0, #0x34 + strb r5, [r0] + ldr r0, _022125D8 ; =0x00002079 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221253E: + ldr r1, [r4] + mov r2, #0 + ldrb r1, [r1, #0x11] + add r0, r4, #0 + mvn r2, r2 + bl MOD09_02213658 + cmp r0, #0xff + beq _022125CE + ldr r1, [r4] + strb r0, [r1, #0x11] + ldr r0, _022125D4 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xc + bl MOD09_022181C8 + ldr r0, _022125D8 ; =0x00002079 + mov r1, #0xe + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221256C: + ldr r1, [r4] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + mov r2, #1 + bl MOD09_02213658 + cmp r0, #0xff + beq _022125CE + ldr r1, [r4] + strb r0, [r1, #0x11] + ldr r0, _022125D4 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xd + bl MOD09_022181C8 + ldr r0, _022125D8 ; =0x00002079 + mov r1, #0xe + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_02212598: + ldr r0, _022125D4 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #9 + bl MOD09_022181C8 + ldr r0, _022125D8 ; =0x00002079 + mov r1, #8 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_022125B0: + ldr r0, _022125D4 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _022125DC ; =0x0000208C + mov r1, #2 + strb r1, [r4, r0] + mov r1, #7 + sub r0, #0x13 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_022125CE: + mov r0, #4 + pop {r3, r4, r5, pc} + nop +_022125D4: .word 0x000005DD +_022125D8: .word 0x00002079 +_022125DC: .word 0x0000208C + + thumb_func_start MOD09_022125E0 +MOD09_022125E0: ; 0x022125E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD09_022135CC + add r5, r0, #0 + cmp r5, #4 + bhi _0221264A + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022125FA: ; jump table + .short _02212604 - _022125FA - 2 ; case 0 + .short _02212604 - _022125FA - 2 ; case 1 + .short _02212604 - _022125FA - 2 ; case 2 + .short _02212604 - _022125FA - 2 ; case 3 + .short _02212632 - _022125FA - 2 ; case 4 +_02212604: + ldr r1, [r4] + add r0, r1, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, r5 + beq _02212622 + ldrb r1, [r1, #0x11] + mov r0, #0x50 + mul r0, r1 + add r1, r4, r0 + lsl r0, r5, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x34] + cmp r0, #0 + beq _0221264A +_02212622: + ldr r0, _02212650 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r4] + add r0, #0x34 + strb r5, [r0] + mov r0, #0xa + pop {r3, r4, r5, pc} +_02212632: + ldr r0, _02212650 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _02212654 ; =0x00002079 + mov r1, #9 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221264A: + mov r0, #5 + pop {r3, r4, r5, pc} + nop +_02212650: .word 0x000005DD +_02212654: .word 0x00002079 + + thumb_func_start MOD09_02212658 +MOD09_02212658: ; 0x02212658 + push {r3, r4, r5, lr} + ldr r1, _02212734 ; =0x0221AFD8 + add r4, r0, #0 + bl MOD09_02213614 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _02212682 + ldr r0, _02212738 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AD30 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _02212688 + mov r5, #6 + b _02212688 +_02212682: + add r0, r4, #0 + bl MOD09_022178E4 +_02212688: + cmp r5, #6 + bhi _02212730 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02212698: ; jump table + .short _022126A6 - _02212698 - 2 ; case 0 + .short _022126A6 - _02212698 - 2 ; case 1 + .short _022126A6 - _02212698 - 2 ; case 2 + .short _022126A6 - _02212698 - 2 ; case 3 + .short _022126A6 - _02212698 - 2 ; case 4 + .short _022126D0 - _02212698 - 2 ; case 5 + .short _02212710 - _02212698 - 2 ; case 6 +_022126A6: + lsl r0, r5, #0x18 + lsr r1, r0, #0x18 + ldr r0, [r4] + add r0, #0x34 + strb r1, [r0] + ldr r0, _0221273C ; =0x0000208D + strb r1, [r4, r0] + ldr r0, _02212740 ; =0x000005DD + bl FUN_020054C8 + add r5, #0x17 + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD09_022181C8 + ldr r0, _02212744 ; =0x00002079 + mov r1, #0xc + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_022126D0: + ldr r0, _02212748 ; =0x00002077 + ldrb r3, [r4, r0] + lsl r1, r3, #0x18 + lsr r1, r1, #0x1c + beq _02212730 + mov r2, #0xf + add r1, r3, #0 + bic r1, r2 + lsl r2, r3, #0x1c + lsr r3, r2, #0x1c + mov r2, #1 + eor r2, r3 + lsl r2, r2, #0x18 + lsr r3, r2, #0x18 + mov r2, #0xf + and r2, r3 + orr r1, r2 + strb r1, [r4, r0] + add r0, #0x16 + strb r5, [r4, r0] + ldr r0, _02212740 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x12 + bl MOD09_022181C8 + ldr r0, _02212744 ; =0x00002079 + mov r1, #0xb + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_02212710: + ldr r0, [r4] + mov r1, #4 + add r0, #0x34 + strb r1, [r0] + ldr r0, _02212740 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _02212744 ; =0x00002079 + mov r1, #0x19 + strb r1, [r4, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_02212730: + mov r0, #0x13 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212734: .word 0x0221AFD8 +_02212738: .word 0x00002088 +_0221273C: .word 0x0000208D +_02212740: .word 0x000005DD +_02212744: .word 0x00002079 +_02212748: .word 0x00002077 + + thumb_func_start MOD09_0221274C +MOD09_0221274C: ; 0x0221274C + push {r3, r4, r5, lr} + ldr r1, _02212850 ; =0x0221AEE0 + add r5, r0, #0 + bl MOD09_02213614 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02212776 + ldr r0, _02212854 ; =0x00002088 + ldr r0, [r5, r0] + bl MOD09_0221AD30 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0221277C + mov r4, #2 + b _0221277C +_02212776: + add r0, r5, #0 + bl MOD09_022178E4 +_0221277C: + cmp r4, #0 + beq _0221278A + cmp r4, #1 + beq _022127E6 + cmp r4, #2 + beq _0221282C + b _0221284A +_0221278A: + ldr r0, _02212858 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _0221285C ; =0x00002077 + ldrb r0, [r5, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bne _022127A4 + add r0, r5, #0 + mov r1, #0x1c + bl MOD09_022181C8 + b _022127AC +_022127A4: + add r0, r5, #0 + mov r1, #0x1d + bl MOD09_022181C8 +_022127AC: + add r0, r5, #0 + bl MOD09_02213C0C + cmp r0, #1 + bne _022127DC + add r0, r5, #0 + bl MOD09_0221534C + ldr r0, _0221285C ; =0x00002077 + ldrb r0, [r5, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bne _022127CE + add r0, r5, #0 + bl MOD09_02213C34 + b _022127D4 +_022127CE: + add r0, r5, #0 + bl MOD09_02213C6C +_022127D4: + ldr r0, _02212860 ; =0x00002079 + mov r1, #0x14 + strb r1, [r5, r0] + b _022127E2 +_022127DC: + ldr r0, _02212860 ; =0x00002079 + mov r1, #0x19 + strb r1, [r5, r0] +_022127E2: + mov r0, #0x16 + pop {r3, r4, r5, pc} +_022127E6: + ldr r0, _0221285C ; =0x00002077 + ldrb r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + beq _0221284A + ldr r0, _02212858 ; =0x000005DD + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0x12 + bl MOD09_022181C8 + ldr r2, _0221285C ; =0x00002077 + mov r1, #0xf + ldrb r3, [r5, r2] + add r0, r3, #0 + bic r0, r1 + lsl r1, r3, #0x1c + lsr r3, r1, #0x1c + mov r1, #1 + eor r1, r3 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + mov r1, #0xf + and r1, r3 + orr r0, r1 + strb r0, [r5, r2] + add r0, r2, #0 + add r0, #0x17 + strb r4, [r5, r0] + mov r1, #0xc + add r0, r2, #2 + strb r1, [r5, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221282C: + ldr r0, _02212858 ; =0x000005DD + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _02212864 ; =0x0000208E + mov r1, #0 + strb r1, [r5, r0] + mov r1, #0xb + sub r0, #0x15 + strb r1, [r5, r0] + mov r0, #0x16 + pop {r3, r4, r5, pc} +_0221284A: + mov r0, #0x14 + pop {r3, r4, r5, pc} + nop +_02212850: .word 0x0221AEE0 +_02212854: .word 0x00002088 +_02212858: .word 0x000005DD +_0221285C: .word 0x00002077 +_02212860: .word 0x00002079 +_02212864: .word 0x0000208E + + thumb_func_start MOD09_02212868 +MOD09_02212868: ; 0x02212868 + push {r3, r4, r5, r6, lr} + sub sp, #4 + ldr r1, _02212954 ; =0x0221AF30 + add r4, r0, #0 + ldr r6, [r4] + bl MOD09_02213614 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _02212896 + ldr r0, _02212958 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AD30 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _0221289C + mov r5, #4 + b _0221289C +_02212896: + add r0, r4, #0 + bl MOD09_022178E4 +_0221289C: + cmp r5, #4 + bhi _0221294E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022128AC: ; jump table + .short _022128B6 - _022128AC - 2 ; case 0 + .short _022128B6 - _022128AC - 2 ; case 1 + .short _022128B6 - _022128AC - 2 ; case 2 + .short _022128B6 - _022128AC - 2 ; case 3 + .short _02212934 - _022128AC - 2 ; case 4 +_022128B6: + ldrb r1, [r6, #0x11] + mov r0, #0x50 + mul r0, r1 + add r1, r4, r0 + lsl r0, r5, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x34] + cmp r0, #0 + beq _0221294E + ldr r0, [r4] + add r0, #0x34 + strb r5, [r0] + ldr r0, _0221295C ; =0x000005DD + bl FUN_020054C8 + add r1, r5, #0 + add r1, #0x13 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD09_022181C8 + ldrh r0, [r6, #0x22] + add r3, r5, #0 + str r0, [sp] + ldrb r2, [r6, #0x11] + ldr r0, [r6, #8] + ldr r1, [r6, #0x28] + add r2, r6, r2 + add r2, #0x2c + ldrb r2, [r2] + bl FUN_02230370 + cmp r0, #1 + bne _0221290E + ldr r0, _02212960 ; =0x0000207C + mov r1, #0 + strb r1, [r4, r0] + mov r1, #0x17 + sub r0, r0, #3 + strb r1, [r4, r0] + add sp, #4 + mov r0, #0x16 + pop {r3, r4, r5, r6, pc} +_0221290E: + ldr r2, _02212964 ; =0x00001FA8 + mov r1, #0x51 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + add r0, r4, #0 + bl MOD09_02216314 + ldr r0, [r4] + mov r1, #6 + strb r1, [r0, #0x11] + ldr r0, _02212968 ; =0x00002079 + mov r1, #0x19 + strb r1, [r4, r0] + add sp, #4 + mov r0, #0x11 + pop {r3, r4, r5, r6, pc} +_02212934: + ldr r0, _0221295C ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD09_022181C8 + ldr r0, _02212968 ; =0x00002079 + mov r1, #6 + strb r1, [r4, r0] + add sp, #4 + mov r0, #0x16 + pop {r3, r4, r5, r6, pc} +_0221294E: + mov r0, #0x15 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02212954: .word 0x0221AF30 +_02212958: .word 0x00002088 +_0221295C: .word 0x000005DD +_02212960: .word 0x0000207C +_02212964: .word 0x00001FA8 +_02212968: .word 0x00002079 + + thumb_func_start MOD09_0221296C +MOD09_0221296C: ; 0x0221296C + push {r3, lr} + mov r1, #0 + bl MOD09_022138F0 + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD09_02212978 +MOD09_02212978: ; 0x02212978 + push {r3, lr} + mov r1, #1 + bl MOD09_022138F0 + mov r0, #2 + pop {r3, pc} + + thumb_func_start MOD09_02212984 +MOD09_02212984: ; 0x02212984 + push {r3, lr} + mov r1, #2 + bl MOD09_022138F0 + mov r0, #3 + pop {r3, pc} + + thumb_func_start MOD09_02212990 +MOD09_02212990: ; 0x02212990 + push {r3, lr} + mov r1, #3 + bl MOD09_022138F0 + mov r0, #4 + pop {r3, pc} + + thumb_func_start MOD09_0221299C +MOD09_0221299C: ; 0x0221299C + push {r3, lr} + mov r1, #4 + bl MOD09_022138F0 + mov r0, #5 + pop {r3, pc} + + thumb_func_start MOD09_022129A8 +MOD09_022129A8: ; 0x022129A8 + push {r3, lr} + ldr r1, _022129C8 ; =0x00002077 + ldrb r1, [r0, r1] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bne _022129BC + mov r1, #6 + bl MOD09_022138F0 + b _022129C2 +_022129BC: + mov r1, #8 + bl MOD09_022138F0 +_022129C2: + mov r0, #0x13 + pop {r3, pc} + nop +_022129C8: .word 0x00002077 + + thumb_func_start MOD09_022129CC +MOD09_022129CC: ; 0x022129CC + push {r4, lr} + add r4, r0, #0 + bl MOD09_022174EC + ldr r0, _022129F4 ; =0x00002077 + ldrb r0, [r4, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bne _022129E8 + add r0, r4, #0 + mov r1, #7 + bl MOD09_022138F0 + b _022129F0 +_022129E8: + add r0, r4, #0 + mov r1, #9 + bl MOD09_022138F0 +_022129F0: + mov r0, #0x14 + pop {r4, pc} + .align 2, 0 +_022129F4: .word 0x00002077 + + thumb_func_start MOD09_022129F8 +MOD09_022129F8: ; 0x022129F8 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl MOD09_022138F0 + ldr r2, [r4] + mov r1, #0x25 + ldrh r0, [r2, #0x22] + ldr r2, [r2, #0xc] + bl FUN_0206E7B8 + cmp r0, #0 + beq _02212A16 + mov r0, #0x18 + pop {r4, pc} +_02212A16: + mov r0, #0x15 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02212A1C +MOD09_02212A1C: ; 0x02212A1C + push {r4, lr} + ldr r1, _02212A58 ; =0x0000207A + add r4, r0, #0 + ldrb r1, [r4, r1] + bl MOD09_02216D80 + ldr r1, _02212A58 ; =0x0000207A + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_02213E28 + ldr r1, _02212A58 ; =0x0000207A + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_022182E8 + ldr r1, _02212A58 ; =0x0000207A + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_02213710 + ldr r0, _02212A58 ; =0x0000207A + ldrb r0, [r4, r0] + cmp r0, #2 + bne _02212A52 + mov r0, #3 + pop {r4, pc} +_02212A52: + mov r0, #4 + pop {r4, pc} + nop +_02212A58: .word 0x0000207A + + thumb_func_start MOD09_02212A5C +MOD09_02212A5C: ; 0x02212A5C + push {r4, lr} + add r4, r0, #0 + bl MOD09_02216314 + ldr r0, _02212A70 ; =0x00002079 + mov r1, #0x10 + strb r1, [r4, r0] + mov r0, #0x11 + pop {r4, pc} + nop +_02212A70: .word 0x00002079 + + thumb_func_start MOD09_02212A74 +MOD09_02212A74: ; 0x02212A74 + push {r3, lr} + ldr r1, _02212A84 ; =0x00002060 + add r0, r0, r1 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #2 + pop {r3, pc} + .align 2, 0 +_02212A84: .word 0x00002060 + + thumb_func_start MOD09_02212A88 +MOD09_02212A88: ; 0x02212A88 + push {r3, lr} + ldr r1, _02212AA0 ; =0x0000207B + ldrb r0, [r0, r1] + bl FUN_0201BD70 + cmp r0, #0 + bne _02212A9A + mov r0, #0x12 + pop {r3, pc} +_02212A9A: + mov r0, #0x11 + pop {r3, pc} + nop +_02212AA0: .word 0x0000207B + + thumb_func_start MOD09_02212AA4 +MOD09_02212AA4: ; 0x02212AA4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02212AC4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _02212ABA + bl FUN_02020AA4 + cmp r0, #1 + bne _02212AC0 +_02212ABA: + ldr r0, _02212AC8 ; =0x00002079 + ldrb r0, [r4, r0] + pop {r4, pc} +_02212AC0: + mov r0, #0x12 + pop {r4, pc} + .align 2, 0 +_02212AC4: .word 0x021C48B8 +_02212AC8: .word 0x00002079 + + thumb_func_start MOD09_02212ACC +MOD09_02212ACC: ; 0x02212ACC + ldr r1, _02212AE0 ; =0x00001FA3 + ldrb r2, [r0, r1] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1f + bne _02212ADC + add r1, #0xd6 + ldrb r0, [r0, r1] + bx lr +_02212ADC: + mov r0, #0x16 + bx lr + .align 2, 0 +_02212AE0: .word 0x00001FA3 + + thumb_func_start MOD09_02212AE4 +MOD09_02212AE4: ; 0x02212AE4 + push {r3, r4, r5, r6, r7, lr} + ldr r7, _02212C7C ; =0x0000207C + add r4, r0, #0 + ldrb r1, [r4, r7] + ldr r5, [r4] + cmp r1, #4 + bls _02212AF4 + b _02212C78 +_02212AF4: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02212B00: ; jump table + .short _02212B0A - _02212B00 - 2 ; case 0 + .short _02212BCE - _02212B00 - 2 ; case 1 + .short _02212BF6 - _02212B00 - 2 ; case 2 + .short _02212C2E - _02212B00 - 2 ; case 3 + .short _02212C4E - _02212B00 - 2 ; case 4 +_02212B0A: + ldrb r2, [r5, #0x11] + ldr r0, [r5, #8] + ldr r1, [r5, #0x28] + add r2, r5, r2 + add r2, #0x2c + ldrb r2, [r2] + bl FUN_02230014 + ldrb r2, [r5, #0x11] + mov r1, #0x50 + mul r1, r2 + add r1, r4, r1 + str r0, [r1, #4] + add r0, r4, #0 + bl MOD09_02216378 + sub r0, r7, #2 + ldrb r0, [r4, r0] + ldrb r1, [r5, #0x11] + cmp r0, #5 + bne _02212B54 + mov r0, #0x50 + mul r0, r1 + add r5, #0x34 + ldrb r1, [r5] + add r0, r4, r0 + ldr r0, [r0, #4] + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + add r1, r7, #4 + strh r0, [r4, r1] + mov r2, #2 + sub r0, r1, #4 + strb r2, [r4, r0] + b _02212BC6 +_02212B54: + mov r0, #0x50 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #4] + bl FUN_0207C2D4 + add r6, r0, #0 + ldrb r0, [r5, #0x11] + add r3, r4, #0 + mov r7, #0x50 + add r2, r0, #0 + add r3, #0x1b + mul r2, r7 + ldrb r1, [r3, r2] + mov r0, #0x78 + bic r1, r0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1c + lsr r0, r0, #0x19 + orr r0, r1 + strb r0, [r3, r2] + ldrb r0, [r5, #0x11] + add r1, r0, #0 + mul r1, r7 + add r1, r4, r1 + ldrb r1, [r1, #0x1b] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1c + cmp r1, #7 + bne _02212BAA + add r0, #0xd + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _02212C80 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C644 + ldrb r1, [r5, #0x11] + add r0, r4, #0 + bl MOD09_022156DC +_02212BAA: + ldrb r1, [r5, #0x11] + mov r0, #0x50 + mov r2, #0 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #4] + mov r1, #0xa2 + bl FUN_020671BC + ldr r1, _02212C84 ; =0x0000207E + mov r2, #4 + strh r0, [r4, r1] + sub r0, r1, #2 + strb r2, [r4, r0] +_02212BC6: + ldr r0, _02212C88 ; =0x000005EC + bl FUN_020054C8 + b _02212C78 +_02212BCE: + ldrb r1, [r5, #0x11] + add r6, r4, #0 + mov r2, #0x50 + add r3, r1, #0 + add r6, #0x14 + mul r3, r2 + add r1, r7, #2 + ldrh r2, [r4, r1] + ldrh r1, [r6, r3] + cmp r2, r1 + beq _02212BF0 + add r1, r1, #1 + strh r1, [r6, r3] + ldrb r1, [r5, #0x11] + bl MOD09_0221567C + b _02212C78 +_02212BF0: + mov r0, #3 + strb r0, [r4, r7] + b _02212C78 +_02212BF6: + ldrb r3, [r5, #0x11] + add r1, r4, #0 + mov r2, #0x50 + add r1, #0x36 + mul r2, r3 + add r6, r1, r2 + add r1, r5, #0 + add r1, #0x34 + ldrb r1, [r1] + lsl r3, r1, #3 + add r1, r7, #4 + ldrh r2, [r4, r1] + ldrb r1, [r6, r3] + cmp r2, r1 + beq _02212C28 + add r1, r1, #1 + strb r1, [r6, r3] + add r5, #0x34 + ldrb r2, [r5] + add r1, r2, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD09_02216190 + b _02212C78 +_02212C28: + mov r0, #3 + strb r0, [r4, r7] + b _02212C78 +_02212C2E: + add r2, r5, #0 + add r2, #0x33 + ldrh r1, [r5, #0x22] + ldrb r2, [r2] + ldr r0, [r5, #8] + ldr r3, [r5, #0xc] + bl MOD09_02213C84 + add r0, r4, #0 + bl MOD09_02216314 + mov r1, #0x19 + sub r0, r7, #3 + strb r1, [r4, r0] + mov r0, #0x11 + pop {r3, r4, r5, r6, r7, pc} +_02212C4E: + ldrb r1, [r5, #0x11] + add r3, r4, #0 + mov r2, #0x50 + mul r2, r1 + add r1, r7, #2 + add r3, #0x14 + ldrh r6, [r4, r1] + ldrh r1, [r3, r2] + cmp r6, r1 + beq _02212C72 + add r1, r1, #1 + strh r1, [r3, r2] + ldrb r1, [r5, #0x11] + bl MOD09_0221567C + add r0, r4, #0 + bl MOD09_022186C0 +_02212C72: + ldr r0, _02212C7C ; =0x0000207C + mov r1, #1 + strb r1, [r4, r0] +_02212C78: + mov r0, #0x17 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02212C7C: .word 0x0000207C +_02212C80: .word 0x00001FB8 +_02212C84: .word 0x0000207E +_02212C88: .word 0x000005EC + + thumb_func_start MOD09_02212C8C +MOD09_02212C8C: ; 0x02212C8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + str r0, [sp, #4] + ldr r0, _02212DAC ; =0x0000207C + ldrb r0, [r5, r0] + cmp r0, #0 + beq _02212CA8 + cmp r0, #1 + beq _02212D12 + cmp r0, #2 + beq _02212D7C + b _02212DA4 +_02212CA8: + ldr r2, [sp, #4] + ldr r0, [sp, #4] + ldrb r3, [r2, #0x11] + ldr r1, [sp, #4] + ldr r0, [r0, #8] + add r2, r2, r3 + add r2, #0x2c + ldrb r2, [r2] + ldr r1, [r1, #0x28] + bl FUN_02230014 + ldr r1, [sp, #4] + mov r7, #0 + ldrb r2, [r1, #0x11] + mov r1, #0x50 + add r6, r7, #0 + mul r1, r2 + add r1, r5, r1 + str r0, [r1, #4] + add r4, r5, #0 +_02212CD0: + ldr r0, [sp, #4] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r1, r5, r0 + add r0, r1, r6 + ldrh r0, [r0, #0x34] + cmp r0, #0 + beq _02212CF4 + ldr r0, [r1, #4] + add r1, r7, #0 + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + mov r1, #0x82 + lsl r1, r1, #6 + strh r0, [r4, r1] +_02212CF4: + add r7, r7, #1 + add r6, #8 + add r4, r4, #2 + cmp r7, #4 + blo _02212CD0 + add r0, r5, #0 + bl MOD09_02216378 + ldr r0, _02212DB0 ; =0x000005EC + bl FUN_020054C8 + ldr r0, _02212DAC ; =0x0000207C + mov r1, #1 + strb r1, [r5, r0] + b _02212DA4 +_02212D12: + mov r6, #0 + add r4, r6, #0 + str r6, [sp] + add r7, r5, #0 +_02212D1A: + ldr r0, [sp, #4] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r1, r5, r0 + ldr r0, [sp] + add r1, r1, r0 + ldrh r0, [r1, #0x34] + cmp r0, #0 + bne _02212D32 + add r6, r6, #1 + b _02212D62 +_02212D32: + mov r0, #0x82 + add r2, r1, #0 + lsl r0, r0, #6 + add r2, #0x36 + ldrh r0, [r7, r0] + ldrb r2, [r2] + cmp r0, r2 + beq _02212D60 + add r0, r1, #0 + add r0, #0x36 + ldrb r0, [r0] + lsl r2, r4, #0x10 + add r1, #0x36 + add r0, r0, #1 + strb r0, [r1] + add r1, r4, #1 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD09_02216190 + b _02212D62 +_02212D60: + add r6, r6, #1 +_02212D62: + ldr r0, [sp] + add r4, r4, #1 + add r0, #8 + add r7, r7, #2 + str r0, [sp] + cmp r4, #4 + blo _02212D1A + cmp r6, #4 + bne _02212DA4 + ldr r0, _02212DAC ; =0x0000207C + mov r1, #2 + strb r1, [r5, r0] + b _02212DA4 +_02212D7C: + ldr r2, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [sp, #4] + add r2, #0x33 + ldr r3, [sp, #4] + ldrh r1, [r1, #0x22] + ldrb r2, [r2] + ldr r0, [r0, #8] + ldr r3, [r3, #0xc] + bl MOD09_02213C84 + add r0, r5, #0 + bl MOD09_02216314 + ldr r0, _02212DB4 ; =0x00002079 + mov r1, #0x19 + strb r1, [r5, r0] + add sp, #8 + mov r0, #0x11 + pop {r3, r4, r5, r6, r7, pc} +_02212DA4: + mov r0, #0x18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02212DAC: .word 0x0000207C +_02212DB0: .word 0x000005EC +_02212DB4: .word 0x00002079 + + thumb_func_start MOD09_02212DB8 +MOD09_02212DB8: ; 0x02212DB8 + push {lr} + sub sp, #0xc + mov r2, #0 + str r2, [sp] + mov r1, #0x10 + str r1, [sp, #4] + mov r1, #0x7a + str r2, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0xa + add r3, r1, #0 + ldr r2, _02212DE0 ; =0x0000FFFF + sub r3, #0x12 + bl FUN_02003210 + mov r0, #0x1a + add sp, #0xc + pop {pc} + nop +_02212DE0: .word 0x0000FFFF + + thumb_func_start MOD09_02212DE4 +MOD09_02212DE4: ; 0x02212DE4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x7a + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020038E4 + cmp r0, #0 + beq _02212DFC + mov r0, #0 + pop {r3, r4, r5, pc} +_02212DFC: + add r0, r4, #0 + bl MOD09_02213190 + add r0, r4, #0 + bl MOD09_02216B74 + add r0, r4, #0 + bl MOD09_02213DF8 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD09_02212F5C + ldr r0, _02212E48 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AC28 + ldr r1, [r4] + add r1, #0x32 + strb r0, [r1] + ldr r0, _02212E48 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AC1C + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4] + mov r1, #1 + add r0, #0x36 + strb r1, [r0] + add r0, r5, #0 + bl FUN_0200621C + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_02212E48: .word 0x00002088 + + thumb_func_start MOD09_02212E4C +MOD09_02212E4C: ; 0x02212E4C + push {r3, r4, r5, lr} + sub sp, #0x80 + ldr r5, _02212F48 ; =0x0221AED0 + add r3, sp, #0x70 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + mov r1, #1 + bl FUN_02016BF4 + ldr r5, _02212F4C ; =0x0221AF48 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02212F50 ; =0x0221AF80 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #6 + str r0, [r3] + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02212F54 ; =0x0221AF9C + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02018744 + ldr r5, _02212F58 ; =0x0221AF64 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_02018744 + ldr r3, [r4] + mov r0, #5 + ldr r3, [r3, #0xc] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #4 + ldr r3, [r3, #0xc] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_0201AC68 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_0201AC68 + add sp, #0x80 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212F48: .word 0x0221AED0 +_02212F4C: .word 0x0221AF48 +_02212F50: .word 0x0221AF80 +_02212F54: .word 0x0221AF9C +_02212F58: .word 0x0221AF64 + + thumb_func_start MOD09_02212F5C +MOD09_02212F5C: ; 0x02212F5C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02212F8C +MOD09_02212F8C: ; 0x02212F8C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r2, #0x79 + ldr r0, [r0, #0xc] + lsl r2, r2, #2 + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x48 + mov r1, #0x16 + mov r3, #7 + bl FUN_0200687C + ldr r2, [r5] + mov r0, #0x48 + ldr r2, [r2, #0xc] + mov r1, #0x14 + bl LoadFromNarc_2 + add r1, sp, #0x10 + add r4, r0, #0 + bl FUN_020B0180 + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r1, #0xc + bl MOD09_0221790C + add r0, r4, #0 + bl FUN_02016A18 + ldr r2, [r5] + mov r0, #0x48 + ldr r2, [r2, #0xc] + mov r1, #0x15 + bl LoadFromNarc_2 + add r1, sp, #0x10 + add r4, r0, #0 + bl FUN_020B0180 + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r1, #0xc + bl MOD09_02217C38 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + str r0, [sp] + lsl r0, r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x7a + ldr r3, [r5] + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r3, #0xc] + mov r1, #0x48 + mov r2, #0x17 + bl FUN_020030E8 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020031FC + add r2, r0, #0 + ldr r0, _02213134 ; =0x00001F60 + mov r1, #6 + lsl r1, r1, #6 + add r1, r2, r1 + add r0, r5, r0 + mov r2, #0x40 + bl memcpy + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + mov r0, #0x7a + ldr r3, [r5] + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r3, #0xc] + mov r1, #0xe + mov r2, #6 + bl FUN_020030E8 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xf0 + str r0, [sp, #8] + ldr r3, [r5] + add r0, #0xf8 + ldr r0, [r5, r0] + ldr r3, [r3, #0xc] + mov r1, #0xe + mov r2, #7 + bl FUN_020030E8 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230E44 + add r4, r0, #0 + bl FUN_0200CD60 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r2, #0x79 + ldr r0, [r0, #0xc] + lsl r2, r2, #2 + str r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r0, #0x26 + mov r3, #4 + bl FUN_0200687C + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + mov r0, #0x7a + ldr r3, [r5] + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r3, #0xc] + mov r1, #0x26 + bl FUN_020030E8 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020031FC + add r6, r0, #0 + ldr r0, [r5] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl FUN_02016998 + mov r1, #0x1a + lsl r1, r1, #4 + add r1, r6, r1 + mov r2, #0x20 + add r4, r0, #0 + bl memcpy + mov r2, #0x4d + lsl r2, r2, #2 + add r0, r6, r2 + ldrb r3, [r0] + add r1, r4, #0 + add r1, #0xe + strb r3, [r4, #0xe] + ldrb r3, [r0, #1] + strb r3, [r1, #1] + ldrb r3, [r0, #2] + strb r3, [r1, #2] + ldrb r0, [r0, #3] + mov r3, #0xd0 + strb r0, [r1, #3] + add r1, r2, #4 + add r0, r2, #4 + ldrb r1, [r6, r1] + add r0, r6, r0 + add r2, #0xb4 + strb r1, [r4, #6] + ldrb r1, [r0, #1] + strb r1, [r4, #7] + ldrb r1, [r0, #2] + strb r1, [r4, #8] + ldrb r0, [r0, #3] + add r1, r4, #0 + strb r0, [r4, #9] + mov r0, #0x20 + str r0, [sp] + ldr r0, [r5, r2] + mov r2, #1 + bl FUN_02003054 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02213134: .word 0x00001F60 + + thumb_func_start MOD09_02213138 +MOD09_02213138: ; 0x02213138 + push {r4, lr} + add r4, r0, #0 + ldr r3, [r4] + mov r0, #0 + ldr r3, [r3, #0xc] + mov r1, #0x1a + mov r2, #3 + bl FUN_0200A86C + ldr r1, _02213180 ; =0x00001FA8 + mov r2, #0 + str r0, [r4, r1] + ldr r3, [r4] + mov r0, #0xf + ldr r3, [r3, #0xc] + mov r1, #0xe + bl FUN_0200B870 + ldr r1, _02213184 ; =0x00001FA4 + str r0, [r4, r1] + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl FUN_0200AA80 + ldr r1, _02213188 ; =0x00001FAC + str r0, [r4, r1] + ldr r1, [r4] + mov r0, #2 + ldr r1, [r1, #0xc] + lsl r0, r0, #8 + bl FUN_020219F4 + ldr r1, _0221318C ; =0x00001FB0 + str r0, [r4, r1] + pop {r4, pc} + nop +_02213180: .word 0x00001FA8 +_02213184: .word 0x00001FA4 +_02213188: .word 0x00001FAC +_0221318C: .word 0x00001FB0 + + thumb_func_start MOD09_02213190 +MOD09_02213190: ; 0x02213190 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022131B8 ; =0x00001FA8 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _022131BC ; =0x00001FA4 + ldr r0, [r4, r0] + bl FUN_0200B990 + ldr r0, _022131C0 ; =0x00001FAC + ldr r0, [r4, r0] + bl FUN_0200AB18 + ldr r0, _022131C4 ; =0x00001FB0 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + nop +_022131B8: .word 0x00001FA8 +_022131BC: .word 0x00001FA4 +_022131C0: .word 0x00001FAC +_022131C4: .word 0x00001FB0 + + thumb_func_start MOD09_022131C8 +MOD09_022131C8: ; 0x022131C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp] + ldr r0, [r0] + ldr r0, [r0] + bl FUN_0206B9AC + cmp r0, #0 + bgt _022131E2 + b _02213476 +_022131E2: + ldr r0, [sp, #8] + mov r1, #0x50 + mul r1, r0 + ldr r0, [sp] + str r1, [sp, #4] + add r4, r0, r1 + ldr r0, [r0] + ldr r1, [sp, #8] + ldr r0, [r0] + bl FUN_0206B9B0 + str r0, [r4, #4] + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #8] + ldrh r0, [r4, #8] + cmp r0, #0 + bne _0221320C + b _0221345A +_0221320C: + ldr r0, [sp, #8] + mov r1, #0x50 + add r5, r0, #0 + mul r5, r1 + ldr r0, [sp] + mov r1, #0xa4 + add r4, r0, r5 + ldr r0, [r4, #4] + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xa] + ldr r0, [r4, #4] + mov r1, #0xa5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #0xa6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + mov r1, #0xa7 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + ldr r0, [r4, #4] + mov r1, #0xa8 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x12] + ldr r0, [r4, #4] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x14] + ldr r0, [r4, #4] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x16] + ldr r0, [r4, #4] + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #0x18] + ldr r0, [r4, #4] + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + ldr r6, [sp] + strb r0, [r4, #0x19] + ldr r0, [r4, #4] + add r6, #0x1a + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + ldrb r1, [r6, r5] + mov r2, #0x7f + lsl r0, r0, #0x18 + bic r1, r2 + lsr r2, r0, #0x18 + mov r0, #0x7f + and r0, r2 + orr r0, r1 + strb r0, [r6, r5] + ldr r0, [r4, #4] + mov r1, #0xaf + mov r2, #0 + bl FUN_020671BC + cmp r0, #1 + ldrb r1, [r6, r5] + bne _022132BC + mov r0, #0x80 + bic r1, r0 + strb r1, [r6, r5] + b _022132C2 +_022132BC: + mov r0, #0x80 + orr r0, r1 + strb r0, [r6, r5] +_022132C2: + ldr r0, [sp] + add r4, r0, r5 + add r6, r0, #0 + ldr r0, [r4, #4] + add r6, #0x1b + bl FUN_020689E0 + ldrb r1, [r6, r5] + mov r2, #7 + bic r1, r2 + mov r2, #7 + and r0, r2 + orr r0, r1 + strb r0, [r6, r5] + ldr r0, [r4, #4] + bl FUN_0207C2D4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1c + ldrb r1, [r6, r5] + mov r2, #0x78 + lsr r0, r0, #0x19 + bic r1, r2 + orr r0, r1 + strb r0, [r6, r5] + ldr r0, [r4, #4] + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + ldrb r1, [r6, r5] + mov r2, #0x80 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r6, r5] + ldr r0, [r4, #4] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1c] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1e] + ldr r0, [r4, #4] + mov r1, #8 + mov r2, #0 + bl FUN_020671BC + ldr r6, [sp] + str r0, [r4, #0x20] + add r6, #0x1a + ldrb r1, [r6, r5] + ldrh r0, [r4, #8] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + bl FUN_02068758 + str r0, [r4, #0x24] + ldrb r0, [r6, r5] + lsl r0, r0, #0x19 + lsr r1, r0, #0x19 + cmp r1, #0x64 + bne _0221335A + ldr r0, [sp] + add r4, r0, r5 + ldr r0, [r4, #0x24] + b _02213366 +_0221335A: + ldr r0, [sp] + add r1, r1, #1 + add r4, r0, r5 + ldrh r0, [r4, #8] + bl FUN_02068758 +_02213366: + str r0, [r4, #0x28] + ldr r0, [r4, #4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x2c + strb r0, [r1] + ldr r0, [r4, #4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x2d + strb r0, [r1] + ldr r0, [r4, #4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x2e + strb r0, [r1] + ldr r0, [r4, #4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x2f + strb r0, [r1] + ldr r0, [r4, #4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x30 + strb r0, [r1] + ldr r0, [r4, #4] + mov r1, #0xa1 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r1, #0x31 + strb r0, [r1] + ldr r0, [r4, #4] + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + add r4, #0x32 + strb r0, [r4] + ldr r1, [sp] + ldr r0, [sp, #4] + add r1, #0x34 + add r7, r1, r0 + ldr r1, [sp] + mov r4, #0 + add r6, r1, r0 +_022133E4: + lsl r0, r4, #3 + add r1, r4, #0 + str r0, [sp, #0xc] + add r5, r7, r0 + ldr r0, [r6, #4] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0xc] + strh r0, [r7, r1] + add r0, r1, #0 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _02213450 + add r1, r4, #0 + ldr r0, [r6, #4] + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + strb r0, [r5, #2] + add r1, r4, #0 + ldr r0, [r6, #4] + add r1, #0x3e + mov r2, #0 + bl FUN_020671BC + strb r0, [r5, #3] + ldrh r0, [r5] + ldrb r1, [r5, #3] + bl FUN_0206AB30 + strb r0, [r5, #3] + ldrh r0, [r5] + mov r1, #3 + bl FUN_0206AB18 + strb r0, [r5, #4] + ldrh r0, [r5] + mov r1, #1 + bl FUN_0206AB18 + strb r0, [r5, #5] + ldrh r0, [r5] + mov r1, #4 + bl FUN_0206AB18 + strb r0, [r5, #6] + ldrh r0, [r5] + mov r1, #2 + bl FUN_0206AB18 + strb r0, [r5, #7] +_02213450: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #4 + blo _022133E4 +_0221345A: + ldr r0, [sp, #8] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp] + ldr r0, [r0] + ldr r0, [r0] + bl FUN_0206B9AC + ldr r1, [sp, #8] + cmp r1, r0 + bge _02213476 + b _022131E2 +_02213476: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_0221347C +MOD09_0221347C: ; 0x0221347C + push {r3, r4, r5, lr} + ldr r1, _022134EC ; =0x0221AFB8 + add r4, r0, #0 + bl MOD09_02213614 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _022134C8 + ldr r0, _022134F0 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AD30 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _022134A6 + mov r5, #6 + b _022134B0 +_022134A6: + add r0, r0, #1 + cmp r5, r0 + bne _022134B0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022134B0: + cmp r5, #6 + beq _022134C0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD09_02213620 + cmp r0, #0 + beq _022134E6 +_022134C0: + ldr r0, [r4] + strb r5, [r0, #0x11] + mov r0, #1 + pop {r3, r4, r5, pc} +_022134C8: + cmp r5, #6 + beq _022134D8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD09_02213620 + cmp r0, #0 + beq _022134E6 +_022134D8: + ldr r0, [r4] + strb r5, [r0, #0x11] + add r0, r4, #0 + bl MOD09_022178E4 + mov r0, #1 + pop {r3, r4, r5, pc} +_022134E6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022134EC: .word 0x0221AFB8 +_022134F0: .word 0x00002088 + + thumb_func_start MOD09_022134F4 +MOD09_022134F4: ; 0x022134F4 + push {r3, r4, r5, lr} + ldr r1, _02213534 ; =0x0221AEF0 + add r5, r0, #0 + bl MOD09_02213614 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02213528 + ldr r0, _02213538 ; =0x00002088 + ldr r0, [r5, r0] + bl MOD09_0221AD30 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0221351E + mov r4, #3 + b _0221352E +_0221351E: + add r0, r0, #1 + cmp r4, r0 + bne _0221352E + mov r0, #0xff + pop {r3, r4, r5, pc} +_02213528: + add r0, r5, #0 + bl MOD09_022178E4 +_0221352E: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_02213534: .word 0x0221AEF0 +_02213538: .word 0x00002088 + + thumb_func_start MOD09_0221353C +MOD09_0221353C: ; 0x0221353C + push {r3, r4, r5, lr} + ldr r1, _0221357C ; =0x0221AF04 + add r5, r0, #0 + bl MOD09_02213614 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02213570 + ldr r0, _02213580 ; =0x00002088 + ldr r0, [r5, r0] + bl MOD09_0221AD30 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _02213566 + mov r4, #3 + b _02213576 +_02213566: + add r0, r0, #1 + cmp r4, r0 + bne _02213576 + mov r0, #0xff + pop {r3, r4, r5, pc} +_02213570: + add r0, r5, #0 + bl MOD09_022178E4 +_02213576: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221357C: .word 0x0221AF04 +_02213580: .word 0x00002088 + + thumb_func_start MOD09_02213584 +MOD09_02213584: ; 0x02213584 + push {r3, r4, r5, lr} + ldr r1, _022135C4 ; =0x0221AFF8 + add r5, r0, #0 + bl MOD09_02213614 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _022135B8 + ldr r0, _022135C8 ; =0x00002088 + ldr r0, [r5, r0] + bl MOD09_0221AD30 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _022135AE + mov r4, #7 + b _022135BE +_022135AE: + add r0, r0, #1 + cmp r4, r0 + bne _022135BE + mov r0, #0xff + pop {r3, r4, r5, pc} +_022135B8: + add r0, r5, #0 + bl MOD09_022178E4 +_022135BE: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_022135C4: .word 0x0221AFF8 +_022135C8: .word 0x00002088 + + thumb_func_start MOD09_022135CC +MOD09_022135CC: ; 0x022135CC + push {r3, r4, r5, lr} + ldr r1, _0221360C ; =0x0221AF18 + add r5, r0, #0 + bl MOD09_02213614 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02213600 + ldr r0, _02213610 ; =0x00002088 + ldr r0, [r5, r0] + bl MOD09_0221AD30 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _022135F6 + mov r4, #4 + b _02213606 +_022135F6: + add r0, r0, #1 + cmp r4, r0 + bne _02213606 + mov r0, #0xff + pop {r3, r4, r5, pc} +_02213600: + add r0, r5, #0 + bl MOD09_022178E4 +_02213606: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221360C: .word 0x0221AF18 +_02213610: .word 0x00002088 + + thumb_func_start MOD09_02213614 +MOD09_02213614: ; 0x02213614 + ldr r3, _0221361C ; =0x02020989 + add r0, r1, #0 + bx r3 + nop +_0221361C: .word 0x02020989 + + thumb_func_start MOD09_02213620 +MOD09_02213620: ; 0x02213620 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x50 + add r5, r0, #0 + mul r1, r4 + add r1, r5, r1 + ldrh r1, [r1, #8] + cmp r1, #0 + bne _02213636 + mov r0, #0 + pop {r3, r4, r5, pc} +_02213636: + cmp r4, #0 + beq _02213650 + bl MOD09_02213B9C + cmp r0, #0 + bne _0221364C + add r0, r5, #0 + bl MOD09_02213BBC + cmp r0, #0 + beq _02213654 +_0221364C: + cmp r4, #1 + bne _02213654 +_02213650: + mov r0, #1 + pop {r3, r4, r5, pc} +_02213654: + mov r0, #2 + pop {r3, r4, r5, pc} + + thumb_func_start MOD09_02213658 +MOD09_02213658: ; 0x02213658 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + add r6, r4, #0 + bl MOD09_02213BBC + cmp r0, #1 + bne _022136D0 + ldr r2, _0221370C ; =0x0221AEC8 + add r1, sp, #0 + ldrb r3, [r2] + add r0, sp, #0 + mov r4, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + strb r3, [r1, #1] + ldrb r3, [r2, #2] + strb r3, [r1, #2] + ldrb r3, [r2, #3] + strb r3, [r1, #3] + ldrb r3, [r2, #4] + ldrb r2, [r2, #5] + strb r3, [r1, #4] + strb r2, [r1, #5] +_0221368C: + ldrb r1, [r0] + cmp r6, r1 + beq _0221369A + add r4, r4, #1 + add r0, r0, #1 + cmp r4, #6 + blt _0221368C +_0221369A: + add r4, r4, r7 + bpl _022136A2 + mov r4, #5 + b _022136A8 +_022136A2: + cmp r4, #6 + blt _022136A8 + mov r4, #0 +_022136A8: + add r0, sp, #0 + ldrb r1, [r0, r4] + cmp r6, r1 + beq _02213704 + add r0, r5, #0 + bl MOD09_02213620 + cmp r0, #0 + beq _0221369A + add r0, sp, #0 + ldrb r0, [r0, r4] + mov r1, #0x50 + mul r1, r0 + add r1, r5, r1 + ldrb r1, [r1, #0x1b] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + bne _0221369A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022136D0: + add r4, r4, r7 + bpl _022136D8 + mov r4, #5 + b _022136DE +_022136D8: + cmp r4, #6 + blt _022136DE + mov r4, #0 +_022136DE: + cmp r6, r4 + beq _02213704 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02213620 + cmp r0, #0 + beq _022136D0 + mov r0, #0x50 + mul r0, r4 + add r0, r5, r0 + ldrb r0, [r0, #0x1b] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _022136D0 + lsl r0, r4, #0x18 + add sp, #8 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02213704: + mov r0, #0xff + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221370C: .word 0x0221AEC8 + + thumb_func_start MOD09_02213710 +MOD09_02213710: ; 0x02213710 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + cmp r1, #2 + bne _0221378E + ldr r0, [r6] + add r2, r6, #4 + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r0, r2, r0 + ldrb r1, [r0, #0x16] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + cmp r1, #0x64 + bhs _0221373A + ldr r2, [r0, #0x20] + ldr r1, [r0, #0x24] + ldr r0, [r0, #0x1c] + sub r1, r1, r2 + sub r0, r0, r2 + b _0221373E +_0221373A: + mov r1, #0 + add r0, r1, #0 +_0221373E: + mov r2, #0x40 + bl FUN_02079A0C + add r4, r0, #0 + mov r5, #0 + mov r7, #0x1e +_0221374A: + cmp r4, #8 + blo _02213752 + add r1, r7, #0 + b _0221375A +_02213752: + add r0, r4, #0 + add r0, #0x16 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_0221375A: + add r2, r5, #0 + add r2, #0xa + lsl r2, r2, #0x10 + add r0, r6, #0 + lsr r2, r2, #0x10 + mov r3, #8 + bl MOD09_02213790 + cmp r4, #8 + bhs _02213772 + mov r4, #0 + b _02213778 +_02213772: + sub r4, #8 + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 +_02213778: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #8 + blo _0221374A + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #7 + bl FUN_0201AC68 +_0221378E: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_02213790 +MOD09_02213790: ; 0x02213790 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + lsl r1, r3, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + add r4, r2, #0 + str r1, [sp, #8] + mov r1, #0x10 + str r1, [sp, #0xc] + mov r1, #0x79 + lsl r1, r1, #2 + ldr r0, [r0, r1] + lsl r3, r4, #0x18 + mov r1, #7 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD09_022137C0 +MOD09_022137C0: ; 0x022137C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0xe + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x10 + lsl r6, r2, #1 + add r4, r1, #0 + str r0, [sp, #0xc] + mov r0, #0x79 + add r7, r6, #2 + lsl r0, r0, #2 + lsl r3, r7, #0x18 + ldr r0, [r5, r0] + mov r1, #7 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #0xe + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r0, #0x79 + add r6, r6, #3 + lsl r0, r0, #2 + add r2, r4, #1 + lsl r2, r2, #0x10 + lsl r3, r6, #0x18 + ldr r0, [r5, r0] + mov r1, #7 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #0xf + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r0, #0x79 + add r2, r4, #0 + lsl r0, r0, #2 + add r2, #0x20 + lsl r2, r2, #0x10 + lsl r3, r7, #0x18 + ldr r0, [r5, r0] + mov r1, #7 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #0xf + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r0, #0x79 + lsl r0, r0, #2 + add r4, #0x21 + lsl r2, r4, #0x10 + lsl r3, r6, #0x18 + ldr r0, [r5, r0] + mov r1, #7 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_02213860 +MOD09_02213860: ; 0x02213860 + push {r4, r5, r6, lr} + ldr r6, _02213880 ; =0x00000125 + add r5, r0, #0 + mov r4, #0 +_02213868: + lsl r2, r4, #0x18 + add r0, r5, #0 + add r1, r6, #0 + lsr r2, r2, #0x18 + bl MOD09_022137C0 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #6 + blo _02213868 + pop {r4, r5, r6, pc} + .align 2, 0 +_02213880: .word 0x00000125 + + thumb_func_start MOD09_02213884 +MOD09_02213884: ; 0x02213884 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + cmp r1, #9 + bne _022138EE + bl MOD09_02213860 + ldr r1, [r5] + add r0, r1, #0 + add r0, #0x34 + ldrb r2, [r0] + cmp r2, #4 + bhs _022138AC + ldrb r1, [r1, #0x11] + mov r0, #0x50 + mul r0, r1 + add r1, r5, r0 + lsl r0, r2, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x34] + b _022138AE +_022138AC: + ldrh r0, [r1, #0x24] +_022138AE: + mov r1, #0xa + bl FUN_0206AB18 + bl FUN_02083114 + mov r1, #0xa + bl _s32_div_f + lsl r0, r0, #0x18 + asr r6, r0, #0x18 + mov r4, #0 + cmp r6, #0 + ble _022138E2 + mov r7, #5 + lsl r7, r7, #6 +_022138CC: + lsl r2, r4, #0x18 + add r0, r5, #0 + add r1, r7, #0 + lsr r2, r2, #0x18 + bl MOD09_022137C0 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r6 + blt _022138CC +_022138E2: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl FUN_0201AC68 +_022138EE: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_022138F0 +MOD09_022138F0: ; 0x022138F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD09_02213968 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + mov r2, #0 + bl FUN_0201878C + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0 + bl FUN_0201878C + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02216D80 + add r0, r5, #0 + bl MOD09_02213DE0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02213CF4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02213E28 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02213710 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02213884 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02217838 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_022182E8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02218640 + ldr r0, _02213964 ; =0x0000207A + strb r4, [r5, r0] + pop {r3, r4, r5, pc} + nop +_02213964: .word 0x0000207A + + thumb_func_start MOD09_02213968 +MOD09_02213968: ; 0x02213968 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r2, _022139D0 ; =0x0221B01C + add r5, r0, #0 + lsl r0, r1, #3 + mov r4, #0 + add r6, r2, r0 +_02213976: + ldr r2, [r5] + ldr r1, [r6] + ldr r2, [r2, #0xc] + mov r0, #0x48 + bl LoadFromNarc_2 + add r1, sp, #0xc + add r7, r0, #0 + bl FUN_020B0180 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x79 + lsl r0, r0, #2 + add r1, r4, #6 + ldr r2, [sp, #0xc] + lsl r1, r1, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + mov r0, #0x79 + lsl r0, r0, #2 + add r1, r4, #6 + lsl r1, r1, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + bl FUN_0201AC68 + add r0, r7, #0 + bl FUN_02016A18 + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #2 + blo _02213976 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022139D0: .word 0x0221B01C + + thumb_func_start MOD09_022139D4 +MOD09_022139D4: ; 0x022139D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5] + mov r2, #0x50 + ldrb r1, [r1, #0x11] + add r3, r5, #4 + mul r2, r1 + add r4, r3, r2 + bl MOD09_02213BDC + cmp r0, #1 + bne _02213A30 + ldr r0, _02213B70 ; =0x00001FA8 + mov r1, #0x50 + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + add r4, r0, #0 + ldr r0, [r1, #8] + ldr r1, [r1, #0x28] + bl FUN_022302BC + add r1, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230188 + add r2, r0, #0 + ldr r0, _02213B74 ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200B144 + ldr r1, _02213B74 ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213A30: + ldrh r0, [r4, #0x10] + cmp r0, #0 + bne _02213A6C + ldr r0, _02213B70 ; =0x00001FA8 + mov r1, #0x4d + ldr r0, [r5, r0] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r4] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _02213B74 ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _02213B74 ; =0x00001FAC + add r2, r6, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213A6C: + ldr r2, [r5] + ldrb r0, [r2, #0x11] + add r0, r2, r0 + add r0, #0x2c + ldrb r1, [r0] + ldrb r0, [r2, #0x14] + cmp r0, r1 + beq _02213A82 + ldrb r0, [r2, #0x15] + cmp r0, r1 + bne _02213AB8 +_02213A82: + ldr r0, _02213B70 ; =0x00001FA8 + mov r1, #0x4c + ldr r0, [r5, r0] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r4] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _02213B74 ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _02213B74 ; =0x00001FAC + add r2, r6, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213AB8: + add r0, r5, #0 + bl MOD09_02213B7C + cmp r0, #1 + bne _02213AD4 + ldr r2, _02213B70 ; =0x00001FA8 + mov r1, #0x4f + ldr r0, [r5, r2] + add r2, #8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213AD4: + ldr r2, [r5] + ldrb r1, [r2, #0x12] + cmp r1, #6 + beq _02213B24 + ldrb r4, [r2, #0x11] + add r0, r2, r4 + add r0, #0x2c + ldrb r0, [r0] + cmp r1, r0 + bne _02213B24 + ldr r0, _02213B70 ; =0x00001FA8 + mov r1, #0x5d + ldr r0, [r5, r0] + bl FUN_0200A914 + add r6, r0, #0 + mov r0, #0x50 + mul r0, r4 + add r0, r5, r0 + ldr r0, [r0, #4] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _02213B74 ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _02213B74 ; =0x00001FAC + add r2, r6, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213B24: + ldrh r0, [r2, #0x24] + cmp r0, #0 + beq _02213B6C + ldr r1, _02213B78 ; =0x00002076 + mov r0, #0x50 + ldrb r2, [r5, r1] + sub r1, #0xce + add r4, r5, #4 + add r6, r2, #0 + mul r6, r0 + ldr r0, [r5, r1] + mov r1, #0x4e + bl FUN_0200A914 + add r7, r0, #0 + ldr r0, [r4, r6] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _02213B74 ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _02213B74 ; =0x00001FAC + add r2, r7, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02213B6C: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02213B70: .word 0x00001FA8 +_02213B74: .word 0x00001FAC +_02213B78: .word 0x00002076 + + thumb_func_start MOD09_02213B7C +MOD09_02213B7C: ; 0x02213B7C + ldr r1, [r0] + ldrb r2, [r1, #0x11] + mov r1, #0x50 + mul r1, r2 + add r0, r0, r1 + ldrb r0, [r0, #0x1b] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + beq _02213B92 + mov r0, #1 + b _02213B94 +_02213B92: + mov r0, #0 +_02213B94: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .align 2, 0 + + thumb_func_start MOD09_02213B9C +MOD09_02213B9C: ; 0x02213B9C + push {r3, lr} + ldr r0, [r0] + ldr r0, [r0, #8] + bl FUN_0222FF74 + cmp r0, #0x4a + beq _02213BB8 + cmp r0, #0x4b + beq _02213BB8 + mov r1, #0x12 + tst r0, r1 + beq _02213BB8 + mov r0, #1 + pop {r3, pc} +_02213BB8: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD09_02213BBC +MOD09_02213BBC: ; 0x02213BBC + push {r3, lr} + ldr r0, [r0] + ldr r0, [r0, #8] + bl FUN_0222FF74 + cmp r0, #0x4a + beq _02213BD8 + cmp r0, #0x4b + beq _02213BD8 + mov r1, #8 + tst r0, r1 + beq _02213BD8 + mov r0, #1 + pop {r3, pc} +_02213BD8: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD09_02213BDC +MOD09_02213BDC: ; 0x02213BDC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD09_02213BBC + cmp r0, #1 + bne _02213C04 + ldr r0, _02213C08 ; =0x0000208F + ldrb r0, [r5, r0] + cmp r0, #2 + bne _02213BFC + mov r0, #1 + add r1, r4, #0 + tst r1, r0 + beq _02213C04 + pop {r3, r4, r5, pc} +_02213BFC: + mov r0, #1 + add r1, r4, #0 + tst r1, r0 + beq _02213C06 +_02213C04: + mov r0, #0 +_02213C06: + pop {r3, r4, r5, pc} + .align 2, 0 +_02213C08: .word 0x0000208F + + thumb_func_start MOD09_02213C0C +MOD09_02213C0C: ; 0x02213C0C + ldr r2, [r0] + add r1, r2, #0 + add r1, #0x34 + ldrb r3, [r1] + cmp r3, #4 + bne _02213C1C + ldrh r0, [r2, #0x24] + b _02213C2A +_02213C1C: + ldrb r2, [r2, #0x11] + mov r1, #0x50 + mul r1, r2 + add r1, r0, r1 + lsl r0, r3, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x34] +_02213C2A: + ldr r3, _02213C30 ; =0x0206EA55 + bx r3 + nop +_02213C30: .word 0x0206EA55 + + thumb_func_start MOD09_02213C34 +MOD09_02213C34: ; 0x02213C34 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02213C64 ; =0x00002020 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_0200C644 + ldr r0, _02213C68 ; =0x00002070 + ldr r0, [r4, r0] + add r0, #0xa0 + bl FUN_0201958C + ldr r0, _02213C68 ; =0x00002070 + ldr r0, [r4, r0] + add r0, #0x60 + bl FUN_0201958C + ldr r0, _02213C68 ; =0x00002070 + ldr r0, [r4, r0] + add r0, #0x70 + bl FUN_0201958C + pop {r4, pc} + nop +_02213C64: .word 0x00002020 +_02213C68: .word 0x00002070 + + thumb_func_start MOD09_02213C6C +MOD09_02213C6C: ; 0x02213C6C + push {r4, lr} + add r4, r0, #0 + bl MOD09_02213860 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #7 + bl FUN_0201AC68 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02213C84 +MOD09_02213C84: ; 0x02213C84 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r4, #0x41 + beq _02213CA8 + cmp r4, #0x43 + beq _02213CA8 + cmp r4, #0x42 + beq _02213CA8 + bl FUN_02230214 + add r1, r4, #0 + mov r2, #1 + add r3, r7, #0 + bl FUN_0206EDD4 +_02213CA8: + add r0, r5, #0 + bl FUN_02230218 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0206F1E4 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_02213CB8 +MOD09_02213CB8: ; 0x02213CB8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, _02213CE8 ; =0x00002050 + ldr r4, _02213CEC ; =0x0221B06C + mov r6, #0 + add r5, r7, r0 +_02213CC4: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r7, r0] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #2 + blo _02213CC4 + ldr r1, _02213CF0 ; =0x0000207A + add r0, r7, #0 + ldrb r1, [r7, r1] + bl MOD09_02213CF4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02213CE8: .word 0x00002050 +_02213CEC: .word 0x0221B06C +_02213CF0: .word 0x0000207A + + thumb_func_start MOD09_02213CF4 +MOD09_02213CF4: ; 0x02213CF4 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + cmp r1, #9 + bhi _02213D74 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213D08: ; jump table + .short _02213D1C - _02213D08 - 2 ; case 0 + .short _02213D26 - _02213D08 - 2 ; case 1 + .short _02213D30 - _02213D08 - 2 ; case 2 + .short _02213D3A - _02213D08 - 2 ; case 3 + .short _02213D44 - _02213D08 - 2 ; case 4 + .short _02213D4E - _02213D08 - 2 ; case 5 + .short _02213D58 - _02213D08 - 2 ; case 6 + .short _02213D62 - _02213D08 - 2 ; case 7 + .short _02213D58 - _02213D08 - 2 ; case 8 + .short _02213D6C - _02213D08 - 2 ; case 9 +_02213D1C: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #6 + ldr r6, _02213DB8 ; =0x0221B120 + strb r1, [r4, r0] + b _02213D74 +_02213D26: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #4 + ldr r6, _02213DBC ; =0x0221B0A8 + strb r1, [r4, r0] + b _02213D74 +_02213D30: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #0x23 + ldr r6, _02213DC0 ; =0x0221B2C8 + strb r1, [r4, r0] + b _02213D74 +_02213D3A: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #0xb + ldr r6, _02213DC4 ; =0x0221B188 + strb r1, [r4, r0] + b _02213D74 +_02213D44: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #0x11 + ldr r6, _02213DC8 ; =0x0221B240 + strb r1, [r4, r0] + b _02213D74 +_02213D4E: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #5 + ldr r6, _02213DCC ; =0x0221B0C8 + strb r1, [r4, r0] + b _02213D74 +_02213D58: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #6 + ldr r6, _02213DD0 ; =0x0221B0F0 + strb r1, [r4, r0] + b _02213D74 +_02213D62: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #0xc + ldr r6, _02213DD4 ; =0x0221B1E0 + strb r1, [r4, r0] + b _02213D74 +_02213D6C: + ldr r0, _02213DB4 ; =0x00002074 + mov r1, #7 + ldr r6, _02213DD8 ; =0x0221B150 + strb r1, [r4, r0] +_02213D74: + ldr r1, _02213DB4 ; =0x00002074 + ldr r0, [r4] + ldrb r1, [r4, r1] + ldr r0, [r0, #0xc] + bl FUN_02018FF4 + ldr r1, _02213DDC ; =0x00002070 + mov r5, #0 + str r0, [r4, r1] + add r0, r1, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bls _02213DB2 + add r7, r1, #4 +_02213D90: + ldr r1, _02213DDC ; =0x00002070 + mov r0, #0x79 + ldr r2, [r4, r1] + lsl r0, r0, #2 + lsl r1, r5, #4 + add r1, r2, r1 + lsl r2, r5, #3 + ldr r0, [r4, r0] + add r2, r6, r2 + bl FUN_02019150 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, r7] + cmp r5, r0 + blo _02213D90 +_02213DB2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02213DB4: .word 0x00002074 +_02213DB8: .word 0x0221B120 +_02213DBC: .word 0x0221B0A8 +_02213DC0: .word 0x0221B2C8 +_02213DC4: .word 0x0221B188 +_02213DC8: .word 0x0221B240 +_02213DCC: .word 0x0221B0C8 +_02213DD0: .word 0x0221B0F0 +_02213DD4: .word 0x0221B1E0 +_02213DD8: .word 0x0221B150 +_02213DDC: .word 0x00002070 + + thumb_func_start MOD09_02213DE0 +MOD09_02213DE0: ; 0x02213DE0 + ldr r1, _02213DF0 ; =0x00002070 + add r2, r0, #0 + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r3, _02213DF4 ; =0x020191A5 + ldrb r1, [r2, r1] + bx r3 + nop +_02213DF0: .word 0x00002070 +_02213DF4: .word 0x020191A5 + + thumb_func_start MOD09_02213DF8 +MOD09_02213DF8: ; 0x02213DF8 + push {r3, r4, r5, lr} + ldr r1, _02213E20 ; =0x00002070 + add r5, r0, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldrb r1, [r5, r1] + bl FUN_020191A4 + ldr r0, _02213E24 ; =0x00002050 + mov r4, #0 + add r5, r5, r0 +_02213E0E: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #2 + blo _02213E0E + pop {r3, r4, r5, pc} + nop +_02213E20: .word 0x00002070 +_02213E24: .word 0x00002050 + + thumb_func_start MOD09_02213E28 +MOD09_02213E28: ; 0x02213E28 + push {r3, lr} + cmp r1, #9 + bhi _02213E82 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02213E3A: ; jump table + .short _02213E4E - _02213E3A - 2 ; case 0 + .short _02213E54 - _02213E3A - 2 ; case 1 + .short _02213E5A - _02213E3A - 2 ; case 2 + .short _02213E60 - _02213E3A - 2 ; case 3 + .short _02213E66 - _02213E3A - 2 ; case 4 + .short _02213E6C - _02213E3A - 2 ; case 5 + .short _02213E72 - _02213E3A - 2 ; case 6 + .short _02213E78 - _02213E3A - 2 ; case 7 + .short _02213E72 - _02213E3A - 2 ; case 8 + .short _02213E7E - _02213E3A - 2 ; case 9 +_02213E4E: + bl MOD09_022155D0 + pop {r3, pc} +_02213E54: + bl MOD09_022156FC + pop {r3, pc} +_02213E5A: + bl MOD09_02215A2C + pop {r3, pc} +_02213E60: + bl MOD09_022158EC + pop {r3, pc} +_02213E66: + bl MOD09_02215C44 + pop {r3, pc} +_02213E6C: + bl MOD09_0221609C + pop {r3, pc} +_02213E72: + bl MOD09_02215DA8 + pop {r3, pc} +_02213E78: + bl MOD09_02215ED0 + pop {r3, pc} +_02213E7E: + bl MOD09_022161B0 +_02213E82: + pop {r3, pc} + + thumb_func_start MOD09_02213E84 +MOD09_02213E84: ; 0x02213E84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r6, r0, #0 + ldr r0, _02214014 ; =0x00002070 + str r3, [sp, #0x14] + ldr r5, [r6, r0] + lsl r4, r1, #4 + ldr r0, [sp, #0x14] + mov r1, #0x50 + mul r1, r0 + add r7, r6, #4 + add r0, r7, r1 + str r1, [sp, #0x24] + ldr r1, [r6] + str r0, [sp, #0x20] + ldr r1, [r1, #0xc] + mov r0, #0xc + str r2, [sp, #0x10] + bl FUN_020219F4 + ldr r1, [sp, #0x14] + str r0, [sp, #0x1c] + ldr r0, _02214018 ; =0x00001FA8 + lsl r2, r1, #2 + ldr r1, _0221401C ; =0x0221B090 + ldr r0, [r6, r0] + ldr r1, [r1, r2] + bl FUN_0200A914 + str r0, [sp, #0x18] + ldr r0, [sp, #0x24] + ldr r0, [r7, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _02214020 ; =0x00001FAC + mov r1, #0 + ldr r0, [r6, r0] + bl FUN_0200ACF8 + ldr r0, _02214020 ; =0x00001FAC + ldr r1, [sp, #0x1c] + ldr r0, [r6, r0] + ldr r2, [sp, #0x18] + bl FUN_0200B7B8 + ldr r0, [sp, #0x10] + add r3, sp, #0x38 + cmp r0, #0 + bne _02213F06 + ldrb r7, [r3, #0x14] + mov r0, #0xff + ldr r1, [sp, #0x10] + str r7, [sp] + str r0, [sp, #4] + ldr r0, _02214024 ; =0x000F0E00 + ldr r2, [sp, #0x1c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r3, #0x10] + add r0, r5, r4 + bl FUN_0201BDE0 + b _02213F22 +_02213F06: + ldrb r7, [r3, #0x14] + mov r0, #0xff + ldr r1, [sp, #0x10] + str r7, [sp] + str r0, [sp, #4] + ldr r0, _02214028 ; =0x00070809 + ldr r2, [sp, #0x1c] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r3, #0x10] + add r0, r5, r4 + bl FUN_0201BDE0 +_02213F22: + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + ldrb r0, [r0, #0x16] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _02214008 + ldr r0, [sp, #0x20] + ldrb r0, [r0, #0x17] + lsl r1, r0, #0x18 + lsr r1, r1, #0x1f + bne _02214008 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + bne _02213FA6 + ldr r0, _02214018 ; =0x00001FA8 + mov r1, #0x10 + ldr r0, [r6, r0] + bl FUN_0200A914 + add r6, r0, #0 + add r0, r5, r4 + bl FUN_0201AB0C + str r0, [sp, #0x28] + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + ldr r1, [sp, #0x28] + str r7, [sp] + lsl r1, r1, #3 + sub r3, r1, r0 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _02213F8A + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221402C ; =0x00070800 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + b _02213F9E +_02213F8A: + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214030 ; =0x000A0B00 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_02213F9E: + add r0, r6, #0 + bl FUN_02021A20 + b _02214008 +_02213FA6: + cmp r0, #1 + bne _02214008 + ldr r0, _02214018 ; =0x00001FA8 + mov r1, #0x11 + ldr r0, [r6, r0] + bl FUN_0200A914 + add r6, r0, #0 + add r0, r5, r4 + bl FUN_0201AB0C + str r0, [sp, #0x2c] + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + ldr r1, [sp, #0x2c] + str r7, [sp] + lsl r1, r1, #3 + sub r3, r1, r0 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _02213FEE + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r1, #0 + add r0, r5, r4 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + b _02214002 +_02213FEE: + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214034 ; =0x000C0D00 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_02214002: + add r0, r6, #0 + bl FUN_02021A20 +_02214008: + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214014: .word 0x00002070 +_02214018: .word 0x00001FA8 +_0221401C: .word 0x0221B090 +_02214020: .word 0x00001FAC +_02214024: .word 0x000F0E00 +_02214028: .word 0x00070809 +_0221402C: .word 0x00070800 +_02214030: .word 0x000A0B00 +_02214034: .word 0x000C0D00 + + thumb_func_start MOD09_02214038 +MOD09_02214038: ; 0x02214038 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0221407C ; =0x00002070 + lsl r4, r1, #4 + ldr r1, [r5, r0] + add r3, #8 + add r1, r1, r4 + str r1, [sp, #4] + str r3, [sp, #8] + add r1, sp, #0x10 + ldrb r1, [r1, #0x10] + mov r3, #0x50 + mul r3, r2 + str r1, [sp, #0xc] + add r2, r5, r3 + ldrb r2, [r2, #0x1a] + sub r0, #0xcc + ldr r0, [r5, r0] + lsl r2, r2, #0x19 + mov r1, #1 + lsr r2, r2, #0x19 + mov r3, #3 + bl FUN_0200BA78 + ldr r0, _0221407C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221407C: .word 0x00002070 + + thumb_func_start MOD09_02214080 +MOD09_02214080: ; 0x02214080 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x50 + add r7, r3, #0 + mul r0, r2 + add r3, r5, #4 + add r0, r3, r0 + str r0, [sp, #0xc] + add r0, sp, #0x18 + ldrb r6, [r0, #0x10] + ldr r0, _022140F8 ; =0x00002070 + lsl r4, r1, #4 + ldr r1, [r5, r0] + sub r0, #0xcc + add r1, r1, r4 + str r1, [sp] + str r7, [sp, #4] + str r6, [sp, #8] + ldr r1, [sp, #0xc] + ldr r0, [r5, r0] + ldrh r1, [r1, #0x10] + mov r2, #3 + mov r3, #1 + bl FUN_0200B9EC + add r3, r7, #0 + ldr r2, _022140FC ; =0x00001FA4 + str r6, [sp] + ldr r0, [r5, r2] + add r2, #0xcc + ldr r2, [r5, r2] + mov r1, #0 + add r2, r2, r4 + add r3, #0x18 + bl FUN_0200B9A8 + ldr r0, _022140F8 ; =0x00002070 + add r7, #0x20 + ldr r1, [r5, r0] + sub r0, #0xcc + add r1, r1, r4 + str r1, [sp] + str r7, [sp, #4] + str r6, [sp, #8] + ldr r1, [sp, #0xc] + ldr r0, [r5, r0] + ldrh r1, [r1, #0x12] + mov r2, #3 + mov r3, #0 + bl FUN_0200B9EC + ldr r0, _022140F8 ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022140F8: .word 0x00002070 +_022140FC: .word 0x00001FA4 + + thumb_func_start MOD09_02214100 +MOD09_02214100: ; 0x02214100 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x50 + str r1, [sp, #8] + mul r0, r2 + add r1, r4, #4 + str r3, [sp, #0xc] + add r5, r1, r0 + ldrh r0, [r5, #0x10] + ldrh r1, [r5, #0x12] + mov r2, #0x30 + mov r7, #1 + bl FUN_02079A0C + str r0, [sp, #0x14] + ldrh r0, [r5, #0x10] + ldrh r1, [r5, #0x12] + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #4 + bhi _0221415E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221413A: ; jump table + .short _02214144 - _0221413A - 2 ; case 0 + .short _0221415C - _0221413A - 2 ; case 1 + .short _02214158 - _0221413A - 2 ; case 2 + .short _02214156 - _0221413A - 2 ; case 3 + .short _02214156 - _0221413A - 2 ; case 4 +_02214144: + ldr r0, _022141D4 ; =0x00002070 + ldr r1, [r4, r0] + ldr r0, [sp, #8] + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02214156: + b _0221415E +_02214158: + mov r7, #3 + b _0221415E +_0221415C: + mov r7, #5 +_0221415E: + add r0, sp, #0x20 + ldrb r6, [r0, #0x10] + add r0, r7, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + lsl r5, r0, #4 + ldr r0, [sp, #0x14] + add r3, r6, #1 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022141D4 ; =0x00002070 + lsl r1, r1, #0x18 + ldr r0, [r4, r0] + lsl r3, r3, #0x10 + ldr r2, [sp, #0xc] + add r0, r0, r5 + lsr r1, r1, #0x18 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, [sp, #0x14] + add r3, r6, #2 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _022141D4 ; =0x00002070 + lsl r3, r3, #0x10 + ldr r0, [r4, r0] + ldr r2, [sp, #0xc] + add r0, r0, r5 + add r1, r7, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022141D4 ; =0x00002070 + add r3, r6, #4 + ldr r0, [r4, r0] + lsl r1, r1, #0x18 + lsl r3, r3, #0x10 + ldr r2, [sp, #0xc] + add r0, r0, r5 + lsr r1, r1, #0x18 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, _022141D4 ; =0x00002070 + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022141D4: .word 0x00002070 + + thumb_func_start MOD09_022141D8 +MOD09_022141D8: ; 0x022141D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + mov r0, #0x10 + ldr r1, [r1, #0xc] + add r7, r2, #0 + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, _02214250 ; =0x00001FA8 + mov r1, #8 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r2, #0x50 + mul r2, r7 + str r0, [sp, #0x10] + ldr r0, _02214254 ; =0x00001FAC + add r2, r5, r2 + ldrh r2, [r2, #0x1c] + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200ADCC + ldr r0, _02214254 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214258 ; =0x000F0E00 + lsl r4, r4, #4 + str r0, [sp, #8] + ldr r0, _0221425C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r2, r6, #0 + add r0, r0, r4 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _0221425C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214250: .word 0x00001FA8 +_02214254: .word 0x00001FAC +_02214258: .word 0x000F0E00 +_0221425C: .word 0x00002070 + + thumb_func_start MOD09_02214260 +MOD09_02214260: ; 0x02214260 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x50 + add r7, r1, #0 + add r1, r4, #4 + mul r0, r2 + add r5, r1, r0 + ldrh r0, [r5, #0x1a] + cmp r0, #0 + bne _02214284 + ldr r0, _022142EC ; =0x00001FA8 + mov r1, #0x14 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r6, r0, #0 + b _022142BA +_02214284: + ldr r1, [r4] + mov r0, #0x12 + ldr r1, [r1, #0xc] + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, _022142EC ; =0x00001FA8 + mov r1, #9 + ldr r0, [r4, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] + ldr r0, _022142F0 ; =0x00001FAC + ldrh r2, [r5, #0x1a] + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + ldr r0, _022142F0 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r4, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #0x10] + bl FUN_02021A20 +_022142BA: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022142F4 ; =0x000F0E00 + lsl r5, r7, #4 + str r0, [sp, #8] + ldr r0, _022142F8 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r4, r0] + add r2, r6, #0 + add r0, r0, r5 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _022142F8 ; =0x00002070 + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022142EC: .word 0x00001FA8 +_022142F0: .word 0x00001FAC +_022142F4: .word 0x000F0E00 +_022142F8: .word 0x00002070 + + thumb_func_start MOD09_022142FC +MOD09_022142FC: ; 0x022142FC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r5] + ldr r0, _02214394 ; =0x00002070 + ldr r1, [r1, #0xc] + ldr r4, [r5, r0] + mov r0, #0x10 + str r3, [sp, #0x14] + lsl r6, r2, #4 + bl FUN_020219F4 + add r7, r0, #0 + ldr r0, _02214398 ; =0x00001FA8 + ldr r1, [sp, #0x14] + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x18] + ldr r0, _0221439C ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200AD5C + ldr r0, _0221439C ; =0x00001FAC + ldr r2, [sp, #0x18] + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_0200B7B8 + add r0, sp, #0x20 + ldrh r0, [r0, #0x10] + cmp r0, #2 + bne _02214360 + add r0, r4, r6 + bl FUN_0201AB0C + add r5, r0, #0 + add r0, sp, #0x20 + ldrh r0, [r0, #0x10] + add r1, r7, #0 + mov r2, #0 + bl FUN_02002E14 + lsl r1, r5, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + b _02214362 +_02214360: + mov r3, #0 +_02214362: + add r1, sp, #0x20 + ldrh r0, [r1, #0x14] + add r2, r7, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x38] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrh r1, [r1, #0x10] + add r0, r4, r6 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214394: .word 0x00002070 +_02214398: .word 0x00001FA8 +_0221439C: .word 0x00001FAC + + thumb_func_start MOD09_022143A0 +MOD09_022143A0: ; 0x022143A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _022143EC ; =0x00001FA8 + str r2, [sp, #0x10] + add r5, r1, #0 + ldr r0, [r4, r0] + add r6, r3, #0 + mov r1, #0xe + bl FUN_0200A914 + add r7, r0, #0 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022143F0 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _022143F4 ; =0x00002070 + lsl r5, r5, #4 + ldr r0, [r4, r0] + ldr r3, [sp, #0x10] + add r0, r0, r5 + add r2, r7, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, _022143F4 ; =0x00002070 + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022143EC: .word 0x00001FA8 +_022143F0: .word 0x000F0E00 +_022143F4: .word 0x00002070 + + thumb_func_start MOD09_022143F8 +MOD09_022143F8: ; 0x022143F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _02214450 ; =0x00002050 + add r5, r1, #0 + mov r1, #1 + add r0, r4, r0 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, _02214450 ; =0x00002050 + mov r1, #0xf + add r0, r4, r0 + bl FUN_02019620 + ldr r0, _02214454 ; =0x00001FA8 + add r1, r5, #0 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214458 ; =0x00010200 + mov r1, #1 + str r0, [sp, #8] + ldr r0, _02214450 ; =0x00002050 + add r2, r5, #0 + add r0, r4, r0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + ldr r0, _02214450 ; =0x00002050 + add r0, r4, r0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02214450: .word 0x00002050 +_02214454: .word 0x00001FA8 +_02214458: .word 0x00010200 + + thumb_func_start MOD09_0221445C +MOD09_0221445C: ; 0x0221445C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r3, _022144B8 ; =0x00002070 + lsl r4, r1, #4 + ldr r5, [r0, r3] + sub r3, #0xc8 + ldr r0, [r0, r3] + add r1, r2, #0 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #2 + add r1, r7, #0 + mov r2, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r5, r4 + bl FUN_0201AB0C + add r3, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022144BC ; =0x00070809 + lsl r3, r3, #3 + str r0, [sp, #8] + mov r0, #0 + sub r3, r3, r6 + str r0, [sp, #0xc] + add r0, r5, r4 + mov r1, #2 + add r2, r7, #0 + lsr r3, r3, #1 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022144B8: .word 0x00002070 +_022144BC: .word 0x00070809 + + thumb_func_start MOD09_022144C0 +MOD09_022144C0: ; 0x022144C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0x50 + mul r0, r1 + add r2, r5, #4 + add r4, r2, r0 + ldr r1, _0221467C ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r5, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [r5, r1] + mov r1, #0x17 + bl FUN_0200A914 + mov r1, #0 + add r7, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r2, _02214680 ; =0x000F0E00 + add r0, #0x31 + str r2, [sp, #8] + ldr r2, _02214684 ; =0x00002070 + str r1, [sp, #0xc] + ldr r2, [r5, r2] + add r3, r1, #0 + add r0, r2, r0 + add r2, r7, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, _02214688 ; =0x00001FA8 + mov r1, #0x18 + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x18] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + str r0, [sp, #0x1c] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrb r2, [r4, #0x16] + ldr r0, _0221468C ; =0x00001FAC + mov r3, #3 + lsl r2, r2, #0x19 + ldr r0, [r5, r0] + lsr r2, r2, #0x19 + bl FUN_0200AD38 + ldr r0, _0221468C ; =0x00001FAC + ldr r1, [sp, #0x1c] + ldr r0, [r5, r0] + ldr r2, [sp, #0x18] + bl FUN_0200B7B8 + mov r1, #0 + add r0, r6, #0 + add r0, #0xb + lsl r7, r0, #4 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214680 ; =0x000F0E00 + ldr r2, [sp, #0x1c] + str r0, [sp, #8] + ldr r0, _02214684 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r1, #0 + add r0, r0, r7 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, _02214688 ; =0x00001FA8 + mov r1, #0x19 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0 + str r0, [sp, #0x20] + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r2, _02214680 ; =0x000F0E00 + add r0, #0x41 + str r2, [sp, #8] + ldr r2, _02214684 ; =0x00002070 + str r1, [sp, #0xc] + ldr r2, [r5, r2] + add r3, r1, #0 + add r0, r2, r0 + ldr r2, [sp, #0x20] + bl FUN_0201BDE0 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + ldr r0, _02214688 ; =0x00001FA8 + mov r1, #0x1a + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x14] + ldr r1, [r1, #0xc] + mov r0, #0xe + bl FUN_020219F4 + str r0, [sp, #0x10] + ldrb r0, [r4, #0x16] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + cmp r0, #0x64 + bhs _022145E0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221468C ; =0x00001FAC + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x1c] + ldr r0, [r5, r0] + sub r2, r2, r3 + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + b _022145F4 +_022145E0: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221468C ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + mov r3, #6 + bl FUN_0200AD38 +_022145F4: + ldr r0, _0221468C ; =0x00001FAC + ldr r1, [sp, #0x10] + ldr r0, [r5, r0] + ldr r2, [sp, #0x14] + bl FUN_0200B7B8 + ldr r0, _02214684 ; =0x00002070 + add r6, #0xc + ldr r0, [r5, r0] + lsl r4, r6, #4 + add r0, r0, r4 + bl FUN_0201AB0C + add r6, r0, #0 + mov r0, #0 + ldr r1, [sp, #0x10] + add r2, r0, #0 + bl FUN_02002E14 + lsl r1, r6, #3 + sub r0, r1, r0 + lsl r0, r0, #0x10 + mov r1, #0 + lsr r3, r0, #0x10 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214690 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + ldr r0, _02214684 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + ldr r0, _02214684 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #0x13 + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02214684 ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r7 + bl FUN_02019220 + ldr r0, _02214684 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #5 + lsl r0, r0, #6 + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02214684 ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221467C: .word 0x00002075 +_02214680: .word 0x000F0E00 +_02214684: .word 0x00002070 +_02214688: .word 0x00001FA8 +_0221468C: .word 0x00001FAC +_02214690: .word 0x00010200 + + thumb_func_start MOD09_02214694 +MOD09_02214694: ; 0x02214694 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r5, r0, #0 + ldr r1, _02214778 ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r5, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r1] + mov r1, #0x20 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221477C ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _02214780 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r1, #0 + add r0, #0xe0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214784 ; =0x00001FA8 + mov r1, #0x21 + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x10] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + mov r2, #0x50 + add r6, r0, #0 + mul r2, r7 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214788 ; =0x00001FAC + add r2, r5, r2 + ldrh r2, [r2, #0xa] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214788 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r4, #5 + lsl r4, r0, #4 + ldr r0, _02214780 ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsl r0, r0, #0x18 + mov r1, #0 + lsr r3, r0, #0x18 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221478C ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _02214780 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214780 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0xe0 + bl FUN_02019220 + ldr r0, _02214780 ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02214778: .word 0x00002075 +_0221477C: .word 0x000F0E00 +_02214780: .word 0x00002070 +_02214784: .word 0x00001FA8 +_02214788: .word 0x00001FAC +_0221478C: .word 0x00010200 + + thumb_func_start MOD09_02214790 +MOD09_02214790: ; 0x02214790 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r5, r0, #0 + ldr r1, _02214874 ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r5, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r1] + mov r1, #0x22 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214878 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _0221487C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r1, #0 + add r0, #0xf0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214880 ; =0x00001FA8 + mov r1, #0x23 + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x10] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + mov r2, #0x50 + add r6, r0, #0 + mul r2, r7 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214884 ; =0x00001FAC + add r2, r5, r2 + ldrh r2, [r2, #0xc] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214884 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r4, #6 + lsl r4, r0, #4 + ldr r0, _0221487C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsl r0, r0, #0x18 + mov r1, #0 + lsr r3, r0, #0x18 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214888 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _0221487C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _0221487C ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0xf0 + bl FUN_02019220 + ldr r0, _0221487C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02214874: .word 0x00002075 +_02214878: .word 0x000F0E00 +_0221487C: .word 0x00002070 +_02214880: .word 0x00001FA8 +_02214884: .word 0x00001FAC +_02214888: .word 0x00010200 + + thumb_func_start MOD09_0221488C +MOD09_0221488C: ; 0x0221488C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r5, r0, #0 + ldr r1, _02214974 ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r5, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r1] + mov r1, #0x28 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02214978 ; =0x000F0E00 + add r2, r2, #1 + str r0, [sp, #8] + ldr r0, _0221497C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r1, #0 + add r0, r0, r2 + add r2, r6, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214980 ; =0x00001FA8 + mov r1, #0x29 + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x10] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + mov r2, #0x50 + add r6, r0, #0 + mul r2, r7 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214984 ; =0x00001FAC + add r2, r5, r2 + ldrh r2, [r2, #0xe] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214984 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r4, #7 + lsl r4, r0, #4 + ldr r0, _0221497C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsl r0, r0, #0x18 + mov r1, #0 + lsr r3, r0, #0x18 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214988 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _0221497C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _0221497C ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #1 + lsl r0, r0, #8 + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _0221497C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214974: .word 0x00002075 +_02214978: .word 0x000F0E00 +_0221497C: .word 0x00002070 +_02214980: .word 0x00001FA8 +_02214984: .word 0x00001FAC +_02214988: .word 0x00010200 + + thumb_func_start MOD09_0221498C +MOD09_0221498C: ; 0x0221498C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r4, r0, #0 + ldr r1, _02214A74 ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r4, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [r4, r1] + mov r1, #0x24 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r2, _02214A78 ; =0x000F0E00 + add r0, #0x11 + str r2, [sp, #8] + ldr r2, _02214A7C ; =0x00002070 + str r1, [sp, #0xc] + ldr r2, [r4, r2] + add r3, r1, #0 + add r0, r2, r0 + add r2, r6, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214A80 ; =0x00001FA8 + mov r1, #0x25 + ldr r0, [r4, r0] + bl FUN_0200A914 + ldr r1, [r4] + str r0, [sp, #0x10] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + mov r2, #0x50 + add r6, r0, #0 + mul r2, r7 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214A84 ; =0x00001FAC + add r2, r4, r2 + ldrh r2, [r2, #0x10] + ldr r0, [r4, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214A84 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r4, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, _02214A7C ; =0x00002070 + add r5, #8 + ldr r0, [r4, r0] + lsl r5, r5, #4 + add r0, r0, r5 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsl r0, r0, #0x18 + mov r1, #0 + lsr r3, r0, #0x18 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214A88 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _02214A7C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214A7C ; =0x00002070 + ldr r1, [r4, r0] + mov r0, #0x11 + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02214A7C ; =0x00002070 + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214A74: .word 0x00002075 +_02214A78: .word 0x000F0E00 +_02214A7C: .word 0x00002070 +_02214A80: .word 0x00001FA8 +_02214A84: .word 0x00001FAC +_02214A88: .word 0x00010200 + + thumb_func_start MOD09_02214A8C +MOD09_02214A8C: ; 0x02214A8C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r4, r0, #0 + ldr r1, _02214B74 ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r4, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [r4, r1] + mov r1, #0x26 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r2, _02214B78 ; =0x000F0E00 + add r0, #0x21 + str r2, [sp, #8] + ldr r2, _02214B7C ; =0x00002070 + str r1, [sp, #0xc] + ldr r2, [r4, r2] + add r3, r1, #0 + add r0, r2, r0 + add r2, r6, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214B80 ; =0x00001FA8 + mov r1, #0x27 + ldr r0, [r4, r0] + bl FUN_0200A914 + ldr r1, [r4] + str r0, [sp, #0x10] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + mov r2, #0x50 + add r6, r0, #0 + mul r2, r7 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214B84 ; =0x00001FAC + add r2, r4, r2 + ldrh r2, [r2, #0x12] + ldr r0, [r4, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214B84 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r4, r0] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, _02214B7C ; =0x00002070 + add r5, #9 + ldr r0, [r4, r0] + lsl r5, r5, #4 + add r0, r0, r5 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsl r0, r0, #0x18 + mov r1, #0 + lsr r3, r0, #0x18 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214B88 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _02214B7C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214B7C ; =0x00002070 + ldr r1, [r4, r0] + mov r0, #0x12 + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02214B7C ; =0x00002070 + ldr r0, [r4, r0] + add r0, r0, r5 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214B74: .word 0x00002075 +_02214B78: .word 0x000F0E00 +_02214B7C: .word 0x00002070 +_02214B80: .word 0x00001FA8 +_02214B84: .word 0x00001FAC +_02214B88: .word 0x00010200 + + thumb_func_start MOD09_02214B8C +MOD09_02214B8C: ; 0x02214B8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #0x50 + mul r0, r1 + add r2, r5, #4 + add r7, r2, r0 + ldr r1, _02214D0C ; =0x00002075 + mov r0, #0x16 + ldrb r2, [r5, r1] + sub r1, #0xcd + mul r0, r2 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r1] + mov r1, #0x1c + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214D10 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _02214D14 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r1, #0 + add r0, #0xd0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _02214D18 ; =0x00001FA8 + mov r1, #0x1f + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] + mov r0, #0 + ldr r1, [sp, #0x10] + add r2, r0, #0 + bl FUN_02002E14 + str r0, [sp, #0x14] + ldr r0, _02214D14 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_0201AB0C + lsl r1, r0, #3 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + sub r0, r1, r0 + lsl r0, r0, #0xf + lsr r6, r0, #0x10 + add r0, r4, #4 + mov r1, #0 + lsl r4, r0, #4 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214D1C ; =0x00010200 + add r3, r6, #0 + str r0, [sp, #8] + ldr r0, _02214D14 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + ldr r0, _02214D18 ; =0x00001FA8 + mov r1, #0x1d + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x18] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + str r0, [sp, #0x1c] + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214D20 ; =0x00001FAC + ldrh r2, [r7, #0x10] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214D20 ; =0x00001FAC + ldr r1, [sp, #0x1c] + ldr r0, [r5, r0] + ldr r2, [sp, #0x18] + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [sp, #0x1c] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214D1C ; =0x00010200 + ldr r2, [sp, #0x1c] + str r0, [sp, #8] + ldr r0, _02214D14 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + sub r3, r6, r3 + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, _02214D18 ; =0x00001FA8 + mov r1, #0x1e + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x20] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + str r0, [sp, #0x24] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214D20 ; =0x00001FAC + ldrh r2, [r7, #0x12] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214D20 ; =0x00001FAC + ldr r1, [sp, #0x24] + ldr r0, [r5, r0] + ldr r2, [sp, #0x20] + bl FUN_0200B7B8 + mov r1, #0 + ldr r3, [sp, #0x14] + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214D1C ; =0x00010200 + ldr r2, [sp, #0x24] + str r0, [sp, #8] + ldr r0, _02214D14 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r6, r3 + add r0, r0, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + ldr r0, [sp, #0x24] + bl FUN_02021A20 + ldr r0, _02214D14 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0xd0 + bl FUN_02019220 + ldr r0, _02214D14 ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02214D0C: .word 0x00002075 +_02214D10: .word 0x000F0E00 +_02214D14: .word 0x00002070 +_02214D18: .word 0x00001FA8 +_02214D1C: .word 0x00010200 +_02214D20: .word 0x00001FAC + + thumb_func_start MOD09_02214D24 +MOD09_02214D24: ; 0x02214D24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _02214D90 ; =0x00002075 + add r6, r1, #0 + ldrb r1, [r5, r0] + ldr r3, [r5] + mov r0, #0x16 + add r4, r1, #0 + mul r4, r0 + ldr r2, _02214D94 ; =0x0000022A + ldr r3, [r3, #0xc] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + mov r1, #0x50 + mul r1, r6 + add r1, r5, r1 + ldrh r1, [r1, #0x1c] + add r7, r0, #0 + bl FUN_0200A914 + add r6, r0, #0 + mov r1, #0 + add r0, r4, #2 + lsl r4, r0, #4 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214D98 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + ldr r0, _02214D9C ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r3, r1, #0 + add r0, r0, r4 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r0, _02214D9C ; =0x00002070 + ldr r0, [r5, r0] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214D90: .word 0x00002075 +_02214D94: .word 0x0000022A +_02214D98: .word 0x00010200 +_02214D9C: .word 0x00002070 + + thumb_func_start MOD09_02214DA0 +MOD09_02214DA0: ; 0x02214DA0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r2, _02214DE0 ; =0x00002070 + lsl r4, r1, #4 + ldr r5, [r0, r2] + sub r2, #0xc8 + ldr r0, [r0, r2] + mov r1, #0x33 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214DE4 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02214DE0: .word 0x00002070 +_02214DE4: .word 0x000F0E00 + + thumb_func_start MOD09_02214DE8 +MOD09_02214DE8: ; 0x02214DE8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r2, [sp, #0x10] + add r5, r0, #0 + ldr r2, _02214EC4 ; =0x00002070 + ldr r0, [sp, #0x10] + lsl r6, r1, #4 + ldr r4, [r5, r2] + cmp r0, #0 + bne _02214E42 + sub r2, #0xc8 + ldr r0, [r5, r2] + mov r1, #0x32 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, r6 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r5 + lsl r0, r0, #0x10 + mov r1, #0 + lsr r3, r0, #0x10 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214EC8 ; =0x00010200 + add r2, r7, #0 + str r0, [sp, #8] + add r0, r4, r6 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + b _02214EB8 +_02214E42: + sub r2, #0xc8 + ldr r0, [r5, r2] + mov r1, #0x34 + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x14] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + add r7, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214ECC ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214ECC ; =0x00001FAC + ldr r2, [sp, #0x14] + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, r6 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r5 + lsl r0, r0, #0x10 + mov r1, #0 + lsr r3, r0, #0x10 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214EC8 ; =0x00010200 + add r2, r7, #0 + str r0, [sp, #8] + add r0, r4, r6 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 +_02214EB8: + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214EC4: .word 0x00002070 +_02214EC8: .word 0x00010200 +_02214ECC: .word 0x00001FAC + + thumb_func_start MOD09_02214ED0 +MOD09_02214ED0: ; 0x02214ED0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r2, _02214F10 ; =0x00002070 + lsl r4, r1, #4 + ldr r5, [r0, r2] + sub r2, #0xc8 + ldr r0, [r0, r2] + mov r1, #0x30 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214F14 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02214F10: .word 0x00002070 +_02214F14: .word 0x000F0E00 + + thumb_func_start MOD09_02214F18 +MOD09_02214F18: ; 0x02214F18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r2, [sp, #0x10] + add r5, r0, #0 + ldr r2, _02214FF4 ; =0x00002070 + ldr r0, [sp, #0x10] + lsl r6, r1, #4 + ldr r4, [r5, r2] + cmp r0, #1 + bhi _02214F72 + sub r2, #0xc8 + ldr r0, [r5, r2] + mov r1, #0x32 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, r6 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r5 + lsl r0, r0, #0x10 + mov r1, #0 + lsr r3, r0, #0x10 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214FF8 ; =0x00010200 + add r2, r7, #0 + str r0, [sp, #8] + add r0, r4, r6 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + b _02214FE8 +_02214F72: + sub r2, #0xc8 + ldr r0, [r5, r2] + mov r1, #0x31 + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x14] + ldr r1, [r1, #0xc] + mov r0, #8 + bl FUN_020219F4 + mov r1, #0 + add r7, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02214FFC ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _02214FFC ; =0x00001FAC + ldr r2, [sp, #0x14] + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, r6 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r5 + lsl r0, r0, #0x10 + mov r1, #0 + lsr r3, r0, #0x10 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02214FF8 ; =0x00010200 + add r2, r7, #0 + str r0, [sp, #8] + add r0, r4, r6 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 +_02214FE8: + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214FF4: .word 0x00002070 +_02214FF8: .word 0x00010200 +_02214FFC: .word 0x00001FAC + + thumb_func_start MOD09_02215000 +MOD09_02215000: ; 0x02215000 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r3, r0, #0 + ldr r0, _02215054 ; =0x00002070 + add r6, r2, #0 + ldr r5, [r3, r0] + ldr r3, [r3] + lsl r4, r1, #4 + ldr r2, _02215058 ; =0x0000024B + ldr r3, [r3, #0xc] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + add r1, r6, #0 + add r7, r0, #0 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221505C ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02215054: .word 0x00002070 +_02215058: .word 0x0000024B +_0221505C: .word 0x00010200 + + thumb_func_start MOD09_02215060 +MOD09_02215060: ; 0x02215060 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, _022150C0 ; =0x00002070 + lsl r4, r1, #4 + ldr r5, [r6, r0] + add r0, r2, #0 + mov r1, #0xa + bl FUN_0206AB18 + bl FUN_0208315C + ldr r3, [r6] + add r7, r0, #0 + ldr r3, [r3, #0xc] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc5 + bl FUN_0200A86C + add r1, r7, #0 + str r0, [sp, #0x10] + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022150C4 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r5, r4 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022150C0: .word 0x00002070 +_022150C4: .word 0x00010200 + + thumb_func_start MOD09_022150C8 +MOD09_022150C8: ; 0x022150C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r2, _02215124 ; =0x00002070 + lsl r4, r1, #4 + ldr r5, [r0, r2] + sub r2, #0xc8 + ldr r0, [r0, r2] + mov r1, #0x35 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, r4 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r1, r0, r6 + lsr r0, r1, #0x1f + add r0, r1, r0 + lsl r0, r0, #0xf + mov r1, #0 + lsr r3, r0, #0x10 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02215128 ; =0x000F0E00 + add r2, r7, #0 + str r0, [sp, #8] + add r0, r5, r4 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02215124: .word 0x00002070 +_02215128: .word 0x000F0E00 + + thumb_func_start MOD09_0221512C +MOD09_0221512C: ; 0x0221512C + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r3, _022151A0 ; =0x00002070 + lsl r4, r1, #4 + ldr r5, [r0, r3] + cmp r2, #0 + beq _02215144 + cmp r2, #1 + beq _02215152 + cmp r2, #2 + beq _02215160 + b _0221516C +_02215144: + sub r3, #0xc8 + ldr r0, [r0, r3] + mov r1, #0x36 + bl FUN_0200A914 + add r6, r0, #0 + b _0221516C +_02215152: + sub r3, #0xc8 + ldr r0, [r0, r3] + mov r1, #0x38 + bl FUN_0200A914 + add r6, r0, #0 + b _0221516C +_02215160: + sub r3, #0xc8 + ldr r0, [r0, r3] + mov r1, #0x37 + bl FUN_0200A914 + add r6, r0, #0 +_0221516C: + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + mov r3, #0x38 + bl FUN_02002F40 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022151A4 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r5, r4 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_022151A0: .word 0x00002070 +_022151A4: .word 0x00010200 + + thumb_func_start MOD09_022151A8 +MOD09_022151A8: ; 0x022151A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, _022152CC ; =0x00002070 + lsl r6, r1, #4 + ldr r4, [r5, r0] + sub r0, #0xc8 + ldr r0, [r5, r0] + mov r1, #0x2e + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_0200A914 + str r0, [sp, #0x18] + mov r0, #0 + ldr r1, [sp, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + str r0, [sp, #0x1c] + add r0, r4, r6 + bl FUN_0201AB0C + lsl r1, r0, #3 + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x18] + sub r0, r1, r0 + lsr r7, r0, #1 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022152D0 ; =0x000F0E00 + add r3, r7, #0 + str r0, [sp, #8] + add r0, r4, r6 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, _022152D4 ; =0x00001FA8 + mov r1, #0x2c + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x20] + ldr r1, [r1, #0xc] + mov r0, #6 + bl FUN_020219F4 + mov r1, #0 + str r0, [sp, #0x24] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022152D8 ; =0x00001FAC + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _022152D8 ; =0x00001FAC + ldr r1, [sp, #0x24] + ldr r0, [r5, r0] + ldr r2, [sp, #0x20] + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [sp, #0x24] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022152D0 ; =0x000F0E00 + ldr r2, [sp, #0x24] + str r0, [sp, #8] + add r0, r4, r6 + sub r3, r7, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + ldr r0, [sp, #0x24] + bl FUN_02021A20 + ldr r0, _022152D4 ; =0x00001FA8 + mov r1, #0x2d + ldr r0, [r5, r0] + bl FUN_0200A914 + ldr r1, [r5] + str r0, [sp, #0x28] + ldr r1, [r1, #0xc] + mov r0, #6 + bl FUN_020219F4 + mov r1, #0 + str r0, [sp, #0x2c] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _022152D8 ; =0x00001FAC + ldr r2, [sp, #0x14] + ldr r0, [r5, r0] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, _022152D8 ; =0x00001FAC + ldr r1, [sp, #0x2c] + ldr r0, [r5, r0] + ldr r2, [sp, #0x28] + bl FUN_0200B7B8 + mov r1, #0 + ldr r3, [sp, #0x1c] + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022152D0 ; =0x000F0E00 + ldr r2, [sp, #0x2c] + str r0, [sp, #8] + add r0, r4, r6 + add r3, r7, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022152CC: .word 0x00002070 +_022152D0: .word 0x000F0E00 +_022152D4: .word 0x00001FA8 +_022152D8: .word 0x00001FAC + + thumb_func_start MOD09_022152DC +MOD09_022152DC: ; 0x022152DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + lsl r4, r1, #4 + ldr r1, [r0] + ldr r2, _02215344 ; =0x00002070 + add r1, #0x34 + ldrb r1, [r1] + ldr r5, [r0, r2] + cmp r1, #4 + bne _022152FC + sub r2, #0xc8 + ldr r0, [r0, r2] + mov r1, #0x3b + bl FUN_0200A914 + b _02215306 +_022152FC: + sub r2, #0xc8 + ldr r0, [r0, r2] + mov r1, #0x3a + bl FUN_0200A914 +_02215306: + add r6, r0, #0 + mov r0, #2 + add r1, r6, #0 + mov r2, #0 + bl FUN_02002E14 + add r7, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02215348 ; =0x00070809 + mov r3, #0x60 + str r0, [sp, #8] + mov r0, #0 + sub r3, r3, r7 + str r0, [sp, #0xc] + add r0, r5, r4 + mov r1, #2 + add r2, r6, #0 + lsr r3, r3, #1 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02215344: .word 0x00002070 +_02215348: .word 0x00070809 + + thumb_func_start MOD09_0221534C +MOD09_0221534C: ; 0x0221534C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _022153A4 ; =0x0000207A + ldrb r1, [r4, r0] + cmp r1, #7 + bne _02215362 + sub r0, #0xa + ldr r5, [r4, r0] + add r5, #0x80 + b _02215368 +_02215362: + sub r0, #0xa + ldr r5, [r4, r0] + add r5, #0x50 +_02215368: + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _022153A8 ; =0x00001FA8 + mov r1, #0x3c + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022153AC ; =0x00010200 + add r2, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022153A4: .word 0x0000207A +_022153A8: .word 0x00001FA8 +_022153AC: .word 0x00010200 + + thumb_func_start MOD09_022153B0 +MOD09_022153B0: ; 0x022153B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r5] + ldr r0, _022154EC ; =0x00002070 + ldr r1, [r1, #0xc] + ldr r4, [r5, r0] + mov r0, #6 + lsl r6, r2, #4 + bl FUN_020219F4 + add r7, r0, #0 + ldr r0, _022154F0 ; =0x00001FA8 + mov r1, #0x2b + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x14] + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022154F4 ; =0x000F0E00 + ldr r2, [sp, #0x14] + str r0, [sp, #8] + mov r1, #0 + add r0, r4, r6 + mov r3, #0x28 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + ldr r0, _022154F0 ; =0x00001FA8 + mov r1, #0x2e + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x18] + mov r0, #0 + ldr r1, [sp, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + str r0, [sp, #0x1c] + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022154F4 ; =0x000F0E00 + ldr r2, [sp, #0x18] + str r0, [sp, #8] + mov r1, #0 + add r0, r4, r6 + mov r3, #0x50 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, _022154F0 ; =0x00001FA8 + mov r1, #0x2d + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0 + str r0, [sp, #0x20] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + ldr r0, _022154F8 ; =0x00001FAC + ldrb r2, [r2, #3] + ldr r0, [r5, r0] + mov r3, #2 + bl FUN_0200AD38 + ldr r0, _022154F8 ; =0x00001FAC + ldr r2, [sp, #0x20] + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_0200B7B8 + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022154F4 ; =0x000F0E00 + ldr r3, [sp, #0x1c] + str r0, [sp, #8] + mov r1, #0 + add r3, #0x50 + add r0, r4, r6 + add r2, r7, #0 + str r1, [sp, #0xc] + str r3, [sp, #0x1c] + bl FUN_0201BDE0 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + ldr r0, _022154F0 ; =0x00001FA8 + mov r1, #0x2c + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0 + str r0, [sp, #0x24] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + ldr r0, _022154F8 ; =0x00001FAC + ldrb r2, [r2, #2] + ldr r0, [r5, r0] + mov r3, #2 + bl FUN_0200AD38 + ldr r0, _022154F8 ; =0x00001FAC + ldr r2, [sp, #0x24] + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r5, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022154F4 ; =0x000F0E00 + mov r3, #0x50 + str r0, [sp, #8] + mov r1, #0 + add r0, r4, r6 + add r2, r7, #0 + sub r3, r3, r5 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x24] + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022154EC: .word 0x00002070 +_022154F0: .word 0x00001FA8 +_022154F4: .word 0x000F0E00 +_022154F8: .word 0x00001FAC + + thumb_func_start MOD09_022154FC +MOD09_022154FC: ; 0x022154FC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r5] + ldr r0, _022155C0 ; =0x00002070 + ldr r1, [r1, #0xc] + ldr r4, [r5, r0] + mov r0, #6 + lsl r6, r2, #4 + bl FUN_020219F4 + str r0, [sp, #0x14] + ldr r0, _022155C4 ; =0x00001FA8 + mov r1, #0x2b + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x18] + mov r0, #0 + ldr r1, [sp, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + add r7, r0, #0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + add r7, #0x28 + mov r0, #0x50 + sub r0, r0, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x10 + lsl r2, r7, #0x10 + str r0, [sp, #4] + add r0, r4, r6 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #0x18 + bl FUN_020196F4 + ldr r0, _022155C4 ; =0x00001FA8 + mov r1, #0x2c + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0 + add r7, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + ldr r0, _022155C8 ; =0x00001FAC + ldrb r2, [r2, #2] + ldr r0, [r5, r0] + mov r3, #2 + bl FUN_0200AD38 + ldr r0, _022155C8 ; =0x00001FAC + ldr r1, [sp, #0x14] + ldr r0, [r5, r0] + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [sp, #0x14] + add r2, r0, #0 + bl FUN_02002E14 + add r5, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022155CC ; =0x000F0E00 + mov r3, #0x50 + str r0, [sp, #8] + mov r1, #0 + ldr r2, [sp, #0x14] + add r0, r4, r6 + sub r3, r3, r5 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022155C0: .word 0x00002070 +_022155C4: .word 0x00001FA8 +_022155C8: .word 0x00001FAC +_022155CC: .word 0x000F0E00 + + thumb_func_start MOD09_022155D0 +MOD09_022155D0: ; 0x022155D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5] + mov r4, #0 + ldr r0, [r0] + bl FUN_0206B9AC + cmp r0, #0 + ble _02215656 + add r0, r4, #0 + add r7, r5, #0 + str r0, [sp, #8] + add r6, r5, #0 + add r7, #0x1b +_022155EE: + ldr r0, _02215678 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #8] + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldrh r0, [r6, #8] + cmp r0, #0 + beq _0221563E + mov r0, #0x20 + str r0, [sp] + mov r0, #8 + lsl r3, r4, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + lsr r3, r3, #0x10 + bl MOD09_02213E84 + ldrb r0, [r7] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _0221562A + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD09_0221567C +_0221562A: + ldr r0, [r6, #4] + bl FUN_0207C2D4 + cmp r0, #7 + bne _0221563E + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD09_022156DC +_0221563E: + ldr r0, [sp, #8] + add r6, #0x50 + add r0, #0x10 + str r0, [sp, #8] + ldr r0, [r5] + add r7, #0x50 + ldr r0, [r0] + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _022155EE +_02215656: + ldr r0, [r5] + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #2 + bne _0221566C + add r0, r5, #0 + mov r1, #7 + bl MOD09_022143F8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0221566C: + add r0, r5, #0 + mov r1, #6 + bl MOD09_022143F8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02215678: .word 0x00002070 + + thumb_func_start MOD09_0221567C +MOD09_0221567C: ; 0x0221567C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r0, #8 + add r6, r1, #0 + str r0, [sp, #4] + ldr r0, _022156D8 ; =0x00002070 + lsl r4, r6, #4 + ldr r0, [r5, r0] + mov r1, #0 + add r0, r0, r4 + mov r2, #0x38 + mov r3, #0x20 + bl FUN_020196F4 + mov r2, #0x40 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, _022156D8 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + mov r3, #0x18 + add r0, r0, r4 + bl FUN_020196F4 + mov r0, #0x20 + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + add r2, r6, #0 + mov r3, #0x38 + bl MOD09_02214080 + mov r0, #0x18 + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + add r2, r6, #0 + mov r3, #0x40 + bl MOD09_02214100 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_022156D8: .word 0x00002070 + + thumb_func_start MOD09_022156DC +MOD09_022156DC: ; 0x022156DC + push {r3, lr} + mov r2, #0x50 + mul r2, r1 + add r2, r0, r2 + ldrb r2, [r2, #0x1b] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1f + bne _022156F8 + mov r2, #0x20 + str r2, [sp] + add r2, r1, #0 + mov r3, #0 + bl MOD09_02214038 +_022156F8: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD09_022156FC +MOD09_022156FC: ; 0x022156FC + push {r4, lr} + add r4, r0, #0 + ldr r0, _02215780 ; =0x00002070 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_02019620 + ldr r0, _02215780 ; =0x00002070 + mov r1, #0 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019620 + ldr r0, _02215780 ; =0x00002070 + mov r1, #0 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019620 + ldr r0, _02215780 ; =0x00002070 + mov r1, #0 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019620 + ldr r1, [r4] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + bl MOD09_02215784 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xf + bl MOD09_0221445C + ldr r0, [r4] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r0, r4, r0 + ldrb r0, [r0, #0x1b] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _0221576A + add r0, r4, #0 + mov r1, #2 + mov r2, #0x12 + bl MOD09_0221445C + add r0, r4, #0 + mov r1, #3 + mov r2, #0x13 + bl MOD09_0221445C + pop {r4, pc} +_0221576A: + ldr r0, _02215780 ; =0x00002070 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019220 + ldr r0, _02215780 ; =0x00002070 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019220 + pop {r4, pc} + .align 2, 0 +_02215780: .word 0x00002070 + + thumb_func_start MOD09_02215784 +MOD09_02215784: ; 0x02215784 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, _022158D0 ; =0x00002070 + add r6, r1, #0 + ldr r0, [r4, r0] + ldr r1, [r4] + str r0, [sp, #0x18] + mov r0, #0x50 + add r7, r6, #0 + add r5, r4, #4 + mul r7, r0 + add r0, r5, r7 + str r0, [sp, #0x14] + ldr r1, [r1, #0xc] + mov r0, #0xc + bl FUN_020219F4 + str r0, [sp, #0x10] + ldr r0, _022158D4 ; =0x00001FA8 + ldr r1, _022158D8 ; =0x0221B090 + lsl r2, r6, #2 + ldr r0, [r4, r0] + ldr r1, [r1, r2] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r5, r7] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022158DC ; =0x00001FAC + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_0200ACF8 + ldr r0, _022158DC ; =0x00001FAC + ldr r1, [sp, #0x10] + ldr r0, [r4, r0] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + mov r5, #0 + ldrb r0, [r0, #0x16] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _02215818 + ldr r0, [sp, #0x14] + ldrb r0, [r0, #0x17] + lsl r1, r0, #0x18 + lsr r1, r1, #0x1f + bne _02215818 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + bne _02215808 + ldr r0, _022158D4 ; =0x00001FA8 + mov r1, #0x10 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0 + b _02215818 +_02215808: + cmp r0, #1 + bne _02215818 + ldr r0, _022158D4 ; =0x00001FA8 + mov r1, #0x11 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0 +_02215818: + ldr r1, [sp, #0x10] + mov r0, #2 + mov r2, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r5, #0 + bne _02215830 + mov r7, #0 + add r4, r7, #0 + b _02215840 +_02215830: + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + mov r4, #8 +_02215840: + ldr r0, [sp, #0x18] + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r6 + sub r0, r0, r7 + sub r1, r0, r4 + lsr r0, r1, #0x1f + add r0, r1, r0 + lsl r0, r0, #0x17 + lsr r7, r0, #0x18 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022158E0 ; =0x00070809 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + mov r1, #2 + add r3, r7, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + cmp r5, #0 + beq _022158C6 + ldr r0, [sp, #0x14] + ldrb r0, [r0, #0x17] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + bne _022158A4 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022158E4 ; =0x000A0B00 + add r3, r7, r6 + str r0, [sp, #8] + mov r1, #0 + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r3, r4, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + b _022158C0 +_022158A4: + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022158E8 ; =0x000C0D00 + add r3, r7, r6 + str r0, [sp, #8] + mov r1, #0 + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r3, r4, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_022158C0: + add r0, r5, #0 + bl FUN_02021A20 +_022158C6: + ldr r0, [sp, #0x18] + bl FUN_02019220 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022158D0: .word 0x00002070 +_022158D4: .word 0x00001FA8 +_022158D8: .word 0x0221B090 +_022158DC: .word 0x00001FAC +_022158E0: .word 0x00070809 +_022158E4: .word 0x000A0B00 +_022158E8: .word 0x000C0D00 + + thumb_func_start MOD09_022158EC +MOD09_022158EC: ; 0x022158EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + ldr r0, _02215A1C ; =0x00002075 + mov r1, #6 + ldrb r2, [r5, r0] + sub r0, r0, #5 + mul r1, r2 + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + ldr r1, [r5, r0] + lsl r0, r6, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r6, #1 + lsl r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0x18] + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r6, #2 + lsl r0, r0, #4 + str r0, [sp, #0x14] + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0x14] + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r6, #3 + lsl r0, r0, #4 + str r0, [sp, #0x10] + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0x10] + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r6, #4 + lsl r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0xc] + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215A20 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019620 + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + ldr r3, [r5] + add r0, r5, #0 + ldrb r3, [r3, #0x11] + add r1, r6, #0 + bl MOD09_02213E84 + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0x34 + mov r4, #0 + add r7, r6, #1 + str r0, [sp, #0x1c] +_02215986: + ldr r0, [r5] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #0x1c] + lsl r1, r4, #3 + add r0, r0, r2 + str r1, [sp, #0x20] + ldrh r1, [r0, r1] + str r0, [sp, #0x24] + cmp r1, #0 + beq _022159C8 + mov r0, #2 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, _02215A24 ; =0x00070809 + ldr r3, _02215A28 ; =0x0221B07C + lsl r6, r4, #2 + str r0, [sp, #8] + ldr r3, [r3, r6] + add r0, r5, #0 + add r2, r7, r4 + bl MOD09_022142FC + ldr r2, [sp, #0x20] + ldr r1, [sp, #0x24] + add r0, r5, #0 + add r1, r1, r2 + add r2, r7, r4 + bl MOD09_022153B0 +_022159C8: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #4 + blo _02215986 + add r0, r5, #0 + mov r1, #5 + mov r2, #0x12 + bl MOD09_0221445C + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0x18] + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0x14] + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0x10] + add r0, r1, r0 + bl FUN_02019220 + ldr r0, _02215A20 ; =0x00002070 + ldr r1, [r5, r0] + ldr r0, [sp, #0xc] + add r0, r1, r0 + bl FUN_02019220 + ldr r1, _02215A1C ; =0x00002075 + mov r0, #1 + ldrb r2, [r5, r1] + eor r0, r2 + strb r0, [r5, r1] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02215A1C: .word 0x00002075 +_02215A20: .word 0x00002070 +_02215A24: .word 0x00070809 +_02215A28: .word 0x0221B07C + + thumb_func_start MOD09_02215A2C +MOD09_02215A2C: ; 0x02215A2C + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _02215C3C ; =0x00002075 + mov r1, #0x16 + ldrb r2, [r5, r0] + sub r0, r0, #5 + add r4, r2, #0 + mul r4, r1 + ldr r1, [r5, r0] + mov r0, #0x13 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #5 + lsl r0, r0, #6 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0xe0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0xf0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #1 + lsl r0, r0, #8 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #0x11 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #0x12 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0xd0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + lsl r0, r4, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #0 + add r0, #0xa + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #0 + add r0, #0xb + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #0 + add r0, #0xc + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #5 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #6 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #7 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #0 + add r0, #8 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #0 + add r0, #9 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #4 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #1 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #2 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215C40 ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #3 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + ldr r3, [r5] + add r0, r5, #0 + ldrb r3, [r3, #0x11] + add r1, r4, #0 + bl MOD09_02213E84 + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_02214B8C + mov r3, #0 + str r3, [sp] + ldr r2, [r5] + add r1, r4, #0 + ldrb r2, [r2, #0x11] + add r0, r5, #0 + add r1, #0xa + bl MOD09_02214100 + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_022144C0 + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_02214694 + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_02214790 + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_0221488C + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_0221498C + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_02214A8C + ldr r2, [r5] + add r0, r5, #0 + ldrb r2, [r2, #0x11] + add r1, r4, #1 + bl MOD09_022141D8 + ldr r2, [r5] + add r0, r5, #0 + ldrb r2, [r2, #0x11] + add r1, r4, #3 + bl MOD09_02214260 + ldr r1, [r5] + add r0, r5, #0 + ldrb r1, [r1, #0x11] + bl MOD09_02214D24 + add r0, r5, #0 + mov r1, #0x15 + mov r2, #0x13 + bl MOD09_0221445C + ldr r1, _02215C3C ; =0x00002075 + mov r0, #1 + ldrb r2, [r5, r1] + eor r0, r2 + strb r0, [r5, r1] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02215C3C: .word 0x00002075 +_02215C40: .word 0x00002070 + + thumb_func_start MOD09_02215C44 +MOD09_02215C44: ; 0x02215C44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02215D98 ; =0x00002075 + mov r1, #0xb + ldrb r2, [r5, r0] + sub r0, r0, #5 + ldr r0, [r5, r0] + add r4, r2, #0 + mul r4, r1 + add r0, #0x60 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x70 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x80 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x90 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0xa0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #1 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + ldr r1, [r5, r0] + lsl r0, r4, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #2 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #3 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #5 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02215D9C ; =0x00002070 + ldr r1, [r5, r0] + add r0, r4, #4 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5] + add r2, r5, #0 + ldrb r3, [r0, #0x11] + add r0, #0x34 + ldrb r0, [r0] + mov r1, #0x50 + add r2, #0x34 + mul r1, r3 + add r1, r2, r1 + lsl r0, r0, #3 + add r7, r1, r0 + mov r2, #0 + str r2, [sp] + add r0, r5, #0 + mov r1, #6 + str r2, [sp, #4] + bl MOD09_02213E84 + mov r2, #0 + add r0, r5, #0 + mov r1, #7 + add r3, r2, #0 + bl MOD09_022143A0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02215DA0 ; =0x000F0E00 + add r2, r4, #0 + str r0, [sp, #8] + ldr r3, [r5] + ldrh r1, [r7] + add r3, #0x34 + ldrb r3, [r3] + add r0, r5, #0 + lsl r6, r3, #2 + ldr r3, _02215DA4 ; =0x0221B07C + ldr r3, [r3, r6] + bl MOD09_022142FC + add r0, r5, #0 + mov r1, #8 + bl MOD09_02214DA0 + ldrb r2, [r7, #6] + add r0, r5, #0 + add r1, r4, #2 + bl MOD09_02214DE8 + add r0, r5, #0 + mov r1, #9 + bl MOD09_02214ED0 + ldrb r2, [r7, #7] + add r0, r5, #0 + add r1, r4, #3 + bl MOD09_02214F18 + ldrh r2, [r7] + add r0, r5, #0 + add r1, r4, #4 + bl MOD09_02215000 + add r0, r5, #0 + mov r1, #0xa + bl MOD09_022150C8 + ldrb r2, [r7, #5] + add r0, r5, #0 + add r1, r4, #5 + bl MOD09_0221512C + ldrb r2, [r7, #2] + ldrb r3, [r7, #3] + add r0, r5, #0 + add r1, r4, #1 + bl MOD09_022151A8 + ldr r1, _02215D98 ; =0x00002075 + mov r0, #1 + ldrb r2, [r5, r1] + eor r0, r2 + strb r0, [r5, r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02215D98: .word 0x00002075 +_02215D9C: .word 0x00002070 +_02215DA0: .word 0x000F0E00 +_02215DA4: .word 0x0221B07C + + thumb_func_start MOD09_02215DA8 +MOD09_02215DA8: ; 0x02215DA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, _02215EC4 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_02019620 + ldr r0, _02215EC4 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019620 + ldr r0, _02215EC4 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x20 + bl FUN_02019620 + ldr r0, _02215EC4 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _02215EC4 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019620 + ldr r0, _02215EC4 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r3, [r5] + add r0, r5, #0 + ldrb r3, [r3, #0x11] + add r2, r1, #0 + bl MOD09_02213E84 + add r0, r5, #0 + mov r6, #0 + str r0, [sp, #0x10] + add r0, #0x34 + ldr r7, _02215EC8 ; =0x0221B07C + add r4, r6, #0 + str r0, [sp, #0x10] +_02215E14: + ldr r0, [r5] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #0x10] + add r0, r0, r2 + ldrh r1, [r0, r4] + str r0, [sp, #0xc] + cmp r1, #0 + beq _02215E4C + mov r0, #2 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, _02215ECC ; =0x00070809 + add r2, r6, #1 + str r0, [sp, #8] + ldr r3, [r7] + add r0, r5, #0 + bl MOD09_022142FC + ldr r1, [sp, #0xc] + add r0, r5, #0 + add r1, r1, r4 + add r2, r6, #1 + bl MOD09_022153B0 +_02215E4C: + add r6, r6, #1 + add r4, #8 + add r7, r7, #4 + cmp r6, #4 + blo _02215E14 + mov r0, #2 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, _02215ECC ; =0x00070809 + mov r2, #5 + str r0, [sp, #8] + ldr r1, [r5] + add r0, r5, #0 + ldrh r1, [r1, #0x24] + mov r3, #0x49 + bl MOD09_022142FC + ldr r0, [r5] + mov r1, #5 + ldrh r0, [r0, #0x24] + bl FUN_0206AB18 + add r1, sp, #0x14 + strb r0, [r1, #2] + ldrb r0, [r1, #2] + mov r2, #5 + strb r0, [r1, #3] + add r0, r5, #0 + add r1, sp, #0x14 + bl MOD09_022153B0 + ldr r0, _02215EC4 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019220 + ldr r0, _02215EC4 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x20 + bl FUN_02019220 + ldr r0, _02215EC4 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x30 + bl FUN_02019220 + ldr r0, _02215EC4 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019220 + ldr r0, _02215EC4 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019220 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02215EC4: .word 0x00002070 +_02215EC8: .word 0x0221B07C +_02215ECC: .word 0x00070809 + + thumb_func_start MOD09_02215ED0 +MOD09_02215ED0: ; 0x02215ED0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x20 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x60 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x70 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x90 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0xa0 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x80 + bl FUN_02019620 + ldr r0, _02216090 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0xb0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r3, [r5] + add r0, r5, #0 + ldrb r3, [r3, #0x11] + add r2, r1, #0 + bl MOD09_02213E84 + mov r2, #0 + add r0, r5, #0 + mov r1, #2 + add r3, r2, #0 + bl MOD09_022143A0 + add r0, r5, #0 + mov r1, #4 + bl MOD09_02214DA0 + add r0, r5, #0 + mov r1, #5 + bl MOD09_02214ED0 + add r0, r5, #0 + mov r1, #9 + bl MOD09_022150C8 + ldr r1, [r5] + add r0, r1, #0 + add r0, #0x34 + ldrb r3, [r0] + cmp r3, #4 + bhs _0221600C + ldrb r1, [r1, #0x11] + add r2, r5, #0 + mov r0, #0x50 + add r2, #0x34 + mul r0, r1 + add r7, r2, r0 + lsl r0, r3, #3 + str r0, [sp, #0xc] + add r4, r7, r0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02216094 ; =0x000F0E00 + lsl r6, r3, #2 + str r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r3, _02216098 ; =0x0221B07C + ldrh r1, [r7, r1] + ldr r3, [r3, r6] + add r0, r5, #0 + mov r2, #1 + bl MOD09_022142FC + ldrb r2, [r4, #6] + add r0, r5, #0 + mov r1, #6 + bl MOD09_02214DE8 + ldrb r2, [r4, #7] + add r0, r5, #0 + mov r1, #7 + bl MOD09_02214F18 + ldr r2, [sp, #0xc] + add r0, r5, #0 + ldrh r2, [r7, r2] + mov r1, #8 + bl MOD09_02215000 + ldrb r2, [r4, #5] + add r0, r5, #0 + mov r1, #0xa + bl MOD09_0221512C + ldrb r2, [r4, #2] + ldrb r3, [r4, #3] + add r0, r5, #0 + mov r1, #3 + bl MOD09_022151A8 + b _02216082 +_0221600C: + ldrh r0, [r1, #0x24] + mov r1, #5 + bl FUN_0206AB18 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02216094 ; =0x000F0E00 + mov r2, #1 + str r0, [sp, #8] + ldr r1, [r5] + add r0, r5, #0 + ldrh r1, [r1, #0x24] + mov r3, #0x49 + bl MOD09_022142FC + ldr r2, [r5] + add r0, r5, #0 + ldrh r2, [r2, #0x24] + mov r1, #8 + bl MOD09_02215000 + ldr r0, [r5] + mov r1, #4 + ldrh r0, [r0, #0x24] + bl FUN_0206AB18 + add r2, r0, #0 + add r0, r5, #0 + mov r1, #6 + bl MOD09_02214DE8 + ldr r0, [r5] + mov r1, #2 + ldrh r0, [r0, #0x24] + bl FUN_0206AB18 + add r2, r0, #0 + add r0, r5, #0 + mov r1, #7 + bl MOD09_02214F18 + ldr r0, [r5] + mov r1, #1 + ldrh r0, [r0, #0x24] + bl FUN_0206AB18 + add r2, r0, #0 + add r0, r5, #0 + mov r1, #0xa + bl MOD09_0221512C + add r0, r5, #0 + mov r1, #3 + add r2, r4, #0 + add r3, r4, #0 + bl MOD09_022151A8 +_02216082: + add r0, r5, #0 + mov r1, #0xb + bl MOD09_022152DC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02216090: .word 0x00002070 +_02216094: .word 0x000F0E00 +_02216098: .word 0x0221B07C + + thumb_func_start MOD09_0221609C +MOD09_0221609C: ; 0x0221609C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, _02216184 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_02019620 + ldr r0, _02216184 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019620 + ldr r0, _02216184 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x20 + bl FUN_02019620 + ldr r0, _02216184 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _02216184 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r3, [r5] + add r0, r5, #0 + ldrb r3, [r3, #0x11] + add r2, r1, #0 + bl MOD09_02213E84 + add r0, r5, #0 + mov r6, #0 + str r0, [sp, #0x10] + add r0, #0x34 + ldr r7, _02216188 ; =0x0221B07C + add r4, r6, #0 + str r0, [sp, #0x10] +_022160FC: + ldr r0, [r5] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #0x10] + add r0, r0, r2 + ldrh r1, [r0, r4] + str r0, [sp, #0xc] + cmp r1, #0 + beq _02216134 + mov r0, #2 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, _0221618C ; =0x00070809 + add r2, r6, #1 + str r0, [sp, #8] + ldr r3, [r7] + add r0, r5, #0 + bl MOD09_022142FC + ldr r1, [sp, #0xc] + add r0, r5, #0 + add r1, r1, r4 + add r2, r6, #1 + bl MOD09_022153B0 +_02216134: + add r6, r6, #1 + add r4, #8 + add r7, r7, #4 + cmp r6, #4 + blo _022160FC + ldr r2, [r5] + mov r1, #0x25 + ldrh r0, [r2, #0x22] + ldr r2, [r2, #0xc] + bl FUN_0206E7B8 + cmp r0, #0 + bne _02216156 + add r0, r5, #0 + mov r1, #0x5e + bl MOD09_022143F8 +_02216156: + ldr r0, _02216184 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019220 + ldr r0, _02216184 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x20 + bl FUN_02019220 + ldr r0, _02216184 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x30 + bl FUN_02019220 + ldr r0, _02216184 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02216184: .word 0x00002070 +_02216188: .word 0x0221B07C +_0221618C: .word 0x00070809 + + thumb_func_start MOD09_02216190 +MOD09_02216190: ; 0x02216190 + push {r3, r4, r5, lr} + ldr r4, [r0] + add r3, r1, #0 + ldrb r5, [r4, #0x11] + add r1, r0, #0 + mov r4, #0x50 + add r1, #0x34 + mul r4, r5 + add r4, r1, r4 + lsl r1, r2, #3 + add r1, r4, r1 + add r2, r3, #0 + bl MOD09_022154FC + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD09_022161B0 +MOD09_022161B0: ; 0x022161B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_02019620 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x20 + bl FUN_02019620 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019620 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019620 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019620 + ldr r0, _02216304 ; =0x00002070 + mov r1, #0 + ldr r0, [r5, r0] + add r0, #0x60 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r3, [r5] + add r0, r5, #0 + ldrb r3, [r3, #0x11] + add r2, r1, #0 + bl MOD09_02213E84 + mov r2, #0 + add r0, r5, #0 + mov r1, #2 + add r3, r2, #0 + bl MOD09_022143A0 + ldr r0, _02216308 ; =0x00001FA8 + mov r1, #0x39 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + mov r3, #0x60 + bl FUN_02002F40 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0221630C ; =0x000F0E00 + add r2, r4, #0 + str r0, [sp, #8] + ldr r0, _02216304 ; =0x00002070 + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, _02216304 ; =0x00002070 + ldr r0, [r5, r0] + add r0, #0x40 + bl FUN_02019220 + ldr r1, [r5] + add r0, r1, #0 + add r0, #0x34 + ldrb r3, [r0] + cmp r3, #4 + bhs _022162BE + ldrb r1, [r1, #0x11] + add r2, r5, #0 + mov r0, #0x50 + add r2, #0x34 + mul r0, r1 + add r4, r2, r0 + lsl r7, r3, #3 + add r0, r4, r7 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221630C ; =0x000F0E00 + lsl r6, r3, #2 + str r0, [sp, #8] + ldr r3, _02216310 ; =0x0221B07C + ldrh r1, [r4, r7] + ldr r3, [r3, r6] + add r0, r5, #0 + mov r2, #1 + bl MOD09_022142FC + ldrh r2, [r4, r7] + add r0, r5, #0 + mov r1, #5 + bl MOD09_02215060 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x10] + ldrb r2, [r2, #2] + ldrb r3, [r3, #3] + add r0, r5, #0 + mov r1, #3 + bl MOD09_022151A8 + b _022162F8 +_022162BE: + ldrh r0, [r1, #0x24] + mov r1, #5 + bl FUN_0206AB18 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221630C ; =0x000F0E00 + mov r2, #1 + str r0, [sp, #8] + ldr r1, [r5] + add r0, r5, #0 + ldrh r1, [r1, #0x24] + mov r3, #0x49 + bl MOD09_022142FC + ldr r2, [r5] + add r0, r5, #0 + ldrh r2, [r2, #0x24] + mov r1, #5 + bl MOD09_02215060 + add r0, r5, #0 + mov r1, #3 + add r2, r4, #0 + add r3, r4, #0 + bl MOD09_022151A8 +_022162F8: + add r0, r5, #0 + mov r1, #6 + bl MOD09_022152DC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02216304: .word 0x00002070 +_02216308: .word 0x00001FA8 +_0221630C: .word 0x000F0E00 +_02216310: .word 0x0221B07C + + thumb_func_start MOD09_02216314 +MOD09_02216314: ; 0x02216314 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02216338 ; =0x00002060 + mov r1, #1 + add r0, r4, r0 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, _02216338 ; =0x00002060 + mov r1, #0xf + add r0, r4, r0 + bl FUN_02019620 + add r0, r4, #0 + bl MOD09_0221633C + pop {r4, pc} + .align 2, 0 +_02216338: .word 0x00002060 + + thumb_func_start MOD09_0221633C +MOD09_0221633C: ; 0x0221633C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + bl FUN_02002B60 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02230E54 + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + ldr r2, _02216370 ; =0x00002060 + str r3, [sp, #8] + add r0, r4, r2 + sub r2, #0xb0 + ldr r2, [r4, r2] + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _02216374 ; =0x0000207B + strb r0, [r4, r1] + add sp, #0xc + pop {r3, r4, pc} + nop +_02216370: .word 0x00002060 +_02216374: .word 0x0000207B + + thumb_func_start MOD09_02216378 +MOD09_02216378: ; 0x02216378 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + mov r1, #0 + str r0, [sp, #0xc] + ldr r2, [sp, #0xc] + ldrh r0, [r0, #0x22] + ldr r2, [r2, #0xc] + bl FUN_0206E710 + ldr r2, [sp, #0xc] + add r6, r0, #0 + ldrb r3, [r2, #0x11] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0xc] + add r2, r2, r3 + add r2, #0x2c + ldrb r2, [r2] + ldr r0, [r0, #8] + ldr r1, [r1, #0x28] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + mov r1, #0xf + mov r4, #0 + bl FUN_0206E7DC + cmp r0, #0 + beq _022163CC + mov r0, #1 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_022163CC: + add r0, r6, #0 + mov r1, #0x10 + bl FUN_0206E7DC + cmp r0, #0 + beq _022163E0 + mov r0, #2 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_022163E0: + add r0, r6, #0 + mov r1, #0x11 + bl FUN_0206E7DC + cmp r0, #0 + beq _022163F4 + mov r0, #4 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_022163F4: + add r0, r6, #0 + mov r1, #0x12 + bl FUN_0206E7DC + cmp r0, #0 + beq _02216408 + mov r0, #8 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02216408: + add r0, r6, #0 + mov r1, #0x13 + bl FUN_0206E7DC + cmp r0, #0 + beq _0221641C + mov r0, #0x10 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0221641C: + add r0, r6, #0 + mov r1, #0x14 + bl FUN_0206E7DC + cmp r0, #0 + beq _02216430 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02216430: + add r0, r6, #0 + mov r1, #0x15 + bl FUN_0206E7DC + cmp r0, #0 + beq _02216444 + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02216444: + ldr r0, [sp, #0xc] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r0, r5, r0 + ldrh r1, [r0, #0x14] + cmp r1, #0 + bne _0221648E + ldr r0, [sp, #8] + cmp r0, #0 + beq _0221648E + ldr r0, _022166C8 ; =0x00001FA8 + mov r1, #0x58 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_0221648E: + ldr r0, [sp, #8] + cmp r0, r1 + beq _022164EA + ldr r0, _022166C8 ; =0x00001FA8 + mov r1, #0x52 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + mov r0, #0 + str r0, [sp] + mov r1, #1 + ldr r2, [sp, #0xc] + str r1, [sp, #4] + ldrb r3, [r2, #0x11] + mov r2, #0x50 + ldr r0, _022166CC ; =0x00001FAC + mul r2, r3 + add r2, r5, r2 + ldrh r3, [r2, #0x14] + ldr r2, [sp, #8] + ldr r0, [r5, r0] + sub r2, r2, r3 + mov r3, #3 + bl FUN_0200AD38 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_022164EA: + add r0, r6, #0 + mov r1, #0x24 + bl FUN_0206E7DC + cmp r0, #0 + bne _02216502 + add r0, r6, #0 + mov r1, #0x25 + bl FUN_0206E7DC + cmp r0, #0 + beq _02216512 +_02216502: + ldr r2, _022166C8 ; =0x00001FA8 + mov r1, #0x57 + ldr r0, [r5, r2] + add r2, #8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + b _022166BE +_02216512: + cmp r4, #1 + ldr r0, _022166C8 ; =0x00001FA8 + bne _0221654A + ldr r0, [r5, r0] + mov r1, #0x5c + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_0221654A: + cmp r4, #2 + bne _02216580 + ldr r0, [r5, r0] + mov r1, #0x53 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_02216580: + cmp r4, #4 + bne _022165B6 + ldr r0, [r5, r0] + mov r1, #0x55 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_022165B6: + cmp r4, #8 + bne _022165EC + ldr r0, [r5, r0] + mov r1, #0x56 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_022165EC: + cmp r4, #0x10 + bne _02216622 + ldr r0, [r5, r0] + mov r1, #0x54 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_02216622: + cmp r4, #0x20 + bne _02216658 + ldr r0, [r5, r0] + mov r1, #0x5a + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_02216658: + cmp r4, #0x40 + bne _0221668E + ldr r0, [r5, r0] + mov r1, #0x5b + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + b _022166BE +_0221668E: + ldr r0, [r5, r0] + mov r1, #0x59 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _022166CC ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r1, _022166CC ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 +_022166BE: + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022166C8: .word 0x00001FA8 +_022166CC: .word 0x00001FAC + + thumb_func_start MOD09_022166D0 +MOD09_022166D0: ; 0x022166D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r3, [r5] + ldrb r2, [r3, #0x11] + ldr r0, [r3, #8] + ldr r1, [r3, #0x28] + add r2, r3, r2 + add r2, #0x2c + ldrb r2, [r2] + bl FUN_02230014 + add r6, r0, #0 + ldr r0, _02216728 ; =0x00001FA8 + mov r1, #0x5f + ldr r0, [r5, r0] + bl FUN_0200A914 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, _0221672C ; =0x00001FAC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ACF8 + ldr r0, _0221672C ; =0x00001FAC + ldr r2, _02216730 ; =0x00000175 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_0200AD5C + ldr r1, _0221672C ; =0x00001FAC + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + pop {r4, r5, r6, pc} + .align 2, 0 +_02216728: .word 0x00001FA8 +_0221672C: .word 0x00001FAC +_02216730: .word 0x00000175 + + thumb_func_start MOD09_02216734 +MOD09_02216734: ; 0x02216734 + push {r4, lr} + add r4, r0, #0 + bl MOD09_02216770 + add r0, r4, #0 + bl MOD09_022167BC + add r0, r4, #0 + bl MOD09_02216894 + add r0, r4, #0 + bl MOD09_02216934 + add r0, r4, #0 + bl MOD09_022169AC + add r0, r4, #0 + bl MOD09_02216A4C + add r0, r4, #0 + bl MOD09_02216B4C + add r0, r4, #0 + bl MOD09_02217750 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + pop {r4, pc} + + thumb_func_start MOD09_02216770 +MOD09_02216770: ; 0x02216770 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _022167B4 ; =0x0221B4B8 + add r2, sp, #0 + add r5, r0, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230078 + add r4, r0, #0 + bl FUN_0200BB34 + ldr r1, _022167B8 ; =0x00001FB4 + mov r2, #0x2b + str r0, [r5, r1] + ldr r1, [r5, r1] + add r0, r4, #0 + bl FUN_0200BBF0 + ldr r1, _022167B8 ; =0x00001FB4 + add r0, r4, #0 + ldr r1, [r5, r1] + add r2, sp, #0 + bl FUN_0200BF60 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_022167B4: .word 0x0221B4B8 +_022167B8: .word 0x00001FB4 + + thumb_func_start MOD09_022167BC +MOD09_022167BC: ; 0x022167BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldr r0, [r6] + ldr r0, [r0, #8] + bl FUN_02230078 + add r7, r0, #0 + bl FUN_0206B888 + mov r1, #0x13 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r1, #3 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0221688C ; =0x0000B007 + ldr r3, _02216890 ; =0x00001FB4 + str r0, [sp, #0x14] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r3, [r6, r3] + add r2, r7, #0 + bl FUN_0200C0DC + bl FUN_0206B890 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0221688C ; =0x0000B007 + ldr r1, _02216890 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B89C + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0221688C ; =0x0000B007 + ldr r1, _02216890 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x13 + bl FUN_0200C13C + mov r4, #0 + add r5, r6, #0 +_0221682E: + ldrh r0, [r5, #8] + cmp r0, #0 + beq _02216858 + ldr r0, [r5, #4] + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0221688C ; =0x0000B007 + ldr r1, _02216890 ; =0x00001FB4 + add r0, r4, r0 + str r0, [sp, #8] + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x13 + bl FUN_0200C00C + b _0221687E +_02216858: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0206B6D4 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0221688C ; =0x0000B007 + ldr r1, _02216890 ; =0x00001FB4 + add r0, r4, r0 + str r0, [sp, #8] + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x13 + bl FUN_0200C00C +_0221687E: + add r4, r4, #1 + add r5, #0x50 + cmp r4, #6 + blo _0221682E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221688C: .word 0x0000B007 +_02216890: .word 0x00001FB4 + + thumb_func_start MOD09_02216894 +MOD09_02216894: ; 0x02216894 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230078 + add r4, r0, #0 + bl FUN_0207C2C8 + mov r1, #0x27 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _02216928 ; =0x0000B008 + ldr r3, _0221692C ; =0x00001FB4 + str r0, [sp, #0x14] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r5, r3] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200C0DC + bl FUN_0207C2CC + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02216928 ; =0x0000B008 + ldr r1, _0221692C ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x27 + bl FUN_0200C124 + bl FUN_0207C2D0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02216928 ; =0x0000B008 + ldr r1, _0221692C ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x27 + bl FUN_0200C13C + bl FUN_0207C2C4 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02216930 ; =0x0000B00D + ldr r1, _0221692C ; =0x00001FB4 + str r0, [sp, #8] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x27 + bl FUN_0200C00C + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_02216928: .word 0x0000B008 +_0221692C: .word 0x00001FB4 +_02216930: .word 0x0000B00D + + thumb_func_start MOD09_02216934 +MOD09_02216934: ; 0x02216934 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230078 + add r6, r0, #0 + mov r0, #2 + str r0, [sp] + ldr r0, _0221699C ; =0x0000B009 + ldr r3, _022169A0 ; =0x00001FB4 + str r0, [sp, #4] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r5, r3] + mov r1, #3 + add r2, r6, #0 + bl FUN_0206E198 + ldr r1, _022169A0 ; =0x00001FB4 + ldr r2, _0221699C ; =0x0000B009 + ldr r1, [r5, r1] + add r0, r6, #0 + add r3, r2, #0 + bl FUN_0206E1D4 + ldr r4, _022169A4 ; =0x0000B00E + add r7, r4, #6 +_02216970: + ldr r1, _022169A0 ; =0x00001FB4 + str r4, [sp] + ldr r1, [r5, r1] + add r0, r6, #0 + mov r2, #2 + mov r3, #0 + bl FUN_0206E130 + add r4, r4, #1 + cmp r4, r7 + bls _02216970 + ldr r0, _022169A8 ; =0x0000B015 + ldr r1, _022169A0 ; =0x00001FB4 + str r0, [sp] + ldr r1, [r5, r1] + add r0, r6, #0 + mov r2, #2 + mov r3, #0 + bl FUN_0206E2AC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221699C: .word 0x0000B009 +_022169A0: .word 0x00001FB4 +_022169A4: .word 0x0000B00E +_022169A8: .word 0x0000B015 + + thumb_func_start MOD09_022169AC +MOD09_022169AC: ; 0x022169AC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230078 + add r4, r0, #0 + bl FUN_020724C8 + mov r1, #0x14 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _02216A40 ; =0x0000B00A + ldr r3, _02216A44 ; =0x00001FB4 + str r0, [sp, #0x14] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r5, r3] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200C0DC + bl FUN_020724CC + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02216A40 ; =0x0000B00A + ldr r1, _02216A44 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x14 + bl FUN_0200C124 + bl FUN_020724D0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02216A40 ; =0x0000B00A + ldr r1, _02216A44 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x14 + bl FUN_0200C13C + bl FUN_020724C4 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02216A48 ; =0x0000B016 + ldr r1, _02216A44 ; =0x00001FB4 + str r0, [sp, #8] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x14 + bl FUN_0200C00C + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_02216A40: .word 0x0000B00A +_02216A44: .word 0x00001FB4 +_02216A48: .word 0x0000B016 + + thumb_func_start MOD09_02216A4C +MOD09_02216A4C: ; 0x02216A4C + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230078 + add r4, r0, #0 + mov r0, #0x48 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _02216AD0 ; =0x0000B00B + ldr r3, _02216AD4 ; =0x00001FB4 + str r0, [sp, #0x14] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r3, [r5, r3] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200C0DC + mov r0, #0 + str r0, [sp] + ldr r0, _02216AD0 ; =0x0000B00B + ldr r1, _02216AD4 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x48 + mov r3, #0x19 + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, _02216AD0 ; =0x0000B00B + ldr r1, _02216AD4 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x48 + mov r3, #0x18 + bl FUN_0200C13C + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02216AD8 ; =0x0000B017 + ldr r1, _02216AD4 ; =0x00001FB4 + str r0, [sp, #8] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0x48 + mov r3, #0x1a + bl FUN_0200C00C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_02216AD0: .word 0x0000B00B +_02216AD4: .word 0x00001FB4 +_02216AD8: .word 0x0000B017 + + thumb_func_start MOD09_02216ADC +MOD09_02216ADC: ; 0x02216ADC + push {r4, r5, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + ldr r0, [r0, #8] + bl FUN_02230078 + mov r2, #0 + add r1, sp, #0 + strh r2, [r1] + strh r2, [r1, #2] + strh r2, [r1, #4] + strh r2, [r1, #6] + mov r1, #0x14 + ldr r3, _02216B34 ; =0x0221B6F0 + mul r1, r4 + ldr r3, [r3, r1] + str r2, [sp, #0xc] + str r3, [sp, #8] + mov r3, #2 + str r3, [sp, #0x10] + ldr r3, _02216B38 ; =0x0221B6E0 + str r2, [sp, #0x30] + ldr r3, [r3, r1] + add r2, sp, #0 + str r3, [sp, #0x14] + ldr r3, _02216B3C ; =0x0221B6E4 + ldr r3, [r3, r1] + str r3, [sp, #0x18] + ldr r3, _02216B40 ; =0x0221B6E8 + ldr r3, [r3, r1] + str r3, [sp, #0x1c] + ldr r3, _02216B44 ; =0x0221B6EC + ldr r1, [r3, r1] + str r1, [sp, #0x20] + mov r1, #1 + str r1, [sp, #0x2c] + ldr r1, _02216B48 ; =0x00001FB4 + ldr r1, [r5, r1] + bl FUN_0200C154 + add sp, #0x34 + pop {r4, r5, pc} + .align 2, 0 +_02216B34: .word 0x0221B6F0 +_02216B38: .word 0x0221B6E0 +_02216B3C: .word 0x0221B6E4 +_02216B40: .word 0x0221B6E8 +_02216B44: .word 0x0221B6EC +_02216B48: .word 0x00001FB4 + + thumb_func_start MOD09_02216B4C +MOD09_02216B4C: ; 0x02216B4C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r7, _02216B70 ; =0x00001FB8 + mov r4, #0 + add r5, r6, #0 +_02216B56: + add r0, r6, #0 + add r1, r4, #0 + bl MOD09_02216ADC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x26 + blo _02216B56 + add r0, r6, #0 + bl MOD09_02216BD0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02216B70: .word 0x00001FB8 + + thumb_func_start MOD09_02216B74 +MOD09_02216B74: ; 0x02216B74 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7] + ldr r0, [r0, #8] + bl FUN_02230078 + ldr r6, _02216BA8 ; =0x00001FB8 + str r0, [sp] + mov r4, #0 + add r5, r7, #0 +_02216B88: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x26 + blo _02216B88 + add r0, r7, #0 + bl MOD09_022177B4 + ldr r1, _02216BAC ; =0x00001FB4 + ldr r0, [sp] + ldr r1, [r7, r1] + bl FUN_0200C398 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02216BA8: .word 0x00001FB8 +_02216BAC: .word 0x00001FB4 + + thumb_func_start MOD09_02216BB0 +MOD09_02216BB0: ; 0x02216BB0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r1, #1 + add r6, r0, #0 + bl FUN_0200C644 + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD09_02216BD0 +MOD09_02216BD0: ; 0x02216BD0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r5, #0 + mov r7, #0 + add r4, #0x1b + add r6, r5, #0 +_02216BDC: + ldrh r0, [r5, #8] + cmp r0, #0 + beq _02216BFC + add r1, r5, #0 + ldrb r2, [r4] + add r1, #0x32 + ldrb r1, [r1] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1f + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, _02216C0C ; =0x00001FD4 + ldr r0, [r6, r0] + bl FUN_0200C66C +_02216BFC: + add r7, r7, #1 + add r5, #0x50 + add r4, #0x50 + add r6, r6, #4 + cmp r7, #6 + blt _02216BDC + pop {r3, r4, r5, r6, r7, pc} + nop +_02216C0C: .word 0x00001FD4 + + thumb_func_start MOD09_02216C10 +MOD09_02216C10: ; 0x02216C10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + add r6, r3, #0 + ldr r0, [r0, #8] + add r7, r1, #0 + add r4, r2, #0 + bl FUN_02230078 + str r0, [sp, #8] + bl FUN_0206E12C + str r0, [sp, #0xc] + add r0, r6, #0 + bl FUN_0206E0F0 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r1, _02216C5C ; =0x00001FB4 + str r4, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5, r1] + ldr r2, [sp, #0xc] + bl FUN_0200C9D8 + add r0, r6, #0 + bl FUN_0206E114 + add r1, r0, #0 + add r0, r7, #0 + add r1, r1, #4 + bl FUN_0200C66C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02216C5C: .word 0x00001FB4 + + thumb_func_start MOD09_02216C60 +MOD09_02216C60: ; 0x02216C60 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5] + add r4, r2, #0 + ldr r0, [r0, #8] + add r6, r1, #0 + bl FUN_02230078 + add r7, r0, #0 + bl FUN_0206E2A8 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0206E278 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, _02216CAC ; =0x0000B015 + ldr r1, _02216CB0 ; =0x00001FB4 + str r0, [sp, #4] + ldr r1, [r5, r1] + ldr r2, [sp, #8] + add r0, r7, #0 + bl FUN_0200C9D8 + add r0, r4, #0 + bl FUN_0206E290 + add r1, r0, #0 + add r0, r6, #0 + add r1, r1, #4 + bl FUN_0200C66C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02216CAC: .word 0x0000B015 +_02216CB0: .word 0x00001FB4 + + thumb_func_start MOD09_02216CB4 +MOD09_02216CB4: ; 0x02216CB4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + cmp r6, #7 + beq _02216CD4 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C5C0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD09_02216BB0 +_02216CD4: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_02216CD8 +MOD09_02216CD8: ; 0x02216CD8 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, _02216D1C ; =0x00002004 + add r5, r0, #0 + add r6, r2, #0 + ldrb r3, [r4, #0x14] + ldr r1, [r5, r1] + ldr r2, _02216D20 ; =0x0000B00E + bl MOD09_02216C10 + ldr r0, _02216D1C ; =0x00002004 + ldr r1, [r6] + ldr r0, [r5, r0] + ldr r2, [r6, #4] + bl MOD09_02216BB0 + ldrb r3, [r4, #0x15] + ldrb r0, [r4, #0x14] + cmp r0, r3 + beq _02216D18 + ldr r1, _02216D24 ; =0x00002008 + ldr r2, _02216D28 ; =0x0000B00F + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD09_02216C10 + ldr r0, _02216D24 ; =0x00002008 + ldr r1, [r6, #8] + ldr r0, [r5, r0] + ldr r2, [r6, #0xc] + bl MOD09_02216BB0 +_02216D18: + pop {r4, r5, r6, pc} + nop +_02216D1C: .word 0x00002004 +_02216D20: .word 0x0000B00E +_02216D24: .word 0x00002008 +_02216D28: .word 0x0000B00F + + thumb_func_start MOD09_02216D2C +MOD09_02216D2C: ; 0x02216D2C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _02216D5C + bl FUN_0206EA98 + cmp r0, #1 + bne _02216D4A + add r0, r5, #0 + mov r1, #1 + bl FUN_0200C5C0 + b _02216D52 +_02216D4A: + add r0, r5, #0 + mov r1, #0 + bl FUN_0200C5C0 +_02216D52: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD09_02216BB0 +_02216D5C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD09_02216D60 +MOD09_02216D60: ; 0x02216D60 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _02216D7E + add r0, r5, #0 + mov r1, #2 + bl FUN_0200C5C0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD09_02216BB0 +_02216D7E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD09_02216D80 +MOD09_02216D80: ; 0x02216D80 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r7, _02216E14 ; =0x00001FB8 + str r1, [sp] + mov r5, #0 + add r4, r6, #0 +_02216D8C: + ldr r0, [r4, r7] + mov r1, #0 + bl FUN_0200C644 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0x26 + blo _02216D8C + ldr r0, [sp] + cmp r0, #9 + bhi _02216E10 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02216DAE: ; jump table + .short _02216DC2 - _02216DAE - 2 ; case 0 + .short _02216DCA - _02216DAE - 2 ; case 1 + .short _02216DD2 - _02216DAE - 2 ; case 2 + .short _02216DDA - _02216DAE - 2 ; case 3 + .short _02216DE2 - _02216DAE - 2 ; case 4 + .short _02216DEA - _02216DAE - 2 ; case 5 + .short _02216DF2 - _02216DAE - 2 ; case 6 + .short _02216DFA - _02216DAE - 2 ; case 7 + .short _02216E02 - _02216DAE - 2 ; case 8 + .short _02216E0A - _02216DAE - 2 ; case 9 +_02216DC2: + add r0, r6, #0 + bl MOD09_02216E18 + pop {r3, r4, r5, r6, r7, pc} +_02216DCA: + add r0, r6, #0 + bl MOD09_02216EB4 + pop {r3, r4, r5, r6, r7, pc} +_02216DD2: + add r0, r6, #0 + bl MOD09_02216F0C + pop {r3, r4, r5, r6, r7, pc} +_02216DDA: + add r0, r6, #0 + bl MOD09_02216FA4 + pop {r3, r4, r5, r6, r7, pc} +_02216DE2: + add r0, r6, #0 + bl MOD09_0221707C + pop {r3, r4, r5, r6, r7, pc} +_02216DEA: + add r0, r6, #0 + bl MOD09_02217270 + pop {r3, r4, r5, r6, r7, pc} +_02216DF2: + add r0, r6, #0 + bl MOD09_02217140 + pop {r3, r4, r5, r6, r7, pc} +_02216DFA: + add r0, r6, #0 + bl MOD09_022171AC + pop {r3, r4, r5, r6, r7, pc} +_02216E02: + add r0, r6, #0 + bl MOD09_02217354 + pop {r3, r4, r5, r6, r7, pc} +_02216E0A: + add r0, r6, #0 + bl MOD09_022172DC +_02216E10: + pop {r3, r4, r5, r6, r7, pc} + nop +_02216E14: .word 0x00001FB8 + + thumb_func_start MOD09_02216E18 +MOD09_02216E18: ; 0x02216E18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0 + str r0, [sp, #4] + add r0, r6, #0 + str r0, [sp] + add r0, #0x1b + ldr r4, _02216E9C ; =0x0221B5D0 + ldr r7, _02216EA0 ; =0x0221B600 + add r5, r6, #0 + str r0, [sp] +_02216E30: + ldrh r0, [r6, #8] + cmp r0, #0 + beq _02216E7E + ldr r0, _02216EA4 ; =0x00001FD4 + ldr r1, [r4] + ldr r0, [r5, r0] + ldr r2, [r4, #4] + bl MOD09_02216BB0 + ldr r0, [sp] + ldr r1, _02216EA8 ; =0x00001FEC + ldrb r0, [r0] + ldr r1, [r5, r1] + ldr r2, [r7] + lsl r0, r0, #0x19 + ldr r3, [r7, #4] + lsr r0, r0, #0x1c + bl MOD09_02216CB4 + ldr r1, _02216EAC ; =0x00001FB8 + ldr r2, [r4] + ldr r3, [r4, #4] + ldrh r0, [r6, #0x1e] + ldr r1, [r5, r1] + add r2, #8 + add r3, #8 + bl MOD09_02216D2C + add r0, r6, #0 + add r0, #0x31 + ldr r1, _02216EB0 ; =0x00002038 + ldr r2, [r4] + ldr r3, [r4, #4] + ldrb r0, [r0] + ldr r1, [r5, r1] + add r2, #0x10 + add r3, #8 + bl MOD09_02216D60 +_02216E7E: + ldr r0, [sp] + add r6, #0x50 + add r0, #0x50 + str r0, [sp] + ldr r0, [sp, #4] + add r4, #8 + add r0, r0, #1 + add r5, r5, #4 + add r7, #8 + str r0, [sp, #4] + cmp r0, #6 + blt _02216E30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02216E9C: .word 0x0221B5D0 +_02216EA0: .word 0x0221B600 +_02216EA4: .word 0x00001FD4 +_02216EA8: .word 0x00001FEC +_02216EAC: .word 0x00001FB8 +_02216EB0: .word 0x00002038 + + thumb_func_start MOD09_02216EB4 +MOD09_02216EB4: ; 0x02216EB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02216F08 ; =0x00001FB8 + mov r2, #0x48 + ldr r0, [r1, r0] + mov r1, #0x80 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x50 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02216F08 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x88 + bl MOD09_02216D2C + ldr r1, [r5] + add r4, #0x2d + ldrb r1, [r1, #0x11] + ldrb r0, [r4] + mov r3, #0x50 + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02216F08 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x90 + bl MOD09_02216D60 + pop {r3, r4, r5, pc} + .align 2, 0 +_02216F08: .word 0x00001FB8 + + thumb_func_start MOD09_02216F0C +MOD09_02216F0C: ; 0x02216F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02216F98 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrb r0, [r4, #0x17] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r0, r0, #0x19 + add r1, #0xd + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02216F98 ; =0x00001FB8 + lsr r0, r0, #0x1c + ldr r1, [r2, r1] + mov r2, #0xc6 + bl MOD09_02216CB4 + ldr r2, _02216F9C ; =0x0221B490 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02216CD8 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02216F98 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + add r0, #0x2d + ldrb r0, [r0] + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02216F98 ; =0x00001FB8 + mov r3, #0x14 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + ldr r1, _02216FA0 ; =0x00001FD0 + ldrh r0, [r4, #0x1a] + ldr r1, [r5, r1] + mov r2, #0x14 + mov r3, #0x84 + bl MOD09_02216D2C + pop {r3, r4, r5, pc} + nop +_02216F98: .word 0x00001FB8 +_02216F9C: .word 0x0221B490 +_02216FA0: .word 0x00001FD0 + + thumb_func_start MOD09_02216FA4 +MOD09_02216FA4: ; 0x02216FA4 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, [r0] + ldrb r2, [r0, #0x11] + ldr r0, [sp] + add r1, r0, #4 + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r1, r0, #2 + ldr r0, [sp] + mov r2, #0xc + add r1, r0, r1 + ldr r0, _02217068 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r1, [sp] + ldrb r0, [r4, #0x17] + ldr r1, [r1] + mov r3, #0x14 + ldrb r1, [r1, #0x11] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1c + add r1, #0xd + lsl r2, r1, #2 + ldr r1, [sp] + add r2, r1, r2 + ldr r1, _02217068 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0xc6 + bl MOD09_02216CB4 + ldr r0, [sp] + ldr r2, _0221706C ; =0x0221B470 + add r1, r4, #0 + bl MOD09_02216CD8 + ldr r1, [sp] + ldrh r0, [r4, #0x1a] + ldr r1, [r1] + mov r3, #0x14 + ldrb r1, [r1, #0x11] + lsl r2, r1, #2 + ldr r1, [sp] + add r2, r1, r2 + ldr r1, _02217068 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [sp] + add r0, r4, #0 + ldr r1, [r1] + add r0, #0x2d + ldrb r1, [r1, #0x11] + ldrb r0, [r0] + mov r3, #0x14 + add r1, #0x20 + lsl r2, r1, #2 + ldr r1, [sp] + add r2, r1, r2 + ldr r1, _02217068 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + ldr r5, [sp] + ldr r6, _02217070 ; =0x0221B4F0 + mov r7, #0 +_02217034: + ldrh r0, [r4, #0x30] + cmp r0, #0 + beq _0221705A + add r3, r4, #0 + ldr r1, _02217074 ; =0x0000200C + add r3, #0x34 + ldr r2, _02217078 ; =0x0000B010 + ldrb r3, [r3] + ldr r0, [sp] + ldr r1, [r5, r1] + add r2, r7, r2 + bl MOD09_02216C10 + ldr r0, _02217074 ; =0x0000200C + ldr r1, [r6] + ldr r0, [r5, r0] + ldr r2, [r6, #4] + bl MOD09_02216BB0 +_0221705A: + add r7, r7, #1 + add r4, #8 + add r5, r5, #4 + add r6, #8 + cmp r7, #4 + blo _02217034 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02217068: .word 0x00001FB8 +_0221706C: .word 0x0221B470 +_02217070: .word 0x0221B4F0 +_02217074: .word 0x0000200C +_02217078: .word 0x0000B010 + + thumb_func_start MOD09_0221707C +MOD09_0221707C: ; 0x0221707C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02217134 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrb r0, [r4, #0x17] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r0, r0, #0x19 + add r1, #0xd + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217134 ; =0x00001FB8 + lsr r0, r0, #0x1c + ldr r1, [r2, r1] + mov r2, #0xc6 + bl MOD09_02216CB4 + ldr r2, _02217138 ; =0x0221B480 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02216CD8 + ldr r0, [r5] + mov r2, #0x30 + add r0, #0x34 + ldrb r0, [r0] + add r0, #0x15 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02217134 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0x88 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217134 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + add r0, #0x2d + ldrb r0, [r0] + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217134 ; =0x00001FB8 + mov r3, #0x14 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + ldr r2, [r5] + ldr r1, _0221713C ; =0x00002020 + add r2, #0x34 + ldrb r2, [r2] + ldr r1, [r5, r1] + add r0, r5, #0 + lsl r2, r2, #3 + add r2, r4, r2 + add r2, #0x35 + ldrb r2, [r2] + bl MOD09_02216C60 + ldr r0, _0221713C ; =0x00002020 + mov r1, #0x18 + ldr r0, [r5, r0] + mov r2, #0x58 + bl MOD09_02216BB0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02217134: .word 0x00001FB8 +_02217138: .word 0x0221B480 +_0221713C: .word 0x00002020 + + thumb_func_start MOD09_02217140 +MOD09_02217140: ; 0x02217140 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _022171A4 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r2, _022171A8 ; =0x0221B460 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02216CD8 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _022171A4 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r4, #0x2d + ldrb r1, [r1, #0x11] + ldrb r0, [r4] + mov r3, #0x14 + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _022171A4 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + add r0, r5, #0 + bl MOD09_022174EC + pop {r3, r4, r5, pc} + .align 2, 0 +_022171A4: .word 0x00001FB8 +_022171A8: .word 0x0221B460 + + thumb_func_start MOD09_022171AC +MOD09_022171AC: ; 0x022171AC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02217264 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r2, _02217268 ; =0x0221B450 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02216CD8 + ldr r0, [r5] + mov r2, #0x30 + add r0, #0x34 + ldrb r0, [r0] + add r0, #0x15 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02217264 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0x88 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217264 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + add r0, #0x2d + ldrb r0, [r0] + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217264 ; =0x00001FB8 + mov r3, #0x14 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + ldr r1, [r5] + add r0, r1, #0 + add r0, #0x34 + ldrb r2, [r0] + cmp r2, #4 + bhs _02217242 + lsl r2, r2, #3 + add r2, r4, r2 + ldr r1, _0221726C ; =0x00002020 + add r2, #0x35 + ldrb r2, [r2] + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD09_02216C60 + b _02217256 +_02217242: + ldrh r0, [r1, #0x24] + mov r1, #1 + bl FUN_0206AB18 + ldr r1, _0221726C ; =0x00002020 + add r2, r0, #0 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD09_02216C60 +_02217256: + ldr r0, _0221726C ; =0x00002020 + mov r1, #0x18 + ldr r0, [r5, r0] + mov r2, #0x58 + bl MOD09_02216BB0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02217264: .word 0x00001FB8 +_02217268: .word 0x0221B450 +_0221726C: .word 0x00002020 + + thumb_func_start MOD09_02217270 +MOD09_02217270: ; 0x02217270 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _022172D4 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r2, _022172D8 ; =0x0221B460 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02216CD8 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _022172D4 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r4, #0x2d + ldrb r1, [r1, #0x11] + ldrb r0, [r4] + mov r3, #0x14 + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _022172D4 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + add r0, r5, #0 + bl MOD09_022174EC + pop {r3, r4, r5, pc} + .align 2, 0 +_022172D4: .word 0x00001FB8 +_022172D8: .word 0x0221B460 + + thumb_func_start MOD09_022172DC +MOD09_022172DC: ; 0x022172DC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02217350 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r0, [r5] + mov r2, #0x48 + add r0, #0x34 + ldrb r0, [r0] + add r0, #0x15 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _02217350 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0x88 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217350 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r4, #0x2d + ldrb r1, [r1, #0x11] + ldrb r0, [r4] + mov r3, #0x14 + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _02217350 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + add r0, r5, #0 + bl MOD09_02217624 + pop {r3, r4, r5, pc} + nop +_02217350: .word 0x00001FB8 + + thumb_func_start MOD09_02217354 +MOD09_02217354: ; 0x02217354 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r1, r5, #4 + ldrb r2, [r0, #0x11] + mov r0, #0x50 + mul r0, r2 + add r4, r1, r0 + add r0, r2, #7 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _022173B4 ; =0x00001FB8 + mov r2, #0xc + ldr r0, [r1, r0] + mov r1, #0x18 + bl MOD09_02216BB0 + ldr r1, [r5] + ldrh r0, [r4, #0x1a] + ldrb r1, [r1, #0x11] + mov r3, #0x14 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _022173B4 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x20 + bl MOD09_02216D2C + ldr r1, [r5] + add r4, #0x2d + ldrb r1, [r1, #0x11] + ldrb r0, [r4] + mov r3, #0x14 + add r1, #0x20 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _022173B4 ; =0x00001FB8 + ldr r1, [r2, r1] + mov r2, #0x28 + bl MOD09_02216D60 + add r0, r5, #0 + bl MOD09_022174EC + add r0, r5, #0 + bl MOD09_02217624 + pop {r3, r4, r5, pc} + .align 2, 0 +_022173B4: .word 0x00001FB8 + + thumb_func_start MOD09_022173B8 +MOD09_022173B8: ; 0x022173B8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + add r2, r6, #4 + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mov r4, #0 + mul r0, r1 + add r0, r2, r0 + str r0, [sp] +_022173CC: + ldr r0, [sp] + lsl r5, r4, #3 + add r3, r0, r5 + ldrh r0, [r3, #0x30] + cmp r0, #0 + beq _02217400 + lsl r0, r4, #2 + add r3, #0x34 + add r7, r6, r0 + ldr r1, _02217438 ; =0x0000200C + ldr r2, _0221743C ; =0x0000B010 + ldrb r3, [r3] + ldr r1, [r7, r1] + add r0, r6, #0 + add r2, r4, r2 + bl MOD09_02216C10 + ldr r0, _02217440 ; =0x0221B5A8 + ldr r1, _02217440 ; =0x0221B5A8 + add r2, r0, r5 + ldr r0, _02217438 ; =0x0000200C + ldr r1, [r1, r5] + ldr r0, [r7, r0] + ldr r2, [r2, #4] + bl MOD09_02216BB0 +_02217400: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #4 + blo _022173CC + ldr r0, [r6] + ldrh r0, [r0, #0x24] + cmp r0, #0 + beq _02217436 + mov r1, #3 + bl FUN_0206AB18 + add r3, r0, #0 + ldr r1, _02217444 ; =0x0000201C + lsl r3, r3, #0x18 + ldr r1, [r6, r1] + ldr r2, _02217448 ; =0x0000B014 + add r0, r6, #0 + lsr r3, r3, #0x18 + bl MOD09_02216C10 + ldr r0, _02217444 ; =0x0000201C + mov r1, #0x58 + ldr r0, [r6, r0] + mov r2, #0xb0 + bl MOD09_02216BB0 +_02217436: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02217438: .word 0x0000200C +_0221743C: .word 0x0000B010 +_02217440: .word 0x0221B5A8 +_02217444: .word 0x0000201C +_02217448: .word 0x0000B014 + + thumb_func_start MOD09_0221744C +MOD09_0221744C: ; 0x0221744C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7] + add r2, r7, #4 + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mov r4, #0 + mul r0, r1 + add r0, r2, r0 + str r0, [sp] +_02217460: + ldr r0, [sp] + lsl r5, r4, #3 + add r0, r0, r5 + ldrh r0, [r0, #0x30] + cmp r0, #0 + beq _0221749E + lsl r1, r4, #2 + add r6, r7, r1 + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0 + ldr r1, _022174D8 ; =0x0000200C + ldr r2, _022174DC ; =0x0000B010 + add r3, #0x12 + lsl r3, r3, #0x18 + ldr r1, [r6, r1] + add r0, r7, #0 + add r2, r4, r2 + lsr r3, r3, #0x18 + bl MOD09_02216C10 + ldr r0, _022174E0 ; =0x0221B5A8 + ldr r1, _022174E0 ; =0x0221B5A8 + add r2, r0, r5 + ldr r0, _022174D8 ; =0x0000200C + ldr r1, [r1, r5] + ldr r0, [r6, r0] + ldr r2, [r2, #4] + bl MOD09_02216BB0 +_0221749E: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #4 + blo _02217460 + ldr r0, [r7] + ldrh r0, [r0, #0x24] + cmp r0, #0 + beq _022174D6 + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0 + ldr r1, _022174E4 ; =0x0000201C + add r3, #0x12 + lsl r3, r3, #0x18 + ldr r1, [r7, r1] + ldr r2, _022174E8 ; =0x0000B014 + add r0, r7, #0 + lsr r3, r3, #0x18 + bl MOD09_02216C10 + ldr r0, _022174E4 ; =0x0000201C + mov r1, #0x58 + ldr r0, [r7, r0] + mov r2, #0xb0 + bl MOD09_02216BB0 +_022174D6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022174D8: .word 0x0000200C +_022174DC: .word 0x0000B010 +_022174E0: .word 0x0221B5A8 +_022174E4: .word 0x0000201C +_022174E8: .word 0x0000B014 + + thumb_func_start MOD09_022174EC +MOD09_022174EC: ; 0x022174EC + push {r3, lr} + ldr r1, _02217504 ; =0x00002077 + ldrb r1, [r0, r1] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bne _022174FE + bl MOD09_022173B8 + pop {r3, pc} +_022174FE: + bl MOD09_0221744C + pop {r3, pc} + .align 2, 0 +_02217504: .word 0x00002077 + + thumb_func_start MOD09_02217508 +MOD09_02217508: ; 0x02217508 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C5CC + cmp r4, r0 + beq _02217526 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200C61C + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C5C0 +_02217526: + pop {r3, r4, r5, pc} + + thumb_func_start MOD09_02217528 +MOD09_02217528: ; 0x02217528 + push {r3, lr} + add r2, r0, #0 + ldrh r0, [r2, #0x10] + cmp r0, #0 + bne _02217536 + mov r0, #0 + pop {r3, pc} +_02217536: + ldrb r1, [r2, #0x17] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1c + cmp r1, #7 + beq _02217548 + cmp r1, #6 + beq _02217548 + mov r0, #5 + pop {r3, pc} +_02217548: + ldrh r1, [r2, #0x12] + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #4 + bhi _0221757A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02217560: ; jump table + .short _0221757A - _02217560 - 2 ; case 0 + .short _02217576 - _02217560 - 2 ; case 1 + .short _02217572 - _02217560 - 2 ; case 2 + .short _0221756E - _02217560 - 2 ; case 3 + .short _0221756A - _02217560 - 2 ; case 4 +_0221756A: + mov r0, #1 + pop {r3, pc} +_0221756E: + mov r0, #2 + pop {r3, pc} +_02217572: + mov r0, #3 + pop {r3, pc} +_02217576: + mov r0, #4 + pop {r3, pc} +_0221757A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD09_02217580 +MOD09_02217580: ; 0x02217580 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r4, #0 + ldr r0, [r0] + bl FUN_0206B9AC + cmp r0, #0 + ble _022175D8 + add r7, r5, #4 +_02217594: + mov r0, #0x50 + add r1, r4, #0 + mul r1, r0 + add r0, r5, r1 + ldrh r0, [r0, #8] + cmp r0, #0 + beq _022175C6 + add r0, r7, r1 + bl MOD09_02217528 + add r1, r0, #0 + lsl r0, r4, #2 + add r6, r5, r0 + ldr r0, _022175DC ; =0x00001FD4 + lsl r1, r1, #0x18 + ldr r0, [r6, r0] + lsr r1, r1, #0x18 + bl MOD09_02217508 + ldr r0, _022175DC ; =0x00001FD4 + mov r1, #1 + ldr r0, [r6, r0] + lsl r1, r1, #0xc + bl FUN_0200C5B4 +_022175C6: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_0206B9AC + cmp r4, r0 + blt _02217594 +_022175D8: + pop {r3, r4, r5, r6, r7, pc} + nop +_022175DC: .word 0x00001FD4 + + thumb_func_start MOD09_022175E0 +MOD09_022175E0: ; 0x022175E0 + push {r4, lr} + add r4, r2, #0 + cmp r4, r1 + ble _02217606 + add r0, #0x2c + sub r1, r4, r1 + mul r1, r0 + lsl r0, r1, #0x10 + mov r1, #0x4b + lsl r1, r1, #2 + bl _u32_div_f + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + pop {r4, pc} +_02217606: + add r0, #0x2c + sub r1, r1, r4 + mul r1, r0 + lsl r0, r1, #0x10 + mov r1, #0x4b + lsl r1, r1, #2 + bl _u32_div_f + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, r4, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + pop {r4, pc} + + thumb_func_start MOD09_02217624 +MOD09_02217624: ; 0x02217624 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + add r5, r6, #4 + ldrb r1, [r0, #0x11] + mov r0, #0x50 + add r4, r1, #0 + mul r4, r0 + ldr r0, _0221773C ; =0x00002024 + mov r1, #0 + ldr r0, [r6, r0] + bl MOD09_02217508 + ldr r0, _02217740 ; =0x00002028 + mov r1, #1 + ldr r0, [r6, r0] + bl MOD09_02217508 + ldr r0, _02217744 ; =0x0000202C + mov r1, #3 + ldr r0, [r6, r0] + bl MOD09_02217508 + ldr r0, _02217748 ; =0x00002030 + mov r1, #4 + ldr r0, [r6, r0] + bl MOD09_02217508 + ldr r0, _0221774C ; =0x00002034 + mov r1, #2 + ldr r0, [r6, r0] + bl MOD09_02217508 + add r0, r5, r4 + add r0, #0x28 + mov r1, #0x90 + ldrb r0, [r0] + add r2, r1, #0 + bl MOD09_022175E0 + add r7, r0, #0 + add r0, r5, r4 + add r0, #0x28 + ldrb r0, [r0] + mov r1, #2 + mov r2, #0x18 + bl MOD09_022175E0 + add r2, r0, #0 + ldr r0, _0221773C ; =0x00002024 + add r1, r7, #0 + ldr r0, [r6, r0] + bl MOD09_02216BB0 + add r0, r5, r4 + add r0, #0x29 + ldrb r0, [r0] + mov r1, #0xa7 + mov r2, #0x90 + bl MOD09_022175E0 + add r7, r0, #0 + add r0, r5, r4 + add r0, #0x29 + ldrb r0, [r0] + mov r1, #0x12 + mov r2, #0x18 + bl MOD09_022175E0 + add r2, r0, #0 + ldr r0, _02217740 ; =0x00002028 + add r1, r7, #0 + ldr r0, [r6, r0] + bl MOD09_02216BB0 + add r0, r5, r4 + add r0, #0x2a + ldrb r0, [r0] + mov r1, #0x9f + mov r2, #0x90 + bl MOD09_022175E0 + add r7, r0, #0 + add r0, r5, r4 + add r0, #0x2a + ldrb r0, [r0] + mov r1, #0x2f + mov r2, #0x18 + bl MOD09_022175E0 + add r2, r0, #0 + ldr r0, _02217744 ; =0x0000202C + add r1, r7, #0 + ldr r0, [r6, r0] + bl MOD09_02216BB0 + add r0, r5, r4 + add r0, #0x2b + ldrb r0, [r0] + mov r1, #0x80 + mov r2, #0x8f + bl MOD09_022175E0 + add r7, r0, #0 + add r0, r5, r4 + add r0, #0x2b + ldrb r0, [r0] + mov r1, #0x2f + mov r2, #0x18 + bl MOD09_022175E0 + add r2, r0, #0 + ldr r0, _02217748 ; =0x00002030 + add r1, r7, #0 + ldr r0, [r6, r0] + bl MOD09_02216BB0 + add r0, r5, r4 + add r0, #0x2c + ldrb r0, [r0] + mov r1, #0x78 + mov r2, #0x8f + bl MOD09_022175E0 + add r7, r0, #0 + add r0, r5, r4 + add r0, #0x2c + ldrb r0, [r0] + mov r1, #0x12 + mov r2, #0x18 + bl MOD09_022175E0 + add r2, r0, #0 + ldr r0, _0221774C ; =0x00002034 + add r1, r7, #0 + ldr r0, [r6, r0] + bl MOD09_02216BB0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221773C: .word 0x00002024 +_02217740: .word 0x00002028 +_02217744: .word 0x0000202C +_02217748: .word 0x00002030 +_0221774C: .word 0x00002034 + + thumb_func_start MOD09_02217750 +MOD09_02217750: ; 0x02217750 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02230078 + ldr r3, _022177A8 ; =0x0000B00C + mov r2, #0x7a + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r1, _022177AC ; =0x00001FB4 + lsl r2, r2, #2 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r3, #0xc + add r4, r0, #0 + bl FUN_0225D3EC + ldr r3, _022177A8 ; =0x0000B00C + mov r0, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r1, _022177AC ; =0x00001FB4 + ldr r2, [r5] + ldr r1, [r5, r1] + ldr r2, [r2, #0xc] + add r0, r4, #0 + add r3, #0xc + bl FUN_0225D484 + add r1, r0, #0 + ldr r0, _022177B0 ; =0x00002088 + ldr r0, [r5, r0] + bl MOD09_0221AC30 + add sp, #0x14 + pop {r4, r5, pc} + nop +_022177A8: .word 0x0000B00C +_022177AC: .word 0x00001FB4 +_022177B0: .word 0x00002088 + + thumb_func_start MOD09_022177B4 +MOD09_022177B4: ; 0x022177B4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _022177DC ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AC24 + bl FUN_0225D508 + ldr r2, _022177E0 ; =0x0000B00C + ldr r0, _022177E4 ; =0x00001FB4 + str r2, [sp] + add r1, r2, #0 + ldr r0, [r4, r0] + add r1, #0xc + add r3, r2, #0 + bl FUN_0225D45C + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022177DC: .word 0x00002088 +_022177E0: .word 0x0000B00C +_022177E4: .word 0x00001FB4 + + thumb_func_start MOD09_022177E8 +MOD09_022177E8: ; 0x022177E8 + push {r3, lr} + ldr r1, _0221780C ; =0x00002077 + ldrb r2, [r0, r1] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1c + bne _02217800 + add r1, #0x11 + ldr r0, [r0, r1] + mov r1, #0x5f + bl MOD09_0221AC94 + pop {r3, pc} +_02217800: + add r1, #0x11 + ldr r0, [r0, r1] + mov r1, #0x7f + bl MOD09_0221AC94 + pop {r3, pc} + .align 2, 0 +_0221780C: .word 0x00002077 + + thumb_func_start MOD09_02217810 +MOD09_02217810: ; 0x02217810 + push {r3, lr} + ldr r1, _02217834 ; =0x00002077 + ldrb r2, [r0, r1] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1c + bne _02217828 + add r1, #0x11 + ldr r0, [r0, r1] + mov r1, #5 + bl MOD09_0221AC94 + pop {r3, pc} +_02217828: + add r1, #0x11 + ldr r0, [r0, r1] + mov r1, #7 + bl MOD09_0221AC94 + pop {r3, pc} + .align 2, 0 +_02217834: .word 0x00002077 + + thumb_func_start MOD09_02217838 +MOD09_02217838: ; 0x02217838 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, _022178D8 ; =0x00002088 + ldr r1, _022178DC ; =0x0221B558 + lsl r2, r5, #2 + ldr r0, [r4, r0] + ldr r1, [r1, r2] + bl MOD09_0221AC68 + cmp r5, #9 + bhi _022178D6 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0221785C: ; jump table + .short _02217870 - _0221785C - 2 ; case 0 + .short _0221788A - _0221785C - 2 ; case 1 + .short _022178D6 - _0221785C - 2 ; case 2 + .short _022178A0 - _0221785C - 2 ; case 3 + .short _022178A0 - _0221785C - 2 ; case 4 + .short _022178D6 - _0221785C - 2 ; case 5 + .short _022178B0 - _0221785C - 2 ; case 6 + .short _022178C4 - _0221785C - 2 ; case 7 + .short _022178B0 - _0221785C - 2 ; case 8 + .short _022178C4 - _0221785C - 2 ; case 9 +_02217870: + ldr r1, [r4] + ldr r0, _022178D8 ; =0x00002088 + ldrb r1, [r1, #0x11] + ldr r0, [r4, r0] + bl MOD09_0221AC34 + ldr r0, _022178E0 ; =0x0000208C + mov r1, #0 + strb r1, [r4, r0] + ldr r0, [r4] + add r0, #0x34 + strb r1, [r0] + pop {r3, r4, r5, pc} +_0221788A: + ldr r1, _022178D8 ; =0x00002088 + ldr r0, [r4, r1] + add r1, r1, #4 + ldrb r1, [r4, r1] + bl MOD09_0221AC34 + ldr r0, [r4] + mov r1, #0 + add r0, #0x34 + strb r1, [r0] + pop {r3, r4, r5, pc} +_022178A0: + ldr r1, [r4] + ldr r0, _022178D8 ; =0x00002088 + add r1, #0x34 + ldrb r1, [r1] + ldr r0, [r4, r0] + bl MOD09_0221AC34 + pop {r3, r4, r5, pc} +_022178B0: + add r0, r4, #0 + bl MOD09_022177E8 + ldr r1, _022178D8 ; =0x00002088 + ldr r0, [r4, r1] + add r1, r1, #5 + ldrb r1, [r4, r1] + bl MOD09_0221AC34 + pop {r3, r4, r5, pc} +_022178C4: + add r0, r4, #0 + bl MOD09_02217810 + ldr r1, _022178D8 ; =0x00002088 + ldr r0, [r4, r1] + add r1, r1, #6 + ldrb r1, [r4, r1] + bl MOD09_0221AC34 +_022178D6: + pop {r3, r4, r5, pc} + .align 2, 0 +_022178D8: .word 0x00002088 +_022178DC: .word 0x0221B558 +_022178E0: .word 0x0000208C + + thumb_func_start MOD09_022178E4 +MOD09_022178E4: ; 0x022178E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02217908 ; =0x00002088 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD09_0221AC2C + ldr r0, _02217908 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AC5C + ldr r0, _02217908 ; =0x00002088 + ldr r0, [r4, r0] + bl MOD09_0221AC24 + bl FUN_0225D648 + pop {r4, pc} + .align 2, 0 +_02217908: .word 0x00002088 + + thumb_func_start MOD09_0221790C +MOD09_0221790C: ; 0x0221790C + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x7b + lsl r0, r0, #2 + mov r2, #0 + add r0, r5, r0 + add r3, r2, #0 + add r4, r1, #0 + bl MOD09_02217CEC + mov r0, #0x10 + str r0, [sp] + mov r0, #0xab + lsl r0, r0, #2 + mov r3, #6 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + str r3, [sp, #4] + bl MOD09_02217CEC + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + mov r3, #0xc + bl MOD09_02217CEC + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _02217BCC ; =0x0000042C + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x12 + bl MOD09_02217CEC + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _02217BD0 ; =0x000004EC + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0 + bl MOD09_02217CEC + ldr r0, _02217BD4 ; =0x000005AC + mov r2, #0x10 + str r2, [sp] + mov r3, #6 + add r0, r5, r0 + add r1, r4, #0 + str r3, [sp, #4] + bl MOD09_02217CEC + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _02217BD8 ; =0x0000066C + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0xc + bl MOD09_02217CEC + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _02217BDC ; =0x0000072C + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0x12 + bl MOD09_02217CEC + mov r0, #0xd + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _02217BE0 ; =0x000007EC + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x27 + bl MOD09_02217CEC + mov r0, #0xd + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _02217BE4 ; =0x0000086E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x2c + bl MOD09_02217CEC + mov r2, #0xd + str r2, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #0x8f + lsl r0, r0, #4 + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x27 + bl MOD09_02217CEC + mov r2, #0xd + str r2, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _02217BE8 ; =0x00000972 + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0x2c + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217BEC ; =0x000009F4 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x31 + bl MOD09_02217CEC + ldr r0, _02217BF0 ; =0x00000A26 + mov r2, #5 + str r2, [sp] + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x31 + str r2, [sp, #4] + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217BF4 ; =0x00000A58 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0x31 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217BF8 ; =0x00000A8A + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xf + mov r3, #0x31 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217BFC ; =0x00000ABC + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x36 + bl MOD09_02217CEC + ldr r0, _02217C00 ; =0x00000AEE + mov r2, #5 + str r2, [sp] + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x36 + str r2, [sp, #4] + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0xb2 + lsl r0, r0, #4 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0xa + mov r3, #0x36 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217C04 ; =0x00000B52 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xf + mov r3, #0x36 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217C08 ; =0x00000B84 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1a + mov r3, #0x18 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217C0C ; =0x00000BB6 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1a + mov r3, #0x1d + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217C10 ; =0x00000BE8 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1a + mov r3, #0x22 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02217C14 ; =0x00000C1A + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1a + mov r3, #0x27 + bl MOD09_02217CEC + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #0x6d + lsl r0, r0, #6 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + mov r3, #0x18 + bl MOD09_02217CEC + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _02217C18 ; =0x00001C44 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x1d + bl MOD09_02217CEC + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _02217C1C ; =0x00001D48 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x22 + bl MOD09_02217CEC + mov r0, #9 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02217C20 ; =0x00001E4C + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x31 + bl MOD09_02217CEC + mov r0, #9 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02217C24 ; =0x00001E94 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x35 + bl MOD09_02217CEC + mov r0, #9 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02217C28 ; =0x00001EDC + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x39 + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02217C2C ; =0x00001F24 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x3b + bl MOD09_02217CEC + mov r2, #5 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02217C30 ; =0x00001F38 + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0x3b + bl MOD09_02217CEC + mov r0, #5 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02217C34 ; =0x00001F4C + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0x3b + bl MOD09_02217CEC + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02217BCC: .word 0x0000042C +_02217BD0: .word 0x000004EC +_02217BD4: .word 0x000005AC +_02217BD8: .word 0x0000066C +_02217BDC: .word 0x0000072C +_02217BE0: .word 0x000007EC +_02217BE4: .word 0x0000086E +_02217BE8: .word 0x00000972 +_02217BEC: .word 0x000009F4 +_02217BF0: .word 0x00000A26 +_02217BF4: .word 0x00000A58 +_02217BF8: .word 0x00000A8A +_02217BFC: .word 0x00000ABC +_02217C00: .word 0x00000AEE +_02217C04: .word 0x00000B52 +_02217C08: .word 0x00000B84 +_02217C0C: .word 0x00000BB6 +_02217C10: .word 0x00000BE8 +_02217C14: .word 0x00000C1A +_02217C18: .word 0x00001C44 +_02217C1C: .word 0x00001D48 +_02217C20: .word 0x00001E4C +_02217C24: .word 0x00001E94 +_02217C28: .word 0x00001EDC +_02217C2C: .word 0x00001F24 +_02217C30: .word 0x00001F38 +_02217C34: .word 0x00001F4C + + thumb_func_start MOD09_02217C38 +MOD09_02217C38: ; 0x02217C38 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x1e + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + ldr r0, _02217CE0 ; =0x00000C4C + mov r2, #0 + add r0, r5, r0 + add r3, r2, #0 + add r4, r1, #0 + bl MOD09_02217CEC + mov r0, #0x1e + str r0, [sp] + ldr r0, _02217CE4 ; =0x00001048 + mov r3, #0x11 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + str r3, [sp, #4] + bl MOD09_02217CEC + mov r0, #0x1e + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + ldr r0, _02217CE8 ; =0x00001444 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x22 + bl MOD09_02217CEC + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x61 + lsl r0, r0, #6 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + mov r3, #0x33 + bl MOD09_02217CEC + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x19 + lsl r0, r0, #8 + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x33 + bl MOD09_02217CEC + mov r0, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x67 + lsl r0, r0, #6 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + mov r3, #0x39 + bl MOD09_02217CEC + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x6a + lsl r0, r0, #6 + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x39 + bl MOD09_02217CEC + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02217CE0: .word 0x00000C4C +_02217CE4: .word 0x00001048 +_02217CE8: .word 0x00001444 + + thumb_func_start MOD09_02217CEC +MOD09_02217CEC: ; 0x02217CEC + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r0, sp, #8 + mov lr, r3 + ldrb r3, [r0, #0x14] + mov r6, #0 + mov ip, r3 + cmp r3, #0 + ble _02217D38 + ldrb r3, [r0, #0x10] + lsl r2, r2, #1 + add r7, r1, r2 +_02217D04: + mov r2, #0 + cmp r3, #0 + ble _02217D2C + mov r0, lr + add r0, r0, r6 + lsl r0, r0, #6 + add r5, r7, r0 + add r0, r6, #0 + mul r0, r3 + lsl r1, r0, #1 + ldr r0, [sp] + add r4, r0, r1 +_02217D1C: + lsl r1, r2, #1 + ldrh r0, [r5, r1] + strh r0, [r4, r1] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, r3 + blt _02217D1C +_02217D2C: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + mov r0, ip + cmp r6, r0 + blt _02217D04 +_02217D38: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_02217D3C +MOD09_02217D3C: ; 0x02217D3C + cmp r1, #0x21 + bhi _02217E22 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02217D4C: ; jump table + .short _02217D90 - _02217D4C - 2 ; case 0 + .short _02217D90 - _02217D4C - 2 ; case 1 + .short _02217D90 - _02217D4C - 2 ; case 2 + .short _02217D90 - _02217D4C - 2 ; case 3 + .short _02217D90 - _02217D4C - 2 ; case 4 + .short _02217D90 - _02217D4C - 2 ; case 5 + .short _02217DAE - _02217D4C - 2 ; case 6 + .short _02217DBA - _02217D4C - 2 ; case 7 + .short _02217DC8 - _02217D4C - 2 ; case 8 + .short _02217DC8 - _02217D4C - 2 ; case 9 + .short _02217DC8 - _02217D4C - 2 ; case 10 + .short _02217DC8 - _02217D4C - 2 ; case 11 + .short _02217DD4 - _02217D4C - 2 ; case 12 + .short _02217DE0 - _02217D4C - 2 ; case 13 + .short _02217DEC - _02217D4C - 2 ; case 14 + .short _02217DEC - _02217D4C - 2 ; case 15 + .short _02217DEC - _02217D4C - 2 ; case 16 + .short _02217DEC - _02217D4C - 2 ; case 17 + .short _02217E0A - _02217D4C - 2 ; case 18 + .short _02217DEC - _02217D4C - 2 ; case 19 + .short _02217DEC - _02217D4C - 2 ; case 20 + .short _02217DEC - _02217D4C - 2 ; case 21 + .short _02217DEC - _02217D4C - 2 ; case 22 + .short _02217DEC - _02217D4C - 2 ; case 23 + .short _02217DEC - _02217D4C - 2 ; case 24 + .short _02217DEC - _02217D4C - 2 ; case 25 + .short _02217DEC - _02217D4C - 2 ; case 26 + .short _02217DEC - _02217D4C - 2 ; case 27 + .short _02217DFA - _02217D4C - 2 ; case 28 + .short _02217DFA - _02217D4C - 2 ; case 29 + .short _02217E16 - _02217D4C - 2 ; case 30 + .short _02217E16 - _02217D4C - 2 ; case 31 + .short _02217E16 - _02217D4C - 2 ; case 32 + .short _02217E16 - _02217D4C - 2 ; case 33 +_02217D90: + cmp r3, #0 + bne _02217DA2 + mov r1, #0x7b + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0xc0 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DA2: + ldr r1, _02217E28 ; =0x000004EC + add r1, r0, r1 + mov r0, #0xc0 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DAE: + ldr r1, _02217E2C ; =0x00000B84 + add r1, r0, r1 + mov r0, #0x32 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DBA: + ldr r1, _02217E30 ; =0x00000C4C + add r1, r0, r1 + mov r0, #0xff + lsl r0, r0, #2 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DC8: + ldr r1, _02217E34 ; =0x000007EC + add r1, r0, r1 + mov r0, #0x82 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DD4: + ldr r1, _02217E38 ; =0x000009F4 + add r1, r0, r1 + mov r0, #0x32 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DE0: + ldr r1, _02217E3C ; =0x00000ABC + add r1, r0, r1 + mov r0, #0x32 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DEC: + mov r1, #0x61 + lsl r1, r1, #6 + add r1, r0, r1 + mov r0, #0xc0 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217DFA: + mov r1, #0x6d + lsl r1, r1, #6 + add r1, r0, r1 + lsl r0, r2, #6 + add r0, r2, r0 + lsl r0, r0, #2 + add r0, r1, r0 + bx lr +_02217E0A: + ldr r1, _02217E40 ; =0x00001E4C + add r1, r0, r1 + mov r0, #0x48 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217E16: + ldr r1, _02217E44 ; =0x00001F24 + add r1, r0, r1 + mov r0, #0x14 + mul r0, r2 + add r0, r1, r0 + bx lr +_02217E22: + mov r0, #0 + bx lr + nop +_02217E28: .word 0x000004EC +_02217E2C: .word 0x00000B84 +_02217E30: .word 0x00000C4C +_02217E34: .word 0x000007EC +_02217E38: .word 0x000009F4 +_02217E3C: .word 0x00000ABC +_02217E40: .word 0x00001E4C +_02217E44: .word 0x00001F24 + + thumb_func_start MOD09_02217E48 +MOD09_02217E48: ; 0x02217E48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r2, r3, #0 + add r3, sp, #0x10 + add r4, r1, #0 + ldrb r3, [r3, #0x10] + add r1, r7, #0 + str r0, [sp] + bl MOD09_02217D3C + add r1, r0, #0 + ldr r2, _02217F7C ; =0x0221BAF2 + lsl r0, r7, #2 + ldrb r6, [r2, r0] + ldr r2, _02217F80 ; =0x0221BAF3 + ldrb r0, [r2, r0] + add r5, r6, #0 + mul r5, r0 + add r0, r4, #0 + lsl r2, r5, #1 + bl memcpy + cmp r7, #5 + bgt _02217E96 + cmp r7, #0 + blt _02217F78 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02217E8A: ; jump table + .short _02217E9E - _02217E8A - 2 ; case 0 + .short _02217E9E - _02217E8A - 2 ; case 1 + .short _02217E9E - _02217E8A - 2 ; case 2 + .short _02217E9E - _02217E8A - 2 ; case 3 + .short _02217E9E - _02217E8A - 2 ; case 4 + .short _02217E9E - _02217E8A - 2 ; case 5 +_02217E96: + cmp r7, #0x1b + beq _02217F58 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02217E9E: + mov r0, #0x50 + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp] + add r0, r0, r1 + ldrh r1, [r0, #8] + cmp r1, #0 + beq _02217F78 + ldrb r1, [r0, #0x1b] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _02217EFE + lsl r2, r6, #1 + add r0, r2, #5 + lsl r0, r0, #1 + ldrh r1, [r4, r0] + add r0, sp, #4 + strh r1, [r0] + add r1, r6, r2 + add r1, r1, #5 + lsl r1, r1, #1 + ldrh r1, [r4, r1] + strh r1, [r0, #2] + mov r1, #0 + add r0, sp, #4 +_02217ED0: + add r5, r1, #2 + lsl r3, r1, #1 + add r7, r5, #0 + mul r7, r6 + lsl r5, r7, #1 + ldrh r3, [r0, r3] + mov r2, #0 + add r5, r4, r5 +_02217EE0: + lsl r7, r2, #1 + add r2, r2, #1 + lsl r2, r2, #0x18 + add r7, r5, r7 + lsr r2, r2, #0x18 + strh r3, [r7, #0xc] + cmp r2, #9 + blo _02217EE0 + add r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #2 + blo _02217ED0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02217EFE: + ldrh r0, [r0, #0x14] + cmp r0, #0 + bne _02217F28 + mov r1, #0 + cmp r5, #0 + ble _02217F78 + mov r3, #2 + ldr r2, _02217F84 ; =0x00000FFF + lsl r3, r3, #0xc +_02217F10: + lsl r0, r1, #1 + ldrh r6, [r4, r0] + and r6, r2 + orr r6, r3 + strh r6, [r4, r0] + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, r5 + blt _02217F10 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02217F28: + lsl r1, r7, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD09_02213BDC + cmp r0, #1 + bne _02217F78 + mov r1, #0 + cmp r5, #0 + ble _02217F78 + ldr r2, _02217F84 ; =0x00000FFF + add r3, r2, #1 +_02217F40: + lsl r0, r1, #1 + ldrh r6, [r4, r0] + and r6, r2 + orr r6, r3 + strh r6, [r4, r0] + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, r5 + blt _02217F40 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02217F58: + mov r1, #0 + cmp r5, #0 + ble _02217F78 + mov r3, #0xa + ldr r2, _02217F84 ; =0x00000FFF + lsl r3, r3, #0xc +_02217F64: + lsl r0, r1, #1 + ldrh r6, [r4, r0] + and r6, r2 + orr r6, r3 + strh r6, [r4, r0] + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, r5 + blt _02217F64 +_02217F78: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02217F7C: .word 0x0221BAF2 +_02217F80: .word 0x0221BAF3 +_02217F84: .word 0x00000FFF + + thumb_func_start MOD09_02217F88 +MOD09_02217F88: ; 0x02217F88 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r1, [sp, #0xc] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + add r5, r0, #0 + ldr r0, [sp, #0xc] + lsl r4, r0, #2 + ldr r0, _02217FF4 ; =0x0221BAF3 + ldrb r7, [r0, r4] + ldr r0, _02217FF8 ; =0x0221BAF2 + ldrb r6, [r0, r4] + ldr r0, [r5] + add r1, r6, #0 + mul r1, r7 + ldr r0, [r0, #0xc] + lsl r1, r1, #1 + bl FUN_02016998 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl MOD09_02217E48 + ldr r0, _02217FFC ; =0x0221BAF1 + ldr r3, _02218000 ; =0x0221BAF0 + ldrb r0, [r0, r4] + ldrb r3, [r3, r4] + ldr r2, [sp, #0x18] + str r0, [sp] + str r6, [sp, #4] + mov r0, #0x79 + str r7, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl FUN_02018148 + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl FUN_0201AC68 + ldr r0, [sp, #0x18] + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02217FF4: .word 0x0221BAF3 +_02217FF8: .word 0x0221BAF2 +_02217FFC: .word 0x0221BAF1 +_02218000: .word 0x0221BAF0 + + thumb_func_start MOD09_02218004 +MOD09_02218004: ; 0x02218004 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _022180A4 ; =0x0221BA68 + lsl r3, r1, #2 + ldr r6, [r0, r3] + cmp r6, #0 + beq _022180A2 + cmp r1, #5 + bhi _0221801E + ldr r0, _022180A8 ; =0x0221BA58 + ldrb r0, [r0, r2] + str r0, [sp] + b _02218024 +_0221801E: + ldr r0, _022180AC ; =0x0221BA48 + ldrb r0, [r0, r2] + str r0, [sp] +_02218024: + cmp r2, #0 + beq _02218032 + cmp r2, #1 + beq _02218036 + cmp r2, #2 + beq _0221803A + b _0221803C +_02218032: + mov r7, #1 + b _0221803C +_02218036: + mov r7, #0 + b _0221803C +_0221803A: + mov r7, #1 +_0221803C: + cmp r1, #0xe + blo _02218070 + cmp r1, #0x11 + bhi _02218070 + ldr r1, _022180B0 ; =0x00002070 + ldr r2, [sp] + ldr r0, [r5, r1] + add r1, r1, #5 + ldrb r1, [r5, r1] + mov r3, #0 + ldrb r1, [r6, r1] + lsl r1, r1, #4 + add r0, r0, r1 + add r1, r7, #0 + bl FUN_0201A8C8 + ldr r1, _022180B0 ; =0x00002070 + ldr r0, [r5, r1] + add r1, r1, #5 + ldrb r1, [r5, r1] + ldrb r1, [r6, r1] + lsl r1, r1, #4 + add r0, r0, r1 + bl FUN_02019220 + pop {r3, r4, r5, r6, r7, pc} +_02218070: + mov r4, #0 +_02218072: + ldrb r2, [r6, r4] + cmp r2, #0xff + beq _022180A2 + ldr r0, _022180B0 ; =0x00002070 + mov r3, #0 + ldr r1, [r5, r0] + lsl r0, r2, #4 + add r0, r1, r0 + ldr r2, [sp] + add r1, r7, #0 + bl FUN_0201A8C8 + ldr r0, _022180B0 ; =0x00002070 + ldr r1, [r5, r0] + ldrb r0, [r6, r4] + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_02019220 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #8 + blo _02218072 +_022180A2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022180A4: .word 0x0221BA68 +_022180A8: .word 0x0221BA58 +_022180AC: .word 0x0221BA48 +_022180B0: .word 0x00002070 + + thumb_func_start MOD09_022180B4 +MOD09_022180B4: ; 0x022180B4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0x1b + bhi _022181B8 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022180CA: ; jump table + .short _02218102 - _022180CA - 2 ; case 0 + .short _02218102 - _022180CA - 2 ; case 1 + .short _02218102 - _022180CA - 2 ; case 2 + .short _02218102 - _022180CA - 2 ; case 3 + .short _02218102 - _022180CA - 2 ; case 4 + .short _02218102 - _022180CA - 2 ; case 5 + .short _022181B8 - _022180CA - 2 ; case 6 + .short _02218140 - _022180CA - 2 ; case 7 + .short _022181B8 - _022180CA - 2 ; case 8 + .short _022181B8 - _022180CA - 2 ; case 9 + .short _022181B8 - _022180CA - 2 ; case 10 + .short _022181B8 - _022180CA - 2 ; case 11 + .short _022181B8 - _022180CA - 2 ; case 12 + .short _022181B8 - _022180CA - 2 ; case 13 + .short _02218172 - _022180CA - 2 ; case 14 + .short _02218172 - _022180CA - 2 ; case 15 + .short _02218172 - _022180CA - 2 ; case 16 + .short _02218172 - _022180CA - 2 ; case 17 + .short _022181B8 - _022180CA - 2 ; case 18 + .short _0221818A - _022180CA - 2 ; case 19 + .short _0221818A - _022180CA - 2 ; case 20 + .short _0221818A - _022180CA - 2 ; case 21 + .short _0221818A - _022180CA - 2 ; case 22 + .short _022181A2 - _022180CA - 2 ; case 23 + .short _022181A2 - _022180CA - 2 ; case 24 + .short _022181A2 - _022180CA - 2 ; case 25 + .short _022181A2 - _022180CA - 2 ; case 26 + .short _022181A2 - _022180CA - 2 ; case 27 +_02218102: + ldr r0, _022181BC ; =0x0221BA62 + lsl r1, r2, #1 + ldrsh r6, [r0, r1] + add r0, r5, #0 + add r0, #0xd + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + add r2, r6, #0 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + add r2, r6, #0 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + add r0, r5, #7 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + add r2, r6, #0 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + pop {r4, r5, r6, pc} +_02218140: + ldr r0, _022181C4 ; =0x0221BA5C + lsl r1, r2, #1 + ldrsh r5, [r0, r1] + ldr r0, [r4] + ldrb r0, [r0, #0x11] + add r2, r5, #0 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + ldr r0, [r4] + add r2, r5, #0 + ldrb r0, [r0, #0x11] + add r0, r0, #7 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + pop {r4, r5, r6, pc} +_02218172: + add r0, r5, #7 + lsl r0, r0, #2 + lsl r3, r2, #1 + ldr r2, _022181C4 ; =0x0221BA5C + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + ldrsh r2, [r2, r3] + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + pop {r4, r5, r6, pc} +_0221818A: + add r0, r5, #2 + lsl r0, r0, #2 + lsl r3, r2, #1 + ldr r2, _022181C4 ; =0x0221BA5C + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + ldrsh r2, [r2, r3] + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C + pop {r4, r5, r6, pc} +_022181A2: + sub r0, r5, #2 + lsl r0, r0, #2 + lsl r3, r2, #1 + ldr r2, _022181C4 ; =0x0221BA5C + add r1, r4, r0 + ldr r0, _022181C0 ; =0x00001FB8 + ldrsh r2, [r2, r3] + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C82C +_022181B8: + pop {r4, r5, r6, pc} + nop +_022181BC: .word 0x0221BA62 +_022181C0: .word 0x00001FB8 +_022181C4: .word 0x0221BA5C + + thumb_func_start MOD09_022181C8 +MOD09_022181C8: ; 0x022181C8 + push {r4, r5, r6, lr} + ldr r3, _02218210 ; =0x00001FA3 + add r5, r0, #0 + ldrb r6, [r5, r3] + mov r2, #0x70 + add r4, r1, #0 + bic r6, r2 + strb r6, [r5, r3] + cmp r4, #5 + bhi _022181F2 + bl MOD09_02213620 + cmp r0, #2 + bne _022181F2 + ldr r1, _02218210 ; =0x00001FA3 + mov r0, #0x70 + ldrb r2, [r5, r1] + bic r2, r0 + mov r0, #0x10 + orr r0, r2 + strb r0, [r5, r1] +_022181F2: + ldr r0, _02218214 ; =0x00001FA0 + mov r2, #0 + strb r2, [r5, r0] + add r1, r0, #1 + strb r2, [r5, r1] + add r1, r0, #2 + strb r4, [r5, r1] + add r1, r0, #3 + ldrb r2, [r5, r1] + mov r1, #0x80 + add r0, r0, #3 + orr r1, r2 + strb r1, [r5, r0] + pop {r4, r5, r6, pc} + nop +_02218210: .word 0x00001FA3 +_02218214: .word 0x00001FA0 + + thumb_func_start MOD09_02218218 +MOD09_02218218: ; 0x02218218 + push {r4, lr} + ldr r2, _022182DC ; =0x00001FA3 + add r4, r0, #0 + ldrb r3, [r4, r2] + lsl r1, r3, #0x18 + lsr r1, r1, #0x1f + beq _022182D8 + sub r1, r2, #3 + ldrb r1, [r4, r1] + cmp r1, #0 + beq _02218238 + cmp r1, #1 + beq _0221826C + cmp r1, #2 + beq _022182A0 + pop {r4, pc} +_02218238: + sub r1, r2, #1 + ldrb r1, [r4, r1] + lsl r3, r3, #0x19 + mov r2, #1 + lsr r3, r3, #0x1d + bl MOD09_02217F88 + ldr r1, _022182E0 ; =0x00001FA2 + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #1 + bl MOD09_02218004 + ldr r1, _022182E0 ; =0x00001FA2 + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #1 + bl MOD09_022180B4 + ldr r0, _022182E4 ; =0x00001FA1 + mov r1, #0 + strb r1, [r4, r0] + mov r1, #1 + sub r0, r0, #1 + strb r1, [r4, r0] + pop {r4, pc} +_0221826C: + sub r1, r2, #1 + ldrb r1, [r4, r1] + lsl r3, r3, #0x19 + mov r2, #2 + lsr r3, r3, #0x1d + bl MOD09_02217F88 + ldr r1, _022182E0 ; =0x00001FA2 + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #2 + bl MOD09_02218004 + ldr r1, _022182E0 ; =0x00001FA2 + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #2 + bl MOD09_022180B4 + ldr r0, _022182E4 ; =0x00001FA1 + mov r1, #0 + strb r1, [r4, r0] + mov r1, #2 + sub r0, r0, #1 + strb r1, [r4, r0] + pop {r4, pc} +_022182A0: + sub r1, r2, #1 + ldrb r1, [r4, r1] + lsl r3, r3, #0x19 + mov r2, #0 + lsr r3, r3, #0x1d + bl MOD09_02217F88 + ldr r1, _022182E0 ; =0x00001FA2 + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #0 + bl MOD09_02218004 + ldr r1, _022182E0 ; =0x00001FA2 + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #0 + bl MOD09_022180B4 + ldr r0, _022182E4 ; =0x00001FA1 + mov r1, #0 + strb r1, [r4, r0] + add r1, r0, #2 + ldrb r2, [r4, r1] + mov r1, #0x80 + add r0, r0, #2 + bic r2, r1 + strb r2, [r4, r0] +_022182D8: + pop {r4, pc} + nop +_022182DC: .word 0x00001FA3 +_022182E0: .word 0x00001FA2 +_022182E4: .word 0x00001FA1 + + thumb_func_start MOD09_022182E8 +MOD09_022182E8: ; 0x022182E8 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + cmp r1, #9 + bls _022182F2 + b _0221863A +_022182F2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022182FE: ; jump table + .short _02218312 - _022182FE - 2 ; case 0 + .short _0221838A - _022182FE - 2 ; case 1 + .short _022183E6 - _022182FE - 2 ; case 2 + .short _0221843A - _022182FE - 2 ; case 3 + .short _022184D8 - _022182FE - 2 ; case 4 + .short _02218524 - _022182FE - 2 ; case 5 + .short _0221857C - _022182FE - 2 ; case 6 + .short _022185DC - _022182FE - 2 ; case 7 + .short _0221857C - _022182FE - 2 ; case 8 + .short _0221860C - _022182FE - 2 ; case 9 +_02218312: + mov r5, #0 + mov r6, #3 + mov r7, #1 +_02218318: + add r0, r4, #0 + add r1, r5, #0 + bl MOD09_02213620 + cmp r0, #0 + bne _02218334 + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl MOD09_02217F88 + b _0221835A +_02218334: + cmp r0, #1 + bne _02218348 + lsl r1, r5, #0x18 + mov r2, #0 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl MOD09_02217F88 + b _0221835A +_02218348: + cmp r0, #2 + bne _0221835A + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + mov r2, #0 + mov r3, #1 + bl MOD09_02217F88 +_0221835A: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #6 + blo _02218318 + ldr r0, [r4] + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #1 + bne _0221837C + add r0, r4, #0 + mov r1, #6 + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_0221837C: + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_0221838A: + mov r2, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #7 + add r3, r2, #0 + bl MOD09_02217F88 + ldr r0, [r4] + ldrb r1, [r0, #0x11] + mov r0, #0x50 + mul r0, r1 + add r0, r4, r0 + ldrb r0, [r0, #0x1b] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + beq _022183CC + add r0, r4, #0 + mov r1, #8 + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 + add r0, r4, #0 + mov r1, #0xa + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_022183CC: + mov r2, #0 + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0xa + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_022183E6: + bl MOD09_02218680 + cmp r0, #1 + bne _02218408 + mov r2, #0 + add r0, r4, #0 + mov r1, #0xc + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0xd + add r3, r2, #0 + bl MOD09_02217F88 + b _02218420 +_02218408: + add r0, r4, #0 + mov r1, #0xc + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 + add r0, r4, #0 + mov r1, #0xd + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 +_02218420: + mov r2, #0 + add r0, r4, #0 + mov r1, #0xb + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_0221843A: + bl MOD09_02218680 + cmp r0, #1 + bne _0221845C + mov r2, #0 + add r0, r4, #0 + mov r1, #0xc + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0xd + add r3, r2, #0 + bl MOD09_02217F88 + b _02218474 +_0221845C: + add r0, r4, #0 + mov r1, #0xc + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 + add r0, r4, #0 + mov r1, #0xd + mov r2, #3 + mov r3, #0 + bl MOD09_02217F88 +_02218474: + mov r5, #0 + mov r7, #3 + mov r6, #0x50 +_0221847A: + ldr r0, [r4] + lsl r1, r5, #3 + ldrb r0, [r0, #0x11] + add r2, r0, #0 + mul r2, r6 + add r0, r4, r2 + add r0, r1, r0 + ldrh r0, [r0, #0x34] + cmp r0, #0 + beq _022184A2 + add r1, r5, #0 + add r1, #0xe + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl MOD09_02217F88 + b _022184B4 +_022184A2: + add r1, r5, #0 + add r1, #0xe + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r2, r7, #0 + mov r3, #0 + bl MOD09_02217F88 +_022184B4: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #4 + blo _0221847A + mov r2, #0 + add r0, r4, #0 + mov r1, #9 + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_022184D8: + mov r2, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + mov r5, #0 + mov r6, #2 + add r7, r5, #0 +_022184E8: + ldr r0, [r4] + add r0, #0x34 + ldrb r0, [r0] + cmp r0, r5 + bne _02218506 + add r1, r5, #0 + add r1, #0x1e + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl MOD09_02217F88 + b _02218518 +_02218506: + add r1, r5, #0 + add r1, #0x1e + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl MOD09_02217F88 +_02218518: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #4 + blo _022184E8 + pop {r3, r4, r5, r6, r7, pc} +_02218524: + mov r5, #0 + mov r7, #3 + mov r6, #0x50 +_0221852A: + ldr r0, [r4] + lsl r1, r5, #3 + ldrb r0, [r0, #0x11] + add r2, r0, #0 + mul r2, r6 + add r0, r4, r2 + add r0, r1, r0 + ldrh r0, [r0, #0x34] + cmp r0, #0 + beq _02218552 + add r1, r5, #0 + add r1, #0x13 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl MOD09_02217F88 + b _02218564 +_02218552: + add r1, r5, #0 + add r1, #0x13 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + add r2, r7, #0 + mov r3, #0 + bl MOD09_02217F88 +_02218564: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #4 + blo _0221852A + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_0221857C: + mov r2, #0 + mov r1, #0x17 + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0x18 + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0x19 + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0x1a + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #0x1b + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + ldr r0, _0221863C ; =0x00002077 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + cmp r0, #1 + bne _0221863A + mov r2, #0 + add r0, r4, #0 + mov r1, #0x12 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_022185DC: + mov r2, #0 + mov r1, #0x1c + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + ldr r0, _0221863C ; =0x00002077 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + cmp r0, #1 + bne _0221863A + mov r2, #0 + add r0, r4, #0 + mov r1, #0x12 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r3, r4, r5, r6, r7, pc} +_0221860C: + mov r2, #0 + mov r1, #0x1d + add r3, r2, #0 + bl MOD09_02217F88 + mov r2, #0 + add r0, r4, #0 + mov r1, #6 + add r3, r2, #0 + bl MOD09_02217F88 + ldr r0, _0221863C ; =0x00002077 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + cmp r0, #1 + bne _0221863A + mov r2, #0 + add r0, r4, #0 + mov r1, #0x12 + add r3, r2, #0 + bl MOD09_02217F88 +_0221863A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221863C: .word 0x00002077 + + thumb_func_start MOD09_02218640 +MOD09_02218640: ; 0x02218640 + push {r3, lr} + add r2, r0, #0 + cmp r1, #3 + bne _02218662 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + mov r1, #0x7e + lsl r1, r1, #6 + ldr r0, [r2, r0] + add r1, r2, r1 + mov r2, #1 + mov r3, #0xc0 + bl FUN_02003054 + pop {r3, pc} +_02218662: + mov r0, #0x20 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r1, _0221867C ; =0x00001F60 + ldr r0, [r2, r0] + add r1, r2, r1 + mov r2, #1 + mov r3, #0xc0 + bl FUN_02003054 + pop {r3, pc} + nop +_0221867C: .word 0x00001F60 + + thumb_func_start MOD09_02218680 +MOD09_02218680: ; 0x02218680 + push {r4, r5} + mov r2, #0 + add r1, r2, #0 + mov r3, #0x50 +_02218688: + add r4, r1, #0 + mul r4, r3 + add r5, r0, r4 + ldrh r4, [r5, #8] + cmp r4, #0 + beq _022186A2 + ldrb r4, [r5, #0x1b] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1f + bne _022186A2 + add r2, r2, #1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 +_022186A2: + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, #6 + blo _02218688 + cmp r2, #2 + blo _022186B4 + mov r0, #1 + b _022186B6 +_022186B4: + mov r0, #0 +_022186B6: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD09_022186C0 +MOD09_022186C0: ; 0x022186C0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + ldrb r1, [r1, #0x11] + bl MOD09_02213620 + cmp r0, #2 + bne _022186E0 + ldr r1, [r4] + add r0, r4, #0 + ldrb r1, [r1, #0x11] + mov r2, #0 + mov r3, #1 + bl MOD09_02217F88 + pop {r4, pc} +_022186E0: + ldr r1, [r4] + mov r2, #0 + ldrb r1, [r1, #0x11] + add r0, r4, #0 + add r3, r2, #0 + bl MOD09_02217F88 + pop {r4, pc} + + thumb_func_start MOD09_022186F0 +MOD09_022186F0: ; 0x022186F0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _02218780 ; =MOD09_0221878C + ldr r1, _02218784 ; =0x0000115C + ldr r3, [r5, #0xc] + mov r2, #0x64 + bl FUN_020061E8 + bl FUN_0201B6C8 + ldr r2, _02218784 ; =0x0000115C + add r4, r0, #0 + mov r1, #0 + bl Call_FillMemWithValue + str r5, [r4] + ldr r0, [r5] + bl FUN_0222FF68 + str r0, [r4, #4] + ldr r0, [r5] + bl FUN_022300CC + str r0, [r4, #8] + ldr r0, _02218788 ; =0x0000114A + mov r1, #0 + strb r1, [r4, r0] + ldr r0, [r5] + bl FUN_02230218 + add r6, r0, #0 + mov r5, #0 +_02218730: + ldr r3, [r4] + add r0, r6, #0 + add r2, r3, #0 + add r2, #0x27 + add r3, #0x2c + add r1, r5, #0 + add r2, r2, r5 + add r3, r3, r5 + bl FUN_0206F1A0 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #5 + blo _02218730 + add r0, r6, #0 + bl FUN_0206F1AC + ldr r1, [r4] + strh r0, [r1, #0x20] + add r0, r6, #0 + bl FUN_0206F1B0 + ldr r1, [r4] + strb r0, [r1, #0x1f] + add r0, r4, #0 + bl MOD09_02219C38 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + beq _0221877E + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x14] +_0221877E: + pop {r4, r5, r6, pc} + .align 2, 0 +_02218780: .word MOD09_0221878C +_02218784: .word 0x0000115C +_02218788: .word 0x0000114A + + thumb_func_start MOD09_0221878C +MOD09_0221878C: ; 0x0221878C + push {r4, lr} + ldr r2, _02218884 ; =0x0000114A + add r4, r1, #0 + ldrb r2, [r4, r2] + cmp r2, #0xe + bhi _02218872 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_022187A4: ; jump table + .short _022187C2 - _022187A4 - 2 ; case 0 + .short _022187CE - _022187A4 - 2 ; case 1 + .short _022187DA - _022187A4 - 2 ; case 2 + .short _022187E6 - _022187A4 - 2 ; case 3 + .short _022187F2 - _022187A4 - 2 ; case 4 + .short _022187FE - _022187A4 - 2 ; case 5 + .short _0221880A - _022187A4 - 2 ; case 6 + .short _02218816 - _022187A4 - 2 ; case 7 + .short _02218822 - _022187A4 - 2 ; case 8 + .short _0221882E - _022187A4 - 2 ; case 9 + .short _0221883A - _022187A4 - 2 ; case 10 + .short _02218846 - _022187A4 - 2 ; case 11 + .short _02218852 - _022187A4 - 2 ; case 12 + .short _0221885E - _022187A4 - 2 ; case 13 + .short _0221886A - _022187A4 - 2 ; case 14 +_022187C2: + add r0, r4, #0 + bl MOD09_02218888 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_022187CE: + add r0, r4, #0 + bl MOD09_0221895C + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_022187DA: + add r0, r4, #0 + bl MOD09_02218A34 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_022187E6: + add r0, r4, #0 + bl MOD09_02218BBC + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_022187F2: + add r0, r4, #0 + bl MOD09_02218E44 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_022187FE: + add r0, r4, #0 + bl MOD09_02218E50 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_0221880A: + add r0, r4, #0 + bl MOD09_02218E5C + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_02218816: + add r0, r4, #0 + bl MOD09_02218B44 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_02218822: + add r0, r4, #0 + bl MOD09_02218E68 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_0221882E: + add r0, r4, #0 + bl MOD09_02218E78 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_0221883A: + add r0, r4, #0 + bl MOD09_02218E90 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_02218846: + add r0, r4, #0 + bl MOD09_02218EB8 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_02218852: + add r0, r4, #0 + bl MOD09_02218F90 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_0221885E: + add r0, r4, #0 + bl MOD09_02218ED0 + ldr r1, _02218884 ; =0x0000114A + strb r0, [r4, r1] + b _02218872 +_0221886A: + bl MOD09_02218EF8 + cmp r0, #1 + beq _02218882 +_02218872: + add r0, r4, #0 + bl MOD09_0221AA14 + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200BC1C +_02218882: + pop {r4, pc} + .align 2, 0 +_02218884: .word 0x0000114A + + thumb_func_start MOD09_02218888 +MOD09_02218888: ; 0x02218888 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _0221894C ; =0x04001050 + mov r1, #0 + strh r1, [r0] + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl MOD09_0221AC04 + str r0, [r4, #0x34] + add r0, r4, #0 + bl MOD09_022190CC + add r0, r4, #0 + bl MOD09_022191C0 + add r0, r4, #0 + bl MOD09_022192A4 + ldr r1, [r4] + mov r0, #2 + ldr r1, [r1, #0xc] + bl FUN_02002C50 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02230218 + bl FUN_0206F1B4 + ldr r1, _02218950 ; =0x0000114D + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD09_02219CB4 + ldr r1, _02218954 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221AAF0 + add r0, r4, #0 + bl MOD09_02219474 + ldr r1, _02218954 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221953C + add r0, r4, #0 + bl MOD09_02219DC8 + ldr r1, _02218954 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221A044 + ldr r0, [r4] + add r0, #0x25 + ldrb r0, [r0] + cmp r0, #0 + beq _0221890C + ldr r0, [r4, #0x34] + mov r1, #1 + bl MOD09_0221AC2C +_0221890C: + ldr r1, _02218954 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221A1DC + ldr r1, _02218954 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221A2BC + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r1, #0xa + str r0, [sp, #8] + add r3, r1, #0 + ldr r0, [r4, #8] + ldr r2, _02218958 ; =0x0000FFFF + sub r3, #0x12 + bl FUN_02003210 + ldr r0, [r4] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _02218946 + add sp, #0xc + mov r0, #0xc + pop {r3, r4, pc} +_02218946: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0221894C: .word 0x04001050 +_02218950: .word 0x0000114D +_02218954: .word 0x0000114C +_02218958: .word 0x0000FFFF + + thumb_func_start MOD09_0221895C +MOD09_0221895C: ; 0x0221895C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_020038E4 + cmp r0, #0 + beq _0221896E + mov r0, #1 + pop {r3, r4, r5, pc} +_0221896E: + ldr r1, _02218A28 ; =0x0221BBE8 + add r0, r4, #0 + bl MOD09_02219424 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _02218994 + ldr r0, [r4, #0x34] + bl MOD09_0221AD30 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _0221899A + mov r5, #5 + b _0221899A +_02218994: + add r0, r4, #0 + bl MOD09_0221A224 +_0221899A: + cmp r5, #5 + bhi _02218A24 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022189AA: ; jump table + .short _022189B6 - _022189AA - 2 ; case 0 + .short _022189B6 - _022189AA - 2 ; case 1 + .short _022189B6 - _022189AA - 2 ; case 2 + .short _022189B6 - _022189AA - 2 ; case 3 + .short _022189D6 - _022189AA - 2 ; case 4 + .short _02218A06 - _022189AA - 2 ; case 5 +_022189B6: + ldr r0, _02218A2C ; =0x000005DD + bl FUN_020054C8 + lsl r0, r5, #0x18 + lsr r1, r0, #0x18 + ldr r0, _02218A30 ; =0x0000114D + mov r2, #5 + strb r1, [r4, r0] + sub r0, r0, #2 + strb r2, [r4, r0] + add r0, r4, #0 + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_022189D6: + ldr r0, [r4] + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _02218A24 + ldr r0, _02218A2C ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r4] + ldrb r1, [r0, #0x1f] + ldr r0, _02218A30 ; =0x0000114D + strb r1, [r4, r0] + mov r1, #6 + sub r0, r0, #2 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD09_02219C68 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02218A06: + ldr r0, _02218A2C ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r4] + mov r2, #0 + strh r2, [r0, #0x1c] + ldr r0, [r4] + mov r1, #4 + strb r1, [r0, #0x1e] + add r0, r4, #0 + mov r1, #5 + bl MOD09_0221A9D8 + mov r0, #0xd + pop {r3, r4, r5, pc} +_02218A24: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_02218A28: .word 0x0221BBE8 +_02218A2C: .word 0x000005DD +_02218A30: .word 0x0000114D + + thumb_func_start MOD09_02218A34 +MOD09_02218A34: ; 0x02218A34 + push {r3, r4, r5, lr} + ldr r1, _02218B34 ; =0x0221BC04 + add r4, r0, #0 + bl MOD09_02219424 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _02218A5C + ldr r0, [r4, #0x34] + bl MOD09_0221AD30 + add r5, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _02218A62 + mov r5, #8 + b _02218A62 +_02218A5C: + add r0, r4, #0 + bl MOD09_0221A224 +_02218A62: + cmp r5, #8 + bhi _02218B30 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02218A72: ; jump table + .short _02218A84 - _02218A72 - 2 ; case 0 + .short _02218A84 - _02218A72 - 2 ; case 1 + .short _02218A84 - _02218A72 - 2 ; case 2 + .short _02218A84 - _02218A72 - 2 ; case 3 + .short _02218A84 - _02218A72 - 2 ; case 4 + .short _02218A84 - _02218A72 - 2 ; case 5 + .short _02218ABA - _02218A72 - 2 ; case 6 + .short _02218AE8 - _02218A72 - 2 ; case 7 + .short _02218B16 - _02218A72 - 2 ; case 8 +_02218A84: + add r0, r4, #0 + add r1, r5, #0 + bl MOD09_02219D94 + cmp r0, #0 + beq _02218B30 + ldr r0, _02218B38 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _02218B3C ; =0x0000114D + ldr r2, [r4] + ldrb r1, [r4, r0] + sub r0, r0, #2 + add r1, r2, r1 + add r1, #0x27 + strb r5, [r1] + mov r1, #6 + strb r1, [r4, r0] + add r1, r5, #6 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02218ABA: + ldr r0, _02218B3C ; =0x0000114D + ldrb r1, [r4, r0] + add r0, r0, #7 + add r1, r4, r1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02218B30 + ldr r0, _02218B38 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _02218B40 ; =0x0000114B + mov r1, #7 + strb r1, [r4, r0] + sub r1, #8 + add r0, r0, #3 + strb r1, [r4, r0] + add r0, r4, #0 + mov r1, #0xc + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02218AE8: + ldr r0, _02218B3C ; =0x0000114D + ldrb r1, [r4, r0] + add r0, r0, #7 + add r1, r4, r1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02218B30 + ldr r0, _02218B38 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _02218B40 ; =0x0000114B + mov r1, #7 + strb r1, [r4, r0] + mov r1, #1 + add r0, r0, #3 + strb r1, [r4, r0] + add r0, r4, #0 + mov r1, #0xd + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02218B16: + ldr r0, _02218B38 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _02218B40 ; =0x0000114B + mov r1, #4 + strb r1, [r4, r0] + add r0, r4, #0 + mov r1, #0xe + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02218B30: + mov r0, #2 + pop {r3, r4, r5, pc} + .align 2, 0 +_02218B34: .word 0x0221BC04 +_02218B38: .word 0x000005DD +_02218B3C: .word 0x0000114D +_02218B40: .word 0x0000114B + + thumb_func_start MOD09_02218B44 +MOD09_02218B44: ; 0x02218B44 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _02218BB4 ; =0x0000114D + ldr r1, [r4] + ldrb r2, [r4, r0] + mov r3, #0 + add r5, r1, r2 + mov r1, #0x2c + ldrsb r2, [r5, r1] + add r5, #0x27 + add r1, r0, #1 + strb r3, [r5] + ldrsb r1, [r4, r1] + add r1, r2, r1 + lsl r1, r1, #0x18 + asr r2, r1, #0x18 + ldrb r1, [r4, r0] + add r0, r0, #7 + add r5, r4, r1 + ldrb r5, [r5, r0] + cmp r2, r5 + ble _02218B7A + ldr r0, [r4] + add r0, r0, r1 + add r0, #0x2c + strb r3, [r0] + b _02218B8E +_02218B7A: + cmp r2, #0 + ldr r0, [r4] + bge _02218B88 + add r0, r0, r1 + add r0, #0x2c + strb r5, [r0] + b _02218B8E +_02218B88: + add r0, r0, r1 + add r0, #0x2c + strb r2, [r0] +_02218B8E: + add r0, r4, #0 + bl MOD09_0221983C + add r0, r4, #0 + bl MOD09_02219884 + ldr r1, _02218BB8 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221A044 + ldr r1, _02218BB8 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_0221AAF0 + mov r0, #2 + pop {r3, r4, r5, pc} + nop +_02218BB4: .word 0x0000114D +_02218BB8: .word 0x0000114C + + thumb_func_start MOD09_02218BBC +MOD09_02218BBC: ; 0x02218BBC + push {r3, r4, r5, lr} + ldr r1, _02218C48 ; =0x0221BB78 + add r5, r0, #0 + bl MOD09_02219424 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02218BE4 + ldr r0, [r5, #0x34] + bl MOD09_0221AD30 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _02218BEA + mov r4, #1 + b _02218BEA +_02218BE4: + add r0, r5, #0 + bl MOD09_0221A224 +_02218BEA: + cmp r4, #0 + beq _02218BF4 + cmp r4, #1 + beq _02218C2A + b _02218C44 +_02218BF4: + ldr r0, _02218C4C ; =0x000005DD + bl FUN_020054C8 + ldr r1, _02218C50 ; =0x0000114D + ldr r2, [r5] + ldrb r1, [r5, r1] + add r0, r5, #0 + add r1, r2, r1 + add r1, #0x27 + ldrb r1, [r1] + bl MOD09_02219D94 + ldr r1, [r5] + mov r2, #0 + strh r0, [r1, #0x1c] + ldr r0, _02218C50 ; =0x0000114D + ldrb r1, [r5, r0] + ldr r0, [r5] + strb r1, [r0, #0x1e] + add r0, r5, #0 + mov r1, #0xf + bl MOD09_0221A9D8 + add r0, r5, #0 + bl MOD09_02218C58 + pop {r3, r4, r5, pc} +_02218C2A: + ldr r0, _02218C4C ; =0x000005DD + bl FUN_020054C8 + ldr r0, _02218C54 ; =0x0000114B + mov r1, #5 + strb r1, [r5, r0] + add r0, r5, #0 + mov r1, #0x10 + mov r2, #0 + bl MOD09_0221A9D8 + mov r0, #0xb + pop {r3, r4, r5, pc} +_02218C44: + mov r0, #3 + pop {r3, r4, r5, pc} + .align 2, 0 +_02218C48: .word 0x0221BB78 +_02218C4C: .word 0x000005DD +_02218C50: .word 0x0000114D +_02218C54: .word 0x0000114B + + thumb_func_start MOD09_02218C58 +MOD09_02218C58: ; 0x02218C58 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _02218E38 ; =0x0000114D + add r5, r0, #0 + ldrb r1, [r5, r1] + ldr r4, [r5] + cmp r1, #3 + beq _02218C68 + b _02218D82 +_02218C68: + bl MOD09_02219430 + add r7, r0, #0 + ldrh r0, [r4, #0x1c] + ldr r2, [r4, #0xc] + mov r1, #7 + bl FUN_0206E7B8 + add r6, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _02218CDA + ldrh r0, [r4, #0x1c] + cmp r0, #0x37 + beq _02218CDA + cmp r6, #3 + beq _02218CDA + ldr r0, [r4] + ldr r1, [r4, #0x10] + add r2, r7, #0 + bl FUN_02230014 + add r6, r0, #0 + ldr r0, [r5, #0x10] + mov r1, #0x2e + bl FUN_0200A914 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_0200ACF8 + ldr r0, [r5, #0x14] + ldr r2, _02218E3C ; =0x00000175 + mov r1, #1 + bl FUN_0200AD5C + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218CDA: + ldrh r0, [r4, #0x1c] + add r2, r7, #0 + mov r3, #0 + str r0, [sp] + ldr r0, [r4] + ldr r1, [r4, #0x10] + bl FUN_02230370 + cmp r0, #1 + bne _02218D00 + ldr r2, _02218E38 ; =0x0000114D + ldrh r1, [r4, #0x1c] + ldrb r2, [r5, r2] + ldr r0, [r4] + ldr r3, [r4, #0xc] + bl MOD09_0221944C + mov r0, #0xd + pop {r3, r4, r5, r6, r7, pc} +_02218D00: + cmp r6, #3 + bne _02218D68 + ldr r0, [r4] + bl FUN_0222FF74 + mov r1, #1 + tst r0, r1 + bne _02218D22 + ldr r2, _02218E38 ; =0x0000114D + ldrh r1, [r4, #0x1c] + ldrb r2, [r5, r2] + ldr r0, [r4] + ldr r3, [r4, #0xc] + bl MOD09_0221944C + mov r0, #0xd + pop {r3, r4, r5, r6, r7, pc} +_02218D22: + ldr r3, [r4, #0xc] + add r0, r1, #0 + mov r1, #0x1a + mov r2, #0xc7 + bl FUN_0200A86C + mov r1, #0x24 + add r7, r0, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r5, #0x14] + ldr r2, [r4, #4] + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218D68: + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + mov r1, #0x22 + bl FUN_0200A8E0 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218D82: + cmp r1, #2 + bne _02218E32 + add r0, r4, #0 + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #1 + bne _02218DAA + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + mov r1, #0x2c + bl FUN_0200A8E0 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218DAA: + add r0, r4, #0 + add r0, #0x23 + ldrb r0, [r0] + cmp r0, #1 + bne _02218DCE + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + mov r1, #0x2f + bl FUN_0200A8E0 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218DCE: + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + cmp r0, #1 + bne _02218DF2 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + mov r1, #0x30 + bl FUN_0200A8E0 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218DF2: + ldr r0, [r4] + ldr r1, [r4, #0x10] + bl FUN_0222FF88 + add r6, r0, #0 + ldr r0, [r4] + bl FUN_02230290 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0206B9AC + cmp r0, #6 + bne _02218E32 + add r0, r4, #0 + bl FUN_0206B334 + cmp r0, #0x12 + bne _02218E32 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + mov r1, #0x2d + bl FUN_0200A8E0 + add r0, r5, #0 + bl MOD09_02219BE0 + ldr r0, _02218E40 ; =0x0000114B + mov r1, #8 + strb r1, [r5, r0] + mov r0, #9 + pop {r3, r4, r5, r6, r7, pc} +_02218E32: + mov r0, #0xd + pop {r3, r4, r5, r6, r7, pc} + nop +_02218E38: .word 0x0000114D +_02218E3C: .word 0x00000175 +_02218E40: .word 0x0000114B + + thumb_func_start MOD09_02218E44 +MOD09_02218E44: ; 0x02218E44 + push {r3, lr} + mov r1, #0 + bl MOD09_022193BC + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD09_02218E50 +MOD09_02218E50: ; 0x02218E50 + push {r3, lr} + mov r1, #1 + bl MOD09_022193BC + mov r0, #2 + pop {r3, pc} + + thumb_func_start MOD09_02218E5C +MOD09_02218E5C: ; 0x02218E5C + push {r3, lr} + mov r1, #2 + bl MOD09_022193BC + mov r0, #3 + pop {r3, pc} + + thumb_func_start MOD09_02218E68 +MOD09_02218E68: ; 0x02218E68 + push {r3, lr} + add r0, #0x1c + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #3 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD09_02218E78 +MOD09_02218E78: ; 0x02218E78 + push {r3, lr} + add r0, #0x32 + ldrb r0, [r0] + bl FUN_0201BD70 + cmp r0, #0 + bne _02218E8A + mov r0, #0xa + pop {r3, pc} +_02218E8A: + mov r0, #9 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD09_02218E90 +MOD09_02218E90: ; 0x02218E90 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218EB0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _02218EA6 + bl FUN_02020AA4 + cmp r0, #1 + bne _02218EAC +_02218EA6: + ldr r0, _02218EB4 ; =0x0000114B + ldrb r0, [r4, r0] + pop {r4, pc} +_02218EAC: + mov r0, #0xa + pop {r4, pc} + .align 2, 0 +_02218EB0: .word 0x021C48B8 +_02218EB4: .word 0x0000114B + + thumb_func_start MOD09_02218EB8 +MOD09_02218EB8: ; 0x02218EB8 + ldr r1, _02218ECC ; =0x0000113E + ldrb r2, [r0, r1] + cmp r2, #2 + bne _02218EC6 + add r1, #0xd + ldrb r0, [r0, r1] + bx lr +_02218EC6: + mov r0, #0xb + bx lr + nop +_02218ECC: .word 0x0000113E + + thumb_func_start MOD09_02218ED0 +MOD09_02218ED0: ; 0x02218ED0 + push {lr} + sub sp, #0xc + mov r2, #0 + str r2, [sp] + mov r1, #0x10 + str r1, [sp, #4] + str r2, [sp, #8] + mov r1, #0xa + add r3, r1, #0 + ldr r0, [r0, #8] + ldr r2, _02218EF4 ; =0x0000FFFF + sub r3, #0x12 + bl FUN_02003210 + mov r0, #0xe + add sp, #0xc + pop {pc} + nop +_02218EF4: .word 0x0000FFFF + + thumb_func_start MOD09_02218EF8 +MOD09_02218EF8: ; 0x02218EF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5, #8] + bl FUN_020038E4 + cmp r0, #0 + beq _02218F0C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02218F0C: + add r0, r5, #0 + bl MOD09_02219FE4 + add r0, r5, #0 + bl MOD09_02219520 + add r0, r5, #0 + bl MOD09_022192E4 + ldr r0, [r5, #4] + bl MOD09_02219198 + ldr r0, [r5, #0x34] + bl MOD09_0221AC28 + ldr r1, [r5] + add r1, #0x25 + strb r0, [r1] + ldr r0, [r5, #0x34] + bl MOD09_0221AC1C + mov r0, #2 + bl FUN_02002CF8 + ldr r1, [r5] + ldrh r0, [r1, #0x1c] + cmp r0, #0 + beq _02218F78 + ldr r0, [r1] + bl FUN_02230218 + add r6, r0, #0 + mov r4, #0 +_02218F4E: + ldr r3, [r5] + add r0, r6, #0 + add r2, r3, r4 + add r3, r3, r4 + add r2, #0x27 + add r3, #0x2c + ldrb r2, [r2] + ldrb r3, [r3] + add r1, r4, #0 + bl FUN_0206F1B8 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _02218F4E + ldr r1, _02218F8C ; =0x0000114D + add r0, r6, #0 + ldrb r1, [r5, r1] + bl FUN_0206F1EC +_02218F78: + ldr r0, [r5] + mov r1, #1 + add r0, #0x26 + strb r1, [r0] + add r0, r7, #0 + bl FUN_0200621C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_02218F8C: .word 0x0000114D + + thumb_func_start MOD09_02218F90 +MOD09_02218F90: ; 0x02218F90 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_020038E4 + cmp r0, #0 + beq _02218FA2 + mov r0, #0xc + pop {r4, pc} +_02218FA2: + ldr r0, _022190BC ; =0x00001159 + ldrb r0, [r4, r0] + cmp r0, #4 + bls _02218FAC + b _022190B6 +_02218FAC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02218FB8: ; jump table + .short _02218FC2 - _02218FB8 - 2 ; case 0 + .short _02219004 - _02218FB8 - 2 ; case 1 + .short _02219014 - _02218FB8 - 2 ; case 2 + .short _0221905E - _02218FB8 - 2 ; case 3 + .short _0221906E - _02218FB8 - 2 ; case 4 +_02218FC2: + ldr r0, [r4, #0x38] + bl FUN_0225D824 + cmp r0, #1 + bne _02218FFA + ldr r0, _022190C0 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _022190C4 ; =0x0000114D + mov r1, #2 + strb r1, [r4, r0] + mov r2, #0xc + sub r0, r0, #2 + strb r2, [r4, r0] + add r0, r4, #0 + mov r2, #0 + bl MOD09_0221A9D8 + ldr r0, _022190C8 ; =0x0000115A + mov r1, #0 + strb r1, [r4, r0] + sub r1, r0, #1 + ldrb r1, [r4, r1] + sub r0, r0, #1 + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0xb + pop {r4, pc} +_02218FFA: + ldr r0, _022190C8 ; =0x0000115A + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _022190B6 +_02219004: + add r0, r4, #0 + bl MOD09_02218E50 + ldr r0, _022190BC ; =0x00001159 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _022190B6 +_02219014: + ldr r0, [r4, #0x38] + bl FUN_0225D824 + cmp r0, #1 + bne _02219054 + ldr r0, _022190C0 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _022190C4 ; =0x0000114D + ldr r3, [r4] + ldrb r1, [r4, r0] + mov r2, #0 + sub r0, r0, #2 + add r1, r3, r1 + add r1, #0x27 + strb r2, [r1] + mov r1, #0xc + strb r1, [r4, r0] + add r0, r4, #0 + mov r1, #6 + bl MOD09_0221A9D8 + ldr r0, _022190C8 ; =0x0000115A + mov r1, #0 + strb r1, [r4, r0] + sub r1, r0, #1 + ldrb r1, [r4, r1] + sub r0, r0, #1 + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0xb + pop {r4, pc} +_02219054: + ldr r0, _022190C8 ; =0x0000115A + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _022190B6 +_0221905E: + add r0, r4, #0 + bl MOD09_02218E5C + ldr r0, _022190BC ; =0x00001159 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _022190B6 +_0221906E: + ldr r0, [r4, #0x38] + bl FUN_0225D824 + cmp r0, #1 + bne _022190AE + ldr r0, _022190C0 ; =0x000005DD + bl FUN_020054C8 + ldr r1, _022190C4 ; =0x0000114D + ldr r2, [r4] + ldrb r1, [r4, r1] + add r0, r4, #0 + add r1, r2, r1 + add r1, #0x27 + ldrb r1, [r1] + bl MOD09_02219D94 + ldr r1, [r4] + mov r2, #0 + strh r0, [r1, #0x1c] + ldr r0, _022190C4 ; =0x0000114D + ldrb r1, [r4, r0] + ldr r0, [r4] + strb r1, [r0, #0x1e] + add r0, r4, #0 + mov r1, #0xf + bl MOD09_0221A9D8 + add r0, r4, #0 + bl MOD09_02218C58 + pop {r4, pc} +_022190AE: + ldr r0, _022190C8 ; =0x0000115A + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] +_022190B6: + mov r0, #0xc + pop {r4, pc} + nop +_022190BC: .word 0x00001159 +_022190C0: .word 0x000005DD +_022190C4: .word 0x0000114D +_022190C8: .word 0x0000115A + + thumb_func_start MOD09_022190CC +MOD09_022190CC: ; 0x022190CC + push {r4, r5, lr} + sub sp, #0x64 + ldr r5, _02219188 ; =0x0221BB84 + add r3, sp, #0x54 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + mov r1, #1 + bl FUN_02016BF4 + ldr r5, _0221918C ; =0x0221BBCC + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #6 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _02219190 ; =0x0221BBB0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_02018744 + ldr r5, _02219194 ; =0x0221BB94 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_02018744 + ldr r3, [r4] + mov r0, #5 + ldr r3, [r3, #0xc] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #4 + ldr r3, [r3, #0xc] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_0201AC68 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_0201AC68 + add sp, #0x64 + pop {r4, r5, pc} + .align 2, 0 +_02219188: .word 0x0221BB84 +_0221918C: .word 0x0221BBCC +_02219190: .word 0x0221BBB0 +_02219194: .word 0x0221BB94 + + thumb_func_start MOD09_02219198 +MOD09_02219198: ; 0x02219198 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x17 + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_022191C0 +MOD09_022191C0: ; 0x022191C0 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0, #0xc] + mov r3, #6 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x4d + bl FUN_0200687C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r5] + mov r3, #6 + ldr r0, [r0, #0xc] + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x4d + bl FUN_020068C8 + ldr r2, [r5] + mov r0, #0x4d + ldr r2, [r2, #0xc] + mov r1, #1 + bl LoadFromNarc_2 + add r1, sp, #0x10 + add r4, r0, #0 + bl FUN_020B0180 + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r1, #0xc + bl MOD09_0221A2F4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r3, [r5] + ldr r0, [r5, #8] + ldr r3, [r3, #0xc] + mov r1, #0x4d + mov r2, #3 + bl FUN_020030E8 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xf0 + str r0, [sp, #8] + ldr r3, [r5] + ldr r0, [r5, #8] + ldr r3, [r3, #0xc] + mov r1, #0xe + mov r2, #7 + bl FUN_020030E8 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02230E44 + add r4, r0, #0 + bl FUN_0200CD60 + add r1, r0, #0 + ldr r0, _022192A0 ; =0x000003E2 + mov r3, #4 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0, #0xc] + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x26 + bl FUN_0200687C + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + ldr r3, [r5] + ldr r0, [r5, #8] + ldr r3, [r3, #0xc] + mov r1, #0x26 + bl FUN_020030E8 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_022192A0: .word 0x000003E2 + + thumb_func_start MOD09_022192A4 +MOD09_022192A4: ; 0x022192A4 + push {r4, lr} + add r4, r0, #0 + ldr r3, [r4] + mov r0, #0 + ldr r3, [r3, #0xc] + mov r1, #0x1a + mov r2, #2 + bl FUN_0200A86C + str r0, [r4, #0x10] + ldr r3, [r4] + mov r0, #0xf + ldr r3, [r3, #0xc] + mov r1, #0xe + mov r2, #0 + bl FUN_0200B870 + str r0, [r4, #0xc] + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl FUN_0200AA80 + str r0, [r4, #0x14] + ldr r1, [r4] + mov r0, #2 + ldr r1, [r1, #0xc] + lsl r0, r0, #8 + bl FUN_020219F4 + str r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_022192E4 +MOD09_022192E4: ; 0x022192E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r0, [r4, #0xc] + bl FUN_0200B990 + ldr r0, [r4, #0x14] + bl FUN_0200AB18 + ldr r0, [r4, #0x18] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02219304 +MOD09_02219304: ; 0x02219304 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _02219316 + cmp r1, #1 + beq _02219330 + cmp r1, #2 + beq _0221934C + pop {r4, pc} +_02219316: + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #6 + add r3, r2, #0 + bl FUN_0201AEE4 + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + mov r3, #0 + bl FUN_0201AEE4 + pop {r4, pc} +_02219330: + mov r1, #6 + add r3, r1, #0 + ldr r0, [r4, #4] + mov r2, #0 + add r3, #0xfa + bl FUN_0201AEE4 + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + mov r3, #0 + bl FUN_0201AEE4 + pop {r4, pc} +_0221934C: + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #6 + add r3, r2, #0 + bl FUN_0201AEE4 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #4] + mov r1, #6 + add r3, #0xfd + bl FUN_0201AEE4 + pop {r4, pc} + + thumb_func_start MOD09_02219368 +MOD09_02219368: ; 0x02219368 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + cmp r1, #2 + bne _022193B2 + mov r0, #0x1c + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _022193B8 ; =0x0000114D + mov r1, #6 + ldrb r0, [r4, r0] + mov r2, #2 + mov r3, #0x23 + add r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_020186B4 + mov r0, #0x1c + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, _022193B8 ; =0x0000114D + mov r1, #6 + ldrb r0, [r4, r0] + mov r2, #2 + mov r3, #0x28 + add r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_020186B4 +_022193B2: + add sp, #0xc + pop {r3, r4, pc} + nop +_022193B8: .word 0x0000114D + + thumb_func_start MOD09_022193BC +MOD09_022193BC: ; 0x022193BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD09_02219368 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02219304 + ldr r0, [r5, #4] + mov r1, #4 + mov r2, #0 + bl FUN_0201878C + ldr r0, [r5, #4] + mov r1, #5 + mov r2, #0 + bl FUN_0201878C + add r0, r5, #0 + bl MOD09_02219510 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02219498 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_0221953C + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_0221AAF0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_0221A1DC + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_0221A2BC + ldr r1, _02219420 ; =0x0000114C + add r0, r5, #0 + strb r4, [r5, r1] + ldrb r1, [r5, r1] + bl MOD09_0221A044 + pop {r3, r4, r5, pc} + nop +_02219420: .word 0x0000114C + + thumb_func_start MOD09_02219424 +MOD09_02219424: ; 0x02219424 + ldr r3, _0221942C ; =0x02020989 + add r0, r1, #0 + bx r3 + nop +_0221942C: .word 0x02020989 + + thumb_func_start MOD09_02219430 +MOD09_02219430: ; 0x02219430 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5] + ldr r0, [r4] + bl FUN_0222FF78 + add r1, r0, #0 + ldr r0, [r5] + ldr r3, [r4, #0x10] + ldr r0, [r0] + mov r2, #2 + bl FUN_0224C474 + pop {r3, r4, r5, pc} + + thumb_func_start MOD09_0221944C +MOD09_0221944C: ; 0x0221944C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r3, #0 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_02230214 + add r1, r4, #0 + mov r2, #1 + add r3, r7, #0 + bl FUN_0206EDD4 + add r0, r5, #0 + bl FUN_02230218 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0206F1E4 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_02219474 +MOD09_02219474: ; 0x02219474 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + ldr r2, _02219490 ; =0x0221BC2C + add r1, #0x1c + bl FUN_02019150 + ldr r1, _02219494 ; =0x0000114C + add r0, r4, #0 + ldrb r1, [r4, r1] + bl MOD09_02219498 + pop {r4, pc} + .align 2, 0 +_02219490: .word 0x0221BC2C +_02219494: .word 0x0000114C + + thumb_func_start MOD09_02219498 +MOD09_02219498: ; 0x02219498 + push {r4, r5, r6, lr} + add r5, r0, #0 + cmp r1, #0 + beq _022194AA + cmp r1, #1 + beq _022194B4 + cmp r1, #2 + beq _022194BE + b _022194C6 +_022194AA: + mov r1, #5 + add r0, #0x30 + ldr r6, _02219504 ; =0x0221BC54 + strb r1, [r0] + b _022194C6 +_022194B4: + mov r1, #0x1a + add r0, #0x30 + ldr r6, _02219508 ; =0x0221BCAC + strb r1, [r0] + b _022194C6 +_022194BE: + ldr r6, _0221950C ; =0x0221BC34 + mov r1, #4 + add r0, #0x30 + strb r1, [r0] +_022194C6: + add r1, r5, #0 + ldr r0, [r5] + add r1, #0x30 + ldrb r1, [r1] + ldr r0, [r0, #0xc] + bl FUN_02018FF4 + str r0, [r5, #0x2c] + add r0, r5, #0 + add r0, #0x30 + ldrb r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _02219502 +_022194E2: + ldr r2, [r5, #0x2c] + lsl r1, r4, #4 + add r1, r2, r1 + lsl r2, r4, #3 + ldr r0, [r5, #4] + add r2, r6, r2 + bl FUN_02019150 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0 + add r0, #0x30 + ldrb r0, [r0] + cmp r4, r0 + blo _022194E2 +_02219502: + pop {r4, r5, r6, pc} + .align 2, 0 +_02219504: .word 0x0221BC54 +_02219508: .word 0x0221BCAC +_0221950C: .word 0x0221BC34 + + thumb_func_start MOD09_02219510 +MOD09_02219510: ; 0x02219510 + add r1, r0, #0 + ldr r0, [r1, #0x2c] + add r1, #0x30 + ldr r3, _0221951C ; =0x020191A5 + ldrb r1, [r1] + bx r3 + .align 2, 0 +_0221951C: .word 0x020191A5 + + thumb_func_start MOD09_02219520 +MOD09_02219520: ; 0x02219520 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x30 + ldrb r1, [r1] + ldr r0, [r4, #0x2c] + bl FUN_020191A4 + add r4, #0x1c + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_0221953C +MOD09_0221953C: ; 0x0221953C + push {r3, lr} + cmp r1, #0 + beq _0221954C + cmp r1, #1 + beq _02219552 + cmp r1, #2 + beq _02219558 + pop {r3, pc} +_0221954C: + bl MOD09_022195B8 + pop {r3, pc} +_02219552: + bl MOD09_02219A74 + pop {r3, pc} +_02219558: + bl MOD09_02219B60 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD09_02219560 +MOD09_02219560: ; 0x02219560 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r5, [r0, #0x2c] + lsl r4, r1, #4 + ldr r0, [r0, #0x10] + add r1, r2, #0 + add r6, r3, #0 + bl FUN_0200A914 + str r0, [sp, #0x10] + ldr r1, [sp, #0x10] + add r0, r6, #0 + mov r2, #0 + bl FUN_02002E14 + add r7, r0, #0 + add r0, r5, r4 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsr r3, r0, #1 + ldr r0, [sp, #0x28] + ldr r2, [sp, #0x10] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + add r1, r6, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, r4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_022195B8 +MOD09_022195B8: ; 0x022195B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r6, #0 + add r5, r0, #0 + add r4, r6, #0 + add r7, r6, #0 +_022195C4: + ldr r0, [r5, #0x2c] + add r1, r7, #0 + add r0, r0, r4 + bl FUN_02019620 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #5 + blo _022195C4 + mov r0, #8 + str r0, [sp] + ldr r0, _02219690 ; =0x00030201 + mov r1, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r1, #0 + mov r3, #2 + bl MOD09_02219560 + mov r0, #0x18 + str r0, [sp] + ldr r0, _02219690 ; =0x00030201 + mov r1, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #1 + mov r3, #2 + bl MOD09_02219560 + mov r0, #8 + str r0, [sp] + ldr r0, _02219690 ; =0x00030201 + mov r2, #2 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #1 + add r3, r2, #0 + bl MOD09_02219560 + mov r0, #0x18 + str r0, [sp] + ldr r0, _02219690 ; =0x00030201 + mov r1, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #3 + mov r3, #2 + bl MOD09_02219560 + mov r0, #8 + str r0, [sp] + ldr r0, _02219690 ; =0x00030201 + mov r1, #2 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #7 + add r3, r1, #0 + bl MOD09_02219560 + mov r0, #8 + str r0, [sp] + ldr r0, _02219690 ; =0x00030201 + mov r1, #3 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #6 + mov r3, #2 + bl MOD09_02219560 + ldr r0, [r5] + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _0221968A + ldr r0, [r5, #0x10] + mov r1, #8 + bl FUN_0200A914 + add r4, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02219690 ; =0x00030201 + mov r3, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r5, #0x2c] + mov r1, #2 + add r0, #0x40 + add r2, r4, #0 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [r5, #0x2c] + add r0, #0x40 + bl FUN_02019220 +_0221968A: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219690: .word 0x00030201 + + thumb_func_start MOD09_02219694 +MOD09_02219694: ; 0x02219694 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r4, [r5, #0x2c] + lsl r6, r3, #4 + add r7, r1, #0 + add r0, r4, r6 + mov r1, #0 + str r2, [sp, #0x10] + bl FUN_02019620 + ldr r0, _02219730 ; =0x0000114D + lsl r7, r7, #2 + ldrb r1, [r5, r0] + mov r0, #0x90 + mul r0, r1 + add r0, r5, r0 + add r0, r0, r7 + ldrh r0, [r0, #0x3c] + cmp r0, #0 + beq _02219726 + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x10] + lsl r2, r1, #3 + ldr r1, _02219734 ; =0x0221BC7C + ldr r1, [r1, r2] + bl FUN_0200A914 + ldr r2, _02219730 ; =0x0000114D + str r0, [sp, #0x14] + ldrb r3, [r5, r2] + mov r2, #0x90 + ldr r0, [r5, #0x14] + mul r2, r3 + add r2, r5, r2 + add r2, r2, r7 + ldrh r2, [r2, #0x3c] + mov r1, #0 + bl FUN_0200AE38 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r2, [sp, #0x14] + bl FUN_0200B7B8 + ldr r0, [sp, #0x30] + ldr r1, [r5, #0x18] + mov r2, #0 + bl FUN_02002E14 + add r7, r0, #0 + add r0, r4, r6 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsr r3, r0, #1 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x34] + ldr r1, [sp, #0x30] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + add r0, r4, r6 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 +_02219726: + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02219730: .word 0x0000114D +_02219734: .word 0x0221BC7C + + thumb_func_start MOD09_02219738 +MOD09_02219738: ; 0x02219738 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r4, [r5, #0x2c] + lsl r7, r3, #4 + add r6, r1, #0 + add r0, r4, r7 + mov r1, #0 + str r2, [sp, #0x10] + bl FUN_02019620 + ldr r0, _022197C4 ; =0x0000114D + lsl r6, r6, #2 + ldrb r1, [r5, r0] + mov r0, #0x90 + mul r0, r1 + add r0, r5, r0 + add r0, r0, r6 + ldrh r0, [r0, #0x3e] + cmp r0, #0 + beq _022197BA + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x10] + lsl r2, r1, #3 + ldr r1, _022197C8 ; =0x0221BC80 + ldr r1, [r1, r2] + bl FUN_0200A914 + mov r1, #0 + str r0, [sp, #0x14] + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, _022197C4 ; =0x0000114D + ldr r0, [r5, #0x14] + ldrb r3, [r5, r2] + mov r2, #0x90 + mul r2, r3 + add r2, r5, r2 + add r2, r2, r6 + ldrh r2, [r2, #0x3e] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r2, [sp, #0x14] + bl FUN_0200B7B8 + ldr r0, [sp, #0x34] + mov r3, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x30] + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r2, [r5, #0x18] + add r0, r4, r7 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 +_022197BA: + add r0, r4, r7 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022197C4: .word 0x0000114D +_022197C8: .word 0x0221BC80 + + thumb_func_start MOD09_022197CC +MOD09_022197CC: ; 0x022197CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, _02219830 ; =0x0000114D + add r5, r1, #0 + ldrb r0, [r6, r0] + ldr r1, [r6] + add r0, r1, r0 + add r0, #0x2c + ldrb r1, [r0] + mov r0, #6 + mul r0, r1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0x31 + ldrb r0, [r0] + cmp r0, #0 + bne _022197F4 + mov r4, #0 + b _022197F6 +_022197F4: + mov r4, #0xc +_022197F6: + mov r0, #2 + str r0, [sp] + ldr r0, _02219834 ; =0x00030201 + ldr r1, [sp, #0xc] + lsl r7, r5, #1 + str r0, [sp, #4] + add r0, r6, #0 + add r1, r5, r1 + add r2, r5, #0 + add r3, r4, r7 + bl MOD09_02219694 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02219838 ; =0x00010200 + ldr r1, [sp, #0xc] + add r3, r4, #1 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, r1 + add r2, r5, #0 + add r3, r3, r7 + bl MOD09_02219738 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219830: .word 0x0000114D +_02219834: .word 0x00030201 +_02219838: .word 0x00010200 + + thumb_func_start MOD09_0221983C +MOD09_0221983C: ; 0x0221983C + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r2, #0 + add r4, r0, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x13 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + mov r5, #0 +_0221985E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD09_022197CC + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #6 + blo _0221985E + add r0, r4, #0 + add r0, #0x31 + ldrb r1, [r0] + mov r0, #1 + add r4, #0x31 + eor r0, r1 + strb r0, [r4] + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD09_02219884 +MOD09_02219884: ; 0x02219884 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x19 + ldr r1, [r5, #0x2c] + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #0x10] + mov r1, #0x1c + ldr r4, [r5, #0x2c] + bl FUN_0200A914 + str r0, [sp, #0x10] + mov r0, #0 + ldr r1, [sp, #0x10] + add r2, r0, #0 + bl FUN_02002E14 + add r7, r0, #0 + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, r0, r7 + lsr r6, r0, #1 + mov r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022199AC ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0x19 + lsl r0, r0, #4 + mov r1, #0 + add r0, r4, r0 + add r3, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + ldr r0, [r5, #0x10] + mov r1, #0x1d + bl FUN_0200A914 + mov r1, #0 + str r0, [sp, #0x14] + ldr r3, _022199B0 ; =0x0000114D + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, _022199B0 ; =0x0000114D + add r3, r3, #7 + ldrb r2, [r5, r2] + ldr r0, [r5, #0x14] + add r2, r5, r2 + ldrb r2, [r2, r3] + mov r3, #2 + add r2, r2, #1 + bl FUN_0200AD38 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r2, [sp, #0x14] + bl FUN_0200B7B8 + mov r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022199AC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r2, [r5, #0x18] + add r0, r4, r0 + add r3, r6, r7 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + ldr r0, [r5, #0x10] + mov r1, #0x1e + bl FUN_0200A914 + mov r1, #0 + add r7, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, _022199B0 ; =0x0000114D + ldr r2, [r5] + ldrb r3, [r5, r3] + ldr r0, [r5, #0x14] + add r2, r2, r3 + add r2, #0x2c + ldrb r2, [r2] + mov r3, #2 + add r2, r2, #1 + bl FUN_0200AD38 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [r5, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022199AC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r2, [r5, #0x18] + add r0, r4, r0 + sub r3, r6, r3 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019220 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022199AC: .word 0x00010200 +_022199B0: .word 0x0000114D + + thumb_func_start MOD09_022199B4 +MOD09_022199B4: ; 0x022199B4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #6 + ldr r1, [r4, #0x2c] + lsl r0, r0, #6 + add r0, r1, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _02219A6C ; =0x0000114D + ldrb r0, [r4, r0] + cmp r0, #3 + bhi _02219A68 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022199DC: ; jump table + .short _022199E4 - _022199DC - 2 ; case 0 + .short _02219A10 - _022199DC - 2 ; case 1 + .short _02219A3C - _022199DC - 2 ; case 2 + .short _02219A54 - _022199DC - 2 ; case 3 +_022199E4: + mov r0, #4 + str r0, [sp] + ldr r0, _02219A70 ; =0x00010200 + mov r1, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x16 + mov r3, #0 + bl MOD09_02219560 + mov r0, #0x14 + str r0, [sp] + ldr r0, _02219A70 ; =0x00010200 + mov r1, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x17 + mov r3, #0 + bl MOD09_02219560 + add sp, #8 + pop {r4, pc} +_02219A10: + mov r0, #4 + str r0, [sp] + ldr r0, _02219A70 ; =0x00010200 + mov r1, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl MOD09_02219560 + mov r0, #0x14 + str r0, [sp] + ldr r0, _02219A70 ; =0x00010200 + mov r1, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x19 + mov r3, #0 + bl MOD09_02219560 + add sp, #8 + pop {r4, pc} +_02219A3C: + mov r0, #0xc + str r0, [sp] + ldr r0, _02219A70 ; =0x00010200 + mov r1, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1a + mov r3, #0 + bl MOD09_02219560 + add sp, #8 + pop {r4, pc} +_02219A54: + mov r0, #0xc + str r0, [sp] + ldr r0, _02219A70 ; =0x00010200 + mov r1, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD09_02219560 +_02219A68: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02219A6C: .word 0x0000114D +_02219A70: .word 0x00010200 + + thumb_func_start MOD09_02219A74 +MOD09_02219A74: ; 0x02219A74 + push {r4, lr} + add r4, r0, #0 + bl MOD09_0221983C + add r0, r4, #0 + bl MOD09_022199B4 + add r0, r4, #0 + bl MOD09_02219884 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02219A8C +MOD09_02219A8C: ; 0x02219A8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r6, r1, #0 + mov r1, #9 + ldr r4, [r5, #0x2c] + bl FUN_0200A914 + ldr r2, _02219AF4 ; =0x0000114D + add r7, r0, #0 + ldrb r3, [r5, r2] + mov r2, #0x90 + ldr r0, [r5, #0x14] + mul r2, r3 + add r2, r5, r2 + lsl r3, r6, #2 + add r2, r2, r3 + ldrh r2, [r2, #0x3c] + mov r1, #0 + bl FUN_0200AE38 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + add r2, r7, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02219AF8 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x18] + add r0, r4, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219AF4: .word 0x0000114D +_02219AF8: .word 0x00010200 + + thumb_func_start MOD09_02219AFC +MOD09_02219AFC: ; 0x02219AFC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r4, [r5, #0x2c] + ldr r1, [r1, #0xc] + mov r0, #0x82 + add r4, #0x20 + bl FUN_020219F4 + ldr r1, _02219B58 ; =0x0000114D + add r7, r0, #0 + ldrb r2, [r5, r1] + mov r1, #0x90 + mul r1, r2 + add r2, r5, r1 + lsl r1, r6, #2 + add r1, r2, r1 + ldr r2, [r5] + ldrh r1, [r1, #0x3c] + ldr r2, [r2, #0xc] + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_0206E790 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02219B5C ; =0x00010200 + add r2, r7, #0 + str r0, [sp, #8] + add r0, r4, #0 + mov r3, #4 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02219B58: .word 0x0000114D +_02219B5C: .word 0x00010200 + + thumb_func_start MOD09_02219B60 +MOD09_02219B60: ; 0x02219B60 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r6, #0 + add r5, r0, #0 + add r4, r6, #0 + add r7, r6, #0 +_02219B6C: + ldr r0, [r5, #0x2c] + add r1, r7, #0 + add r0, r0, r4 + bl FUN_02019620 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #4 + blo _02219B6C + ldr r0, _02219BD4 ; =0x0000114D + ldr r1, [r5] + ldrb r2, [r5, r0] + add r0, r1, r2 + add r0, #0x27 + ldrb r4, [r0] + add r0, r1, r2 + add r0, #0x2c + ldrb r1, [r0] + mov r0, #6 + add r6, r1, #0 + mul r6, r0 + add r0, r5, #0 + add r1, r4, r6 + bl MOD09_02219A8C + mov r2, #0 + str r2, [sp] + ldr r0, _02219BD8 ; =0x00010200 + str r2, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, r6 + mov r3, #1 + bl MOD09_02219738 + add r0, r5, #0 + add r1, r4, r6 + bl MOD09_02219AFC + mov r0, #6 + str r0, [sp] + ldr r0, _02219BDC ; =0x00030201 + mov r1, #3 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1f + mov r3, #2 + bl MOD09_02219560 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02219BD4: .word 0x0000114D +_02219BD8: .word 0x00010200 +_02219BDC: .word 0x00030201 + + thumb_func_start MOD09_02219BE0 +MOD09_02219BE0: ; 0x02219BE0 + push {r4, lr} + ldr r2, _02219C04 ; =0x000003E2 + add r4, r0, #0 + add r0, #0x1c + mov r1, #1 + mov r3, #0xe + bl FUN_0200D0BC + add r0, r4, #0 + add r0, #0x1c + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + bl MOD09_02219C08 + pop {r4, pc} + nop +_02219C04: .word 0x000003E2 + + thumb_func_start MOD09_02219C08 +MOD09_02219C08: ; 0x02219C08 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + bl FUN_02002B60 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02230E54 + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x18] + add r0, #0x1c + mov r1, #1 + bl FUN_0201BD84 + add r4, #0x32 + strb r0, [r4] + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD09_02219C38 +MOD09_02219C38: ; 0x02219C38 + push {r4, lr} + add r4, r0, #0 + ldr r3, [r4] + ldrh r1, [r3, #0x20] + cmp r1, #0 + bne _02219C48 + mov r0, #0 + pop {r4, pc} +_02219C48: + ldr r0, [r3, #8] + ldr r3, [r3, #0xc] + mov r2, #1 + bl FUN_0206EE50 + cmp r0, #0 + bne _02219C62 + ldr r1, [r4] + mov r0, #0 + strh r0, [r1, #0x20] + ldr r1, [r4] + strb r0, [r1, #0x1f] + pop {r4, pc} +_02219C62: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02219C68 +MOD09_02219C68: ; 0x02219C68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _02219CB0 ; =0x0000114D + ldr r6, [r5] + ldrb r7, [r5, r0] + mov r0, #0x90 + ldrh r2, [r6, #0x20] + mul r0, r7 + mov r4, #0 + add r1, r5, r0 +_02219C7C: + ldrh r0, [r1, #0x3c] + cmp r2, r0 + bne _02219CA6 + add r0, r4, #0 + mov r1, #6 + bl _u32_div_f + add r0, r6, r7 + add r0, #0x27 + strb r1, [r0] + add r0, r4, #0 + mov r1, #6 + bl _u32_div_f + ldr r1, _02219CB0 ; =0x0000114D + ldr r2, [r5] + ldrb r1, [r5, r1] + add r1, r2, r1 + add r1, #0x2c + strb r0, [r1] + pop {r3, r4, r5, r6, r7, pc} +_02219CA6: + add r4, r4, #1 + add r1, r1, #4 + cmp r4, #0x24 + blo _02219C7C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02219CB0: .word 0x0000114D + + thumb_func_start MOD09_02219CB4 +MOD09_02219CB4: ; 0x02219CB4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #4] +_02219CBE: + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] +_02219CCA: + ldr r0, [r4] + ldr r2, [sp] + ldr r0, [r0, #8] + lsl r2, r2, #0x10 + ldr r1, [sp, #8] + lsr r2, r2, #0x10 + bl FUN_0206F0D8 + add r5, r0, #0 + beq _02219D3C + ldrh r0, [r5] + cmp r0, #0 + beq _02219D34 + ldrh r1, [r5, #2] + cmp r1, #0 + beq _02219D34 + ldr r2, [r4] + mov r1, #0xd + ldr r2, [r2, #0xc] + bl FUN_0206E7B8 + add r7, r0, #0 + ldr r1, _02219D88 ; =0x0221BD7C + mov r0, #0 +_02219CFA: + mov r2, #1 + lsl r2, r0 + tst r2, r7 + beq _02219D2C + ldrb r2, [r1] + mov r3, #0x90 + add r6, r2, #0 + mul r6, r3 + add r3, r4, r2 + ldr r2, _02219D8C ; =0x0000114F + ldrb r2, [r3, r2] + add r3, r4, r6 + lsl r2, r2, #2 + add r2, r2, r3 + ldrh r3, [r5] + strh r3, [r2, #0x3c] + ldrh r3, [r5, #2] + strh r3, [r2, #0x3e] + ldrb r2, [r1] + add r6, r4, r2 + ldr r2, _02219D8C ; =0x0000114F + ldrb r2, [r6, r2] + add r3, r2, #1 + ldr r2, _02219D8C ; =0x0000114F + strb r3, [r6, r2] +_02219D2C: + add r0, r0, #1 + add r1, r1, #1 + cmp r0, #5 + blo _02219CFA +_02219D34: + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + b _02219CCA +_02219D3C: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #8 + blo _02219CBE + mov r5, #0 + add r7, r5, #0 +_02219D4A: + ldr r0, _02219D8C ; =0x0000114F + add r6, r4, r5 + ldrb r0, [r6, r0] + cmp r0, #0 + bne _02219D5A + ldr r0, _02219D90 ; =0x00001154 + strb r7, [r6, r0] + b _02219D66 +_02219D5A: + sub r0, r0, #1 + mov r1, #6 + bl _s32_div_f + ldr r1, _02219D90 ; =0x00001154 + strb r0, [r6, r1] +_02219D66: + ldr r1, [r4] + ldr r0, _02219D90 ; =0x00001154 + add r2, r1, r5 + add r2, #0x2c + ldrb r0, [r6, r0] + ldrb r2, [r2] + cmp r0, r2 + bhs _02219D7C + add r1, r1, r5 + add r1, #0x2c + strb r0, [r1] +_02219D7C: + add r5, r5, #1 + cmp r5, #5 + blo _02219D4A + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02219D88: .word 0x0221BD7C +_02219D8C: .word 0x0000114F +_02219D90: .word 0x00001154 + + thumb_func_start MOD09_02219D94 +MOD09_02219D94: ; 0x02219D94 + push {r3, r4} + ldr r2, _02219DC4 ; =0x0000114D + ldr r3, [r0] + ldrb r2, [r0, r2] + add r3, r3, r2 + add r3, #0x2c + ldrb r4, [r3] + mov r3, #6 + mul r3, r4 + add r1, r1, r3 + lsl r3, r1, #2 + mov r1, #0x90 + mul r1, r2 + add r0, r0, r1 + add r1, r0, r3 + ldrh r0, [r1, #0x3c] + cmp r0, #0 + beq _02219DBE + ldrh r1, [r1, #0x3e] + cmp r1, #0 + bne _02219DC0 +_02219DBE: + mov r0, #0 +_02219DC0: + pop {r3, r4} + bx lr + .align 2, 0 +_02219DC4: .word 0x0000114D + + thumb_func_start MOD09_02219DC8 +MOD09_02219DC8: ; 0x02219DC8 + push {r4, lr} + add r4, r0, #0 + bl MOD09_02219DF4 + add r0, r4, #0 + bl MOD09_02219E40 + add r0, r4, #0 + bl MOD09_02219FC4 + add r0, r4, #0 + bl MOD09_0221A158 + add r0, r4, #0 + bl MOD09_0221A244 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_02219DF4 +MOD09_02219DF4: ; 0x02219DF4 + push {r3, r4, r5, lr} + sub sp, #0x18 + ldr r3, _02219E3C ; =0x0221BDB0 + add r2, sp, #0 + add r5, r0, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02230078 + add r4, r0, #0 + bl FUN_0200BB34 + mov r1, #0xc3 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [r5, r1] + add r0, r4, #0 + mov r2, #0xc + bl FUN_0200BBF0 + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r1, [r5, r1] + add r0, r4, #0 + add r2, sp, #0 + bl FUN_0200BF60 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_02219E3C: .word 0x0221BDB0 + + thumb_func_start MOD09_02219E40 +MOD09_02219E40: ; 0x02219E40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldr r0, [r6] + ldr r0, [r0] + bl FUN_02230078 + add r7, r0, #0 + mov r4, #0 +_02219E52: + ldr r0, _02219EE8 ; =0x0000B4B7 + add r5, r4, r0 + mov r0, #1 + add r1, r0, #0 + bl FUN_0206E640 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r1, #0xc3 + str r5, [sp, #8] + lsl r1, r1, #2 + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x10 + bl FUN_0200C00C + mov r0, #1 + mov r1, #2 + bl FUN_0206E640 + mov r1, #0x10 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r3, #0xc3 + str r5, [sp, #0x14] + lsl r3, r3, #2 + ldr r0, [r6, #8] + ldr r3, [r6, r3] + mov r1, #3 + add r2, r7, #0 + bl FUN_0200C0DC + add r4, r4, #1 + cmp r4, #6 + blo _02219E52 + bl FUN_0206E708 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02219EE8 ; =0x0000B4B7 + mov r1, #0xc3 + str r0, [sp, #4] + lsl r1, r1, #2 + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x10 + bl FUN_0200C124 + bl FUN_0206E70C + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02219EE8 ; =0x0000B4B7 + mov r1, #0xc3 + str r0, [sp, #4] + lsl r1, r1, #2 + ldr r1, [r6, r1] + add r0, r7, #0 + mov r2, #0x10 + bl FUN_0200C13C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02219EE8: .word 0x0000B4B7 + + thumb_func_start MOD09_02219EEC +MOD09_02219EEC: ; 0x02219EEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + ldr r0, [r0] + add r4, r2, #0 + bl FUN_02230078 + add r7, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl FUN_0206E640 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r1, #0xc3 + str r4, [sp, #4] + lsl r1, r1, #2 + ldr r1, [r5, r1] + add r0, r7, #0 + mov r2, #0x10 + bl FUN_0200C9D8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_02219F24 +MOD09_02219F24: ; 0x02219F24 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + mov r1, #2 + add r4, r2, #0 + bl FUN_0206E640 + add r2, r0, #0 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + lsl r0, r4, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r3, [r5] + ldr r0, [r5, #8] + ldr r3, [r3, #0xc] + mov r1, #0x10 + bl FUN_020030E8 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD09_02219F54 +MOD09_02219F54: ; 0x02219F54 + push {r4, r5, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + ldr r0, [r0] + bl FUN_02230078 + mov r2, #0 + add r1, sp, #0 + strh r2, [r1] + strh r2, [r1, #2] + strh r2, [r1, #4] + strh r2, [r1, #6] + mov r1, #0x14 + ldr r3, _02219FB0 ; =0x0221BE98 + mul r1, r4 + ldr r3, [r3, r1] + str r2, [sp, #0xc] + str r3, [sp, #8] + mov r3, #2 + str r3, [sp, #0x10] + ldr r3, _02219FB4 ; =0x0221BE88 + str r2, [sp, #0x30] + ldr r3, [r3, r1] + add r2, sp, #0 + str r3, [sp, #0x14] + ldr r3, _02219FB8 ; =0x0221BE8C + ldr r3, [r3, r1] + str r3, [sp, #0x18] + ldr r3, _02219FBC ; =0x0221BE90 + ldr r3, [r3, r1] + str r3, [sp, #0x1c] + ldr r3, _02219FC0 ; =0x0221BE94 + ldr r1, [r3, r1] + str r1, [sp, #0x20] + mov r1, #1 + str r1, [sp, #0x2c] + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r1, [r5, r1] + bl FUN_0200C154 + add sp, #0x34 + pop {r4, r5, pc} + nop +_02219FB0: .word 0x0221BE98 +_02219FB4: .word 0x0221BE88 +_02219FB8: .word 0x0221BE8C +_02219FBC: .word 0x0221BE90 +_02219FC0: .word 0x0221BE94 + + thumb_func_start MOD09_02219FC4 +MOD09_02219FC4: ; 0x02219FC4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0x31 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_02219FD0: + add r0, r6, #0 + add r1, r4, #0 + bl MOD09_02219F54 + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blo _02219FD0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_02219FE4 +MOD09_02219FE4: ; 0x02219FE4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7] + ldr r0, [r0] + bl FUN_02230078 + mov r6, #0x31 + str r0, [sp] + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #4 +_02219FFA: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blo _02219FFA + add r0, r7, #0 + bl MOD09_0221A1B0 + add r0, r7, #0 + bl MOD09_0221A294 + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r0, [sp] + ldr r1, [r7, r1] + bl FUN_0200C398 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_0221A024 +MOD09_0221A024: ; 0x0221A024 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r1, #1 + add r6, r0, #0 + bl FUN_0200C644 + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD09_0221A044 +MOD09_0221A044: ; 0x0221A044 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0x31 + str r0, [sp] + add r7, r1, #0 + mov r4, #0 + add r5, r0, #0 + lsl r6, r6, #4 +_0221A052: + ldr r0, [r5, r6] + mov r1, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blo _0221A052 + cmp r7, #0 + beq _0221A070 + cmp r7, #1 + beq _0221A078 + cmp r7, #2 + beq _0221A080 + pop {r3, r4, r5, r6, r7, pc} +_0221A070: + ldr r0, [sp] + bl MOD09_0221A088 + pop {r3, r4, r5, r6, r7, pc} +_0221A078: + ldr r0, [sp] + bl MOD09_0221A0BC + pop {r3, r4, r5, r6, r7, pc} +_0221A080: + ldr r0, [sp] + bl MOD09_0221A114 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD09_0221A088 +MOD09_0221A088: ; 0x0221A088 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + ldrh r1, [r1, #0x20] + cmp r1, #0 + beq _0221A0B6 + ldr r2, _0221A0B8 ; =0x0000B4B7 + bl MOD09_02219EEC + ldr r1, [r4] + ldr r3, _0221A0B8 ; =0x0000B4B7 + ldrh r1, [r1, #0x20] + add r0, r4, #0 + mov r2, #0 + bl MOD09_02219F24 + mov r0, #0x31 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x18 + mov r2, #0xb2 + bl MOD09_0221A024 +_0221A0B6: + pop {r4, pc} + .align 2, 0 +_0221A0B8: .word 0x0000B4B7 + + thumb_func_start MOD09_0221A0BC +MOD09_0221A0BC: ; 0x0221A0BC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r6, _0221A10C ; =0x0221BE10 + mov r4, #0 + add r7, r5, #0 +_0221A0C6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02219D94 + str r0, [sp] + cmp r0, #0 + beq _0221A0FE + ldr r2, _0221A110 ; =0x0000B4B7 + ldr r1, [sp] + add r0, r5, #0 + add r2, r4, r2 + bl MOD09_02219EEC + ldr r3, _0221A110 ; =0x0000B4B7 + lsl r2, r4, #0x10 + ldr r1, [sp] + add r0, r5, #0 + lsr r2, r2, #0x10 + add r3, r4, r3 + bl MOD09_02219F24 + mov r0, #0x31 + lsl r0, r0, #4 + ldr r0, [r7, r0] + ldr r1, [r6] + ldr r2, [r6, #4] + bl MOD09_0221A024 +_0221A0FE: + add r4, r4, #1 + add r6, #8 + add r7, r7, #4 + cmp r4, #6 + blo _0221A0C6 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221A10C: .word 0x0221BE10 +_0221A110: .word 0x0000B4B7 + + thumb_func_start MOD09_0221A114 +MOD09_0221A114: ; 0x0221A114 + push {r3, r4, r5, lr} + ldr r1, _0221A150 ; =0x0000114D + add r4, r0, #0 + ldrb r1, [r4, r1] + ldr r2, [r4] + add r1, r2, r1 + add r1, #0x27 + ldrb r1, [r1] + bl MOD09_02219D94 + add r5, r0, #0 + ldr r2, _0221A154 ; =0x0000B4B7 + add r0, r4, #0 + add r1, r5, #0 + bl MOD09_02219EEC + ldr r3, _0221A154 ; =0x0000B4B7 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD09_02219F24 + mov r0, #0x31 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x28 + mov r2, #0x2c + bl MOD09_0221A024 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221A150: .word 0x0000114D +_0221A154: .word 0x0000B4B7 + + thumb_func_start MOD09_0221A158 +MOD09_0221A158: ; 0x0221A158 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02230078 + ldr r3, _0221A1AC ; =0x0000B4BE + add r4, r0, #0 + str r3, [sp] + sub r1, r3, #5 + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r1, [r5, r1] + ldr r2, [r5, #8] + bl FUN_0225D3EC + ldr r3, _0221A1AC ; =0x0000B4BE + mov r1, #0xc3 + str r3, [sp] + sub r0, r3, #5 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r2, [r5] + lsl r1, r1, #2 + ldr r1, [r5, r1] + ldr r2, [r2, #0xc] + add r0, r4, #0 + bl FUN_0225D484 + add r1, r0, #0 + ldr r0, [r5, #0x34] + bl MOD09_0221AC30 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_0221A1AC: .word 0x0000B4BE + + thumb_func_start MOD09_0221A1B0 +MOD09_0221A1B0: ; 0x0221A1B0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl MOD09_0221AC24 + bl FUN_0225D508 + ldr r3, _0221A1D8 ; =0x0000B4B9 + mov r0, #0xc3 + add r1, r3, #5 + str r3, [sp] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + bl FUN_0225D45C + add sp, #4 + pop {r3, r4, pc} + nop +_0221A1D8: .word 0x0000B4B9 + + thumb_func_start MOD09_0221A1DC +MOD09_0221A1DC: ; 0x0221A1DC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, _0221A21C ; =0x0221BD94 + lsl r2, r4, #2 + ldr r0, [r5, #0x34] + ldr r1, [r1, r2] + bl MOD09_0221AC68 + cmp r4, #0 + beq _0221A1FA + cmp r4, #1 + beq _0221A206 + cmp r4, #2 + pop {r3, r4, r5, pc} +_0221A1FA: + ldr r1, _0221A220 ; =0x0000114D + ldr r0, [r5, #0x34] + ldrb r1, [r5, r1] + bl MOD09_0221AC34 + pop {r3, r4, r5, pc} +_0221A206: + ldr r1, _0221A220 ; =0x0000114D + ldr r2, [r5] + ldrb r1, [r5, r1] + ldr r0, [r5, #0x34] + add r1, r2, r1 + add r1, #0x27 + ldrb r1, [r1] + bl MOD09_0221AC34 + pop {r3, r4, r5, pc} + nop +_0221A21C: .word 0x0221BD94 +_0221A220: .word 0x0000114D + + thumb_func_start MOD09_0221A224 +MOD09_0221A224: ; 0x0221A224 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD09_0221AC2C + ldr r0, [r4, #0x34] + bl MOD09_0221AC5C + ldr r0, [r4, #0x34] + bl MOD09_0221AC24 + bl FUN_0225D648 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD09_0221A244 +MOD09_0221A244: ; 0x0221A244 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02230078 + ldr r3, _0221A290 ; =0x0000B4BD + add r4, r0, #0 + str r3, [sp] + sub r1, r3, #5 + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r1, [r5, r1] + ldr r2, [r5, #8] + bl FUN_0225D6A4 + ldr r3, _0221A290 ; =0x0000B4BD + mov r1, #0xc3 + str r3, [sp] + sub r0, r3, #5 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r2, [r5] + lsl r1, r1, #2 + ldr r1, [r5, r1] + ldr r2, [r2, #0xc] + add r0, r4, #0 + bl FUN_0225D73C + str r0, [r5, #0x38] + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_0221A290: .word 0x0000B4BD + + thumb_func_start MOD09_0221A294 +MOD09_0221A294: ; 0x0221A294 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_0225D7B8 + ldr r3, _0221A2B8 ; =0x0000B4B8 + mov r0, #0xc3 + add r1, r3, #5 + str r3, [sp] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + bl FUN_0225D714 + add sp, #4 + pop {r3, r4, pc} + nop +_0221A2B8: .word 0x0000B4B8 + + thumb_func_start MOD09_0221A2BC +MOD09_0221A2BC: ; 0x0221A2BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _0221A2E2 + lsl r3, r1, #3 + ldr r1, _0221A2EC ; =0x0221BDC8 + ldr r2, _0221A2F0 ; =0x0221BDCC + ldr r0, [r4, #0x38] + ldr r1, [r1, r3] + ldr r2, [r2, r3] + bl FUN_0225D800 + ldr r0, [r4, #0x38] + mov r1, #0x3c + bl FUN_0225D820 + pop {r4, pc} +_0221A2E2: + ldr r0, [r4, #0x38] + bl FUN_0225D80C + pop {r4, pc} + nop +_0221A2EC: .word 0x0221BDC8 +_0221A2F0: .word 0x0221BDCC + + thumb_func_start MOD09_0221A2F4 +MOD09_0221A2F4: ; 0x0221A2F4 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0xca + lsl r0, r0, #2 + mov r2, #0 + add r0, r5, r0 + add r3, r2, #0 + add r4, r1, #0 + bl MOD09_0221A62C + mov r0, #0x10 + str r0, [sp] + ldr r0, _0221A5B0 ; =0x00000448 + mov r3, #9 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + str r3, [sp, #4] + bl MOD09_0221A62C + mov r0, #0x10 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + ldr r0, _0221A5B4 ; =0x00000568 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x12 + bl MOD09_0221A62C + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _0221A5B8 ; =0x00000688 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x1b + bl MOD09_0221A62C + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _0221A5BC ; =0x0000078C + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x20 + bl MOD09_0221A62C + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #0x89 + lsl r0, r0, #4 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + mov r3, #0x25 + bl MOD09_0221A62C + mov r0, #0x1a + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r0, _0221A5C0 ; =0x00000994 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x25 + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5C4 ; =0x00000A98 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x39 + bl MOD09_0221A62C + ldr r0, _0221A5C8 ; =0x00000ACA + mov r2, #5 + str r2, [sp] + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x39 + str r2, [sp, #4] + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5CC ; =0x00000AFC + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0x39 + bl MOD09_0221A62C + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _0221A5D0 ; =0x00000B2E + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0 + bl MOD09_0221A62C + ldr r0, _0221A5D4 ; =0x00000BEE + mov r2, #0x10 + str r2, [sp] + mov r3, #6 + add r0, r5, r0 + add r1, r4, #0 + str r3, [sp, #4] + bl MOD09_0221A62C + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _0221A5D8 ; =0x00000CAE + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0xc + bl MOD09_0221A62C + mov r2, #0x10 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _0221A5DC ; =0x00000D6E + add r1, r4, #0 + add r0, r5, r0 + mov r3, #0x12 + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5E0 ; =0x00000E2E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x2f + bl MOD09_0221A62C + mov r0, #0xe6 + mov r2, #5 + lsl r0, r0, #4 + str r2, [sp] + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x2f + str r2, [sp, #4] + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5E4 ; =0x00000E92 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0x2f + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5E8 ; =0x00000EC4 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xf + mov r3, #0x2f + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5EC ; =0x00000EF6 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0 + mov r3, #0x34 + bl MOD09_0221A62C + ldr r0, _0221A5F0 ; =0x00000F28 + mov r2, #5 + str r2, [sp] + add r0, r5, r0 + add r1, r4, #0 + mov r3, #0x34 + str r2, [sp, #4] + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5F4 ; =0x00000F5A + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0x34 + bl MOD09_0221A62C + mov r0, #5 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5F8 ; =0x00000F8C + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xf + mov r3, #0x34 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A5FC ; =0x00000FBE + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x2f + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A600 ; =0x00000FDE + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x18 + mov r3, #0x2f + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A604 ; =0x00000FFE + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1c + mov r3, #0x2f + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A608 ; =0x0000101E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x33 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A60C ; =0x0000103E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x18 + mov r3, #0x33 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A610 ; =0x0000105E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1c + mov r3, #0x33 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A614 ; =0x0000107E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x37 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A618 ; =0x0000109E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x18 + mov r3, #0x37 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A61C ; =0x000010BE + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1c + mov r3, #0x37 + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A620 ; =0x000010DE + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x14 + mov r3, #0x3b + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A624 ; =0x000010FE + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x18 + mov r3, #0x3b + bl MOD09_0221A62C + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0221A628 ; =0x0000111E + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0x1c + mov r3, #0x3b + bl MOD09_0221A62C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0221A5B0: .word 0x00000448 +_0221A5B4: .word 0x00000568 +_0221A5B8: .word 0x00000688 +_0221A5BC: .word 0x0000078C +_0221A5C0: .word 0x00000994 +_0221A5C4: .word 0x00000A98 +_0221A5C8: .word 0x00000ACA +_0221A5CC: .word 0x00000AFC +_0221A5D0: .word 0x00000B2E +_0221A5D4: .word 0x00000BEE +_0221A5D8: .word 0x00000CAE +_0221A5DC: .word 0x00000D6E +_0221A5E0: .word 0x00000E2E +_0221A5E4: .word 0x00000E92 +_0221A5E8: .word 0x00000EC4 +_0221A5EC: .word 0x00000EF6 +_0221A5F0: .word 0x00000F28 +_0221A5F4: .word 0x00000F5A +_0221A5F8: .word 0x00000F8C +_0221A5FC: .word 0x00000FBE +_0221A600: .word 0x00000FDE +_0221A604: .word 0x00000FFE +_0221A608: .word 0x0000101E +_0221A60C: .word 0x0000103E +_0221A610: .word 0x0000105E +_0221A614: .word 0x0000107E +_0221A618: .word 0x0000109E +_0221A61C: .word 0x000010BE +_0221A620: .word 0x000010DE +_0221A624: .word 0x000010FE +_0221A628: .word 0x0000111E + + thumb_func_start MOD09_0221A62C +MOD09_0221A62C: ; 0x0221A62C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r0, sp, #8 + mov lr, r3 + ldrb r3, [r0, #0x14] + mov r6, #0 + mov ip, r3 + cmp r3, #0 + ble _0221A678 + ldrb r3, [r0, #0x10] + lsl r2, r2, #1 + add r7, r1, r2 +_0221A644: + mov r2, #0 + cmp r3, #0 + ble _0221A66C + mov r0, lr + add r0, r0, r6 + lsl r0, r0, #6 + add r5, r7, r0 + add r0, r6, #0 + mul r0, r3 + lsl r1, r0, #1 + ldr r0, [sp] + add r4, r0, r1 +_0221A65C: + lsl r1, r2, #1 + ldrh r0, [r5, r1] + strh r0, [r4, r1] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, r3 + blt _0221A65C +_0221A66C: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + mov r0, ip + cmp r6, r0 + blt _0221A644 +_0221A678: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_0221A67C +MOD09_0221A67C: ; 0x0221A67C + cmp r1, #0x10 + bhi _0221A70A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221A68C: ; jump table + .short _0221A6AE - _0221A68C - 2 ; case 0 + .short _0221A6AE - _0221A68C - 2 ; case 1 + .short _0221A6AE - _0221A68C - 2 ; case 2 + .short _0221A6AE - _0221A68C - 2 ; case 3 + .short _0221A6BE - _0221A68C - 2 ; case 4 + .short _0221A6CC - _0221A68C - 2 ; case 5 + .short _0221A6D8 - _0221A68C - 2 ; case 6 + .short _0221A6D8 - _0221A68C - 2 ; case 7 + .short _0221A6D8 - _0221A68C - 2 ; case 8 + .short _0221A6D8 - _0221A68C - 2 ; case 9 + .short _0221A6D8 - _0221A68C - 2 ; case 10 + .short _0221A6D8 - _0221A68C - 2 ; case 11 + .short _0221A6E4 - _0221A68C - 2 ; case 12 + .short _0221A6F0 - _0221A68C - 2 ; case 13 + .short _0221A6CC - _0221A68C - 2 ; case 14 + .short _0221A6FC - _0221A68C - 2 ; case 15 + .short _0221A6CC - _0221A68C - 2 ; case 16 +_0221A6AE: + mov r1, #0xca + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x12 + lsl r0, r0, #4 + mul r0, r2 + add r0, r1, r0 + bx lr +_0221A6BE: + ldr r1, _0221A710 ; =0x00000688 + add r1, r0, r1 + lsl r0, r2, #6 + add r0, r2, r0 + lsl r0, r0, #2 + add r0, r1, r0 + bx lr +_0221A6CC: + ldr r1, _0221A714 ; =0x00000A98 + add r1, r0, r1 + mov r0, #0x32 + mul r0, r2 + add r0, r1, r0 + bx lr +_0221A6D8: + ldr r1, _0221A718 ; =0x00000B2E + add r1, r0, r1 + mov r0, #0xc0 + mul r0, r2 + add r0, r1, r0 + bx lr +_0221A6E4: + ldr r1, _0221A71C ; =0x00000E2E + add r1, r0, r1 + mov r0, #0x32 + mul r0, r2 + add r0, r1, r0 + bx lr +_0221A6F0: + ldr r1, _0221A720 ; =0x00000EF6 + add r1, r0, r1 + mov r0, #0x32 + mul r0, r2 + add r0, r1, r0 + bx lr +_0221A6FC: + ldr r1, _0221A710 ; =0x00000688 + add r1, r0, r1 + lsl r0, r2, #6 + add r0, r2, r0 + lsl r0, r0, #2 + add r0, r1, r0 + bx lr +_0221A70A: + mov r0, #0 + bx lr + nop +_0221A710: .word 0x00000688 +_0221A714: .word 0x00000A98 +_0221A718: .word 0x00000B2E +_0221A71C: .word 0x00000E2E +_0221A720: .word 0x00000EF6 + + thumb_func_start MOD09_0221A724 +MOD09_0221A724: ; 0x0221A724 + cmp r2, #3 + bne _0221A72C + mov r0, #5 + bx lr +_0221A72C: + cmp r1, #0x10 + bhi _0221A78A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221A73C: ; jump table + .short _0221A75E - _0221A73C - 2 ; case 0 + .short _0221A75E - _0221A73C - 2 ; case 1 + .short _0221A75E - _0221A73C - 2 ; case 2 + .short _0221A75E - _0221A73C - 2 ; case 3 + .short _0221A762 - _0221A73C - 2 ; case 4 + .short _0221A766 - _0221A73C - 2 ; case 5 + .short _0221A76A - _0221A73C - 2 ; case 6 + .short _0221A76A - _0221A73C - 2 ; case 7 + .short _0221A76A - _0221A73C - 2 ; case 8 + .short _0221A76A - _0221A73C - 2 ; case 9 + .short _0221A76A - _0221A73C - 2 ; case 10 + .short _0221A76A - _0221A73C - 2 ; case 11 + .short _0221A766 - _0221A73C - 2 ; case 12 + .short _0221A766 - _0221A73C - 2 ; case 13 + .short _0221A766 - _0221A73C - 2 ; case 14 + .short _0221A776 - _0221A73C - 2 ; case 15 + .short _0221A766 - _0221A73C - 2 ; case 16 +_0221A75E: + mov r0, #0 + bx lr +_0221A762: + mov r0, #3 + bx lr +_0221A766: + mov r0, #2 + bx lr +_0221A76A: + ldr r1, _0221A790 ; =0x0000114D + ldrb r0, [r0, r1] + add r0, #8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_0221A776: + cmp r3, #2 + bne _0221A786 + ldr r1, _0221A790 ; =0x0000114D + ldrb r0, [r0, r1] + add r0, #8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_0221A786: + mov r0, #1 + bx lr +_0221A78A: + mov r0, #0 + bx lr + nop +_0221A790: .word 0x0000114D + + thumb_func_start MOD09_0221A794 +MOD09_0221A794: ; 0x0221A794 + push {r4, r5, r6, r7} + cmp r2, #0 + bne _0221A7A4 + ldr r2, _0221A7F8 ; =0x00000FBE + add r2, r0, r2 + lsl r0, r3, #5 + add r0, r2, r0 + b _0221A7CC +_0221A7A4: + cmp r2, #1 + bne _0221A7B2 + ldr r2, _0221A7FC ; =0x0000101E + add r2, r0, r2 + lsl r0, r3, #5 + add r0, r2, r0 + b _0221A7CC +_0221A7B2: + cmp r2, #2 + bne _0221A7C0 + ldr r2, _0221A800 ; =0x0000107E + add r2, r0, r2 + lsl r0, r3, #5 + add r0, r2, r0 + b _0221A7CC +_0221A7C0: + cmp r2, #3 + bne _0221A7F4 + ldr r2, _0221A804 ; =0x000010DE + add r2, r0, r2 + lsl r0, r3, #5 + add r0, r2, r0 +_0221A7CC: + mov r2, #0 +_0221A7CE: + lsl r4, r2, #3 + lsl r5, r2, #5 + mov r3, #0 + add r4, r0, r4 + add r5, r1, r5 +_0221A7D8: + lsl r6, r3, #1 + ldrh r7, [r4, r6] + add r3, r3, #1 + lsl r3, r3, #0x10 + add r6, r5, r6 + lsr r3, r3, #0x10 + strh r7, [r6, #0xc] + cmp r3, #4 + blo _0221A7D8 + add r2, r2, #1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + cmp r2, #4 + blo _0221A7CE +_0221A7F4: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221A7F8: .word 0x00000FBE +_0221A7FC: .word 0x0000101E +_0221A800: .word 0x0000107E +_0221A804: .word 0x000010DE + + thumb_func_start MOD09_0221A808 +MOD09_0221A808: ; 0x0221A808 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r2, [sp, #4] + str r3, [sp, #8] + add r5, r1, #0 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + str r0, [sp] + bl MOD09_0221A67C + add r3, sp, #0x10 + add r4, r0, #0 + ldrb r3, [r3, #0x10] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl MOD09_0221A724 + lsl r0, r0, #0x1c + lsr r2, r0, #0x10 + ldr r0, [sp, #4] + ldr r6, _0221A874 ; =0x0221BF4B + lsl r3, r0, #2 + ldr r0, _0221A878 ; =0x0221BF4A + ldrb r6, [r6, r3] + ldrb r0, [r0, r3] + mov r1, #0 + mul r6, r0 + cmp r6, #0 + ble _0221A864 + ldr r0, _0221A87C ; =0x0221BF48 + ldr r7, _0221A880 ; =0x00000FFF + add r3, r0, r3 +_0221A84A: + lsl r0, r1, #1 + ldrh r6, [r4, r0] + and r6, r7 + orr r6, r2 + strh r6, [r5, r0] + add r0, r1, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldrb r6, [r3, #2] + ldrb r0, [r3, #3] + mul r0, r6 + cmp r1, r0 + blt _0221A84A +_0221A864: + ldr r0, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r1, r5, #0 + bl MOD09_0221A794 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221A874: .word 0x0221BF4B +_0221A878: .word 0x0221BF4A +_0221A87C: .word 0x0221BF48 +_0221A880: .word 0x00000FFF + + thumb_func_start MOD09_0221A884 +MOD09_0221A884: ; 0x0221A884 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r1, [sp, #0xc] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + add r5, r0, #0 + ldr r0, [sp, #0xc] + lsl r4, r0, #2 + ldr r0, _0221A8E8 ; =0x0221BF4B + ldrb r7, [r0, r4] + ldr r0, _0221A8EC ; =0x0221BF4A + ldrb r6, [r0, r4] + ldr r0, [r5] + add r1, r6, #0 + mul r1, r7 + ldr r0, [r0, #0xc] + lsl r1, r1, #1 + bl FUN_02016998 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl MOD09_0221A808 + ldr r0, _0221A8F0 ; =0x0221BF49 + ldr r3, _0221A8F4 ; =0x0221BF48 + ldrb r0, [r0, r4] + ldrb r3, [r3, r4] + ldr r2, [sp, #0x18] + str r0, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02018148 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_0201AC68 + ldr r0, [sp, #0x18] + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0221A8E8: .word 0x0221BF4B +_0221A8EC: .word 0x0221BF4A +_0221A8F0: .word 0x0221BF49 +_0221A8F4: .word 0x0221BF48 + + thumb_func_start MOD09_0221A8F8 +MOD09_0221A8F8: ; 0x0221A8F8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + cmp r1, #6 + blo _0221A916 + cmp r1, #0xb + bhi _0221A916 + add r0, #0x31 + ldrb r0, [r0] + cmp r0, #0 + bne _0221A916 + add r1, #0xb + ldr r0, _0221A96C ; =0x0221BF8C + lsl r1, r1, #2 + ldr r4, [r0, r1] + b _0221A91C +_0221A916: + ldr r0, _0221A96C ; =0x0221BF8C + lsl r1, r1, #2 + ldr r4, [r0, r1] +_0221A91C: + cmp r4, #0 + beq _0221A968 + cmp r2, #0 + beq _0221A92C + cmp r2, #1 + beq _0221A934 + cmp r2, #2 + bne _0221A93A +_0221A92C: + mov r0, #1 + str r0, [sp] + mov r7, #2 + b _0221A93A +_0221A934: + mov r0, #0 + str r0, [sp] + mov r7, #4 +_0221A93A: + mov r5, #0 +_0221A93C: + ldrb r0, [r4, r5] + cmp r0, #0xff + beq _0221A968 + ldr r1, [r6, #0x2c] + lsl r0, r0, #4 + add r0, r1, r0 + ldr r1, [sp] + add r2, r7, #0 + mov r3, #0 + bl FUN_0201A8C8 + ldrb r0, [r4, r5] + ldr r1, [r6, #0x2c] + lsl r0, r0, #4 + add r0, r1, r0 + bl FUN_02019220 + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #8 + blo _0221A93C +_0221A968: + pop {r3, r4, r5, r6, r7, pc} + nop +_0221A96C: .word 0x0221BF8C + + thumb_func_start MOD09_0221A970 +MOD09_0221A970: ; 0x0221A970 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + cmp r1, #6 + blo _0221A98C + cmp r1, #0xb + bhi _0221A98C + sub r0, r1, #6 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x31 + lsl r0, r0, #4 + ldr r6, [r1, r0] + b _0221A9B0 +_0221A98C: + cmp r1, #4 + bne _0221A9D4 + mov r7, #0x31 + mov r4, #0 + lsl r7, r7, #4 +_0221A996: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r6, [r0, r7] + add r0, r6, #0 + bl FUN_0200C658 + cmp r0, #0 + bne _0221A9B0 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _0221A996 +_0221A9B0: + ldr r0, [sp] + cmp r0, #0 + beq _0221A9BE + cmp r0, #1 + beq _0221A9CA + cmp r0, #2 + bne _0221A9D4 +_0221A9BE: + add r0, r6, #0 + mov r1, #0 + mov r2, #2 + bl FUN_0200C82C + pop {r3, r4, r5, r6, r7, pc} +_0221A9CA: + mov r1, #0 + add r0, r6, #0 + sub r2, r1, #4 + bl FUN_0200C82C +_0221A9D4: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD09_0221A9D8 +MOD09_0221A9D8: ; 0x0221A9D8 + push {r4, r5} + ldr r3, _0221AA10 ; =0x0000113E + mov r5, #0 + strb r5, [r0, r3] + add r4, r3, #1 + strb r5, [r0, r4] + add r4, r3, #2 + strb r1, [r0, r4] + add r1, r3, #3 + ldrb r4, [r0, r1] + mov r1, #0xf0 + bic r4, r1 + lsl r1, r2, #0x1c + lsr r1, r1, #0x18 + add r2, r4, #0 + orr r2, r1 + add r1, r3, #3 + strb r2, [r0, r1] + ldrb r2, [r0, r1] + mov r1, #0xf + bic r2, r1 + mov r1, #1 + orr r2, r1 + add r1, r3, #3 + strb r2, [r0, r1] + pop {r4, r5} + bx lr + nop +_0221AA10: .word 0x0000113E + + thumb_func_start MOD09_0221AA14 +MOD09_0221AA14: ; 0x0221AA14 + push {r4, lr} + ldr r3, _0221AAE8 ; =0x00001141 + add r4, r0, #0 + ldrb r1, [r4, r3] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + beq _0221AAE4 + sub r1, r3, #3 + ldrb r1, [r4, r1] + cmp r1, #0 + beq _0221AA34 + cmp r1, #1 + beq _0221AA6C + cmp r1, #2 + beq _0221AAA4 + pop {r4, pc} +_0221AA34: + sub r1, r3, #1 + add r3, #0xb + ldrb r1, [r4, r1] + ldrb r3, [r4, r3] + mov r2, #1 + bl MOD09_0221A884 + mov r1, #0x45 + lsl r1, r1, #6 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #1 + bl MOD09_0221A8F8 + mov r1, #0x45 + lsl r1, r1, #6 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #1 + bl MOD09_0221A970 + ldr r0, _0221AAEC ; =0x0000113F + mov r1, #0 + strb r1, [r4, r0] + mov r1, #1 + sub r0, r0, #1 + strb r1, [r4, r0] + pop {r4, pc} +_0221AA6C: + sub r1, r3, #1 + add r3, #0xb + ldrb r1, [r4, r1] + ldrb r3, [r4, r3] + mov r2, #2 + bl MOD09_0221A884 + mov r1, #0x45 + lsl r1, r1, #6 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #2 + bl MOD09_0221A8F8 + mov r1, #0x45 + lsl r1, r1, #6 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #2 + bl MOD09_0221A970 + ldr r0, _0221AAEC ; =0x0000113F + mov r1, #0 + strb r1, [r4, r0] + mov r1, #2 + sub r0, r0, #1 + strb r1, [r4, r0] + pop {r4, pc} +_0221AAA4: + sub r1, r3, #1 + add r3, #0xb + ldrb r1, [r4, r1] + ldrb r3, [r4, r3] + mov r2, #0 + bl MOD09_0221A884 + mov r1, #0x45 + lsl r1, r1, #6 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #0 + bl MOD09_0221A8F8 + mov r1, #0x45 + lsl r1, r1, #6 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #0 + bl MOD09_0221A970 + ldr r0, _0221AAEC ; =0x0000113F + mov r2, #0 + strb r2, [r4, r0] + sub r1, r0, #1 + strb r2, [r4, r1] + add r1, r0, #2 + ldrb r2, [r4, r1] + mov r1, #0xf + add r0, r0, #2 + bic r2, r1 + strb r2, [r4, r0] +_0221AAE4: + pop {r4, pc} + nop +_0221AAE8: .word 0x00001141 +_0221AAEC: .word 0x0000113F + + thumb_func_start MOD09_0221AAF0 +MOD09_0221AAF0: ; 0x0221AAF0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + beq _0221AB02 + cmp r6, #1 + beq _0221AB60 + cmp r6, #2 + beq _0221ABE6 + pop {r3, r4, r5, r6, r7, pc} +_0221AB02: + mov r1, #0 + add r2, r1, #0 + add r3, r6, #0 + bl MOD09_0221A884 + add r0, r5, #0 + mov r1, #1 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + add r0, r5, #0 + mov r1, #2 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + add r0, r5, #0 + mov r1, #3 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + ldr r0, [r5] + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0221AB46 + add r0, r5, #0 + mov r1, #4 + mov r2, #3 + add r3, r6, #0 + bl MOD09_0221A884 + b _0221AB52 +_0221AB46: + add r0, r5, #0 + mov r1, #4 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 +_0221AB52: + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + pop {r3, r4, r5, r6, r7, pc} +_0221AB60: + mov r4, #0 + mov r7, #3 +_0221AB64: + add r0, r5, #0 + add r1, r4, #0 + bl MOD09_02219D94 + cmp r0, #0 + bne _0221AB82 + add r1, r4, #6 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r7, #0 + add r3, r6, #0 + bl MOD09_0221A884 + b _0221AB92 +_0221AB82: + add r1, r4, #6 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 +_0221AB92: + add r4, r4, #1 + cmp r4, #6 + blo _0221AB64 + ldr r0, _0221AC00 ; =0x0000114D + ldrb r1, [r5, r0] + add r0, r0, #7 + add r1, r5, r1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0221ABC0 + add r0, r5, #0 + mov r1, #0xc + mov r2, #3 + add r3, r6, #0 + bl MOD09_0221A884 + add r0, r5, #0 + mov r1, #0xd + mov r2, #3 + add r3, r6, #0 + bl MOD09_0221A884 + b _0221ABD8 +_0221ABC0: + add r0, r5, #0 + mov r1, #0xc + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + add r0, r5, #0 + mov r1, #0xd + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 +_0221ABD8: + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + pop {r3, r4, r5, r6, r7, pc} +_0221ABE6: + mov r1, #0xf + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + add r0, r5, #0 + mov r1, #0x10 + mov r2, #0 + add r3, r6, #0 + bl MOD09_0221A884 + pop {r3, r4, r5, r6, r7, pc} + nop +_0221AC00: .word 0x0000114D + + thumb_func_start MOD09_0221AC04 +MOD09_0221AC04: ; 0x0221AC04 + push {r3, lr} + mov r1, #0x10 + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x10 + mov r1, #0 +_0221AC12: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0221AC12 + pop {r3, pc} + + thumb_func_start MOD09_0221AC1C +MOD09_0221AC1C: ; 0x0221AC1C + ldr r3, _0221AC20 ; =0x02016A19 + bx r3 + .align 2, 0 +_0221AC20: .word 0x02016A19 + + thumb_func_start MOD09_0221AC24 +MOD09_0221AC24: ; 0x0221AC24 + ldr r0, [r0] + bx lr + + thumb_func_start MOD09_0221AC28 +MOD09_0221AC28: ; 0x0221AC28 + ldrb r0, [r0, #8] + bx lr + + thumb_func_start MOD09_0221AC2C +MOD09_0221AC2C: ; 0x0221AC2C + strb r1, [r0, #8] + bx lr + + thumb_func_start MOD09_0221AC30 +MOD09_0221AC30: ; 0x0221AC30 + str r1, [r0] + bx lr + + thumb_func_start MOD09_0221AC34 +MOD09_0221AC34: ; 0x0221AC34 + push {r3, r4, lr} + sub sp, #4 + strb r1, [r0, #9] + ldrb r1, [r0, #8] + cmp r1, #1 + bne _0221AC58 + ldrb r1, [r0, #9] + ldr r2, [r0, #4] + lsl r4, r1, #3 + add r3, r2, r4 + ldrb r1, [r3, #3] + str r1, [sp] + ldrb r1, [r2, r4] + ldrb r2, [r3, #2] + ldrb r3, [r3, #1] + ldr r0, [r0] + bl FUN_0225D5DC +_0221AC58: + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD09_0221AC5C +MOD09_0221AC5C: ; 0x0221AC5C + mov r1, #0 + strb r1, [r0, #9] + mov r1, #0xff + strb r1, [r0, #0xa] + bx lr + .align 2, 0 + + thumb_func_start MOD09_0221AC68 +MOD09_0221AC68: ; 0x0221AC68 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + bl MOD09_0221AC5C + mov r0, #0 + str r5, [r4, #4] + mvn r0, r0 + str r0, [r4, #0xc] + ldrb r0, [r4, #8] + cmp r0, #1 + bne _0221AC92 + ldr r3, [r4, #4] + ldrb r0, [r3, #3] + str r0, [sp] + ldrb r1, [r3] + ldrb r2, [r3, #2] + ldrb r3, [r3, #1] + ldr r0, [r4] + bl FUN_0225D5DC +_0221AC92: + pop {r3, r4, r5, pc} + + thumb_func_start MOD09_0221AC94 +MOD09_0221AC94: ; 0x0221AC94 + str r1, [r0, #0xc] + bx lr + + thumb_func_start MOD09_0221AC98 +MOD09_0221AC98: ; 0x0221AC98 + push {r3, r4, lr} + sub sp, #4 + ldrb r1, [r0, #8] + cmp r1, #1 + bne _0221ACA8 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_0221ACA8: + ldr r1, _0221ACDC ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0xf3 + tst r1, r2 + beq _0221ACD4 + mov r1, #1 + strb r1, [r0, #8] + ldrb r1, [r0, #9] + ldr r2, [r0, #4] + lsl r4, r1, #3 + add r3, r2, r4 + ldrb r1, [r3, #3] + str r1, [sp] + ldrb r1, [r2, r4] + ldrb r2, [r3, #2] + ldrb r3, [r3, #1] + ldr r0, [r0] + bl FUN_0225D5DC + ldr r0, _0221ACE0 ; =0x000005DC + bl FUN_020054C8 +_0221ACD4: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_0221ACDC: .word 0x021C48B8 +_0221ACE0: .word 0x000005DC + + thumb_func_start MOD09_0221ACE4 +MOD09_0221ACE4: ; 0x0221ACE4 + cmp r1, #3 + bhi _0221AD2C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0221ACF4: ; jump table + .short _0221ACFC - _0221ACF4 - 2 ; case 0 + .short _0221AD08 - _0221ACF4 - 2 ; case 1 + .short _0221AD14 - _0221ACF4 - 2 ; case 2 + .short _0221AD20 - _0221ACF4 - 2 ; case 3 +_0221ACFC: + ldrb r1, [r0, #5] + mov r0, #0x80 + tst r0, r1 + beq _0221AD2C + mov r0, #1 + bx lr +_0221AD08: + ldrb r1, [r0, #4] + mov r0, #0x80 + tst r0, r1 + beq _0221AD2C + mov r0, #1 + bx lr +_0221AD14: + ldrb r1, [r0, #7] + mov r0, #0x80 + tst r0, r1 + beq _0221AD2C + mov r0, #1 + bx lr +_0221AD20: + ldrb r1, [r0, #6] + mov r0, #0x80 + tst r0, r1 + beq _0221AD2C + mov r0, #1 + bx lr +_0221AD2C: + mov r0, #0 + bx lr + + thumb_func_start MOD09_0221AD30 +MOD09_0221AD30: ; 0x0221AD30 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + bl MOD09_0221AC98 + cmp r0, #0 + bne _0221AD46 + mov r0, #0 + add sp, #0x14 + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_0221AD46: + ldr r0, _0221AEBC ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _0221AD6A + mov r1, #0 + str r1, [sp] + ldrb r0, [r5, #9] + add r2, r1, #0 + add r3, r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r5, #4] + bl FUN_0201C638 + add r4, r0, #0 + mov r6, #0 + b _0221ADD2 +_0221AD6A: + mov r1, #0x80 + tst r1, r0 + beq _0221AD8C + mov r1, #0 + str r1, [sp] + ldrb r0, [r5, #9] + add r2, r1, #0 + add r3, r1, #0 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5, #4] + bl FUN_0201C638 + add r4, r0, #0 + mov r6, #1 + b _0221ADD2 +_0221AD8C: + mov r1, #0x20 + tst r1, r0 + beq _0221ADAE + mov r1, #0 + str r1, [sp] + ldrb r0, [r5, #9] + add r2, r1, #0 + add r3, r1, #0 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldr r0, [r5, #4] + bl FUN_0201C638 + add r4, r0, #0 + mov r6, #2 + b _0221ADD2 +_0221ADAE: + mov r1, #0x10 + tst r0, r1 + beq _0221ADD0 + mov r1, #0 + str r1, [sp] + ldrb r0, [r5, #9] + add r2, r1, #0 + add r3, r1, #0 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, [r5, #4] + bl FUN_0201C638 + add r4, r0, #0 + mov r6, #3 + b _0221ADD2 +_0221ADD0: + mov r4, #0xff +_0221ADD2: + cmp r4, #0xff + beq _0221AE92 + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #0x80 + add r1, r4, #0 + tst r1, r0 + beq _0221ADF2 + ldrb r1, [r5, #0xa] + cmp r1, #0xff + beq _0221ADEC + add r4, r1, #0 + b _0221ADF2 +_0221ADEC: + eor r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0221ADF2: + mov r7, #0 +_0221ADF4: + mov r0, #1 + ldr r1, [r5, #0xc] + lsl r0, r4 + tst r0, r1 + bne _0221AE2C + str r7, [sp, #0xc] + str r7, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + ldr r0, [r5, #4] + add r1, r7, #0 + add r2, r7, #0 + add r3, r7, #0 + bl FUN_0201C638 + mov r1, #0x7f + and r0, r1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, r4 + beq _0221AE24 + ldrb r0, [r5, #9] + cmp r1, r0 + bne _0221AE28 +_0221AE24: + ldrb r4, [r5, #9] + b _0221AE2C +_0221AE28: + add r4, r1, #0 + b _0221ADF4 +_0221AE2C: + ldrb r0, [r5, #9] + cmp r0, r4 + beq _0221AE8A + ldr r0, [r5, #4] + lsl r7, r4, #3 + add r1, sp, #0x10 + add r2, sp, #0x10 + add r0, r0, r7 + add r1, #3 + add r2, #2 + bl FUN_0201C620 + ldr r0, [r5, #4] + add r1, sp, #0x10 + add r0, r0, r7 + add r1, #1 + add r2, sp, #0x10 + bl FUN_0201C62C + ldr r0, [r5, #4] + add r1, r6, #0 + add r0, r0, r7 + bl MOD09_0221ACE4 + cmp r0, #1 + bne _0221AE6C + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0221AE6C + ldrb r0, [r5, #9] + strb r0, [r5, #0xa] + b _0221AE70 +_0221AE6C: + mov r0, #0xff + strb r0, [r5, #0xa] +_0221AE70: + strb r4, [r5, #9] + add r3, sp, #0x10 + ldrb r0, [r3] + str r0, [sp] + ldrb r1, [r3, #3] + ldrb r2, [r3, #1] + ldrb r3, [r3, #2] + ldr r0, [r5] + bl FUN_0225D5DC + ldr r0, _0221AEC0 ; =0x000005DC + bl FUN_020054C8 +_0221AE8A: + mov r0, #0 + add sp, #0x14 + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_0221AE92: + ldr r0, _0221AEBC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0221AEA2 + add sp, #0x14 + ldrb r0, [r5, #9] + pop {r4, r5, r6, r7, pc} +_0221AEA2: + mov r0, #2 + tst r1, r0 + beq _0221AEB6 + ldr r0, _0221AEC4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + add sp, #0x14 + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_0221AEB6: + sub r0, r0, #3 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221AEBC: .word 0x021C48B8 +_0221AEC0: .word 0x000005DC +_0221AEC4: .word 0x000005DD + + .section .data + ; 0x0221AEC8 + .incbin "baserom.nds", 0x1AC068, 0x1138 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 5626ffc3..d94acc27 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -624,6 +624,36 @@ FUN_02252504 = 0x02252504; FUN_02254A68 = 0x02254A68; FUN_02254AB8 = 0x02254AB8; FUN_0223BD14 = 0x0223BD14; +FUN_0222FF68 = 0x0222FF68; +FUN_0222FF74 = 0x0222FF74; +FUN_0222FF78 = 0x0222FF78; +FUN_0222FF88 = 0x0222FF88; +FUN_02230014 = 0x02230014; +FUN_02230188 = 0x02230188; +FUN_02230214 = 0x02230214; +FUN_02230218 = 0x02230218; +FUN_02230260 = 0x02230260; +FUN_02230290 = 0x02230290; +FUN_022302BC = 0x022302BC; +FUN_02230370 = 0x02230370; +FUN_02230E44 = 0x02230E44; +FUN_02230E54 = 0x02230E54; +FUN_02231238 = 0x02231238; +FUN_0224C474 = 0x0224C474; +FUN_0225D3EC = 0x0225D3EC; +FUN_0225D45C = 0x0225D45C; +FUN_0225D484 = 0x0225D484; +FUN_0225D508 = 0x0225D508; +FUN_0225D5DC = 0x0225D5DC; +FUN_0225D648 = 0x0225D648; +FUN_0225D6A4 = 0x0225D6A4; +FUN_0225D714 = 0x0225D714; +FUN_0225D73C = 0x0225D73C; +FUN_0225D7B8 = 0x0225D7B8; +FUN_0225D800 = 0x0225D800; +FUN_0225D80C = 0x0225D80C; +FUN_0225D820 = 0x0225D820; +FUN_0225D824 = 0x0225D824; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; -- cgit v1.2.3 From e8bd5c9a9cb6b78755a6821783db9e6b5ec74d08 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 18:17:51 -0400 Subject: Disassemble dummy module 10 --- arm9/arm9.lcf | 16 ++++++++++++++-- arm9/modules/10/asm/module_10_dummy.s | 5 +++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/10/asm/module_10_dummy.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 5a8a9a55..d0270d58 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -20,7 +20,7 @@ MEMORY { MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 MODULE_12 (RWX) : ORIGIN=0, LENGTH=0 MODULE_13 (RWX) : ORIGIN=0, LENGTH=0 @@ -470,7 +470,19 @@ SECTIONS { module_09.o (.bss) } >> MODULE_09 - OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) + .MODULE.10 : AT (0x1A9200) + { + module_10_dummy.o (.text) + module_10_dummy.o (.sdata) + module_10_dummy.o (.data) + } > MODULE_10 + + .MODULE.10.bss : + { + module_10_dummy.o (.sbss) + module_10_dummy.o (.bss) + } >> MODULE_10 + OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o) OVERLAY_FILE(13, 0x1F5200, FILE_1F9200.o) diff --git a/arm9/modules/10/asm/module_10_dummy.s b/arm9/modules/10/asm/module_10_dummy.s new file mode 100644 index 00000000..bae0dc2d --- /dev/null +++ b/arm9/modules/10/asm/module_10_dummy.s @@ -0,0 +1,5 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .data + .balign 4, 0 + .space 32 -- cgit v1.2.3 From dbf663964e522006a2b9a37ce1f88bc3f262209e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 21:01:39 -0400 Subject: Disassemble module 11 --- arm9/arm9.lcf | 16 +- arm9/global.inc | 162 + arm9/modules/11/asm/module_11.s | 98637 ++++++++++++++++++++++++++++++++++++++ arm9/undefined_syms.txt | 24 + 4 files changed, 98837 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/11/asm/module_11.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index d0270d58..67ff4228 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -21,7 +21,7 @@ MEMORY { MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 MODULE_12 (RWX) : ORIGIN=0, LENGTH=0 MODULE_13 (RWX) : ORIGIN=0, LENGTH=0 MODULE_14 (RWX) : ORIGIN=0, LENGTH=0 @@ -483,7 +483,19 @@ SECTIONS { module_10_dummy.o (.bss) } >> MODULE_10 - OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) + .MODULE.11 : AT (0x1A9400) + { + module_11.o (.text) + module_11.o (.sdata) + module_11.o (.data) + } > MODULE_11 + + .MODULE.11.bss : + { + module_11.o (.sbss) + module_11.o (.bss) + } >> MODULE_11 + OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o) OVERLAY_FILE(13, 0x1F5200, FILE_1F9200.o) OVERLAY_FILE(14, 0x223E00, FILE_227E00.o) diff --git a/arm9/global.inc b/arm9/global.inc index f4a01650..e615e5c8 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4737,3 +4737,165 @@ .extern FUN_0225D80C .extern FUN_0225D820 .extern FUN_0225D824 +.extern FUN_02002BD4 +.extern FUN_02002BE4 +.extern FUN_02002BF4 +.extern FUN_02002C04 +.extern FUN_02003914 +.extern FUN_02005EE0 +.extern FUN_02006BDC +.extern FUN_020073E8 +.extern FUN_02007540 +.extern FUN_02007F34 +.extern FUN_020081B4 +.extern FUN_02008284 +.extern FUN_02008290 +.extern FUN_02008D44 +.extern FUN_02008DDC +.extern FUN_0200AA14 +.extern FUN_0200B0D4 +.extern FUN_0200BAAC +.extern FUN_0200BC38 +.extern FUN_0200C344 +.extern FUN_0200C650 +.extern FUN_0200C720 +.extern FUN_0200C750 +.extern FUN_0200C978 +.extern FUN_02011898 +.extern FUN_020119A4 +.extern FUN_02011AC0 +.extern FUN_02012EAC +.extern FUN_0201C328 +.extern FUN_0201C350 +.extern FUN_0201D568 +.extern FUN_0201D5E8 +.extern FUN_0201D658 +.extern FUN_0201D674 +.extern FUN_020202DC +.extern FUN_0202502C +.extern FUN_02033590 +.extern FUN_02033778 +.extern FUN_02061028 +.extern FUN_02066F04 +.extern FUN_02068018 +.extern FUN_0206851C +.extern FUN_02068538 +.extern FUN_02068640 +.extern FUN_02068654 +.extern FUN_02068698 +.extern FUN_02068734 +.extern FUN_02068FE0 +.extern FUN_02069010 +.extern FUN_02069038 +.extern FUN_020697CC +.extern FUN_02069AEC +.extern FUN_02069BE4 +.extern FUN_02069C4C +.extern FUN_02069CF4 +.extern FUN_02069DC8 +.extern FUN_02069F24 +.extern FUN_0206A014 +.extern FUN_0206A94C +.extern FUN_0206AA30 +.extern FUN_0206AB04 +.extern FUN_0206AB58 +.extern FUN_0206ACD4 +.extern FUN_0206ADE0 +.extern FUN_0206ADF0 +.extern FUN_0206B244 +.extern FUN_0206B330 +.extern FUN_0206B428 +.extern FUN_0206B87C +.extern FUN_0206B894 +.extern FUN_0206B8A0 +.extern FUN_0206B8AC +.extern FUN_0206BAD0 +.extern FUN_0206BB34 +.extern FUN_0206BF90 +.extern FUN_0206BFF0 +.extern FUN_0206C0C8 +.extern FUN_0206C1A0 +.extern FUN_0206C1FC +.extern FUN_0206C224 +.extern FUN_0206C268 +.extern FUN_0206C294 +.extern FUN_0206C2D4 +.extern FUN_0206C2F8 +.extern FUN_0206C33C +.extern FUN_0206C364 +.extern FUN_0206C398 +.extern FUN_0206C3F4 +.extern FUN_0206C438 +.extern FUN_0206C46C +.extern FUN_0206C4C4 +.extern FUN_0206C4F0 +.extern FUN_0206E21C +.extern FUN_0206E224 +.extern FUN_0206E22C +.extern FUN_0206E240 +.extern FUN_0206E270 +.extern FUN_0206E2E0 +.extern FUN_0206E2E8 +.extern FUN_0206EAEC +.extern FUN_0206EB50 +.extern FUN_0206EB78 +.extern FUN_0206EB88 +.extern FUN_0206EBB4 +.extern FUN_0206F1C0 +.extern FUN_020799E8 +.extern FUN_02079A24 +.extern FUN_02087B78 +.extern FUN_021EEF0C +.extern FUN_021EEF68 +.extern FUN_021EEF84 +.extern FUN_021EEF98 +.extern FUN_021EEF9C +.extern FUN_021EFBF4 +.extern FUN_021EFD8C +.extern FUN_021F45A4 +.extern FUN_021F4698 +.extern FUN_021F4A30 +.extern FUN_02211E7C +.extern FUN_02211F5C +.extern FUN_02212024 +.extern FUN_02212048 +.extern FUN_02212384 +.extern FUN_022123A0 +.extern FUN_022123B0 +.extern FUN_022156C0 +.extern FUN_0221590C +.extern FUN_02215918 +.extern FUN_0221594C +.extern FUN_02215988 +.extern FUN_02215A44 +.extern FUN_022186F0 +.extern FX_ModS32 +.extern MOD08_02228218 +.extern MOD08_02228524 +.extern MOD08_02228570 +.extern MOD08_022285A4 +.extern MOD08_022285B4 +.extern MOD08_02228618 +.extern MOD08_02228AB8 +.extern MOD08_02228AC0 +.extern MOD08_02229918 +.extern MOD08_022299E8 +.extern MOD08_02229A00 +.extern MOD08_02229A2C +.extern MOD08_02229A5C +.extern MOD08_02229A80 +.extern MOD08_02229FE4 +.extern MOD08_02229FF0 +.extern MOD08_0222A008 +.extern MOD08_0222A00C +.extern MOD08_0222A018 +.extern MOD08_0222A024 +.extern MOD08_0222A0D4 +.extern MOD08_0222A110 +.extern MOD08_0222A14C +.extern MOD08_0222A170 +.extern MOD08_0222A1DC +.extern MOD08_0222A204 +.extern MOD08_0222A494 +.extern MOD08_0222A568 +.extern MOD08_0222A6A4 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s new file mode 100644 index 00000000..7f7ae7cf --- /dev/null +++ b/arm9/modules/11/asm/module_11.s @@ -0,0 +1,98637 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD11_0222D5C0 +MOD11_0222D5C0: ; 0x0222D5C0 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r4, r1, #0 + add r6, r0, #0 + bl FUN_0200628C + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0xf + bhi _0222D6D2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222D5E0: ; jump table + .short _0222D600 - _0222D5E0 - 2 ; case 0 + .short _0222D620 - _0222D5E0 - 2 ; case 1 + .short _0222D65A - _0222D5E0 - 2 ; case 2 + .short _0222D670 - _0222D5E0 - 2 ; case 3 + .short _0222D686 - _0222D5E0 - 2 ; case 4 + .short _0222D696 - _0222D5E0 - 2 ; case 5 + .short _0222D6AC - _0222D5E0 - 2 ; case 6 + .short _0222D6C8 - _0222D5E0 - 2 ; case 7 + .short _0222D6DA - _0222D5E0 - 2 ; case 8 + .short _0222D6EE - _0222D5E0 - 2 ; case 9 + .short _0222D704 - _0222D5E0 - 2 ; case 10 + .short _0222D720 - _0222D5E0 - 2 ; case 11 + .short _0222D742 - _0222D5E0 - 2 ; case 12 + .short _0222D752 - _0222D5E0 - 2 ; case 13 + .short _0222D7C2 - _0222D5E0 - 2 ; case 14 + .short _0222D7E4 - _0222D5E0 - 2 ; case 15 +_0222D600: + mov r2, #0xb + mov r0, #3 + mov r1, #5 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, [r5] + mov r0, #4 + tst r0, r1 + beq _0222D61A + mov r0, #1 + str r0, [r4] + b _0222D7EA +_0222D61A: + mov r0, #3 + str r0, [r4] + b _0222D7EA +_0222D620: + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0222F29C + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02033778 + bl FUN_02033590 + cmp r0, #0 + bne _0222D648 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x14 + bl FUN_0202A0E8 + b _0222D654 +_0222D648: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x19 + bl FUN_0202A0E8 +_0222D654: + mov r0, #2 + str r0, [r4] + b _0222D7EA +_0222D65A: + add r0, r6, #0 + bl MOD11_0222F4E4 + cmp r0, #1 + bne _0222D6D2 + add r0, r6, #0 + bl MOD11_0222F93C + mov r0, #3 + str r0, [r4] + b _0222D7EA +_0222D670: + add r0, r6, #0 + bl MOD11_0222F988 + cmp r0, #1 + bne _0222D680 + mov r0, #4 + str r0, [r4] + b _0222D7EA +_0222D680: + mov r0, #5 + str r0, [r4] + b _0222D7EA +_0222D686: + add r0, r6, #0 + bl MOD11_0222FABC + cmp r0, #1 + bne _0222D6D2 + mov r0, #5 + str r0, [r4] + b _0222D7EA +_0222D696: + add r0, r6, #0 + bl MOD11_0222FB04 + cmp r0, #1 + bne _0222D6A6 + mov r0, #6 + str r0, [r4] + b _0222D7EA +_0222D6A6: + mov r0, #8 + str r0, [r4] + b _0222D7EA +_0222D6AC: + add r0, r6, #0 + bl MOD11_0222FC38 + cmp r0, #1 + bne _0222D6D2 + ldr r0, _0222D7F0 ; =0x00000007 + bl FUN_02005F60 + mov r0, #7 + str r0, [r4] + mov r0, #0x3d + bl FUN_02031588 + b _0222D7EA +_0222D6C8: + mov r0, #0x3d + bl FUN_020315D8 + cmp r0, #0 + bne _0222D6D4 +_0222D6D2: + b _0222D7EA +_0222D6D4: + mov r0, #8 + str r0, [r4] + b _0222D7EA +_0222D6DA: + ldr r0, _0222D7F4 ; =0x00000008 + mov r1, #2 + bl FUN_02005FDC + add r0, r6, #0 + bl MOD11_0222DB50 + mov r0, #9 + str r0, [r4] + b _0222D7EA +_0222D6EE: + add r0, r6, #0 + bl MOD11_0222DF4C + cmp r0, #1 + bne _0222D7EA + add r0, r6, #0 + bl MOD11_0222DFA4 + mov r0, #0xa + str r0, [r4] + b _0222D7EA +_0222D704: + add r0, r6, #0 + bl MOD11_0222FC80 + cmp r0, #1 + bne _0222D714 + mov r0, #0xb + str r0, [r4] + b _0222D7EA +_0222D714: + mov r0, #5 + bl FUN_020168D0 + mov r0, #0xd + str r0, [r4] + b _0222D7EA +_0222D720: + add r0, r6, #0 + bl MOD11_0222FE58 + cmp r0, #1 + bne _0222D7EA + ldr r0, _0222D7F0 ; =0x00000007 + bl FUN_02005F60 + mov r0, #5 + bl FUN_020168D0 + mov r0, #0x3e + bl FUN_02031588 + mov r0, #0xc + str r0, [r4] + b _0222D7EA +_0222D742: + mov r0, #0x3e + bl FUN_020315D8 + cmp r0, #0 + beq _0222D7EA + mov r0, #0xf + str r0, [r4] + b _0222D7EA +_0222D752: + add r1, sp, #0x24 + add r2, sp, #0x20 + bl MOD11_02230D38 + add r6, r0, #0 + beq _0222D7BC + mov r0, #3 + mov r1, #0x49 + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r0, [r5, #4] + ldr r1, [sp, #0x24] + bl FUN_0206B9B0 + add r1, r0, #0 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r2, [r5, r0] + mov r3, #0x49 + str r2, [sp] + add r2, r0, #0 + sub r2, #0x58 + ldr r2, [r5, r2] + str r2, [sp, #4] + add r2, r0, #0 + sub r2, #0x60 + ldr r2, [r5, r2] + str r2, [sp, #8] + add r2, r0, #0 + sub r2, #0x24 + ldr r2, [r5, r2] + sub r0, #0x40 + str r2, [sp, #0xc] + ldr r0, [r5, r0] + add r2, r6, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + str r0, [sp, #0x14] + mov r0, #3 + str r0, [sp, #0x18] + str r3, [sp, #0x1c] + add r3, #0xe7 + ldr r0, [r5, #4] + ldr r3, [r5, r3] + bl FUN_0206C700 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0xe + str r0, [r4] + b _0222D7EA +_0222D7BC: + mov r0, #0xf + str r0, [r4] + b _0222D7EA +_0222D7C2: + mov r0, #0x66 + lsl r0, r0, #2 + ldr r5, [r5, r0] + add r0, r5, #0 + bl FUN_0206C91C + cmp r0, #1 + bne _0222D7EA + add r0, r5, #0 + bl FUN_0206C92C + mov r0, #0x49 + bl FUN_020168D0 + mov r0, #0xd + str r0, [r4] + b _0222D7EA +_0222D7E4: + add sp, #0x28 + mov r0, #1 + pop {r4, r5, r6, pc} +_0222D7EA: + mov r0, #0 + add sp, #0x28 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222D7F0: .word 0x00000007 +_0222D7F4: .word 0x00000008 + + thumb_func_start MOD11_0222D7F8 +MOD11_0222D7F8: ; 0x0222D7F8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD11_02258658 + ldr r0, [r4, #4] + bl MOD11_022584AC + ldr r1, _0222D834 ; =0x000023FB + mov r0, #4 + ldrb r2, [r4, r1] + orr r0, r2 + strb r0, [r4, r1] + mov r0, #2 + bl FUN_02002CF8 + add r0, r4, #0 + mov r1, #3 + bl MOD11_02231338 + ldr r0, _0222D838 ; =0x00000008 + bl FUN_02005F60 + ldr r0, _0222D83C ; =0x00000009 + mov r1, #2 + bl FUN_02005FDC + pop {r4, pc} + .align 2, 0 +_0222D834: .word 0x000023FB +_0222D838: .word 0x00000008 +_0222D83C: .word 0x00000009 + + thumb_func_start MOD11_0222D840 +MOD11_0222D840: ; 0x0222D840 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD11_02258658 + ldr r0, [r4, #8] + bl FUN_02019178 + ldr r0, [r4, #4] + bl MOD11_0222E4E8 + add r0, r4, #0 + bl MOD11_0222E51C + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x90 + add r1, #0x94 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C398 + add r4, #0x90 + ldr r0, [r4] + bl FUN_0200BD04 + bl FUN_0201C29C + mov r0, #2 + bl FUN_02002CF8 + pop {r4, pc} + + thumb_func_start MOD11_0222D88C +MOD11_0222D88C: ; 0x0222D88C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0222D938 ; =0x00000009 + bl FUN_02005F60 + ldr r0, _0222D93C ; =0x00000008 + mov r1, #2 + bl FUN_02005FDC + add r0, r4, #0 + mov r1, #0 + bl MOD11_02231338 + bl FUN_02022300 + add r5, r0, #0 + bl FUN_020222F8 + add r1, r0, #0 + mov r0, #0 + add r2, r5, #0 + blx MIi_CpuClear16 + bl FUN_02031190 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_0223021C + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_022584D4 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #2 + mov r1, #5 + bl FUN_02002C50 + ldr r1, _0222D940 ; =0x000023FB + mov r0, #2 + ldrb r2, [r4, r1] + orr r0, r2 + strb r0, [r4, r1] + ldr r0, [r4, #4] + bl MOD11_02258450 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD11_022586BC + mov r0, #0x67 + lsl r0, r0, #2 + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD11_02258820 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD11_02258958 + mov r0, #1 + bl FUN_02002840 + add r0, r4, #0 + bl MOD11_0222FE94 + add r4, #0x90 + ldr r0, [r4] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222D938: .word 0x00000009 +_0222D93C: .word 0x00000008 +_0222D940: .word 0x000023FB + + thumb_func_start MOD11_0222D944 +MOD11_0222D944: ; 0x0222D944 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD11_02231410 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0222D980 +MOD11_0222D980: ; 0x0222D980 + push {r4, r5, r6, lr} + sub sp, #0x68 + ldr r1, _0222DB38 ; =0x000023FB + add r5, r0, #0 + ldrb r2, [r5, r1] + mov r0, #1 + ldr r4, _0222DB3C ; =0x0225DAE0 + bic r2, r0 + mov r0, #1 + orr r0, r2 + strb r0, [r5, r1] + add r3, sp, #0x14 + mov r2, #0xa +_0222D99A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222D99A + ldr r0, [r4] + mov r1, #1 + str r0, [r3] + ldr r0, [r5, #4] + add r2, sp, #0x14 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02018744 + ldr r0, [r5, #4] + mov r1, #2 + add r2, sp, #0x30 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02018744 + ldr r0, [r5, #4] + mov r1, #3 + add r2, sp, #0x4c + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + mov r1, #3 + bl FUN_02018744 + ldr r1, _0222DB40 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r5, #0 + bl MOD11_02230E44 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #4] + add r2, r1, #0 + mov r3, #0xa + bl FUN_0200D274 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r1, #9 + lsl r1, r1, #0xa + ldr r1, [r5, r1] + ldr r2, [r5, #4] + mov r0, #7 + add r1, r1, #3 + mov r3, #3 + bl FUN_0200687C + add r0, r5, #0 + bl MOD11_02230C68 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #9 + str r0, [sp, #8] + lsl r3, r3, #0xa + ldr r6, [r5, r3] + ldr r0, [r5, #0x28] + lsl r3, r6, #1 + add r3, r6, r3 + add r3, #0x9e + add r2, r3, r2 + mov r1, #7 + mov r3, #5 + bl FUN_020030E8 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + mov r1, #0x26 + mov r3, #5 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xb0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + mov r1, #0xe + mov r2, #7 + mov r3, #5 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #7 + mov r1, #2 + mov r3, #3 + bl FUN_020068C8 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _0222DB44 ; =0xFFFF1FFF + ldr r3, _0222DB48 ; =0x04001000 + and r2, r1 + str r2, [r0] + ldr r2, [r3] + and r1, r2 + add r2, r0, #0 + str r1, [r3] + add r2, #0x48 + ldrh r3, [r2] + mov r1, #0x3f + add r0, #0x4a + bic r3, r1 + strh r3, [r2] + ldrh r2, [r0] + bic r2, r1 + strh r2, [r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r0, _0222DB4C ; =MOD11_0222F01C + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _0222DB38 ; =0x000023FB + mov r3, #2 + ldrb r1, [r5, r0] + mov r2, #1 + orr r1, r3 + strb r1, [r5, r0] + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r5, #4] + ldr r1, [r5, #8] + bl FUN_02019064 + ldr r0, [r5, #8] + mov r1, #0xff + bl FUN_02019620 + ldr r0, [r5, #8] + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + add r0, r5, #0 + bl MOD11_0222FE94 + add sp, #0x68 + pop {r4, r5, r6, pc} + nop +_0222DB38: .word 0x000023FB +_0222DB3C: .word 0x0225DAE0 +_0222DB40: .word 0x04000008 +_0222DB44: .word 0xFFFF1FFF +_0222DB48: .word 0x04001000 +_0222DB4C: .word MOD11_0222F01C + + thumb_func_start MOD11_0222DB50 +MOD11_0222DB50: ; 0x0222DB50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_020222F0 + add r5, r0, #0 + bl FUN_020222E8 + add r1, r0, #0 + mov r0, #0 + add r2, r5, #0 + blx MIi_CpuClear16 + bl FUN_02022300 + add r5, r0, #0 + bl FUN_020222F8 + add r1, r0, #0 + mov r0, #0 + add r2, r5, #0 + blx MIi_CpuClear16 + bl FUN_0201B9D4 + ldr r1, _0222DF0C ; =0x00002430 + str r0, [r4, r1] + add r0, sp, #0x20 + add r1, sp, #0x14 + bl FUN_0201265C + ldr r0, _0222DF10 ; =0x021C48B8 + ldr r6, [sp, #0x24] + ldr r5, [r0, #0x2c] + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + lsl r6, r6, #8 + add r0, r1, r0 + lsl r3, r0, #0x18 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x20] + lsl r2, r0, #0x10 + ldr r0, [sp, #0x28] + mul r6, r0 + lsl r0, r6, #0x10 + add r0, r1, r0 + add r0, r2, r0 + add r0, r3, r0 + add r0, r5, r0 + bl FUN_0201B9E0 + bl MOD11_0222EF30 + str r0, [r4] + bl FUN_02015F1C + mov r0, #2 + mov r1, #5 + bl FUN_02002C50 + mov r0, #0xe + mov r1, #1 + mov r2, #0xf + mov r3, #5 + bl FUN_0200B870 + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, [r4, r1] + add r0, r1, #4 + str r2, [r4, r0] + mov r0, #5 + bl FUN_02002FD0 + str r0, [r4, #0x28] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r4, #0x28] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #5 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r4, #0x28] + lsl r2, r1, #9 + mov r3, #5 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r4, #0x28] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #5 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r4, #0x28] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #5 + bl FUN_02003008 + mov r0, #5 + bl FUN_02016B94 + str r0, [r4, #4] + mov r0, #5 + mov r1, #3 + bl FUN_02018FF4 + mov r7, #0x73 + str r0, [r4, #8] + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_0222DC42: + mov r1, #0x32 + mov r0, #5 + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r5, r7] + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0222DC42 + mov r0, #0x40 + mov r1, #5 + bl FUN_0201C24C + bl FUN_02031190 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_0223021C + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_022584D4 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [r4, #4] + add r0, r4, #0 + bl MOD11_0222E264 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r4, #4] + ldr r1, [r4, #8] + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + ldr r0, [r4, #8] + mov r1, #0xff + bl FUN_02019620 + ldr r0, [r4, #8] + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r0, #5 + bl FUN_0200BB14 + add r1, r4, #0 + add r1, #0x90 + str r0, [r1] + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + ldr r1, _0222DF14 ; =0x0225DA20 + ldr r2, _0222DF18 ; =0x0225D9D8 + mov r3, #0x20 + bl FUN_0200BB6C + ldr r1, _0222DF1C ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0200BB34 + add r1, r4, #0 + add r1, #0x94 + str r0, [r1] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x90 + add r1, #0x94 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x80 + bl FUN_0200BBF0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x90 + add r1, #0x94 + ldr r0, [r0] + ldr r1, [r1] + ldr r2, _0222DF20 ; =0x0225D9EC + bl FUN_0200BF60 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD11_022586BC + mov r0, #0x67 + lsl r0, r0, #2 + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD11_02258820 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD11_02258958 + mov r0, #5 + bl FUN_02006D98 + add r1, r4, #0 + add r1, #0x88 + str r0, [r1] + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0 + mov r2, #0xc0 + bl FUN_020081B4 + add r0, r4, #0 + bl MOD11_02231390 + bl MOD11_0222EFDC + mov r0, #5 + bl FUN_02211F5C + add r1, r4, #0 + add r1, #0x8c + str r0, [r1] + add r0, r4, #0 + bl MOD11_0222E470 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r2, #0x51 + mov r0, #1 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #5 + bl FUN_0200A86C + str r0, [r4, #0xc] + mov r0, #1 + mov r1, #0x1a + mov r2, #0 + mov r3, #5 + bl FUN_0200A86C + str r0, [r4, #0x10] + mov r0, #5 + bl FUN_0200AA80 + str r0, [r4, #0x14] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #5 + bl FUN_020219F4 + str r0, [r4, #0x18] + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020031FC + ldr r1, _0222DF24 ; =0x00002224 + mov r2, #0xe0 + add r1, r4, r1 + blx MIi_CpuCopy16 + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_020031FC + ldr r1, _0222DF28 ; =0x00002304 + mov r2, #0xe0 + add r1, r4, r1 + blx MIi_CpuCopy16 + add r0, r4, #0 + bl MOD11_02230C68 + mov r1, #0 + lsl r5, r0, #2 + mov r3, #9 + str r1, [sp] + mov r0, #0x70 + str r0, [sp, #4] + lsl r3, r3, #0xa + ldr r3, [r4, r3] + mov r6, #0xc + mul r6, r3 + ldr r3, _0222DF2C ; =0x0225DB88 + ldr r0, [r4, #0x28] + add r3, r3, r6 + ldr r3, [r5, r3] + mov r2, #2 + lsl r3, r3, #0x10 + lsr r3, r3, #0x10 + bl FUN_02003914 + mov r0, #0xc0 + str r0, [sp] + add r0, #0x40 + mov r3, #9 + str r0, [sp, #4] + lsl r3, r3, #0xa + ldr r3, [r4, r3] + mov r6, #0xc + mul r6, r3 + ldr r3, _0222DF2C ; =0x0225DB88 + ldr r0, [r4, #0x28] + add r3, r3, r6 + ldr r3, [r5, r3] + mov r1, #0 + lsl r3, r3, #0x10 + mov r2, #2 + lsr r3, r3, #0x10 + bl FUN_02003914 + mov r0, #0 + str r0, [sp] + mov r0, #0xdf + mov r3, #9 + str r0, [sp, #4] + lsl r3, r3, #0xa + mov r1, #2 + ldr r3, [r4, r3] + mov r6, #0xc + mul r6, r3 + ldr r3, _0222DF2C ; =0x0225DB88 + ldr r0, [r4, #0x28] + add r3, r3, r6 + ldr r3, [r5, r3] + add r2, r1, #0 + lsl r3, r3, #0x10 + lsr r3, r3, #0x10 + bl FUN_02003914 + mov r1, #0 + mov r0, #0xa0 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + ldr r0, [r4, #0x28] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r3, _0222DF30 ; =0x0000FFFF + mov r1, #1 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r3, _0222DF30 ; =0x0000FFFF + mov r1, #3 + bl FUN_02003914 + ldr r0, [r4, #0x28] + mov r1, #0 + mov r2, #0xb + mov r3, #5 + bl FUN_020142EC + mov r1, #0x1b + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020143A8 + ldr r0, _0222DF34 ; =MOD11_0222F100 + ldr r2, _0222DF38 ; =0x0000EA60 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x1c] + ldr r0, _0222DF3C ; =MOD11_0222F144 + ldr r2, _0222DF40 ; =0x0000C350 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x20] + mov r2, #0x4b + ldr r0, _0222DF44 ; =MOD11_0222F254 + add r1, r4, #0 + lsl r2, r2, #4 + bl FUN_0200CA60 + str r0, [r4, #0x24] + mov r1, #0x32 + ldr r0, _0222DF48 ; =0x00002434 + mvn r1, r1 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD11_0222FE94 + add r0, r4, #0 + bl MOD11_02230218 + bl FUN_0206F1C0 + mov r0, #5 + mov r1, #4 + mov r2, #0 + bl FUN_02014BF4 + mov r1, #0x71 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #2 + mov r1, #5 + bl FUN_0201C328 + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222DF0C: .word 0x00002430 +_0222DF10: .word 0x021C48B8 +_0222DF14: .word 0x0225DA20 +_0222DF18: .word 0x0225D9D8 +_0222DF1C: .word 0x00100010 +_0222DF20: .word 0x0225D9EC +_0222DF24: .word 0x00002224 +_0222DF28: .word 0x00002304 +_0222DF2C: .word 0x0225DB88 +_0222DF30: .word 0x0000FFFF +_0222DF34: .word MOD11_0222F100 +_0222DF38: .word 0x0000EA60 +_0222DF3C: .word MOD11_0222F144 +_0222DF40: .word 0x0000C350 +_0222DF44: .word MOD11_0222F254 +_0222DF48: .word 0x00002434 + + thumb_func_start MOD11_0222DF4C +MOD11_0222DF4C: ; 0x0222DF4C + push {r4, r5, r6, lr} + bl FUN_02006278 + ldr r1, _0222DF9C ; =0x000023F8 + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0 + beq _0222DF7A + ldr r2, [r4, #0x2c] + mov r1, #4 + tst r1, r2 + ldr r1, [r4, #0x30] + beq _0222DF6C + bl MOD11_0223D238 + b _0222DF7A +_0222DF6C: + bl MOD11_0223D238 + ldr r1, _0222DFA0 ; =0x000023FA + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD11_02254820 +_0222DF7A: + ldr r0, [r4, #0x44] + mov r6, #0 + cmp r0, #0 + ble _0222DF96 + add r5, r4, #0 +_0222DF84: + ldr r1, [r5, #0x34] + add r0, r4, #0 + bl MOD11_0224CB38 + ldr r0, [r4, #0x44] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0222DF84 +_0222DF96: + ldr r0, _0222DFA0 ; =0x000023FA + ldrb r0, [r4, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_0222DF9C: .word 0x000023F8 +_0222DFA0: .word 0x000023FA + + thumb_func_start MOD11_0222DFA4 +MOD11_0222DFA4: ; 0x0222DFA4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200628C + add r7, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r4, #0 + bl MOD11_02230EC8 + ldr r0, _0222E248 ; =0x0000241C + ldrb r0, [r4, r0] + cmp r0, #4 + beq _0222DFE4 + ldr r0, [r4, #0x6c] + mov r1, #0 + bl FUN_0206B9B0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02230FA8 +_0222DFE4: + mov r0, #0 + str r0, [sp] + add r6, r7, #0 + add r5, r4, #0 +_0222DFEC: + ldr r0, [r5, #0x68] + ldr r1, [r6, #4] + bl FUN_0206BAD0 + ldr r0, [r5, #0x68] + bl FUN_02016A18 + add r1, r6, #0 + add r1, #0xf8 + ldr r0, [r5, #0x48] + ldr r1, [r1] + bl FUN_0202393C + ldr r0, [r5, #0x48] + bl FUN_02016A18 + ldr r0, [sp] + add r6, r6, #4 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp] + cmp r0, #4 + blt _0222DFEC + mov r0, #0x1b + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_020143D0 + mov r1, #0x42 + lsl r1, r1, #2 + ldr r0, [r4, #0x58] + ldr r1, [r7, r1] + bl FUN_0206EBB4 + ldr r0, [r4, #0x58] + bl FUN_02016A18 + mov r1, #0x11 + lsl r1, r1, #4 + ldr r0, [r4, #0x60] + ldr r1, [r7, r1] + bl FUN_02023D80 + ldr r0, [r4, #0x60] + bl FUN_02016A18 + mov r0, #0x45 + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + str r1, [r7, r0] + add r1, r0, #0 + ldr r2, [r4, #0x5c] + sub r1, #8 + str r2, [r7, r1] + add r1, r4, #0 + add r1, #0x98 + ldr r2, [r1] + add r1, r0, #0 + add r1, #0x14 + str r2, [r7, r1] + add r1, r4, #0 + add r1, #0x9c + ldr r2, [r1] + add r1, r0, #0 + add r1, #0x20 + str r2, [r7, r1] + add r1, r0, #0 + ldr r2, _0222E24C ; =0x00002410 + add r1, #0x7c + ldr r3, [r4, r2] + add r0, #0x5c + str r3, [r7, r1] + add r1, r2, #0 + add r1, #0xc + ldrb r3, [r4, r1] + mov r1, #0x3f + add r2, #0x28 + and r1, r3 + str r1, [r7, #0x14] + ldr r1, [r4, r2] + mov r2, #4 + str r1, [r7, r0] + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r3, #0 + bl MOD11_0224C474 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r7, r1] + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #3 + mov r3, #0 + bl MOD11_0224C474 + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r7, r1] + mov r3, #0 + add r0, r2, r0 + str r0, [r7, r1] + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #6 + bl MOD11_0224C474 + add r5, r0, #0 + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #6 + mov r3, #2 + bl MOD11_0224C474 + mov r1, #0x4f + lsl r1, r1, #2 + ldr r2, [r7, r1] + add r0, r5, r0 + add r0, r2, r0 + str r0, [r7, r1] + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #7 + mov r3, #0 + bl MOD11_0224C474 + add r5, r0, #0 + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #7 + mov r3, #2 + bl MOD11_0224C474 + mov r1, #5 + lsl r1, r1, #6 + ldr r2, [r7, r1] + add r0, r5, r0 + add r0, r2, r0 + str r0, [r7, r1] + add r7, r1, #0 + mov r6, #0 + add r5, r4, #0 + add r7, #0x8c +_0222E10A: + ldr r0, [r5, r7] + bl FUN_02016A18 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0222E10A + ldr r0, [r4, #0x18] + bl FUN_02016A18 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x28] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x28] + bl FUN_02002FEC + ldr r0, [r4, #0xc] + bl FUN_0200A8B8 + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_0200AB18 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02014C28 + bl FUN_02012EAC + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_02212024 + ldr r0, [r4, #0x30] + bl MOD11_0223D284 + ldr r0, [r4, #0x44] + mov r6, #0 + cmp r0, #0 + ble _0222E194 + ldr r7, _0222E250 ; =0x000023F9 + add r5, r4, #0 +_0222E180: + ldrb r2, [r4, r7] + ldr r1, [r5, #0x34] + add r0, r4, #0 + bl MOD11_0224CB54 + ldr r0, [r4, #0x44] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r0 + blt _0222E180 +_0222E194: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_020072E8 + ldr r0, _0222E250 ; =0x000023F9 + ldrb r0, [r4, r0] + cmp r0, #2 + beq _0222E1AC + add r0, r4, #0 + bl MOD11_0222D840 +_0222E1AC: + mov r0, #0 + bl FUN_02002B60 + mov r0, #0 + bl FUN_02002B7C + mov r0, #0 + bl FUN_02002BB8 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_020191A4 + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200B990 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x1c] + bl FUN_0200CAB4 + ldr r0, [r4, #0x20] + bl FUN_0200CAB4 + bl FUN_0201CD04 + ldr r0, [r4] + bl MOD11_0222EFD4 + ldr r0, _0222E254 ; =0x00002430 + ldr r0, [r4, r0] + bl FUN_0201B9E0 + add r0, r4, #0 + bl MOD11_02231474 + cmp r0, #0 + beq _0222E220 + ldr r0, _0222E258 ; =0x00000704 + mov r1, #0 + bl FUN_020054F0 +_0222E220: + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201C350 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, _0222E25C ; =0x00000008 + bl FUN_02005F60 + bl FUN_02033590 + cmp r0, #0 + bne _0222E244 + ldr r0, _0222E260 ; =0x00000010 + bl FUN_02005F60 +_0222E244: + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E248: .word 0x0000241C +_0222E24C: .word 0x00002410 +_0222E250: .word 0x000023F9 +_0222E254: .word 0x00002430 +_0222E258: .word 0x00000704 +_0222E25C: .word 0x00000008 +_0222E260: .word 0x00000010 + + thumb_func_start MOD11_0222E264 +MOD11_0222E264: ; 0x0222E264 + push {r4, r5, r6, r7, lr} + sub sp, #0x9c + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0201E6D8 + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + ldr r6, _0222E450 ; =0x0225DA68 + add r3, sp, #0x20 + mov r2, #5 +_0222E282: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222E282 + add r0, sp, #0x20 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + ldr r6, _0222E454 ; =0x0225D9A8 + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r1, _0222E458 ; =0x000023FB + mov r0, #1 + ldrb r2, [r5, r1] + ldr r6, _0222E45C ; =0x0225DB34 + add r3, sp, #0x48 + bic r2, r0 + mov r0, #1 + orr r0, r2 + strb r0, [r5, r1] + mov r2, #0xa +_0222E2F0: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222E2F0 + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x48 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x64 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x80 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + ldr r1, _0222E460 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD11_02258450 + add r0, r5, #0 + bl MOD11_02230E44 + add r7, r0, #0 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #5 + mov r1, #1 + str r0, [sp, #4] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0xa + bl FUN_0200D274 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #5 + mov r1, #9 + str r0, [sp, #0xc] + lsl r1, r1, #0xa + ldr r1, [r5, r1] + mov r0, #7 + add r1, r1, #3 + add r2, r4, #0 + mov r3, #3 + bl FUN_0200687C + add r0, r5, #0 + bl MOD11_02230C68 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r2, #9 + str r0, [sp, #8] + lsl r2, r2, #0xa + ldr r3, [r5, r2] + ldr r0, [r5, #0x28] + lsl r2, r3, #1 + add r2, r3, r2 + add r2, #0x9e + mov r1, #7 + add r2, r2, r6 + mov r3, #5 + bl FUN_020030E8 + add r0, r7, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + mov r1, #0x26 + mov r3, #5 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xb0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + mov r1, #0xe + mov r2, #7 + mov r3, #5 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #7 + mov r1, #2 + add r2, r4, #0 + mov r3, #3 + bl FUN_020068C8 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _0222E464 ; =0xFFFF1FFF + ldr r3, _0222E468 ; =0x04001000 + and r2, r1 + str r2, [r0] + ldr r2, [r3] + and r1, r2 + add r2, r0, #0 + str r1, [r3] + add r2, #0x48 + ldrh r3, [r2] + mov r1, #0x3f + add r0, #0x4a + bic r3, r1 + strh r3, [r2] + ldrh r2, [r0] + bic r2, r1 + strh r2, [r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r0, _0222E46C ; =MOD11_0222F01C + add r1, r5, #0 + bl FUN_02015F10 + add sp, #0x9c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222E450: .word 0x0225DA68 +_0222E454: .word 0x0225D9A8 +_0222E458: .word 0x000023FB +_0222E45C: .word 0x0225DB34 +_0222E460: .word 0x04000008 +_0222E464: .word 0xFFFF1FFF +_0222E468: .word 0x04001000 +_0222E46C: .word MOD11_0222F01C + + thumb_func_start MOD11_0222E470 +MOD11_0222E470: ; 0x0222E470 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD11_02230294 + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0 + add r3, r4, #0 + bl MOD11_022583D8 + mov r0, #0x63 + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #1 + add r3, r4, #0 + bl MOD11_022583D8 + add r0, r5, #0 + bl MOD11_0222FF78 + str r0, [sp] + ldr r0, [r5, #0x44] + mov r4, #0 + cmp r0, #0 + ble _0222E4E2 + add r6, r5, #0 +_0222E4AC: + ldr r1, [sp] + add r0, r5, #0 + mov r2, #2 + add r3, r4, #0 + bl MOD11_0224C474 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_02230014 + mov r1, #0x9a + mov r2, #0 + bl FUN_020671BC + add r2, r0, #0 + ldr r1, [r6, #0x34] + add r0, r5, #0 + add r3, r7, #0 + bl MOD11_0224CA94 + ldr r0, [r5, #0x44] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, r0 + blt _0222E4AC +_0222E4E2: + bl FUN_02033E74 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0222E4E8 +MOD11_0222E4E8: ; 0x0222E4E8 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD11_022584AC + pop {r4, pc} + + thumb_func_start MOD11_0222E51C +MOD11_0222E51C: ; 0x0222E51C + bx lr + .align 2, 0 + + thumb_func_start MOD11_0222E520 +MOD11_0222E520: ; 0x0222E520 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + ldr r0, [r1] + str r1, [sp, #4] + str r0, [r4, #0x2c] + mov r7, #0 + add r6, r4, #0 + add r5, r1, #0 +_0222E532: + mov r0, #5 + bl FUN_02023928 + add r1, r0, #0 + add r0, r5, #0 + str r1, [r6, #0x48] + add r0, #0xf8 + ldr r0, [r0] + bl FUN_0202393C + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r7, r7, #1 + str r0, [r6, #0x78] + add r6, r6, #4 + add r5, r5, #4 + cmp r7, #4 + blt _0222E532 + mov r0, #5 + bl FUN_0206EB88 + str r0, [r4, #0x58] + mov r1, #0x42 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + ldr r1, [r4, #0x58] + bl FUN_0206EBB4 + mov r0, #5 + bl FUN_02023D6C + str r0, [r4, #0x60] + mov r1, #0x11 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + ldr r1, [r4, #0x60] + bl FUN_02023D80 + mov r1, #0x45 + lsl r1, r1, #2 + ldr r0, [sp, #4] + add r2, r1, #0 + ldr r0, [r0, r1] + add r3, r1, #0 + str r0, [r4, #0x64] + ldr r0, [sp, #4] + add r2, #0x1c + ldr r2, [r0, r2] + add r0, r1, #0 + add r0, #0xa0 + str r2, [r4, r0] + add r2, r1, #0 + ldr r0, [sp, #4] + add r2, #0x38 + ldr r2, [r0, r2] + add r0, r1, #0 + add r0, #0xa4 + str r2, [r4, r0] + add r2, r1, #0 + ldr r0, [sp, #4] + sub r2, #8 + ldr r0, [r0, r2] + add r2, r1, #0 + str r0, [r4, #0x5c] + ldr r0, [sp, #4] + add r2, #0x14 + ldr r2, [r0, r2] + add r0, r4, #0 + add r0, #0x98 + str r2, [r0] + add r2, r1, #0 + ldr r0, [sp, #4] + add r2, #0x50 + ldr r2, [r0, r2] + ldr r0, _0222E8BC ; =0x00002420 + add r3, #0x20 + str r2, [r4, r0] + ldr r2, [sp, #4] + ldr r3, [r2, r3] + add r2, r4, #0 + add r2, #0x9c + str r3, [r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x7c + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #0x10 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x40 + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #0x24 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x3c + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #0x20 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x44 + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #0x1c + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x4c + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #0x14 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x78 + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #0x18 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x80 + ldr r3, [r2, r3] + add r2, r0, #0 + sub r2, #8 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x54 + ldr r3, [r2, r3] + add r2, r0, #4 + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x58 + ldr r3, [r2, r3] + add r2, r0, #0 + add r2, #0xc + str r3, [r4, r2] + add r3, r1, #0 + ldr r2, [sp, #4] + add r3, #0x60 + ldr r2, [r2, r3] + add r0, #8 + str r2, [r4, r0] + ldr r0, [sp, #4] + add r1, #0x30 + ldr r0, [r0, r1] + mov r1, #0x86 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #4] + sub r1, #0xd4 + ldr r0, [r0, r1] + cmp r0, #0 + bne _0222E67E + bl ErrorHandling +_0222E67E: + ldr r5, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r4, [sp, #0x30] + add r6, r5, #0 + add r7, r4, #0 +_0222E68A: + ldr r0, [sp, #0x30] + ldr r1, [r5, #0x18] + add r0, #0xa0 + strh r1, [r0] + add r3, r6, #0 + add r2, r7, #0 + mov r0, #6 + add r3, #0x28 + add r2, #0xac + mov ip, r0 +_0222E69E: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, ip + sub r0, r0, #1 + mov ip, r0 + bne _0222E69E + ldr r0, [r3] + add r5, r5, #4 + str r0, [r2] + ldr r0, [sp, #0x30] + add r6, #0x34 + add r0, r0, #2 + str r0, [sp, #0x30] + ldr r0, [sp, #8] + add r7, #0x34 + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #4 + blt _0222E68A + add r0, r4, #0 + bl MOD11_0223D1DC + str r0, [r4, #0x30] + mov r6, #0 + add r5, r4, #0 + mov r7, #5 +_0222E6D2: + add r0, r7, #0 + bl FUN_0206B8AC + str r0, [r5, #0x68] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0222E6D2 + ldr r0, [r4, #0x2c] + mov r1, #4 + tst r1, r0 + bne _0222E6EC + b _0222EA8A +_0222E6EC: + add r0, r4, #0 + bl FUN_0206BF90 + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x34] + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_0222FEC0 + ldr r1, [r4, #0x2c] + mov r0, #0x80 + tst r0, r1 + beq _0222E7D0 + ldr r6, _0222E8C0 ; =0x0225DC18 + mov r5, #0 + add r7, r4, #0 +_0222E712: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + str r0, [r7, #0x34] + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #4 + blt _0222E712 + str r5, [r4, #0x44] + mov r6, #0 + add r5, r4, #0 +_0222E734: + ldr r1, [r5, #0x34] + add r0, r4, #0 + bl MOD11_0225377C + ldr r0, [sp, #4] + ldr r1, [r5, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [sp, #4] + add r6, r6, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #4] + cmp r6, #4 + blt _0222E734 + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r4, #0x44] + cmp r0, #0 + ble _0222E7C6 + add r7, r4, #0 +_0222E760: + ldr r0, [r7, #0x68] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222E7AA +_0222E76C: + ldr r0, [r7, #0x68] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222E79E + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E79E + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E7AA +_0222E79E: + ldr r0, [r7, #0x68] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222E76C +_0222E7AA: + str r5, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0xc] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #0xc] + ldr r1, [r4, #0x44] + add r0, r0, #1 + add r7, r7, #4 + str r0, [sp, #0xc] + cmp r0, r1 + blt _0222E760 +_0222E7C6: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + b _0222EA80 +_0222E7D0: + mov r0, #8 + tst r0, r1 + beq _0222E8AC + mov r5, #0 + add r6, r4, #0 +_0222E7DA: + add r0, sp, #0x3c + strb r5, [r0] + ldr r0, [sp, #0x34] + bl FUN_020313CC + add r7, r0, #0 + add r0, r5, #0 + bl FUN_020313CC + ldr r1, _0222E8C4 ; =0x0225D9C8 + lsl r2, r7, #2 + add r1, r1, r2 + ldrb r1, [r0, r1] + add r0, sp, #0x3c + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + str r0, [r6, #0x34] + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #4 + blt _0222E7DA + str r5, [r4, #0x44] + mov r6, #0 + add r5, r4, #0 +_0222E810: + ldr r1, [r5, #0x34] + add r0, r4, #0 + bl MOD11_0225377C + ldr r0, [sp, #4] + ldr r1, [r5, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [sp, #4] + add r6, r6, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #4] + cmp r6, #4 + blt _0222E810 + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x44] + cmp r0, #0 + ble _0222E8A2 + add r7, r4, #0 +_0222E83C: + ldr r0, [r7, #0x68] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222E886 +_0222E848: + ldr r0, [r7, #0x68] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222E87A + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E87A + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E886 +_0222E87A: + ldr r0, [r7, #0x68] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222E848 +_0222E886: + str r5, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x10] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #0x10] + ldr r1, [r4, #0x44] + add r0, r0, #1 + add r7, r7, #4 + str r0, [sp, #0x10] + cmp r0, r1 + blt _0222E83C +_0222E8A2: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + b _0222EA80 +_0222E8AC: + mov r0, #2 + tst r0, r1 + bne _0222E8B4 + b _0222E9D4 +_0222E8B4: + ldr r0, [sp, #0x34] + ldr r1, _0222E8C8 ; =0x0225D9A0 + b _0222E8CC + nop +_0222E8BC: .word 0x00002420 +_0222E8C0: .word 0x0225DC18 +_0222E8C4: .word 0x0225D9C8 +_0222E8C8: .word 0x0225D9A0 +_0222E8CC: + lsl r0, r0, #2 + mov r5, #0 + add r6, r1, r0 + add r7, r4, #0 +_0222E8D4: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + add r1, r0, #0 + add r0, r4, #0 + str r1, [r7, #0x34] + bl MOD11_0225377C + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #4 + blt _0222E8D4 + str r5, [r4, #0x44] + mov r6, #0 + add r5, r4, #0 +_0222E8FE: + ldr r0, [sp, #4] + ldr r1, [r5, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [sp, #4] + add r6, r6, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #4] + cmp r6, #4 + blt _0222E8FE + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r4, #0x44] + cmp r0, #0 + ble _0222E9D2 +_0222E920: + ldr r0, [sp, #0x14] + mov r1, #1 + and r0, r1 + str r0, [sp, #0x2c] + lsl r0, r0, #2 + add r7, r4, r0 + ldr r0, [r7, #0x68] + mov r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222E9B8 +_0222E938: + ldr r0, [r7, #0x68] + add r1, r6, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #0x14] + add r5, r0, #0 + cmp r1, #1 + ble _0222E984 + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x2c] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C474 + cmp r6, r0 + beq _0222E9AC + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222E9AC + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E9AC + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E9B8 + b _0222E9AC +_0222E984: + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222E9AC + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E9AC + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222E9B8 +_0222E9AC: + ldr r0, [r7, #0x68] + add r6, r6, #1 + bl FUN_0206B9AC + cmp r6, r0 + blt _0222E938 +_0222E9B8: + str r6, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x14] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #0x14] + ldr r1, [r4, #0x44] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r1 + blt _0222E920 +_0222E9D2: + b _0222EA80 +_0222E9D4: + ldr r0, [sp, #0x34] + ldr r1, _0222EC6C ; =0x0225D99C + lsl r0, r0, #1 + mov r5, #0 + add r6, r1, r0 + add r7, r4, #0 +_0222E9E0: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + add r1, r0, #0 + add r0, r4, #0 + str r1, [r7, #0x34] + bl MOD11_0225377C + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #2 + blt _0222E9E0 + mov r0, #0 + str r5, [r4, #0x44] + str r0, [sp, #0x18] + add r7, r4, #0 +_0222EA0C: + ldr r0, [sp, #4] + ldr r1, [r7, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [r7, #0x68] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222EA60 +_0222EA22: + ldr r0, [r7, #0x68] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222EA54 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EA54 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EA60 +_0222EA54: + ldr r0, [r7, #0x68] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222EA22 +_0222EA60: + str r5, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x18] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #4 + blt _0222EA0C +_0222EA80: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + b _0222EE3E +_0222EA8A: + mov r1, #0x10 + tst r1, r0 + beq _0222EB90 + ldr r6, _0222EC70 ; =0x0225DC18 + mov r5, #0 + add r7, r4, #0 +_0222EA96: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + add r1, r0, #0 + add r0, r4, #0 + str r1, [r7, #0x34] + bl MOD11_0225377C + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #4 + blt _0222EA96 + str r5, [r4, #0x44] + mov r6, #0 + add r5, r4, #0 +_0222EAC0: + ldr r0, [sp, #4] + ldr r1, [r5, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [sp, #4] + add r6, r6, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #4] + cmp r6, #4 + blt _0222EAC0 + ldr r0, [r4, #0x44] + mov r7, #0 + cmp r0, #0 + ble _0222EB80 +_0222EAE0: + add r0, r4, #0 + add r1, r7, #0 + mov r5, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _0222EB64 +_0222EAEE: + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD11_02230014 + add r6, r0, #0 + cmp r7, #2 + bne _0222EB2E + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222EB56 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EB56 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222EB56 + ldr r0, [sp, #0x38] + cmp r0, r5 + bne _0222EB64 + b _0222EB56 +_0222EB2E: + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222EB56 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EB56 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EB64 +_0222EB56: + add r0, r4, #0 + add r1, r7, #0 + add r5, r5, #1 + bl MOD11_0222FFC8 + cmp r5, r0 + blt _0222EAEE +_0222EB64: + str r5, [sp] + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #2 + add r3, r7, #0 + bl MOD11_0224C54C + cmp r7, #0 + bne _0222EB78 + str r5, [sp, #0x38] +_0222EB78: + ldr r0, [r4, #0x44] + add r7, r7, #1 + cmp r7, r0 + blt _0222EAE0 +_0222EB80: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + ldr r0, _0222EC74 ; =0x000023F8 + mov r1, #1 + strb r1, [r4, r0] + b _0222EE3E +_0222EB90: + mov r1, #8 + tst r1, r0 + beq _0222EC60 + ldr r6, _0222EC70 ; =0x0225DC18 + mov r5, #0 + add r7, r4, #0 +_0222EB9C: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + add r1, r0, #0 + add r0, r4, #0 + str r1, [r7, #0x34] + bl MOD11_0225377C + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #4 + blt _0222EB9C + str r5, [r4, #0x44] + mov r6, #0 + add r5, r4, #0 +_0222EBC6: + ldr r0, [sp, #4] + ldr r1, [r5, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [sp, #4] + add r6, r6, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #4] + cmp r6, #4 + blt _0222EBC6 + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [r4, #0x44] + cmp r0, #0 + ble _0222EC50 + add r7, r4, #0 +_0222EBEA: + ldr r0, [r7, #0x68] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222EC34 +_0222EBF6: + ldr r0, [r7, #0x68] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222EC28 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EC28 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EC34 +_0222EC28: + ldr r0, [r7, #0x68] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222EBF6 +_0222EC34: + str r5, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x1c] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #0x1c] + ldr r1, [r4, #0x44] + add r0, r0, #1 + add r7, r7, #4 + str r0, [sp, #0x1c] + cmp r0, r1 + blt _0222EBEA +_0222EC50: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + ldr r0, _0222EC74 ; =0x000023F8 + mov r1, #1 + strb r1, [r4, r0] + b _0222EE3E +_0222EC60: + mov r1, #2 + tst r0, r1 + bne _0222EC68 + b _0222ED8A +_0222EC68: + ldr r6, _0222EC70 ; =0x0225DC18 + b _0222EC78 + .align 2, 0 +_0222EC6C: .word 0x0225D99C +_0222EC70: .word 0x0225DC18 +_0222EC74: .word 0x000023F8 +_0222EC78: + mov r5, #0 + add r7, r4, #0 +_0222EC7C: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + add r1, r0, #0 + add r0, r4, #0 + str r1, [r7, #0x34] + bl MOD11_0225377C + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #4 + blt _0222EC7C + str r5, [r4, #0x44] + mov r6, #0 + add r5, r4, #0 +_0222ECA6: + ldr r0, [sp, #4] + ldr r1, [r5, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [sp, #4] + add r6, r6, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #4] + cmp r6, #4 + blt _0222ECA6 + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [r4, #0x44] + cmp r0, #0 + ble _0222ED7A +_0222ECC8: + ldr r0, [sp, #0x20] + mov r1, #1 + and r0, r1 + str r0, [sp, #0x28] + lsl r0, r0, #2 + add r7, r4, r0 + ldr r0, [r7, #0x68] + mov r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222ED60 +_0222ECE0: + ldr r0, [r7, #0x68] + add r1, r6, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #0x20] + add r5, r0, #0 + cmp r1, #1 + ble _0222ED2C + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x28] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C474 + cmp r6, r0 + beq _0222ED54 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222ED54 + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222ED54 + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222ED60 + b _0222ED54 +_0222ED2C: + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222ED54 + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222ED54 + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222ED60 +_0222ED54: + ldr r0, [r7, #0x68] + add r6, r6, #1 + bl FUN_0206B9AC + cmp r6, r0 + blt _0222ECE0 +_0222ED60: + str r6, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x20] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #0x20] + ldr r1, [r4, #0x44] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, r1 + blt _0222ECC8 +_0222ED7A: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + ldr r0, _0222EEE0 ; =0x000023F8 + mov r1, #1 + strb r1, [r4, r0] + b _0222EE3E +_0222ED8A: + ldr r6, _0222EEE4 ; =0x0225D998 + mov r5, #0 + add r7, r4, #0 +_0222ED90: + add r0, sp, #0x3c + strb r5, [r0] + ldrb r1, [r6] + strb r1, [r0, #1] + add r0, r4, #0 + add r1, sp, #0x3c + bl MOD11_0224CA64 + add r1, r0, #0 + add r0, r4, #0 + str r1, [r7, #0x34] + bl MOD11_0225377C + add r5, r5, #1 + add r6, r6, #1 + add r7, r7, #4 + cmp r5, #2 + blt _0222ED90 + mov r0, #0 + str r5, [r4, #0x44] + str r0, [sp, #0x24] + add r7, r4, #0 +_0222EDBC: + ldr r0, [sp, #4] + ldr r1, [r7, #0x68] + ldr r0, [r0, #4] + bl FUN_0206BAD0 + ldr r0, [r7, #0x68] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222EE10 +_0222EDD2: + ldr r0, [r7, #0x68] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0222EE04 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EE04 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222EE10 +_0222EE04: + ldr r0, [r7, #0x68] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222EDD2 +_0222EE10: + str r5, [sp] + ldr r1, [r4, #0x30] + ldr r3, [sp, #0x24] + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C54C + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #4] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #4 + blt _0222EDBC + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_0224B240 + ldr r0, _0222EEE0 ; =0x000023F8 + mov r1, #1 + strb r1, [r4, r0] +_0222EE3E: + mov r0, #2 + ldr r1, [r4, #0x2c] + lsl r0, r0, #8 + tst r0, r1 + beq _0222EE5A + ldr r0, [r4, #0x6c] + mov r1, #0 + bl FUN_0206B9B0 + add r2, r4, #0 + mov r1, #0x8f + add r2, #0xf4 + bl FUN_020671BC +_0222EE5A: + ldr r1, [r4, #0x2c] + mov r0, #1 + tst r0, r1 + beq _0222EEDC + add r0, r4, #0 + add r0, #0xe1 + ldrb r0, [r0] + bl MOD11_0222EEF0 + cmp r0, #1 + beq _0222EE7C + ldr r0, _0222EEE8 ; =0x00000149 + ldrb r0, [r4, r0] + bl MOD11_0222EEF0 + cmp r0, #1 + bne _0222EEDC +_0222EE7C: + ldr r0, [r4, #0x68] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222EEAC + ldr r6, _0222EEEC ; =0x00002404 + mov r7, #3 +_0222EE8C: + ldr r0, [r4, #0x68] + add r1, r5, #0 + bl FUN_0206B9B0 + ldr r2, [r4, r6] + add r1, r7, #0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020688E8 + ldr r0, [r4, #0x68] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222EE8C +_0222EEAC: + ldr r0, [r4, #0x70] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222EEDC + ldr r6, _0222EEEC ; =0x00002404 + mov r7, #3 +_0222EEBC: + ldr r0, [r4, #0x70] + add r1, r5, #0 + bl FUN_0206B9B0 + ldr r2, [r4, r6] + add r1, r7, #0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020688E8 + ldr r0, [r4, #0x70] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222EEBC +_0222EEDC: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222EEE0: .word 0x000023F8 +_0222EEE4: .word 0x0225D998 +_0222EEE8: .word 0x00000149 +_0222EEEC: .word 0x00002404 + + thumb_func_start MOD11_0222EEF0 +MOD11_0222EEF0: ; 0x0222EEF0 + sub r0, #0x3e + cmp r0, #0x11 + bhi _0222EF2A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222EF02: ; jump table + .short _0222EF26 - _0222EF02 - 2 ; case 0 + .short _0222EF2A - _0222EF02 - 2 ; case 1 + .short _0222EF26 - _0222EF02 - 2 ; case 2 + .short _0222EF26 - _0222EF02 - 2 ; case 3 + .short _0222EF26 - _0222EF02 - 2 ; case 4 + .short _0222EF26 - _0222EF02 - 2 ; case 5 + .short _0222EF26 - _0222EF02 - 2 ; case 6 + .short _0222EF26 - _0222EF02 - 2 ; case 7 + .short _0222EF2A - _0222EF02 - 2 ; case 8 + .short _0222EF2A - _0222EF02 - 2 ; case 9 + .short _0222EF2A - _0222EF02 - 2 ; case 10 + .short _0222EF2A - _0222EF02 - 2 ; case 11 + .short _0222EF26 - _0222EF02 - 2 ; case 12 + .short _0222EF26 - _0222EF02 - 2 ; case 13 + .short _0222EF26 - _0222EF02 - 2 ; case 14 + .short _0222EF26 - _0222EF02 - 2 ; case 15 + .short _0222EF26 - _0222EF02 - 2 ; case 16 + .short _0222EF26 - _0222EF02 - 2 ; case 17 +_0222EF26: + mov r0, #1 + bx lr +_0222EF2A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0222EF30 +MOD11_0222EF30: ; 0x0222EF30 + push {r3, lr} + sub sp, #8 + mov r2, #2 + mov r1, #0 + ldr r0, _0222EF4C ; =MOD11_0222EF50 + str r2, [sp] + str r0, [sp, #4] + mov r0, #5 + add r3, r1, #0 + bl FUN_02022318 + add sp, #8 + pop {r3, pc} + nop +_0222EF4C: .word MOD11_0222EF50 + + thumb_func_start MOD11_0222EF50 +MOD11_0222EF50: ; 0x0222EF50 + push {r3, lr} + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _0222EFBC ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r2, [r0] + ldr r1, _0222EFC0 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _0222EFC4 ; =0x0000CFFB + and r3, r2 + strh r3, [r0] + ldrh r3, [r0] + sub r2, #0x1c + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + blx G3X_SetFog + mov r0, #0 + ldr r2, _0222EFC8 ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + blx G3X_SetClearColor + ldr r1, _0222EFCC ; =0xBFFF0000 + ldr r0, _0222EFD0 ; =0x04000580 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_0222EFBC: .word 0x04000008 +_0222EFC0: .word 0xFFFFCFFD +_0222EFC4: .word 0x0000CFFB +_0222EFC8: .word 0x00007FFF +_0222EFCC: .word 0xBFFF0000 +_0222EFD0: .word 0x04000580 + + thumb_func_start MOD11_0222EFD4 +MOD11_0222EFD4: ; 0x0222EFD4 + ldr r3, _0222EFD8 ; =0x020223BD + bx r3 + .align 2, 0 +_0222EFD8: .word 0x020223BD + + thumb_func_start MOD11_0222EFDC +MOD11_0222EFDC: ; 0x0222EFDC + push {r3, r4, r5, lr} + ldr r3, _0222F014 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222F018 ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0xc0 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _0222F004 + bl ErrorHandling +_0222F004: + cmp r5, #0 + bne _0222F00C + bl ErrorHandling +_0222F00C: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222F014: .word 0x021064B8 +_0222F018: .word 0x021064C0 + + thumb_func_start MOD11_0222F01C +MOD11_0222F01C: ; 0x0222F01C + push {r3, r4, r5, lr} + sub sp, #0x50 + add r4, r0, #0 + bl FUN_0201B9EC + ldr r1, _0222F0B8 ; =0x000023FB + ldrb r2, [r4, r1] + lsl r0, r2, #0x1f + lsr r0, r0, #0x1f + beq _0222F040 + mov r0, #1 + bic r2, r0 + strb r2, [r4, r1] + ldr r0, _0222F0BC ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _0222F0C0 ; =0x04001050 + strh r1, [r0] +_0222F040: + ldr r1, _0222F0B8 ; =0x000023FB + ldrb r2, [r4, r1] + lsl r0, r2, #0x1e + lsr r0, r0, #0x1f + beq _0222F064 + mov r0, #2 + bic r2, r0 + strb r2, [r4, r1] + ldr r5, _0222F0C4 ; =0x0225DA90 + add r3, sp, #0x28 + mov r2, #5 +_0222F056: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F056 + add r0, sp, #0x28 + bl FUN_0201E66C +_0222F064: + ldr r1, _0222F0B8 ; =0x000023FB + ldrb r2, [r4, r1] + lsl r0, r2, #0x1d + lsr r0, r0, #0x1f + beq _0222F088 + mov r0, #4 + bic r2, r0 + strb r2, [r4, r1] + ldr r5, _0222F0C8 ; =0x0225DAB8 + add r3, sp, #0 + mov r2, #5 +_0222F07A: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F07A + add r0, sp, #0 + bl FUN_0201E66C +_0222F088: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r4, #0x28] + bl FUN_0200372C + ldr r0, [r4, #4] + bl FUN_0201AB60 + ldr r3, _0222F0CC ; =0x027E0000 + ldr r1, _0222F0D0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + add sp, #0x50 + pop {r3, r4, r5, pc} + nop +_0222F0B8: .word 0x000023FB +_0222F0BC: .word 0x04000050 +_0222F0C0: .word 0x04001050 +_0222F0C4: .word 0x0225DA90 +_0222F0C8: .word 0x0225DAB8 +_0222F0CC: .word 0x027E0000 +_0222F0D0: .word 0x00003FF8 + + thumb_func_start MOD11_0222F0D4 +MOD11_0222F0D4: ; 0x0222F0D4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0200372C + bl FUN_0201C30C + ldr r0, [r4, #4] + bl FUN_0201AB60 + ldr r3, _0222F0F8 ; =0x027E0000 + ldr r1, _0222F0FC ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_0222F0F8: .word 0x027E0000 +_0222F0FC: .word 0x00003FF8 + + thumb_func_start MOD11_0222F100 +MOD11_0222F100: ; 0x0222F100 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #4] + mov r0, #5 + bl FUN_020335F0 + ldr r0, _0222F140 ; =0x000023F9 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _0222F118 + cmp r0, #3 + bne _0222F13E +_0222F118: + cmp r0, #0 + bne _0222F120 + bl FUN_02215A44 +_0222F120: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02006ED4 + add r4, #0x94 + ldr r0, [r4] + bl FUN_0200BC1C + bl FUN_0200BC38 + mov r0, #1 + mov r1, #0 + bl FUN_020222B4 +_0222F13E: + pop {r4, pc} + .align 2, 0 +_0222F140: .word 0x000023F9 + + thumb_func_start MOD11_0222F144 +MOD11_0222F144: ; 0x0222F144 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD11_0222FF84 + str r0, [sp] + add r0, r6, #0 + mov r5, #0 + bl MOD11_02231474 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _0222F24E + mov r0, #2 + tst r0, r4 + beq _0222F186 + mov r0, #1 + tst r0, r4 + beq _0222F24E + ldr r0, _0222F250 ; =0x00000704 + add r1, r5, #0 + bl FUN_020054F0 + add r0, r6, #0 + mov r1, #2 + bl MOD11_02231484 + pop {r3, r4, r5, r6, r7, pc} +_0222F186: + ldr r0, [sp] + add r4, r5, #0 + cmp r0, #0 + ble _0222F1D0 +_0222F18E: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0222FF7C + add r7, r0, #0 + bl MOD11_02253A58 + cmp r0, #0 + bne _0222F1C8 + add r0, r7, #0 + bl MOD11_02253A70 + add r1, r0, #0 + beq _0222F1C8 + ldr r0, [r1, #0x28] + ldr r1, [r1, #0x2c] + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #1 + bne _0222F1C8 + add r0, r4, #0 + bl FUN_0206A92C + orr r5, r0 +_0222F1C8: + ldr r0, [sp] + add r4, r4, #1 + cmp r4, r0 + blt _0222F18E +_0222F1D0: + cmp r5, #0 + beq _0222F1F6 + add r0, r6, #0 + bl MOD11_02231474 + cmp r0, #0 + bne _0222F1F6 + ldr r0, _0222F250 ; =0x00000704 + bl FUN_020054C8 + add r0, r6, #0 + mov r1, #1 + bl MOD11_02231484 + add r0, r6, #0 + mov r1, #4 + bl MOD11_022314B0 + b _0222F214 +_0222F1F6: + cmp r5, #0 + bne _0222F214 + add r0, r6, #0 + bl MOD11_02231474 + cmp r0, #0 + beq _0222F214 + ldr r0, _0222F250 ; =0x00000704 + mov r1, #0 + bl FUN_020054F0 + add r0, r6, #0 + mov r1, #0 + bl MOD11_02231484 +_0222F214: + add r0, r6, #0 + bl MOD11_02231474 + cmp r0, #0 + beq _0222F24E + add r0, r6, #0 + bl MOD11_022314A0 + add r4, r0, #0 + ldr r0, _0222F250 ; =0x00000704 + bl FUN_02005508 + cmp r0, #0 + bne _0222F24E + sub r1, r4, #1 + bne _0222F244 + ldr r0, _0222F250 ; =0x00000704 + bl FUN_020054C8 + add r0, r6, #0 + mov r1, #4 + bl MOD11_022314B0 + pop {r3, r4, r5, r6, r7, pc} +_0222F244: + lsl r1, r1, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD11_022314B0 +_0222F24E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F250: .word 0x00000704 + + thumb_func_start MOD11_0222F254 +MOD11_0222F254: ; 0x0222F254 + push {r3, r4, r5, lr} + ldr r3, _0222F280 ; =0x00002434 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, r3] + mov r1, #1 + add r0, r0, #3 + str r0, [r4, r3] + ldr r0, [r4, #4] + ldr r3, [r4, r3] + mov r2, #3 + bl FUN_020179E0 + ldr r0, _0222F280 ; =0x00002434 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F27C + add r0, r5, #0 + bl FUN_0200CAB4 +_0222F27C: + pop {r3, r4, r5, pc} + nop +_0222F280: .word 0x00002434 + + thumb_func_start MOD11_0222F284 +MOD11_0222F284: ; 0x0222F284 + push {r3, lr} + bl FUN_02033590 + cmp r0, #0 + bne _0222F296 + ldr r0, _0222F298 ; =0x00000010 + mov r1, #2 + bl FUN_02005FDC +_0222F296: + pop {r3, pc} + .align 2, 0 +_0222F298: .word 0x00000010 + + thumb_func_start MOD11_0222F29C +MOD11_0222F29C: ; 0x0222F29C + push {r4, r5, r6, lr} + sub sp, #0x68 + add r4, r1, #0 + ldr r1, _0222F4C0 ; =0x00001028 + mov r2, #5 + bl FUN_02006268 + add r5, r0, #0 + ldr r0, _0222F4C4 ; =0x00001020 + str r4, [r5] + mov r2, #0 + strb r2, [r5, r0] + add r1, r0, #1 + strb r2, [r5, r1] + add r0, r0, #2 + strh r2, [r5, r0] + mov r0, #5 + bl FUN_02002FD0 + str r0, [r5, #0xc] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #5 + bl FUN_02003008 + mov r1, #0 + mov r0, #1 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + mov r2, #2 + add r3, r1, #0 + bl FUN_02003914 + mov r0, #5 + bl FUN_02016B94 + str r0, [r5, #4] + mov r0, #5 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r5, #8] + add r0, r5, #0 + bl FUN_0206BFF0 + bl FUN_0201E6D8 + ldr r6, _0222F4C8 ; =0x0225DA40 + add r3, sp, #0x40 + mov r2, #5 +_0222F30E: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F30E + add r0, sp, #0x40 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + mov r1, #5 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #8 + blx MIi_CpuClear16 + ldr r6, _0222F4CC ; =0x0225D9B8 + add r3, sp, #0x30 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r6, _0222F4D0 ; =0x0225DA04 + add r3, sp, #0x14 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + ldr r0, [r5, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02018744 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #4] + add r2, r1, #0 + mov r3, #0xa + bl FUN_0200D274 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xb0 + str r0, [sp, #8] + ldr r0, [r5, #0xc] + mov r1, #0xe + mov r2, #7 + mov r3, #5 + bl FUN_020030E8 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa0 + str r0, [sp, #8] + ldr r0, [r5, #0xc] + mov r1, #0x26 + mov r3, #5 + bl FUN_020030E8 + mov r1, #0 + mov r0, #1 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02003914 + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r5, #4] + ldr r1, [r5, #8] + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + ldr r0, [r5, #8] + mov r1, #0xff + bl FUN_02019620 + ldr r0, [r5, #8] + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r2, #0x51 + mov r0, #1 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #5 + bl FUN_0200A86C + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + mov r1, #5 + bl FUN_020219F4 + add r6, r0, #0 + ldr r1, _0222F4D4 ; =0x0000039B + add r0, r4, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #8] + mov r1, #1 + add r2, r6, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + ldr r0, _0222F4D8 ; =MOD11_0222F0D4 + add r1, r5, #0 + bl FUN_02015F10 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0xc] + ldr r2, _0222F4DC ; =0x0000FFFF + mov r1, #5 + bl FUN_02003210 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_0200D858 + ldr r1, _0222F4E0 ; =0x00001024 + str r0, [r5, r1] + bl FUN_02033E74 + add sp, #0x68 + pop {r4, r5, r6, pc} + nop +_0222F4C0: .word 0x00001028 +_0222F4C4: .word 0x00001020 +_0222F4C8: .word 0x0225DA40 +_0222F4CC: .word 0x0225D9B8 +_0222F4D0: .word 0x0225DA04 +_0222F4D4: .word 0x0000039B +_0222F4D8: .word MOD11_0222F0D4 +_0222F4DC: .word 0x0000FFFF +_0222F4E0: .word 0x00001024 + + thumb_func_start MOD11_0222F4E4 +MOD11_0222F4E4: ; 0x0222F4E4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + bl FUN_02006278 + add r4, r0, #0 + ldr r1, [r4, #4] + mov r0, #5 + bl FUN_020335F0 + ldr r0, _0222F804 ; =0x00001021 + mov r7, #0 + ldrb r1, [r4, r0] + cmp r1, #0x21 + bls _0222F502 + b _0222F922 +_0222F502: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222F50E: ; jump table + .short _0222F552 - _0222F50E - 2 ; case 0 + .short _0222F562 - _0222F50E - 2 ; case 1 + .short _0222F576 - _0222F50E - 2 ; case 2 + .short _0222F586 - _0222F50E - 2 ; case 3 + .short _0222F5C0 - _0222F50E - 2 ; case 4 + .short _0222F898 - _0222F50E - 2 ; case 5 + .short _0222F5D8 - _0222F50E - 2 ; case 6 + .short _0222F5F2 - _0222F50E - 2 ; case 7 + .short _0222F898 - _0222F50E - 2 ; case 8 + .short _0222F606 - _0222F50E - 2 ; case 9 + .short _0222F622 - _0222F50E - 2 ; case 10 + .short _0222F898 - _0222F50E - 2 ; case 11 + .short _0222F636 - _0222F50E - 2 ; case 12 + .short _0222F650 - _0222F50E - 2 ; case 13 + .short _0222F898 - _0222F50E - 2 ; case 14 + .short _0222F664 - _0222F50E - 2 ; case 15 + .short _0222F67E - _0222F50E - 2 ; case 16 + .short _0222F898 - _0222F50E - 2 ; case 17 + .short _0222F692 - _0222F50E - 2 ; case 18 + .short _0222F6AC - _0222F50E - 2 ; case 19 + .short _0222F898 - _0222F50E - 2 ; case 20 + .short _0222F6C0 - _0222F50E - 2 ; case 21 + .short _0222F704 - _0222F50E - 2 ; case 22 + .short _0222F898 - _0222F50E - 2 ; case 23 + .short _0222F740 - _0222F50E - 2 ; case 24 + .short _0222F774 - _0222F50E - 2 ; case 25 + .short _0222F898 - _0222F50E - 2 ; case 26 + .short _0222F7AE - _0222F50E - 2 ; case 27 + .short _0222F7E2 - _0222F50E - 2 ; case 28 + .short _0222F898 - _0222F50E - 2 ; case 29 + .short _0222F82A - _0222F50E - 2 ; case 30 + .short _0222F85E - _0222F50E - 2 ; case 31 + .short _0222F898 - _0222F50E - 2 ; case 32 + .short _0222F908 - _0222F50E - 2 ; case 33 +_0222F552: + add r0, r7, #0 + bl FUN_0200E394 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F562: + ldr r0, [r4, #0xc] + bl FUN_020038E4 + cmp r0, #0 + bne _0222F610 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F576: + mov r0, #0x32 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F586: + mov r0, #0x32 + bl FUN_020315D8 + cmp r0, #0 + beq _0222F5A8 + mov r0, #0x33 + bl FUN_02031588 + ldr r0, _0222F808 ; =0x00001022 + add r1, r7, #0 + strh r1, [r4, r0] + sub r1, r0, #1 + ldrb r1, [r4, r1] + sub r0, r0, #1 + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F5A8: + ldr r0, _0222F808 ; =0x00001022 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r1, [r4, r0] + ldr r0, _0222F80C ; =0x00000708 + cmp r1, r0 + bls _0222F610 + mov r0, #1 + bl FUN_020336A0 + b _0222F922 +_0222F5C0: + mov r1, #0x11 + add r0, r4, #0 + lsl r1, r1, #4 + bl FUN_0206C1A0 + cmp r0, #1 + bne _0222F610 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F5D8: + add r0, r4, #0 + bl FUN_0206C1FC + cmp r0, #1 + bne _0222F610 + mov r0, #0x34 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F5F2: + add r0, r4, #0 + bl FUN_0206C224 + cmp r0, #1 + bne _0222F610 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F606: + add r0, r4, #0 + bl FUN_0206C268 + cmp r0, #1 + beq _0222F612 +_0222F610: + b _0222F922 +_0222F612: + mov r0, #0x35 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F622: + add r0, r4, #0 + bl FUN_0206C294 + cmp r0, #1 + bne _0222F71C + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F636: + add r0, r4, #0 + bl FUN_0206C2D4 + cmp r0, #1 + bne _0222F71C + mov r0, #0x36 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F650: + add r0, r4, #0 + bl FUN_0206C2F8 + cmp r0, #1 + bne _0222F71C + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F664: + add r0, r4, #0 + bl FUN_0206C33C + cmp r0, #1 + bne _0222F71C + mov r0, #0x37 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F67E: + add r0, r4, #0 + bl FUN_0206C364 + cmp r0, #1 + bne _0222F71C + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F692: + add r0, r4, #0 + bl FUN_0206C398 + cmp r0, #1 + bne _0222F71C + mov r0, #0x38 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F6AC: + add r0, r4, #0 + bl FUN_0206C3F4 + cmp r0, #1 + bne _0222F71C + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F6C0: + ldr r1, [r4] + ldr r2, [r1] + mov r1, #0x80 + tst r1, r2 + bne _0222F6D0 + mov r1, #0x21 + strb r1, [r4, r0] + b _0222F922 +_0222F6D0: + bl FUN_02031190 + cmp r0, #0 + beq _0222F6E8 + mov r0, #0x39 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F6E8: + add r0, r4, #0 + mov r1, #1 + bl FUN_0206C438 + cmp r0, #1 + bne _0222F71C + mov r0, #0x39 + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F704: + mov r1, #1 + sub r0, r0, #1 + strb r1, [r4, r0] + bl FUN_02031190 + cmp r0, #0 + beq _0222F728 + mov r0, #0x39 + bl FUN_020315D8 + cmp r0, #1 + beq _0222F71E +_0222F71C: + b _0222F922 +_0222F71E: + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F728: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x39 + bl FUN_0206C46C + cmp r0, #1 + bne _0222F81E + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F740: + bl FUN_02031190 + cmp r0, #0 + beq _0222F758 + mov r0, #0x3a + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F758: + add r0, r4, #0 + mov r1, #3 + bl FUN_0206C438 + cmp r0, #1 + bne _0222F81E + mov r0, #0x3a + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F774: + mov r1, #1 + sub r0, r0, #1 + strb r1, [r4, r0] + bl FUN_02031190 + cmp r0, #0 + beq _0222F796 + mov r0, #0x3a + bl FUN_020315D8 + cmp r0, #1 + bne _0222F81E + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F796: + add r0, r4, #0 + mov r1, #3 + mov r2, #0x3a + bl FUN_0206C46C + cmp r0, #1 + bne _0222F81E + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F7AE: + bl FUN_02031190 + cmp r0, #0 + beq _0222F7C6 + mov r0, #0x3b + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F7C6: + add r0, r4, #0 + mov r1, #1 + bl FUN_0206C4C4 + cmp r0, #1 + bne _0222F81E + mov r0, #0x3b + bl FUN_02031588 + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F7E2: + mov r1, #1 + sub r0, r0, #1 + strb r1, [r4, r0] + bl FUN_02031190 + cmp r0, #0 + beq _0222F810 + mov r0, #0x3b + bl FUN_020315D8 + cmp r0, #1 + bne _0222F81E + ldr r0, _0222F804 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 + .align 2, 0 +_0222F804: .word 0x00001021 +_0222F808: .word 0x00001022 +_0222F80C: .word 0x00000708 +_0222F810: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x3b + bl FUN_0206C4F0 + cmp r0, #1 + beq _0222F820 +_0222F81E: + b _0222F922 +_0222F820: + ldr r0, _0222F928 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F82A: + bl FUN_02031190 + cmp r0, #0 + beq _0222F842 + mov r0, #0x3c + bl FUN_02031588 + ldr r0, _0222F928 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F842: + add r0, r4, #0 + mov r1, #3 + bl FUN_0206C4C4 + cmp r0, #1 + bne _0222F922 + mov r0, #0x3c + bl FUN_02031588 + ldr r0, _0222F928 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F85E: + mov r1, #1 + sub r0, r0, #1 + strb r1, [r4, r0] + bl FUN_02031190 + cmp r0, #0 + beq _0222F880 + mov r0, #0x3c + bl FUN_020315D8 + cmp r0, #1 + bne _0222F922 + ldr r0, _0222F928 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F880: + add r0, r4, #0 + mov r1, #3 + mov r2, #0x3c + bl FUN_0206C4F0 + cmp r0, #1 + bne _0222F922 + ldr r0, _0222F928 ; =0x00001021 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0222F922 +_0222F898: + bl FUN_02030F20 + ldr r1, _0222F92C ; =0x00001020 + ldrb r2, [r4, r1] + cmp r2, r0 + bne _0222F8EE + add r0, r1, #1 + ldrb r0, [r4, r0] + cmp r0, #0x14 + bne _0222F8BE + add r6, r7, #0 + add r5, r4, #0 +_0222F8B0: + ldr r0, [r5, #0x10] + bl FUN_02016A18 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0222F8B0 +_0222F8BE: + ldr r0, _0222F92C ; =0x00001020 + mov r3, #0 + strb r3, [r4, r0] + add r1, r0, #2 + strh r3, [r4, r1] + add r1, r0, #1 + ldrb r1, [r4, r1] + add r2, r1, #1 + add r1, r0, #1 + strb r2, [r4, r1] + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #0x21 + bne _0222F922 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #0xc] + ldr r2, _0222F930 ; =0x0000FFFF + mov r1, #5 + bl FUN_02003210 + b _0222F922 +_0222F8EE: + add r0, r1, #2 + ldrh r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #2 + strh r2, [r4, r0] + ldrh r1, [r4, r0] + ldr r0, _0222F934 ; =0x00000708 + cmp r1, r0 + bls _0222F922 + mov r0, #1 + bl FUN_020336A0 + b _0222F922 +_0222F908: + ldr r0, [r4, #0xc] + bl FUN_020038E4 + cmp r0, #0 + bne _0222F922 + ldr r0, _0222F938 ; =0x00001024 + mov r7, #1 + ldr r0, [r4, r0] + bl FUN_0200DBFC + mov r0, #0 + bl FUN_02031400 +_0222F922: + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222F928: .word 0x00001021 +_0222F92C: .word 0x00001020 +_0222F930: .word 0x0000FFFF +_0222F934: .word 0x00000708 +_0222F938: .word 0x00001024 + + thumb_func_start MOD11_0222F93C +MOD11_0222F93C: ; 0x0222F93C + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0xc] + bl FUN_02002FEC + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020191A4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD11_0222F988 +MOD11_0222F988: ; 0x0222F988 + push {r4, r5, r6, lr} + ldr r1, _0222FAB4 ; =0x00002444 + add r5, r0, #0 + mov r2, #5 + bl FUN_02006268 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200628C + add r6, r0, #0 + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r2, _0222FAB4 ; =0x00002444 + mov r0, #0 + add r1, r4, #0 + blx MIi_CpuClearFast + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222E520 + ldr r1, [r4, #0x2c] + mov r0, #4 + tst r0, r1 + beq _0222F9C6 + mov r0, #0x80 + tst r0, r1 + beq _0222F9CA +_0222F9C6: + mov r0, #0 + pop {r4, r5, r6, pc} +_0222F9CA: + ldr r0, _0222FAB8 ; =0x00000007 + mov r1, #2 + bl FUN_02005FDC + ldr r1, [r4, #0x2c] + mov r0, #8 + tst r0, r1 + bne _0222F9DE + mov r0, #0 + pop {r4, r5, r6, pc} +_0222F9DE: + mov r0, #5 + mov r1, #0x2c + bl FUN_02016998 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r1, [r4, r1] + mov r0, #0 + mov r2, #0x2c + blx MIi_CpuClearFast + add r0, r5, #0 + bl FUN_020313CC + cmp r0, #3 + bhi _0222FA5A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FA0C: ; jump table + .short _0222FA14 - _0222FA0C - 2 ; case 0 + .short _0222FA3A - _0222FA0C - 2 ; case 1 + .short _0222FA3A - _0222FA0C - 2 ; case 2 + .short _0222FA14 - _0222FA0C - 2 ; case 3 +_0222FA14: + lsl r0, r5, #2 + add r0, r4, r0 + ldr r1, [r0, #0x68] + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + str r1, [r0, #4] + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022302BC + lsl r0, r0, #2 + add r0, r4, r0 + ldr r1, [r0, #0x68] + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + str r1, [r0, #0xc] + b _0222FA5A +_0222FA3A: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022302BC + lsl r0, r0, #2 + add r0, r4, r0 + ldr r2, [r0, #0x68] + mov r0, #7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r2, [r1, #4] + lsl r1, r5, #2 + add r1, r4, r1 + ldr r1, [r1, #0x68] + ldr r0, [r4, r0] + str r1, [r0, #0xc] +_0222FA5A: + mov r0, #7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r2, #5 + str r2, [r1, #0x24] + ldr r0, [r4, r0] + mov r1, #0 + add r0, #0x28 + strb r1, [r0] + add r0, r5, #0 + bl FUN_020313CC + cmp r0, #3 + bhi _0222FAA4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FA82: ; jump table + .short _0222FA8A - _0222FA82 - 2 ; case 0 + .short _0222FA98 - _0222FA82 - 2 ; case 1 + .short _0222FA98 - _0222FA82 - 2 ; case 2 + .short _0222FA8A - _0222FA82 - 2 ; case 3 +_0222FA8A: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #0 + add r0, #0x29 + strb r1, [r0] + b _0222FAA4 +_0222FA98: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #1 + add r0, #0x29 + strb r1, [r0] +_0222FAA4: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_02211E60 + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_0222FAB4: .word 0x00002444 +_0222FAB8: .word 0x00000007 + + thumb_func_start MOD11_0222FABC +MOD11_0222FABC: ; 0x0222FABC + push {r3, r4, r5, r6, r7, lr} + bl FUN_02006278 + add r6, r0, #0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + beq _0222FAFE + mov r4, #0 + mov r7, #7 + add r5, r4, #0 + lsl r7, r7, #6 +_0222FADA: + ldr r0, [r6, r7] + add r0, r0, r5 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _0222FAE8 + bl FUN_02016A18 +_0222FAE8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222FADA + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r6, r0] + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222FAFE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0222FB04 +MOD11_0222FB04: ; 0x0222FB04 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200628C + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r1, [r4, #0x2c] + mov r0, #4 + tst r0, r1 + beq _0222FB2A + mov r0, #0x80 + tst r0, r1 + beq _0222FB2E +_0222FB2A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0222FB2E: + mov r0, #5 + mov r1, #0x2c + bl FUN_02016998 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r1, [r4, r1] + mov r0, #0 + mov r2, #0x2c + blx MIi_CpuClearFast + ldr r1, [r4, #0x2c] + mov r0, #8 + tst r0, r1 + beq _0222FBA4 + mov r6, #0 + add r5, r4, #0 +_0222FB52: + add r0, r6, #0 + bl FUN_020313CC + mov r2, #7 + lsl r2, r2, #6 + ldr r2, [r4, r2] + lsl r0, r0, #2 + ldr r1, [r5, #0x68] + add r0, r2, r0 + str r1, [r0, #4] + add r0, r6, #0 + bl FUN_020313CC + add r7, r0, #0 + ldr r0, [r5, #0x48] + mov r1, #5 + bl FUN_020239A0 + mov r1, #7 + lsl r1, r1, #6 + ldr r2, [r4, r1] + lsl r1, r7, #2 + add r1, r2, r1 + add r6, r6, #1 + add r5, r5, #4 + str r0, [r1, #0x14] + cmp r6, #4 + blt _0222FB52 + mov r0, #7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r2, #5 + str r2, [r1, #0x24] + ldr r1, [r4, r0] + mov r2, #1 + add r1, #0x28 + strb r2, [r1] + ldr r0, [r4, r0] + add r0, #0x29 + strb r2, [r0] + b _0222FC2A +_0222FBA4: + add r0, r7, #0 + lsl r6, r7, #2 + bl FUN_020313CC + mov r2, #7 + lsl r2, r2, #6 + add r1, r4, r6 + ldr r2, [r4, r2] + lsl r0, r0, #2 + ldr r1, [r1, #0x68] + add r0, r2, r0 + str r1, [r0, #4] + mov r0, #1 + eor r0, r7 + lsl r5, r0, #2 + str r0, [sp] + bl FUN_020313CC + add r1, r4, r5 + ldr r2, [r1, #0x68] + mov r1, #7 + lsl r1, r1, #6 + ldr r1, [r4, r1] + lsl r0, r0, #2 + add r0, r1, r0 + str r2, [r0, #4] + add r0, r7, #0 + bl FUN_020313CC + add r7, r0, #0 + add r0, r4, r6 + ldr r0, [r0, #0x48] + mov r1, #5 + bl FUN_020239A0 + mov r1, #7 + lsl r1, r1, #6 + ldr r2, [r4, r1] + lsl r1, r7, #2 + add r1, r2, r1 + str r0, [r1, #0x14] + ldr r0, [sp] + bl FUN_020313CC + add r6, r0, #0 + add r0, r4, r5 + ldr r0, [r0, #0x48] + mov r1, #5 + bl FUN_020239A0 + mov r1, #7 + lsl r1, r1, #6 + ldr r3, [r4, r1] + lsl r2, r6, #2 + add r2, r3, r2 + str r0, [r2, #0x14] + ldr r0, [r4, r1] + mov r2, #5 + str r2, [r0, #0x24] + ldr r0, [r4, r1] + mov r2, #1 + add r0, #0x28 + strb r2, [r0] + ldr r0, [r4, r1] + mov r2, #0 + add r0, #0x29 + strb r2, [r0] +_0222FC2A: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_02211E60 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0222FC38 +MOD11_0222FC38: ; 0x0222FC38 + push {r3, r4, r5, r6, r7, lr} + bl FUN_02006278 + add r6, r0, #0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + beq _0222FC7A + mov r4, #0 + mov r7, #7 + add r5, r4, #0 + lsl r7, r7, #6 +_0222FC56: + ldr r0, [r6, r7] + add r0, r0, r5 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _0222FC64 + bl FUN_02016A18 +_0222FC64: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222FC56 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r6, r0] + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222FC7A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0222FC80 +MOD11_0222FC80: ; 0x0222FC80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + bl FUN_0200628C + add r7, r0, #0 + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r1, [r7] + mov r0, #4 + tst r0, r1 + beq _0222FCA2 + mov r0, #0x80 + tst r0, r1 + beq _0222FCA8 +_0222FCA2: + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0222FCA8: + ldr r0, _0222FE54 ; =0x00000007 + mov r1, #2 + bl FUN_02005FDC + mov r0, #5 + mov r1, #0x2c + bl FUN_02016998 + add r6, r0, #0 + mov r0, #0x66 + lsl r0, r0, #2 + str r6, [r7, r0] + mov r0, #0 + add r1, r6, #0 + mov r2, #0x2c + blx MIi_CpuClearFast + str r7, [r6] + ldr r0, [r7, #0x14] + cmp r0, #5 + bhi _0222FD54 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FCDE: ; jump table + .short _0222FD54 - _0222FCDE - 2 ; case 0 + .short _0222FCEA - _0222FCDE - 2 ; case 1 + .short _0222FD0E - _0222FCDE - 2 ; case 2 + .short _0222FD32 - _0222FCDE - 2 ; case 3 + .short _0222FD54 - _0222FCDE - 2 ; case 4 + .short _0222FD32 - _0222FCDE - 2 ; case 5 +_0222FCEA: + bl FUN_02033590 + cmp r0, #0 + bne _0222FD00 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0x15 + bl FUN_0202A0E8 + b _0222FD54 +_0222FD00: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0x1a + bl FUN_0202A0E8 + b _0222FD54 +_0222FD0E: + bl FUN_02033590 + cmp r0, #0 + bne _0222FD24 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0x16 + bl FUN_0202A0E8 + b _0222FD54 +_0222FD24: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0x1b + bl FUN_0202A0E8 + b _0222FD54 +_0222FD32: + bl FUN_02033590 + cmp r0, #0 + bne _0222FD48 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0x17 + bl FUN_0202A0E8 + b _0222FD54 +_0222FD48: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0x1c + bl FUN_0202A0E8 +_0222FD54: + ldr r1, [r7] + mov r0, #8 + tst r0, r1 + beq _0222FDBE + mov r4, #0 + add r5, r7, #0 +_0222FD60: + add r0, r4, #0 + bl FUN_020313CC + lsl r0, r0, #2 + ldr r1, [r5, #4] + add r0, r6, r0 + str r1, [r0, #4] + add r0, r4, #0 + bl FUN_020313CC + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + mov r1, #5 + bl FUN_020239A0 + ldr r1, [sp, #8] + add r4, r4, #1 + lsl r1, r1, #2 + add r1, r6, r1 + add r5, r5, #4 + str r0, [r1, #0x14] + cmp r4, #4 + blt _0222FD60 + mov r0, #5 + str r0, [r6, #0x24] + add r0, r6, #0 + mov r1, #2 + add r0, #0x28 + strb r1, [r0] + add r0, r6, #0 + mov r1, #1 + add r0, #0x29 + strb r1, [r0] + ldr r1, [r7, #0x14] + cmp r1, #5 + beq _0222FDB4 + add r0, r6, #0 + add r0, #0x2a + strb r1, [r0] + b _0222FE48 +_0222FDB4: + add r0, r6, #0 + mov r1, #3 + add r0, #0x2a + strb r1, [r0] + b _0222FE48 +_0222FDBE: + ldr r0, [sp, #4] + lsl r5, r0, #2 + bl FUN_020313CC + add r1, r7, r5 + lsl r0, r0, #2 + ldr r1, [r1, #4] + add r0, r6, r0 + str r1, [r0, #4] + ldr r0, [sp, #4] + mov r1, #1 + eor r0, r1 + lsl r4, r0, #2 + str r0, [sp] + bl FUN_020313CC + add r1, r7, r4 + lsl r0, r0, #2 + ldr r1, [r1, #4] + add r0, r6, r0 + str r1, [r0, #4] + ldr r0, [sp, #4] + bl FUN_020313CC + str r0, [sp, #0xc] + add r0, r7, r5 + add r0, #0xf8 + ldr r0, [r0] + mov r1, #5 + bl FUN_020239A0 + ldr r1, [sp, #0xc] + lsl r1, r1, #2 + add r1, r6, r1 + str r0, [r1, #0x14] + ldr r0, [sp] + bl FUN_020313CC + add r5, r0, #0 + add r0, r7, r4 + add r0, #0xf8 + ldr r0, [r0] + mov r1, #5 + bl FUN_020239A0 + lsl r1, r5, #2 + add r1, r6, r1 + str r0, [r1, #0x14] + mov r0, #5 + str r0, [r6, #0x24] + add r0, r6, #0 + mov r1, #2 + add r0, #0x28 + strb r1, [r0] + add r0, r6, #0 + mov r1, #0 + add r0, #0x29 + strb r1, [r0] + ldr r1, [r7, #0x14] + cmp r1, #5 + beq _0222FE40 + add r0, r6, #0 + add r0, #0x2a + strb r1, [r0] + b _0222FE48 +_0222FE40: + add r0, r6, #0 + mov r1, #3 + add r0, #0x2a + strb r1, [r0] +_0222FE48: + add r0, r6, #0 + bl FUN_02211E60 + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222FE54: .word 0x00000007 + + thumb_func_start MOD11_0222FE58 +MOD11_0222FE58: ; 0x0222FE58 + push {r4, r5, r6, lr} + bl FUN_0200628C + mov r1, #0x66 + lsl r1, r1, #2 + ldr r6, [r0, r1] + add r0, r6, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + beq _0222FE8E + mov r4, #0 + add r5, r6, #0 +_0222FE72: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _0222FE7C + bl FUN_02016A18 +_0222FE7C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222FE72 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, r5, r6, pc} +_0222FE8E: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0222FE94 +MOD11_0222FE94: ; 0x0222FE94 + push {r3, lr} + ldr r1, [r0, #0x2c] + ldr r0, _0222FEBC ; =0x00000404 + tst r0, r1 + beq _0222FEA6 + mov r0, #1 + bl FUN_02002B7C + pop {r3, pc} +_0222FEA6: + mov r0, #3 + bl FUN_02002B7C + mov r0, #1 + bl FUN_02002B60 + mov r0, #1 + bl FUN_02002BB8 + pop {r3, pc} + nop +_0222FEBC: .word 0x00000404 + + thumb_func_start MOD11_0222FEC0 +MOD11_0222FEC0: ; 0x0222FEC0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp] + mov r0, #0x5f + mov r3, #0 + add r4, sp, #0x30 + add r5, sp, #0x20 + lsl r0, r0, #2 +_0222FED0: + stmia r4!, {r3} + ldr r2, [r1, r0] + add r3, r3, #1 + add r1, r1, #4 + stmia r5!, {r2} + cmp r3, #4 + blt _0222FED0 + bl FUN_02031190 + str r0, [sp, #0x10] + bl FUN_02030F20 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + sub r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #0 + ble _0222FF50 + add r0, sp, #0x30 + add r3, sp, #0x20 + str r0, [sp, #8] + str r3, [sp, #0x18] + mov ip, r0 +_0222FF02: + ldr r0, [sp, #4] + add r2, r0, #1 + ldr r0, [sp, #0xc] + cmp r2, r0 + bge _0222FF3C + ldr r0, [sp, #0x18] + lsl r1, r2, #2 + add r4, r0, r1 + mov r0, ip + add r5, r0, r1 +_0222FF16: + ldr r0, [r4] + ldr r6, [r3] + str r0, [sp, #0x1c] + cmp r6, r0 + bge _0222FF30 + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r7, [r0] + str r1, [r0] + ldr r0, [sp, #0x1c] + str r7, [r5] + str r0, [r3] + str r6, [r4] +_0222FF30: + ldr r0, [sp, #0xc] + add r2, r2, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r2, r0 + blt _0222FF16 +_0222FF3C: + ldr r0, [sp, #8] + add r3, r3, #4 + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [sp, #4] + cmp r1, r0 + blt _0222FF02 +_0222FF50: + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x10] + cmp r1, r0 + bne _0222FF60 + ldr r1, _0222FF64 ; =0x000023F8 + ldr r0, [sp] + mov r2, #1 + strb r2, [r0, r1] +_0222FF60: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222FF64: .word 0x000023F8 + + thumb_func_start MOD11_0222FF68 +MOD11_0222FF68: ; 0x0222FF68 + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD11_0222FF6C +MOD11_0222FF6C: ; 0x0222FF6C + ldr r2, [r0, #8] + lsl r0, r1, #4 + add r0, r2, r0 + bx lr + + thumb_func_start MOD11_0222FF74 +MOD11_0222FF74: ; 0x0222FF74 + ldr r0, [r0, #0x2c] + bx lr + + thumb_func_start MOD11_0222FF78 +MOD11_0222FF78: ; 0x0222FF78 + ldr r0, [r0, #0x30] + bx lr + + thumb_func_start MOD11_0222FF7C +MOD11_0222FF7C: ; 0x0222FF7C + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #0x34] + bx lr + + thumb_func_start MOD11_0222FF84 +MOD11_0222FF84: ; 0x0222FF84 + ldr r0, [r0, #0x44] + bx lr + + thumb_func_start MOD11_0222FF88 +MOD11_0222FF88: ; 0x0222FF88 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _0222FFA6 + mov r3, #0x10 + tst r2, r3 + beq _0222FFAE + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _0222FFAE +_0222FFA6: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x68] + pop {r3, r4, r5, pc} +_0222FFAE: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _0222FFC0 + lsl r0, r4, #0x1f + lsr r0, r0, #0x1d + add r0, r5, r0 + ldr r0, [r0, #0x68] + pop {r3, r4, r5, pc} +_0222FFC0: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x68] + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0222FFC8 +MOD11_0222FFC8: ; 0x0222FFC8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _0222FFE6 + mov r3, #0x10 + tst r2, r3 + beq _0222FFF2 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _0222FFF2 +_0222FFE6: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x68] + bl FUN_0206B9AC + pop {r3, r4, r5, pc} +_0222FFF2: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _02230008 + lsl r0, r4, #0x1f + lsr r0, r0, #0x1d + add r0, r5, r0 + ldr r0, [r0, #0x68] + bl FUN_0206B9AC + pop {r3, r4, r5, pc} +_02230008: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x68] + bl FUN_0206B9AC + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02230014 +MOD11_02230014: ; 0x02230014 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r2, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _02230034 + mov r3, #0x10 + tst r2, r3 + beq _02230042 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _02230042 +_02230034: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x68] + add r1, r6, #0 + bl FUN_0206B9B0 + pop {r4, r5, r6, pc} +_02230042: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _0223005A + lsl r0, r4, #0x1f + lsr r0, r0, #0x1d + add r0, r5, r0 + ldr r0, [r0, #0x68] + add r1, r6, #0 + bl FUN_0206B9B0 + pop {r4, r5, r6, pc} +_0223005A: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x68] + add r1, r6, #0 + bl FUN_0206B9B0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02230068 +MOD11_02230068: ; 0x02230068 + add r0, #0x88 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_02230070 +MOD11_02230070: ; 0x02230070 + add r0, #0x8c + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_02230078 +MOD11_02230078: ; 0x02230078 + add r0, #0x90 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_02230080 +MOD11_02230080: ; 0x02230080 + add r0, #0x94 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_02230088 +MOD11_02230088: ; 0x02230088 + mov r2, #0x5f + lsl r2, r2, #2 + add r2, r0, r2 + lsl r0, r1, #4 + add r0, r2, r0 + bx lr + + thumb_func_start MOD11_02230094 +MOD11_02230094: ; 0x02230094 + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_0223009C +MOD11_0223009C: ; 0x0223009C + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r1, r0] + bx lr + + thumb_func_start MOD11_022300A8 +MOD11_022300A8: ; 0x022300A8 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x1a + lsl r0, r0, #4 + str r2, [r1, r0] + bx lr + + thumb_func_start MOD11_022300B4 +MOD11_022300B4: ; 0x022300B4 + mov r1, #0x6a + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_022300BC +MOD11_022300BC: ; 0x022300BC + mov r1, #0x6b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_022300C4 +MOD11_022300C4: ; 0x022300C4 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start MOD11_022300C8 +MOD11_022300C8: ; 0x022300C8 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD11_022300CC +MOD11_022300CC: ; 0x022300CC + ldr r0, [r0, #0x28] + bx lr + + thumb_func_start MOD11_022300D0 +MOD11_022300D0: ; 0x022300D0 + ldr r0, [r0, #0x60] + bx lr + + thumb_func_start MOD11_022300D4 +MOD11_022300D4: ; 0x022300D4 + mov r1, #0x89 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD11_022300DC +MOD11_022300DC: ; 0x022300DC + ldr r1, _022300E4 ; =0x00001224 + add r0, r0, r1 + bx lr + nop +_022300E4: .word 0x00001224 + + thumb_func_start MOD11_022300E8 +MOD11_022300E8: ; 0x022300E8 + ldr r1, _022300F0 ; =0x000023E4 + add r0, r0, r1 + bx lr + nop +_022300F0: .word 0x000023E4 + + thumb_func_start MOD11_022300F4 +MOD11_022300F4: ; 0x022300F4 + ldr r1, _022300FC ; =0x000023E6 + add r0, r0, r1 + bx lr + nop +_022300FC: .word 0x000023E6 + + thumb_func_start MOD11_02230100 +MOD11_02230100: ; 0x02230100 + ldr r1, _02230108 ; =0x000023E8 + add r0, r0, r1 + bx lr + nop +_02230108: .word 0x000023E8 + + thumb_func_start MOD11_0223010C +MOD11_0223010C: ; 0x0223010C + ldr r1, _02230114 ; =0x000023EA + add r0, r0, r1 + bx lr + nop +_02230114: .word 0x000023EA + + thumb_func_start MOD11_02230118 +MOD11_02230118: ; 0x02230118 + ldr r1, _02230120 ; =0x000023EC + add r0, r0, r1 + bx lr + nop +_02230120: .word 0x000023EC + + thumb_func_start MOD11_02230124 +MOD11_02230124: ; 0x02230124 + ldr r1, _0223012C ; =0x000023EE + add r0, r0, r1 + bx lr + nop +_0223012C: .word 0x000023EE + + thumb_func_start MOD11_02230130 +MOD11_02230130: ; 0x02230130 + mov r1, #0x73 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD11_02230138 +MOD11_02230138: ; 0x02230138 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start MOD11_0223013C +MOD11_0223013C: ; 0x0223013C + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start MOD11_02230140 +MOD11_02230140: ; 0x02230140 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _0223015E + mov r3, #0x10 + tst r2, r3 + beq _02230168 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _02230168 +_0223015E: + lsl r0, r4, #1 + add r0, r5, r0 + add r0, #0xa0 + ldrh r0, [r0] + pop {r3, r4, r5, pc} +_02230168: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _0223017C + lsl r0, r4, #0x1f + lsr r0, r0, #0x1e + add r0, r5, r0 + add r0, #0xa0 + ldrh r0, [r0] + pop {r3, r4, r5, pc} +_0223017C: + lsl r0, r4, #1 + add r0, r5, r0 + add r0, #0xa0 + ldrh r0, [r0] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02230188 +MOD11_02230188: ; 0x02230188 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _022301A6 + mov r3, #0x10 + tst r2, r3 + beq _022301B0 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _022301B0 +_022301A6: + mov r0, #0x34 + add r5, #0xac + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} +_022301B0: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _022301C8 + mov r0, #1 + add r1, r4, #0 + and r1, r0 + mov r0, #0x34 + add r5, #0xac + mul r0, r1 + add r0, r5, r0 + pop {r3, r4, r5, pc} +_022301C8: + mov r0, #0x34 + add r5, #0xac + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022301D4 +MOD11_022301D4: ; 0x022301D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _022301F2 + mov r3, #0x10 + tst r2, r3 + beq _022301FA + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _022301FA +_022301F2: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x48] + pop {r3, r4, r5, pc} +_022301FA: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _0223020C + lsl r0, r4, #0x1f + lsr r0, r0, #0x1d + add r0, r5, r0 + ldr r0, [r0, #0x48] + pop {r3, r4, r5, pc} +_0223020C: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x48] + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02230214 +MOD11_02230214: ; 0x02230214 + ldr r0, [r0, #0x58] + bx lr + + thumb_func_start MOD11_02230218 +MOD11_02230218: ; 0x02230218 + ldr r0, [r0, #0x5c] + bx lr + + thumb_func_start MOD11_0223021C +MOD11_0223021C: ; 0x0223021C + lsl r1, r1, #2 + add r0, r0, r1 + ldr r3, _02230228 ; =0x020239CD + ldr r0, [r0, #0x48] + bx r3 + nop +_02230228: .word 0x020239CD + + thumb_func_start MOD11_0223022C +MOD11_0223022C: ; 0x0223022C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + ble _02230250 + add r5, r6, #0 +_0223023C: + ldr r0, [r5, #0x34] + bl MOD11_02253A4C + cmp r7, r0 + beq _02230250 + ldr r0, [r6, #0x44] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _0223023C +_02230250: + ldr r0, [r6, #0x44] + cmp r4, r0 + blt _0223025A + bl ErrorHandling +_0223025A: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02230260 +MOD11_02230260: ; 0x02230260 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r3, _0223026C ; =MOD11_02253A4C + ldr r0, [r0, #0x34] + bx r3 + nop +_0223026C: .word MOD11_02253A4C + + thumb_func_start MOD11_02230270 +MOD11_02230270: ; 0x02230270 + push {r3, lr} + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #0x34] + bl MOD11_02253A4C + mov r1, #1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02230288 +MOD11_02230288: ; 0x02230288 + mov r1, #0x1b + lsl r1, r1, #4 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_02230290 +MOD11_02230290: ; 0x02230290 + ldr r0, [r0, #0x64] + bx lr + + thumb_func_start MOD11_02230294 +MOD11_02230294: ; 0x02230294 + ldr r1, _022302A4 ; =0x000023FC + ldr r0, [r0, r1] + cmp r0, #0xc + bgt _022302A0 + cmp r0, #0 + bge _022302A2 +_022302A0: + mov r0, #0xc +_022302A2: + bx lr + .align 2, 0 +_022302A4: .word 0x000023FC + + thumb_func_start MOD11_022302A8 +MOD11_022302A8: ; 0x022302A8 + mov r1, #9 + lsl r1, r1, #0xa + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_022302B0 +MOD11_022302B0: ; 0x022302B0 + ldr r1, _022302B8 ; =0x00002404 + ldr r0, [r0, r1] + bx lr + nop +_022302B8: .word 0x00002404 + + thumb_func_start MOD11_022302BC +MOD11_022302BC: ; 0x022302BC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + bl MOD11_0222FF84 + str r0, [sp] + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _022302D8 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_022302D8: + ldr r0, [sp] + mov r4, #0 + cmp r0, #0 + ble _02230302 +_022302E0: + cmp r4, r5 + beq _022302FA + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02230270 + add r7, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02230270 + cmp r7, r0 + beq _02230302 +_022302FA: + ldr r0, [sp] + add r4, r4, #1 + cmp r4, r0 + blt _022302E0 +_02230302: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02230308 +MOD11_02230308: ; 0x02230308 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + str r2, [sp] + bl MOD11_0222FF84 + str r0, [sp, #4] + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _0223032C + mov r0, #1 + add sp, #8 + eor r0, r6 + pop {r3, r4, r5, r6, r7, pc} +_0223032C: + ldr r0, [sp, #4] + mov r4, #0 + cmp r0, #0 + ble _02230368 +_02230334: + cmp r4, r6 + beq _02230360 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02230260 + mov r1, #2 + and r1, r0 + ldr r0, [sp] + cmp r0, r1 + bne _02230360 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02230270 + add r7, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02230270 + cmp r7, r0 + bne _02230368 +_02230360: + ldr r0, [sp, #4] + add r4, r4, #1 + cmp r4, r0 + blt _02230334 +_02230368: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02230370 +MOD11_02230370: ; 0x02230370 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r1, #0 + ldr r1, [sp, #0x38] + add r5, r2, #0 + str r1, [sp, #0x38] + add r1, r0, #0 + ldr r1, [r1, #0x30] + add r4, r3, #0 + str r1, [sp, #0x1c] + mov r1, #0 + str r1, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r0, [sp, #4] + mov r2, #2 + add r3, r6, #0 + bl MOD11_0224C474 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + bl MOD11_0222FF74 + cmp r0, #3 + beq _022303BA + ldr r0, [sp, #4] + bl MOD11_0222FF74 + mov r1, #0x10 + tst r0, r1 + beq _022303E0 + ldr r0, [sp, #4] + add r1, r6, #0 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + bne _022303E0 +_022303BA: + ldr r0, [sp, #4] + add r1, r6, #0 + bl MOD11_022302BC + add r3, r0, #0 + ldr r0, [sp, #4] + ldr r1, [sp, #0x1c] + mov r2, #2 + bl MOD11_0224C474 + str r0, [sp, #0xc] + cmp r0, r5 + bne _022303E4 + ldr r0, [sp, #4] + add r1, r6, #0 + bl MOD11_022302BC + add r6, r0, #0 + b _022303E4 +_022303E0: + ldr r0, [sp, #0x10] + str r0, [sp, #0xc] +_022303E4: + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, r5, #0 + bl MOD11_02230014 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + mov r1, #0xf + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230478 + ldr r0, [sp, #0x18] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + mov r1, #7 + str r0, [sp, #0x20] + tst r1, r0 + beq _02230478 + mov r1, #7 + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + mov r1, #0x9f + add r2, sp, #0x20 + bl FUN_02067830 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230434 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230474 +_02230434: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + mov r1, #7 + str r0, [sp, #0x20] + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + add r3, sp, #0x20 + bl MOD11_0224379C + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + mov r3, #0 + bl MOD11_02243420 + ldr r1, _02230688 ; =0xF7FFFFFF + str r0, [sp, #0x20] + and r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + add r3, sp, #0x20 + bl MOD11_0224379C +_02230474: + mov r0, #1 + str r0, [sp, #0x14] +_02230478: + ldr r0, [sp, #0x38] + mov r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022304DC + ldr r0, [sp, #0x18] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + ldr r1, _0223068C ; =0x00000F88 + str r0, [sp, #0x20] + tst r1, r0 + beq _022304DC + ldr r1, _02230690 ; =0xFFFFF077 + add r2, sp, #0x20 + and r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + mov r1, #0x9f + bl FUN_02067830 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _022304B8 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022304D8 +_022304B8: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + ldr r1, _02230690 ; =0xFFFFF077 + str r0, [sp, #0x20] + and r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + add r3, sp, #0x20 + bl MOD11_0224379C +_022304D8: + mov r0, #1 + str r0, [sp, #0x14] +_022304DC: + ldr r0, [sp, #0x38] + mov r1, #0x11 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230540 + ldr r0, [sp, #0x18] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + mov r1, #0x10 + str r0, [sp, #0x20] + tst r1, r0 + beq _02230540 + mov r1, #0x10 + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + mov r1, #0x9f + add r2, sp, #0x20 + bl FUN_02067830 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _0223051C + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _0223053C +_0223051C: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + mov r1, #0x10 + str r0, [sp, #0x20] + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + add r3, sp, #0x20 + bl MOD11_0224379C +_0223053C: + mov r0, #1 + str r0, [sp, #0x14] +_02230540: + ldr r0, [sp, #0x38] + mov r1, #0x12 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022305A4 + ldr r0, [sp, #0x18] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + mov r1, #0x20 + str r0, [sp, #0x20] + tst r1, r0 + beq _022305A4 + mov r1, #0x20 + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + mov r1, #0x9f + add r2, sp, #0x20 + bl FUN_02067830 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230580 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022305A0 +_02230580: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + mov r1, #0x20 + str r0, [sp, #0x20] + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + add r3, sp, #0x20 + bl MOD11_0224379C +_022305A0: + mov r0, #1 + str r0, [sp, #0x14] +_022305A4: + ldr r0, [sp, #0x38] + mov r1, #0x13 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230608 + ldr r0, [sp, #0x18] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + mov r1, #0x40 + str r0, [sp, #0x20] + tst r1, r0 + beq _02230608 + mov r1, #0x40 + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + mov r1, #0x9f + add r2, sp, #0x20 + bl FUN_02067830 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _022305E4 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230604 +_022305E4: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + mov r1, #0x40 + str r0, [sp, #0x20] + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x34 + add r3, sp, #0x20 + bl MOD11_0224379C +_02230604: + mov r0, #1 + str r0, [sp, #0x14] +_02230608: + ldr r0, [sp, #0x38] + mov r1, #0x14 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230650 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230626 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230650 +_02230626: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + mov r3, #0 + bl MOD11_02243420 + mov r1, #7 + str r0, [sp, #0x20] + tst r1, r0 + beq _02230650 + mov r1, #7 + bic r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + add r3, sp, #0x20 + bl MOD11_0224379C + mov r0, #1 + str r0, [sp, #0x14] +_02230650: + ldr r0, [sp, #0x38] + mov r1, #0x15 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022306AC + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _0223066E + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022306AC +_0223066E: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xf + lsl r1, r1, #0x10 + str r0, [sp, #0x20] + tst r1, r0 + beq _022306AC + ldr r1, _02230694 ; =0xFFF0FFFF + b _02230698 + .align 2, 0 +_02230688: .word 0xF7FFFFFF +_0223068C: .word 0x00000F88 +_02230690: .word 0xFFFFF077 +_02230694: .word 0xFFF0FFFF +_02230698: + mov r2, #0x35 + and r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + add r3, sp, #0x20 + bl MOD11_0224379C + mov r0, #1 + str r0, [sp, #0x14] +_022306AC: + ldr r0, [sp, #0x38] + mov r1, #0x16 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230706 + ldr r0, [sp, #4] + ldr r1, [sp, #0x1c] + mov r2, #1 + add r3, r6, #0 + bl MOD11_0224C474 + str r0, [sp, #0x20] + cmp r0, #0 + bne _02230706 + ldr r0, [sp, #4] + ldr r1, [sp, #0x1c] + mov r2, #0 + add r3, r6, #0 + bl MOD11_0224C474 + mov r1, #0x40 + str r0, [sp, #0x20] + orr r0, r1 + str r0, [sp, #0x20] + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #0x1c] + mov r2, #0 + add r3, r6, #0 + bl MOD11_0224C54C + mov r0, #5 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #0x1c] + mov r2, #1 + add r3, r6, #0 + bl MOD11_0224C54C + mov r0, #1 + str r0, [sp, #0x14] +_02230706: + ldr r0, [sp, #0x38] + mov r1, #0x1b + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230744 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230724 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230744 +_02230724: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x13 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0xc + bge _02230744 + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x13 + mov r3, #1 + bl MOD11_02243DB0 + mov r0, #1 + str r0, [sp, #0x14] +_02230744: + ldr r0, [sp, #0x38] + mov r1, #0x1c + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230782 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230762 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230782 +_02230762: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x14 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0xc + bge _02230782 + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x14 + mov r3, #1 + bl MOD11_02243DB0 + mov r0, #1 + str r0, [sp, #0x14] +_02230782: + ldr r0, [sp, #0x38] + mov r1, #0x1d + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022307C0 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _022307A0 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022307C0 +_022307A0: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x16 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0xc + bge _022307C0 + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x16 + mov r3, #1 + bl MOD11_02243DB0 + mov r0, #1 + str r0, [sp, #0x14] +_022307C0: + ldr r0, [sp, #0x38] + mov r1, #0x1e + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022307FE + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _022307DE + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022307FE +_022307DE: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x17 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0xc + bge _022307FE + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x17 + mov r3, #1 + bl MOD11_02243DB0 + mov r0, #1 + str r0, [sp, #0x14] +_022307FE: + ldr r0, [sp, #0x38] + mov r1, #0x1f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _0223083C + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _0223081C + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _0223083C +_0223081C: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x15 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0xc + bge _0223083C + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x15 + mov r3, #1 + bl MOD11_02243DB0 + mov r0, #1 + str r0, [sp, #0x14] +_0223083C: + ldr r0, [sp, #0x38] + mov r1, #0x20 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _0223087A + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _0223085A + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _0223087A +_0223085A: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x18 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0xc + bge _0223087A + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x18 + mov r3, #1 + bl MOD11_02243DB0 + mov r0, #1 + str r0, [sp, #0x14] +_0223087A: + ldr r0, [sp, #0x38] + mov r1, #0x21 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022308C4 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230898 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022308C4 +_02230898: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + mov r3, #0 + bl MOD11_02243420 + mov r1, #1 + lsl r1, r1, #0x14 + add r2, r0, #0 + str r0, [sp, #0x20] + tst r2, r1 + bne _022308C4 + orr r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + add r3, sp, #0x20 + bl MOD11_0224379C + mov r0, #1 + str r0, [sp, #0x14] +_022308C4: + ldr r0, [sp, #0x38] + mov r1, #0x24 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _0223095A + ldr r0, [sp, #0x38] + mov r1, #0x37 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #0x20] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + cmp r7, r0 + beq _0223095A + add r1, r4, #0 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x20] + add r1, #0x3a + bl FUN_02068018 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _0223091C + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230956 +_0223091C: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + mov r3, #0 + bl MOD11_02243420 + mov r1, #2 + lsl r1, r1, #0x14 + tst r0, r1 + bne _02230956 + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x4b + mov r3, #0 + bl MOD11_02243420 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0206A92C + tst r0, r7 + bne _02230956 + add r4, #0x1f + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02243DB0 +_02230956: + mov r0, #1 + str r0, [sp, #0x14] +_0223095A: + ldr r0, [sp, #0x38] + mov r1, #0x25 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _022309F8 + ldr r0, [sp, #0x38] + mov r1, #0x37 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #0x20] + mov r4, #0 +_0223097E: + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + cmp r7, r0 + beq _022309F2 + add r1, r4, #0 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x20] + add r1, #0x3a + bl FUN_02068018 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _022309B4 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _022309EE +_022309B4: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x35 + mov r3, #0 + bl MOD11_02243420 + mov r1, #2 + lsl r1, r1, #0x14 + tst r0, r1 + bne _022309EE + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x4b + mov r3, #0 + bl MOD11_02243420 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0206A92C + tst r0, r7 + bne _022309EE + add r2, r4, #0 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r1, r6, #0 + add r2, #0x1f + bl MOD11_02243DB0 +_022309EE: + mov r0, #1 + str r0, [sp, #0x14] +_022309F2: + add r4, r4, #1 + cmp r4, #4 + blt _0223097E +_022309F8: + ldr r0, [sp, #0x38] + mov r1, #0x26 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + bne _02230A0C + b _02230B14 +_02230A0C: + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x38] + mov r1, #0x17 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230A36 + ldr r0, [sp, #0x18] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02230A42 + mov r0, #1 + str r0, [sp, #0x20] + b _02230A42 +_02230A36: + ldr r0, [sp, #0x18] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x20] +_02230A42: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _02230B14 + ldr r0, [sp, #0x18] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + cmp r4, r0 + beq _02230B14 + ldr r0, [sp, #0x38] + mov r1, #0x36 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #0x20] + cmp r0, #0xfd + beq _02230AA2 + cmp r0, #0xfe + beq _02230A8C + cmp r0, #0xff + bne _02230AC2 + ldr r0, [sp, #0x18] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x20] + b _02230AC2 +_02230A8C: + ldr r0, [sp, #0x18] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + lsr r0, r0, #1 + str r0, [sp, #0x20] + bne _02230AC2 + mov r0, #1 + str r0, [sp, #0x20] + b _02230AC2 +_02230AA2: + ldr r0, [sp, #0x18] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x19 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + blx _u32_div_f + str r0, [sp, #0x20] + cmp r0, #0 + bne _02230AC2 + mov r0, #1 + str r0, [sp, #0x20] +_02230AC2: + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x20] + mov r1, #0xa2 + bl FUN_02068018 + ldr r0, [sp, #0x38] + mov r1, #0x17 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + bne _02230B10 + ldr r0, [sp, #4] + add r1, r6, #0 + bl MOD11_02230270 + cmp r0, #0 + beq _02230AF8 + ldr r0, [sp, #0x1c] + add r1, r6, #0 + mov r2, #0x5f + add r3, sp, #0x20 + bl MOD11_0224379C + b _02230B10 +_02230AF8: + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230B04 + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230B10 +_02230B04: + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r1, r6, #0 + mov r2, #0x2f + bl MOD11_02243DB0 +_02230B10: + mov r0, #1 + str r0, [sp, #0x14] +_02230B14: + ldr r0, [sp, #0x38] + mov r1, #0x2d + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230B4A + ldr r0, [sp, #0x18] + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0x64 + bhs _02230B4A + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _02230B4A + ldr r0, [sp, #0x38] + mov r1, #0x38 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #8] +_02230B4A: + ldr r0, [sp, #0x38] + mov r1, #0x2e + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230B8E + ldr r0, [sp, #0x18] + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0x64 + blo _02230B8E + ldr r0, [sp, #0x18] + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0xc8 + bhs _02230B8E + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _02230B8E + ldr r0, [sp, #0x38] + mov r1, #0x39 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #8] +_02230B8E: + ldr r0, [sp, #0x38] + mov r1, #0x2f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02230BC4 + ldr r0, [sp, #0x18] + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0xc8 + blo _02230BC4 + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _02230BC4 + ldr r0, [sp, #0x38] + mov r1, #0x3a + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #8] +_02230BC4: + ldr r0, [sp, #8] + cmp r0, #0 + beq _02230C4A + ble _02230C28 + ldr r0, [sp, #0x18] + mov r1, #0x9a + mov r2, #0 + bl FUN_020671BC + cmp r0, #0xb + bne _02230BE0 + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02230BE0: + ldr r0, [sp, #0x18] + mov r1, #0x97 + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + ldr r0, [sp, #4] + bl MOD11_022302B0 + cmp r4, r0 + bne _02230BFC + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02230BFC: + ldr r0, [sp, #0x18] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x20] + ldr r0, [sp, #0x38] + mov r1, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0x34 + bne _02230C28 + ldr r1, [sp, #8] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + str r0, [sp, #8] +_02230C28: + ldr r0, [sp, #0x18] + ldr r2, [sp, #8] + mov r1, #9 + bl FUN_02068018 + ldr r0, [sp, #0x10] + cmp r0, r5 + beq _02230C3E + ldr r0, [sp, #0xc] + cmp r0, r5 + bne _02230C4A +_02230C3E: + ldr r0, [sp, #0x1c] + ldr r3, [sp, #8] + add r1, r6, #0 + mov r2, #0x2c + bl MOD11_02243DB0 +_02230C4A: + ldr r0, [sp, #0x14] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02230C50 +MOD11_02230C50: ; 0x02230C50 + ldr r1, _02230C58 ; =0x00002408 + ldr r0, [r0, r1] + bx lr + nop +_02230C58: .word 0x00002408 + + thumb_func_start MOD11_02230C5C +MOD11_02230C5C: ; 0x02230C5C + ldr r1, _02230C64 ; =0x0000240C + ldr r0, [r0, r1] + bx lr + nop +_02230C64: .word 0x0000240C + + thumb_func_start MOD11_02230C68 +MOD11_02230C68: ; 0x02230C68 + mov r2, #9 + lsl r2, r2, #0xa + ldr r1, [r0, r2] + cmp r1, #5 + bhi _02230CB4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02230C7E: ; jump table + .short _02230C8A - _02230C7E - 2 ; case 0 + .short _02230C8A - _02230C7E - 2 ; case 1 + .short _02230C8A - _02230C7E - 2 ; case 2 + .short _02230C8A - _02230C7E - 2 ; case 3 + .short _02230C8A - _02230C7E - 2 ; case 4 + .short _02230C8A - _02230C7E - 2 ; case 5 +_02230C8A: + add r2, #0xc + ldr r1, [r0, r2] + cmp r1, #4 + bhi _02230CB6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02230C9E: ; jump table + .short _02230CA8 - _02230C9E - 2 ; case 0 + .short _02230CA8 - _02230C9E - 2 ; case 1 + .short _02230CAC - _02230C9E - 2 ; case 2 + .short _02230CB0 - _02230C9E - 2 ; case 3 + .short _02230CB0 - _02230C9E - 2 ; case 4 +_02230CA8: + mov r0, #0 + bx lr +_02230CAC: + mov r0, #1 + bx lr +_02230CB0: + mov r0, #2 + bx lr +_02230CB4: + mov r0, #0 +_02230CB6: + bx lr + + thumb_func_start MOD11_02230CB8 +MOD11_02230CB8: ; 0x02230CB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_02230260 + cmp r0, #4 + bne _02230D32 + ldr r1, [r5, #0x2c] + mov r0, #8 + tst r0, r1 + bne _02230D32 + mov r0, #4 + tst r0, r1 + beq _02230CEE + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022302BC + bl FUN_0206A92C + mov r1, #0x91 + lsl r1, r1, #6 + ldrb r1, [r5, r1] + tst r0, r1 + bne _02230D32 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230CEE: + ldr r1, [r5, #0x30] + add r0, r5, #0 + mov r2, #0xc + mov r3, #0 + bl MOD11_0224C474 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r1, [r5, #0x30] + add r0, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_0224C474 + cmp r0, #0xe + bne _02230D12 + cmp r4, #0x10 + bhi _02230D2A +_02230D12: + ldr r1, [r5, #0x30] + add r0, r5, #0 + mov r2, #0xa + mov r3, #0 + bl MOD11_0224C474 + add r4, r0, #0 + mov r0, #0 + bl FUN_0206A92C + tst r0, r4 + beq _02230D2E +_02230D2A: + mov r0, #0 + pop {r3, r4, r5, pc} +_02230D2E: + mov r0, #1 + pop {r3, r4, r5, pc} +_02230D32: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02230D38 +MOD11_02230D38: ; 0x02230D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x14] + add r4, r1, #0 + add r7, r2, #0 + cmp r0, #1 + beq _02230D5A + cmp r0, #4 + beq _02230D5A + cmp r0, #5 + beq _02230D5A + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02230D5A: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02230DCE +_02230D64: + mov r0, #0 + str r0, [r4] + cmp r0, #6 + bge _02230D9C + mov r6, #0x5e + lsl r6, r6, #2 +_02230D70: + bl FUN_0206A92C + ldr r1, [r5, r6] + tst r0, r1 + beq _02230D92 + ldr r0, [r4] + bl FUN_0206A92C + mov r3, #0x5e + lsl r3, r3, #2 + mov r2, #0 + mvn r2, r2 + ldr r1, [r5, r3] + eor r0, r2 + and r0, r1 + str r0, [r5, r3] + b _02230D9C +_02230D92: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + cmp r0, #6 + blt _02230D70 +_02230D9C: + ldr r1, [r4] + cmp r1, #6 + bge _02230DC4 + ldr r0, [r5, #4] + bl FUN_0206B9B0 + mov r3, #0x59 + str r7, [sp] + lsl r3, r3, #2 + ldr r3, [r5, r3] + add r1, r0, #0 + lsl r3, r3, #0x10 + ldr r0, [r5, #4] + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_02069168 + str r0, [sp, #4] + cmp r0, #0 + bne _02230DD0 +_02230DC4: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + bne _02230D64 +_02230DCE: + ldr r0, [sp, #4] +_02230DD0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02230DD4 +MOD11_02230DD4: ; 0x02230DD4 + ldr r1, _02230DDC ; =0x000023F8 + ldrb r0, [r0, r1] + bx lr + nop +_02230DDC: .word 0x000023F8 + + thumb_func_start MOD11_02230DE0 +MOD11_02230DE0: ; 0x02230DE0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + bne _02230DEE + bl ErrorHandling +_02230DEE: + ldr r1, [r4, #0x30] + add r0, r4, #0 + mov r2, #5 + mov r3, #0 + bl MOD11_0224C474 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} + + thumb_func_start MOD11_02230E00 +MOD11_02230E00: ; 0x02230E00 + ldr r1, _02230E08 ; =0x00002410 + ldr r0, [r0, r1] + bx lr + nop +_02230E08: .word 0x00002410 + + thumb_func_start MOD11_02230E0C +MOD11_02230E0C: ; 0x02230E0C + ldr r2, _02230E14 ; =0x00002410 + str r1, [r0, r2] + bx lr + nop +_02230E14: .word 0x00002410 + + thumb_func_start MOD11_02230E18 +MOD11_02230E18: ; 0x02230E18 + mov r1, #0x6d + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_02230E20 +MOD11_02230E20: ; 0x02230E20 + push {r3, lr} + ldr r2, [r0, #0x2c] + mov r1, #4 + tst r1, r2 + beq _02230E2E + mov r0, #1 + pop {r3, pc} +_02230E2E: + mov r1, #0x6d + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_0202502C + cmp r0, #0 + bne _02230E40 + mov r0, #1 + pop {r3, pc} +_02230E40: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD11_02230E44 +MOD11_02230E44: ; 0x02230E44 + mov r1, #0x6d + lsl r1, r1, #2 + ldr r3, _02230E50 ; =0x02025085 + ldr r0, [r0, r1] + bx r3 + nop +_02230E50: .word 0x02025085 + + thumb_func_start MOD11_02230E54 +MOD11_02230E54: ; 0x02230E54 + push {r3, lr} + ldr r2, [r0, #0x2c] + mov r1, #4 + tst r1, r2 + beq _02230E62 + mov r0, #1 + pop {r3, pc} +_02230E62: + mov r1, #0x6d + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_02024FF4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02230E70 +MOD11_02230E70: ; 0x02230E70 + mov r1, #0x6d + lsl r1, r1, #2 + ldr r3, _02230E7C ; =0x02025049 + ldr r0, [r0, r1] + bx r3 + nop +_02230E7C: .word 0x02025049 + + thumb_func_start MOD11_02230E80 +MOD11_02230E80: ; 0x02230E80 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_02230E88 +MOD11_02230E88: ; 0x02230E88 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r2, [r5, #0x2c] + mov r3, #8 + add r4, r1, #0 + tst r3, r2 + bne _02230EA6 + mov r3, #0x10 + tst r2, r3 + beq _02230EAE + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _02230EAE +_02230EA6: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x78] + pop {r3, r4, r5, pc} +_02230EAE: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + beq _02230EC0 + lsl r0, r4, #0x1f + lsr r0, r0, #0x1d + add r0, r5, r0 + ldr r0, [r0, #0x78] + pop {r3, r4, r5, pc} +_02230EC0: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x78] + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02230EC8 +MOD11_02230EC8: ; 0x02230EC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r1, #0xa9 + ldr r2, [r5, #0x2c] + lsl r1, r1, #2 + tst r1, r2 + bne _02230F66 + mov r4, #0 + add r1, r4, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _02230F66 + add r7, r4, #0 +_02230EE4: + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD11_02230014 + mov r1, #0xad + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + mov r0, #0x67 + lsl r0, r0, #2 + cmp r1, r0 + bne _02230F58 + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, _02230F68 ; =0x00002414 + ldrb r1, [r5, r1] + tst r0, r1 + beq _02230F58 + add r0, r5, #0 + bl MOD11_02230294 + cmp r0, #0xb + bhi _02230F40 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230F28: ; jump table + .short _02230F44 - _02230F28 - 2 ; case 0 + .short _02230F44 - _02230F28 - 2 ; case 1 + .short _02230F40 - _02230F28 - 2 ; case 2 + .short _02230F40 - _02230F28 - 2 ; case 3 + .short _02230F44 - _02230F28 - 2 ; case 4 + .short _02230F44 - _02230F28 - 2 ; case 5 + .short _02230F40 - _02230F28 - 2 ; case 6 + .short _02230F40 - _02230F28 - 2 ; case 7 + .short _02230F40 - _02230F28 - 2 ; case 8 + .short _02230F4A - _02230F28 - 2 ; case 9 + .short _02230F40 - _02230F28 - 2 ; case 10 + .short _02230F4A - _02230F28 - 2 ; case 11 +_02230F40: + str r7, [sp] + b _02230F4E +_02230F44: + mov r0, #1 + str r0, [sp] + b _02230F4E +_02230F4A: + mov r0, #2 + str r0, [sp] +_02230F4E: + add r0, r6, #0 + mov r1, #0x70 + add r2, sp, #0 + bl FUN_02067830 +_02230F58: + add r0, r5, #0 + mov r1, #0 + add r4, r4, #1 + bl MOD11_0222FFC8 + cmp r4, r0 + blt _02230EE4 +_02230F66: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02230F68: .word 0x00002414 + + thumb_func_start MOD11_02230F6C +MOD11_02230F6C: ; 0x02230F6C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r2, #0 + add r4, r1, #0 + bl FUN_0206A92C + ldr r1, _02230F84 ; =0x00002414 + add r2, r5, r1 + ldrb r1, [r2, r4] + orr r0, r1 + strb r0, [r2, r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_02230F84: .word 0x00002414 + + thumb_func_start MOD11_02230F88 +MOD11_02230F88: ; 0x02230F88 + push {r4, lr} + add r4, r0, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _02230FA4 + add r0, r1, #0 + bl FUN_020690E4 + add r4, #0x98 + add r1, r0, #0 + ldr r0, [r4] + bl FUN_0204C104 +_02230FA4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02230FA8 +MOD11_02230FA8: ; 0x02230FA8 + push {r3, r4, lr} + sub sp, #4 + add r3, r0, #0 + mov r0, #5 + str r0, [sp] + ldr r4, _02230FC8 ; =0x0000241C + add r0, r3, #0 + ldrb r2, [r3, r4] + add r4, r4, #2 + add r0, #0x9c + ldrh r3, [r3, r4] + ldr r0, [r0] + bl FUN_02061028 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02230FC8: .word 0x0000241C + + thumb_func_start MOD11_02230FCC +MOD11_02230FCC: ; 0x02230FCC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + mov r1, #1 + add r4, r0, #0 + mov r0, #5 + lsl r1, r1, #0x10 + bl FUN_02016998 + mov r1, #0x87 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #5 + sub r1, #0x1c + bl FUN_02016998 + mov r1, #0x22 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r1, r1, #4 + mov r2, #1 + ldr r0, _02231224 ; =0x06010000 + ldr r1, [r4, r1] + lsl r2, r2, #0x10 + blx MIi_CpuCopy32 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_020031FC + mov r2, #2 + add r1, r5, #0 + lsl r2, r2, #8 + blx MIi_CpuCopy32 + mov r0, #0x19 + lsl r0, r0, #0x16 + str r0, [sp, #0x24] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_02020350 + ldr r1, [r0, #4] + ldr r0, [sp, #0x24] + add r0, r0, r1 + str r0, [sp, #0x24] + mov r0, #0x14 + str r0, [sp, #0x28] + lsl r0, r0, #0xb + str r0, [sp, #0xc] +_02231038: + mov r0, #0x10 + mov ip, r0 + lsl r0, r0, #6 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + mov r7, #1 + sub r0, #0x14 + lsl r1, r0, #8 + ldr r0, [sp, #0x24] + add r0, r0, r1 + str r0, [sp, #0x10] +_0223104E: + mov r0, ip + sub r0, #0x10 + ldr r1, [sp, #0x10] + lsl r3, r0, #5 + add r3, r1, r3 + ldr r5, [sp, #0xc] + ldr r1, [sp, #0x14] + mov r2, #0 + add r6, r5, r1 +_02231060: + cmp r0, #8 + bge _02231088 + add r1, r2, #0 + tst r1, r7 + beq _0223107A + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + ldrb r5, [r3, r1] + mov r1, #0xf0 + and r1, r5 + asr r1, r1, #4 + b _022310B6 +_0223107A: + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + ldrb r5, [r3, r1] + mov r1, #0xf + and r1, r5 + b _022310B6 +_02231088: + mov r1, #1 + tst r1, r2 + beq _022310A4 + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + add r5, r3, r1 + mov r1, #7 + lsl r1, r1, #8 + ldrb r5, [r5, r1] + mov r1, #0xf0 + and r1, r5 + asr r1, r1, #4 + b _022310B6 +_022310A4: + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + add r5, r3, r1 + mov r1, #7 + lsl r1, r1, #8 + ldrb r5, [r5, r1] + mov r1, #0xf + and r1, r5 +_022310B6: + cmp r1, #0 + beq _022310C6 + mov r5, #0x87 + lsl r5, r5, #2 + ldr r5, [r4, r5] + add r1, #0x70 + add r5, r6, r5 + strb r1, [r2, r5] +_022310C6: + add r2, r2, #1 + cmp r2, #0x40 + blt _02231060 + ldr r0, [sp, #0x14] + add r0, #0x40 + str r0, [sp, #0x14] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0x20 + blt _0223104E + mov r1, #2 + ldr r0, [sp, #0xc] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #0x1c + blt _02231038 + mov r0, #0x19 + lsl r0, r0, #0x16 + str r0, [sp, #8] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_02020350 + ldr r1, [r0, #4] + ldr r0, [sp, #8] + mov r7, #0x26 + add r0, r0, r1 + str r0, [sp, #8] + mov r3, #0 + mov r0, #0xf + mov r1, #0xf0 + lsl r7, r7, #0xa + mov r2, #1 +_02231116: + add r5, r3, #0 + tst r5, r2 + beq _0223112C + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r6, r5, #1 + ldr r5, [sp, #8] + ldrb r5, [r5, r6] + and r5, r1 + asr r5, r5, #4 + b _02231138 +_0223112C: + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r6, r5, #1 + ldr r5, [sp, #8] + ldrb r5, [r5, r6] + and r5, r0 +_02231138: + cmp r5, #0 + beq _02231148 + mov r6, #0x87 + lsl r6, r6, #2 + ldr r6, [r4, r6] + add r5, #0x70 + add r6, r6, r3 + strb r5, [r6, r7] +_02231148: + mov r5, #2 + add r3, r3, #1 + lsl r5, r5, #0xa + cmp r3, r5 + blt _02231116 + mov r0, #0x1c + str r0, [sp, #4] + lsl r0, r0, #0xb + str r0, [sp, #0x18] +_0223115A: + ldr r0, [sp, #4] + mov r2, #0 + sub r0, #0x1c + lsl r1, r0, #8 + ldr r0, [sp, #8] + str r2, [sp, #0x20] + add r0, r0, r1 + str r0, [sp, #0x1c] + mov r7, #1 +_0223116C: + asr r0, r2, #2 + lsr r0, r0, #0x1d + add r0, r2, r0 + asr r0, r0, #3 + lsl r1, r0, #0xa + ldr r0, [sp, #0x1c] + lsr r5, r2, #0x1f + add r6, r0, r1 + lsl r1, r2, #0x1d + sub r1, r1, r5 + mov r0, #0x1d + ror r1, r0 + add r0, r5, r1 + lsl r0, r0, #5 + ldr r5, [sp, #0x18] + ldr r1, [sp, #0x20] + mov r3, #0 + add r0, r6, r0 + add r1, r5, r1 +_02231192: + add r5, r3, #0 + tst r5, r7 + beq _022311AE + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r5, r5, #1 + add r6, r0, r5 + mov r5, #1 + lsl r5, r5, #0xa + ldrb r6, [r6, r5] + mov r5, #0xf0 + and r5, r6 + asr r5, r5, #4 + b _022311C0 +_022311AE: + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r5, r5, #1 + add r6, r0, r5 + mov r5, #1 + lsl r5, r5, #0xa + ldrb r6, [r6, r5] + mov r5, #0xf + and r5, r6 +_022311C0: + cmp r5, #0 + beq _022311D0 + mov r6, #0x87 + lsl r6, r6, #2 + ldr r6, [r4, r6] + add r5, #0x70 + add r6, r1, r6 + strb r5, [r3, r6] +_022311D0: + add r3, r3, #1 + cmp r3, #0x40 + blt _02231192 + ldr r0, [sp, #0x20] + add r2, r2, #1 + add r0, #0x40 + str r0, [sp, #0x20] + cmp r2, #0x18 + blt _0223116C + mov r3, #2 + ldr r0, [sp, #0x18] + lsl r3, r3, #0xa + add r0, r0, r3 + str r0, [sp, #0x18] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #0x20 + blt _0223115A + mov r0, #0 + mov r2, #0x87 + str r0, [sp] + lsl r2, r2, #2 + ldr r0, [r4, #4] + ldr r2, [r4, r2] + mov r1, #3 + lsl r3, r3, #5 + bl FUN_02017E14 + mov r0, #0x5f + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD11_0225840C + mov r0, #0x63 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD11_0225840C + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_02231224: .word 0x06010000 + + thumb_func_start MOD11_02231228 +MOD11_02231228: ; 0x02231228 + mov r1, #0x87 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_02231230 +MOD11_02231230: ; 0x02231230 + mov r1, #0x22 + lsl r1, r1, #4 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_02231238 +MOD11_02231238: ; 0x02231238 + ldr r1, _02231240 ; =0x00002424 + ldr r0, [r0, r1] + bx lr + nop +_02231240: .word 0x00002424 + + thumb_func_start MOD11_02231244 +MOD11_02231244: ; 0x02231244 + ldr r1, _0223124C ; =0x00002224 + add r0, r0, r1 + bx lr + nop +_0223124C: .word 0x00002224 + + thumb_func_start MOD11_02231250 +MOD11_02231250: ; 0x02231250 + ldr r1, _02231258 ; =0x00002304 + add r0, r0, r1 + bx lr + nop +_02231258: .word 0x00002304 + + thumb_func_start MOD11_0223125C +MOD11_0223125C: ; 0x0223125C + ldr r1, _02231264 ; =0x00002428 + ldr r0, [r0, r1] + bx lr + nop +_02231264: .word 0x00002428 + + thumb_func_start MOD11_02231268 +MOD11_02231268: ; 0x02231268 + ldr r1, _02231270 ; =0x0000241D + ldrb r0, [r0, r1] + bx lr + nop +_02231270: .word 0x0000241D + + thumb_func_start MOD11_02231274 +MOD11_02231274: ; 0x02231274 + ldr r2, _0223127C ; =0x0000241D + strb r1, [r0, r2] + bx lr + nop +_0223127C: .word 0x0000241D + + thumb_func_start MOD11_02231280 +MOD11_02231280: ; 0x02231280 + ldr r1, _02231288 ; =0x0000242C + ldr r0, [r0, r1] + bx lr + nop +_02231288: .word 0x0000242C + + thumb_func_start MOD11_0223128C +MOD11_0223128C: ; 0x0223128C + mov r2, #0x86 + lsl r2, r2, #2 + ldr r3, _02231298 ; =0x0202A0E9 + ldr r0, [r0, r2] + bx r3 + nop +_02231298: .word 0x0202A0E9 + + thumb_func_start MOD11_0223129C +MOD11_0223129C: ; 0x0223129C + mov r1, #0x86 + lsl r1, r1, #2 + ldr r0, [r0, r1] + ldr r3, _022312A8 ; =0x0202A171 + mov r1, #0x16 + bx r3 + .align 2, 0 +_022312A8: .word 0x0202A171 + + thumb_func_start MOD11_022312AC +MOD11_022312AC: ; 0x022312AC + ldr r2, _022312B4 ; =0x0000243C + str r1, [r0, r2] + bx lr + nop +_022312B4: .word 0x0000243C + + thumb_func_start MOD11_022312B8 +MOD11_022312B8: ; 0x022312B8 + mov r2, #0x91 + lsl r2, r2, #6 + strb r1, [r0, r2] + bx lr + + thumb_func_start MOD11_022312C0 +MOD11_022312C0: ; 0x022312C0 + mov r1, #0x6f + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD11_022312C8 +MOD11_022312C8: ; 0x022312C8 + mov r2, #0x6f + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + + thumb_func_start MOD11_022312D0 +MOD11_022312D0: ; 0x022312D0 + mov r2, #0x73 + lsl r2, r2, #2 + add r2, r0, r2 + lsl r0, r1, #4 + add r0, r2, r0 + bx lr + + thumb_func_start MOD11_022312DC +MOD11_022312DC: ; 0x022312DC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #4 + blt _022312EA + bl ErrorHandling +_022312EA: + lsl r0, r5, #4 + ldr r0, [r4, r0] + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022312F0 +MOD11_022312F0: ; 0x022312F0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #4 + blt _02231300 + bl ErrorHandling +_02231300: + lsl r0, r4, #4 + add r0, r5, r0 + str r6, [r0, #4] + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02231308 +MOD11_02231308: ; 0x02231308 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #4 + blt _02231318 + bl ErrorHandling +_02231318: + lsl r0, r4, #4 + add r0, r5, r0 + str r6, [r0, #8] + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02231320 +MOD11_02231320: ; 0x02231320 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #4 + blt _02231330 + bl ErrorHandling +_02231330: + lsl r0, r4, #4 + add r0, r5, r0 + str r6, [r0, #0xc] + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02231338 +MOD11_02231338: ; 0x02231338 + ldr r2, _02231340 ; =0x000023F9 + strb r1, [r0, r2] + bx lr + nop +_02231340: .word 0x000023F9 + + thumb_func_start MOD11_02231344 +MOD11_02231344: ; 0x02231344 + ldr r2, _0223134C ; =0x000023F0 + str r1, [r0, r2] + bx lr + nop +_0223134C: .word 0x000023F0 + + thumb_func_start MOD11_02231350 +MOD11_02231350: ; 0x02231350 + ldr r2, _02231358 ; =0x000023F4 + str r1, [r0, r2] + bx lr + nop +_02231358: .word 0x000023F4 + + thumb_func_start MOD11_0223135C +MOD11_0223135C: ; 0x0223135C + ldr r2, _02231364 ; =0x000023F0 + ldr r0, [r0, r2] + strb r1, [r0] + bx lr + .align 2, 0 +_02231364: .word 0x000023F0 + + thumb_func_start MOD11_02231368 +MOD11_02231368: ; 0x02231368 + ldr r2, _02231370 ; =0x000023F4 + ldr r0, [r0, r2] + strb r1, [r0] + bx lr + .align 2, 0 +_02231370: .word 0x000023F4 + + thumb_func_start MOD11_02231374 +MOD11_02231374: ; 0x02231374 + ldr r2, _0223137C ; =0x000023FA + strb r1, [r0, r2] + bx lr + nop +_0223137C: .word 0x000023FA + + thumb_func_start MOD11_02231380 +MOD11_02231380: ; 0x02231380 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r3, _0223138C ; =MOD11_02253A70 + ldr r0, [r0, #0x34] + bx r3 + nop +_0223138C: .word MOD11_02253A70 + + thumb_func_start MOD11_02231390 +MOD11_02231390: ; 0x02231390 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + mov r7, #0 + cmp r0, #0 + ble _022313DC + add r5, r6, #0 +_0223139E: + ldr r0, [r5, #0x34] + bl MOD11_02253A70 + add r4, r0, #0 + str r6, [r4, #0xc] + ldr r0, [r5, #0x34] + bl MOD11_02253A4C + str r0, [sp] + add r0, r6, #0 + bl MOD11_0222FF74 + add r1, r0, #0 + ldr r0, [sp] + bl MOD11_02257F6C + add r1, r4, #0 + add r1, #0x25 + strb r0, [r1] + add r0, r4, #0 + bl MOD11_02256FB0 + add r0, r4, #0 + mov r1, #0 + bl MOD11_022572AC + ldr r0, [r6, #0x44] + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r0 + blt _0223139E +_022313DC: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022313E0 +MOD11_022313E0: ; 0x022313E0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + mov r4, #0 + cmp r0, #0 + ble _0223140C + add r5, r6, #0 + mov r7, #1 +_022313F0: + ldr r0, [r5, #0x34] + bl MOD11_02253A70 + ldr r1, [r0, #0x28] + cmp r1, #0 + beq _02231402 + add r1, r7, #0 + bl MOD11_022572AC +_02231402: + ldr r0, [r6, #0x44] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _022313F0 +_0223140C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02231410 +MOD11_02231410: ; 0x02231410 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + mov r4, #0 + cmp r0, #0 + ble _02231436 + add r5, r6, #0 + add r7, r4, #0 +_02231420: + ldr r0, [r5, #0x34] + bl MOD11_02253A70 + add r1, r7, #0 + bl MOD11_022572AC + ldr r0, [r6, #0x44] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _02231420 +_02231436: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02231438 +MOD11_02231438: ; 0x02231438 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + mov r4, #0 + cmp r0, #0 + ble _0223145A + add r5, r6, #0 +_02231446: + ldr r0, [r5, #0x34] + bl MOD11_02253A70 + bl MOD11_02257030 + ldr r0, [r6, #0x44] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _02231446 +_0223145A: + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0223145C +MOD11_0223145C: ; 0x0223145C + ldr r1, _02231464 ; =0x0000241C + ldrb r0, [r0, r1] + bx lr + nop +_02231464: .word 0x0000241C + + thumb_func_start MOD11_02231468 +MOD11_02231468: ; 0x02231468 + ldr r2, _02231470 ; =0x0000241C + strb r1, [r0, r2] + bx lr + nop +_02231470: .word 0x0000241C + + thumb_func_start MOD11_02231474 +MOD11_02231474: ; 0x02231474 + ldr r1, _02231480 ; =0x000023FB + ldrb r0, [r0, r1] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1e + bx lr + nop +_02231480: .word 0x000023FB + + thumb_func_start MOD11_02231484 +MOD11_02231484: ; 0x02231484 + push {r3, r4} + ldr r3, _0223149C ; =0x000023FB + lsl r1, r1, #0x1e + ldrb r4, [r0, r3] + mov r2, #0x18 + lsr r1, r1, #0x1b + bic r4, r2 + orr r1, r4 + strb r1, [r0, r3] + pop {r3, r4} + bx lr + nop +_0223149C: .word 0x000023FB + + thumb_func_start MOD11_022314A0 +MOD11_022314A0: ; 0x022314A0 + ldr r1, _022314AC ; =0x000023FB + ldrb r0, [r0, r1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1d + bx lr + nop +_022314AC: .word 0x000023FB + + thumb_func_start MOD11_022314B0 +MOD11_022314B0: ; 0x022314B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xf + blo _022314BE + bl ErrorHandling +_022314BE: + ldr r1, _022314D0 ; =0x000023FB + mov r0, #0xe0 + ldrb r2, [r5, r1] + bic r2, r0 + lsl r0, r4, #0x1d + lsr r0, r0, #0x18 + orr r0, r2 + strb r0, [r5, r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_022314D0: .word 0x000023FB + + thumb_func_start MOD11_022314D4 +MOD11_022314D4: ; 0x022314D4 + ldr r2, _022314DC ; =0x00002438 + str r1, [r0, r2] + bx lr + nop +_022314DC: .word 0x00002438 + + thumb_func_start MOD11_022314E0 +MOD11_022314E0: ; 0x022314E0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + ble _02231502 + add r5, r6, #0 +_022314F0: + ldr r0, [r5, #0x34] + bl MOD11_02253A4C + strb r4, [r7, r0] + ldr r0, [r6, #0x44] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _022314F0 +_02231502: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02231504 +MOD11_02231504: ; 0x02231504 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + mov r1, #0 + mov r0, #0xff +_0223150E: + strb r0, [r6, r1] + add r1, r1, #1 + cmp r1, #4 + blt _0223150E + ldr r0, [r7, #0x44] + mov r5, #0 + cmp r0, #0 + ble _02231532 + add r4, r7, #0 +_02231520: + ldr r0, [r4, #0x34] + bl MOD11_02253A4C + strb r0, [r6, r5] + ldr r0, [r7, #0x44] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, r0 + blt _02231520 +_02231532: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02231534 +MOD11_02231534: ; 0x02231534 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0 + add r6, r1, #0 + add r5, r0, #0 +_0223153E: + add r0, r0, #1 + stmia r1!, {r5} + cmp r0, #4 + blt _0223153E + ldr r0, [r7, #0x44] + cmp r0, #0 + ble _02231560 + add r4, r7, #0 +_0223154E: + ldr r0, [r4, #0x34] + bl MOD11_02253A64 + stmia r6!, {r0} + ldr r0, [r7, #0x44] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, r0 + blt _0223154E +_02231560: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02231564 +MOD11_02231564: ; 0x02231564 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x44] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + ble _0223158A + add r5, r6, #0 +_02231574: + ldr r0, [r5, #0x34] + bl MOD11_02253A70 + add r1, r7, #0 + bl MOD11_02257264 + ldr r0, [r6, #0x44] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _02231574 +_0223158A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0223158C +MOD11_0223158C: ; 0x0223158C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_020239F4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0 + bl FUN_02069AEC + ldr r1, _022315BC ; =0x0225DC1C + lsl r0, r0, #2 + ldrb r1, [r1, r4] + add r4, r1, #0 + mul r4, r0 + add r0, r6, #0 + bl FUN_02023A10 + cmp r4, r0 + bls _022315B8 + add r4, r0, #0 +_022315B8: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_022315BC: .word 0x0225DC1C + + thumb_func_start MOD11_022315C0 +MOD11_022315C0: ; 0x022315C0 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x34] + bl MOD11_02253A4C + add r4, r0, #0 + ldr r1, [r5, #0x30] + add r0, r5, #0 + mov r2, #2 + add r3, r6, #0 + bl MOD11_0224C474 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02230014 + add r6, r0, #0 + ldr r0, [r5, #0x2c] + mov r1, #0x84 + tst r1, r0 + bne _02231606 + mov r1, #1 + tst r1, r4 + bne _022315FE + sub r0, #0x4a + cmp r0, #1 + bhi _02231606 +_022315FE: + ldr r0, [r5, #0x60] + add r1, r6, #0 + bl FUN_0202498C +_02231606: + mov r0, #1 + tst r0, r4 + bne _02231626 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + mov r1, #0x67 + lsl r1, r1, #2 + cmp r0, r1 + bne _02231626 + ldr r0, [r5, #0x60] + add r1, r6, #0 + bl FUN_02024AF0 +_02231626: + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02231628 +MOD11_02231628: ; 0x02231628 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x34] + bl MOD11_02253A4C + ldr r2, [r5, #0x2c] + mov r1, #0x84 + tst r1, r2 + bne _02231664 + mov r1, #1 + tst r0, r1 + beq _02231664 + ldr r1, [r5, #0x30] + add r0, r5, #0 + mov r2, #2 + add r3, r4, #0 + bl MOD11_0224C474 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02230014 + add r1, r0, #0 + ldr r0, [r5, #0x60] + bl FUN_02024AF0 +_02231664: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02231668 +MOD11_02231668: ; 0x02231668 + ldr r3, _02231674 ; =0x02024595 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x60] + lsr r1, r1, #0x10 + bx r3 + nop +_02231674: .word 0x02024595 + + thumb_func_start MOD11_02231678 +MOD11_02231678: ; 0x02231678 + ldr r0, _02231680 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_02231680: .word 0x04000050 + + thumb_func_start MOD11_02231684 +MOD11_02231684: ; 0x02231684 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + str r2, [sp, #0xc] + add r7, r3, #0 + bl MOD11_0222FF6C + add r6, r0, #0 + ldr r1, [r5, #0x2c] + mov r0, #0x80 + tst r0, r1 + beq _0223174C + ldr r0, _02231780 ; =0x00002710 + cmp r4, r0 + bne _022316F6 + cmp r7, #0x64 + bne _022316BC + ldr r0, [sp, #0xc] + mov r1, #0x34 + add r5, #0xd0 + mul r1, r0 + add r0, r5, r1 + mov r1, #5 + bl FUN_020137D4 + b _022316CC +_022316BC: + ldr r0, [sp, #0xc] + mov r1, #0x34 + add r5, #0xd8 + mul r1, r0 + add r0, r5, r1 + mov r1, #5 + bl FUN_020137D4 +_022316CC: + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + ldr r0, [sp, #0x28] + str r3, [sp] + str r0, [sp, #4] + ldr r0, _02231784 ; =MOD11_0223220C + mov r1, #1 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_0201BD84 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02021A20 + b _02231778 +_022316F6: + cmp r7, #0x64 + bne _02231702 + lsl r0, r4, #1 + add r0, r4, r0 + add r4, r0, #1 + b _02231708 +_02231702: + lsl r0, r4, #1 + add r0, r4, r0 + add r4, r0, #2 +_02231708: + ldr r2, _02231788 ; =0x0000022B + mov r0, #0 + mov r1, #0x1a + mov r3, #5 + bl FUN_0200A86C + add r1, r4, #0 + add r7, r0, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + ldr r0, [sp, #0x28] + str r3, [sp] + str r0, [sp, #4] + ldr r0, _02231784 ; =MOD11_0223220C + mov r1, #1 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_0201BD84 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + b _02231778 +_0223174C: + ldr r2, [r5, #0x18] + add r0, r4, #0 + add r1, r7, #0 + mov r3, #5 + bl FUN_0206AD4C + add r0, r6, #0 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + ldr r0, [sp, #0x28] + str r3, [sp] + str r0, [sp, #4] + ldr r0, _02231784 ; =MOD11_0223220C + mov r1, #1 + str r0, [sp, #8] + ldr r2, [r5, #0x18] + add r0, r6, #0 + bl FUN_0201BD84 + add r5, r0, #0 +_02231778: + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231780: .word 0x00002710 +_02231784: .word MOD11_0223220C +_02231788: .word 0x0000022B + + thumb_func_start MOD11_0223178C +MOD11_0223178C: ; 0x0223178C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp, #0xc] + add r5, r0, #0 + add r4, r2, #0 + mov r1, #0 + add r6, r3, #0 + bl MOD11_0222FF6C + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02231850 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02231A4C + ldr r1, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + bl MOD11_022321EC + add r0, r7, #0 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + ldr r0, _022317DC ; =MOD11_0223220C + str r6, [sp, #4] + str r0, [sp, #8] + ldr r2, [r5, #0x18] + add r0, r7, #0 + mov r1, #1 + bl FUN_0201BD84 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022317DC: .word MOD11_0223220C + + thumb_func_start MOD11_022317E0 +MOD11_022317E0: ; 0x022317E0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r3, #0 + add r4, r1, #0 + add r5, r0, #0 + add r1, r7, #0 + add r6, r2, #0 + bl MOD11_02231850 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02231A4C + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_022321EC + ldr r1, [sp, #0x28] + mov r0, #1 + tst r0, r1 + beq _02231814 + add r0, r4, #0 + mov r1, #0xff + bl FUN_02019620 +_02231814: + ldr r1, [sp, #0x28] + mov r0, #2 + tst r0, r1 + beq _0223182C + mov r0, #0 + ldr r1, [r5, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + ldr r1, [sp, #0x2c] + sub r3, r1, r0 + b _0223182E +_0223182C: + mov r3, #0 +_0223182E: + ldr r0, [sp, #0x24] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x30] + str r0, [sp, #4] + ldr r0, _0223184C ; =MOD11_0223220C + str r0, [sp, #8] + add r0, r4, #0 + ldr r4, [sp, #0x20] + ldr r2, [r5, #0x18] + add r3, r4, r3 + bl FUN_0201BD84 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223184C: .word MOD11_0223220C + + thumb_func_start MOD11_02231850 +MOD11_02231850: ; 0x02231850 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + bl MOD11_0222FF74 + add r5, r0, #0 + ldrb r0, [r4, #1] + mov r1, #0x80 + tst r1, r0 + bne _02231876 + mov r1, #0x40 + tst r1, r0 + beq _02231880 + ldr r1, [r4, #0x20] + add r0, r6, #0 + bl MOD11_02230270 + cmp r0, #0 + bne _02231878 +_02231876: + b _02231A4A +_02231878: + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02231880: + mov r1, #0x3f + and r0, r1 + cmp r0, #0x3c + bls _0223188A + b _02231A46 +_0223188A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02231896: ; jump table + .short _02231A4A - _02231896 - 2 ; case 0 + .short _02231910 - _02231896 - 2 ; case 1 + .short _02231928 - _02231896 - 2 ; case 2 + .short _02231A4A - _02231896 - 2 ; case 3 + .short _02231A4A - _02231896 - 2 ; case 4 + .short _02231A4A - _02231896 - 2 ; case 5 + .short _02231A4A - _02231896 - 2 ; case 6 + .short _02231A4A - _02231896 - 2 ; case 7 + .short _02231A4A - _02231896 - 2 ; case 8 + .short _0223198A - _02231896 - 2 ; case 9 + .short _02231928 - _02231896 - 2 ; case 10 + .short _02231928 - _02231896 - 2 ; case 11 + .short _02231928 - _02231896 - 2 ; case 12 + .short _02231928 - _02231896 - 2 ; case 13 + .short _02231928 - _02231896 - 2 ; case 14 + .short _02231928 - _02231896 - 2 ; case 15 + .short _02231928 - _02231896 - 2 ; case 16 + .short _02231928 - _02231896 - 2 ; case 17 + .short _02231928 - _02231896 - 2 ; case 18 + .short _02231928 - _02231896 - 2 ; case 19 + .short _0223194E - _02231896 - 2 ; case 20 + .short _02231966 - _02231896 - 2 ; case 21 + .short _02231A4A - _02231896 - 2 ; case 22 + .short _02231966 - _02231896 - 2 ; case 23 + .short _02231A4A - _02231896 - 2 ; case 24 + .short _02231A4A - _02231896 - 2 ; case 25 + .short _02231A4A - _02231896 - 2 ; case 26 + .short _02231A4A - _02231896 - 2 ; case 27 + .short _02231A4A - _02231896 - 2 ; case 28 + .short _02231A4A - _02231896 - 2 ; case 29 + .short _02231A4A - _02231896 - 2 ; case 30 + .short _0223198A - _02231896 - 2 ; case 31 + .short _0223198A - _02231896 - 2 ; case 32 + .short _0223198A - _02231896 - 2 ; case 33 + .short _02231928 - _02231896 - 2 ; case 34 + .short _02231928 - _02231896 - 2 ; case 35 + .short _022319E8 - _02231896 - 2 ; case 36 + .short _02231928 - _02231896 - 2 ; case 37 + .short _02231928 - _02231896 - 2 ; case 38 + .short _02231928 - _02231896 - 2 ; case 39 + .short _02231928 - _02231896 - 2 ; case 40 + .short _02231928 - _02231896 - 2 ; case 41 + .short _02231928 - _02231896 - 2 ; case 42 + .short _022319E8 - _02231896 - 2 ; case 43 + .short _02231928 - _02231896 - 2 ; case 44 + .short _02231928 - _02231896 - 2 ; case 45 + .short _02231928 - _02231896 - 2 ; case 46 + .short _02231928 - _02231896 - 2 ; case 47 + .short _02231966 - _02231896 - 2 ; case 48 + .short _02231A4A - _02231896 - 2 ; case 49 + .short _02231A4A - _02231896 - 2 ; case 50 + .short _02231A4A - _02231896 - 2 ; case 51 + .short _022319E8 - _02231896 - 2 ; case 52 + .short _022319E8 - _02231896 - 2 ; case 53 + .short _022319E8 - _02231896 - 2 ; case 54 + .short _022319E8 - _02231896 - 2 ; case 55 + .short _02231A4A - _02231896 - 2 ; case 56 + .short _02231A4A - _02231896 - 2 ; case 57 + .short _02231A4A - _02231896 - 2 ; case 58 + .short _02231A4A - _02231896 - 2 ; case 59 + .short _02231A4A - _02231896 - 2 ; case 60 +_02231910: + ldr r1, [r4, #4] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231944 + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02231928: + ldr r1, [r4, #4] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231944 + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + mov r0, #1 + tst r0, r5 + bne _02231946 +_02231944: + b _02231A4A +_02231946: + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_0223194E: + ldr r1, [r4, #8] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02231966: + ldr r1, [r4, #8] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + mov r0, #1 + tst r0, r5 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_0223198A: + ldr r1, [r4, #4] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _022319C4 + ldrh r0, [r4, #2] + add r0, r0, #3 + strh r0, [r4, #2] + mov r0, #1 + tst r0, r5 + beq _022319AC + ldrh r0, [r4, #2] + add r0, r0, #2 + strh r0, [r4, #2] +_022319AC: + ldr r1, [r4, #8] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_022319C4: + ldr r1, [r4, #8] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + mov r0, #1 + tst r0, r5 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_022319E8: + ldr r1, [r4, #4] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A22 + ldrh r0, [r4, #2] + add r0, r0, #3 + strh r0, [r4, #2] + mov r0, #1 + tst r0, r5 + beq _02231A0A + ldrh r0, [r4, #2] + add r0, r0, #2 + strh r0, [r4, #2] +_02231A0A: + ldr r1, [r4, #0xc] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02231A22: + ldr r1, [r4, #0xc] + add r0, r6, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02230270 + cmp r0, #0 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + mov r0, #1 + tst r0, r5 + beq _02231A4A + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02231A46: + bl ErrorHandling +_02231A4A: + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02231A4C +MOD11_02231A4C: ; 0x02231A4C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r2, [r4, #1] + mov r1, #0x3f + add r5, r0, #0 + and r1, r2 + cmp r1, #0x3c + bls _02231A5E + b _022320C2 +_02231A5E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02231A6A: ; jump table + .short _022320C6 - _02231A6A - 2 ; case 0 + .short _022320C6 - _02231A6A - 2 ; case 1 + .short _02231AE4 - _02231A6A - 2 ; case 2 + .short _02231AEE - _02231A6A - 2 ; case 3 + .short _02231AF8 - _02231A6A - 2 ; case 4 + .short _02231B02 - _02231A6A - 2 ; case 5 + .short _02231B0C - _02231A6A - 2 ; case 6 + .short _02231B16 - _02231A6A - 2 ; case 7 + .short _02231B22 - _02231A6A - 2 ; case 8 + .short _02231B2C - _02231A6A - 2 ; case 9 + .short _02231B40 - _02231A6A - 2 ; case 10 + .short _02231B54 - _02231A6A - 2 ; case 11 + .short _02231B68 - _02231A6A - 2 ; case 12 + .short _02231B7C - _02231A6A - 2 ; case 13 + .short _02231B90 - _02231A6A - 2 ; case 14 + .short _02231BA4 - _02231A6A - 2 ; case 15 + .short _02231BB8 - _02231A6A - 2 ; case 16 + .short _02231BCC - _02231A6A - 2 ; case 17 + .short _02231BE0 - _02231A6A - 2 ; case 18 + .short _02231BF4 - _02231A6A - 2 ; case 19 + .short _02231AEE - _02231A6A - 2 ; case 20 + .short _02231C08 - _02231A6A - 2 ; case 21 + .short _02231C1C - _02231A6A - 2 ; case 22 + .short _02231C30 - _02231A6A - 2 ; case 23 + .short _02231C44 - _02231A6A - 2 ; case 24 + .short _02231C58 - _02231A6A - 2 ; case 25 + .short _02231C6C - _02231A6A - 2 ; case 26 + .short _02231C80 - _02231A6A - 2 ; case 27 + .short _02231C94 - _02231A6A - 2 ; case 28 + .short _02231CA8 - _02231A6A - 2 ; case 29 + .short _02231CBC - _02231A6A - 2 ; case 30 + .short _02231CD0 - _02231A6A - 2 ; case 31 + .short _02231CEE - _02231A6A - 2 ; case 32 + .short _02231D0C - _02231A6A - 2 ; case 33 + .short _02231D2A - _02231A6A - 2 ; case 34 + .short _02231D48 - _02231A6A - 2 ; case 35 + .short _02231D66 - _02231A6A - 2 ; case 36 + .short _02231D84 - _02231A6A - 2 ; case 37 + .short _02231DA2 - _02231A6A - 2 ; case 38 + .short _02231DC0 - _02231A6A - 2 ; case 39 + .short _02231DDE - _02231A6A - 2 ; case 40 + .short _02231DFC - _02231A6A - 2 ; case 41 + .short _02231E1A - _02231A6A - 2 ; case 42 + .short _02231E38 - _02231A6A - 2 ; case 43 + .short _02231E56 - _02231A6A - 2 ; case 44 + .short _02231E74 - _02231A6A - 2 ; case 45 + .short _02231E92 - _02231A6A - 2 ; case 46 + .short _02231EB0 - _02231A6A - 2 ; case 47 + .short _02231ECE - _02231A6A - 2 ; case 48 + .short _02231EEC - _02231A6A - 2 ; case 49 + .short _02231F0A - _02231A6A - 2 ; case 50 + .short _02231F28 - _02231A6A - 2 ; case 51 + .short _02231F46 - _02231A6A - 2 ; case 52 + .short _02231F6E - _02231A6A - 2 ; case 53 + .short _02231F96 - _02231A6A - 2 ; case 54 + .short _02231FBE - _02231A6A - 2 ; case 55 + .short _02231FE6 - _02231A6A - 2 ; case 56 + .short _0223200E - _02231A6A - 2 ; case 57 + .short _02232036 - _02231A6A - 2 ; case 58 + .short _0223205E - _02231A6A - 2 ; case 59 + .short _02232086 - _02231A6A - 2 ; case 60 +_02231AE4: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231AEE: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231AF8: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_02232160 + pop {r3, r4, r5, pc} +_02231B02: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231B0C: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_02232104 + pop {r3, r4, r5, pc} +_02231B16: + ldr r2, [r4, #4] + ldr r3, [r4, #0x1c] + mov r1, #0 + bl MOD11_0223211C + pop {r3, r4, r5, pc} +_02231B22: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + pop {r3, r4, r5, pc} +_02231B2C: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231B40: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231B54: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + pop {r3, r4, r5, pc} +_02231B68: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232160 + pop {r3, r4, r5, pc} +_02231B7C: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232148 + pop {r3, r4, r5, pc} +_02231B90: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232178 + pop {r3, r4, r5, pc} +_02231BA4: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231BB8: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223219C + pop {r3, r4, r5, pc} +_02231BCC: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232104 + pop {r3, r4, r5, pc} +_02231BE0: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + pop {r3, r4, r5, pc} +_02231BF4: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321DC + pop {r3, r4, r5, pc} +_02231C08: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320EC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231C1C: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320EC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231C30: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_02232154 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231C44: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320F8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231C58: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_02232104 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232104 + pop {r3, r4, r5, pc} +_02231C6C: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + pop {r3, r4, r5, pc} +_02231C80: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231C94: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231CA8: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232104 + pop {r3, r4, r5, pc} +_02231CBC: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + pop {r3, r4, r5, pc} +_02231CD0: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231CEE: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_02232154 + pop {r3, r4, r5, pc} +_02231D0C: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231D2A: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320EC + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231D48: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320EC + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_02232104 + pop {r3, r4, r5, pc} +_02231D66: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231D84: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231DA2: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231DC0: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_02232160 + pop {r3, r4, r5, pc} +_02231DDE: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_02232148 + pop {r3, r4, r5, pc} +_02231DFC: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_0223216C + pop {r3, r4, r5, pc} +_02231E1A: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_02232104 + pop {r3, r4, r5, pc} +_02231E38: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231E56: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231E74: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_02232160 + pop {r3, r4, r5, pc} +_02231E92: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_0223216C + pop {r3, r4, r5, pc} +_02231EB0: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321DC + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022321DC + pop {r3, r4, r5, pc} +_02231ECE: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320F8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022321A0 + pop {r3, r4, r5, pc} +_02231EEC: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231F0A: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02231F28: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231F46: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022320EC + pop {r3, r4, r5, pc} +_02231F6E: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_02232154 + pop {r3, r4, r5, pc} +_02231F96: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02232154 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_02232160 + pop {r3, r4, r5, pc} +_02231FBE: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022320C8 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320F8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022320F8 + pop {r3, r4, r5, pc} +_02231FE6: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321C4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022320C8 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022321C4 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_0223200E: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_02232036: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022321C4 + pop {r3, r4, r5, pc} +_0223205E: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022321AC + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022321C4 + pop {r3, r4, r5, pc} +_02232086: + ldr r2, [r4, #4] + mov r1, #0 + bl MOD11_022321AC + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022321C4 + ldr r2, [r4, #0xc] + add r0, r5, #0 + mov r1, #2 + bl MOD11_022320C8 + ldr r2, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl MOD11_022321AC + ldr r2, [r4, #0x14] + add r0, r5, #0 + mov r1, #4 + bl MOD11_022321C4 + ldr r2, [r4, #0x18] + add r0, r5, #0 + mov r1, #5 + bl MOD11_022320C8 + pop {r3, r4, r5, pc} +_022320C2: + bl ErrorHandling +_022320C6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022320C8 +MOD11_022320C8: ; 0x022320C8 + push {r3, r4, r5, lr} + mov r3, #0xff + lsl r3, r3, #8 + add r4, r1, #0 + lsl r1, r2, #0x18 + and r2, r3 + add r5, r0, #0 + lsr r1, r1, #0x18 + asr r2, r2, #8 + bl MOD11_02230014 + add r2, r0, #0 + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_0200ACF8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022320EC +MOD11_022320EC: ; 0x022320EC + ldr r3, _022320F4 ; =0x0200AD5D + ldr r0, [r0, #0x14] + bx r3 + nop +_022320F4: .word 0x0200AD5D + + thumb_func_start MOD11_022320F8 +MOD11_022320F8: ; 0x022320F8 + ldr r3, _02232100 ; =0x0200AE39 + ldr r0, [r0, #0x14] + bx r3 + nop +_02232100: .word 0x0200AE39 + + thumb_func_start MOD11_02232104 +MOD11_02232104: ; 0x02232104 + push {r3, lr} + sub sp, #8 + mov r3, #0 + str r3, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r0, [r0, #0x14] + mov r3, #5 + bl FUN_0200AD38 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD11_0223211C +MOD11_0223211C: ; 0x0223211C + push {r4, lr} + sub sp, #8 + cmp r3, #0 + beq _02232134 + mov r4, #1 + str r4, [sp] + str r4, [sp, #4] + ldr r0, [r0, #0x14] + bl FUN_0200AD38 + add sp, #8 + pop {r4, pc} +_02232134: + mov r3, #1 + str r3, [sp] + str r3, [sp, #4] + ldr r0, [r0, #0x14] + mov r3, #5 + bl FUN_0200AD38 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02232148 +MOD11_02232148: ; 0x02232148 + ldr r3, _02232150 ; =0x0200AF19 + ldr r0, [r0, #0x14] + bx r3 + nop +_02232150: .word 0x0200AF19 + + thumb_func_start MOD11_02232154 +MOD11_02232154: ; 0x02232154 + ldr r3, _0223215C ; =0x0200ADCD + ldr r0, [r0, #0x14] + bx r3 + nop +_0223215C: .word 0x0200ADCD + + thumb_func_start MOD11_02232160 +MOD11_02232160: ; 0x02232160 + ldr r3, _02232168 ; =0x0200AF51 + ldr r0, [r0, #0x14] + bx r3 + nop +_02232168: .word 0x0200AF51 + + thumb_func_start MOD11_0223216C +MOD11_0223216C: ; 0x0223216C + ldr r3, _02232174 ; =0x0200AF89 + ldr r0, [r0, #0x14] + bx r3 + nop +_02232174: .word 0x0200AF89 + + thumb_func_start MOD11_02232178 +MOD11_02232178: ; 0x02232178 + push {r3, r4, r5, lr} + mov r3, #0xff + lsl r3, r3, #8 + add r4, r1, #0 + lsl r1, r2, #0x18 + and r2, r3 + add r5, r0, #0 + lsr r1, r1, #0x18 + asr r2, r2, #8 + bl MOD11_02230014 + add r2, r0, #0 + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_0200AC60 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223219C +MOD11_0223219C: ; 0x0223219C + bx lr + .align 2, 0 + + thumb_func_start MOD11_022321A0 +MOD11_022321A0: ; 0x022321A0 + ldr r3, _022321A8 ; =0x0200AFBD + ldr r0, [r0, #0x14] + bx r3 + nop +_022321A8: .word 0x0200AFBD + + thumb_func_start MOD11_022321AC +MOD11_022321AC: ; 0x022321AC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r1, r2, #0 + bl MOD11_02230188 + add r2, r0, #0 + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_0200B0D4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022321C4 +MOD11_022321C4: ; 0x022321C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r1, r2, #0 + bl MOD11_02230188 + add r2, r0, #0 + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_0200B144 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022321DC +MOD11_022321DC: ; 0x022321DC + push {r4, lr} + add r4, r0, #0 + add r3, r2, #0 + ldr r0, [r4, #0x14] + ldr r2, [r4, #0x64] + bl FUN_0200B410 + pop {r4, pc} + + thumb_func_start MOD11_022321EC +MOD11_022321EC: ; 0x022321EC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + ldrh r1, [r2, #2] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0223220C +MOD11_0223220C: ; 0x0223220C + push {r4, lr} + mov r4, #0 + cmp r1, #5 + bhi _02232252 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232220: ; jump table + .short _02232252 - _02232220 - 2 ; case 0 + .short _0223222C - _02232220 - 2 ; case 1 + .short _02232234 - _02232220 - 2 ; case 2 + .short _0223223C - _02232220 - 2 ; case 3 + .short _02232244 - _02232220 - 2 ; case 4 + .short _0223224C - _02232220 - 2 ; case 5 +_0223222C: + bl FUN_02005514 + add r4, r0, #0 + b _02232252 +_02232234: + bl FUN_02005CBC + add r4, r0, #0 + b _02232252 +_0223223C: + ldr r0, _02232258 ; =0x00000484 + bl FUN_02005C28 + b _02232252 +_02232244: + ldr r0, _0223225C ; =0x000005E6 + bl FUN_020054C8 + b _02232252 +_0223224C: + ldr r0, _02232260 ; =0x00000483 + bl FUN_02005C28 +_02232252: + add r0, r4, #0 + pop {r4, pc} + nop +_02232258: .word 0x00000484 +_0223225C: .word 0x000005E6 +_02232260: .word 0x00000483 + + thumb_func_start MOD11_02232264 +MOD11_02232264: ; 0x02232264 + push {r3, lr} + add r2, r1, #0 + add r2, #0xb4 + ldr r2, [r2] + lsl r2, r2, #2 + add r3, r1, r2 + mov r2, #0x27 + lsl r2, r2, #8 + ldr r2, [r3, r2] + lsl r3, r2, #2 + ldr r2, _02232280 ; =0x0225DDE4 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + .align 2, 0 +_02232280: .word 0x0225DDE4 + + thumb_func_start MOD11_02232284 +MOD11_02232284: ; 0x02232284 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + mov r1, #0 + bl MOD11_022548F0 + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD11_0223229C +MOD11_0223229C: ; 0x0223229C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + cmp r0, #0 + beq _022322C2 + cmp r0, #3 + beq _0223230E + cmp r0, #4 + beq _022322E0 +_022322C2: + mov r5, #0 + cmp r6, #0 + ble _0223230E +_022322C8: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254908 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 + add r5, r5, #1 + cmp r5, r6 + blt _022322C8 + b _0223230E +_022322E0: + mov r5, #0 + cmp r6, #0 + ble _0223230E + mov r7, #1 +_022322E8: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02232314 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _02232308 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254908 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 +_02232308: + add r5, r5, #1 + cmp r5, r6 + blt _022322E8 +_0223230E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232314: .word 0x00000195 + + thumb_func_start MOD11_02232318 +MOD11_02232318: ; 0x02232318 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + cmp r0, #6 + bhi _02232350 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232342: ; jump table + .short _02232350 - _02232342 - 2 ; case 0 + .short _022323F4 - _02232342 - 2 ; case 1 + .short _0223243E - _02232342 - 2 ; case 2 + .short _0223236E - _02232342 - 2 ; case 3 + .short _022323B2 - _02232342 - 2 ; case 4 + .short _02232350 - _02232342 - 2 ; case 5 + .short _02232488 - _02232342 - 2 ; case 6 +_02232350: + mov r5, #0 + cmp r7, #0 + ble _0223236C +_02232356: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254A0C + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 + add r5, r5, #1 + cmp r5, r7 + blt _02232356 +_0223236C: + b _022324D0 +_0223236E: + mov r5, #0 + cmp r7, #0 + ble _0223239C +_02232374: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022324D4 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232396 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254A0C + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 +_02232396: + add r5, r5, #1 + cmp r5, r7 + blt _02232374 +_0223239C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _022324D0 +_022323B2: + mov r5, #0 + cmp r7, #0 + ble _022323F2 +_022323B8: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022324D4 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _022323EC + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022448BC + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254A0C + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 +_022323EC: + add r5, r5, #1 + cmp r5, r7 + blt _022323B8 +_022323F2: + b _022324D0 +_022323F4: + ldr r1, [r6, #0x64] + add r0, r4, #0 + bl MOD11_0222FF7C + ldr r1, _022324D4 ; =0x00000195 + mov r2, #1 + ldrb r0, [r0, r1] + tst r0, r2 + bne _0223241A + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _0223242C +_0223241A: + ldr r1, [r6, #0x64] + add r0, r6, #0 + bl MOD11_022448BC + ldr r2, [r6, #0x64] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC +_0223242C: + ldr r1, [r6, #0x64] + add r0, r4, #0 + bl MOD11_022315C0 + ldr r1, [r6, #0x64] + add r0, r4, #0 + bl MOD11_02254A0C + b _022324D0 +_0223243E: + ldr r1, [r6, #0x6c] + add r0, r4, #0 + bl MOD11_0222FF7C + ldr r1, _022324D4 ; =0x00000195 + mov r2, #1 + ldrb r0, [r0, r1] + tst r0, r2 + bne _02232464 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _02232476 +_02232464: + ldr r1, [r6, #0x6c] + add r0, r6, #0 + bl MOD11_022448BC + ldr r2, [r6, #0x6c] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC +_02232476: + ldr r1, [r6, #0x6c] + add r0, r4, #0 + bl MOD11_022315C0 + ldr r1, [r6, #0x6c] + add r0, r4, #0 + bl MOD11_02254A0C + b _022324D0 +_02232488: + ldr r1, [r6, #0x78] + add r0, r4, #0 + bl MOD11_0222FF7C + ldr r1, _022324D4 ; =0x00000195 + mov r2, #1 + ldrb r0, [r0, r1] + tst r0, r2 + bne _022324AE + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _022324C0 +_022324AE: + ldr r1, [r6, #0x78] + add r0, r6, #0 + bl MOD11_022448BC + ldr r2, [r6, #0x78] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC +_022324C0: + ldr r1, [r6, #0x78] + add r0, r4, #0 + bl MOD11_022315C0 + ldr r1, [r6, #0x78] + add r0, r4, #0 + bl MOD11_02254A0C +_022324D0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022324D4: .word 0x00000195 + + thumb_func_start MOD11_022324D8 +MOD11_022324D8: ; 0x022324D8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + cmp r0, #6 + bhi _02232510 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232502: ; jump table + .short _02232510 - _02232502 - 2 ; case 0 + .short _022325C2 - _02232502 - 2 ; case 1 + .short _02232610 - _02232502 - 2 ; case 2 + .short _02232534 - _02232502 - 2 ; case 3 + .short _0223257C - _02232502 - 2 ; case 4 + .short _02232510 - _02232502 - 2 ; case 5 + .short _0223265E - _02232502 - 2 ; case 6 +_02232510: + mov r5, #0 + cmp r7, #0 + ble _02232532 + add r6, r5, #0 +_02232518: + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + add r3, r6, #0 + bl MOD11_02254B40 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 + add r5, r5, #1 + cmp r5, r7 + blt _02232518 +_02232532: + b _022326AA +_02232534: + mov r5, #0 + cmp r7, #0 + ble _02232566 +_0223253A: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022326B0 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232560 + mov r2, #0 + add r0, r4, #0 + add r1, r5, #0 + add r3, r2, #0 + bl MOD11_02254B40 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 +_02232560: + add r5, r5, #1 + cmp r5, r7 + blt _0223253A +_02232566: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _022326AA +_0223257C: + mov r5, #0 + cmp r7, #0 + ble _022325C0 +_02232582: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022326B0 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _022325BA + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022448BC + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD11_022448CC + mov r2, #0 + add r0, r4, #0 + add r1, r5, #0 + add r3, r2, #0 + bl MOD11_02254B40 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022315C0 +_022325BA: + add r5, r5, #1 + cmp r5, r7 + blt _02232582 +_022325C0: + b _022326AA +_022325C2: + ldr r1, [r6, #0x64] + add r0, r4, #0 + bl MOD11_0222FF7C + ldr r1, _022326B0 ; =0x00000195 + mov r2, #1 + ldrb r0, [r0, r1] + tst r0, r2 + bne _022325E8 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _022325FA +_022325E8: + ldr r1, [r6, #0x64] + add r0, r6, #0 + bl MOD11_022448BC + ldr r2, [r6, #0x64] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC +_022325FA: + ldr r1, [r6, #0x64] + add r0, r4, #0 + bl MOD11_022315C0 + mov r2, #0 + ldr r1, [r6, #0x64] + add r0, r4, #0 + add r3, r2, #0 + bl MOD11_02254B40 + b _022326AA +_02232610: + ldr r1, [r6, #0x6c] + add r0, r4, #0 + bl MOD11_0222FF7C + ldr r1, _022326B0 ; =0x00000195 + mov r2, #1 + ldrb r0, [r0, r1] + tst r0, r2 + bne _02232636 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _02232648 +_02232636: + ldr r1, [r6, #0x6c] + add r0, r6, #0 + bl MOD11_022448BC + ldr r2, [r6, #0x6c] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC +_02232648: + ldr r1, [r6, #0x6c] + add r0, r4, #0 + bl MOD11_022315C0 + mov r2, #0 + ldr r1, [r6, #0x6c] + add r0, r4, #0 + add r3, r2, #0 + bl MOD11_02254B40 + b _022326AA +_0223265E: + ldr r1, [r6, #0x78] + add r0, r4, #0 + bl MOD11_0222FF7C + ldr r1, _022326B0 ; =0x00000195 + mov r2, #1 + ldrb r0, [r0, r1] + tst r0, r2 + bne _02232684 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC + add r0, r4, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_022448CC + b _02232696 +_02232684: + ldr r1, [r6, #0x78] + add r0, r6, #0 + bl MOD11_022448BC + ldr r2, [r6, #0x78] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_022448CC +_02232696: + ldr r1, [r6, #0x78] + add r0, r4, #0 + bl MOD11_022315C0 + mov r2, #0 + ldr r1, [r6, #0x78] + add r0, r4, #0 + add r3, r2, #0 + bl MOD11_02254B40 +_022326AA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022326B0: .word 0x00000195 + + thumb_func_start MOD11_022326B4 +MOD11_022326B4: ; 0x022326B4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + add r2, r0, #0 + beq _022326DC + cmp r2, #3 + beq _022326F4 + cmp r2, #4 + beq _0223271E + b _02232756 +_022326DC: + mov r4, #0 + cmp r7, #0 + ble _02232768 +_022326E2: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02254D50 + add r4, r4, #1 + cmp r4, r7 + blt _022326E2 + b _02232768 +_022326F4: + mov r4, #0 + cmp r7, #0 + ble _02232768 +_022326FA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0222FF7C + ldr r1, _0223276C ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232716 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02254D50 +_02232716: + add r4, r4, #1 + cmp r4, r7 + blt _022326FA + b _02232768 +_0223271E: + mov r4, #0 + cmp r7, #0 + ble _02232768 +_02232724: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0222FF7C + ldr r1, _0223276C ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _0223274E + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, _02232770 ; =0x00003108 + ldrb r1, [r6, r1] + tst r0, r1 + bne _0223274E + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02254D50 +_0223274E: + add r4, r4, #1 + cmp r4, r7 + blt _02232724 + b _02232768 +_02232756: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02254D50 +_02232768: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223276C: .word 0x00000195 +_02232770: .word 0x00003108 + + thumb_func_start MOD11_02232774 +MOD11_02232774: ; 0x02232774 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_02254F60 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022327A0 +MOD11_022327A0: ; 0x022327A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + cmp r0, #0 + beq _022327C6 + cmp r0, #3 + beq _0223282A + cmp r0, #4 + beq _0223286A +_022327C6: + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #0x10 + tst r0, r1 + beq _022327F8 + mov r5, #0 + cmp r6, #0 + ble _022328B4 + ldr r7, _022328B8 ; =0x00000195 +_022327DA: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #4 + beq _022327F0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254F7C +_022327F0: + add r5, r5, #1 + cmp r5, r6 + blt _022327DA + b _022328B4 +_022327F8: + mov r5, #0 + cmp r6, #0 + ble _022328B4 + mov r7, #8 +_02232800: + add r0, r4, #0 + bl MOD11_0222FF74 + tst r0, r7 + bne _0223281A + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _0223281A + cmp r5, #1 + bgt _022328B4 +_0223281A: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254F7C + add r5, r5, #1 + cmp r5, r6 + blt _02232800 + b _022328B4 +_0223282A: + mov r5, #0 + cmp r6, #0 + ble _022328B4 + mov r7, #1 +_02232832: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022328B8 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + bne _02232862 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254F7C + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _02232862 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _022328B4 +_02232862: + add r5, r5, #1 + cmp r5, r6 + blt _02232832 + b _022328B4 +_0223286A: + mov r5, #0 + cmp r6, #0 + ble _022328B4 + mov r7, #1 +_02232872: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022328B8 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _022328AE + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02254F7C + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _022328AE + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _022328AE + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _022328B4 +_022328AE: + add r5, r5, #1 + cmp r5, r6 + blt _02232872 +_022328B4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022328B8: .word 0x00000195 + + thumb_func_start MOD11_022328BC +MOD11_022328BC: ; 0x022328BC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r7, #0 + bl MOD11_0223A404 + add r5, r0, #0 + add r0, r7, #0 + bl MOD11_0223A404 + add r7, r0, #0 + cmp r5, #0 + beq _022328EC + cmp r5, #3 + beq _02232920 + cmp r5, #4 + beq _02232962 +_022328EC: + mov r5, #0 + cmp r6, #0 + ble _022329AE +_022328F2: + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _0223290E + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _0223290E + cmp r5, #1 + bgt _022329AE +_0223290E: + add r0, r4, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02254FAC + add r5, r5, #1 + cmp r5, r6 + blt _022328F2 + b _022329AE +_02232920: + mov r5, #0 + cmp r6, #0 + ble _022329AE +_02232926: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022329B4 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _0223295A + add r0, r4, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02254FAC + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _0223295A + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _022329AE +_0223295A: + add r5, r5, #1 + cmp r5, r6 + blt _02232926 + b _022329AE +_02232962: + mov r5, #0 + cmp r6, #0 + ble _022329AE +_02232968: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _022329B4 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _022329A8 + add r0, r4, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02254FAC + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _022329A8 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _022329A8 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _022329AE +_022329A8: + add r5, r5, #1 + cmp r5, r6 + blt _02232968 +_022329AE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022329B4: .word 0x00000195 + + thumb_func_start MOD11_022329B8 +MOD11_022329B8: ; 0x022329B8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + cmp r0, #0xc + bhi _022329FC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022329E2: ; jump table + .short _022329FC - _022329E2 - 2 ; case 0 + .short _022329FC - _022329E2 - 2 ; case 1 + .short _022329FC - _022329E2 - 2 ; case 2 + .short _02232A2E - _022329E2 - 2 ; case 3 + .short _02232A6E - _022329E2 - 2 ; case 4 + .short _022329FC - _022329E2 - 2 ; case 5 + .short _022329FC - _022329E2 - 2 ; case 6 + .short _022329FC - _022329E2 - 2 ; case 7 + .short _022329FC - _022329E2 - 2 ; case 8 + .short _02232ABA - _022329E2 - 2 ; case 9 + .short _02232AE6 - _022329E2 - 2 ; case 10 + .short _02232B12 - _022329E2 - 2 ; case 11 + .short _02232B3A - _022329E2 - 2 ; case 12 +_022329FC: + mov r6, #0 + cmp r5, #0 + ble _02232A2C + mov r7, #8 +_02232A04: + add r0, r4, #0 + bl MOD11_0222FF74 + tst r0, r7 + bne _02232A1E + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02232A1E + cmp r6, #1 + bgt _02232A2C +_02232A1E: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + add r6, r6, #1 + cmp r6, r5 + blt _02232A04 +_02232A2C: + b _02232B60 +_02232A2E: + mov r6, #0 + cmp r5, #0 + ble _02232A6C + mov r7, #1 +_02232A36: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232B64 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + bne _02232A66 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _02232A66 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02232B60 +_02232A66: + add r6, r6, #1 + cmp r6, r5 + blt _02232A36 +_02232A6C: + b _02232B60 +_02232A6E: + mov r6, #0 + cmp r5, #0 + ble _02232B60 + mov r7, #1 +_02232A76: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232B64 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _02232AB2 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _02232AB2 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _02232AB2 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02232B60 +_02232AB2: + add r6, r6, #1 + cmp r6, r5 + blt _02232A76 + b _02232B60 +_02232ABA: + mov r6, #0 + cmp r5, #0 + ble _02232B60 + ldr r7, _02232B64 ; =0x00000195 +_02232AC2: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #0 + beq _02232AD4 + cmp r0, #2 + bne _02232ADE +_02232AD4: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + b _02232B60 +_02232ADE: + add r6, r6, #1 + cmp r6, r5 + blt _02232AC2 + b _02232B60 +_02232AE6: + mov r6, #0 + cmp r5, #0 + ble _02232B60 + ldr r7, _02232B64 ; =0x00000195 +_02232AEE: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #1 + beq _02232B00 + cmp r0, #3 + bne _02232B0A +_02232B00: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + b _02232B60 +_02232B0A: + add r6, r6, #1 + cmp r6, r5 + blt _02232AEE + b _02232B60 +_02232B12: + mov r6, #0 + cmp r5, #0 + ble _02232B60 + ldr r7, _02232B64 ; =0x00000195 +_02232B1A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #4 + bne _02232B32 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + b _02232B60 +_02232B32: + add r6, r6, #1 + cmp r6, r5 + blt _02232B1A + b _02232B60 +_02232B3A: + mov r6, #0 + cmp r5, #0 + ble _02232B60 + ldr r7, _02232B64 ; =0x00000195 +_02232B42: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #5 + bne _02232B5A + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02254FE4 + b _02232B60 +_02232B5A: + add r6, r6, #1 + cmp r6, r5 + blt _02232B42 +_02232B60: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232B64: .word 0x00000195 + + thumb_func_start MOD11_02232B68 +MOD11_02232B68: ; 0x02232B68 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r5, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r7, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r7, #0 + bl MOD11_0223A404 + add r7, r0, #0 + cmp r6, #0xc + bhi _02232BB6 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232B9C: ; jump table + .short _02232BB6 - _02232B9C - 2 ; case 0 + .short _02232BB6 - _02232B9C - 2 ; case 1 + .short _02232BB6 - _02232B9C - 2 ; case 2 + .short _02232BDE - _02232B9C - 2 ; case 3 + .short _02232C14 - _02232B9C - 2 ; case 4 + .short _02232BB6 - _02232B9C - 2 ; case 5 + .short _02232BB6 - _02232B9C - 2 ; case 6 + .short _02232BB6 - _02232B9C - 2 ; case 7 + .short _02232BB6 - _02232B9C - 2 ; case 8 + .short _02232C4A - _02232B9C - 2 ; case 9 + .short _02232C78 - _02232B9C - 2 ; case 10 + .short _02232CA6 - _02232B9C - 2 ; case 11 + .short _02232CD0 - _02232B9C - 2 ; case 12 +_02232BB6: + mov r6, #0 + cmp r5, #0 + ble _02232BDC +_02232BBC: + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02232BCC + cmp r6, #1 + bgt _02232BDC +_02232BCC: + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + add r6, r6, #1 + cmp r6, r5 + blt _02232BBC +_02232BDC: + b _02232CF8 +_02232BDE: + mov r6, #0 + cmp r5, #0 + ble _02232C12 +_02232BE4: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232CFC ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232C0C + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02232CF8 +_02232C0C: + add r6, r6, #1 + cmp r6, r5 + blt _02232BE4 +_02232C12: + b _02232CF8 +_02232C14: + mov r6, #0 + cmp r5, #0 + ble _02232CF8 +_02232C1A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232CFC ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _02232C42 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02232CF8 +_02232C42: + add r6, r6, #1 + cmp r6, r5 + blt _02232C1A + b _02232CF8 +_02232C4A: + mov r6, #0 + cmp r5, #0 + ble _02232CF8 +_02232C50: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232CFC ; =0x00000195 + ldrb r0, [r0, r1] + cmp r0, #0 + beq _02232C64 + cmp r0, #2 + bne _02232C70 +_02232C64: + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + b _02232CF8 +_02232C70: + add r6, r6, #1 + cmp r6, r5 + blt _02232C50 + b _02232CF8 +_02232C78: + mov r6, #0 + cmp r5, #0 + ble _02232CF8 +_02232C7E: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232CFC ; =0x00000195 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02232C92 + cmp r0, #3 + bne _02232C9E +_02232C92: + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + b _02232CF8 +_02232C9E: + add r6, r6, #1 + cmp r6, r5 + blt _02232C7E + b _02232CF8 +_02232CA6: + mov r6, #0 + cmp r5, #0 + ble _02232CF8 +_02232CAC: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232CFC ; =0x00000195 + ldrb r0, [r0, r1] + cmp r0, #4 + bne _02232CC8 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + b _02232CF8 +_02232CC8: + add r6, r6, #1 + cmp r6, r5 + blt _02232CAC + b _02232CF8 +_02232CD0: + mov r6, #0 + cmp r5, #0 + ble _02232CF8 +_02232CD6: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232CFC ; =0x00000195 + ldrb r0, [r0, r1] + cmp r0, #5 + bne _02232CF2 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02255000 + b _02232CF8 +_02232CF2: + add r6, r6, #1 + cmp r6, r5 + blt _02232CD6 +_02232CF8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232CFC: .word 0x00000195 + + thumb_func_start MOD11_02232D00 +MOD11_02232D00: ; 0x02232D00 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + bl MOD11_0222FF84 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r4, #0 + cmp r5, #0 + ble _02232D28 +_02232D1A: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0225624C + add r4, r4, #1 + cmp r4, r5 + blt _02232D1A +_02232D28: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02232D2C +MOD11_02232D2C: ; 0x02232D2C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r7, #0 + bl MOD11_0223A404 + add r2, r0, #0 + beq _02232D54 + cmp r2, #3 + beq _02232D6E + cmp r2, #4 + beq _02232D9A + b _02232DC6 +_02232D54: + mov r5, #0 + cmp r6, #0 + ble _02232DDA +_02232D5A: + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + mov r3, #0 + bl MOD11_02255034 + add r5, r5, #1 + cmp r5, r6 + blt _02232D5A + b _02232DDA +_02232D6E: + mov r5, #0 + cmp r6, #0 + ble _02232DDA +_02232D74: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02232DE0 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232D92 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + mov r3, #0 + bl MOD11_02255034 +_02232D92: + add r5, r5, #1 + cmp r5, r6 + blt _02232D74 + b _02232DDA +_02232D9A: + mov r5, #0 + cmp r6, #0 + ble _02232DDA +_02232DA0: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02232DE0 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _02232DBE + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + mov r3, #0 + bl MOD11_02255034 +_02232DBE: + add r5, r5, #1 + cmp r5, r6 + blt _02232DA0 + b _02232DDA +_02232DC6: + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + mov r3, #0 + bl MOD11_02255034 +_02232DDA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232DE0: .word 0x00000195 + + thumb_func_start MOD11_02232DE4 +MOD11_02232DE4: ; 0x02232DE4 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + add r5, r0, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + ldr r0, [sp] + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [sp] + bl MOD11_0223A404 + add r2, r0, #0 + ldr r4, _02232EA4 ; =0x00000000 + beq _02232E0E + cmp r2, #3 + beq _02232E28 + cmp r2, #4 + beq _02232E5A + b _02232E8C +_02232E0E: + cmp r7, #0 + ble _02232EA0 + add r6, r4, #0 +_02232E14: + ldr r1, [sp] + add r0, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD11_02255034 + add r4, r4, #1 + cmp r4, r7 + blt _02232E14 + b _02232EA0 +_02232E28: + add r6, r4, #0 + cmp r7, #0 + ble _02232EA0 +_02232E2E: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232EA8 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232E52 + ldr r1, [sp] + add r0, r5, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD11_02255034 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02232E52: + add r6, r6, #1 + cmp r6, r7 + blt _02232E2E + b _02232EA0 +_02232E5A: + add r6, r4, #0 + cmp r7, #0 + ble _02232EA0 +_02232E60: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + ldr r1, _02232EA8 ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + beq _02232E84 + ldr r1, [sp] + add r0, r5, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD11_02255034 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02232E84: + add r6, r6, #1 + cmp r6, r7 + blt _02232E60 + b _02232EA0 +_02232E8C: + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223C230 + add r2, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + add r3, r4, #0 + bl MOD11_02255034 +_02232EA0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232EA4: .word 0x00000000 +_02232EA8: .word 0x00000195 + + thumb_func_start MOD11_02232EAC +MOD11_02232EAC: ; 0x02232EAC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r7, #0 + bl MOD11_0223A404 + add r2, r0, #0 + beq _02232ED4 + cmp r2, #3 + beq _02232EEA + cmp r2, #4 + beq _02232F20 + b _02232F48 +_02232ED4: + mov r5, #0 + cmp r6, #0 + ble _02232F58 +_02232EDA: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0225516C + add r5, r5, #1 + cmp r5, r6 + blt _02232EDA + b _02232F58 +_02232EEA: + mov r5, #0 + cmp r6, #0 + ble _02232F58 +_02232EF0: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02232F5C ; =0x00000195 + ldrb r1, [r0, r1] + mov r0, #1 + tst r0, r1 + bne _02232F18 + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, _02232F60 ; =0x00003108 + ldrb r1, [r7, r1] + tst r0, r1 + bne _02232F18 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0225516C +_02232F18: + add r5, r5, #1 + cmp r5, r6 + blt _02232EF0 + b _02232F58 +_02232F20: + mov r5, #0 + cmp r6, #0 + ble _02232F58 + mov r7, #1 +_02232F28: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02232F5C ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _02232F40 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0225516C +_02232F40: + add r5, r5, #1 + cmp r5, r6 + blt _02232F28 + b _02232F58 +_02232F48: + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_0225516C +_02232F58: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232F5C: .word 0x00000195 +_02232F60: .word 0x00003108 + + thumb_func_start MOD11_02232F64 +MOD11_02232F64: ; 0x02232F64 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD11_02243388 + cmp r0, #0 + beq _02232F7C + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + b _02232F82 +_02232F7C: + add r0, r4, #0 + bl MOD11_022433DC +_02232F82: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02232F88 +MOD11_02232F88: ; 0x02232F88 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r1, #0 + ldr r1, [r5, #0x64] + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x60 + bne _02232FA0 + mov r4, #0 + b _02232FB4 +_02232FA0: + ldr r0, _022330D4 ; =0x00002160 + ldr r4, [r5, r0] + cmp r4, #0 + bne _02232FB4 + ldr r0, _022330D8 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _022330DC ; =0x000003E2 + ldrb r4, [r1, r0] +_02232FB4: + ldr r0, [r5, #0x6c] + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl MOD11_02230270 + mov r3, #6 + lsl r3, r3, #6 + add r6, r0, #0 + ldr r0, [r5, r3] + ldr r1, _022330E0 ; =0x00002154 + str r0, [sp] + ldr r0, [r5, r1] + ldr r2, _022330D8 ; =0x00003044 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5, #0x64] + lsl r4, r6, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + add r4, r5, r4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + sub r0, r1, #4 + ldr r0, [r5, r0] + add r3, #0x3c + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r2, [r5, r2] + ldr r3, [r4, r3] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_0224B310 + ldr r1, _022330E4 ; =0x00002144 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #0xc + ldr r2, [r5, r1] + ldr r0, [r5, r0] + mul r0, r2 + str r0, [r5, r1] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02249D90 + cmp r0, #0x61 + bne _02233040 + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r2, #0 + bl MOD11_02249DA4 + ldr r1, _022330E4 ; =0x00002144 + add r0, #0x64 + ldr r1, [r5, r1] + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + ldr r1, _022330E4 ; =0x00002144 + str r0, [r5, r1] +_02233040: + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02249D90 + cmp r0, #0x68 + bne _0223306E + ldr r0, _022330E4 ; =0x00002144 + ldr r2, [r5, #0x64] + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r2 + add r2, r5, r0 + ldr r0, _022330E8 ; =0x00002DCC + ldr r0, [r2, r0] + lsl r0, r0, #5 + lsr r0, r0, #0x1c + add r0, #0xa + mul r0, r1 + mov r1, #0xa + blx _u32_div_f + ldr r1, _022330E4 ; =0x00002144 + str r0, [r5, r1] +_0223306E: + ldr r2, [r5, #0x64] + mov r1, #0xc0 + add r0, r2, #0 + mul r0, r1 + ldr r2, _022330E8 ; =0x00002DCC + add r3, r5, r0 + ldr r3, [r3, r2] + lsl r3, r3, #1 + lsr r3, r3, #0x1f + beq _022330CE + add r2, #0x10 + add r3, r5, r2 + add r1, #0xb4 + ldr r2, [r5, r1] + ldr r1, [r3, r0] + cmp r2, r1 + bne _02233094 + sub r1, r1, #1 + str r1, [r3, r0] +_02233094: + ldr r2, [r5, #0x64] + mov r1, #0xc0 + add r0, r2, #0 + mul r0, r1 + add r1, #0xb4 + ldr r3, [r5, r1] + ldr r1, _022330EC ; =0x00002DDC + add r2, r5, r0 + ldr r2, [r2, r1] + sub r2, r3, r2 + cmp r2, #2 + bge _022330C2 + ldr r0, _022330E4 ; =0x00002144 + ldr r1, [r5, r0] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + ldr r1, _022330E4 ; =0x00002144 + add sp, #0x1c + str r0, [r5, r1] + pop {r4, r5, r6, r7, pc} +_022330C2: + sub r1, #0x10 + add r3, r5, r1 + ldr r2, [r3, r0] + ldr r1, _022330F0 ; =0xBFFFFFFF + and r1, r2 + str r1, [r3, r0] +_022330CE: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022330D4: .word 0x00002160 +_022330D8: .word 0x00003044 +_022330DC: .word 0x000003E2 +_022330E0: .word 0x00002154 +_022330E4: .word 0x00002144 +_022330E8: .word 0x00002DCC +_022330EC: .word 0x00002DDC +_022330F0: .word 0xBFFFFFFF + + thumb_func_start MOD11_022330F4 +MOD11_022330F4: ; 0x022330F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02232F88 + ldr r1, _02233128 ; =0x00002144 + add r0, r4, #0 + ldr r1, [r4, r1] + bl MOD11_0224BF10 + ldr r1, _02233128 ; =0x00002144 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + mul r0, r2 + str r0, [r4, r1] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02233128: .word 0x00002144 + + thumb_func_start MOD11_0223312C +MOD11_0223312C: ; 0x0223312C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02232F88 + ldr r1, _02233154 ; =0x00002144 + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + mul r0, r2 + str r0, [r4, r1] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02233154: .word 0x00002144 + + thumb_func_start MOD11_02233158 +MOD11_02233158: ; 0x02233158 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, _02233194 ; =0x0000213C + ldr r1, [r4, r0] + mov r0, #1 + tst r0, r1 + bne _02233178 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022559BC +_02233178: + ldr r1, _02233194 ; =0x0000213C + mov r0, #1 + ldr r2, [r4, r1] + orr r0, r2 + str r0, [r4, r1] + add r0, r1, #4 + ldr r2, [r4, r0] + mov r0, #4 + orr r2, r0 + add r0, r1, #4 + str r2, [r4, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02233194: .word 0x0000213C + + thumb_func_start MOD11_02233198 +MOD11_02233198: ; 0x02233198 + push {r4, r5, lr} + sub sp, #0x44 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + add r1, sp, #0x24 + bl MOD11_0223C490 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x24 + add r3, sp, #0 + bl MOD11_0223C55C + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD11_022559F4 + mov r0, #0 + add sp, #0x44 + pop {r4, r5, pc} + + thumb_func_start MOD11_022331CC +MOD11_022331CC: ; 0x022331CC + push {r4, r5, lr} + sub sp, #0x44 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + add r1, sp, #0x24 + bl MOD11_0223C490 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x24 + add r3, sp, #0 + bl MOD11_0223C55C + add r1, sp, #0 + ldrb r2, [r1, #1] + mov r0, #0x80 + orr r0, r2 + strb r0, [r1, #1] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD11_022559F4 + mov r0, #0 + add sp, #0x44 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223320C +MOD11_0223320C: ; 0x0223320C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r1, r4, #0 + add r4, #0xf4 + add r0, r5, #0 + add r2, r4, #0 + bl MOD11_022559F4 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223322C +MOD11_0223322C: ; 0x0223322C + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + add r1, sp, #0 + bl MOD11_0223C490 + add r1, r4, #0 + add r4, #0xf4 + add r0, r5, #0 + add r2, sp, #0 + add r3, r4, #0 + bl MOD11_0223C55C + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02233258 +MOD11_02233258: ; 0x02233258 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + add r1, sp, #0x24 + bl MOD11_0223C490 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x24 + add r3, sp, #0 + bl MOD11_0223C55C + add r1, sp, #0 + ldrb r2, [r1, #1] + mov r0, #0x40 + orr r0, r2 + strb r0, [r1, #1] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + str r0, [sp, #0x20] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD11_022559F4 + mov r0, #0 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_022332AC +MOD11_022332AC: ; 0x022332AC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + cmp r0, #0xff + bne _022332CA + mov r0, #0x49 + lsl r0, r0, #2 + b _022332CC +_022332CA: + ldr r0, _0223331C ; =0x00003044 +_022332CC: + ldr r0, [r5, r0] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _02233320 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #1 + lsl r0, r0, #0xe + tst r0, r1 + bne _022332E8 + add r0, r6, #0 + bl MOD11_02230E20 + cmp r0, #1 + beq _022332EC +_022332E8: + cmp r4, #0x90 + bne _02233302 +_022332EC: + ldr r1, _02233320 ; =0x0000213C + mov r0, #1 + ldr r2, [r5, r1] + lsl r0, r0, #0xe + orr r0, r2 + str r0, [r5, r1] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_02255A10 +_02233302: + add r0, r6, #0 + bl MOD11_02230E20 + cmp r0, #0 + bne _02233316 + ldr r2, _02233324 ; =0x00000123 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A43C +_02233316: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0223331C: .word 0x00003044 +_02233320: .word 0x0000213C +_02233324: .word 0x00000123 + + thumb_func_start MOD11_02233328 +MOD11_02233328: ; 0x02233328 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + cmp r6, #0xff + bne _0223335A + mov r0, #0x49 + lsl r0, r0, #2 + b _0223335C +_0223335A: + ldr r0, _022333C8 ; =0x00003044 +_0223335C: + ldr r0, [r4, r0] + add r1, r4, #0 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_0223C230 + str r0, [sp, #4] + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r7, r0, #0 + ldr r0, _022333CC ; =0x0000213C + ldr r1, [r4, r0] + mov r0, #1 + lsl r0, r0, #0xe + tst r0, r1 + bne _02233390 + add r0, r5, #0 + bl MOD11_02230E20 + cmp r0, #1 + beq _02233394 +_02233390: + cmp r6, #0x90 + bne _022333AE +_02233394: + ldr r1, _022333CC ; =0x0000213C + mov r0, #1 + ldr r2, [r4, r1] + lsl r0, r0, #0xe + orr r0, r2 + str r0, [r4, r1] + ldr r3, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + str r7, [sp] + bl MOD11_02255A40 +_022333AE: + add r0, r5, #0 + bl MOD11_02230E20 + cmp r0, #0 + bne _022333C2 + ldr r2, _022333D0 ; =0x00000123 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A43C +_022333C2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022333C8: .word 0x00003044 +_022333CC: .word 0x0000213C +_022333D0: .word 0x00000123 + + thumb_func_start MOD11_022333D4 +MOD11_022333D4: ; 0x022333D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + ldr r2, _02233404 ; =0x0000216C + add r1, r0, #0 + ldr r2, [r4, r2] + add r0, r5, #0 + bl MOD11_02255A70 + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02233404: .word 0x0000216C + + thumb_func_start MOD11_02233408 +MOD11_02233408: ; 0x02233408 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + ldr r0, _0223349C ; =0x00002D8C + add r7, r2, #0 + add r5, r4, r0 + mov r0, #0xc0 + mul r7, r0 + ldr r0, _022334A0 ; =0x0000215C + ldr r6, [r5, r7] + ldr r3, [r4, r0] + add r1, r3, r6 + cmp r1, #0 + bgt _02233446 + neg r1, r6 + sub r0, #0x14 + str r1, [r4, r0] + b _0223344A +_02233446: + sub r0, #0x14 + str r3, [r4, r0] +_0223344A: + ldr r0, _022334A4 ; =0x00002148 + ldr r6, [r4, r0] + cmp r6, #0 + bge _02233460 + mov r0, #0x59 + lsl r0, r0, #2 + add r3, r4, r0 + lsl r1, r2, #2 + ldr r0, [r3, r1] + sub r0, r0, r6 + str r0, [r3, r1] +_02233460: + mov r0, #0xc0 + add r3, r2, #0 + mul r3, r0 + ldr r0, _0223349C ; =0x00002D8C + ldr r6, _022334A0 ; =0x0000215C + add r1, r4, r0 + ldr r0, [r1, r3] + ldr r6, [r4, r6] + add r0, r0, r6 + str r0, [r1, r3] + ldr r1, [r1, r3] + cmp r1, #0 + bge _02233480 + mov r0, #0 + str r0, [r5, r7] + b _0223348E +_02233480: + add r0, r4, r3 + ldr r3, _0223349C ; =0x00002D8C + add r3, r3, #4 + ldr r0, [r0, r3] + cmp r1, r0 + bls _0223348E + str r0, [r5, r7] +_0223348E: + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02245190 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223349C: .word 0x00002D8C +_022334A0: .word 0x0000215C +_022334A4: .word 0x00002148 + + thumb_func_start MOD11_022334A8 +MOD11_022334A8: ; 0x022334A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02255A8C + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022334D4 +MOD11_022334D4: ; 0x022334D4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223C230 + add r4, r0, #0 + mov r1, #0xc0 + mul r1, r4 + add r2, r5, r1 + ldr r1, _02233530 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + bne _0223352A + str r4, [r5, #0x74] + bl FUN_0206A92C + ldr r1, _02233534 ; =0x0000213C + lsl r0, r0, #0x18 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] + mov r0, #0x55 + lsl r0, r0, #2 + add r2, r5, r0 + lsl r1, r4, #2 + ldr r0, [r2, r1] + add r0, r0, #1 + str r0, [r2, r1] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223D0EC +_0223352A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02233530: .word 0x00002D8C +_02233534: .word 0x0000213C + + thumb_func_start MOD11_02233538 +MOD11_02233538: ; 0x02233538 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r2, [r4, #0x74] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02255BEC + ldr r0, [r4, #0x74] + bl FUN_0206A92C + ldr r2, _02233594 ; =0x0000213C + lsl r3, r0, #0x18 + mov r0, #0 + mvn r0, r0 + ldr r1, [r4, r2] + eor r0, r3 + and r0, r1 + str r0, [r4, r2] + ldr r0, [r4, #0x74] + bl FUN_0206A92C + mov r1, #0x85 + lsl r1, r1, #6 + ldr r2, [r4, r1] + lsl r0, r0, #0x1c + orr r0, r2 + str r0, [r4, r1] + ldr r0, [r4, #0x74] + mov r2, #0x27 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, #0x68 + str r2, [r0, r1] + ldr r2, [r4, #0x74] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02245A10 + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02233594: .word 0x0000213C + + thumb_func_start MOD11_02233598 +MOD11_02233598: ; 0x02233598 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + bne _022335D2 + ldr r0, _022335FC ; =0x021C48B8 + ldr r1, [r0, #0x48] + ldr r0, _02233600 ; =0x00000C03 + tst r0, r1 + bne _022335CC + bl FUN_02020AA4 + cmp r0, #0 + beq _022335D2 +_022335CC: + add r0, r5, #0 + add r0, #0xf0 + str r4, [r0] +_022335D2: + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r4, r0 + beq _022335F0 + mov r1, #1 + add r0, r5, #0 + mvn r1, r1 + bl MOD11_0223A424 + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + add r0, r0, #1 + b _022335F2 +_022335F0: + mov r0, #0 +_022335F2: + add r5, #0xf0 + str r0, [r5] + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_022335FC: .word 0x021C48B8 +_02233600: .word 0x00000C03 + + thumb_func_start MOD11_02233604 +MOD11_02233604: ; 0x02233604 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r3, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_02255D00 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0223363C +MOD11_0223363C: ; 0x0223363C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r6, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r6, #0 + bl MOD11_0223A444 + cmp r7, #6 + bhi _022336DA + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02233686: ; jump table + .short _02233694 - _02233686 - 2 ; case 0 + .short _0223369E - _02233686 - 2 ; case 1 + .short _022336A8 - _02233686 - 2 ; case 2 + .short _022336B2 - _02233686 - 2 ; case 3 + .short _022336BC - _02233686 - 2 ; case 4 + .short _022336C6 - _02233686 - 2 ; case 5 + .short _022336D0 - _02233686 - 2 ; case 6 +_02233694: + ldr r0, [r0] + cmp r0, r4 + beq _022336DA + mov r5, #0 + b _022336DA +_0223369E: + ldr r0, [r0] + cmp r0, r4 + bne _022336DA + mov r5, #0 + b _022336DA +_022336A8: + ldr r0, [r0] + cmp r0, r4 + bgt _022336DA + mov r5, #0 + b _022336DA +_022336B2: + ldr r0, [r0] + cmp r0, r4 + ble _022336DA + mov r5, #0 + b _022336DA +_022336BC: + ldr r0, [r0] + tst r0, r4 + bne _022336DA + mov r5, #0 + b _022336DA +_022336C6: + ldr r0, [r0] + tst r0, r4 + beq _022336DA + mov r5, #0 + b _022336DA +_022336D0: + ldr r0, [r0] + and r0, r4 + cmp r4, r0 + beq _022336DA + mov r5, #0 +_022336DA: + cmp r5, #0 + beq _022336E6 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223A424 +_022336E6: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_022336EC +MOD11_022336EC: ; 0x022336EC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r6, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + ldr r2, [sp, #8] + add r0, r6, #0 + mov r3, #0 + bl MOD11_02243420 + cmp r7, #6 + bhi _02233790 + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223374A: ; jump table + .short _02233758 - _0223374A - 2 ; case 0 + .short _02233760 - _0223374A - 2 ; case 1 + .short _02233768 - _0223374A - 2 ; case 2 + .short _02233770 - _0223374A - 2 ; case 3 + .short _02233778 - _0223374A - 2 ; case 4 + .short _02233780 - _0223374A - 2 ; case 5 + .short _02233788 - _0223374A - 2 ; case 6 +_02233758: + cmp r0, r4 + beq _02233790 + mov r5, #0 + b _02233790 +_02233760: + cmp r0, r4 + bne _02233790 + mov r5, #0 + b _02233790 +_02233768: + cmp r0, r4 + bgt _02233790 + mov r5, #0 + b _02233790 +_02233770: + cmp r0, r4 + ble _02233790 + mov r5, #0 + b _02233790 +_02233778: + tst r0, r4 + bne _02233790 + mov r5, #0 + b _02233790 +_02233780: + tst r0, r4 + beq _02233790 + mov r5, #0 + b _02233790 +_02233788: + and r0, r4 + cmp r4, r0 + beq _02233790 + mov r5, #0 +_02233790: + cmp r5, #0 + beq _0223379C + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223A424 +_0223379C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022337A4 +MOD11_022337A4: ; 0x022337A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02255D20 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022337C0 +MOD11_022337C0: ; 0x022337C0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A434 + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD11_022337E0 +MOD11_022337E0: ; 0x022337E0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r2, _02233804 ; =0x00003044 + add r0, r4, #0 + ldr r2, [r4, r2] + mov r1, #0x1e + lsl r2, r2, #4 + add r3, r4, r2 + ldr r2, _02233808 ; =0x000003DE + ldrh r2, [r3, r2] + bl MOD11_0223A434 + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02233804: .word 0x00003044 +_02233808: .word 0x000003DE + + thumb_func_start MOD11_0223380C +MOD11_0223380C: ; 0x0223380C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + ldr r2, _02233890 ; =0x0000213C + mov r1, #1 + ldr r3, [r4, r2] + bic r3, r1 + str r3, [r4, r2] + ldr r3, [r4, r2] + ldr r1, _02233894 ; =0xFFFFBFFF + and r1, r3 + mov r3, #0x49 + lsl r3, r3, #2 + str r1, [r4, r2] + ldr r2, [r4, r3] + ldr r1, _02233898 ; =0x00003044 + cmp r0, #0 + str r2, [r4, r1] + bne _02233866 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r4, r3] + ldr r2, [r4, #0x64] + lsl r3, r3, #0x10 + add r0, r5, #0 + add r1, r4, #0 + lsr r3, r3, #0x10 + bl MOD11_02244C28 + str r0, [r4, #0x6c] + ldr r1, [r4, #0x64] + lsl r1, r1, #4 + add r2, r4, r1 + ldr r1, _0223389C ; =0x000021AC + str r0, [r2, r1] +_02233866: + ldr r0, [r4, #0x6c] + cmp r0, #0xff + bne _0223387C + mov r2, #0x26 + str r2, [r4, #0xc] + add r0, r4, #0 + mov r1, #1 + add r2, #0xf3 + bl MOD11_0223A434 + b _02233888 +_0223387C: + ldr r2, _02233898 ; =0x00003044 + add r0, r4, #0 + ldr r2, [r4, r2] + mov r1, #0 + bl MOD11_0223A434 +_02233888: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02233890: .word 0x0000213C +_02233894: .word 0xFFFFBFFF +_02233898: .word 0x00003044 +_0223389C: .word 0x000021AC + + thumb_func_start MOD11_022338A0 +MOD11_022338A0: ; 0x022338A0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + bne _022338C8 + add r0, r5, #0 + bl MOD11_02230C50 + mov r1, #1 + tst r0, r1 + beq _022338D0 +_022338C8: + ldr r0, _022338F4 ; =0x00002150 + mov r1, #1 + str r1, [r4, r0] + b _022338F0 +_022338D0: + ldr r3, [r4, #0x6c] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD11_0224C474 + str r0, [sp] + ldr r3, _022338F8 ; =0x0000214C + ldr r1, [r4, #0x64] + ldr r2, [r4, #0x6c] + ldr r3, [r4, r3] + add r0, r4, #0 + bl MOD11_0224BF3C + ldr r1, _022338F4 ; =0x00002150 + str r0, [r4, r1] +_022338F0: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022338F4: .word 0x00002150 +_022338F8: .word 0x0000214C + + thumb_func_start MOD11_022338FC +MOD11_022338FC: ; 0x022338FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r7, r0, #0 + bl MOD11_0222FF74 + add r4, r0, #0 + ldr r1, [r5, #0x74] + add r0, r7, #0 + bl MOD11_0222FF7C + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r1, r0, #0 + ldr r0, _02233A70 ; =0x00000195 + ldrb r2, [r6, r0] + mov r0, #1 + tst r0, r2 + beq _02233936 + mov r0, #0xa9 + lsl r0, r0, #2 + tst r0, r4 + beq _02233938 +_02233936: + b _02233A64 +_02233938: + mov r0, #0 + str r0, [sp, #4] + ldr r1, [sp, #4] + str r0, [sp] + add r4, r0, #0 + add r0, r7, #0 + bl MOD11_0222FF88 + bl FUN_0206B9AC + cmp r0, #0 + ble _022339C6 +_02233950: + add r0, r7, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD11_02230014 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022339B4 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022339B4 + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, [r5, #0x74] + asr r1, r1, #1 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1d + add r1, r5, r1 + add r1, #0xa4 + ldr r1, [r1] + tst r0, r1 + beq _02233994 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02233994: + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, r5, #0 + mov r2, #1 + bl MOD11_0224C12C + cmp r0, #0x32 + bne _022339B4 + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] +_022339B4: + add r0, r7, #0 + mov r1, #0 + add r4, r4, #1 + bl MOD11_0222FF88 + bl FUN_0206B9AC + cmp r4, r0 + blt _02233950 +_022339C6: + ldr r1, [r5, #0x74] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r1, r0] + mov r1, #9 + bl FUN_02068678 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r2, [r5, #0x74] + mov r0, #0xc0 + mul r0, r2 + add r2, r5, r0 + ldr r0, _02233A74 ; =0x00002D74 + ldrb r0, [r2, r0] + mul r0, r1 + mov r1, #7 + blx _s32_div_f + lsl r0, r0, #0x10 + ldr r1, [sp] + lsr r0, r0, #0x10 + cmp r1, #0 + beq _02233A3E + lsr r4, r0, #1 + ldr r1, [sp, #4] + add r0, r4, #0 + blx _s32_div_f + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + cmp r0, #0 + bne _02233A1E + add r0, r5, #0 + mov r1, #1 + add r0, #0x9c + str r1, [r0] +_02233A1E: + ldr r1, [sp] + add r0, r4, #0 + blx _s32_div_f + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + bne _02233A6A + mov r0, #1 + add r5, #0xa0 + str r0, [r5] + b _02233A6A +_02233A3E: + ldr r1, [sp, #4] + blx _s32_div_f + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + cmp r0, #0 + bne _02233A5C + add r0, r5, #0 + mov r1, #1 + add r0, #0x9c + str r1, [r0] +_02233A5C: + mov r0, #0 + add r5, #0xa0 + str r0, [r5] + b _02233A6A +_02233A64: + add r0, r5, #0 + bl MOD11_0223A424 +_02233A6A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233A70: .word 0x00000195 +_02233A74: .word 0x00002D74 + + thumb_func_start MOD11_02233A78 +MOD11_02233A78: ; 0x02233A78 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r0, #5 + mov r1, #0x58 + bl FUN_02016998 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r2, #0 + str r5, [r0] + ldr r0, [r4, r1] + str r4, [r0, #4] + ldr r0, [r4, r1] + str r2, [r0, #0x28] + ldr r0, [r4, r1] + str r2, [r0, #0x48] + ldr r0, _02233AB4 ; =MOD11_0223A79C + ldr r1, [r4, r1] + bl FUN_0200CA44 + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02233AB4: .word MOD11_0223A79C + + thumb_func_start MOD11_02233AB8 +MOD11_02233AB8: ; 0x02233AB8 + push {r3, lr} + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02233ACC + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 +_02233ACC: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD11_02233AD0 +MOD11_02233AD0: ; 0x02233AD0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02233AE8 +MOD11_02233AE8: ; 0x02233AE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #8] + add r6, r0, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + ldr r0, [sp, #8] + mov r1, #1 + bl MOD11_0223A424 + mov r4, #0 + add r5, r4, #0 + cmp r7, #0 + ble _02233B40 + ldr r0, [sp, #8] + str r0, [sp, #0xc] +_02233B0A: + mov r0, #0x4f + ldr r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02233B34 + add r0, r5, #0 + bl FUN_0206A92C + orr r4, r0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r1, [sp, #8] + add r0, r6, #0 + add r2, r5, #0 + mov r3, #1 + bl MOD11_022558E0 +_02233B34: + ldr r0, [sp, #0xc] + add r5, r5, #1 + add r0, r0, #4 + str r0, [sp, #0xc] + cmp r5, r7 + blt _02233B0A +_02233B40: + mov r5, #0 + cmp r7, #0 + ble _02233B98 +_02233B46: + add r0, r6, #0 + bl MOD11_0222FF74 + cmp r0, #7 + bne _02233B80 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022302BC + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206A92C + tst r0, r4 + bne _02233B92 + ldr r0, [sp, #0x10] + bl FUN_0206A92C + tst r0, r4 + bne _02233B92 + add r0, r5, #0 + bl FUN_0206A92C + orr r4, r0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022564CC + b _02233B92 +_02233B80: + add r0, r5, #0 + bl FUN_0206A92C + tst r0, r4 + bne _02233B92 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022564CC +_02233B92: + add r5, r5, #1 + cmp r5, r7 + blt _02233B46 +_02233B98: + mov r0, #0 + cmp r7, #0 + ble _02233BBA + mov r1, #0x4f + ldr r4, [sp, #8] + lsl r1, r1, #2 + mov r2, #1 +_02233BA6: + ldr r3, [r4, r1] + tst r3, r2 + beq _02233BB2 + ldr r1, [sp, #8] + str r0, [r1, #0x78] + b _02233BBA +_02233BB2: + add r0, r0, #1 + add r4, r4, #4 + cmp r0, r7 + blt _02233BA6 +_02233BBA: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02233BC0 +MOD11_02233BC0: ; 0x02233BC0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r5, r1, #0 + bl MOD11_0222FF84 + str r0, [sp, #8] + mov r6, #0 + ldr r1, [sp, #8] + add r0, r6, #0 + cmp r1, #0 + ble _02233BF2 + mov r3, #0x4f + add r1, r5, #0 + lsl r3, r3, #2 + mov r4, #1 +_02233BE0: + ldr r2, [r1, r3] + tst r2, r4 + beq _02233BE8 + add r6, r6, #1 +_02233BE8: + ldr r2, [sp, #8] + add r0, r0, #1 + add r1, r1, #4 + cmp r0, r2 + blt _02233BE0 +_02233BF2: + ldr r0, [sp, #8] + mov r4, #0 + cmp r0, #0 + ble _02233C6C + str r5, [sp, #4] + add r7, r5, #0 +_02233BFE: + mov r0, #0x4f + ldr r1, [sp, #4] + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02233C58 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _02233C58 + mov r0, #0x23 + lsl r0, r0, #8 + ldrb r0, [r7, r0] + add r1, r5, r4 + sub r6, r6, #1 + sub r2, r0, #1 + ldr r0, _02233C8C ; =0x000021A0 + strb r2, [r1, r0] + add r0, r4, #0 + bl FUN_0206A92C + mov r1, #0x85 + lsl r1, r1, #6 + ldr r1, [r5, r1] + lsl r0, r0, #0x18 + tst r0, r1 + bne _02233C58 + add r0, r4, #0 + bl FUN_0206A92C + mov r1, #0x85 + lsl r1, r1, #6 + ldr r1, [r5, r1] + lsl r0, r0, #0x18 + orr r1, r0 + mov r0, #0x85 + lsl r0, r0, #6 + str r1, [r5, r0] + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_022564CC +_02233C58: + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, r0, #4 + str r0, [sp, #4] + mov r0, #1 + lsl r0, r0, #8 + add r7, r7, r0 + ldr r0, [sp, #8] + cmp r4, r0 + blt _02233BFE +_02233C6C: + cmp r6, #0 + bne _02233C84 + mov r1, #0x85 + lsl r1, r1, #6 + ldr r2, [r5, r1] + ldr r0, _02233C90 ; =0xF0FFFFFF + and r0, r2 + str r0, [r5, r1] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 +_02233C84: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02233C8C: .word 0x000021A0 +_02233C90: .word 0xF0FFFFFF + + thumb_func_start MOD11_02233C94 +MOD11_02233C94: ; 0x02233C94 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + cmp r0, #1 + beq _02233CB6 + cmp r0, #6 + beq _02233CBA + cmp r0, #0x12 + beq _02233CBE + b _02233CC0 +_02233CB6: + ldr r4, [r5, #0x64] + b _02233CC0 +_02233CBA: + ldr r4, [r5, #0x78] + b _02233CC0 +_02233CBE: + ldr r4, [r5, #0x6c] +_02233CC0: + mov r0, #0x4f + lsl r0, r0, #2 + add r3, r5, r0 + lsl r2, r4, #2 + ldr r1, [r3, r2] + mov r0, #1 + bic r1, r0 + add r0, r4, #0 + str r1, [r3, r2] + bl FUN_0206A92C + ldr r3, _02233D24 ; =0x00003108 + mov r2, #0 + mvn r2, r2 + eor r0, r2 + ldrb r1, [r5, r3] + add r2, r4, #0 + and r0, r1 + ldr r1, _02233D28 ; =0x000021A0 + strb r0, [r5, r3] + add r0, r5, r1 + sub r1, r1, #4 + add r6, r5, r1 + ldrb r1, [r0, r4] + strb r1, [r6, r4] + mov r1, #6 + strb r1, [r0, r4] + ldrb r3, [r6, r4] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02242B78 + ldrb r3, [r6, r4] + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0224B290 + ldr r0, _02233D2C ; =0x00002E4C + add r2, r4, #0 + ldr r1, [r5, r0] + ldr r0, _02233D30 ; =0x00003122 + strh r1, [r5, r0] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02245608 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233D24: .word 0x00003108 +_02233D28: .word 0x000021A0 +_02233D2C: .word 0x00002E4C +_02233D30: .word 0x00003122 + + thumb_func_start MOD11_02233D34 +MOD11_02233D34: ; 0x02233D34 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + bl MOD11_0222FF84 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + mov r0, #0 + cmp r4, #0 + ble _02233D76 + mov r2, #0x4f + add r1, r5, #0 + lsl r2, r2, #2 + mov r3, #1 +_02233D5C: + ldr r6, [r1, r2] + tst r6, r3 + beq _02233D6E + str r0, [r5, #0x78] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 + b _02233D76 +_02233D6E: + add r0, r0, #1 + add r1, r1, #4 + cmp r0, r4 + blt _02233D5C +_02233D76: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02233D7C +MOD11_02233D7C: ; 0x02233D7C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + mov r0, #5 + mov r1, #0x58 + bl FUN_02016998 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r2, #0 + str r5, [r0] + ldr r0, [r4, r1] + str r4, [r0, #4] + ldr r0, [r4, r1] + str r2, [r0, #0x28] + ldr r0, [r4, r1] + str r6, [r0, #0x24] + add r0, r1, #0 + sub r0, #0x50 + ldr r3, [r4, r0] + ldr r0, [r4, r1] + str r3, [r0, #0x2c] + ldr r0, _02233DC8 ; =MOD11_0223B49C + ldr r1, [r4, r1] + bl FUN_0200CA44 + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02233DC8: .word MOD11_0223B49C + + thumb_func_start MOD11_02233DCC +MOD11_02233DCC: ; 0x02233DCC + push {r3, lr} + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02233DE0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 +_02233DE0: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD11_02233DE4 +MOD11_02233DE4: ; 0x02233DE4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r0, _02233E4C ; =0x0000217D + ldrb r0, [r5, r0] + cmp r0, #0 + bne _02233E46 + cmp r4, #0 + bne _02233E36 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x5c + bne _02233E1C + mov r4, #5 + b _02233E36 +_02233E1C: + bl FUN_0201B9EC + mov r1, #3 + and r0, r1 + cmp r0, #2 + bge _02233E2C + add r4, r0, #2 + b _02233E36 +_02233E2C: + bl FUN_0201B9EC + mov r1, #3 + and r0, r1 + add r4, r0, #2 +_02233E36: + lsl r0, r4, #0x18 + ldr r1, _02233E50 ; =0x0000217C + lsr r2, r0, #0x18 + strb r2, [r5, r1] + add r0, r1, #1 + strb r2, [r5, r0] + add r1, #0xc + str r6, [r5, r1] +_02233E46: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02233E4C: .word 0x0000217D +_02233E50: .word 0x0000217C + + thumb_func_start MOD11_02233E54 +MOD11_02233E54: ; 0x02233E54 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r4, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r2, [sp] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0223A444 + add r4, r0, #0 + cmp r6, #0x14 + bhi _02233F3E + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233E96: ; jump table + .short _02233F3E - _02233E96 - 2 ; case 0 + .short _02233F3E - _02233E96 - 2 ; case 1 + .short _02233F3E - _02233E96 - 2 ; case 2 + .short _02233F3E - _02233E96 - 2 ; case 3 + .short _02233F3E - _02233E96 - 2 ; case 4 + .short _02233F3E - _02233E96 - 2 ; case 5 + .short _02233F3E - _02233E96 - 2 ; case 6 + .short _02233EC0 - _02233E96 - 2 ; case 7 + .short _02233EC4 - _02233E96 - 2 ; case 8 + .short _02233ECC - _02233E96 - 2 ; case 9 + .short _02233ED4 - _02233E96 - 2 ; case 10 + .short _02233EDC - _02233E96 - 2 ; case 11 + .short _02233EEA - _02233E96 - 2 ; case 12 + .short _02233EF4 - _02233E96 - 2 ; case 13 + .short _02233F00 - _02233E96 - 2 ; case 14 + .short _02233F08 - _02233E96 - 2 ; case 15 + .short _02233F10 - _02233E96 - 2 ; case 16 + .short _02233F1A - _02233E96 - 2 ; case 17 + .short _02233F20 - _02233E96 - 2 ; case 18 + .short _02233F2E - _02233E96 - 2 ; case 19 + .short _02233F36 - _02233E96 - 2 ; case 20 +_02233EC0: + str r5, [r4] + b _02233F42 +_02233EC4: + ldr r0, [r4] + add r0, r0, r5 + str r0, [r4] + b _02233F42 +_02233ECC: + ldr r0, [r4] + sub r0, r0, r5 + str r0, [r4] + b _02233F42 +_02233ED4: + ldr r0, [r4] + orr r0, r5 + str r0, [r4] + b _02233F42 +_02233EDC: + mov r0, #0 + mvn r0, r0 + ldr r1, [r4] + eor r0, r5 + and r0, r1 + str r0, [r4] + b _02233F42 +_02233EEA: + ldr r0, [r4] + add r1, r0, #0 + mul r1, r5 + str r1, [r4] + b _02233F42 +_02233EF4: + ldr r0, [r4] + add r1, r5, #0 + blx _s32_div_f + str r0, [r4] + b _02233F42 +_02233F00: + ldr r0, [r4] + lsl r0, r5 + str r0, [r4] + b _02233F42 +_02233F08: + ldr r0, [r4] + asr r0, r5 + str r0, [r4] + b _02233F42 +_02233F10: + add r0, r5, #0 + bl FUN_0206A92C + str r0, [r4] + b _02233F42 +_02233F1A: + bl ErrorHandling + b _02233F42 +_02233F20: + ldr r0, [r4] + sub r0, r0, r5 + str r0, [r4] + bpl _02233F42 + mov r0, #0 + str r0, [r4] + b _02233F42 +_02233F2E: + ldr r0, [r4] + eor r0, r5 + str r0, [r4] + b _02233F42 +_02233F36: + ldr r0, [r4] + and r0, r5 + str r0, [r4] + b _02233F42 +_02233F3E: + bl ErrorHandling +_02233F42: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02233F48 +MOD11_02233F48: ; 0x02233F48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0xb5 + add r5, r1, #0 + lsl r0, r0, #6 + add r2, r5, r0 + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r6, r2, r0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #0x14] + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #0x10] + add r0, r5, #0 + bl MOD11_0223A404 + ldr r1, _022342D0 ; =0x0000213C + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #8] + ldr r2, [r5, r1] + ldr r0, _022342D4 ; =0xFFFDFFFF + and r2, r0 + str r2, [r5, r1] + add r1, r5, #0 + add r1, #0x8c + ldr r4, [r1] + cmp r4, #0x2e + blt _02233FA8 + asr r7, r0, #0x11 + mov r0, #0x4e + mov r1, #0xd + lsl r0, r0, #2 + sub r4, #0x2e + str r1, [r5, r0] + b _02233FD8 +_02233FA8: + cmp r4, #0x27 + blt _02233FBA + mov r0, #0x4e + mov r1, #0xc + lsl r0, r0, #2 + sub r4, #0x27 + mov r7, #2 + str r1, [r5, r0] + b _02233FD8 +_02233FBA: + cmp r4, #0x16 + blt _02233FCC + asr r7, r0, #0x12 + mov r0, #0x4e + mov r1, #0xd + lsl r0, r0, #2 + sub r4, #0x16 + str r1, [r5, r0] + b _02233FD8 +_02233FCC: + mov r0, #0x4e + mov r1, #0xc + lsl r0, r0, #2 + sub r4, #0xf + mov r7, #1 + str r1, [r5, r0] +_02233FD8: + cmp r7, #0 + bgt _02233FDE + b _02234116 +_02233FDE: + add r1, r4, #1 + add r6, #0x18 + add r0, r6, r1 + str r0, [sp, #4] + ldrsb r0, [r6, r1] + cmp r0, #0xc + bne _02234042 + ldr r1, _022342D0 ; =0x0000213C + mov r0, #2 + ldr r2, [r5, r1] + lsl r0, r0, #0x10 + orr r0, r2 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + sub r0, r0, #2 + cmp r0, #1 + bhi _0223400E + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD11_0223A424 + b _02234538 +_0223400E: + add r0, r5, #0 + mov r1, #0x8e + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0xc + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r1, r4, #1 + add r0, #0xfc + str r1, [r0] + ldr r1, [sp, #0x14] + add r0, r5, #0 + bl MOD11_0223A424 + b _02234538 +_02234042: + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #3 + bne _0223408E + add r0, r5, #0 + ldr r1, _022342D8 ; =0x0000026E + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x27 + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _022342DC ; =0x00002D67 + add r2, r5, r2 + ldrb r2, [r2, r0] + add r0, r5, #0 + add r0, #0xfc + str r2, [r0] + add r0, r4, #1 + add r1, #0x40 + str r0, [r5, r1] + b _022340FA +_0223408E: + cmp r0, #5 + bne _022340CA + mov r1, #0xbd + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x2d + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + mov r1, #0x4a + lsl r1, r1, #2 + ldr r2, [r5, r1] + add r0, r5, #0 + add r0, #0xfc + str r2, [r0] + add r0, r4, #1 + sub r1, #0x28 + str r0, [r5, r1] + b _022340FA +_022340CA: + cmp r7, #1 + bne _022340D2 + ldr r1, _022342E0 ; =0x000002EE + b _022340D4 +_022340D2: + ldr r1, _022342E4 ; =0x000002F1 +_022340D4: + add r0, r5, #0 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0xc + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r4, #1 + add r5, #0xfc + str r0, [r5] +_022340FA: + ldr r0, [sp, #4] + mov r1, #0 + ldrsb r0, [r0, r1] + add r2, r0, r7 + ldr r0, [sp, #4] + strb r2, [r0] + ldrsb r0, [r0, r1] + cmp r0, #0xc + bgt _0223410E + b _02234538 +_0223410E: + ldr r0, [sp, #4] + mov r1, #0xc + strb r1, [r0] + b _02234538 +_02234116: + add r0, r5, #0 + add r0, #0x90 + ldr r1, [r0] + mov r0, #2 + lsl r0, r0, #0x1a + tst r1, r0 + beq _02234126 + b _0223449C +_02234126: + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + ldr r2, [r5, #0x64] + cmp r2, r1 + bne _02234134 + b _022343E4 +_02234134: + ldr r0, [sp] + bl MOD11_02230270 + lsl r0, r0, #3 + mov r1, #0x71 + add r0, r5, r0 + lsl r1, r1, #2 + ldr r0, [r0, r1] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1d + beq _02234172 + add r0, r5, #0 + sub r1, #0xb3 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #2 + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + mov r0, #1 + str r0, [sp, #8] + b _0223444C +_02234172: + add r2, r5, #0 + add r2, #0x94 + ldr r1, [r5, #0x64] + ldr r2, [r2] + add r0, r5, #0 + mov r3, #0x1d + bl MOD11_02246D84 + cmp r0, #1 + beq _0223419A + add r2, r5, #0 + add r2, #0x94 + ldr r1, [r5, #0x64] + ldr r2, [r2] + add r0, r5, #0 + mov r3, #0x49 + bl MOD11_02246D84 + cmp r0, #1 + bne _0223423C +_0223419A: + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #3 + bne _022341FE + add r0, r5, #0 + ldr r1, _022342E8 ; =0x000002D7 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x35 + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022342DC ; =0x00002D67 + ldrb r1, [r1, r0] + add r0, r5, #0 + add r0, #0xfc + str r1, [r0] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_0224682C + mov r1, #1 + lsl r1, r1, #8 + str r0, [r5, r1] + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _022342DC ; =0x00002D67 + add r2, r5, r2 + ldrb r0, [r2, r0] + add r1, #0x44 + str r0, [r5, r1] + b _02234236 +_022341FE: + add r0, r5, #0 + ldr r1, _022342EC ; =0x0000029D + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0xb + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022342DC ; =0x00002D67 + ldrb r1, [r1, r0] + add r0, r5, #0 + add r0, #0xfc + str r1, [r0] +_02234236: + mov r0, #1 + str r0, [sp, #8] + b _0223444C +_0223423C: + add r2, r5, #0 + add r2, #0x94 + ldr r1, [r5, #0x64] + ldr r2, [r2] + add r0, r5, #0 + mov r3, #0x33 + bl MOD11_02246D84 + cmp r0, #1 + bne _02234256 + add r0, r4, #1 + cmp r0, #6 + beq _0223426E +_02234256: + add r2, r5, #0 + add r2, #0x94 + ldr r1, [r5, #0x64] + ldr r2, [r2] + add r0, r5, #0 + mov r3, #0x34 + bl MOD11_02246D84 + cmp r0, #1 + bne _02234338 + cmp r4, #0 + bne _02234338 +_0223426E: + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #3 + bne _022342F0 + add r0, r5, #0 + ldr r1, _022342E8 ; =0x000002D7 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x35 + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022342DC ; =0x00002D67 + ldrb r1, [r1, r0] + add r0, r5, #0 + add r0, #0xfc + str r1, [r0] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_0224682C + mov r1, #1 + lsl r1, r1, #8 + str r0, [r5, r1] + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _022342DC ; =0x00002D67 + add r2, r5, r2 + ldrb r0, [r2, r0] + add r1, #0x44 + b _02234330 + .align 2, 0 +_022342D0: .word 0x0000213C +_022342D4: .word 0xFFFDFFFF +_022342D8: .word 0x0000026E +_022342DC: .word 0x00002D67 +_022342E0: .word 0x000002EE +_022342E4: .word 0x000002F1 +_022342E8: .word 0x000002D7 +_022342EC: .word 0x0000029D +_022342F0: + mov r1, #0xb + add r0, r5, #0 + lsl r1, r1, #6 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x27 + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _02234540 ; =0x00002D67 + add r2, r5, r2 + ldrb r2, [r2, r0] + add r0, r5, #0 + add r0, #0xfc + str r2, [r0] + add r0, r4, #1 + add r1, #0x40 +_02234330: + str r0, [r5, r1] + mov r0, #1 + str r0, [sp, #8] + b _0223444C +_02234338: + add r0, r4, #1 + add r1, r6, r0 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _022343A2 + ldr r1, _02234544 ; =0x0000213C + mov r0, #2 + ldr r2, [r5, r1] + lsl r0, r0, #0x10 + orr r0, r2 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + sub r0, r0, #2 + cmp r0, #1 + bhi _0223436A + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223436A: + add r0, r5, #0 + mov r1, #0x91 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0xc + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r1, r4, #1 + add r0, #0xfc + str r1, [r0] + ldr r1, [sp, #0x14] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022343A2: + add r2, r5, #0 + add r2, #0x94 + ldr r1, [r5, #0x64] + ldr r2, [r2] + add r0, r5, #0 + mov r3, #0x13 + bl MOD11_02246D84 + cmp r0, #1 + bne _022343C6 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #2 + bne _022343C6 + mov r0, #1 + str r0, [sp, #8] + b _0223444C +_022343C6: + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02234548 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x18 + tst r0, r1 + beq _0223444C + mov r0, #2 + str r0, [sp, #8] + b _0223444C +_022343E4: + add r1, r4, #1 + add r2, r6, r1 + mov r1, #0x18 + ldrsb r1, [r2, r1] + cmp r1, #0 + bne _0223444C + ldr r1, _02234544 ; =0x0000213C + lsr r0, r0, #0xa + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + sub r0, r0, #2 + cmp r0, #1 + bhi _02234414 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02234414: + add r0, r5, #0 + mov r1, #0x91 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0xc + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + add r1, r4, #1 + add r0, #0xfc + str r1, [r0] + ldr r1, [sp, #0x14] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223444C: + ldr r0, [sp, #8] + cmp r0, #2 + bne _0223446A + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #1 + bne _0223446A + ldr r1, [sp, #0xc] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223446A: + ldr r0, [sp, #8] + cmp r0, #0 + beq _02234488 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #2 + bne _02234488 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02234488: + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223449C + ldr r1, [sp, #0x14] + add r0, r5, #0 + bl MOD11_0223A424 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223449C: + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #3 + bne _022344F0 + add r0, r5, #0 + ldr r1, _0223454C ; =0x00000296 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x36 + add r0, #0xf5 + strb r1, [r0] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02234540 ; =0x00002D67 + ldrb r1, [r1, r0] + add r0, r5, #0 + add r0, #0xfc + str r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + mov r1, #1 + lsl r1, r1, #8 + str r0, [r5, r1] + add r2, r4, #1 + add r0, r1, #4 + str r2, [r5, r0] + b _02234524 +_022344F0: + mov r0, #0 + mvn r0, r0 + cmp r7, r0 + bne _022344FC + ldr r1, _02234550 ; =0x000002FA + b _022344FE +_022344FC: + ldr r1, _02234554 ; =0x000002FD +_022344FE: + add r0, r5, #0 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0xc + add r0, #0xf5 + strb r1, [r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r4, #1 + add r5, #0xfc + str r0, [r5] +_02234524: + add r6, #0x18 + add r1, r4, #1 + ldrsb r0, [r6, r1] + add r0, r0, r7 + strb r0, [r6, r1] + ldrsb r0, [r6, r1] + cmp r0, #0 + bge _02234538 + mov r0, #0 + strb r0, [r6, r1] +_02234538: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02234540: .word 0x00002D67 +_02234544: .word 0x0000213C +_02234548: .word 0x00002DB0 +_0223454C: .word 0x00000296 +_02234550: .word 0x000002FA +_02234554: .word 0x000002FD + + thumb_func_start MOD11_02234558 +MOD11_02234558: ; 0x02234558 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + ldr r0, [sp] + ldr r2, [sp, #8] + add r1, r5, #0 + bl MOD11_0223C230 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0xc] + cmp r7, #0x14 + bhi _02234644 + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022345B2: ; jump table + .short _02234644 - _022345B2 - 2 ; case 0 + .short _02234644 - _022345B2 - 2 ; case 1 + .short _02234644 - _022345B2 - 2 ; case 2 + .short _02234644 - _022345B2 - 2 ; case 3 + .short _02234644 - _022345B2 - 2 ; case 4 + .short _02234644 - _022345B2 - 2 ; case 5 + .short _02234644 - _022345B2 - 2 ; case 6 + .short _022345DC - _022345B2 - 2 ; case 7 + .short _022345E0 - _022345B2 - 2 ; case 8 + .short _022345E6 - _022345B2 - 2 ; case 9 + .short _022345EC - _022345B2 - 2 ; case 10 + .short _022345F2 - _022345B2 - 2 ; case 11 + .short _022345FE - _022345B2 - 2 ; case 12 + .short _02234606 - _022345B2 - 2 ; case 13 + .short _02234610 - _022345B2 - 2 ; case 14 + .short _02234616 - _022345B2 - 2 ; case 15 + .short _0223461C - _022345B2 - 2 ; case 16 + .short _02234626 - _022345B2 - 2 ; case 17 + .short _0223462C - _022345B2 - 2 ; case 18 + .short _02234638 - _022345B2 - 2 ; case 19 + .short _0223463E - _022345B2 - 2 ; case 20 +_022345DC: + str r4, [sp, #0xc] + b _02234648 +_022345E0: + add r0, r0, r4 + str r0, [sp, #0xc] + b _02234648 +_022345E6: + sub r0, r0, r4 + str r0, [sp, #0xc] + b _02234648 +_022345EC: + orr r0, r4 + str r0, [sp, #0xc] + b _02234648 +_022345F2: + mov r1, #0 + mvn r1, r1 + eor r1, r4 + and r0, r1 + str r0, [sp, #0xc] + b _02234648 +_022345FE: + add r1, r0, #0 + mul r1, r4 + str r1, [sp, #0xc] + b _02234648 +_02234606: + add r1, r4, #0 + blx _s32_div_f + str r0, [sp, #0xc] + b _02234648 +_02234610: + lsl r0, r4 + str r0, [sp, #0xc] + b _02234648 +_02234616: + asr r0, r4 + str r0, [sp, #0xc] + b _02234648 +_0223461C: + add r0, r4, #0 + bl FUN_0206A92C + str r0, [sp, #0xc] + b _02234648 +_02234626: + bl ErrorHandling + b _02234648 +_0223462C: + sub r0, r0, r4 + str r0, [sp, #0xc] + bpl _02234648 + mov r0, #0 + str r0, [sp, #0xc] + b _02234648 +_02234638: + eor r0, r4 + str r0, [sp, #0xc] + b _02234648 +_0223463E: + and r0, r4 + str r0, [sp, #0xc] + b _02234648 +_02234644: + bl ErrorHandling +_02234648: + cmp r6, #0x1a + bne _0223465E + ldr r1, [sp, #4] + ldr r2, [sp, #0xc] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD11_0223D1C4 +_0223465E: + ldr r1, [sp, #4] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0xc + bl MOD11_0224379C + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r5, #0 + bl MOD11_02245190 + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0223467C +MOD11_0223467C: ; 0x0223467C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_0223C230 + ldr r1, _022346B4 ; =0x0000218C + add r2, r5, r1 + lsl r1, r0, #2 + ldr r0, [r2, r1] + orr r0, r4 + str r0, [r2, r1] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022346B4: .word 0x0000218C + + thumb_func_start MOD11_022346B8 +MOD11_022346B8: ; 0x022346B8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_02255D3C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022346F0 +MOD11_022346F0: ; 0x022346F0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + cmp r4, #0 + bne _02234766 + ldr r0, [sp] + bl MOD11_0222FF84 + mov r4, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _022347A8 +_02234732: + cmp r7, #0 + bne _02234750 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _0223475C + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] + b _022347A8 +_02234750: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r6, r0 + beq _022347A8 +_0223475C: + ldr r0, [sp, #4] + add r4, r4, #1 + cmp r4, r0 + blt _02234732 + b _022347A8 +_02234766: + ldr r0, [sp] + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r4, r0, #0 + cmp r7, #0 + bne _02234790 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _022347A8 + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] + b _022347A8 +_02234790: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r6, r0 + beq _022347A8 + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] +_022347A8: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022347B0 +MOD11_022347B0: ; 0x022347B0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + bl FUN_0201B9EC + add r1, r4, #1 + blx _s32_div_f + mov r0, #0x4d + add r1, r6, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_022347E4 +MOD11_022347E4: ; 0x022347E4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223A444 + add r4, r0, #0 + ldr r2, [sp] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_0223A444 + add r1, r0, #0 + cmp r6, #0x14 + bhi _022348F2 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234832: ; jump table + .short _022348F2 - _02234832 - 2 ; case 0 + .short _022348F2 - _02234832 - 2 ; case 1 + .short _022348F2 - _02234832 - 2 ; case 2 + .short _022348F2 - _02234832 - 2 ; case 3 + .short _022348F2 - _02234832 - 2 ; case 4 + .short _022348F2 - _02234832 - 2 ; case 5 + .short _022348F2 - _02234832 - 2 ; case 6 + .short _0223485C - _02234832 - 2 ; case 7 + .short _02234862 - _02234832 - 2 ; case 8 + .short _0223486C - _02234832 - 2 ; case 9 + .short _02234876 - _02234832 - 2 ; case 10 + .short _02234880 - _02234832 - 2 ; case 11 + .short _02234890 - _02234832 - 2 ; case 12 + .short _0223489A - _02234832 - 2 ; case 13 + .short _022348A6 - _02234832 - 2 ; case 14 + .short _022348B2 - _02234832 - 2 ; case 15 + .short _022348BE - _02234832 - 2 ; case 16 + .short _022348C8 - _02234832 - 2 ; case 17 + .short _022348CE - _02234832 - 2 ; case 18 + .short _022348DE - _02234832 - 2 ; case 19 + .short _022348E8 - _02234832 - 2 ; case 20 +_0223485C: + ldr r0, [r1] + str r0, [r4] + b _022348F6 +_02234862: + ldr r2, [r4] + ldr r0, [r1] + add r0, r2, r0 + str r0, [r4] + b _022348F6 +_0223486C: + ldr r2, [r4] + ldr r0, [r1] + sub r0, r2, r0 + str r0, [r4] + b _022348F6 +_02234876: + ldr r2, [r4] + ldr r0, [r1] + orr r0, r2 + str r0, [r4] + b _022348F6 +_02234880: + mov r0, #0 + ldr r1, [r1] + mvn r0, r0 + ldr r2, [r4] + eor r0, r1 + and r0, r2 + str r0, [r4] + b _022348F6 +_02234890: + ldr r2, [r4] + ldr r0, [r1] + mul r0, r2 + str r0, [r4] + b _022348F6 +_0223489A: + ldr r0, [r4] + ldr r1, [r1] + blx _s32_div_f + str r0, [r4] + b _022348F6 +_022348A6: + ldr r2, [r4] + ldr r0, [r1] + add r1, r2, #0 + lsl r1, r0 + str r1, [r4] + b _022348F6 +_022348B2: + ldr r2, [r4] + ldr r0, [r1] + add r1, r2, #0 + asr r1, r0 + str r1, [r4] + b _022348F6 +_022348BE: + ldr r0, [r1] + bl FUN_0206A92C + str r0, [r4] + b _022348F6 +_022348C8: + ldr r0, [r4] + str r0, [r1] + b _022348F6 +_022348CE: + ldr r2, [r4] + ldr r0, [r1] + sub r0, r2, r0 + str r0, [r4] + bpl _022348F6 + mov r0, #0 + str r0, [r4] + b _022348F6 +_022348DE: + ldr r2, [r4] + ldr r0, [r1] + eor r0, r2 + str r0, [r4] + b _022348F6 +_022348E8: + ldr r2, [r4] + ldr r0, [r1] + and r0, r2 + str r0, [r4] + b _022348F6 +_022348F2: + bl ErrorHandling +_022348F6: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022348FC +MOD11_022348FC: ; 0x022348FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r5, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + ldr r2, [sp, #4] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0223C230 + str r0, [sp] + ldr r1, [sp] + add r0, r4, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0xc] + ldr r2, [sp, #8] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0223A444 + add r1, r0, #0 + cmp r5, #0x14 + bhi _02234A22 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234962: ; jump table + .short _02234A22 - _02234962 - 2 ; case 0 + .short _02234A22 - _02234962 - 2 ; case 1 + .short _02234A22 - _02234962 - 2 ; case 2 + .short _02234A22 - _02234962 - 2 ; case 3 + .short _02234A22 - _02234962 - 2 ; case 4 + .short _02234A22 - _02234962 - 2 ; case 5 + .short _02234A22 - _02234962 - 2 ; case 6 + .short _0223498C - _02234962 - 2 ; case 7 + .short _02234992 - _02234962 - 2 ; case 8 + .short _0223499C - _02234962 - 2 ; case 9 + .short _022349A6 - _02234962 - 2 ; case 10 + .short _022349B0 - _02234962 - 2 ; case 11 + .short _022349C0 - _02234962 - 2 ; case 12 + .short _022349CA - _02234962 - 2 ; case 13 + .short _022349D6 - _02234962 - 2 ; case 14 + .short _022349E2 - _02234962 - 2 ; case 15 + .short _022349EE - _02234962 - 2 ; case 16 + .short _022349F8 - _02234962 - 2 ; case 17 + .short _022349FE - _02234962 - 2 ; case 18 + .short _02234A0E - _02234962 - 2 ; case 19 + .short _02234A18 - _02234962 - 2 ; case 20 +_0223498C: + ldr r0, [r1] + str r0, [sp, #0xc] + b _02234A26 +_02234992: + ldr r2, [sp, #0xc] + ldr r0, [r1] + add r0, r2, r0 + str r0, [sp, #0xc] + b _02234A26 +_0223499C: + ldr r2, [sp, #0xc] + ldr r0, [r1] + sub r0, r2, r0 + str r0, [sp, #0xc] + b _02234A26 +_022349A6: + ldr r2, [sp, #0xc] + ldr r0, [r1] + orr r0, r2 + str r0, [sp, #0xc] + b _02234A26 +_022349B0: + ldr r2, [r1] + mov r1, #0 + mvn r1, r1 + ldr r0, [sp, #0xc] + eor r1, r2 + and r0, r1 + str r0, [sp, #0xc] + b _02234A26 +_022349C0: + ldr r2, [sp, #0xc] + ldr r0, [r1] + mul r0, r2 + str r0, [sp, #0xc] + b _02234A26 +_022349CA: + ldr r0, [sp, #0xc] + ldr r1, [r1] + blx _s32_div_f + str r0, [sp, #0xc] + b _02234A26 +_022349D6: + ldr r2, [sp, #0xc] + ldr r0, [r1] + add r1, r2, #0 + lsl r1, r0 + str r1, [sp, #0xc] + b _02234A26 +_022349E2: + ldr r2, [sp, #0xc] + ldr r0, [r1] + add r1, r2, #0 + asr r1, r0 + str r1, [sp, #0xc] + b _02234A26 +_022349EE: + ldr r0, [r1] + bl FUN_0206A92C + str r0, [sp, #0xc] + b _02234A26 +_022349F8: + ldr r0, [sp, #0xc] + str r0, [r1] + b _02234A26 +_022349FE: + ldr r2, [sp, #0xc] + ldr r0, [r1] + sub r0, r2, r0 + str r0, [sp, #0xc] + bpl _02234A26 + mov r0, #0 + str r0, [sp, #0xc] + b _02234A26 +_02234A0E: + ldr r2, [sp, #0xc] + ldr r0, [r1] + eor r0, r2 + str r0, [sp, #0xc] + b _02234A26 +_02234A18: + ldr r2, [sp, #0xc] + ldr r0, [r1] + and r0, r2 + str r0, [sp, #0xc] + b _02234A26 +_02234A22: + bl ErrorHandling +_02234A26: + cmp r5, #0x11 + beq _02234A56 + cmp r6, #0x1a + bne _02234A40 + ldr r1, [sp] + ldr r2, [sp, #0xc] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD11_0223D1C4 +_02234A40: + ldr r1, [sp] + add r0, r4, #0 + add r2, r6, #0 + add r3, sp, #0xc + bl MOD11_0224379C + ldr r2, [sp] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02245190 +_02234A56: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02234A5C +MOD11_02234A5C: ; 0x02234A5C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_0223A424 + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02234A7C +MOD11_02234A7C: ; 0x02234A7C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A43C + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD11_02234A9C +MOD11_02234A9C: ; 0x02234A9C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A444 + add r2, r0, #0 + ldr r2, [r2] + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A43C + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02234ACC +MOD11_02234ACC: ; 0x02234ACC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp, #8] + mov r4, #0 + bl MOD11_0222FF74 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r5, #0x64] + lsl r0, r1, #1 + add r2, r5, r0 + ldr r0, _02234BCC ; =0x00003084 + ldrh r2, [r2, r0] + cmp r2, #0 + beq _02234AF6 + add r4, r2, #0 + b _02234B40 +_02234AF6: + mov r2, #2 + tst r2, r6 + beq _02234B40 + lsl r1, r1, #3 + add r3, r5, r1 + add r1, r0, #0 + add r1, #0xe + add r4, r0, #0 + ldrh r2, [r3, r1] + add r1, r0, #0 + add r4, #8 + add r0, #0xa + add r1, #0xc + ldrh r4, [r3, r4] + ldrh r0, [r3, r0] + ldrh r1, [r3, r1] + add r0, r4, r0 + add r0, r1, r0 + add r4, r2, r0 + beq _02234B40 + ldr r6, _02234BD0 ; =0x0000308C + mov r7, #0x1e +_02234B22: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r0, r0, #0x1e + ldr r1, [r5, #0x64] + sub r0, r0, r2 + ror r0, r7 + add r0, r2, r0 + lsl r1, r1, #3 + lsl r2, r0, #1 + add r0, r5, r1 + add r0, r2, r0 + ldrh r4, [r0, r6] + cmp r4, #0 + beq _02234B22 +_02234B40: + cmp r4, #0 + beq _02234BAA + lsl r1, r4, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD11_0224C0B4 + cmp r0, #1 + bne _02234BAA + ldr r1, _02234BD4 ; =0x0000213C + lsl r3, r4, #0x10 + ldr r2, [r5, r1] + mov r0, #1 + bic r2, r0 + str r2, [r5, r1] + ldr r2, [r5, r1] + ldr r0, _02234BD8 ; =0xFFFFBFFF + lsr r3, r3, #0x10 + and r0, r2 + str r0, [r5, r1] + ldr r0, _02234BDC ; =0x00003044 + add r1, r5, #0 + str r4, [r5, r0] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r2, [r5, #0x64] + bl MOD11_02244C28 + str r0, [r5, #0x6c] + cmp r0, #0xff + bne _02234B94 + mov r2, #0x26 + str r2, [r5, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, #0xf3 + bl MOD11_0223A434 + b _02234BC4 +_02234B94: + ldr r1, [r5, #0x64] + lsl r1, r1, #4 + add r2, r5, r1 + ldr r1, _02234BE0 ; =0x000021AC + str r0, [r2, r1] + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD11_0223A434 + b _02234BC4 +_02234BAA: + ldr r2, [r5, #0x64] + mov r0, #0xb5 + lsl r0, r0, #2 + mov r1, #0x1c + add r3, r2, #0 + mul r3, r1 + add r0, r5, r0 + ldr r2, [r0, r3] + mov r1, #1 + bic r2, r1 + mov r1, #1 + orr r1, r2 + str r1, [r0, r3] +_02234BC4: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02234BCC: .word 0x00003084 +_02234BD0: .word 0x0000308C +_02234BD4: .word 0x0000213C +_02234BD8: .word 0xFFFFBFFF +_02234BDC: .word 0x00003044 +_02234BE0: .word 0x000021AC + + thumb_func_start MOD11_02234BE4 +MOD11_02234BE4: ; 0x02234BE4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0222FF84 + mov r2, #0 + cmp r0, #0 + ble _02234C24 + ldr r6, _02234C28 ; =0x00002D58 + mov r1, #6 + add r5, r6, #0 + add r5, #0x58 +_02234C06: + mov r7, #0 +_02234C08: + add r3, r4, r7 + add r7, r7, #1 + strb r1, [r3, r6] + cmp r7, #8 + blt _02234C08 + ldr r3, _02234C2C ; =0x00002DB0 + add r2, r2, #1 + ldr r7, [r4, r3] + ldr r3, _02234C30 ; =0xFFEFFFFF + and r3, r7 + str r3, [r4, r5] + add r4, #0xc0 + cmp r2, r0 + blt _02234C06 +_02234C24: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234C28: .word 0x00002D58 +_02234C2C: .word 0x00002DB0 +_02234C30: .word 0xFFEFFFFF + + thumb_func_start MOD11_02234C34 +MOD11_02234C34: ; 0x02234C34 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022451C0 + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02234C60 +MOD11_02234C60: ; 0x02234C60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022451F0 + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02234C8C +MOD11_02234C8C: ; 0x02234C8C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_02255E0C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02234CC4 +MOD11_02234CC4: ; 0x02234CC4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_02255E2C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02234CFC +MOD11_02234CFC: ; 0x02234CFC + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp] + mov r0, #5 + mov r1, #0x60 + bl FUN_02016998 + add r4, r0, #0 + ldr r0, [sp] + add r6, r7, #0 + lsl r0, r0, #1 + add r6, #0xa0 + str r0, [sp, #4] + ldrh r0, [r6, r0] + add r1, sp, #8 + bl FUN_0206ADE0 + ldr r0, [sp, #4] + add r1, r4, #0 + ldrh r0, [r6, r0] + bl FUN_0206ADF0 + add r0, sp, #8 + ldrb r1, [r0] + cmp r1, #3 + bhi _02234D48 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02234D40: ; jump table + .short _02234D48 - _02234D40 - 2 ; case 0 + .short _02234D5C - _02234D40 - 2 ; case 1 + .short _02234D6E - _02234D40 - 2 ; case 2 + .short _02234D7E - _02234D40 - 2 ; case 3 +_02234D48: + add r0, sp, #8 + ldrb r0, [r0, #3] + sub r1, r0, #1 + mov r0, #6 + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #2] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _02234D8C +_02234D5C: + ldrb r0, [r0, #3] + sub r1, r0, #1 + mov r0, #0xe + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #2] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _02234D8C +_02234D6E: + ldrb r0, [r0, #3] + sub r0, r0, #1 + lsl r0, r0, #3 + add r0, r4, r0 + ldrh r0, [r0, #2] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _02234D8C +_02234D7E: + ldrb r0, [r0, #3] + sub r0, r0, #1 + lsl r0, r0, #4 + add r0, r4, r0 + ldrh r0, [r0, #2] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 +_02234D8C: + ldr r2, [r7, #0x2c] + mov r0, #0x10 + tst r0, r2 + bne _02234D98 + cmp r2, #0x4b + bne _02234DAE +_02234D98: + add r0, sp, #8 + ldrb r2, [r0, #1] + ldr r0, _02234DEC ; =0x0225FF20 + lsl r1, r1, #2 + ldrb r0, [r0, r2] + ldr r2, _02234DF0 ; =0x00002168 + ldr r2, [r5, r2] + add r5, r0, #0 + mul r1, r2 + mul r5, r1 + b _02234DDE +_02234DAE: + mov r0, #2 + tst r0, r2 + add r0, sp, #8 + beq _02234DCC + ldrb r2, [r0, #1] + ldr r0, _02234DEC ; =0x0225FF20 + lsl r1, r1, #2 + ldrb r0, [r0, r2] + ldr r2, _02234DF0 ; =0x00002168 + ldr r2, [r5, r2] + add r5, r0, #0 + mul r1, r2 + lsl r1, r1, #1 + mul r5, r1 + b _02234DDE +_02234DCC: + ldrb r2, [r0, #1] + ldr r0, _02234DEC ; =0x0225FF20 + lsl r1, r1, #2 + ldrb r0, [r0, r2] + ldr r2, _02234DF0 ; =0x00002168 + ldr r2, [r5, r2] + add r5, r0, #0 + mul r1, r2 + mul r5, r1 +_02234DDE: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_02234DEC: .word 0x0225FF20 +_02234DF0: .word 0x00002168 + + thumb_func_start MOD11_02234DF4 +MOD11_02234DF4: ; 0x02234DF4 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, _02234E70 ; =0x0000241C + ldrb r0, [r5, r0] + cmp r0, #1 + bne _02234E3E + add r0, r5, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD11_02234CFC + add r4, r0, #0 + ldr r1, [r5, #0x2c] + mov r0, #0x10 + tst r0, r1 + bne _02234E22 + cmp r1, #0x4b + bne _02234E2E +_02234E22: + add r0, r5, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD11_02234CFC + add r4, r4, r0 +_02234E2E: + add r0, r5, #0 + mov r1, #0 + bl MOD11_022301D4 + add r1, r4, #0 + bl FUN_02023A30 + b _02234E56 +_02234E3E: + ldr r0, [r5, #0x68] + ldr r1, [r5, #0x48] + bl MOD11_0223158C + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD11_022301D4 + add r1, r4, #0 + bl FUN_02023A54 +_02234E56: + cmp r4, #0 + beq _02234E62 + mov r0, #0x13 + lsl r0, r0, #4 + str r4, [r6, r0] + b _02234E6A +_02234E62: + mov r0, #0x13 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] +_02234E6A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02234E70: .word 0x0000241C + + thumb_func_start MOD11_02234E74 +MOD11_02234E74: ; 0x02234E74 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_02230E20 + cmp r0, #1 + beq _02234EAC + cmp r4, #0xf + beq _02234EAC + cmp r4, #0x10 + beq _02234EAC + add r0, r4, #0 + sub r0, #0x19 + cmp r0, #1 + bhi _02234ED2 +_02234EAC: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_0223C230 + add r7, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD11_0224C20C + cmp r0, #1 + bne _02234ED2 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD11_02255E4C +_02234ED2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02234ED8 +MOD11_02234ED8: ; 0x02234ED8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_02230E20 + cmp r0, #1 + beq _02234F1A + cmp r4, #0xf + beq _02234F1A + cmp r4, #0x10 + beq _02234F1A + add r0, r4, #0 + sub r0, #0x19 + cmp r0, #1 + bhi _02234F5C +_02234F1A: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_0223C230 + add r7, r0, #0 + ldr r2, [sp, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223C230 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD11_0224C20C + cmp r0, #1 + bne _02234F5C + ldr r1, [sp, #8] + add r0, r5, #0 + add r2, r4, #0 + bl MOD11_0224C20C + cmp r0, #1 + bne _02234F5C + ldr r3, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + str r4, [sp] + bl MOD11_02255E7C +_02234F5C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02234F64 +MOD11_02234F64: ; 0x02234F64 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD11_0223A444 + add r4, r0, #0 + add r0, r7, #0 + bl MOD11_02230E20 + cmp r0, #1 + beq _02234FB4 + cmp r6, #0xf + beq _02234FB4 + cmp r6, #0x10 + beq _02234FB4 + ldr r0, [r4] + sub r0, #0x19 + cmp r0, #1 + bhi _02234FCE +_02234FB4: + ldr r1, [sp] + ldr r2, [r4] + add r0, r5, #0 + bl MOD11_0224C20C + cmp r0, #1 + bne _02234FCE + ldr r2, [sp] + ldr r3, [r4] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02255E4C +_02234FCE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02234FD4 +MOD11_02234FD4: ; 0x02234FD4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r1, r4, #0 + ldr r3, _02235008 ; =0x0000219C + add r4, r4, r2 + ldrb r3, [r4, r3] + add r0, r5, #0 + bl MOD11_02255EAC + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02235008: .word 0x0000219C + + thumb_func_start MOD11_0223500C +MOD11_0223500C: ; 0x0223500C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r1, r4, #0 + ldr r3, _02235040 ; =0x0000219C + add r4, r4, r2 + ldrb r3, [r4, r3] + add r0, r5, #0 + bl MOD11_02255EF0 + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02235040: .word 0x0000219C + + thumb_func_start MOD11_02235044 +MOD11_02235044: ; 0x02235044 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02255F3C + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02235070 +MOD11_02235070: ; 0x02235070 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02255F54 + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0223509C +MOD11_0223509C: ; 0x0223509C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + mov r2, #0x13 + lsl r2, r2, #4 + add r1, r0, #0 + ldr r2, [r4, r2] + add r0, r5, #0 + bl MOD11_02255E2C + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022350CC +MOD11_022350CC: ; 0x022350CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x79 + bne _022350FC + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022350FC: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _02235238 ; =0x00002D4C + mov r6, #0 +_02235108: + ldrh r1, [r2, r0] + cmp r1, #0 + beq _02235116 + add r6, r6, #1 + add r2, r2, #2 + cmp r6, #4 + blt _02235108 +_02235116: + mov r0, #0 + str r0, [sp, #4] + cmp r6, #0 + ble _0223518E + add r7, r0, #0 +_02235120: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r0, r4, r0 + add r2, r7, r0 + ldr r0, _02235238 ; =0x00002D4C + ldrh r0, [r2, r0] + cmp r0, #0xa0 + beq _02235182 + lsl r0, r0, #4 + add r2, r4, r0 + ldr r0, _0223523C ; =0x000003E2 + ldrb r5, [r2, r0] + cmp r5, #9 + bne _02235162 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #7 + beq _0223515C + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #7 + bne _02235160 +_0223515C: + mov r5, #7 + b _02235162 +_02235160: + mov r5, #0 +_02235162: + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _02235182 + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + bne _0223518E +_02235182: + ldr r0, [sp, #4] + add r7, r7, #2 + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, r6 + blt _02235120 +_0223518E: + ldr r0, [sp, #4] + cmp r0, r6 + bne _0223519E + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 + b _02235230 +_0223519E: + ldr r7, _02235238 ; =0x00002D4C +_022351A0: + bl FUN_0201B9EC + add r1, r6, #0 + blx _s32_div_f + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + lsl r1, r1, #1 + add r0, r4, r0 + add r0, r1, r0 + ldrh r0, [r0, r7] + cmp r0, #0xa0 + beq _022351A0 + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _0223523C ; =0x000003E2 + ldrb r5, [r1, r0] + cmp r5, #9 + bne _022351EE + add r1, r2, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #7 + beq _022351E8 + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #7 + bne _022351EC +_022351E8: + mov r5, #7 + b _022351EE +_022351EC: + mov r5, #0 +_022351EE: + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _022351A0 + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _022351A0 + ldr r1, [r4, #0x64] + lsl r0, r5, #0x18 + add r3, r1, #0 + mov r2, #0xc0 + mul r3, r2 + ldr r1, _02235240 ; =0x00002D64 + lsr r0, r0, #0x18 + add r3, r4, r3 + strb r0, [r3, r1] + ldr r3, [r4, #0x64] + add r1, r1, #1 + add r6, r3, #0 + mul r6, r2 + add r3, r4, r6 + strb r0, [r3, r1] + add r2, #0x70 + str r5, [r4, r2] +_02235230: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235238: .word 0x00002D4C +_0223523C: .word 0x000003E2 +_02235240: .word 0x00002D64 + + thumb_func_start MOD11_02235244 +MOD11_02235244: ; 0x02235244 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r6, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r0, [sp] + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_0223A444 + add r4, r0, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r6, #0 + bl MOD11_0223A444 + cmp r7, #6 + bhi _022352FC + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223529A: ; jump table + .short _022352A8 - _0223529A - 2 ; case 0 + .short _022352B4 - _0223529A - 2 ; case 1 + .short _022352C0 - _0223529A - 2 ; case 2 + .short _022352CC - _0223529A - 2 ; case 3 + .short _022352D8 - _0223529A - 2 ; case 4 + .short _022352E4 - _0223529A - 2 ; case 5 + .short _022352F0 - _0223529A - 2 ; case 6 +_022352A8: + ldr r1, [r4] + ldr r0, [r0] + cmp r1, r0 + beq _022352FC + mov r5, #0 + b _022352FC +_022352B4: + ldr r1, [r4] + ldr r0, [r0] + cmp r1, r0 + bne _022352FC + mov r5, #0 + b _022352FC +_022352C0: + ldr r1, [r4] + ldr r0, [r0] + cmp r1, r0 + bhi _022352FC + mov r5, #0 + b _022352FC +_022352CC: + ldr r1, [r4] + ldr r0, [r0] + cmp r1, r0 + bls _022352FC + mov r5, #0 + b _022352FC +_022352D8: + ldr r1, [r4] + ldr r0, [r0] + tst r0, r1 + bne _022352FC + mov r5, #0 + b _022352FC +_022352E4: + ldr r1, [r4] + ldr r0, [r0] + tst r0, r1 + beq _022352FC + mov r5, #0 + b _022352FC +_022352F0: + ldr r1, [r0] + ldr r0, [r4] + and r0, r1 + cmp r1, r0 + beq _022352FC + mov r5, #0 +_022352FC: + cmp r5, #0 + beq _02235308 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223A424 +_02235308: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02235310 +MOD11_02235310: ; 0x02235310 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r6, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r0, [sp] + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + ldr r2, [sp, #4] + add r0, r6, #0 + mov r3, #0 + bl MOD11_02243420 + add r4, r0, #0 + ldr r0, [sp] + ldr r2, [sp, #8] + add r1, r6, #0 + bl MOD11_0223A444 + cmp r7, #6 + bhi _022353D0 + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223537A: ; jump table + .short _02235388 - _0223537A - 2 ; case 0 + .short _02235392 - _0223537A - 2 ; case 1 + .short _0223539C - _0223537A - 2 ; case 2 + .short _022353A6 - _0223537A - 2 ; case 3 + .short _022353B0 - _0223537A - 2 ; case 4 + .short _022353BA - _0223537A - 2 ; case 5 + .short _022353C4 - _0223537A - 2 ; case 6 +_02235388: + ldr r0, [r0] + cmp r4, r0 + beq _022353D0 + mov r5, #0 + b _022353D0 +_02235392: + ldr r0, [r0] + cmp r4, r0 + bne _022353D0 + mov r5, #0 + b _022353D0 +_0223539C: + ldr r0, [r0] + cmp r4, r0 + bhi _022353D0 + mov r5, #0 + b _022353D0 +_022353A6: + ldr r0, [r0] + cmp r4, r0 + bls _022353D0 + mov r5, #0 + b _022353D0 +_022353B0: + ldr r0, [r0] + tst r0, r4 + bne _022353D0 + mov r5, #0 + b _022353D0 +_022353BA: + ldr r0, [r0] + tst r0, r4 + beq _022353D0 + mov r5, #0 + b _022353D0 +_022353C4: + ldr r1, [r0] + add r0, r1, #0 + and r0, r4 + cmp r1, r0 + beq _022353D0 + mov r5, #0 +_022353D0: + cmp r5, #0 + beq _022353DC + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223A424 +_022353DC: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022353E4 +MOD11_022353E4: ; 0x022353E4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, _0223542C ; =0x00002168 + ldr r2, [r4, r0] + ldr r1, [r4, r1] + add r3, r2, #0 + mul r3, r1 + add r1, r0, #0 + sub r1, #0x1c + str r3, [r4, r1] + add r1, r0, #0 + sub r1, #0x1c + ldr r2, [r4, r1] + ldr r1, _02235430 ; =0x0000FFFF + cmp r2, r1 + ble _02235416 + sub r0, #0x1c + str r1, [r4, r0] +_02235416: + add r0, r5, #0 + mov r1, #0 + bl MOD11_022301D4 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_02023A30 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223542C: .word 0x00002168 +_02235430: .word 0x0000FFFF + + thumb_func_start MOD11_02235434 +MOD11_02235434: ; 0x02235434 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r1, [r5, #0x64] + add r0, r7, #0 + bl MOD11_02230270 + add r6, r0, #0 + mov r0, #0x6f + lsl r0, r0, #2 + add r3, r5, r0 + lsl r2, r6, #2 + ldr r1, [r3, r2] + mov r4, #2 + tst r4, r1 + beq _02235478 + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223A424 + ldr r1, _02235508 ; =0x0000216C + mov r0, #0x40 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] + b _02235504 +_02235478: + mov r4, #2 + orr r1, r4 + str r1, [r3, r2] + add r1, r0, #0 + add r1, #8 + add r4, r5, r1 + lsl r6, r6, #3 + ldr r2, [r4, r6] + ldr r1, _0223550C ; =0xFFFFFC7F + add r0, #0xc4 + and r1, r2 + orr r0, r1 + str r0, [r4, r6] + ldr r0, [r4, r6] + mov r1, #0x60 + bic r0, r1 + ldr r1, [r5, #0x64] + lsl r1, r1, #0x1e + lsr r1, r1, #0x19 + orr r0, r1 + str r0, [r4, r6] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02249D90 + cmp r0, #0x60 + bne _022354CC + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r2, #0 + bl MOD11_02249DA4 + ldr r1, [r4, r6] + ldr r2, _0223550C ; =0xFFFFFC7F + and r2, r1 + lsl r1, r1, #0x16 + lsr r1, r1, #0x1d + add r0, r1, r0 + lsl r0, r0, #0x1d + lsr r0, r0, #0x16 + orr r0, r2 + str r0, [r4, r6] +_022354CC: + add r0, r5, #0 + mov r1, #0x14 + add r0, #0xf5 + strb r1, [r0] + ldr r0, _02235510 ; =0x00003044 + mov r2, #1 + ldr r1, [r5, r0] + add r0, r5, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0xfc + str r1, [r0] + ldr r3, [r5, #0x64] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_022467AC + cmp r0, #2 + bne _022354FE + mov r0, #0xc0 + add r5, #0xf6 + strh r0, [r5] + b _02235504 +_022354FE: + mov r0, #0xbe + add r5, #0xf6 + strh r0, [r5] +_02235504: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235508: .word 0x0000216C +_0223550C: .word 0xFFFFFC7F +_02235510: .word 0x00003044 + + thumb_func_start MOD11_02235514 +MOD11_02235514: ; 0x02235514 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r1, [r5, #0x64] + add r0, r7, #0 + bl MOD11_02230270 + add r6, r0, #0 + mov r0, #0x6f + lsl r0, r0, #2 + add r3, r5, r0 + lsl r2, r6, #2 + ldr r1, [r3, r2] + mov r4, #1 + tst r4, r1 + beq _02235558 + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223A424 + ldr r1, _022355EC ; =0x0000216C + mov r0, #0x40 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] + b _022355E6 +_02235558: + mov r4, #1 + orr r1, r4 + add r0, #8 + add r4, r5, r0 + lsl r6, r6, #3 + str r1, [r3, r2] + ldr r1, [r4, r6] + mov r0, #0x1c + bic r1, r0 + mov r0, #0x14 + orr r0, r1 + str r0, [r4, r6] + ldr r0, [r4, r6] + mov r1, #3 + bic r0, r1 + ldr r2, [r5, #0x64] + mov r1, #3 + and r1, r2 + orr r0, r1 + str r0, [r4, r6] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02249D90 + cmp r0, #0x60 + bne _022355AE + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r2, #0 + bl MOD11_02249DA4 + ldr r1, [r4, r6] + add r3, r0, #0 + mov r0, #0x1c + add r2, r1, #0 + bic r2, r0 + lsl r0, r1, #0x1b + lsr r0, r0, #0x1d + add r0, r0, r3 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1b + orr r0, r2 + str r0, [r4, r6] +_022355AE: + add r0, r5, #0 + mov r1, #0x14 + add r0, #0xf5 + strb r1, [r0] + ldr r0, _022355F0 ; =0x00003044 + mov r2, #1 + ldr r1, [r5, r0] + add r0, r5, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0xfc + str r1, [r0] + ldr r3, [r5, #0x64] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_022467AC + cmp r0, #2 + bne _022355E0 + mov r0, #0xc4 + add r5, #0xf6 + strh r0, [r5] + b _022355E6 +_022355E0: + mov r0, #0xc2 + add r5, #0xf6 + strh r0, [r5] +_022355E6: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022355EC: .word 0x0000216C +_022355F0: .word 0x00003044 + + thumb_func_start MOD11_022355F4 +MOD11_022355F4: ; 0x022355F4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + mov r5, #0x6f + add r2, r0, #0 + lsl r5, r5, #2 + add r1, r4, r5 + lsl r0, r2, #2 + ldr r6, [r1, r0] + mov r3, #0x40 + tst r3, r6 + beq _02235638 + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223A424 + ldr r1, _02235668 ; =0x0000216C + mov r0, #0x40 + ldr r2, [r4, r1] + orr r0, r2 + str r0, [r4, r1] + b _02235662 +_02235638: + mov r3, #0x40 + orr r3, r6 + str r3, [r1, r0] + add r5, #8 + lsl r0, r2, #3 + add r1, r4, r5 + ldr r3, [r1, r0] + ldr r2, _0223566C ; =0xFFFF8FFF + and r3, r2 + mov r2, #5 + lsl r2, r2, #0xc + orr r2, r3 + str r2, [r1, r0] + ldr r3, [r1, r0] + ldr r2, _02235670 ; =0xFFFFF3FF + and r3, r2 + ldr r2, [r4, #0x64] + lsl r2, r2, #0x1e + lsr r2, r2, #0x14 + orr r2, r3 + str r2, [r1, r0] +_02235662: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235668: .word 0x0000216C +_0223566C: .word 0xFFFF8FFF +_02235670: .word 0xFFFFF3FF + + thumb_func_start MOD11_02235674 +MOD11_02235674: ; 0x02235674 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, _02235844 ; =0x0000213C + mov r0, #1 + ldr r2, [r4, r1] + lsl r0, r0, #0xa + orr r0, r2 + str r0, [r4, r1] + ldr r1, [r4, #0x64] + ldr r2, [r4, #0x6c] + add r0, r4, #0 + mov r3, #5 + bl MOD11_02246D84 + cmp r0, #1 + bne _022356AA + ldr r1, _02235848 ; =0x0000216C + mov r0, #2 + ldr r2, [r4, r1] + lsl r0, r0, #0x12 + orr r0, r2 + str r0, [r4, r1] + b _0223583E +_022356AA: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r1, [r1, r0] + mov r0, #0x18 + tst r0, r1 + bne _02235730 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x63 + beq _02235730 + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x63 + beq _02235730 + ldr r0, _0223584C ; =0x00003044 + mov r2, #0xc0 + ldr r0, [r4, r0] + ldr r5, [r4, #0x6c] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _02235850 ; =0x000003E3 + ldrb r1, [r1, r0] + ldr r0, [r4, #0x64] + add r3, r0, #0 + mul r3, r2 + add r0, r4, r3 + ldr r3, _02235854 ; =0x00002D74 + mul r2, r5 + add r2, r4, r2 + ldrb r0, [r0, r3] + ldrb r2, [r2, r3] + sub r0, r0, r2 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r5 + bge _0223572C + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _02235854 ; =0x00002D74 + add r2, r4, r2 + ldrb r3, [r2, r1] + ldr r2, [r4, #0x6c] + mul r0, r2 + add r0, r4, r0 + ldrb r0, [r0, r1] + cmp r3, r0 + blo _0223572C + mov r3, #1 + b _022357E8 +_0223572C: + mov r3, #0 + b _022357E8 +_02235730: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r3, r4, r0 + ldr r0, _02235858 ; =0x00002DCC + ldr r1, [r4, #0x64] + ldr r2, [r3, r0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1e + cmp r1, r2 + bne _02235750 + sub r0, #0xc + ldr r2, [r3, r0] + mov r0, #0x18 + tst r0, r2 + bne _02235766 +_02235750: + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x63 + beq _02235766 + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x63 + bne _02235784 +_02235766: + ldr r0, [r4, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r3, [r4, #0x6c] + add r0, r4, r2 + ldr r2, _02235854 ; =0x00002D74 + mul r1, r3 + add r1, r4, r1 + ldrb r0, [r0, r2] + ldrb r1, [r1, r2] + cmp r0, r1 + blo _02235784 + mov r3, #1 + b _022357DC +_02235784: + ldr r0, _0223584C ; =0x00003044 + mov r2, #0xc0 + ldr r0, [r4, r0] + ldr r5, [r4, #0x6c] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _02235850 ; =0x000003E3 + ldrb r1, [r1, r0] + ldr r0, [r4, #0x64] + add r3, r0, #0 + mul r3, r2 + add r0, r4, r3 + ldr r3, _02235854 ; =0x00002D74 + mul r2, r5 + add r2, r4, r2 + ldrb r0, [r0, r3] + ldrb r2, [r2, r3] + sub r0, r0, r2 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r5 + bge _022357DA + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _02235854 ; =0x00002D74 + add r2, r4, r2 + ldrb r3, [r2, r1] + ldr r2, [r4, #0x6c] + mul r0, r2 + add r0, r4, r0 + ldrb r0, [r0, r1] + cmp r3, r0 + blo _022357DA + mov r3, #1 + b _022357DC +_022357DA: + mov r3, #0 +_022357DC: + ldr r1, _02235848 ; =0x0000216C + mov r0, #1 + ldr r2, [r4, r1] + lsl r0, r0, #0xa + orr r0, r2 + str r0, [r4, r1] +_022357E8: + cmp r3, #0 + beq _0223580E + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0223585C ; =0x00002D8C + ldr r0, [r1, r0] + ldr r1, _02235860 ; =0x00002144 + neg r0, r0 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x28 + ldr r2, [r4, r0] + mov r0, #0x20 + orr r0, r2 + add r1, #0x28 + str r0, [r4, r1] + b _0223583E +_0223580E: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _02235854 ; =0x00002D74 + add r2, r4, r2 + ldrb r3, [r2, r1] + ldr r2, [r4, #0x6c] + mul r0, r2 + add r0, r4, r0 + ldrb r0, [r0, r1] + cmp r3, r0 + ldr r1, _02235848 ; =0x0000216C + blo _02235834 + ldr r2, [r4, r1] + mov r0, #1 + orr r0, r2 + str r0, [r4, r1] + b _0223583E +_02235834: + mov r0, #1 + ldr r2, [r4, r1] + lsl r0, r0, #0xc + orr r0, r2 + str r0, [r4, r1] +_0223583E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02235844: .word 0x0000213C +_02235848: .word 0x0000216C +_0223584C: .word 0x00003044 +_02235850: .word 0x000003E3 +_02235854: .word 0x00002D74 +_02235858: .word 0x00002DCC +_0223585C: .word 0x00002D8C +_02235860: .word 0x00002144 + + thumb_func_start MOD11_02235864 +MOD11_02235864: ; 0x02235864 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223A444 + add r4, r0, #0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_022476C0 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0223589C +MOD11_0223589C: ; 0x0223589C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223A444 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_0223A444 + add r1, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bge _022358DE + mov r5, #0 + mvn r5, r5 + b _022358E0 +_022358DE: + mov r5, #1 +_022358E0: + ldr r0, [r4] + ldr r1, [r1] + blx _s32_div_f + str r0, [r4] + cmp r0, #0 + bne _022358F0 + str r5, [r4] +_022358F0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_022358F4 +MOD11_022358F4: ; 0x022358F4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r0, [r6, #0x6c] + lsl r0, r0, #1 + add r1, r6, r0 + ldr r0, _02235A18 ; =0x0000307C + ldrh r0, [r1, r0] + bl MOD11_0224C044 + cmp r0, #0 + beq _0223594E + ldr r0, [r6, #0x64] + mov r2, #2 + mov r3, #0xc0 + add r1, r0, #0 + mul r1, r3 + add r0, r6, r1 + ldr r1, _02235A1C ; =0x00002DB0 + mov ip, r0 + ldr r0, [r0, r1] + lsl r2, r2, #0x14 + tst r0, r2 + bne _0223594E + ldr r0, [r6, #0x6c] + add r4, r0, #0 + mul r4, r3 + add r4, r6, r4 + ldr r4, [r4, r1] + lsl r1, r2, #3 + tst r1, r4 + bne _0223594E + lsl r0, r0, #1 + add r1, r6, r0 + ldr r0, _02235A18 ; =0x0000307C + ldrh r7, [r1, r0] + cmp r7, #0 + bne _02235958 +_0223594E: + ldr r1, [sp] + add r0, r6, #0 + bl MOD11_0223A424 + b _02235A14 +_02235958: + mov r2, #0 + sub r3, #0xc1 + mov r4, ip + add r5, r2, #0 +_02235960: + ldr r0, _02235A20 ; =0x00002D4C + ldrh r0, [r4, r0] + cmp r7, r0 + beq _02235988 + mov r0, ip + add r1, r0, r5 + ldr r0, _02235A20 ; =0x00002D4C + ldrh r0, [r1, r0] + cmp r0, #0x66 + bne _0223597E + mov r0, #0 + mvn r0, r0 + cmp r3, r0 + bne _0223597E + add r3, r2, #0 +_0223597E: + add r2, r2, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r2, #4 + blt _02235960 +_02235988: + cmp r2, #4 + bne _02235A0C + mov r4, #0x49 + lsl r4, r4, #2 + str r7, [r6, r4] + ldr r2, [r6, #0x64] + mov r1, #0xc0 + add r5, r2, #0 + mul r5, r1 + add r5, r6, r5 + lsl r2, r3, #1 + add r5, r5, r2 + ldr r0, [r6, r4] + ldr r2, _02235A20 ; =0x00002D4C + strh r0, [r5, r2] + ldr r0, [r6, r4] + lsl r0, r0, #4 + add r4, r6, r0 + mov r0, #0xf9 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #5 + bhs _022359B8 + b _022359BA +_022359B8: + mov r0, #5 +_022359BA: + ldr r4, [r6, #0x64] + add r2, #0x20 + mul r1, r4 + add r1, r6, r1 + add r1, r1, r3 + strb r0, [r1, r2] + add r0, r3, #0 + bl FUN_0206A92C + ldr r1, _02235A24 ; =0x00002DCC + mov r4, #0xc0 + add r3, r6, r1 + ldr r1, [r6, #0x64] + mov r5, #0x3c + add r2, r1, #0 + mul r2, r4 + ldr r7, [r3, r2] + add r1, r7, #0 + bic r1, r5 + lsl r5, r7, #0x1a + lsr r5, r5, #0x1c + orr r0, r5 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1a + orr r0, r1 + str r0, [r3, r2] + add r0, r4, #0 + add r0, #0x64 + ldr r1, [r6, r0] + add r0, r4, #0 + add r0, #0xc3 + cmp r1, r0 + bne _02235A14 + ldr r0, [r6, #0x64] + add r2, r0, #0 + mul r2, r4 + ldr r1, [r3, r2] + ldr r0, _02235A28 ; =0xFFFFE3FF + and r0, r1 + str r0, [r3, r2] + b _02235A14 +_02235A0C: + ldr r1, [sp] + add r0, r6, #0 + bl MOD11_0223A424 +_02235A14: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235A18: .word 0x0000307C +_02235A1C: .word 0x00002DB0 +_02235A20: .word 0x00002D4C +_02235A24: .word 0x00002DCC +_02235A28: .word 0xFFFFE3FF + + thumb_func_start MOD11_02235A2C +MOD11_02235A2C: ; 0x02235A2C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r4, _02235A7C ; =0x00002D4C + mov r7, #0xc0 +_02235A3C: + bl FUN_0201B9EC + ldr r1, _02235A80 ; =0x000001D3 + blx _s32_div_f + add r0, r1, #1 + ldr r1, [r6, #0x64] + lsl r0, r0, #0x10 + add r2, r1, #0 + mul r2, r7 + lsr r5, r0, #0x10 + mov r0, #0 + add r2, r6, r2 +_02235A56: + ldrh r1, [r2, r4] + cmp r5, r1 + beq _02235A64 + add r0, r0, #1 + add r2, r2, #2 + cmp r0, #4 + blt _02235A56 +_02235A64: + cmp r0, #4 + bne _02235A3C + add r0, r5, #0 + bl MOD11_0224C07C + cmp r0, #0 + beq _02235A3C + mov r0, #0x49 + lsl r0, r0, #2 + str r5, [r6, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235A7C: .word 0x00002D4C +_02235A80: .word 0x000001D3 + + thumb_func_start MOD11_02235A84 +MOD11_02235A84: ; 0x02235A84 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + mov r0, #0xb5 + lsl r0, r0, #6 + add r2, r5, r0 + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + lsl r1, r1, #1 + add r0, r2, r0 + add r2, r5, r1 + ldr r1, _02235B34 ; =0x0000307C + ldrh r1, [r2, r1] + bl MOD11_022461AC + ldr r3, [r5, #0x6c] + add r6, r0, #0 + mov r7, #0xc0 + add r0, r3, #0 + mul r0, r7 + add r2, r5, r0 + ldr r0, _02235B38 ; =0x00002DE8 + ldrh r1, [r2, r0] + cmp r1, #0 + bne _02235B26 + cmp r6, #4 + beq _02235B26 + add r1, r0, #0 + add r2, r2, r6 + sub r1, #0x7c + ldrb r1, [r2, r1] + cmp r1, #0 + beq _02235B26 + lsl r1, r3, #1 + add r2, r5, r1 + ldr r1, _02235B34 ; =0x0000307C + ldrh r2, [r2, r1] + cmp r2, #0 + beq _02235B26 + add r1, r7, #0 + add r1, #0x64 + str r2, [r5, r1] + add r1, r7, #0 + add r1, #0x64 + ldr r3, [r5, r1] + ldr r1, [r5, #0x6c] + add r2, r1, #0 + mul r2, r7 + add r1, r5, r2 + strh r3, [r1, r0] + bl FUN_0201B9EC + ldr r1, _02235B3C ; =0x00002DC8 + ldr r4, [r5, #0x6c] + add r3, r5, r1 + add r2, r4, #0 + add r1, r7, #0 + mul r2, r1 + ldr r1, [r3, r2] + mov r4, #7 + bic r1, r4 + lsr r5, r0, #0x1f + lsl r4, r0, #0x1e + sub r4, r4, r5 + mov r0, #0x1e + ror r4, r0 + add r0, r5, r4 + add r4, r0, #3 + mov r0, #7 + and r0, r4 + orr r0, r1 + str r0, [r3, r2] + b _02235B2E +_02235B26: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 +_02235B2E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235B34: .word 0x0000307C +_02235B38: .word 0x00002DE8 +_02235B3C: .word 0x00002DC8 + + thumb_func_start MOD11_02235B40 +MOD11_02235B40: ; 0x02235B40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r5, #0x64] + lsl r0, r1, #6 + add r2, r5, r0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r4, [r2, r0] + ldr r0, [sp] + bl MOD11_02230270 + str r0, [sp, #4] + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02230270 + ldr r6, [r5, #0x64] + add r3, r0, #0 + lsl r0, r6, #6 + add r1, r5, r0 + lsl r0, r4, #2 + add r0, r1, r0 + mov r1, #0x76 + lsl r1, r1, #2 + ldr r7, [r0, r1] + cmp r7, #0 + beq _02235C06 + ldr r0, [sp, #4] + cmp r0, r3 + beq _02235C06 + mov r0, #0xc0 + mul r0, r4 + add r2, r5, r0 + ldr r0, _02235C30 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02235C06 + ldr r0, _02235C34 ; =0x00002144 + lsl r2, r7, #1 + sub r1, #0x14 + str r2, [r5, r0] + add r1, r5, r1 + lsl r0, r3, #3 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02235BC0 + lsl r0, r0, #9 + lsr r0, r0, #0x1e + mov r1, #0xc0 + mul r1, r0 + add r2, r5, r1 + ldr r1, _02235C30 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _02235BC0 + str r0, [r5, #0x6c] + b _02235BC2 +_02235BC0: + str r4, [r5, #0x6c] +_02235BC2: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02235C30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + bne _02235BFA + ldr r0, [sp] + ldr r2, [r5, #0x64] + add r1, r5, #0 + bl MOD11_022482A4 + mov r1, #0xc0 + mul r1, r0 + str r0, [r5, #0x6c] + ldr r0, _02235C30 ; =0x00002D8C + add r1, r5, r1 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02235BFA + mov r2, #0x26 + str r2, [r5, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, #0xf3 + bl MOD11_0223A434 +_02235BFA: + ldr r1, [r5, #0x64] + ldr r2, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_0224C438 + b _02235C28 +_02235C06: + mov r0, #0xb5 + lsl r0, r0, #2 + mov r1, #0x1c + add r3, r6, #0 + mul r3, r1 + add r0, r5, r0 + ldr r2, [r0, r3] + mov r1, #1 + bic r2, r1 + mov r1, #1 + orr r1, r2 + str r1, [r0, r3] + ldr r1, _02235C38 ; =0x0000216C + mov r0, #0x40 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] +_02235C28: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235C30: .word 0x00002D8C +_02235C34: .word 0x00002144 +_02235C38: .word 0x0000216C + + thumb_func_start MOD11_02235C3C +MOD11_02235C3C: ; 0x02235C3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r5, #0x64] + lsl r0, r1, #6 + add r2, r5, r0 + mov r0, #2 + lsl r0, r0, #8 + ldr r4, [r2, r0] + ldr r0, [sp] + bl MOD11_02230270 + str r0, [sp, #4] + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02230270 + ldr r6, [r5, #0x64] + add r3, r0, #0 + lsl r0, r6, #6 + add r1, r5, r0 + lsl r0, r4, #2 + add r0, r1, r0 + mov r1, #0x1f + lsl r1, r1, #4 + ldr r7, [r0, r1] + cmp r7, #0 + beq _02235D02 + ldr r0, [sp, #4] + cmp r0, r3 + beq _02235D02 + mov r0, #0xc0 + mul r0, r4 + add r2, r5, r0 + ldr r0, _02235D2C ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02235D02 + ldr r0, _02235D30 ; =0x00002144 + lsl r2, r7, #1 + sub r1, #0x2c + str r2, [r5, r0] + add r1, r5, r1 + lsl r0, r3, #3 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02235CBC + lsl r0, r0, #9 + lsr r0, r0, #0x1e + mov r1, #0xc0 + mul r1, r0 + add r2, r5, r1 + ldr r1, _02235D2C ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _02235CBC + str r0, [r5, #0x6c] + b _02235CBE +_02235CBC: + str r4, [r5, #0x6c] +_02235CBE: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02235D2C ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + bne _02235CF6 + ldr r0, [sp] + ldr r2, [r5, #0x64] + add r1, r5, #0 + bl MOD11_022482A4 + mov r1, #0xc0 + mul r1, r0 + str r0, [r5, #0x6c] + ldr r0, _02235D2C ; =0x00002D8C + add r1, r5, r1 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02235CF6 + mov r2, #0x26 + str r2, [r5, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, #0xf3 + bl MOD11_0223A434 +_02235CF6: + ldr r1, [r5, #0x64] + ldr r2, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_0224C438 + b _02235D24 +_02235D02: + mov r0, #0xb5 + lsl r0, r0, #2 + mov r1, #0x1c + add r3, r6, #0 + mul r3, r1 + add r0, r5, r0 + ldr r2, [r0, r3] + mov r1, #1 + bic r2, r1 + mov r1, #1 + orr r1, r2 + str r1, [r0, r3] + ldr r1, _02235D34 ; =0x0000216C + mov r0, #0x40 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] +_02235D24: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235D2C: .word 0x00002D8C +_02235D30: .word 0x00002144 +_02235D34: .word 0x0000216C + + thumb_func_start MOD11_02235D38 +MOD11_02235D38: ; 0x02235D38 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + mov r0, #0xb5 + lsl r0, r0, #6 + add r2, r5, r0 + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + lsl r1, r1, #1 + add r0, r2, r0 + add r2, r5, r1 + ldr r1, _02235E0C ; =0x0000307C + ldrh r1, [r2, r1] + bl MOD11_022461AC + ldr r1, [r5, #0x6c] + add r4, r0, #0 + lsl r1, r1, #1 + add r2, r5, r1 + ldr r1, _02235E0C ; =0x0000307C + add r0, r5, #0 + ldrh r1, [r2, r1] + bl MOD11_0224C0B4 + cmp r0, #0 + bne _02235D7E + mov r4, #4 +_02235D7E: + ldr r0, [r5, #0x6c] + mov r2, #0xc0 + add r1, r0, #0 + mul r1, r2 + ldr r3, _02235E10 ; =0x00002DEC + add r6, r5, r1 + ldrh r1, [r6, r3] + cmp r1, #0 + bne _02235DF6 + cmp r4, #4 + beq _02235DF6 + add r1, r3, #0 + add r6, r6, r4 + sub r1, #0x80 + ldrb r1, [r6, r1] + cmp r1, #0 + beq _02235DF6 + lsl r0, r0, #1 + add r1, r5, r0 + ldr r0, _02235E0C ; =0x0000307C + ldrh r1, [r1, r0] + cmp r1, #0 + beq _02235DF6 + add r0, r2, #0 + add r0, #0x64 + str r1, [r5, r0] + ldr r1, [r5, #0x6c] + add r0, r2, #0 + add r0, #0x64 + add r6, r1, #0 + mul r6, r2 + ldr r0, [r5, r0] + add r1, r5, r6 + strh r0, [r1, r3] + ldr r0, [r5, #0x6c] + add r1, r0, #0 + mul r1, r2 + add r1, r5, r1 + add r0, r3, #2 + strh r4, [r1, r0] + bl FUN_0201B9EC + ldr r1, _02235E14 ; =0x00002DC8 + ldr r2, [r5, #0x6c] + add r4, r5, r1 + mov r1, #0xc0 + add r5, r2, #0 + mul r5, r1 + mov r1, #5 + blx _s32_div_f + ldr r2, [r4, r5] + mov r0, #0x38 + bic r2, r0 + add r0, r1, #3 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1a + orr r0, r2 + str r0, [r4, r5] + b _02235E08 +_02235DF6: + ldr r1, _02235E18 ; =0x0000216C + mov r0, #0x40 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_02235E08: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235E0C: .word 0x0000307C +_02235E10: .word 0x00002DEC +_02235E14: .word 0x00002DC8 +_02235E18: .word 0x0000216C + + thumb_func_start MOD11_02235E1C +MOD11_02235E1C: ; 0x02235E1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x79 + bne _02235E4C + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02235E4C: + ldr r0, [r4, #0x64] + lsl r0, r0, #1 + add r2, r4, r0 + ldr r0, _02235FB4 ; =0x000030C4 + ldrh r1, [r2, r0] + cmp r1, #0 + beq _02235E62 + add r0, #8 + ldrh r0, [r2, r0] + cmp r0, #0xff + bne _02235E64 +_02235E62: + b _02235FA6 +_02235E64: + add r0, r4, #0 + bl MOD11_02246AF8 + cmp r0, #0 + beq _02235E98 + ldr r0, [r4, #0x64] + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _02235FB8 ; =0x000030CC + ldrh r1, [r1, r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02235FBC ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0xc + tst r0, r1 + beq _02235E98 + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02235E98: + ldr r0, [r4, #0x64] + mov r7, #0 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _02235FC0 ; =0x000030D4 + ldrh r6, [r1, r0] +_02235EA4: + add r1, sp, #4 + add r2, sp, #4 + ldr r0, _02235FC4 ; =0x0000FFFF + add r1, #2 + add r2, #1 + add r3, sp, #4 + bl MOD11_02246B58 + add r0, sp, #4 + ldrb r0, [r0, #2] + cmp r0, r6 + bne _02235F12 + add r0, sp, #4 + ldrb r0, [r0] + cmp r0, #5 + bhi _02235F12 + add r0, sp, #4 + ldrb r5, [r0, #1] + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _02235F12 + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _02235F12 + ldr r0, [r4, #0x64] + add r3, sp, #4 + mov r2, #0xc0 + add r1, r0, #0 + mul r1, r2 + add r0, r4, r1 + ldr r1, _02235FC8 ; =0x00002D64 + add sp, #8 + strb r5, [r0, r1] + ldr r5, [r4, #0x64] + ldrb r0, [r3, #1] + add r6, r5, #0 + mul r6, r2 + add r5, r4, r6 + add r1, r1, #1 + strb r0, [r5, r1] + ldrb r0, [r3, #1] + add r2, #0x70 + str r0, [r4, r2] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02235F12: + mov r0, #0xfa + add r7, r7, #1 + lsl r0, r0, #2 + cmp r7, r0 + blt _02235EA4 + mov r7, #0 + add r1, sp, #4 + add r2, sp, #4 + add r0, r7, #0 + add r1, #2 + add r2, #1 + add r3, sp, #4 + bl MOD11_02246B58 + cmp r0, #1 + bne _02235FA6 +_02235F32: + add r0, sp, #4 + ldrb r0, [r0, #2] + cmp r0, r6 + bne _02235F90 + add r0, sp, #4 + ldrb r0, [r0] + cmp r0, #5 + bhi _02235F90 + add r0, sp, #4 + ldrb r5, [r0, #1] + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _02235F90 + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r5, r0 + beq _02235F90 + ldr r0, [r4, #0x64] + add r3, sp, #4 + mov r2, #0xc0 + add r1, r0, #0 + mul r1, r2 + add r0, r4, r1 + ldr r1, _02235FC8 ; =0x00002D64 + add sp, #8 + strb r5, [r0, r1] + ldr r5, [r4, #0x64] + ldrb r0, [r3, #1] + add r6, r5, #0 + mul r6, r2 + add r5, r4, r6 + add r1, r1, #1 + strb r0, [r5, r1] + ldrb r0, [r3, #1] + add r2, #0x70 + str r0, [r4, r2] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02235F90: + add r7, r7, #1 + add r1, sp, #4 + add r2, sp, #4 + add r0, r7, #0 + add r1, #2 + add r2, #1 + add r3, sp, #4 + bl MOD11_02246B58 + cmp r0, #1 + beq _02235F32 +_02235FA6: + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235FB4: .word 0x000030C4 +_02235FB8: .word 0x000030CC +_02235FBC: .word 0x00002DB0 +_02235FC0: .word 0x000030D4 +_02235FC4: .word 0x0000FFFF +_02235FC8: .word 0x00002D64 + + thumb_func_start MOD11_02235FCC +MOD11_02235FCC: ; 0x02235FCC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + mov r0, #0 + add r6, r1, #0 + mvn r0, r0 + str r0, [sp, #8] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + mov ip, r0 + ldr r1, [r6, #0x64] + mov r0, #0xc0 + mul r0, r1 + str r0, [sp, #4] + add r3, r6, r0 + ldr r0, _022360DC ; =0x00002DB0 + ldr r1, [r3, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r1 + bne _0223601E + ldr r0, [r6, #0x6c] + lsl r0, r0, #1 + add r1, r6, r0 + ldr r0, _022360E0 ; =0x000030AC + ldrh r7, [r1, r0] + cmp r7, #0xa5 + beq _0223601E + cmp r7, #0xa6 + beq _0223601E + mov r0, #7 + lsl r0, r0, #6 + cmp r7, r0 + beq _0223601E + cmp r7, #0 + bne _02236028 +_0223601E: + add r0, r6, #0 + mov r1, ip + bl MOD11_0223A424 + b _022360D6 +_02236028: + mov r0, #0 + add r1, r3, #0 + add r2, r0, #0 +_0223602E: + ldr r4, _022360E4 ; =0x00002D4C + ldrh r4, [r1, r4] + cmp r4, #0xa6 + beq _02236040 + ldr r4, _022360E4 ; =0x00002D4C + add r5, r3, r2 + ldrh r4, [r5, r4] + cmp r7, r4 + beq _02236060 +_02236040: + ldr r4, _022360E4 ; =0x00002D4C + add r5, r3, r2 + ldrh r4, [r5, r4] + cmp r4, #0xa6 + bne _02236056 + mov r5, #0 + ldr r4, [sp, #8] + mvn r5, r5 + cmp r4, r5 + bne _02236056 + str r0, [sp, #8] +_02236056: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _0223602E +_02236060: + cmp r0, #4 + bne _022360CE + ldr r0, [sp, #4] + add r1, r6, r0 + ldr r0, [sp, #8] + lsl r0, r0, #1 + add r1, r1, r0 + ldr r0, _022360E4 ; =0x00002D4C + strh r7, [r1, r0] + ldr r1, [r6, #0x6c] + ldr r3, [r6, #0x64] + lsl r1, r1, #1 + add r2, r6, r1 + ldr r1, _022360E0 ; =0x000030AC + add r0, #0x20 + ldrh r1, [r2, r1] + lsl r1, r1, #4 + add r2, r6, r1 + mov r1, #0xf9 + lsl r1, r1, #2 + ldrb r1, [r2, r1] + mov r2, #0xc0 + mul r2, r3 + add r3, r6, r2 + ldr r2, [sp, #8] + add r2, r3, r2 + strb r1, [r2, r0] + ldr r0, [sp] + ldr r2, [r6, #0x64] + add r1, r6, #0 + bl MOD11_02256150 + ldr r0, [r6, #0x6c] + lsl r0, r0, #1 + add r1, r6, r0 + ldr r0, _022360E0 ; =0x000030AC + ldrh r1, [r1, r0] + mov r0, #0x49 + lsl r0, r0, #2 + str r1, [r6, r0] + ldr r1, [r6, r0] + add r0, #0x5f + cmp r1, r0 + bne _022360D6 + ldr r0, _022360E8 ; =0x00002DCC + ldr r1, [r6, #0x64] + add r3, r6, r0 + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, [r3, r2] + ldr r0, _022360EC ; =0xFFFFE3FF + and r0, r1 + str r0, [r3, r2] + b _022360D6 +_022360CE: + add r0, r6, #0 + mov r1, ip + bl MOD11_0223A424 +_022360D6: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022360DC: .word 0x00002DB0 +_022360E0: .word 0x000030AC +_022360E4: .word 0x00002D4C +_022360E8: .word 0x00002DCC +_022360EC: .word 0xFFFFE3FF + + thumb_func_start MOD11_022360F0 +MOD11_022360F0: ; 0x022360F0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + mov r7, #0 + str r0, [sp, #8] + add r6, r7, #0 + add r4, r7, #0 +_0223610E: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r0, r5, r0 + add r1, r4, r0 + ldr r0, _022361B8 ; =0x00002D4C + ldrh r0, [r1, r0] + bl MOD11_02246BE8 + cmp r0, #0 + bne _0223614E + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r0, r5, r0 + add r1, r4, r0 + ldr r0, _022361B8 ; =0x00002D4C + ldrh r1, [r1, r0] + mov r0, #0x42 + lsl r0, r0, #2 + cmp r1, r0 + beq _0223614E + cmp r1, #0xfd + beq _0223614E + add r0, #0xb8 + cmp r1, r0 + beq _0223614E + add r0, r5, #0 + bl MOD11_02246AF8 + cmp r0, #0 + beq _02236156 +_0223614E: + add r0, r6, #0 + bl FUN_0206A92C + orr r7, r0 +_02236156: + add r6, r6, #1 + add r4, r4, #2 + cmp r6, #4 + blt _0223610E + mov r0, #2 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [r5, #0x64] + add r1, r5, #0 + add r3, r7, #0 + bl MOD11_02245D38 + add r4, r0, #0 + cmp r4, #0xf + bne _02236180 + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_0223A424 + b _022361B0 +_02236180: + mov r7, #0x1e +_02236182: + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r0, r0, #0x1e + sub r0, r0, r1 + ror r0, r7 + add r6, r1, r0 + add r0, r6, #0 + bl FUN_0206A92C + tst r0, r4 + bne _02236182 + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r2, r5, r2 + lsl r0, r6, #1 + add r2, r2, r0 + ldr r0, _022361B8 ; =0x00002D4C + add r1, #0x64 + ldrh r0, [r2, r0] + str r0, [r5, r1] +_022361B0: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022361B8: .word 0x00002D4C + + thumb_func_start MOD11_022361BC +MOD11_022361BC: ; 0x022361BC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _02236200 ; =0x00002D8C + add r2, r4, r0 + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + mov r2, #0x40 + bl FUN_02079A0C + ldr r3, _02236204 ; =0x0225DC3C + mov r2, #0 +_022361E2: + ldrb r1, [r3] + cmp r0, r1 + ble _022361F0 + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #6 + blo _022361E2 +_022361F0: + ldr r0, _02236208 ; =0x0225DC3D + lsl r1, r2, #1 + ldrb r1, [r0, r1] + ldr r0, _0223620C ; =0x00002154 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + nop +_02236200: .word 0x00002D8C +_02236204: .word 0x0225DC3C +_02236208: .word 0x0225DC3D +_0223620C: .word 0x00002154 + + thumb_func_start MOD11_02236210 +MOD11_02236210: ; 0x02236210 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + ldr r2, [r5, #0x6c] + add r4, r0, #0 + lsl r0, r2, #1 + add r1, r5, r0 + ldr r0, _022362AC ; =0x0000307C + ldrh r1, [r1, r0] + cmp r1, #0 + beq _0223629E + mov r0, #0xb5 + lsl r0, r0, #6 + mov r3, #0xc0 + add r0, r5, r0 + mul r3, r2 + add r0, r0, r3 + bl MOD11_022461AC + add r2, r0, #0 + cmp r2, #4 + beq _0223625C + ldr r0, [r5, #0x6c] + mov r1, #0xc0 + mul r1, r0 + add r1, r5, r1 + add r3, r1, r2 + ldr r1, _022362B0 ; =0x00002D6C + ldrb r3, [r3, r1] + cmp r3, #0 + bne _02236266 +_0223625C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 + b _022362A6 +_02236266: + mov r1, #4 + cmp r3, #4 + bge _0223626E + add r1, r3, #0 +_0223626E: + lsl r0, r0, #1 + add r3, r5, r0 + ldr r0, _022362AC ; =0x0000307C + ldrh r3, [r3, r0] + mov r0, #0x49 + lsl r0, r0, #2 + str r3, [r5, r0] + add r0, #0xc + str r1, [r5, r0] + ldr r0, _022362B0 ; =0x00002D6C + ldr r4, [r5, #0x6c] + mov r3, #0xc0 + add r0, r5, r0 + mul r3, r4 + add r3, r0, r3 + ldrb r0, [r3, r2] + sub r0, r0, r1 + strb r0, [r3, r2] + ldr r2, [r5, #0x6c] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02245190 + b _022362A6 +_0223629E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 +_022362A6: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_022362AC: .word 0x0000307C +_022362B0: .word 0x00002D6C + + thumb_func_start MOD11_022362B4 +MOD11_022362B4: ; 0x022362B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + bl MOD11_0222FF74 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r1, #0x4d + mov r0, #0 + lsl r1, r1, #2 + ldr r2, _022363F4 ; =0x00003044 + str r0, [r5, r1] + ldr r2, [r5, r2] + cmp r2, #0xd7 + bne _02236382 + sub r1, #0x10 + str r2, [r5, r1] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x2b + beq _0223630A + ldr r2, [r5, #0x64] + mov r0, #0xc0 + add r3, r2, #0 + mul r3, r0 + ldr r2, _022363F8 ; =0x00002DAC + mov r1, #0 + add r3, r5, r3 + str r1, [r3, r2] + add r1, r2, #4 + ldr r2, [r5, #0x64] + add r1, r5, r1 + mul r0, r2 + ldr r3, [r1, r0] + ldr r2, _022363FC ; =0xF7FFFFFF + and r2, r3 + str r2, [r1, r0] + b _02236316 +_0223630A: + mov r1, #0x4d + lsl r1, r1, #2 + ldr r2, [r5, r1] + mov r0, #5 + orr r0, r2 + str r0, [r5, r1] +_02236316: + mov r0, #2 + tst r0, r4 + beq _02236374 + add r0, r7, #0 + add r1, r5, #0 + mov r2, #0x10 + bl MOD11_0223C230 + add r4, r0, #0 + bl FUN_0206A92C + ldr r1, _02236400 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _022363E2 + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r4, #0 + mov r3, #0x2b + bl MOD11_02246D84 + cmp r0, #0 + bne _0223635E + mov r0, #0xc0 + mul r0, r4 + ldr r1, _022363F8 ; =0x00002DAC + mov r3, #0 + add r2, r5, r0 + str r3, [r2, r1] + add r1, r1, #4 + add r3, r5, r1 + ldr r2, [r3, r0] + ldr r1, _022363FC ; =0xF7FFFFFF + and r1, r2 + str r1, [r3, r0] + b _022363E2 +_0223635E: + mov r1, #0x46 + lsl r1, r1, #2 + add r0, r1, #0 + str r4, [r5, r1] + add r0, #0x1c + ldr r2, [r5, r0] + mov r0, #0xa + orr r0, r2 + add r1, #0x1c + str r0, [r5, r1] + b _022363E2 +_02236374: + mov r1, #0x4d + lsl r1, r1, #2 + ldr r2, [r5, r1] + mov r0, #8 + orr r0, r2 + str r0, [r5, r1] + b _022363E2 +_02236382: + ldr r3, [r5, #0x64] + mov r2, #0xc0 + mul r2, r3 + add r3, r5, r2 + ldr r2, _022363F8 ; =0x00002DAC + str r0, [r3, r2] + add r0, r2, #4 + add r6, r5, r0 + ldr r0, [r5, #0x64] + mov r2, #0xc0 + add r3, r0, #0 + mul r3, r2 + ldr r2, [r6, r3] + ldr r0, _022363FC ; =0xF7FFFFFF + and r0, r2 + str r0, [r6, r3] + mov r0, #2 + tst r0, r4 + beq _022363DA + add r0, r7, #0 + add r1, r5, #0 + mov r2, #0x10 + bl MOD11_0223C230 + add r4, r0, #0 + bl FUN_0206A92C + ldr r1, _02236400 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _022363E2 + mov r0, #0xc0 + mul r0, r4 + ldr r1, _022363F8 ; =0x00002DAC + mov r3, #0 + add r2, r5, r0 + str r3, [r2, r1] + add r1, r1, #4 + add r3, r5, r1 + ldr r2, [r3, r0] + ldr r1, _022363FC ; =0xF7FFFFFF + and r1, r2 + str r1, [r3, r0] + b _022363E2 +_022363DA: + ldr r2, [r5, r1] + mov r0, #8 + orr r0, r2 + str r0, [r5, r1] +_022363E2: + ldr r3, _022363F4 ; =0x00003044 + ldr r2, [r5, #0x64] + ldr r3, [r5, r3] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02256284 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022363F4: .word 0x00003044 +_022363F8: .word 0x00002DAC +_022363FC: .word 0xF7FFFFFF +_02236400: .word 0x00003108 + + thumb_func_start MOD11_02236404 +MOD11_02236404: ; 0x02236404 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r5, #0 + bl MOD11_0222FF74 + str r0, [sp, #4] + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + add r7, r0, #0 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + cmp r0, #0 + beq _02236454 + ldr r0, [sp, #4] + mov r1, #0x84 + tst r0, r1 + bne _02236454 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _022364EC +_02236454: + ldr r0, [r4, #0x64] + add r1, r4, r0 + ldr r0, _022364F4 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + lsl r1, r7, #3 + add r2, r4, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #3 + lsr r1, r1, #0x1a + tst r0, r1 + beq _0223647C + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _022364EC +_0223647C: + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x79 + beq _02236494 + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x79 + bne _0223649E +_02236494: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _022364EC +_0223649E: + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _022364F8 ; =0x00002DB8 + ldrh r0, [r1, r0] + cmp r0, #0 + beq _022364C6 + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r3, #0x3c + bl MOD11_02246D84 + cmp r0, #1 + bne _022364C6 + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 + b _022364EC +_022364C6: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _022364F8 ; =0x00002DB8 + ldrh r0, [r1, r0] + cmp r0, #0 + bne _022364E4 + ldr r2, [r4, #0x6c] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246C50 + cmp r0, #0 + bne _022364EC +_022364E4: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_022364EC: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022364F4: .word 0x0000219C +_022364F8: .word 0x00002DB8 + + thumb_func_start MOD11_022364FC +MOD11_022364FC: ; 0x022364FC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + ldr r1, [r6, #0x64] + str r0, [sp, #8] + lsl r0, r1, #1 + add r2, r6, r0 + ldr r0, _02236640 ; =0x0000305C + ldrh r0, [r2, r0] + cmp r0, #0xb6 + beq _0223653C + cmp r0, #0xc5 + beq _0223653C + cmp r0, #0xcb + beq _0223653C + ldr r0, _02236644 ; =0x00002DC8 + add r3, r1, #0 + mov r2, #0xc0 + add r0, r6, r0 + mul r3, r2 + ldr r2, [r0, r3] + ldr r1, _02236648 ; =0xFFFFE7FF + and r1, r2 + str r1, [r0, r3] +_0223653C: + ldr r0, [sp] + mov r7, #0 + add r4, r7, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _02236564 + add r5, r6, #0 +_0223654C: + ldr r0, _0223664C ; =0x000021A8 + ldr r0, [r5, r0] + cmp r0, #0x27 + beq _02236556 + add r7, r7, #1 +_02236556: + ldr r0, [sp] + add r5, #0x10 + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _0223654C +_02236564: + cmp r7, #1 + beq _0223656E + mov r0, #1 + str r0, [sp, #4] + b _02236572 +_0223656E: + mov r0, #0 + str r0, [sp, #4] +_02236572: + ldr r7, [r6, #0x64] + ldr r0, _02236644 ; =0x00002DC8 + add r5, r7, #0 + add r4, r6, r0 + mov r0, #0xc0 + mul r5, r0 + bl FUN_0201B9EC + ldr r1, [r4, r5] + lsl r1, r1, #0x13 + lsr r1, r1, #0x1e + lsl r2, r1, #1 + ldr r1, _02236650 ; =0x0225DC34 + ldrh r1, [r1, r2] + cmp r1, r0 + blo _02236628 + ldr r0, [sp, #4] + cmp r0, #0 + beq _02236628 + ldr r0, _02236654 ; =0x00003044 + ldr r0, [r6, r0] + lsl r0, r0, #4 + add r1, r6, r0 + ldr r0, _02236658 ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x6f + bne _022365C0 + mov r2, #0x75 + lsl r2, r2, #2 + add r0, r6, r2 + lsl r4, r7, #6 + ldr r3, [r0, r4] + mov r1, #4 + orr r1, r3 + str r1, [r0, r4] + add r0, r6, #0 + sub r2, #0xba + add r0, #0xf6 + strh r2, [r0] +_022365C0: + ldr r0, _02236654 ; =0x00003044 + ldr r0, [r6, r0] + lsl r0, r0, #4 + add r1, r6, r0 + ldr r0, _02236658 ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x74 + bne _022365EC + mov r2, #0x75 + ldr r1, [r6, #0x64] + lsl r2, r2, #2 + lsl r4, r1, #6 + add r0, r6, r2 + add r1, r2, #0 + ldr r3, [r0, r4] + add r1, #0x2c + orr r1, r3 + str r1, [r0, r4] + add r0, r6, #0 + sub r2, #0x1a + add r0, #0xf6 + strh r2, [r0] +_022365EC: + add r0, r6, #0 + mov r1, #2 + add r0, #0xf5 + strb r1, [r0] + ldr r1, [r6, #0x64] + add r0, r6, #0 + bl MOD11_0224682C + add r1, r6, #0 + add r1, #0xf8 + str r0, [r1] + ldr r2, [r6, #0x64] + mov r0, #0xc0 + add r1, r2, #0 + mul r1, r0 + ldr r0, _02236644 ; =0x00002DC8 + add r0, r6, r0 + ldr r3, [r0, r1] + lsl r2, r3, #0x13 + lsr r4, r2, #0x1e + cmp r4, #3 + bhs _02236638 + ldr r2, _02236648 ; =0xFFFFE7FF + and r3, r2 + add r2, r4, #1 + lsl r2, r2, #0x1e + lsr r2, r2, #0x13 + orr r2, r3 + str r2, [r0, r1] + b _02236638 +_02236628: + ldr r1, [r4, r5] + ldr r0, _02236648 ; =0xFFFFE7FF + and r0, r1 + str r0, [r4, r5] + ldr r1, [sp, #8] + add r0, r6, #0 + bl MOD11_0223A424 +_02236638: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02236640: .word 0x0000305C +_02236644: .word 0x00002DC8 +_02236648: .word 0xFFFFE7FF +_0223664C: .word 0x000021A8 +_02236650: .word 0x0225DC34 +_02236654: .word 0x00003044 +_02236658: .word 0x000003DE + + thumb_func_start MOD11_0223665C +MOD11_0223665C: ; 0x0223665C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022366C8 ; =0x00002D90 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD11_022476C0 + ldr r1, [r5, #0x64] + mov r2, #0xc0 + add r3, r1, #0 + mul r3, r2 + add r1, r5, r3 + ldr r3, _022366CC ; =0x00002D8C + ldr r1, [r1, r3] + cmp r1, r0 + bgt _0223669E + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 + b _022366C2 +_0223669E: + ldr r1, _022366D0 ; =0x0000215C + neg r4, r0 + str r4, [r5, r1] + ldr r1, [r5, #0x64] + add r4, r1, #0 + add r1, r3, #0 + mul r4, r2 + add r3, #0x24 + add r4, r5, r4 + add r1, #0x54 + str r0, [r4, r1] + ldr r0, [r5, #0x64] + add r3, r5, r3 + mul r2, r0 + ldr r1, [r3, r2] + ldr r0, _022366D4 ; =0xFFFF1FFF + and r0, r1 + str r0, [r3, r2] +_022366C2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022366C8: .word 0x00002D90 +_022366CC: .word 0x00002D8C +_022366D0: .word 0x0000215C +_022366D4: .word 0xFFFF1FFF + + thumb_func_start MOD11_022366D8 +MOD11_022366D8: ; 0x022366D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [sp] + bl MOD11_0223A404 + str r0, [sp, #0x18] + add r0, r5, #0 + bl MOD11_0222FF74 + add r4, r0, #0 + mov r0, #1 + tst r0, r4 + bne _02236700 + b _0223684E +_02236700: + ldr r1, [sp] + add r0, r5, #0 + ldr r1, [r1, #0x6c] + mov r7, #0 + bl MOD11_0222FF88 + ldr r1, [sp] + str r0, [sp, #0x14] + ldr r1, [r1, #0x6c] + add r0, r5, #0 + bl MOD11_0222FFC8 + add r6, r0, #0 + mov r0, #8 + tst r0, r4 + bne _02236734 + mov r0, #0x10 + tst r0, r4 + beq _0223674C + ldr r1, [sp] + add r0, r5, #0 + ldr r1, [r1, #0x6c] + bl MOD11_02230270 + cmp r0, #0 + beq _0223674C +_02236734: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp] + ldr r1, [r0, #0x6c] + add r1, r0, r1 + ldr r0, _02236868 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #8] + str r0, [sp, #4] + b _0223678C +_0223674C: + mov r0, #2 + str r0, [sp, #0x10] + tst r0, r4 + beq _02236776 + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + ldr r1, [r0, #0x6c] + add r2, r0, r1 + ldr r0, _02236868 ; =0x0000219C + ldrb r0, [r2, r0] + str r0, [sp, #8] + add r0, r5, #0 + bl MOD11_022302BC + ldr r1, [sp] + add r1, r1, r0 + ldr r0, _02236868 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _0223678C +_02236776: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp] + ldr r1, [r0, #0x6c] + add r1, r0, r1 + ldr r0, _02236868 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #8] + str r0, [sp, #4] +_0223678C: + ldr r5, [sp, #0xc] + add r0, r5, #0 + cmp r0, r6 + bge _022367CE +_02236794: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022367C8 + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _022367C8 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022367C8 + add r7, r7, #1 +_022367C8: + add r5, r5, #1 + cmp r5, r6 + blt _02236794 +_022367CE: + ldr r0, [sp, #0x10] + cmp r7, r0 + bgt _022367DE + ldr r0, [sp] + ldr r1, [sp, #0x18] + bl MOD11_0223A424 + b _02236860 +_022367DE: + ldr r0, [sp] + bl MOD11_02246CCC + cmp r0, #0 + beq _02236844 + mov r7, #5 +_022367EA: + bl FUN_0201B9EC + add r1, r6, #0 + blx _s32_div_f + ldr r0, [sp, #0xc] + add r5, r1, #0 + add r5, r5, r0 + ldr r0, [sp, #8] + cmp r5, r0 + beq _022367EA + ldr r0, [sp, #4] + cmp r5, r0 + beq _022367EA + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + add r1, r7, #0 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022367EA + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #1 + beq _022367EA + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022367EA + ldr r0, [sp] + ldr r1, [r0, #0x6c] + add r1, r0, r1 + ldr r0, _0223686C ; =0x000021A0 + strb r5, [r1, r0] + b _02236860 +_02236844: + ldr r0, [sp] + ldr r1, [sp, #0x18] + bl MOD11_0223A424 + b _02236860 +_0223684E: + ldr r0, [sp] + bl MOD11_02246CCC + cmp r0, #0 + bne _02236860 + ldr r0, [sp] + ldr r1, [sp, #0x18] + bl MOD11_0223A424 +_02236860: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02236868: .word 0x0000219C +_0223686C: .word 0x000021A0 + + thumb_func_start MOD11_02236870 +MOD11_02236870: ; 0x02236870 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r5, [r4, #0x64] + ldr r1, _02236A40 ; =0x00002DB0 + add r0, r5, #0 + mov r2, #0xc0 + mov r5, #2 + add r3, r4, r1 + mul r0, r2 + ldr r6, [r3, r0] + lsl r5, r5, #0x14 + orr r5, r6 + str r5, [r3, r0] + ldr r3, [r4, #0x64] + mov r0, #0 + add r5, r3, #0 + mul r5, r2 + add r3, r1, #0 + add r5, r4, r5 + add r3, #0x38 + strh r0, [r5, r3] + add r3, r1, #0 + add r3, #0x18 + ldr r6, [r4, #0x64] + add r5, r4, r3 + add r3, r6, #0 + mul r3, r2 + ldr r7, [r5, r3] + mov r6, #7 + bic r7, r6 + str r7, [r5, r3] + ldr r3, [r4, #0x6c] + add r5, r3, #0 + mul r5, r2 + add r3, r1, #0 + add r5, r4, r5 + sub r3, #8 + ldr r3, [r5, r3] + ldr r5, [r4, #0x64] + add r6, r5, #0 + mul r6, r2 + add r5, r1, #0 + add r6, r4, r6 + add r5, #0x34 + str r3, [r6, r5] + ldr r3, [r4, #0x6c] + add r5, r3, #0 + mul r5, r2 + add r3, r1, #0 + add r5, r4, r5 + add r3, #0xe + ldrb r3, [r5, r3] + ldr r5, [r4, #0x64] + add r6, r5, #0 + lsl r3, r3, #0x1c + mul r6, r2 + add r5, r1, #0 + lsr r3, r3, #0x1c + add r6, r4, r6 + add r5, #0x4a + strh r3, [r6, r5] + add r3, r1, #0 + add r3, #0x1c + ldr r6, [r4, #0x64] + add r5, r4, r3 + add r3, r6, #0 + mul r3, r2 + ldr r7, [r5, r3] + mov r6, #0x3c + bic r7, r6 + str r7, [r5, r3] + ldr r6, [r4, #0x64] + sub r1, #0x70 + add r3, r6, #0 + mul r3, r2 + ldr r7, [r5, r3] + ldr r6, _02236A44 ; =0xFFFFE3FF + and r6, r7 + str r6, [r5, r3] + add r5, r4, r1 + ldr r1, [r4, #0x64] + add r3, r1, #0 + mul r3, r2 + ldr r1, [r4, #0x6c] + add r3, r5, r3 + mul r2, r1 + add r2, r5, r2 +_02236926: + ldrb r1, [r2, r0] + strb r1, [r3, r0] + add r0, r0, #1 + cmp r0, #0x28 + blo _02236926 + ldr r3, [r4, #0x64] + ldr r1, _02236A48 ; =0x00002D68 + add r6, r3, #0 + mov r2, #0xc0 + add r0, r4, r1 + mul r6, r2 + ldr r5, [r0, r6] + mov r3, #1 + bic r5, r3 + str r5, [r0, r6] + ldr r3, [r4, #0x64] + add r6, r3, #0 + mul r6, r2 + ldr r5, [r0, r6] + mov r3, #2 + bic r5, r3 + str r5, [r0, r6] + ldr r3, [r4, #0x64] + add r6, r3, #0 + mul r6, r2 + ldr r5, [r0, r6] + mov r3, #4 + bic r5, r3 + str r5, [r0, r6] + ldr r3, [r4, #0x64] + add r6, r3, #0 + mul r6, r2 + ldr r5, [r0, r6] + mov r3, #8 + bic r5, r3 + str r5, [r0, r6] + ldr r3, [r4, #0x64] + add r6, r3, #0 + mul r6, r2 + ldr r5, [r0, r6] + mov r3, #0x10 + bic r5, r3 + str r5, [r0, r6] + ldr r3, [r4, #0x64] + add r6, r3, #0 + mul r6, r2 + ldr r5, [r0, r6] + mov r3, #0x20 + bic r5, r3 + str r5, [r0, r6] + ldr r5, [r4, #0x64] + add r3, r5, #0 + mul r3, r2 + ldr r6, [r0, r3] + ldr r5, _02236A4C ; =0xFFFFFEFF + and r5, r6 + str r5, [r0, r3] + ldr r5, [r4, #0x64] + add r3, r5, #0 + mul r3, r2 + ldr r6, [r0, r3] + ldr r5, _02236A50 ; =0xFFFFFDFF + and r5, r6 + str r5, [r0, r3] + ldr r5, [r4, #0x64] + add r3, r5, #0 + mul r3, r2 + ldr r6, [r0, r3] + ldr r5, _02236A54 ; =0xFFFFFBFF + and r5, r6 + str r5, [r0, r3] + add r3, r1, #0 + add r3, #0x60 + add r6, r4, r3 + ldr r3, [r4, #0x64] + add r1, #0x70 + add r5, r3, #0 + mul r5, r2 + ldr r7, [r6, r5] + ldr r3, _02236A58 ; =0xBFFFFFFF + and r3, r7 + add r7, r2, #0 + add r7, #0x90 + ldr r7, [r4, r7] + lsl r7, r7, #0x1f + lsr r7, r7, #1 + orr r3, r7 + str r3, [r6, r5] + add r3, r2, #0 + add r3, #0x90 + ldr r3, [r4, r3] + add r6, r3, #1 + ldr r3, [r4, #0x64] + add r5, r3, #0 + mul r5, r2 + add r3, r4, r5 + str r6, [r3, r1] + ldr r1, [r4, #0x64] + add r5, r1, #0 + mul r5, r2 + ldr r3, [r0, r5] + mov r1, #0x40 + bic r3, r1 + str r3, [r0, r5] + ldr r1, [r4, #0x64] + mov r6, #0 + add r3, r1, #0 + mul r3, r2 + ldr r2, [r0, r3] + mov r1, #0x80 + bic r2, r1 + str r2, [r0, r3] + mov r0, #0xf9 + add r5, r6, #0 + mov r1, #5 + lsl r0, r0, #2 +_02236A0E: + ldr r3, [r4, #0x64] + mov r2, #0xc0 + mul r2, r3 + add r3, r4, r2 + ldr r2, _02236A5C ; =0x00002D4C + add r7, r3, r5 + ldrh r2, [r7, r2] + lsl r2, r2, #4 + add r2, r4, r2 + ldrb r2, [r2, r0] + cmp r2, #5 + bhs _02236A2E + add r7, r3, r6 + ldr r3, _02236A60 ; =0x00002D6C + strb r2, [r7, r3] + b _02236A34 +_02236A2E: + ldr r2, _02236A60 ; =0x00002D6C + add r3, r3, r6 + strb r1, [r3, r2] +_02236A34: + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _02236A0E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02236A40: .word 0x00002DB0 +_02236A44: .word 0xFFFFE3FF +_02236A48: .word 0x00002D68 +_02236A4C: .word 0xFFFFFEFF +_02236A50: .word 0xFFFFFDFF +_02236A54: .word 0xFFFFFBFF +_02236A58: .word 0xBFFFFFFF +_02236A5C: .word 0x00002D4C +_02236A60: .word 0x00002D6C + + thumb_func_start MOD11_02236A64 +MOD11_02236A64: ; 0x02236A64 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + mov r2, #0x72 + mov r1, #1 + add r3, r0, #0 + eor r3, r1 + lsl r0, r3, #3 + add r5, r4, r0 + lsl r2, r2, #2 + ldr r5, [r5, r2] + lsl r5, r5, #0x1e + lsr r5, r5, #0x1e + cmp r5, #3 + bne _02236ABA + mov r0, #0xb5 + lsl r0, r0, #2 + add r2, r4, r0 + ldr r3, [r4, #0x64] + mov r0, #0x1c + mul r0, r3 + ldr r5, [r2, r0] + mov r3, #1 + bic r5, r3 + orr r1, r5 + str r1, [r2, r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _02236AE2 +_02236ABA: + add r1, r2, #0 + sub r1, #0xc + lsl r6, r3, #2 + add r1, r4, r1 + ldr r5, [r1, r6] + mov r3, #4 + orr r3, r5 + str r3, [r1, r6] + add r2, r4, r2 + ldr r4, [r2, r0] + mov r3, #3 + add r1, r4, #0 + bic r1, r3 + lsl r3, r4, #0x1e + lsr r3, r3, #0x1e + add r4, r3, #1 + mov r3, #3 + and r3, r4 + orr r1, r3 + str r1, [r2, r0] +_02236AE2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02236AE8 +MOD11_02236AE8: ; 0x02236AE8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02230270 + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1e + lsr r1, r0, #0x1e + beq _02236B56 + mov r0, #0xc0 + mul r0, r4 + ldr r4, _02236B64 ; =0x00002D8C + add r0, r5, r0 + ldr r2, [r0, r4] + cmp r2, #0 + beq _02236B56 + mov r2, #5 + sub r1, r2, r1 + ldr r3, _02236B68 ; =0x0000215C + lsl r1, r1, #1 + str r1, [r5, r3] + add r1, r4, #4 + ldr r1, [r0, r1] + sub r0, r2, #6 + mul r0, r1 + ldr r1, [r5, r3] + bl MOD11_022476C0 + ldr r1, _02236B68 ; =0x0000215C + str r0, [r5, r1] + b _02236B5E +_02236B56: + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_02236B5E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236B64: .word 0x00002D8C +_02236B68: .word 0x0000215C + + thumb_func_start MOD11_02236B6C +MOD11_02236B6C: ; 0x02236B6C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [sp] + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r4, #0 + bl MOD11_0222FF84 + mov r2, #0x4d + mov r7, #0 + str r0, [sp, #4] + add r1, r0, #0 + ldr r0, [sp] + lsl r2, r2, #2 + str r1, [r0, r2] + ldr r0, [sp, #4] + add r6, r7, #0 + cmp r0, #0 + ble _02236BFC + ldr r4, [sp] + ldr r1, _02236C10 ; =0x00002DC8 + add r0, r4, #0 + add r5, r0, r1 +_02236BA8: + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x20 + tst r0, r1 + bne _02236BCE + ldr r0, _02236C14 ; =0x00002D8C + ldr r0, [r4, r0] + cmp r0, #0 + beq _02236BCE + ldr r0, [sp] + add r2, r6, #0 + add r1, r0, #0 + ldr r1, [r1, #0x64] + mov r3, #0x2b + bl MOD11_02246D84 + cmp r0, #1 + bne _02236BD2 +_02236BCE: + add r7, r7, #1 + b _02236BF0 +_02236BD2: + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x20 + orr r1, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + str r1, [r4, r0] + ldr r1, [r5] + ldr r0, _02236C18 ; =0xFFFF9FFF + and r1, r0 + mov r0, #6 + lsl r0, r0, #0xc + orr r0, r1 + str r0, [r5] +_02236BF0: + ldr r0, [sp, #4] + add r6, r6, #1 + add r4, #0xc0 + add r5, #0xc0 + cmp r6, r0 + blt _02236BA8 +_02236BFC: + ldr r0, [sp, #4] + cmp r7, r0 + bne _02236C0A + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_0223A424 +_02236C0A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02236C10: .word 0x00002DC8 +_02236C14: .word 0x00002D8C +_02236C18: .word 0xFFFF9FFF + + thumb_func_start MOD11_02236C1C +MOD11_02236C1C: ; 0x02236C1C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A444 + ldr r1, _02236C4C ; =0x00003104 + ldr r1, [r4, r1] + add r2, r4, r1 + ldr r1, _02236C50 ; =0x000021EC + ldrb r1, [r2, r1] + str r1, [r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02236C4C: .word 0x00003104 +_02236C50: .word 0x000021EC + + thumb_func_start MOD11_02236C54 +MOD11_02236C54: ; 0x02236C54 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223A444 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r1, [r6] + cmp r1, r0 + bhs _02236C92 + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_02236C92: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02236C98 +MOD11_02236C98: ; 0x02236C98 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223C230 + add r4, r0, #0 + mov r0, #0x4e + mov r3, #0 + lsl r0, r0, #2 + str r3, [r5, r0] + ldr r0, _02236F40 ; =0x0000215C + add r1, r4, #0 + str r3, [r5, r0] + add r0, r5, #0 + mov r2, #0x1b + bl MOD11_02243420 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + add r7, r0, #0 + mov r0, #0xd + str r0, [sp] + add r0, r6, #0 + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _02236D08 + mov r0, #0x4c + str r0, [sp] + add r0, r6, #0 + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _02236D0A +_02236D08: + b _02236F38 +_02236D0A: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0xc + tst r0, r1 + beq _02236D74 + ldr r0, [sp, #4] + cmp r0, #5 + beq _02236D74 + cmp r7, #5 + beq _02236D74 + cmp r0, #8 + beq _02236D74 + cmp r7, #8 + beq _02236D74 + cmp r0, #4 + beq _02236D74 + cmp r7, #4 + beq _02236D74 + mov r0, #0xc0 + add r6, r4, #0 + mul r6, r0 + ldr r0, _02236F44 ; =0x00002D8C + add r1, r5, r6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02236D74 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #8 + beq _02236D74 + mov r3, #0xb7 + add r1, r5, r6 + lsl r3, r3, #6 + ldr r2, [r1, r3] + ldr r0, _02236F48 ; =0x00040080 + tst r0, r2 + bne _02236D74 + mov r0, #0xc9 + add r2, r0, #0 + add r2, #0x5b + str r0, [r5, r2] + sub r3, #0x30 + ldr r1, [r1, r3] + sub r0, #0xca + mul r0, r1 + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _02236F40 ; =0x0000215C + str r0, [r5, r1] +_02236D74: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0x30 + tst r0, r1 + beq _02236DDC + mov r0, #0xc0 + add r6, r4, #0 + mul r6, r0 + ldr r0, _02236F44 ; =0x00002D8C + add r2, r5, r6 + ldr r1, [r2, r0] + cmp r1, #0 + beq _02236DDC + add r0, #0x34 + ldr r1, [r2, r0] + ldr r0, _02236F48 ; =0x00040080 + tst r0, r1 + bne _02236DDC + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x57 + beq _02236DB2 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x5e + bne _02236DC8 +_02236DB2: + ldr r0, _02236F4C ; =0x00002D90 + add r1, r5, r6 + ldr r1, [r1, r0] + mov r0, #0 + mvn r0, r0 + mul r0, r1 + mov r1, #8 + bl MOD11_022476C0 + ldr r1, _02236F40 ; =0x0000215C + str r0, [r5, r1] +_02236DC8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x5e + bne _02236DDC + mov r0, #0x4e + mov r1, #2 + lsl r0, r0, #2 + str r1, [r5, r0] +_02236DDC: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0xc0 + tst r1, r0 + beq _02236E5E + ldr r1, _02236F44 ; =0x00002D8C + add r6, r4, #0 + mul r6, r0 + add r0, r5, r1 + str r0, [sp, #8] + ldr r0, [r0, r6] + cmp r0, #0 + beq _02236E5E + add r0, r5, r6 + add r1, #0x34 + ldr r1, [r0, r1] + ldr r0, _02236F48 ; =0x00040080 + tst r0, r1 + bne _02236E5E + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x73 + bne _02236E2A + ldr r0, _02236F4C ; =0x00002D90 + add r1, r5, r6 + ldr r0, [r1, r0] + ldr r1, [sp, #8] + ldr r1, [r1, r6] + cmp r1, r0 + bhs _02236E5E + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _02236F40 ; =0x0000215C + str r0, [r5, r1] + b _02236E5E +_02236E2A: + ldr r0, [sp, #4] + cmp r0, #0xf + beq _02236E5E + cmp r7, #0xf + beq _02236E5E + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x51 + beq _02236E5E + ldr r1, _02236F50 ; =0x00000102 + add r0, r1, #0 + add r0, #0x22 + str r1, [r5, r0] + ldr r0, _02236F4C ; =0x00002D90 + add r1, r5, r6 + ldr r1, [r1, r0] + mov r0, #0 + mvn r0, r0 + mul r0, r1 + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _02236F40 ; =0x0000215C + str r0, [r5, r1] +_02236E5E: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #3 + tst r0, r1 + beq _02236F38 + ldr r1, _02236F44 ; =0x00002D8C + mov r0, #0xc0 + add r6, r4, #0 + mul r6, r0 + add r7, r5, r1 + ldr r0, [r7, r6] + cmp r0, #0 + beq _02236EA0 + add r1, r1, #4 + add r1, r5, r1 + str r1, [sp, #0xc] + ldr r1, [r1, r6] + cmp r0, r1 + bhs _02236EA0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x2c + bne _02236EA0 + ldr r0, [sp, #0xc] + mov r1, #0x10 + ldr r0, [r0, r6] + bl MOD11_022476C0 + ldr r1, _02236F40 ; =0x0000215C + str r0, [r5, r1] +_02236EA0: + ldr r0, [r7, r6] + cmp r0, #0 + beq _02236ECC + ldr r1, _02236F4C ; =0x00002D90 + add r1, r5, r1 + str r1, [sp, #0x10] + ldr r1, [r1, r6] + cmp r0, r1 + bhs _02236ECC + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x57 + bne _02236ECC + ldr r0, [sp, #0x10] + mov r1, #8 + ldr r0, [r0, r6] + bl MOD11_022476C0 + ldr r1, _02236F40 ; =0x0000215C + str r0, [r5, r1] +_02236ECC: + ldr r0, [r7, r6] + cmp r0, #0 + beq _02236F38 + ldr r0, _02236F54 ; =0x00002DAC + add r7, r5, r0 + ldr r0, [r7, r6] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02236F38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x5d + bne _02236F38 + ldr r0, [r7, r6] + mov r1, #7 + tst r1, r0 + beq _02236EFC + mov r0, #0x13 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02236F30 +_02236EFC: + ldr r1, _02236F58 ; =0x00000F88 + tst r1, r0 + beq _02236F0C + mov r0, #0x13 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02236F30 +_02236F0C: + mov r1, #0x10 + tst r1, r0 + beq _02236F1C + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02236F30 +_02236F1C: + mov r1, #0x40 + tst r0, r1 + beq _02236F2A + mov r0, #3 + add r1, #0xf0 + str r0, [r5, r1] + b _02236F30 +_02236F2A: + mov r0, #4 + add r1, #0xf0 + str r0, [r5, r1] +_02236F30: + mov r0, #0x4e + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] +_02236F38: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02236F40: .word 0x0000215C +_02236F44: .word 0x00002D8C +_02236F48: .word 0x00040080 +_02236F4C: .word 0x00002D90 +_02236F50: .word 0x00000102 +_02236F54: .word 0x00002DAC +_02236F58: .word 0x00000F88 + + thumb_func_start MOD11_02236F5C +MOD11_02236F5C: ; 0x02236F5C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r6, [r4, #0x64] + mov r0, #0xb5 + lsl r0, r0, #2 + add r2, r4, r0 + mov r0, #0x1c + add r1, r6, #0 + mul r1, r0 + ldr r3, [r2, r1] + ldr r0, _0223705C ; =0xFFFFFE3F + mov r7, #0xc0 + and r0, r3 + add r3, r6, #0 + mul r3, r7 + add r6, r4, r3 + ldr r3, _02237060 ; =0x00002DC8 + ldr r6, [r6, r3] + sub r3, #0x18 + lsl r6, r6, #0xe + lsr r6, r6, #0x1d + lsl r6, r6, #0x1d + lsr r6, r6, #0x17 + orr r0, r6 + str r0, [r2, r1] + ldr r2, [r4, #0x64] + add r0, r2, #0 + mul r0, r7 + add r0, r4, r0 + ldr r1, [r0, r3] + mov r0, #1 + lsl r0, r0, #0xc + tst r0, r1 + bne _02236FCA + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022451C0 + ldr r0, _02237060 ; =0x00002DC8 + ldr r2, [r4, #0x64] + add r1, r4, r0 + add r0, r7, #0 + mul r0, r2 + ldr r3, [r1, r0] + ldr r2, _02237064 ; =0xFFFC7FFF + and r3, r2 + mov r2, #0xa + lsl r2, r2, #0xe + orr r2, r3 + str r2, [r1, r0] +_02236FCA: + ldr r1, [r4, #0x64] + ldr r0, _02237060 ; =0x00002DC8 + mov r7, #0xc0 + add r3, r1, #0 + add r6, r4, r0 + mul r3, r7 + ldr r1, [r6, r3] + ldr r2, _02237064 ; =0xFFFC7FFF + and r2, r1 + lsl r1, r1, #0xe + lsr r1, r1, #0x1d + sub r1, r1, #1 + lsl r1, r1, #0x1d + lsr r1, r1, #0xe + orr r1, r2 + str r1, [r6, r3] + ldr r2, [r4, #0x64] + add r1, r2, #0 + mul r1, r7 + add r1, r4, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0xe + lsr r0, r0, #0x1d + bne _02237002 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022451F0 +_02237002: + ldr r0, _02237068 ; =0x00003044 + mov r2, #1 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _0223706C ; =0x000003E1 + ldrb r1, [r1, r0] + ldr r0, _02237070 ; =0x00002154 + str r1, [r4, r0] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02237060 ; =0x00002DC8 + ldr r0, [r1, r0] + lsl r0, r0, #0xe + lsr r1, r0, #0x1d + mov r0, #5 + sub r3, r0, r1 + cmp r3, #1 + ble _0223703A + ldr r0, _02237070 ; =0x00002154 +_0223702E: + ldr r1, [r4, r0] + add r2, r2, #1 + lsl r1, r1, #1 + str r1, [r4, r0] + cmp r2, r3 + blt _0223702E +_0223703A: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02237074 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x1e + tst r0, r1 + beq _02237056 + ldr r0, _02237070 ; =0x00002154 + ldr r1, [r4, r0] + lsl r1, r1, #1 + str r1, [r4, r0] +_02237056: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223705C: .word 0xFFFFFE3F +_02237060: .word 0x00002DC8 +_02237064: .word 0xFFFC7FFF +_02237068: .word 0x00003044 +_0223706C: .word 0x000003E1 +_02237070: .word 0x00002154 +_02237074: .word 0x00002DB0 + + thumb_func_start MOD11_02237078 +MOD11_02237078: ; 0x02237078 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r2, [r4, #0x64] + mov r0, #0xc0 + add r1, r2, #0 + mul r1, r0 + ldr r0, _022370F4 ; =0x00002DC8 + add r0, r4, r0 + ldr r3, [r0, r1] + lsl r2, r3, #0xb + lsr r5, r2, #0x1d + cmp r5, #5 + bhs _022370A8 + ldr r2, _022370F8 ; =0xFFE3FFFF + and r3, r2 + add r2, r5, #1 + lsl r2, r2, #0x1d + lsr r2, r2, #0xb + orr r2, r3 + str r2, [r0, r1] +_022370A8: + ldr r0, _022370FC ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _02237100 ; =0x000003E1 + ldrb r1, [r1, r0] + ldr r0, _02237104 ; =0x00002154 + str r1, [r4, r0] + ldr r2, [r4, #0x64] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _022370F4 ; =0x00002DC8 + mov r0, #1 + ldr r1, [r2, r1] + lsl r1, r1, #0xb + lsr r1, r1, #0x1d + cmp r1, #1 + bls _022370EE + ldr r3, _02237104 ; =0x00002154 + ldr r2, _022370F4 ; =0x00002DC8 + mov r1, #0xc0 +_022370D4: + ldr r5, [r4, r3] + add r0, r0, #1 + lsl r5, r5, #1 + str r5, [r4, r3] + ldr r5, [r4, #0x64] + add r6, r5, #0 + mul r6, r1 + add r5, r4, r6 + ldr r5, [r5, r2] + lsl r5, r5, #0xb + lsr r5, r5, #0x1d + cmp r0, r5 + blo _022370D4 +_022370EE: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_022370F4: .word 0x00002DC8 +_022370F8: .word 0xFFE3FFFF +_022370FC: .word 0x00003044 +_02237100: .word 0x000003E1 +_02237104: .word 0x00002154 + + thumb_func_start MOD11_02237108 +MOD11_02237108: ; 0x02237108 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r3, r0, #0 + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + mov r5, #0xc0 + add r1, r0, #0 + mul r1, r5 + ldr r6, _02237184 ; =0x00002DBE + add r1, r4, r1 + ldrb r0, [r1, r6] + lsl r0, r0, #0x1c + lsr r2, r0, #0x1c + add r0, r5, #0 + add r0, #0x58 + ldr r0, [r4, r0] + mul r5, r0 + add r5, r4, r5 + ldrb r5, [r5, r6] + lsl r5, r5, #0x1c + lsr r5, r5, #0x1c + cmp r5, r2 + beq _0223715A + sub r6, #0xe + ldr r6, [r1, r6] + mov r1, #0xf + lsl r1, r1, #0x10 + tst r1, r6 + bne _0223715A + cmp r5, #2 + beq _0223715A + cmp r2, #2 + bne _02237164 +_0223715A: + add r0, r4, #0 + add r1, r3, #0 + bl MOD11_0223A424 + b _0223717E +_02237164: + bl FUN_0206A92C + ldr r1, _02237188 ; =0x00002DB0 + mov r2, #0xc0 + add r1, r4, r1 + add r4, #0x94 + ldr r3, [r4] + lsl r0, r0, #0x10 + add r4, r3, #0 + mul r4, r2 + ldr r2, [r1, r4] + orr r0, r2 + str r0, [r1, r4] +_0223717E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02237184: .word 0x00002DBE +_02237188: .word 0x00002DB0 + + thumb_func_start MOD11_0223718C +MOD11_0223718C: ; 0x0223718C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + mov r5, #0x6f + add r2, r0, #0 + lsl r5, r5, #2 + add r1, r4, r5 + lsl r0, r2, #2 + ldr r6, [r1, r0] + mov r3, #8 + tst r3, r6 + beq _022371D0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223A424 + ldr r1, _02237214 ; =0x0000216C + mov r0, #0x40 + ldr r2, [r4, r1] + orr r0, r2 + str r0, [r4, r1] + b _02237210 +_022371D0: + mov r3, #8 + orr r3, r6 + str r3, [r1, r0] + add r5, #8 + lsl r0, r2, #3 + add r1, r4, r5 + ldr r3, [r1, r0] + ldr r2, _02237218 ; =0xFFF1FFFF + and r3, r2 + mov r2, #0xa + lsl r2, r2, #0x10 + orr r2, r3 + str r2, [r1, r0] + ldr r3, [r1, r0] + ldr r2, _0223721C ; =0xFFFE7FFF + and r3, r2 + ldr r2, [r4, #0x64] + lsl r2, r2, #0x1e + lsr r2, r2, #0xf + orr r2, r3 + str r2, [r1, r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + ldr r1, [r4, #0x64] + add r0, #0xf8 + str r1, [r0] + mov r0, #0xc6 + add r4, #0xf6 + strh r0, [r4] +_02237210: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237214: .word 0x0000216C +_02237218: .word 0xFFF1FFFF +_0223721C: .word 0xFFFE7FFF + + thumb_func_start MOD11_02237220 +MOD11_02237220: ; 0x02237220 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + bl FUN_0201B9EC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x66 + bge _02237248 + ldr r0, _02237284 ; =0x00002154 + mov r1, #0x28 + str r1, [r5, r0] + b _0223727E +_02237248: + cmp r0, #0xb2 + bge _02237254 + ldr r0, _02237284 ; =0x00002154 + mov r1, #0x50 + str r1, [r5, r0] + b _0223727E +_02237254: + cmp r0, #0xcc + bge _02237260 + ldr r0, _02237284 ; =0x00002154 + mov r1, #0x78 + str r1, [r5, r0] + b _0223727E +_02237260: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02237288 ; =0x00002D90 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD11_022476C0 + ldr r1, _0223728C ; =0x0000215C + str r0, [r5, r1] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 +_0223727E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02237284: .word 0x00002154 +_02237288: .word 0x00002D90 +_0223728C: .word 0x0000215C + + thumb_func_start MOD11_02237290 +MOD11_02237290: ; 0x02237290 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, _0223732C ; =0x00003120 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223731C + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + ldr r0, _0223732C ; =0x00003120 + strb r1, [r4, r0] + ldrb r1, [r4, r0] + cmp r1, #5 + bhs _022372C4 + ldr r1, _02237330 ; =0x00002154 + mov r2, #0xa + str r2, [r4, r1] + mov r1, #4 + strb r1, [r4, r0] + b _0223731C +_022372C4: + cmp r1, #0xf + bhs _022372D4 + ldr r1, _02237330 ; =0x00002154 + mov r2, #0x1e + str r2, [r4, r1] + mov r1, #5 + strb r1, [r4, r0] + b _0223731C +_022372D4: + cmp r1, #0x23 + bhs _022372E4 + ldr r1, _02237330 ; =0x00002154 + mov r2, #0x32 + str r2, [r4, r1] + mov r1, #6 + strb r1, [r4, r0] + b _0223731C +_022372E4: + cmp r1, #0x41 + bhs _022372F4 + ldr r1, _02237330 ; =0x00002154 + mov r2, #0x46 + str r2, [r4, r1] + mov r1, #7 + strb r1, [r4, r0] + b _0223731C +_022372F4: + cmp r1, #0x55 + bhs _02237304 + ldr r1, _02237330 ; =0x00002154 + mov r2, #0x5a + str r2, [r4, r1] + mov r1, #8 + strb r1, [r4, r0] + b _0223731C +_02237304: + cmp r1, #0x5f + ldr r1, _02237330 ; =0x00002154 + bhs _02237314 + mov r2, #0x6e + str r2, [r4, r1] + mov r1, #9 + strb r1, [r4, r0] + b _0223731C +_02237314: + mov r2, #0x96 + str r2, [r4, r1] + mov r1, #0xa + strb r1, [r4, r0] +_0223731C: + ldr r0, _0223732C ; =0x00003120 + ldrb r1, [r4, r0] + mov r0, #0x13 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + nop +_0223732C: .word 0x00003120 +_02237330: .word 0x00002154 + + thumb_func_start MOD11_02237334 +MOD11_02237334: ; 0x02237334 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_02246DE0 + cmp r0, #0 + bne _0223737E + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223A424 + b _02237392 +_0223737E: + cmp r7, #1 + bne _02237392 + mov r0, #0x4f + lsl r0, r0, #2 + add r3, r5, r0 + lsl r2, r4, #2 + ldr r1, [r3, r2] + mov r0, #1 + orr r0, r1 + str r0, [r3, r2] +_02237392: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02237398 +MOD11_02237398: ; 0x02237398 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4, #0x64] + bl MOD11_02230270 + ldr r1, [r4, #0x64] + mov r6, #0xe + ldr r5, _022374D4 ; =0x00002DB0 + add r2, r1, #0 + mov r3, #0xc0 + mul r2, r3 + add r1, r4, r5 + ldr r7, [r1, r2] + lsl r6, r6, #0xc + tst r6, r7 + beq _022373F4 + ldr r0, _022374D8 ; =0xFFFF1FFF + and r0, r7 + str r0, [r1, r2] + ldr r0, [r4, #0x64] + mov r2, #0x74 + add r1, r0, #0 + add r0, r5, #0 + mul r1, r3 + add r1, r4, r1 + add r0, #0x1c + ldr r0, [r1, r0] + add r5, #0x3a + lsl r0, r0, #0x18 + lsr r1, r0, #0x1e + add r0, r3, #0 + add r0, #0x58 + str r1, [r4, r0] + ldr r0, [r4, #0x64] + add r1, r0, #0 + mul r1, r3 + add r0, r4, r1 + ldrh r0, [r0, r5] + add r3, #0x64 + mov r1, #1 + str r0, [r4, r3] + add r0, r4, #0 + bl MOD11_0223A43C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022373F4: + add r5, #0x10 + add r5, r4, r5 + ldr r1, [r5, r2] + mov r6, #4 + tst r6, r1 + beq _0223742A + mov r0, #4 + bic r1, r0 + str r1, [r5, r2] + ldr r0, [r4, #0x64] + add r2, r0, #0 + mul r2, r3 + ldr r1, [r5, r2] + mov r0, #3 + bic r1, r0 + str r1, [r5, r2] + mov r1, #0x49 + add r0, r1, #0 + add r0, #0xdb + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x75 + bl MOD11_0223A43C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223742A: + mov r1, #0x72 + lsl r1, r1, #2 + add r6, r4, r1 + lsl r5, r0, #3 + ldr r2, [r6, r5] + lsl r3, r2, #0x1e + lsr r3, r3, #0x1e + beq _02237466 + sub r1, #0xc + lsl r3, r0, #2 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #4 + bic r2, r0 + str r2, [r1, r3] + ldr r1, [r6, r5] + mov r0, #3 + bic r1, r0 + str r1, [r6, r5] + mov r1, #0xbf + add r0, r1, #0 + add r0, #0x65 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x75 + bl MOD11_0223A43C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02237466: + lsl r2, r2, #0x1c + lsr r2, r2, #0x1e + beq _0223749A + add r2, r1, #0 + sub r2, #0xc + lsl r7, r0, #2 + add r3, r4, r2 + ldr r2, [r3, r7] + ldr r0, _022374DC ; =0xFFFFFBFF + and r0, r2 + str r0, [r3, r7] + ldr r2, [r6, r5] + mov r0, #0xc + bic r2, r0 + add r0, r1, #0 + str r2, [r6, r5] + sub r0, #0x42 + sub r1, #0xa4 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x75 + bl MOD11_0223A43C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223749A: + add r2, r1, #0 + sub r2, #0xc + add r2, r4, r2 + lsl r0, r0, #2 + ldr r6, [r2, r0] + mov r5, #0x80 + add r3, r6, #0 + tst r3, r5 + beq _022374C6 + mov r3, #0x80 + bic r6, r3 + str r6, [r2, r0] + sub r1, #0xa + add r5, #0xa4 + str r1, [r4, r5] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x75 + bl MOD11_0223A43C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022374C6: + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022374D4: .word 0x00002DB0 +_022374D8: .word 0xFFFF1FFF +_022374DC: .word 0xFFFFFBFF + + thumb_func_start MOD11_022374E0 +MOD11_022374E0: ; 0x022374E0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + ldr r0, _02237578 ; =0x000080FF + tst r0, r1 + beq _02237522 + mov r0, #0xd + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _02237522 + mov r0, #0x4c + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _02237536 +_02237522: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0223757C ; =0x00002D90 + ldr r0, [r1, r0] + lsr r1, r0, #1 + ldr r0, _02237580 ; =0x0000215C + str r1, [r4, r0] + b _02237572 +_02237536: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x30 + tst r0, r1 + ldr r1, [r4, #0x64] + beq _0223755E + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0223757C ; =0x00002D90 + ldr r1, [r1, r0] + mov r0, #0x14 + mul r0, r1 + mov r1, #0x1e + bl MOD11_022476C0 + ldr r1, _02237580 ; =0x0000215C + str r0, [r4, r1] + b _02237572 +_0223755E: + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0223757C ; =0x00002D90 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD11_022476C0 + ldr r1, _02237580 ; =0x0000215C + str r0, [r4, r1] +_02237572: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02237578: .word 0x000080FF +_0223757C: .word 0x00002D90 +_02237580: .word 0x0000215C + + thumb_func_start MOD11_02237584 +MOD11_02237584: ; 0x02237584 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, _02237664 ; =0x00002D54 + ldr r1, [r4, #0x64] + add r3, r4, r0 + mov r0, #0xc0 + mul r0, r1 + ldr r1, [r3, r0] + mov r5, #2 + lsl r0, r1, #2 + lsr r0, r0, #0x1b + and r0, r5 + lsl r2, r0, #4 + lsl r0, r1, #7 + lsr r0, r0, #0x1b + and r0, r5 + lsl r7, r0, #3 + lsl r0, r1, #0xc + lsr r0, r0, #0x1b + and r0, r5 + lsl r0, r0, #2 + mov ip, r0 + lsl r0, r1, #0x11 + lsr r0, r0, #0x1b + and r0, r5 + lsl r6, r0, #1 + lsl r0, r1, #0x1b + lsr r0, r0, #0x1b + lsl r1, r1, #0x16 + and r0, r5 + lsr r1, r1, #0x1b + lsr r0, r0, #1 + and r1, r5 + orr r0, r1 + add r1, r6, #0 + orr r1, r0 + mov r0, ip + orr r0, r1 + orr r0, r7 + add r1, r2, #0 + orr r1, r0 + ldr r0, _02237668 ; =0x00002154 + str r1, [r4, r0] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r5, [r3, r0] + lsl r0, r5, #2 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r6, r0, #0x1a + lsl r0, r5, #7 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r3, r0, #0x1b + lsl r0, r5, #0xc + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r2, r0, #0x1c + lsl r0, r5, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r7, r0, #0x1d + lsl r0, r5, #0x1b + lsr r1, r0, #0x1b + mov r0, #1 + and r0, r1 + lsl r1, r5, #0x16 + lsr r1, r1, #0x1b + lsl r1, r1, #0x1f + lsr r1, r1, #0x1e + orr r0, r1 + orr r0, r7 + orr r0, r2 + orr r0, r3 + add r1, r6, #0 + orr r1, r0 + ldr r0, _02237668 ; =0x00002154 + add r0, #0xc + str r1, [r4, r0] + ldr r0, _02237668 ; =0x00002154 + ldr r1, [r4, r0] + mov r0, #0x28 + mul r0, r1 + mov r1, #0x3f + blx _s32_div_f + ldr r1, _02237668 ; =0x00002154 + add r0, #0x1e + str r0, [r4, r1] + add r1, #0xc + ldr r1, [r4, r1] + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + blx _s32_div_f + add r1, r0, #1 + ldr r0, _0223766C ; =0x00002160 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #9 + blt _0223765E + add r1, r1, #1 + str r1, [r4, r0] +_0223765E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237664: .word 0x00002D54 +_02237668: .word 0x00002154 +_0223766C: .word 0x00002160 + + thumb_func_start MOD11_02237670 +MOD11_02237670: ; 0x02237670 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r2, _022376C8 ; =0x00002D58 + mov r1, #0 + mov r3, #0xc0 + add r5, r2, #0 +_02237684: + ldr r6, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r6 + ldr r6, [r4, #0x64] + add r0, r4, r0 + add r0, r1, r0 + add r7, r6, #0 + mul r7, r3 + add r6, r4, r7 + add r6, r1, r6 + ldrsb r0, [r0, r2] + add r1, r1, #1 + cmp r1, #8 + strb r0, [r6, r5] + blt _02237684 + ldr r0, [r4, #0x64] + ldr r6, [r4, #0x6c] + mov r3, #0xc0 + add r1, r0, #0 + ldr r5, _022376CC ; =0x00002DB0 + mul r1, r3 + mul r3, r6 + add r2, r4, r5 + add r3, r4, r3 + ldr r4, [r3, r5] + mov r3, #1 + lsl r3, r3, #0x14 + ldr r0, [r2, r1] + and r3, r4 + orr r0, r3 + str r0, [r2, r1] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022376C8: .word 0x00002D58 +_022376CC: .word 0x00002DB0 + + thumb_func_start MOD11_022376D0 +MOD11_022376D0: ; 0x022376D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + ldr r1, [r4, #0x6c] + add r2, r0, #0 + mov r0, #0x62 + add r3, r4, r1 + lsl r0, r0, #2 + ldrb r0, [r3, r0] + cmp r0, #0 + bne _022377A4 + add r0, r5, #0 + bl MOD11_02230270 + mov r1, #0x6f + lsl r1, r1, #2 + lsl r3, r0, #2 + add r6, r4, r1 + add r7, r1, #0 + ldr r2, [r6, r3] + mov r0, #0x10 + orr r0, r2 + str r0, [r6, r3] + ldr r0, [r4, #0x6c] + sub r7, #0x34 + add r2, r4, r0 + mov r0, #3 + strb r0, [r2, r7] + add r7, r1, #0 + ldr r0, _022377B4 ; =0x00003044 + sub r7, #0x2c + ldr r2, [r4, r0] + ldr r0, [r4, #0x6c] + sub r1, #0x24 + lsl r0, r0, #1 + add r0, r4, r0 + strh r2, [r0, r7] + ldr r2, [r4, #0x6c] + ldr r0, [r4, #0x64] + lsl r2, r2, #2 + add r2, r4, r2 + str r0, [r2, r1] + mov r0, #3 + lsl r0, r0, #7 + ldr r0, [r4, r0] + ldr r2, _022377B4 ; =0x00003044 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #0x64] + add r1, r4, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [r4, #0x6c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r2, [r4, r2] + ldr r3, [r6, r3] + add r0, r5, #0 + bl MOD11_0224B310 + mov r1, #0 + mvn r1, r1 + mul r1, r0 + add r0, r4, #0 + bl MOD11_0224BF10 + ldr r1, [r4, #0x6c] + lsl r1, r1, #2 + add r2, r4, r1 + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #0x64] + lsl r0, r0, #6 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x2c + ldr r0, [r2, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _022377AC + ldr r0, [r4, #0x6c] + add r5, r4, r1 + lsl r4, r0, #2 + ldr r1, [r5, r4] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + str r0, [r5, r4] + b _022377AC +_022377A4: + add r0, r4, #0 + add r1, r2, #0 + bl MOD11_0223A424 +_022377AC: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022377B4: .word 0x00003044 + + thumb_func_start MOD11_022377B8 +MOD11_022377B8: ; 0x022377B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_0223C230 + add r6, r0, #0 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_0223CC8C + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r1, r4, #0 + add r3, r6, #0 + bl MOD11_0223D29C + ldr r0, _02237830 ; =0x0000216C + ldr r1, [r4, r0] + ldr r0, _02237834 ; =0x001FD849 + tst r0, r1 + beq _02237828 + ldr r1, [sp, #8] + add r0, r4, #0 + bl MOD11_0223A424 +_02237828: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237830: .word 0x0000216C +_02237834: .word 0x001FD849 + + thumb_func_start MOD11_02237838 +MOD11_02237838: ; 0x02237838 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r2, [r4, #0x64] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #0 + bl MOD11_02246ED0 + cmp r0, #0 + beq _02237866 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02237866: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0223786C +MOD11_0223786C: ; 0x0223786C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r5, #0x64] + add r0, r7, #0 + bl MOD11_0222FFC8 + ldr r1, _02237AA0 ; =0x0000217D + str r0, [sp] + ldrb r0, [r5, r1] + cmp r0, #0 + bne _02237900 + mov r0, #2 + strb r0, [r5, r1] + add r0, r1, #0 + mov r2, #0xfd + add r0, #0xb + str r2, [r5, r0] + mov r2, #0 + add r0, r1, #2 + strb r2, [r5, r0] + add r6, r1, #2 +_022378A2: + ldr r2, _02237AA4 ; =0x0000217F + ldr r1, [r5, #0x64] + ldrb r2, [r5, r2] + add r0, r7, #0 + bl MOD11_02230014 + ldr r1, _02237AA4 ; =0x0000217F + add r4, r0, #0 + ldrb r3, [r5, r1] + ldr r1, [r5, #0x64] + add r2, r5, r1 + ldr r1, _02237AA8 ; =0x0000219C + ldrb r1, [r2, r1] + cmp r3, r1 + beq _02237900 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022378F8 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022378F8 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02237AAC ; =0x000001EE + cmp r0, r1 + beq _022378F8 + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02237900 +_022378F8: + ldrb r0, [r5, r6] + add r0, r0, #1 + strb r0, [r5, r6] + b _022378A2 +_02237900: + ldr r2, _02237AA4 ; =0x0000217F + ldr r1, [r5, #0x64] + ldrb r2, [r5, r2] + add r0, r7, #0 + bl MOD11_02230014 + add r4, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, r6, #0 + mov r2, #1 + bl FUN_02068654 + ldr r1, _02237AB0 ; =0x00002144 + ldr r2, _02237AB4 ; =0x00003044 + str r0, [r5, r1] + ldr r2, [r5, r2] + ldr r0, [r5, r1] + lsl r2, r2, #4 + add r3, r5, r2 + ldr r2, _02237AB8 ; =0x000003E1 + ldrb r2, [r3, r2] + mul r2, r0 + str r2, [r5, r1] + lsl r0, r4, #1 + mov r1, #5 + blx _s32_div_f + ldr r1, _02237AB0 ; =0x00002144 + add r0, r0, #2 + ldr r2, [r5, r1] + mul r0, r2 + str r0, [r5, r1] + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + mov r1, #0xb5 + add r2, r5, r0 + lsl r1, r1, #6 + ldrh r0, [r2, r1] + add r1, #0x26 + ldrb r1, [r2, r1] + mov r2, #2 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1b + bl FUN_02068654 + add r1, r0, #0 + ldr r0, _02237AB0 ; =0x00002144 + ldr r0, [r5, r0] + blx _u32_div_f + ldr r1, _02237AB0 ; =0x00002144 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0x32 + blx _s32_div_f + ldr r1, _02237AB0 ; =0x00002144 + str r0, [r5, r1] + ldr r0, [r5, r1] + add r0, r0, #2 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #0xc + ldr r2, [r5, r1] + ldr r0, [r5, r0] + mul r0, r2 + str r0, [r5, r1] + ldr r0, [r5, #0x64] + lsl r0, r0, #6 + add r2, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r2, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _022379CC + ldr r1, [r5, r1] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + ldr r1, _02237AB0 ; =0x00002144 + str r0, [r5, r1] +_022379CC: + ldr r1, _02237AB0 ; =0x00002144 + add r0, r5, #0 + ldr r1, [r5, r1] + bl MOD11_0224BF10 + ldr r1, _02237AB0 ; =0x00002144 + str r0, [r5, r1] + mov r0, #0 + ldr r2, [r5, r1] + mvn r0, r0 + mul r0, r2 + str r0, [r5, r1] + add r0, r5, #0 + add r3, r1, #0 + ldr r2, _02237ABC ; =0x000001E1 + add r0, #0xf6 + strh r2, [r0] + add r0, r5, #0 + mov r2, #2 + add r0, #0xf5 + strb r2, [r0] + add r3, #0x3b + ldrb r3, [r5, r3] + ldr r0, [r5, #0x64] + add r6, r1, #0 + lsl r3, r3, #8 + orr r3, r0 + add r0, r5, #0 + add r0, #0xf8 + str r3, [r0] + add r0, r1, #0 + add r0, #0x3b + ldrb r0, [r5, r0] + add r6, #0x3b + add r3, r0, #1 + add r0, r1, #0 + add r0, #0x3b + strb r3, [r5, r0] + add r0, r1, #0 + add r0, #0x38 + strb r2, [r5, r0] + add r0, r1, #0 + add r0, #0x3b + ldrb r2, [r5, r0] + ldr r0, [sp] + cmp r2, r0 + bge _02237A94 +_02237A2A: + ldr r1, [r5, #0x64] + add r0, r7, #0 + bl MOD11_02230014 + ldr r1, _02237AA4 ; =0x0000217F + add r4, r0, #0 + ldrb r3, [r5, r1] + ldr r1, [r5, #0x64] + add r2, r5, r1 + ldr r1, _02237AA8 ; =0x0000219C + ldrb r1, [r2, r1] + cmp r3, r1 + beq _02237A9A + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02237A7C + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02237A7C + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02237AAC ; =0x000001EE + cmp r0, r1 + beq _02237A7C + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02237A9A +_02237A7C: + ldrb r0, [r5, r6] + add r0, r0, #1 + strb r0, [r5, r6] + ldr r0, _02237AA4 ; =0x0000217F + ldrb r2, [r5, r0] + ldr r0, [sp] + cmp r2, r0 + blt _02237A2A + ldr r0, _02237AC0 ; =0x0000217C + mov r1, #1 + strb r1, [r5, r0] + b _02237A9A +_02237A94: + mov r0, #1 + add r1, #0x38 + strb r0, [r5, r1] +_02237A9A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237AA0: .word 0x0000217D +_02237AA4: .word 0x0000217F +_02237AA8: .word 0x0000219C +_02237AAC: .word 0x000001EE +_02237AB0: .word 0x00002144 +_02237AB4: .word 0x00003044 +_02237AB8: .word 0x000003E1 +_02237ABC: .word 0x000001E1 +_02237AC0: .word 0x0000217C + + thumb_func_start MOD11_02237AC4 +MOD11_02237AC4: ; 0x02237AC4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + mov r1, #0x71 + lsl r1, r1, #2 + mov r2, #1 + add r1, r4, r1 + lsl r0, r0, #3 + ldr r3, [r1, r0] + lsl r2, r2, #0x14 + orr r2, r3 + str r2, [r1, r0] + ldr r3, [r1, r0] + ldr r2, _02237B00 ; =0xFF9FFFFF + and r3, r2 + ldr r2, [r4, #0x64] + lsl r2, r2, #0x1e + lsr r2, r2, #9 + orr r2, r3 + str r2, [r1, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02237B00: .word 0xFF9FFFFF + + thumb_func_start MOD11_02237B04 +MOD11_02237B04: ; 0x02237B04 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02237B82 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x10 + bl MOD11_0223C230 + add r4, r0, #0 + bl FUN_0206A92C + ldr r1, _02237B90 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _02237B78 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _02237B94 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02237B78 + ldr r0, [r5, #0x64] + mov r2, #0x75 + lsl r0, r0, #6 + add r0, r5, r0 + lsl r2, r2, #2 + ldr r0, [r0, r2] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bne _02237B78 + add r1, r5, r2 + lsl r0, r4, #6 + ldr r3, [r1, r0] + lsl r3, r3, #0x1c + lsr r3, r3, #0x1f + bne _02237B78 + sub r2, #0xbc + str r4, [r5, r2] + ldr r3, [r1, r0] + mov r2, #8 + orr r2, r3 + str r2, [r1, r0] + b _02237B8A +_02237B78: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _02237B8A +_02237B82: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02237B8A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02237B90: .word 0x00003108 +_02237B94: .word 0x00002D8C + + thumb_func_start MOD11_02237B98 +MOD11_02237B98: ; 0x02237B98 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r5, #0 + bl MOD11_0222FF74 + str r0, [sp, #8] + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + str r0, [sp] + ldr r1, [r4, #0x6c] + add r0, r5, #0 + bl MOD11_02230270 + add r7, r0, #0 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + cmp r0, #0 + beq _02237BF2 + ldr r0, [sp, #8] + mov r1, #0x84 + tst r0, r1 + bne _02237BF2 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _02237C90 +_02237BF2: + ldr r0, [r4, #0x64] + add r1, r4, r0 + ldr r0, _02237C98 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + ldr r1, [sp] + lsl r1, r1, #3 + add r2, r4, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #3 + lsr r1, r1, #0x1a + tst r0, r1 + bne _02237C30 + ldr r0, [r4, #0x6c] + add r1, r4, r0 + ldr r0, _02237C98 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + lsl r1, r7, #3 + add r2, r4, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #3 + lsr r1, r1, #0x1a + tst r0, r1 + beq _02237C3A +_02237C30: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _02237C90 +_02237C3A: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + add r3, r4, r2 + ldr r2, _02237C9C ; =0x00002DB8 + ldrh r3, [r3, r2] + cmp r3, #0 + bne _02237C58 + ldr r3, [r4, #0x6c] + mul r0, r3 + add r0, r4, r0 + ldrh r0, [r0, r2] + cmp r0, #0 + beq _02237C6E +_02237C58: + add r0, r4, #0 + bl MOD11_02246CAC + cmp r0, #0 + beq _02237C6E + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_02246CAC + cmp r0, #0 + bne _02237C78 +_02237C6E: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _02237C90 +_02237C78: + ldr r1, [r4, #0x64] + ldr r2, [r4, #0x6c] + add r0, r4, #0 + mov r3, #0x3c + bl MOD11_02246D84 + cmp r0, #1 + bne _02237C90 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_0223A424 +_02237C90: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02237C98: .word 0x0000219C +_02237C9C: .word 0x00002DB8 + + thumb_func_start MOD11_02237CA0 +MOD11_02237CA0: ; 0x02237CA0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + mov r2, #0x63 + lsl r2, r2, #2 + ldr r3, [r4, #0x64] + add r5, r4, r2 + add r1, r0, #0 + ldrb r0, [r5, r3] + cmp r0, #0 + beq _02237CCA + add r0, r4, #0 + bl MOD11_0223A424 + b _02237CDA +_02237CCA: + mov r0, #2 + strb r0, [r5, r3] + ldr r0, [r4, #0x64] + add r2, #0x2c + add r1, r4, r0 + ldr r0, _02237CE0 ; =0x0000219C + ldrb r0, [r1, r0] + strb r0, [r1, r2] +_02237CDA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02237CE0: .word 0x0000219C + + thumb_func_start MOD11_02237CE4 +MOD11_02237CE4: ; 0x02237CE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + str r0, [sp] + str r1, [sp, #4] + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [sp, #4] + bl MOD11_0223A404 + ldr r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp] + ldr r1, [r1, #0x64] + mov r7, #0 + bl MOD11_0222FFC8 + str r0, [sp, #0xc] + add r0, r7, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _02237D8A + add r5, sp, #0x18 +_02237D16: + ldr r0, [sp, #4] + ldr r1, [r0, #0x64] + add r2, r0, r1 + ldr r0, _02237DB8 ; =0x0000219C + ldrb r2, [r2, r0] + ldr r0, [sp, #0x10] + cmp r0, r2 + beq _02237D7E + ldr r0, [sp] + ldr r2, [sp, #0x10] + bl MOD11_02230014 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #8] + bl FUN_020671BC + cmp r0, #0 + beq _02237D7E + ldr r0, [sp, #8] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02237DBC ; =0x000001EE + cmp r0, r1 + beq _02237D7E + mov r4, #0 +_02237D4E: + add r1, r4, #0 + ldr r0, [sp, #8] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r6, #0 + bl MOD11_02246BE8 + cmp r0, #0 + bne _02237D78 + add r0, r6, #0 + bl MOD11_0224C07C + cmp r0, #1 + bne _02237D78 + strh r6, [r5] + add r5, r5, #2 + add r7, r7, #1 +_02237D78: + add r4, r4, #1 + cmp r4, #4 + blt _02237D4E +_02237D7E: + ldr r0, [sp, #0x10] + add r1, r0, #1 + ldr r0, [sp, #0xc] + str r1, [sp, #0x10] + cmp r1, r0 + blt _02237D16 +_02237D8A: + cmp r7, #0 + beq _02237DA8 + bl FUN_0201B9EC + add r1, r7, #0 + blx _s32_div_f + lsl r1, r1, #1 + add r0, sp, #0x18 + ldrh r2, [r0, r1] + mov r1, #0x49 + ldr r0, [sp, #4] + lsl r1, r1, #2 + str r2, [r0, r1] + b _02237DB0 +_02237DA8: + ldr r0, [sp, #4] + ldr r1, [sp, #0x14] + bl MOD11_0223A424 +_02237DB0: + mov r0, #0 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237DB8: .word 0x0000219C +_02237DBC: .word 0x000001EE + + thumb_func_start MOD11_02237DC0 +MOD11_02237DC0: ; 0x02237DC0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [sp] + bl MOD11_0223A404 + str r0, [sp, #4] + mov r6, #0 + add r0, r7, #0 + add r4, r6, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _02237E00 + ldr r5, [sp] +_02237DE8: + ldr r0, _02237E30 ; =0x00002D8C + ldr r0, [r5, r0] + cmp r0, #0 + beq _02237DF2 + add r6, r6, #1 +_02237DF2: + add r0, r7, #0 + add r5, #0xc0 + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _02237DE8 +_02237E00: + ldr r0, [sp] + add r0, #0xec + ldr r1, [r0] + sub r0, r6, #1 + cmp r1, r0 + bne _02237E16 + ldr r0, [sp] + ldr r1, [sp, #4] + bl MOD11_0223A424 + b _02237E2A +_02237E16: + mov r1, #0x75 + ldr r0, [sp] + lsl r1, r1, #2 + add r3, r0, r1 + ldr r0, [r0, #0x64] + lsl r2, r0, #6 + ldr r1, [r3, r2] + mov r0, #0x10 + orr r0, r1 + str r0, [r3, r2] +_02237E2A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237E30: .word 0x00002D8C + + thumb_func_start MOD11_02237E34 +MOD11_02237E34: ; 0x02237E34 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r5, #0x64] + add r0, r6, #0 + bl MOD11_02230270 + add r1, r5, #0 + ldr r4, [r5, #0x64] + add r1, #0x84 + str r4, [r1] + ldr r1, [r5, #0x6c] + lsl r0, r0, #3 + str r1, [r5, #0x64] + mov r1, #0x71 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02237E7E + lsl r0, r0, #9 + lsr r0, r0, #0x1e + mov r1, #0xc0 + mul r1, r0 + add r2, r5, r1 + ldr r1, _02237EDC ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _02237E7E + str r0, [r5, #0x6c] + b _02237ECA +_02237E7E: + ldr r0, _02237EE0 ; =0x00003044 + ldr r3, [r5, r0] + lsl r0, r3, #4 + add r1, r5, r0 + ldr r0, _02237EE4 ; =0x000003E6 + ldrh r0, [r1, r0] + cmp r0, #4 + beq _02237E92 + cmp r0, #8 + bne _02237E96 +_02237E92: + str r4, [r5, #0x6c] + b _02237ECA +_02237E96: + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + lsl r3, r3, #0x10 + ldr r2, [r5, #0x64] + add r0, r6, #0 + add r1, r5, #0 + lsr r3, r3, #0x10 + bl MOD11_02244C28 + mov r1, #0xb5 + lsl r1, r1, #2 + add r2, r5, r1 + mov r1, #0x1c + mul r1, r0 + ldr r1, [r2, r1] + lsl r2, r1, #0x1e + lsr r2, r2, #0x1f + bne _02237EC4 + lsl r1, r1, #0x1d + lsr r1, r1, #0x1f + beq _02237EC8 +_02237EC4: + str r0, [r5, #0x6c] + b _02237ECA +_02237EC8: + str r4, [r5, #0x6c] +_02237ECA: + mov r1, #0x85 + lsl r1, r1, #6 + ldr r2, [r5, r1] + mov r0, #8 + orr r0, r2 + str r0, [r5, r1] + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02237EDC: .word 0x00002D8C +_02237EE0: .word 0x00003044 +_02237EE4: .word 0x000003E6 + + thumb_func_start MOD11_02237EE8 +MOD11_02237EE8: ; 0x02237EE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r5, #0x64] + ldr r0, [r5, #0x6c] + lsl r4, r1, #6 + add r2, r5, r4 + lsl r1, r0, #2 + add r2, r2, r1 + mov r1, #0x76 + lsl r1, r1, #2 + ldr r1, [r2, r1] + cmp r1, #0 + beq _02237F1A + bl FUN_0206A92C + mov r1, #0x7b + add r2, r5, r4 + lsl r1, r1, #2 + ldr r1, [r2, r1] + tst r0, r1 + bne _02237F40 +_02237F1A: + ldr r0, [r5, #0x6c] + add r2, r5, r4 + lsl r1, r0, #2 + add r2, r2, r1 + mov r1, #0x1f + lsl r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _02237F48 + bl FUN_0206A92C + ldr r1, [r5, #0x64] + lsl r1, r1, #6 + add r2, r5, r1 + mov r1, #0x81 + lsl r1, r1, #2 + ldr r1, [r2, r1] + tst r0, r1 + beq _02237F48 +_02237F40: + ldr r0, _02237F54 ; =0x00002158 + mov r1, #0x14 + str r1, [r5, r0] + b _02237F4E +_02237F48: + ldr r0, _02237F54 ; =0x00002158 + mov r1, #0xa + str r1, [r5, r0] +_02237F4E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02237F54: .word 0x00002158 + + thumb_func_start MOD11_02237F58 +MOD11_02237F58: ; 0x02237F58 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r4, #0x6c] + add r0, r5, #0 + bl MOD11_02230270 + lsl r1, r0, #2 + add r2, r4, r1 + mov r1, #0x6f + lsl r1, r1, #2 + ldr r2, [r2, r1] + mov r1, #1 + tst r1, r2 + bne _02237F8C + mov r1, #2 + tst r1, r2 + beq _02237FBC +_02237F8C: + mov r5, #0x6f + lsl r5, r5, #2 + add r2, r4, r5 + lsl r1, r0, #2 + ldr r6, [r2, r1] + mov r3, #1 + bic r6, r3 + str r6, [r2, r1] + ldr r6, [r2, r1] + mov r3, #2 + bic r6, r3 + add r5, #8 + str r6, [r2, r1] + lsl r2, r0, #3 + add r3, r4, r5 + ldr r1, [r3, r2] + mov r0, #0x1c + bic r1, r0 + str r1, [r3, r2] + ldr r1, [r3, r2] + ldr r0, _02237FC8 ; =0xFFFFFC7F + and r0, r1 + str r0, [r3, r2] + b _02237FC4 +_02237FBC: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02237FC4: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02237FC8: .word 0xFFFFFC7F + + thumb_func_start MOD11_02237FCC +MOD11_02237FCC: ; 0x02237FCC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + mov r0, #0xb7 + lsl r0, r0, #6 + add r3, r4, r0 + ldr r0, [r4, #0x6c] + mov r5, #0xc0 + add r2, r0, #0 + mul r2, r5 + ldr r0, [r3, r2] + lsl r5, r5, #5 + tst r5, r0 + beq _02237FFE + add r0, r4, #0 + bl MOD11_0223A424 + b _02238006 +_02237FFE: + mov r1, #1 + lsl r1, r1, #0xc + orr r0, r1 + str r0, [r3, r2] +_02238006: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223800C +MOD11_0223800C: ; 0x0223800C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r5, #0x6c] + add r0, r4, #0 + bl MOD11_02230270 + add r4, r0, #0 + ldr r2, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r1, r5, r0 + ldr r0, _02238118 ; =0x00002DB8 + ldrh r0, [r1, r0] + cmp r0, #0 + beq _02238086 + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r3, #0x3c + bl MOD11_02246D84 + cmp r0, #1 + bne _02238086 + add r0, r5, #0 + ldr r1, _0223811C ; =0x000002CA + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x25 + add r0, #0xf5 + strb r1, [r0] + ldr r1, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + ldr r0, [r5, #0x6c] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _02238120 ; =0x00002D67 + add r2, r5, r2 + ldrb r2, [r2, r0] + add r0, r5, #0 + add r0, #0xfc + str r2, [r0] + ldr r0, _02238124 ; =0x00003044 + add r1, #0x40 + ldr r0, [r5, r0] + str r0, [r5, r1] + b _02238114 +_02238086: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02238118 ; =0x00002DB8 + ldrh r0, [r1, r0] + cmp r0, #0 + beq _0223810C + mov r1, #0x8a + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0xf6 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x21 + add r0, #0xf5 + strb r1, [r0] + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + ldr r1, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_0224682C + add r1, r5, #0 + add r1, #0xfc + str r0, [r1] + ldr r0, [r5, #0x6c] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r0, r5, r2 + ldr r2, _02238118 ; =0x00002DB8 + ldrh r3, [r0, r2] + add r0, r1, #0 + add r0, #0x40 + str r3, [r5, r0] + ldr r3, [r5, #0x6c] + mov r0, #0 + mul r1, r3 + add r1, r5, r1 + strh r0, [r1, r2] + ldr r0, [r5, #0x6c] + add r1, r5, r0 + ldr r0, _02238128 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + mov r1, #0x71 + lsl r1, r1, #2 + add r3, r5, r1 + lsl r2, r4, #3 + ldr r4, [r3, r2] + ldr r1, _0223812C ; =0xE07FFFFF + and r1, r4 + lsl r4, r4, #3 + lsr r4, r4, #0x1a + orr r0, r4 + lsl r0, r0, #0x1a + lsr r0, r0, #3 + orr r0, r1 + str r0, [r3, r2] + b _02238114 +_0223810C: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02238114: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02238118: .word 0x00002DB8 +_0223811C: .word 0x000002CA +_02238120: .word 0x00002D67 +_02238124: .word 0x00003044 +_02238128: .word 0x0000219C +_0223812C: .word 0xE07FFFFF + + thumb_func_start MOD11_02238130 +MOD11_02238130: ; 0x02238130 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, _02238178 ; =0x00002154 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02238174 + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0223817C ; =0x00003044 + ldr r1, [r4, r1] + lsl r1, r1, #4 + add r2, r4, r1 + ldr r1, _02238180 ; =0x000003E1 + ldrb r3, [r2, r1] + ldr r1, _02238184 ; =0x00002D8C + add r2, r4, r0 + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + mul r0, r3 + blx _u32_div_f + ldr r1, _02238178 ; =0x00002154 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _02238174 + mov r0, #1 + str r0, [r4, r1] +_02238174: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02238178: .word 0x00002154 +_0223817C: .word 0x00003044 +_02238180: .word 0x000003E1 +_02238184: .word 0x00002D8C + + thumb_func_start MOD11_02238188 +MOD11_02238188: ; 0x02238188 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r1, #0 + str r0, [sp] + add r0, r7, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r7, #0 + bl MOD11_0223A404 + str r0, [sp, #0x14] + ldr r0, [sp] + ldr r1, [r7, #0x64] + mov r2, #0 + bl MOD11_02230308 + add r4, r0, #0 + ldr r0, [sp] + ldr r1, [r7, #0x64] + mov r2, #2 + bl MOD11_02230308 + mov r6, #0xb7 + add r3, r0, #0 + lsl r6, r6, #6 + add r1, r4, #0 + mov r0, #0xc0 + mov r4, #1 + add r2, r7, r6 + mul r1, r0 + ldr r5, [r2, r1] + lsl r4, r4, #0x1e + orr r5, r4 + str r5, [r2, r1] + add r1, r3, #0 + mul r1, r0 + ldr r3, [r2, r1] + orr r3, r4 + str r3, [r2, r1] + ldr r1, [r7, #0x64] + mul r0, r1 + add r0, r7, r0 + ldr r2, [r0, r6] + lsr r0, r4, #0x11 + tst r0, r2 + beq _022381F0 + ldr r1, [sp, #0x14] + add r0, r7, #0 + bl MOD11_0223A424 + b _02238294 +_022381F0: + ldr r0, [sp] + bl MOD11_02230270 + str r0, [sp, #0x10] + ldr r0, [sp] + bl MOD11_0222FF84 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + cmp r0, #0 + ble _0223826A + str r7, [sp, #4] +_0223820C: + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD11_02230270 + ldr r1, [sp, #0x10] + cmp r1, r0 + beq _02238258 + mov r2, #0 + ldr r0, _0223829C ; =0x00002D4C + add r4, r2, #0 +_02238220: + ldr r1, [r7, #0x64] + mov r6, #0xc0 + mul r6, r1 + add r1, r7, r6 + add r6, r1, r4 + ldr r1, _0223829C ; =0x00002D4C + ldr r5, [sp, #4] + ldrh r6, [r6, r1] + mov r3, #0 +_02238232: + ldrh r1, [r5, r0] + cmp r6, r1 + bne _02238240 + cmp r6, #0 + beq _02238240 + cmp r1, #0 + bne _02238248 +_02238240: + add r3, r3, #1 + add r5, r5, #2 + cmp r3, #4 + blt _02238232 +_02238248: + cmp r3, #4 + bne _02238254 + add r2, r2, #1 + add r4, r4, #2 + cmp r2, #4 + blt _02238220 +_02238254: + cmp r3, #4 + bne _0223826A +_02238258: + ldr r0, [sp, #4] + add r0, #0xc0 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r1, r0, #1 + ldr r0, [sp, #8] + str r1, [sp, #0xc] + cmp r1, r0 + blt _0223820C +_0223826A: + ldr r1, [sp, #0xc] + ldr r0, [sp, #8] + cmp r1, r0 + bne _0223827C + ldr r1, [sp, #0x14] + add r0, r7, #0 + bl MOD11_0223A424 + b _02238294 +_0223827C: + mov r0, #0xb7 + ldr r1, [r7, #0x64] + lsl r0, r0, #6 + add r3, r7, r0 + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + mov r0, #2 + ldr r1, [r3, r2] + lsl r0, r0, #0xc + orr r0, r1 + str r0, [r3, r2] +_02238294: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223829C: .word 0x00002D4C + + thumb_func_start MOD11_022382A0 +MOD11_022382A0: ; 0x022382A0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r1, [r4, #0x6c] + add r0, r5, #0 + bl MOD11_02230270 + ldr r6, [r4, #0x74] + mov r0, #0xc0 + mul r0, r6 + add r1, r4, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0xe + tst r0, r1 + beq _0223833C + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + add r7, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02230270 + cmp r7, r0 + beq _0223833C + ldr r0, [r4, #0x64] + mov r2, #0xc0 + add r1, r0, #0 + mul r1, r2 + ldr r3, _02238348 ; =0x00002D8C + add r0, r4, r1 + ldr r0, [r0, r3] + cmp r0, #0 + beq _0223833C + mov r1, #0xc1 + lsl r1, r1, #6 + ldr r6, [r4, r1] + cmp r6, #0xa5 + beq _0223833C + add r0, r2, #0 + add r0, #0x64 + str r6, [r4, r0] + ldr r0, [r4, #0x64] + ldr r1, [r4, r1] + sub r3, #0x4c + lsl r1, r1, #0x10 + add r3, r4, r3 + mul r2, r0 + add r0, r3, r2 + lsr r1, r1, #0x10 + bl MOD11_022461AC + ldr r3, [r4, #0x64] + mov r2, #0xc0 + mul r2, r3 + add r2, r4, r2 + add r2, r2, r0 + ldr r0, _0223834C ; =0x00002D6C + mov r1, #0 + strb r1, [r2, r0] + ldr r2, [r4, #0x64] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02245190 + b _02238344 +_0223833C: + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 +_02238344: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02238348: .word 0x00002D8C +_0223834C: .word 0x00002D6C + + thumb_func_start MOD11_02238350 +MOD11_02238350: ; 0x02238350 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [sp] + bl MOD11_0223A404 + str r0, [sp, #4] + mov r6, #0 + add r0, r7, #0 + add r4, r6, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _02238390 + ldr r5, [sp] +_02238378: + ldr r0, _022383C0 ; =0x00002D8C + ldr r0, [r5, r0] + cmp r0, #0 + beq _02238382 + add r6, r6, #1 +_02238382: + add r0, r7, #0 + add r5, #0xc0 + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _02238378 +_02238390: + ldr r0, [sp] + add r0, #0xec + ldr r1, [r0] + sub r0, r6, #1 + cmp r1, r0 + bne _022383A6 + ldr r0, [sp] + ldr r1, [sp, #4] + bl MOD11_0223A424 + b _022383BA +_022383A6: + mov r1, #0x75 + ldr r0, [sp] + lsl r1, r1, #2 + add r3, r0, r1 + ldr r0, [r0, #0x64] + lsl r2, r0, #6 + ldr r1, [r3, r2] + mov r0, #0x20 + orr r0, r1 + str r0, [r3, r2] +_022383BA: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022383C0: .word 0x00002D8C + + thumb_func_start MOD11_022383C4 +MOD11_022383C4: ; 0x022383C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _02238410 ; =0x00002D60 + ldr r5, _02238414 ; =0x0225DCA8 + ldr r3, [r2, r1] + ldr r1, _02238418 ; =0x0000FFFF + mov r0, #0 +_022383E2: + ldrh r2, [r5] + cmp r2, r3 + bge _022383F2 + add r5, r5, #4 + ldrh r2, [r5] + add r0, r0, #1 + cmp r2, r1 + bne _022383E2 +_022383F2: + lsl r2, r0, #2 + ldr r0, _02238414 ; =0x0225DCA8 + ldrh r1, [r0, r2] + ldr r0, _02238418 ; =0x0000FFFF + cmp r1, r0 + beq _02238404 + ldr r0, _0223841C ; =0x0225DCAA + ldrh r1, [r0, r2] + b _02238406 +_02238404: + mov r1, #0x78 +_02238406: + ldr r0, _02238420 ; =0x00002154 + str r1, [r4, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02238410: .word 0x00002D60 +_02238414: .word 0x0225DCA8 +_02238418: .word 0x0000FFFF +_0223841C: .word 0x0225DCAA +_02238420: .word 0x00002154 + + thumb_func_start MOD11_02238424 +MOD11_02238424: ; 0x02238424 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r0, #0xd + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022384CC + mov r0, #0x4c + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022384CC + mov r1, #6 + lsl r1, r1, #6 + ldr r2, [r4, r1] + ldr r0, _022384D0 ; =0x000080FF + tst r0, r2 + ldr r0, _022384D4 ; =0x00003044 + beq _022384BE + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r2, r4, r0 + ldr r0, _022384D8 ; =0x000003E1 + ldrb r0, [r2, r0] + lsl r2, r0, #1 + ldr r0, _022384DC ; =0x00002154 + str r2, [r4, r0] + ldr r2, [r4, r1] + mov r1, #3 + tst r1, r2 + beq _02238486 + mov r1, #0xb + add r0, #0xc + str r1, [r4, r0] +_02238486: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xc + tst r0, r1 + beq _02238498 + ldr r0, _022384E0 ; =0x00002160 + mov r1, #5 + str r1, [r4, r0] +_02238498: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x30 + tst r0, r1 + beq _022384AA + ldr r0, _022384E0 ; =0x00002160 + mov r1, #0xa + str r1, [r4, r0] +_022384AA: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xc0 + tst r0, r1 + beq _022384CC + ldr r0, _022384E0 ; =0x00002160 + mov r1, #0xf + str r1, [r4, r0] + b _022384CC +_022384BE: + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _022384D8 ; =0x000003E1 + ldrb r1, [r1, r0] + ldr r0, _022384DC ; =0x00002154 + str r1, [r4, r0] +_022384CC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022384D0: .word 0x000080FF +_022384D4: .word 0x00003044 +_022384D8: .word 0x000003E1 +_022384DC: .word 0x00002154 +_022384E0: .word 0x00002160 + + thumb_func_start MOD11_022384E4 +MOD11_022384E4: ; 0x022384E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + str r0, [sp, #0x10] + ldr r0, [sp] + bl MOD11_0222FF84 + mov r7, #0 + str r0, [sp, #0xc] + cmp r0, #0 + bgt _0223850C + b _02238612 +_0223850C: + mov r0, #0xb5 + lsl r0, r0, #6 + add r0, r6, r0 + str r6, [sp, #8] + add r5, r6, #0 + str r0, [sp, #4] +_02238518: + ldr r1, [sp, #8] + ldr r0, _02238654 ; =0x000021A8 + ldr r0, [r1, r0] + cmp r0, #0x27 + beq _022385FC + ldr r0, _02238658 ; =0x00002D8C + ldr r0, [r5, r0] + cmp r0, #0 + beq _022385FC + ldr r0, _0223865C ; =0x00002DAC + ldr r1, [r5, r0] + mov r0, #0x27 + tst r0, r1 + bne _022385FC + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_02247190 + cmp r0, #0 + bne _022385FC + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_02230270 + str r0, [sp, #0x14] + ldr r0, [sp] + ldr r1, [r6, #0x78] + bl MOD11_02230270 + ldr r1, [sp, #0x14] + cmp r1, r0 + beq _022385FC + ldr r0, _02238660 ; =0x00002DEC + ldrh r4, [r5, r0] + cmp r4, #0 + beq _02238570 + add r0, r0, #2 + ldrh r0, [r5, r0] + lsl r0, r0, #1 + add r1, r5, r0 + ldr r0, _02238664 ; =0x00002D4C + ldrh r0, [r1, r0] + cmp r4, r0 + beq _0223857A +_02238570: + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_0224683C + add r4, r0, #0 +_0223857A: + cmp r4, #0 + beq _022385FC + lsl r1, r4, #0x10 + ldr r0, [sp, #4] + lsr r1, r1, #0x10 + bl MOD11_022461AC + str r0, [sp, #0x18] + lsl r0, r4, #4 + add r1, r6, r0 + ldr r0, _02238668 ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x80 + bne _022385FC + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _0223866C ; =0x00002D6C + ldrb r0, [r1, r0] + cmp r0, #0 + beq _022385FC + ldr r0, _0223866C ; =0x00002D6C + add r1, r6, r0 + mov r0, #0xc0 + mul r0, r7 + add r5, r1, r0 + ldr r0, [sp, #0x18] + ldrb r0, [r5, r0] + sub r1, r0, #1 + ldr r0, [sp, #0x18] + strb r1, [r5, r0] + ldr r1, [r6, #0x78] + add r0, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x2e + bne _022385D0 + ldr r0, [sp, #0x18] + ldrb r0, [r5, r0] + cmp r0, #0 + beq _022385D0 + sub r1, r0, #1 + ldr r0, [sp, #0x18] + strb r1, [r5, r0] +_022385D0: + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_02247264 + str r7, [r6, #0x64] + ldr r0, [r6, #0x78] + lsl r2, r7, #1 + str r0, [r6, #0x6c] + ldr r1, _02238670 ; =0x00002158 + mov r0, #0x14 + str r0, [r6, r1] + ldr r0, _02238674 ; =0x00003044 + add r2, r6, r2 + str r4, [r6, r0] + add r0, #0x38 + strh r4, [r2, r0] + lsl r0, r7, #4 + mov r2, #0x27 + add r0, r6, r0 + add r1, #0x50 + str r2, [r0, r1] + b _02238612 +_022385FC: + ldr r0, [sp, #8] + add r7, r7, #1 + add r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r5, #0xc0 + add r0, #0xc0 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + cmp r7, r0 + blt _02238518 +_02238612: + ldr r0, [sp, #0xc] + cmp r7, r0 + bne _02238622 + ldr r1, [sp, #0x10] + add r0, r6, #0 + bl MOD11_0223A424 + b _0223864E +_02238622: + ldr r1, [r6, #0x64] + add r0, r6, #0 + bl MOD11_02249D90 + add r5, r0, #0 + ldr r1, [r6, #0x64] + add r0, r6, #0 + mov r2, #0 + bl MOD11_02249DA4 + cmp r5, #0x36 + beq _02238642 + cmp r5, #0x72 + beq _02238642 + cmp r5, #0x7c + bne _0223864E +_02238642: + ldr r1, [r6, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r6, r0 + ldr r0, _02238678 ; =0x00002DF8 + strh r4, [r1, r0] +_0223864E: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238654: .word 0x000021A8 +_02238658: .word 0x00002D8C +_0223865C: .word 0x00002DAC +_02238660: .word 0x00002DEC +_02238664: .word 0x00002D4C +_02238668: .word 0x000003DE +_0223866C: .word 0x00002D6C +_02238670: .word 0x00002158 +_02238674: .word 0x00003044 +_02238678: .word 0x00002DF8 + + thumb_func_start MOD11_0223867C +MOD11_0223867C: ; 0x0223867C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [r4, #0x64] + ldr r3, _022386BC ; =0x00002144 + str r0, [sp] + ldr r0, [r4, #0x6c] + ldr r2, _022386C0 ; =0x00003044 + str r0, [sp, #4] + ldr r0, [r4, r3] + add r1, r4, #0 + str r0, [sp, #8] + add r0, r3, #0 + add r0, #0x28 + add r0, r4, r0 + str r0, [sp, #0xc] + add r3, #0x1c + ldr r2, [r4, r2] + ldr r3, [r4, r3] + add r0, r5, #0 + bl MOD11_02246274 + ldr r1, _022386BC ; =0x00002144 + str r0, [r4, r1] + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022386BC: .word 0x00002144 +_022386C0: .word 0x00003044 + + thumb_func_start MOD11_022386C4 +MOD11_022386C4: ; 0x022386C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #1 + mov r6, #0 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r5, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + ldr r0, [sp] + ldr r2, [sp, #8] + add r1, r4, #0 + bl MOD11_0223C230 + cmp r7, #6 + bhi _022387B6 + add r1, r7, r7 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238710: ; jump table + .short _0223871E - _02238710 - 2 ; case 0 + .short _02238734 - _02238710 - 2 ; case 1 + .short _0223874A - _02238710 - 2 ; case 2 + .short _02238760 - _02238710 - 2 ; case 3 + .short _02238776 - _02238710 - 2 ; case 4 + .short _0223878C - _02238710 - 2 ; case 5 + .short _022387A2 - _02238710 - 2 ; case 6 +_0223871E: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 + b _022387B6 +_02238734: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 + b _022387B6 +_0223874A: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 + b _022387B6 +_02238760: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 + b _022387B6 +_02238776: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 + b _022387B6 +_0223878C: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 + b _022387B6 +_022387A2: + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + cmp r5, r0 + bne _022387B6 + mov r6, #1 +_022387B6: + cmp r6, #0 + beq _022387C2 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_0223A424 +_022387C2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_022387C8 +MOD11_022387C8: ; 0x022387C8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r2, [sp] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0223C230 + cmp r6, #6 + bhi _022388BC + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238808: ; jump table + .short _02238816 - _02238808 - 2 ; case 0 + .short _0223882E - _02238808 - 2 ; case 1 + .short _02238846 - _02238808 - 2 ; case 2 + .short _0223885E - _02238808 - 2 ; case 3 + .short _02238876 - _02238808 - 2 ; case 4 + .short _0223888E - _02238808 - 2 ; case 5 + .short _022388A6 - _02238808 - 2 ; case 6 +_02238816: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #1 + bic r2, r0 + mov r0, #1 + and r0, r5 + orr r0, r2 + str r0, [r1, r3] + b _022388BC +_0223882E: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #2 + bic r2, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1e + orr r0, r2 + str r0, [r1, r3] + b _022388BC +_02238846: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #4 + bic r2, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1d + orr r0, r2 + str r0, [r1, r3] + b _022388BC +_0223885E: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #8 + bic r2, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1c + orr r0, r2 + str r0, [r1, r3] + b _022388BC +_02238876: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #0x10 + bic r2, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1b + orr r0, r2 + str r0, [r1, r3] + b _022388BC +_0223888E: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #0x20 + bic r2, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1a + orr r0, r2 + str r0, [r1, r3] + b _022388BC +_022388A6: + mov r1, #0x75 + lsl r1, r1, #2 + lsl r3, r0, #6 + add r1, r4, r1 + ldr r2, [r1, r3] + mov r0, #0x40 + bic r2, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x19 + orr r0, r2 + str r0, [r1, r3] +_022388BC: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_022388C0 +MOD11_022388C0: ; 0x022388C0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [r4, #0x6c] + ldr r1, _022388FC ; =0x000021F0 + lsl r0, r0, #2 + add r0, r4, r0 + ldr r2, [r0, r1] + mov r0, #0x19 + mul r0, r2 + ldr r2, [r4, #0x64] + lsl r2, r2, #2 + add r2, r4, r2 + ldr r1, [r2, r1] + blx _u32_div_f + add r1, r0, #1 + ldr r0, _02238900 ; =0x00002154 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0x96 + ble _022388F6 + mov r1, #0x96 + str r1, [r4, r0] +_022388F6: + mov r0, #0 + pop {r4, pc} + nop +_022388FC: .word 0x000021F0 +_02238900: .word 0x00002154 + + thumb_func_start MOD11_02238904 +MOD11_02238904: ; 0x02238904 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r1, [r5, #0x64] + add r0, r6, #0 + bl MOD11_02230270 + ldr r1, [r5, #0x64] + add r7, r0, #0 + lsl r1, r1, #6 + add r2, r5, r1 + mov r1, #0x83 + lsl r1, r1, #2 + ldr r1, [r2, r1] + add r0, r6, #0 + bl MOD11_02230270 + add r4, r0, #0 + ldr r0, [r5, #0x64] + mov r2, #0x82 + lsl r0, r0, #6 + add r0, r5, r0 + lsl r2, r2, #2 + ldr r1, [r0, r2] + cmp r1, #0 + beq _022389E4 + cmp r7, r4 + beq _022389E4 + add r2, r2, #4 + ldr r2, [r0, r2] + mov r0, #0xc0 + mul r0, r2 + add r2, r5, r0 + ldr r0, _022389F0 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _022389E4 + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + ldr r1, _022389F4 ; =0x00002144 + str r0, [r5, r1] + mov r0, #0x71 + lsl r0, r0, #2 + add r1, r5, r0 + lsl r0, r4, #3 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02238992 + lsl r0, r0, #9 + lsr r0, r0, #0x1e + mov r1, #0xc0 + mul r1, r0 + add r2, r5, r1 + ldr r1, _022389F0 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _02238992 + str r0, [r5, #0x6c] + b _022389A0 +_02238992: + ldr r0, [r5, #0x64] + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [r5, #0x6c] +_022389A0: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022389F0 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + bne _022389D8 + ldr r2, [r5, #0x64] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022482A4 + mov r1, #0xc0 + mul r1, r0 + str r0, [r5, #0x6c] + ldr r0, _022389F0 ; =0x00002D8C + add r1, r5, r1 + ldr r0, [r1, r0] + cmp r0, #0 + bne _022389D8 + mov r2, #0x26 + str r2, [r5, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, #0xf3 + bl MOD11_0223A434 +_022389D8: + ldr r1, [r5, #0x64] + ldr r2, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_0224C438 + b _022389EC +_022389E4: + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223A424 +_022389EC: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022389F0: .word 0x00002D8C +_022389F4: .word 0x00002144 + + thumb_func_start MOD11_022389F8 +MOD11_022389F8: ; 0x022389F8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r0, [r4, #0x6c] + ldr r1, _02238A34 ; =0x000021A8 + lsl r0, r0, #4 + add r0, r4, r0 + ldr r0, [r0, r1] + cmp r0, #0x27 + ldr r0, _02238A38 ; =0x00003044 + bne _02238A22 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r2, r4, r0 + ldr r0, _02238A3C ; =0x000003E1 + ldrb r0, [r2, r0] + lsl r0, r0, #1 + b _02238A2C +_02238A22: + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r2, r4, r0 + ldr r0, _02238A3C ; =0x000003E1 + ldrb r0, [r2, r0] +_02238A2C: + sub r1, #0x54 + str r0, [r4, r1] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02238A34: .word 0x000021A8 +_02238A38: .word 0x00003044 +_02238A3C: .word 0x000003E1 + + thumb_func_start MOD11_02238A40 +MOD11_02238A40: ; 0x02238A40 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + lsl r0, r1, #1 + add r1, r4, r0 + ldr r0, _02238A74 ; =0x000030BC + ldrh r0, [r1, r0] + add r1, r2, r0 + ldr r0, _02238A78 ; =0x00002D6C + ldrb r1, [r1, r0] + cmp r1, #4 + bls _02238A68 + mov r1, #4 +_02238A68: + ldr r0, _02238A7C ; =0x0225DC2C + ldrb r1, [r0, r1] + ldr r0, _02238A80 ; =0x00002154 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02238A74: .word 0x000030BC +_02238A78: .word 0x00002D6C +_02238A7C: .word 0x0225DC2C +_02238A80: .word 0x00002154 + + thumb_func_start MOD11_02238A84 +MOD11_02238A84: ; 0x02238A84 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r3, r4, r0 + ldr r1, _02238AB4 ; =0x00002D8C + mov r0, #0x78 + ldr r2, [r3, r1] + add r1, r1, #4 + ldr r1, [r3, r1] + mul r0, r2 + blx _u32_div_f + add r1, r0, #1 + ldr r0, _02238AB8 ; =0x00002154 + str r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + nop +_02238AB4: .word 0x00002D8C +_02238AB8: .word 0x00002154 + + thumb_func_start MOD11_02238ABC +MOD11_02238ABC: ; 0x02238ABC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + ldr r3, _02238B68 ; =0x00002DEC + add r0, r5, r0 + ldrh r4, [r0, r3] + cmp r4, #0 + beq _02238AF0 + add r2, r3, #2 + ldrh r2, [r0, r2] + sub r3, #0xa0 + lsl r2, r2, #1 + add r0, r0, r2 + ldrh r0, [r0, r3] + cmp r4, r0 + beq _02238AF8 +_02238AF0: + add r0, r5, #0 + bl MOD11_0224683C + add r4, r0, #0 +_02238AF8: + ldr r0, [r5, #0x6c] + lsl r1, r0, #4 + add r2, r5, r1 + ldr r1, _02238B6C ; =0x000021A8 + ldr r1, [r2, r1] + cmp r1, #0x27 + beq _02238B5C + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02238B5C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224C0F0 + cmp r0, #1 + bne _02238B5C + lsl r0, r4, #4 + add r1, r5, r0 + ldr r0, _02238B70 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02238B5C + ldr r2, [r5, #0x64] + ldr r3, _02238B74 ; =0x00002DCC + add r0, r2, #0 + mov r6, #0xc0 + add r1, r5, r3 + mul r0, r6 + mov r2, #1 + ldr r7, [r1, r0] + lsl r2, r2, #0x1e + orr r2, r7 + str r2, [r1, r0] + add r0, r6, #0 + add r0, #0xb4 + ldr r2, [r5, r0] + ldr r0, [r5, #0x64] + add r3, #0x10 + add r1, r0, #0 + mul r1, r6 + add r0, r5, r1 + str r2, [r0, r3] + add r6, #0x64 + str r4, [r5, r6] + b _02238B64 +_02238B5C: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02238B64: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02238B68: .word 0x00002DEC +_02238B6C: .word 0x000021A8 +_02238B70: .word 0x000003E1 +_02238B74: .word 0x00002DCC + + thumb_func_start MOD11_02238B78 +MOD11_02238B78: ; 0x02238B78 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + ldr r0, _02238BC8 ; =0x00003048 + ldr r0, [r5, r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD11_02246BE8 + cmp r0, #0 + bne _02238BBC + ldr r0, _02238BC8 ; =0x00003048 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02238BBC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD11_0224C07C + cmp r0, #1 + bne _02238BBC + ldr r0, _02238BC8 ; =0x00003048 + ldr r1, [r5, r0] + mov r0, #0x49 + lsl r0, r0, #2 + str r1, [r5, r0] + b _02238BC4 +_02238BBC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 +_02238BC4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02238BC8: .word 0x00003048 + + thumb_func_start MOD11_02238BCC +MOD11_02238BCC: ; 0x02238BCC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + ldr r5, _02238C1C ; =0x00002D58 + mov r1, #0 + ldr r3, [r4, #0x6c] + mov r2, #0xc0 + mul r2, r3 + add r3, r4, r2 + add r0, r1, #0 + add r2, r3, #0 + add r6, r5, #0 +_02238BEA: + ldrsb r7, [r2, r6] + cmp r7, #6 + ble _02238BF8 + add r7, r3, r0 + ldrsb r7, [r7, r5] + sub r7, r7, #6 + add r1, r1, r7 +_02238BF8: + add r0, r0, #1 + add r2, r2, #1 + cmp r0, #8 + blt _02238BEA + mov r0, #0x14 + add r2, r1, #0 + mul r2, r0 + ldr r0, _02238C20 ; =0x00002154 + add r2, #0x3c + str r2, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0xc8 + ble _02238C16 + mov r1, #0xc8 + str r1, [r4, r0] +_02238C16: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02238C1C: .word 0x00002D58 +_02238C20: .word 0x00002154 + + thumb_func_start MOD11_02238C24 +MOD11_02238C24: ; 0x02238C24 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + ldr r6, _02238C94 ; =0x00002DEC + add r2, r5, r0 + ldrh r0, [r2, r6] + cmp r0, #0 + beq _02238C58 + add r3, r6, #2 + ldrh r3, [r2, r3] + sub r6, #0xa0 + lsl r3, r3, #1 + add r2, r2, r3 + ldrh r2, [r2, r6] + cmp r0, r2 + beq _02238C5E +_02238C58: + add r0, r5, #0 + bl MOD11_0224683C +_02238C5E: + ldr r1, [r5, #0x6c] + lsl r2, r1, #4 + add r3, r5, r2 + ldr r2, _02238C98 ; =0x000021A8 + ldr r2, [r3, r2] + cmp r2, #0x27 + beq _02238C88 + lsl r0, r0, #4 + add r2, r5, r0 + ldr r0, _02238C9C ; =0x000003E1 + ldrb r0, [r2, r0] + cmp r0, #0 + bne _02238C90 + lsl r0, r1, #6 + add r1, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02238C90 +_02238C88: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A424 +_02238C90: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02238C94: .word 0x00002DEC +_02238C98: .word 0x000021A8 +_02238C9C: .word 0x000003E1 + + thumb_func_start MOD11_02238CA0 +MOD11_02238CA0: ; 0x02238CA0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + ldr r2, [sp, #8] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + ldr r1, [sp, #4] + cmp r1, #0 + beq _02238CF2 + cmp r1, #1 + beq _02238CF2 + cmp r1, #2 + beq _02238D70 + b _02238E4A +_02238CF2: + cmp r6, #5 + bls _02238CF8 + b _02238E4A +_02238CF8: + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238D04: ; jump table + .short _02238D10 - _02238D04 - 2 ; case 0 + .short _02238D20 - _02238D04 - 2 ; case 1 + .short _02238D30 - _02238D04 - 2 ; case 2 + .short _02238D40 - _02238D04 - 2 ; case 3 + .short _02238D50 - _02238D04 - 2 ; case 4 + .short _02238D60 - _02238D04 - 2 ; case 5 +_02238D10: + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1b + lsr r5, r0, #0x1d + b _02238E4A +_02238D20: + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x16 + lsr r5, r0, #0x1d + b _02238E4A +_02238D30: + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x11 + lsr r5, r0, #0x1d + b _02238E4A +_02238D40: + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0xc + lsr r5, r0, #0x1d + b _02238E4A +_02238D50: + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1e + lsr r5, r0, #0x1e + b _02238E4A +_02238D60: + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r5, r0, #0x1e + b _02238E4A +_02238D70: + cmp r6, #5 + bhi _02238E4A + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238D80: ; jump table + .short _02238D8C - _02238D80 - 2 ; case 0 + .short _02238DAC - _02238D80 - 2 ; case 1 + .short _02238DCC - _02238D80 - 2 ; case 2 + .short _02238DEC - _02238D80 - 2 ; case 3 + .short _02238E0C - _02238D80 - 2 ; case 4 + .short _02238E2C - _02238D80 - 2 ; case 5 +_02238D8C: + mov r2, #0x71 + lsl r2, r2, #2 + add r6, r4, r2 + lsl r3, r0, #3 + ldr r7, [r6, r3] + mov r1, #0x1c + bic r7, r1 + sub r2, #8 + str r7, [r6, r3] + add r3, r4, r2 + lsl r2, r0, #2 + ldr r1, [r3, r2] + mov r0, #1 + bic r1, r0 + str r1, [r3, r2] + b _02238E4A +_02238DAC: + mov r2, #0x71 + lsl r2, r2, #2 + add r6, r4, r2 + lsl r7, r0, #3 + ldr r3, [r6, r7] + ldr r1, _02238E74 ; =0xFFFFFC7F + sub r2, #8 + and r1, r3 + add r3, r4, r2 + lsl r2, r0, #2 + str r1, [r6, r7] + ldr r1, [r3, r2] + mov r0, #2 + bic r1, r0 + str r1, [r3, r2] + b _02238E4A +_02238DCC: + mov r2, #0x71 + lsl r2, r2, #2 + add r6, r4, r2 + lsl r7, r0, #3 + ldr r3, [r6, r7] + ldr r1, _02238E78 ; =0xFFFF8FFF + sub r2, #8 + and r1, r3 + add r3, r4, r2 + lsl r2, r0, #2 + str r1, [r6, r7] + ldr r1, [r3, r2] + mov r0, #0x40 + bic r1, r0 + str r1, [r3, r2] + b _02238E4A +_02238DEC: + mov r2, #0x71 + lsl r2, r2, #2 + add r6, r4, r2 + lsl r7, r0, #3 + ldr r3, [r6, r7] + ldr r1, _02238E7C ; =0xFFF1FFFF + sub r2, #8 + and r1, r3 + add r3, r4, r2 + lsl r2, r0, #2 + str r1, [r6, r7] + ldr r1, [r3, r2] + mov r0, #8 + bic r1, r0 + str r1, [r3, r2] + b _02238E4A +_02238E0C: + mov r2, #0x72 + lsl r2, r2, #2 + add r6, r4, r2 + lsl r3, r0, #3 + ldr r7, [r6, r3] + mov r1, #3 + bic r7, r1 + sub r2, #0xc + str r7, [r6, r3] + add r3, r4, r2 + lsl r2, r0, #2 + ldr r1, [r3, r2] + mov r0, #4 + bic r1, r0 + str r1, [r3, r2] + b _02238E4A +_02238E2C: + mov r2, #0x72 + lsl r2, r2, #2 + add r6, r4, r2 + lsl r3, r0, #3 + ldr r7, [r6, r3] + mov r1, #0xc + bic r7, r1 + sub r2, #0xc + str r7, [r6, r3] + lsl r3, r0, #2 + add r1, r4, r2 + ldr r2, [r1, r3] + ldr r0, _02238E80 ; =0xFFFFFBFF + and r0, r2 + str r0, [r1, r3] +_02238E4A: + ldr r0, [sp, #4] + cmp r0, #0 + bne _02238E5C + cmp r5, #0 + bne _02238E5C + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 +_02238E5C: + ldr r0, [sp, #4] + cmp r0, #1 + bne _02238E6E + cmp r5, #0 + beq _02238E6E + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 +_02238E6E: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238E74: .word 0xFFFFFC7F +_02238E78: .word 0xFFFF8FFF +_02238E7C: .word 0xFFF1FFFF +_02238E80: .word 0xFFFFFBFF + + thumb_func_start MOD11_02238E84 +MOD11_02238E84: ; 0x02238E84 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + ldr r0, [r4, #0x6c] + lsl r0, r0, #6 + add r2, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r2, r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _02238EB0 + add r0, r4, #0 + bl MOD11_0223A424 +_02238EB0: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD11_02238EB4 +MOD11_02238EB4: ; 0x02238EB4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + ldr r0, [r4, #0x6c] + mov r2, #0xc0 + add r3, r0, #0 + mul r3, r2 + add r5, r4, r3 + ldr r3, _02238EFC ; =0x00002DAC + ldr r0, [r5, r3] + cmp r0, #0 + bne _02238EF2 + add r0, r3, #4 + ldr r5, [r5, r0] + mov r0, #1 + lsl r0, r0, #0x18 + tst r0, r5 + bne _02238EF2 + ldr r0, [r4, #0x64] + mul r2, r0 + add r0, r4, r2 + ldr r0, [r0, r3] + cmp r0, #0 + bne _02238EF8 +_02238EF2: + add r0, r4, #0 + bl MOD11_0223A424 +_02238EF8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02238EFC: .word 0x00002DAC + + thumb_func_start MOD11_02238F00 +MOD11_02238F00: ; 0x02238F00 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r2, [r4, #0x64] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022473F8 + ldr r2, [r4, #0x64] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _02238F48 ; =0x00002DCC + ldr r1, [r2, r1] + lsl r1, r1, #0x13 + lsr r2, r1, #0x1d + sub r1, r0, #1 + cmp r2, r1 + blo _02238F3A + cmp r0, #2 + bge _02238F42 +_02238F3A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02238F42: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02238F48: .word 0x00002DCC + + thumb_func_start MOD11_02238F4C +MOD11_02238F4C: ; 0x02238F4C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + mov r2, #0x72 + mov r1, #1 + add r3, r0, #0 + eor r3, r1 + lsl r0, r3, #3 + add r5, r4, r0 + lsl r2, r2, #2 + ldr r5, [r5, r2] + lsl r5, r5, #0x1c + lsr r5, r5, #0x1e + cmp r5, #2 + bne _02238FA2 + mov r0, #0xb5 + lsl r0, r0, #2 + add r2, r4, r0 + ldr r3, [r4, #0x64] + mov r0, #0x1c + mul r0, r3 + ldr r5, [r2, r0] + mov r3, #1 + bic r5, r3 + orr r1, r5 + str r1, [r2, r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _02238FCA +_02238FA2: + add r5, r2, #0 + sub r5, #0xc + add r5, r4, r5 + lsl r3, r3, #2 + ldr r6, [r5, r3] + lsl r1, r1, #0xa + orr r1, r6 + str r1, [r5, r3] + add r2, r4, r2 + ldr r4, [r2, r0] + mov r3, #0xc + add r1, r4, #0 + bic r1, r3 + lsl r3, r4, #0x1c + lsr r3, r3, #0x1e + add r3, r3, #1 + lsl r3, r3, #0x1e + lsr r3, r3, #0x1c + orr r1, r3 + str r1, [r2, r0] +_02238FCA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02238FD0 +MOD11_02238FD0: ; 0x02238FD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r7, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_02230270 + mov r1, #0x72 + lsl r1, r1, #2 + add r4, r5, r1 + lsl r6, r0, #3 + str r0, [sp] + ldr r0, [r4, r6] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1e + beq _0223906A + sub r1, #0x94 + str r0, [r5, r1] + add r0, r5, #0 + mov r1, #6 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + add r0, #0x94 + str r7, [r0] + ldr r1, [r5, #0x78] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #3 + beq _02239048 + ldr r1, [r5, #0x78] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #3 + bne _02239072 +_02239048: + mov r0, #0x6f + ldr r1, [sp] + lsl r0, r0, #2 + add r2, r5, r0 + lsl r1, r1, #2 + ldr r7, [r2, r1] + ldr r3, _02239078 ; =0xFFFFFBFF + sub r0, #0x88 + and r3, r7 + str r3, [r2, r1] + ldr r2, [r4, r6] + mov r1, #0xc + bic r2, r1 + str r2, [r4, r6] + mov r1, #0 + str r1, [r5, r0] + b _02239072 +_0223906A: + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A424 +_02239072: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239078: .word 0xFFFFFBFF + + thumb_func_start MOD11_0223907C +MOD11_0223907C: ; 0x0223907C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #8] + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + cmp r4, #0 + bne _0223912C + add r0, r6, #0 + bl MOD11_0222FF84 + mov r6, #0 + str r0, [sp] + cmp r0, #0 + ble _02239194 +_022390BE: + ldr r0, _0223919C ; =0x000021EC + add r1, r5, r6 + ldrb r4, [r1, r0] + ldr r0, [sp, #8] + cmp r0, #0 + bne _022390F6 + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD11_02246D84 + cmp r0, #1 + bne _02239122 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022391A0 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239122 + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] + b _02239194 +_022390F6: + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD11_02246D84 + cmp r0, #0 + beq _02239114 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022391A0 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + bne _02239122 +_02239114: + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] + b _02239194 +_02239122: + ldr r0, [sp] + add r6, r6, #1 + cmp r6, r0 + blt _022390BE + b _02239194 +_0223912C: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r4, r0, #0 + ldr r0, [sp, #8] + cmp r0, #0 + bne _0223916A + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD11_02246D84 + cmp r0, #1 + bne _02239194 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022391A0 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239194 + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] + b _02239194 +_0223916A: + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD11_02246D84 + cmp r0, #0 + beq _02239188 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022391A0 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + bne _02239194 +_02239188: + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A424 + add r5, #0x80 + str r4, [r5] +_02239194: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223919C: .word 0x000021EC +_022391A0: .word 0x00002D8C + + thumb_func_start MOD11_022391A4 +MOD11_022391A4: ; 0x022391A4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_0223C230 + add r7, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02230270 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02230270 + cmp r6, r0 + bne _02239200 + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_0223A424 +_02239200: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02239204 +MOD11_02239204: ; 0x02239204 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r7, #0 + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + bgt _02239222 + b _02239360 +_02239222: + ldr r0, [sp] + mov r1, #0 + add r2, r7, #0 + bl MOD11_02230014 + mov r1, #0xad + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + cmp r0, #0x35 + bne _022392EC + cmp r6, #0 + beq _022392EC + ldr r0, _02239368 ; =0x000001EE + cmp r6, r0 + beq _022392EC + ldr r0, [sp, #8] + cmp r0, #0 + bne _022392EC + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #0 + bne _022392EC + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + sub r0, r0, #1 + mov r1, #0xa + blx _u32_div_f + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #0xa + blo _022392A4 + mov r2, #9 +_022392A4: + mov r1, #0 + ldr r3, _0223936C ; =0x0225E150 + str r1, [sp, #0xc] +_022392AA: + ldrb r0, [r3] + cmp r0, r5 + ble _022392C4 + ldr r3, [sp, #0xc] + ldr r5, _02239370 ; =0x0225DD24 + add r2, r2, r3 + lsl r2, r2, #1 + add r0, r4, #0 + mov r1, #6 + add r2, r5, r2 + bl FUN_02067830 + b _022392EC +_022392C4: + cmp r5, #0x62 + blt _022392E2 + cmp r5, #0x63 + bgt _022392E2 + mov r3, #0x63 + sub r3, r3, r5 + add r2, r2, r3 + lsl r3, r2, #1 + ldr r2, _02239374 ; =0x0225DC48 + add r0, r4, #0 + mov r1, #6 + add r2, r2, r3 + bl FUN_02067830 + b _022392EC +_022392E2: + add r1, r1, #1 + add r3, r3, #1 + str r1, [sp, #0xc] + cmp r1, #9 + blt _022392AA +_022392EC: + ldr r0, [sp, #4] + cmp r0, #0x76 + bne _02239350 + cmp r6, #0 + beq _02239350 + ldr r0, _02239368 ; =0x000001EE + cmp r6, r0 + beq _02239350 + ldr r0, [sp, #8] + cmp r0, #0 + bne _02239350 + mov r2, #0 + add r0, r4, #0 + mov r1, #0xa0 + str r2, [sp, #0xc] + mov r5, #0xa + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, #0xa + ble _02239324 + ldr r0, [sp, #0xc] +_0223931A: + add r5, #0xa + add r0, r0, #1 + cmp r5, r1 + blt _0223931A + str r0, [sp, #0xc] +_02239324: + ldr r0, [sp, #0xc] + cmp r0, #0xa + blt _0223932E + bl ErrorHandling +_0223932E: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + ldr r2, [sp, #0xc] + ldr r0, _02239378 ; =0x0225E15C + ldrb r0, [r0, r2] + cmp r1, r0 + bge _02239350 + mov r0, #0x5e + str r0, [sp, #0xc] + add r0, r4, #0 + mov r1, #6 + add r2, sp, #0xc + bl FUN_02067830 +_02239350: + ldr r0, [sp] + mov r1, #0 + add r7, r7, #1 + bl MOD11_0222FFC8 + cmp r7, r0 + bge _02239360 + b _02239222 +_02239360: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239368: .word 0x000001EE +_0223936C: .word 0x0225E150 +_02239370: .word 0x0225DD24 +_02239374: .word 0x0225DC48 +_02239378: .word 0x0225E15C + + thumb_func_start MOD11_0223937C +MOD11_0223937C: ; 0x0223937C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r0, #0xb5 + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + add r3, r4, r0 + mov r0, #0x1c + add r2, r1, #0 + mul r2, r0 + ldr r1, [r3, r2] + mov r0, #0x10 + orr r0, r1 + str r0, [r3, r2] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_022393A4 +MOD11_022393A4: ; 0x022393A4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02249B7C + cmp r0, #1 + bne _022393E0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_022393E0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_022393E4 +MOD11_022393E4: ; 0x022393E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp, #4] + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r5, #0 + bl MOD11_0223C230 + add r1, r0, #0 + cmp r6, #0 + bne _02239438 + add r0, r5, #0 + bl MOD11_02249D90 + cmp r4, r0 + bne _0223944A + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 + b _0223944A +_02239438: + add r0, r5, #0 + bl MOD11_02249D90 + cmp r4, r0 + beq _0223944A + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_0223944A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02239450 +MOD11_02239450: ; 0x02239450 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A444 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02249B4C + add r1, r0, #0 + add r0, r4, #0 + mov r2, #1 + bl MOD11_0224C12C + str r0, [r6] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0223949C +MOD11_0223949C: ; 0x0223949C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223A444 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02249B4C + add r1, r0, #0 + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C12C + str r0, [r6] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022394E8 +MOD11_022394E8: ; 0x022394E8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x79 + bne _02239516 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 + mov r0, #0 + pop {r4, r5, r6, pc} +_02239516: + add r0, r4, #0 + bl MOD11_02230294 + ldr r1, _02239570 ; =0x0225E168 + mov r2, #0x1b + ldrb r4, [r1, r0] + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r3, #0 + bl MOD11_02243420 + cmp r4, r0 + beq _02239564 + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r4, r0 + beq _02239564 + ldr r1, [r5, #0x64] + lsl r0, r4, #0x18 + add r3, r1, #0 + mov r2, #0xc0 + mul r3, r2 + ldr r1, _02239574 ; =0x00002D64 + lsr r0, r0, #0x18 + add r3, r5, r3 + strb r0, [r3, r1] + ldr r3, [r5, #0x64] + add r1, r1, #1 + add r6, r3, #0 + mul r6, r2 + add r3, r5, r6 + strb r0, [r3, r1] + add r2, #0x70 + str r4, [r5, r2] + b _0223956C +_02239564: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_0223956C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02239570: .word 0x0225E168 +_02239574: .word 0x00002D64 + + thumb_func_start MOD11_02239578 +MOD11_02239578: ; 0x02239578 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_02230294 + lsl r1, r0, #1 + ldr r0, _0223959C ; =0x0225DD0A + ldrh r1, [r0, r1] + mov r0, #0x49 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223959C: .word 0x0225DD0A + + thumb_func_start MOD11_022395A0 +MOD11_022395A0: ; 0x022395A0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_02230294 + lsl r1, r0, #2 + ldr r0, _022395C4 ; =0x0225DD48 + ldr r1, [r0, r1] + ldr r0, _022395C8 ; =0x00002174 + str r1, [r4, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022395C4: .word 0x0225DD48 +_022395C8: .word 0x00002174 + + thumb_func_start MOD11_022395CC +MOD11_022395CC: ; 0x022395CC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r5, r0, #0 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02249DF0 + cmp r0, #0 + beq _022395FE + ldr r1, _0223960C ; =0x00002154 + str r0, [r4, r1] + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02249E04 + ldr r1, _02239610 ; =0x00002160 + str r0, [r4, r1] + b _02239606 +_022395FE: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0223A424 +_02239606: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0223960C: .word 0x00002154 +_02239610: .word 0x00002160 + + thumb_func_start MOD11_02239614 +MOD11_02239614: ; 0x02239614 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02239674 ; =0x00002DB8 + ldrh r0, [r1, r0] + cmp r0, #0 + beq _0223965A + ldr r1, [r4, #0x64] + add r0, r4, #0 + mov r3, #0x3c + bl MOD11_02246D84 + cmp r0, #1 + bne _0223965A + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223A424 + b _02239670 +_0223965A: + ldr r2, [r4, #0x6c] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249F8C + cmp r0, #1 + beq _02239670 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02239670: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239674: .word 0x00002DB8 + + thumb_func_start MOD11_02239678 +MOD11_02239678: ; 0x02239678 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r2, [r4, #0x64] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224A4E0 + cmp r0, #1 + beq _022396A4 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_022396A4: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_022396A8 +MOD11_022396A8: ; 0x022396A8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + str r2, [sp, #8] + bl MOD11_02255980 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022396D8 +MOD11_022396D8: ; 0x022396D8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD11_0224AD90 + add r4, r0, #0 + beq _02239714 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r1, r0, #0 + cmp r4, #0xff + bne _0223970C + add r0, r5, #0 + bl MOD11_0223A424 + b _02239714 +_0223970C: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02239714: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02239718 +MOD11_02239718: ; 0x02239718 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + bl MOD11_0222FF84 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + mov r2, #0 + str r2, [sp] + mov r0, #6 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD11_022558E0 + mov r0, #0 + str r0, [r4, #0x78] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02239748 +MOD11_02239748: ; 0x02239748 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #0 + bl MOD11_0224AD90 + add r5, r0, #0 + beq _0223977A + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + cmp r5, #0xff + bne _02239774 + add r0, r4, #0 + bl MOD11_0223A424 + b _0223977A +_02239774: + ldr r0, _02239780 ; =0x000021A0 + sub r1, r5, #1 + strb r1, [r4, r0] +_0223977A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02239780: .word 0x000021A0 + + thumb_func_start MOD11_02239784 +MOD11_02239784: ; 0x02239784 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + beq _022397A2 + add r0, r4, #0 + bl MOD11_02256774 +_022397A2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_022397A8 +MOD11_022397A8: ; 0x022397A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02230270 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + add r2, r0, #0 + lsl r0, r6, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #0x80 + tst r0, r1 + beq _0223989C + mov r0, #0xc0 + add r6, r4, #0 + mul r6, r0 + ldr r0, _022398A8 ; =0x00002D8C + add r1, r5, r6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223989C + lsl r1, r7, #0x18 + lsl r2, r2, #0x18 + mov r0, #5 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD11_02246B9C + cmp r0, #0x14 + bgt _0223983A + bge _02239862 + cmp r0, #0 + bgt _02239834 + beq _02239872 + b _0223987E +_02239834: + cmp r0, #0xa + beq _0223986A + b _0223987E +_0223983A: + cmp r0, #0x50 + bgt _02239846 + bge _02239852 + cmp r0, #0x28 + beq _0223985A + b _0223987E +_02239846: + cmp r0, #0xa0 + bne _0223987E + ldr r0, _022398AC ; =0x0000215C + mov r1, #2 + str r1, [r5, r0] + b _02239882 +_02239852: + ldr r0, _022398AC ; =0x0000215C + mov r1, #4 + str r1, [r5, r0] + b _02239882 +_0223985A: + ldr r0, _022398AC ; =0x0000215C + mov r1, #8 + str r1, [r5, r0] + b _02239882 +_02239862: + ldr r0, _022398AC ; =0x0000215C + mov r1, #0x10 + str r1, [r5, r0] + b _02239882 +_0223986A: + ldr r0, _022398AC ; =0x0000215C + mov r1, #0x20 + str r1, [r5, r0] + b _02239882 +_02239872: + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223A424 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223987E: + bl ErrorHandling +_02239882: + ldr r0, _022398B0 ; =0x00002D90 + add r1, r5, r6 + ldr r1, [r1, r0] + mov r0, #0 + mvn r0, r0 + mul r0, r1 + ldr r1, _022398AC ; =0x0000215C + ldr r1, [r5, r1] + bl MOD11_022476C0 + ldr r1, _022398AC ; =0x0000215C + str r0, [r5, r1] + b _022398A4 +_0223989C: + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_0223A424 +_022398A4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022398A8: .word 0x00002D8C +_022398AC: .word 0x0000215C +_022398B0: .word 0x00002D90 + + thumb_func_start MOD11_022398B4 +MOD11_022398B4: ; 0x022398B4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x20 + ldr r0, _0223992C ; =0x00003044 + bne _022398E6 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02239930 ; =0x000003E5 + ldrb r0, [r1, r0] + lsl r0, r0, #0x11 + lsr r4, r0, #0x10 + b _022398F0 +_022398E6: + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02239930 ; =0x000003E5 + ldrb r4, [r1, r0] +_022398F0: + cmp r4, #0 + bne _022398F8 + bl ErrorHandling +_022398F8: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r4 + bge _0223991E + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02239934 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223991E + mov r0, #0 + pop {r4, r5, r6, pc} +_0223991E: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0223992C: .word 0x00003044 +_02239930: .word 0x000003E5 +_02239934: .word 0x00002D8C + + thumb_func_start MOD11_02239938 +MOD11_02239938: ; 0x02239938 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r6, r0, #0 + mov r3, #0xb5 + mov r2, #0xc0 + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r0, r5, r0 + lsl r3, r3, #6 + ldrh r4, [r0, r3] + add r2, #0xf9 + cmp r4, r2 + bne _022399BA + ldr r4, [r5, #0x6c] + mov r2, #0xc0 + mul r2, r4 + add r4, r5, r2 + add r2, r3, #0 + add r2, #0x4c + ldr r2, [r4, r2] + cmp r2, #0 + beq _022399BA + add r3, #0x70 + ldr r2, [r0, r3] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r2 + bne _022399BA + add r0, r7, #0 + bl MOD11_02230E88 + bl FUN_02005EE0 + cmp r0, #0 + beq _02239998 + cmp r0, #1 + beq _0223999C + cmp r0, #2 + beq _022399A0 +_02239998: + mov r4, #0 + b _022399A2 +_0223999C: + mov r4, #0xa + b _022399A2 +_022399A0: + mov r4, #0x1e +_022399A2: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r4 + ble _022399C2 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 + b _022399C2 +_022399BA: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_022399C2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022399C8 +MOD11_022399C8: ; 0x022399C8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + ldr r0, _022399F8 ; =0x000003DE + add r2, r4, r0 + ldr r0, _022399FC ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r0, r2, r0 + bl FUN_0206AB58 + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + pop {r4, pc} + nop +_022399F8: .word 0x000003DE +_022399FC: .word 0x00003044 + + thumb_func_start MOD11_02239A00 +MOD11_02239A00: ; 0x02239A00 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + ldr r3, [sp] + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_022562E4 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02239A40 +MOD11_02239A40: ; 0x02239A40 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_02256308 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02239A6C +MOD11_02239A6C: ; 0x02239A6C + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + mov r1, #0 + bl MOD11_02256398 + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD11_02239A84 +MOD11_02239A84: ; 0x02239A84 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, _02239AC0 ; =0x0000219C + str r0, [sp] + add r3, r4, r1 + ldrb r2, [r3, r2] + add r0, r5, #0 + mov r3, #0 + bl MOD11_02230370 + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02239AC0: .word 0x0000219C + + thumb_func_start MOD11_02239AC4 +MOD11_02239AC4: ; 0x02239AC4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022470B8 + cmp r0, #0 + beq _02239B02 + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_02239B02: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02239B08 +MOD11_02239B08: ; 0x02239B08 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_022563D0 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02239B34 +MOD11_02239B34: ; 0x02239B34 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_022563F8 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02239B60 +MOD11_02239B60: ; 0x02239B60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_02256420 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02239B8C +MOD11_02239B8C: ; 0x02239B8C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_02256448 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02239BB8 +MOD11_02239BB8: ; 0x02239BB8 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_02256470 + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02239BD0 +MOD11_02239BD0: ; 0x02239BD0 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0225648C + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02239BE8 +MOD11_02239BE8: ; 0x02239BE8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + ldr r3, [sp] + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_022564A8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02239C28 +MOD11_02239C28: ; 0x02239C28 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022564F4 + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02239C54 +MOD11_02239C54: ; 0x02239C54 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + mov r2, #0x4e + lsl r2, r2, #2 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r4, r2 + bl MOD11_02248308 + cmp r0, #0 + bne _02239C84 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_02239C84: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02239C88 +MOD11_02239C88: ; 0x02239C88 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r2, r0, #0 + cmp r2, #3 + beq _02239CAE + cmp r2, #4 + beq _02239CD6 + b _02239CFE +_02239CAE: + mov r5, #0 + cmp r6, #0 + ble _02239D0E + mov r7, #1 +_02239CB6: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02239D14 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + bne _02239CCE + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022565A0 +_02239CCE: + add r5, r5, #1 + cmp r5, r6 + blt _02239CB6 + b _02239D0E +_02239CD6: + mov r5, #0 + cmp r6, #0 + ble _02239D0E + mov r7, #1 +_02239CDE: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02239D14 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _02239CF6 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022565A0 +_02239CF6: + add r5, r5, #1 + cmp r5, r6 + blt _02239CDE + b _02239D0E +_02239CFE: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_022565A0 +_02239D0E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239D14: .word 0x00000195 + + thumb_func_start MOD11_02239D18 +MOD11_02239D18: ; 0x02239D18 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r2, r0, #0 + cmp r2, #3 + beq _02239D3E + cmp r2, #4 + beq _02239D66 + b _02239D8E +_02239D3E: + mov r5, #0 + cmp r6, #0 + ble _02239D9E + mov r7, #1 +_02239D46: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02239DA4 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + bne _02239D5E + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022565BC +_02239D5E: + add r5, r5, #1 + cmp r5, r6 + blt _02239D46 + b _02239D9E +_02239D66: + mov r5, #0 + cmp r6, #0 + ble _02239D9E + mov r7, #1 +_02239D6E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _02239DA4 ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _02239D86 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022565BC +_02239D86: + add r5, r5, #1 + cmp r5, r6 + blt _02239D6E + b _02239D9E +_02239D8E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_022565BC +_02239D9E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239DA4: .word 0x00000195 + + thumb_func_start MOD11_02239DA8 +MOD11_02239DA8: ; 0x02239DA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + add r0, r1, #0 + mov r1, #1 + mov r5, #0 + bl MOD11_0223A424 + ldr r0, [sp, #4] + bl MOD11_0223A404 + add r4, r0, #0 + ldr r0, [sp, #4] + bl MOD11_0223A404 + str r0, [sp, #0x14] + ldr r0, [sp] + bl MOD11_0222FF74 + str r0, [sp, #0xc] + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r4, #0 + bl MOD11_0223C230 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + mov r1, #8 + tst r0, r1 + bne _02239DFA + ldr r0, [sp, #0xc] + mov r1, #0x10 + tst r0, r1 + beq _02239EDA + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_02230270 + cmp r0, #0 + beq _02239EDA +_02239DFA: + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_0222FF88 + add r7, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_022302BC + add r1, r0, #0 + ldr r0, [sp] + bl MOD11_0222FF88 + str r0, [sp, #8] + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_0222FF7C + add r0, r7, #0 + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02239E68 +_02239E2A: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02239E5C + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02239F48 ; =0x000001EE + cmp r0, r1 + beq _02239E5C + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r5, r5, r0 +_02239E5C: + add r0, r7, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _02239E2A +_02239E68: + ldr r0, [sp, #0xc] + cmp r0, #0x4b + beq _02239E76 + cmp r0, #0xcb + beq _02239E76 + cmp r0, #0x4a + bne _02239E82 +_02239E76: + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_02230270 + cmp r0, #0 + beq _02239ECC +_02239E82: + ldr r0, [sp, #8] + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02239ECC + ldr r7, _02239F48 ; =0x000001EE +_02239E90: + ldr r0, [sp, #8] + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02239EC0 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, r7 + beq _02239EC0 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r5, r5, r0 +_02239EC0: + ldr r0, [sp, #8] + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _02239E90 +_02239ECC: + cmp r5, #0 + bne _02239F42 + ldr r0, [sp, #4] + ldr r1, [sp, #0x14] + bl MOD11_0223A424 + b _02239F42 +_02239EDA: + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_0222FF88 + add r7, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_0222FF7C + add r0, r7, #0 + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02239F36 +_02239EF8: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02239F2A + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02239F48 ; =0x000001EE + cmp r0, r1 + beq _02239F2A + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r5, r5, r0 +_02239F2A: + add r0, r7, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _02239EF8 +_02239F36: + cmp r5, #0 + bne _02239F42 + ldr r0, [sp, #4] + ldr r1, [sp, #0x14] + bl MOD11_0223A424 +_02239F42: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239F48: .word 0x000001EE + + thumb_func_start MOD11_02239F4C +MOD11_02239F4C: ; 0x02239F4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r6, #0 + bl MOD11_0223A404 + mov ip, r0 + ldr r1, [r6, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r0, r6, r0 + add r5, r0, #1 + ldr r7, _02239FC0 ; =0x00002D58 + mov r4, #0 + mov r3, #1 + add r0, sp, #0 +_02239F74: + ldrsb r1, [r5, r7] + cmp r1, #0xc + bge _02239F82 + lsl r1, r4, #2 + sub r2, r3, #1 + add r4, r4, #1 + str r2, [r0, r1] +_02239F82: + add r3, r3, #1 + add r5, r5, #1 + cmp r3, #8 + blt _02239F74 + cmp r4, #0 + beq _02239FB0 + bl FUN_0201B9EC + add r1, r4, #0 + blx _s32_div_f + lsl r1, r1, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + ldr r1, _02239FC4 ; =0x00002170 + add r0, #0x27 + str r0, [r6, r1] + mov r0, #2 + ldr r2, [r6, r1] + lsl r0, r0, #0x1e + orr r0, r2 + str r0, [r6, r1] + b _02239FB8 +_02239FB0: + add r0, r6, #0 + mov r1, ip + bl MOD11_0223A424 +_02239FB8: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239FC0: .word 0x00002D58 +_02239FC4: .word 0x00002170 + + thumb_func_start MOD11_02239FC8 +MOD11_02239FC8: ; 0x02239FC8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + ldr r0, _0223A00C ; =0x00002DB8 + add r5, r2, #0 + add r6, r4, r0 + mov r0, #0xc0 + mul r5, r0 + lsl r0, r2, #1 + add r1, r4, r0 + ldrh r3, [r6, r5] + ldr r0, _0223A010 ; =0x00003124 + strh r3, [r1, r0] + mov r0, #0 + strh r0, [r6, r5] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02245190 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A00C: .word 0x00002DB8 +_0223A010: .word 0x00003124 + + thumb_func_start MOD11_0223A014 +MOD11_0223A014: ; 0x0223A014 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r1, r0, #0 + ldr r0, [r4, #0x64] + ldr r2, _0223A054 ; =0x00003124 + lsl r0, r0, #1 + add r0, r4, r0 + ldrh r3, [r0, r2] + cmp r3, #0 + beq _0223A048 + mov r0, #0x4a + lsl r0, r0, #2 + str r3, [r4, r0] + ldr r0, [r4, #0x64] + mov r1, #0 + lsl r0, r0, #1 + add r0, r4, r0 + strh r1, [r0, r2] + b _0223A04E +_0223A048: + add r0, r4, #0 + bl MOD11_0223A424 +_0223A04E: + mov r0, #0 + pop {r4, pc} + nop +_0223A054: .word 0x00003124 + + thumb_func_start MOD11_0223A058 +MOD11_0223A058: ; 0x0223A058 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + mov r2, #0x4e + lsl r2, r2, #2 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r4, r2 + bl MOD11_02249B94 + cmp r0, #0 + bne _0223A088 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_0223A088: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0223A08C +MOD11_0223A08C: ; 0x0223A08C + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_022565D8 + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0223A0A4 +MOD11_0223A0A4: ; 0x0223A0A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022565F4 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223A0C0 +MOD11_0223A0C0: ; 0x0223A0C0 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0225664C + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0223A0D8 +MOD11_0223A0D8: ; 0x0223A0D8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + mov r4, #0 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0223C230 + add r7, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02249D90 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD11_02249DA4 + str r0, [sp] + cmp r6, #0x40 + bne _0223A126 + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + ldr r0, [sp] + cmp r1, r0 + bge _0223A126 + mov r4, #1 +_0223A126: + cmp r6, #0x66 + bne _0223A13E + mov r0, #0xc0 + mul r0, r7 + add r2, r5, r0 + ldr r0, _0223A170 ; =0x00002D8C + ldr r1, [r2, r0] + add r0, r0, #4 + ldr r0, [r2, r0] + cmp r1, r0 + bne _0223A13E + mov r4, #1 +_0223A13E: + cmp r4, #0 + beq _0223A16C + mov r1, #0xc0 + add r0, r7, #0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _0223A170 ; =0x00002D8C + ldr r3, [r2, r0] + ldr r2, _0223A174 ; =0x0000215C + ldr r0, [r5, r2] + add r0, r0, r3 + cmp r0, #0 + bgt _0223A16C + sub r0, r3, #1 + neg r0, r0 + str r0, [r5, r2] + add r0, r2, #0 + add r0, #0x10 + ldr r0, [r5, r0] + add r1, #0x40 + orr r0, r1 + add r2, #0x10 + str r0, [r5, r2] +_0223A16C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A170: .word 0x00002D8C +_0223A174: .word 0x0000215C + + thumb_func_start MOD11_0223A178 +MOD11_0223A178: ; 0x0223A178 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r5, #0 + bl MOD11_0223A404 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_0223C230 + add r1, r0, #0 + mov r0, #0xc0 + add r4, r1, #0 + mul r4, r0 + ldr r0, _0223A208 ; =0x00002D8C + add r2, r5, r4 + ldr r0, [r2, r0] + cmp r0, #0 + beq _0223A1FA + ldr r0, _0223A20C ; =0x0000219C + add r2, r5, r1 + ldrb r2, [r2, r0] + cmp r2, #6 + beq _0223A1FA + add r0, r6, #0 + bl MOD11_02230014 + add r6, r0, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp] + add r0, r6, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + add r2, r0, #0 + ldr r0, _0223A210 ; =0x00002D67 + add r1, r5, r4 + ldrb r0, [r1, r0] + cmp r0, #0x1e + beq _0223A202 + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_02248A14 + cmp r0, #0 + bne _0223A202 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 + b _0223A202 +_0223A1FA: + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0223A424 +_0223A202: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A208: .word 0x00002D8C +_0223A20C: .word 0x0000219C +_0223A210: .word 0x00002D67 + + thumb_func_start MOD11_0223A214 +MOD11_0223A214: ; 0x0223A214 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_0223C230 + mov r1, #0xc0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _0223A26C ; =0x00002DB0 + ldr r2, [r2, r1] + mov r1, #1 + lsl r1, r1, #0x18 + tst r1, r2 + bne _0223A260 + mov r1, #0x1c + mul r1, r0 + mov r0, #0xba + add r1, r4, r1 + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #8 + tst r0, r1 + beq _0223A268 +_0223A260: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_0223A268: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A26C: .word 0x00002DB0 + + thumb_func_start MOD11_0223A270 +MOD11_0223A270: ; 0x0223A270 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + mov r0, #0xd + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0223A2B0 + mov r0, #0x4c + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _0223A2B8 +_0223A2B0: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_0223A2B8: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0223A2C0 +MOD11_0223A2C0: ; 0x0223A2C0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022482A4 + str r0, [r4, #0x6c] + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223A2F0 +MOD11_0223A2F0: ; 0x0223A2F0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + mov r2, #0x4e + lsl r2, r2, #2 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r4, r2 + bl MOD11_0224C258 + cmp r0, #0 + bne _0223A320 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_0223A320: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0223A324 +MOD11_0223A324: ; 0x0223A324 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02256668 + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0223A350 +MOD11_0223A350: ; 0x0223A350 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223C230 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02256714 + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0223A37C +MOD11_0223A37C: ; 0x0223A37C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r4, #0 + bl MOD11_0223A404 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223C230 + add r1, r0, #0 + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_02256754 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0223A3B4 +MOD11_0223A3B4: ; 0x0223A3B4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD11_0223A424 + add r0, r4, #0 + bl MOD11_0223A404 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl MOD11_0222FFC8 + cmp r0, #6 + bne _0223A3E0 + ldr r0, [r5, #0x64] + bl FUN_0206B334 + cmp r0, #0x12 + beq _0223A3F0 +_0223A3E0: + ldr r0, _0223A3F4 ; =0x00002410 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0223A3F0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0223A424 +_0223A3F0: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223A3F4: .word 0x00002410 + + thumb_func_start MOD11_0223A3F8 +MOD11_0223A3F8: ; 0x0223A3F8 + ldr r3, _0223A400 ; =MOD11_022432B4 + add r0, r1, #0 + bx r3 + nop +_0223A400: .word MOD11_022432B4 + + thumb_func_start MOD11_0223A404 +MOD11_0223A404: ; 0x0223A404 + add r1, r0, #0 + add r1, #0xb4 + ldr r1, [r1] + lsl r1, r1, #2 + add r2, r0, r1 + mov r1, #0x27 + lsl r1, r1, #8 + ldr r2, [r2, r1] + add r1, r0, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, #0xb4 + add r1, r1, #1 + str r1, [r0] + add r0, r2, #0 + bx lr + + thumb_func_start MOD11_0223A424 +MOD11_0223A424: ; 0x0223A424 + add r2, r0, #0 + add r2, #0xb4 + ldr r2, [r2] + add r0, #0xb4 + add r1, r2, r1 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_0223A434 +MOD11_0223A434: ; 0x0223A434 + ldr r3, _0223A438 ; =MOD11_022431DC + bx r3 + .align 2, 0 +_0223A438: .word MOD11_022431DC + + thumb_func_start MOD11_0223A43C +MOD11_0223A43C: ; 0x0223A43C + ldr r3, _0223A440 ; =MOD11_0224321C + bx r3 + .align 2, 0 +_0223A440: .word MOD11_0224321C + + thumb_func_start MOD11_0223A444 +MOD11_0223A444: ; 0x0223A444 + push {r4, lr} + add r4, r1, #0 + cmp r2, #0x44 + bls _0223A44E + b _0223A738 +_0223A44E: + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A45A: ; jump table + .short _0223A4E4 - _0223A45A - 2 ; case 0 + .short _0223A4E8 - _0223A45A - 2 ; case 1 + .short _0223A4EE - _0223A45A - 2 ; case 2 + .short _0223A4F4 - _0223A45A - 2 ; case 3 + .short _0223A4FA - _0223A45A - 2 ; case 4 + .short _0223A500 - _0223A45A - 2 ; case 5 + .short _0223A506 - _0223A45A - 2 ; case 6 + .short _0223A50C - _0223A45A - 2 ; case 7 + .short _0223A514 - _0223A45A - 2 ; case 8 + .short _0223A51A - _0223A45A - 2 ; case 9 + .short _0223A522 - _0223A45A - 2 ; case 10 + .short _0223A528 - _0223A45A - 2 ; case 11 + .short _0223A53A - _0223A45A - 2 ; case 12 + .short _0223A54C - _0223A45A - 2 ; case 13 + .short _0223A562 - _0223A45A - 2 ; case 14 + .short _0223A568 - _0223A45A - 2 ; case 15 + .short _0223A56E - _0223A45A - 2 ; case 16 + .short _0223A574 - _0223A45A - 2 ; case 17 + .short _0223A57A - _0223A45A - 2 ; case 18 + .short _0223A580 - _0223A45A - 2 ; case 19 + .short _0223A586 - _0223A45A - 2 ; case 20 + .short _0223A58E - _0223A45A - 2 ; case 21 + .short _0223A59A - _0223A45A - 2 ; case 22 + .short _0223A5A2 - _0223A45A - 2 ; case 23 + .short _0223A5AA - _0223A45A - 2 ; case 24 + .short _0223A5B0 - _0223A45A - 2 ; case 25 + .short _0223A5B8 - _0223A45A - 2 ; case 26 + .short _0223A5C0 - _0223A45A - 2 ; case 27 + .short _0223A5C8 - _0223A45A - 2 ; case 28 + .short _0223A5D0 - _0223A45A - 2 ; case 29 + .short _0223A5D6 - _0223A45A - 2 ; case 30 + .short _0223A5DC - _0223A45A - 2 ; case 31 + .short _0223A5E2 - _0223A45A - 2 ; case 32 + .short _0223A5E8 - _0223A45A - 2 ; case 33 + .short _0223A5EE - _0223A45A - 2 ; case 34 + .short _0223A5F4 - _0223A45A - 2 ; case 35 + .short _0223A5FC - _0223A45A - 2 ; case 36 + .short _0223A604 - _0223A45A - 2 ; case 37 + .short _0223A60C - _0223A45A - 2 ; case 38 + .short _0223A614 - _0223A45A - 2 ; case 39 + .short _0223A61A - _0223A45A - 2 ; case 40 + .short _0223A622 - _0223A45A - 2 ; case 41 + .short _0223A630 - _0223A45A - 2 ; case 42 + .short _0223A63E - _0223A45A - 2 ; case 43 + .short _0223A646 - _0223A45A - 2 ; case 44 + .short _0223A64C - _0223A45A - 2 ; case 45 + .short _0223A65A - _0223A45A - 2 ; case 46 + .short _0223A668 - _0223A45A - 2 ; case 47 + .short _0223A678 - _0223A45A - 2 ; case 48 + .short _0223A688 - _0223A45A - 2 ; case 49 + .short _0223A69A - _0223A45A - 2 ; case 50 + .short _0223A6A0 - _0223A45A - 2 ; case 51 + .short _0223A6A6 - _0223A45A - 2 ; case 52 + .short _0223A6AC - _0223A45A - 2 ; case 53 + .short _0223A6B8 - _0223A45A - 2 ; case 54 + .short _0223A6BE - _0223A45A - 2 ; case 55 + .short _0223A6C4 - _0223A45A - 2 ; case 56 + .short _0223A6CA - _0223A45A - 2 ; case 57 + .short _0223A6D0 - _0223A45A - 2 ; case 58 + .short _0223A6D6 - _0223A45A - 2 ; case 59 + .short _0223A6DC - _0223A45A - 2 ; case 60 + .short _0223A6E4 - _0223A45A - 2 ; case 61 + .short _0223A6EA - _0223A45A - 2 ; case 62 + .short _0223A6EE - _0223A45A - 2 ; case 63 + .short _0223A6F4 - _0223A45A - 2 ; case 64 + .short _0223A6FA - _0223A45A - 2 ; case 65 + .short _0223A70A - _0223A45A - 2 ; case 66 + .short _0223A71A - _0223A45A - 2 ; case 67 + .short _0223A728 - _0223A45A - 2 ; case 68 +_0223A4E4: + add r0, #0x2c + pop {r4, pc} +_0223A4E8: + ldr r0, _0223A73C ; =0x0000214C + add r0, r4, r0 + pop {r4, pc} +_0223A4EE: + ldr r0, _0223A740 ; =0x00002170 + add r0, r4, r0 + pop {r4, pc} +_0223A4F4: + ldr r0, _0223A744 ; =0x00002174 + add r0, r4, r0 + pop {r4, pc} +_0223A4FA: + ldr r0, _0223A748 ; =0x00002178 + add r0, r4, r0 + pop {r4, pc} +_0223A500: + add r4, #0x88 + add r0, r4, #0 + pop {r4, pc} +_0223A506: + ldr r0, _0223A74C ; =0x0000213C + add r0, r4, r0 + pop {r4, pc} +_0223A50C: + mov r0, #6 + lsl r0, r0, #6 + add r0, r4, r0 + pop {r4, pc} +_0223A514: + ldr r0, _0223A750 ; =0x00002158 + add r0, r4, r0 + pop {r4, pc} +_0223A51A: + mov r0, #0x4d + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A522: + ldr r0, _0223A754 ; =0x0000216C + add r0, r4, r0 + pop {r4, pc} +_0223A528: + ldr r1, [r4, #0x64] + bl MOD11_02230270 + mov r1, #0x6f + lsl r1, r1, #2 + add r1, r4, r1 + lsl r0, r0, #2 + add r0, r1, r0 + pop {r4, pc} +_0223A53A: + ldr r1, [r4, #0x6c] + bl MOD11_02230270 + mov r1, #0x6f + lsl r1, r1, #2 + add r1, r4, r1 + lsl r0, r0, #2 + add r0, r1, r0 + pop {r4, pc} +_0223A54C: + add r1, r4, #0 + add r1, #0x94 + ldr r1, [r1] + bl MOD11_02230270 + mov r1, #0x6f + lsl r1, r1, #2 + add r1, r4, r1 + lsl r0, r0, #2 + add r0, r1, r0 + pop {r4, pc} +_0223A562: + ldr r0, _0223A758 ; =0x00002144 + add r0, r4, r0 + pop {r4, pc} +_0223A568: + add r4, #0x64 + add r0, r4, #0 + pop {r4, pc} +_0223A56E: + add r4, #0x6c + add r0, r4, #0 + pop {r4, pc} +_0223A574: + add r4, #0x94 + add r0, r4, #0 + pop {r4, pc} +_0223A57A: + add r4, #0x74 + add r0, r4, #0 + pop {r4, pc} +_0223A580: + add r4, #0x78 + add r0, r4, #0 + pop {r4, pc} +_0223A586: + mov r0, #0x46 + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A58E: + ldr r0, _0223A75C ; =0x000030E4 + add r1, r4, r0 + ldr r0, [r4, #0x64] + lsl r0, r0, #2 + add r0, r1, r0 + pop {r4, pc} +_0223A59A: + mov r0, #0x13 + lsl r0, r0, #4 + add r0, r4, r0 + pop {r4, pc} +_0223A5A2: + mov r0, #0x53 + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A5AA: + ldr r0, _0223A760 ; =0x00003044 + add r0, r4, r0 + pop {r4, pc} +_0223A5B0: + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + pop {r4, pc} +_0223A5B8: + mov r0, #0x47 + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A5C0: + mov r0, #0x12 + lsl r0, r0, #4 + add r0, r4, r0 + pop {r4, pc} +_0223A5C8: + mov r0, #0xc1 + lsl r0, r0, #6 + add r0, r4, r0 + pop {r4, pc} +_0223A5D0: + add r4, #0x98 + add r0, r4, #0 + pop {r4, pc} +_0223A5D6: + ldr r0, _0223A764 ; =0x00002154 + add r0, r4, r0 + pop {r4, pc} +_0223A5DC: + add r4, #0x38 + add r0, r4, #0 + pop {r4, pc} +_0223A5E2: + ldr r0, _0223A768 ; =0x0000215C + add r0, r4, r0 + pop {r4, pc} +_0223A5E8: + ldr r1, _0223A76C ; =0x0000241C + add r0, r0, r1 + pop {r4, pc} +_0223A5EE: + add r4, #0x8c + add r0, r4, #0 + pop {r4, pc} +_0223A5F4: + mov r0, #0x49 + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A5FC: + mov r0, #0x4a + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A604: + mov r0, #0x4b + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A60C: + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A614: + ldr r0, _0223A770 ; =0x00003104 + add r0, r4, r0 + pop {r4, pc} +_0223A61A: + mov r0, #0x86 + lsl r0, r0, #6 + add r0, r4, r0 + pop {r4, pc} +_0223A622: + mov r0, #0x7b + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, [r4, #0x64] + lsl r0, r0, #6 + add r0, r1, r0 + pop {r4, pc} +_0223A630: + mov r0, #0x81 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, [r4, #0x64] + lsl r0, r0, #6 + add r0, r1, r0 + pop {r4, pc} +_0223A63E: + mov r0, #0x4e + lsl r0, r0, #2 + add r0, r4, r0 + pop {r4, pc} +_0223A646: + ldr r0, _0223A774 ; =0x00002150 + add r0, r4, r0 + pop {r4, pc} +_0223A64C: + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, [r4, #0x64] + lsl r0, r0, #6 + add r0, r1, r0 + pop {r4, pc} +_0223A65A: + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, [r4, #0x6c] + lsl r0, r0, #6 + add r0, r1, r0 + pop {r4, pc} +_0223A668: + mov r0, #0xba + lsl r0, r0, #2 + add r2, r4, r0 + ldr r1, [r4, #0x64] + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0223A678: + mov r0, #0xba + lsl r0, r0, #2 + add r2, r4, r0 + ldr r1, [r4, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0223A688: + mov r0, #0xba + lsl r0, r0, #2 + add r2, r4, r0 + add r4, #0x94 + ldr r1, [r4] + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0223A69A: + ldr r0, _0223A778 ; =0x00003114 + add r0, r4, r0 + pop {r4, pc} +_0223A6A0: + ldr r0, _0223A77C ; =0x00003118 + add r0, r4, r0 + pop {r4, pc} +_0223A6A6: + ldr r1, _0223A780 ; =0x00002408 + add r0, r0, r1 + pop {r4, pc} +_0223A6AC: + ldr r0, _0223A784 ; =0x0000304C + add r1, r4, r0 + ldr r0, [r4, #0x64] + lsl r0, r0, #2 + add r0, r1, r0 + pop {r4, pc} +_0223A6B8: + ldr r0, _0223A788 ; =0x00002148 + add r0, r4, r0 + pop {r4, pc} +_0223A6BE: + ldr r1, _0223A78C ; =0x00002410 + add r0, r0, r1 + pop {r4, pc} +_0223A6C4: + add r4, #0x7c + add r0, r4, #0 + pop {r4, pc} +_0223A6CA: + ldr r0, _0223A790 ; =0x00002160 + add r0, r4, r0 + pop {r4, pc} +_0223A6D0: + ldr r0, _0223A794 ; =0x00002164 + add r0, r4, r0 + pop {r4, pc} +_0223A6D6: + ldr r1, _0223A798 ; =0x00002418 + add r0, r0, r1 + pop {r4, pc} +_0223A6DC: + mov r0, #0x85 + lsl r0, r0, #6 + add r0, r4, r0 + pop {r4, pc} +_0223A6E4: + add r4, #0xec + add r0, r4, #0 + pop {r4, pc} +_0223A6EA: + add r0, #0x44 + pop {r4, pc} +_0223A6EE: + add r4, #0x68 + add r0, r4, #0 + pop {r4, pc} +_0223A6F4: + add r4, #0x70 + add r0, r4, #0 + pop {r4, pc} +_0223A6FA: + mov r0, #0xb6 + lsl r0, r0, #2 + add r2, r4, r0 + ldr r1, [r4, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0223A70A: + mov r0, #0x21 + lsl r0, r0, #4 + add r1, r4, r0 + sub r0, #0xf8 + ldr r0, [r4, r0] + lsl r0, r0, #6 + add r0, r1, r0 + pop {r4, pc} +_0223A71A: + mov r0, #0x21 + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, [r4, #0x6c] + lsl r0, r0, #6 + add r0, r1, r0 + pop {r4, pc} +_0223A728: + mov r0, #0xbb + lsl r0, r0, #2 + add r2, r4, r0 + ldr r1, [r4, #0x64] + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0223A738: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0223A73C: .word 0x0000214C +_0223A740: .word 0x00002170 +_0223A744: .word 0x00002174 +_0223A748: .word 0x00002178 +_0223A74C: .word 0x0000213C +_0223A750: .word 0x00002158 +_0223A754: .word 0x0000216C +_0223A758: .word 0x00002144 +_0223A75C: .word 0x000030E4 +_0223A760: .word 0x00003044 +_0223A764: .word 0x00002154 +_0223A768: .word 0x0000215C +_0223A76C: .word 0x0000241C +_0223A770: .word 0x00003104 +_0223A774: .word 0x00002150 +_0223A778: .word 0x00003114 +_0223A77C: .word 0x00003118 +_0223A780: .word 0x00002408 +_0223A784: .word 0x0000304C +_0223A788: .word 0x00002148 +_0223A78C: .word 0x00002410 +_0223A790: .word 0x00002160 +_0223A794: .word 0x00002164 +_0223A798: .word 0x00002418 + + thumb_func_start MOD11_0223A79C +MOD11_0223A79C: ; 0x0223A79C + push {r4, r5, r6, r7, lr} + sub sp, #0xd4 + add r4, r1, #0 + str r0, [sp, #0x14] + ldr r0, [r4] + bl MOD11_022300C4 + str r0, [sp, #0x3c] + ldr r0, [r4] + bl MOD11_0222FF74 + str r0, [sp, #0x38] + ldr r0, [r4, #4] + mov r7, #0 + ldr r0, [r0, #0x74] + ldr r5, [r4, #0x48] + asr r1, r0, #1 + mov r0, #1 + and r0, r1 + str r0, [sp, #0x40] + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_0222FFC8 + cmp r5, r0 + bge _0223A81E + ldr r0, [sp, #0x40] + lsl r0, r0, #2 + str r0, [sp, #0x24] +_0223A7D6: + ldr r0, [r4] + mov r1, #0 + add r2, r5, #0 + bl MOD11_02230014 + mov r1, #6 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0x32 + beq _0223A81E + add r0, r5, #0 + bl FUN_0206A92C + add r2, r0, #0 + ldr r1, [r4, #4] + ldr r0, [sp, #0x24] + add r0, r0, r1 + add r0, #0xa4 + ldr r0, [r0] + tst r0, r2 + bne _0223A81E + ldr r0, [r4] + mov r1, #0 + add r5, r5, #1 + bl MOD11_0222FFC8 + cmp r5, r0 + blt _0223A7D6 +_0223A81E: + ldr r0, [r4] + mov r1, #0 + bl MOD11_0222FFC8 + cmp r5, r0 + bne _0223A830 + mov r0, #0x26 + str r0, [r4, #0x28] + b _0223A84C +_0223A830: + ldr r0, [sp, #0x38] + mov r2, #2 + tst r0, r2 + beq _0223A84C + ldr r0, [sp, #0x38] + mov r1, #0x40 + tst r0, r1 + bne _0223A84C + ldr r1, [r4, #4] + ldr r0, _0223AB98 ; =0x0000219E + ldrb r0, [r1, r0] + cmp r0, r5 + bne _0223A84C + add r7, r2, #0 +_0223A84C: + ldr r0, [r4, #0x28] + cmp r0, #0x26 + bls _0223A856 + bl _0223B2AE +_0223A856: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223A862: ; jump table + .short _0223A8B0 - _0223A862 - 2 ; case 0 + .short _0223AA74 - _0223A862 - 2 ; case 1 + .short _0223AA8C - _0223A862 - 2 ; case 2 + .short _0223AA9E - _0223A862 - 2 ; case 3 + .short _0223AACA - _0223A862 - 2 ; case 4 + .short _0223AADE - _0223A862 - 2 ; case 5 + .short _0223AB16 - _0223A862 - 2 ; case 6 + .short _0223AC16 - _0223A862 - 2 ; case 7 + .short _0223AC32 - _0223A862 - 2 ; case 8 + .short _0223AC50 - _0223A862 - 2 ; case 9 + .short _0223ACF8 - _0223A862 - 2 ; case 10 + .short _0223AE3C - _0223A862 - 2 ; case 11 + .short _0223ADBA - _0223A862 - 2 ; case 12 + .short _0223AE3C - _0223A862 - 2 ; case 13 + .short _0223AE5E - _0223A862 - 2 ; case 14 + .short _0223AEC0 - _0223A862 - 2 ; case 15 + .short _0223AF42 - _0223A862 - 2 ; case 16 + .short _0223AFDA - _0223A862 - 2 ; case 17 + .short _0223AFAC - _0223A862 - 2 ; case 18 + .short _0223AFDA - _0223A862 - 2 ; case 19 + .short _0223AFF2 - _0223A862 - 2 ; case 20 + .short _0223B012 - _0223A862 - 2 ; case 21 + .short _0223B05A - _0223A862 - 2 ; case 22 + .short _0223B07E - _0223A862 - 2 ; case 23 + .short _0223B16A - _0223A862 - 2 ; case 24 + .short _0223AFDA - _0223A862 - 2 ; case 25 + .short _0223B192 - _0223A862 - 2 ; case 26 + .short _0223AFDA - _0223A862 - 2 ; case 27 + .short _0223B1CE - _0223A862 - 2 ; case 28 + .short _0223AFDA - _0223A862 - 2 ; case 29 + .short _0223B1F6 - _0223A862 - 2 ; case 30 + .short _0223B0B6 - _0223A862 - 2 ; case 31 + .short _0223AFDA - _0223A862 - 2 ; case 32 + .short _0223B0E0 - _0223A862 - 2 ; case 33 + .short _0223B102 - _0223A862 - 2 ; case 34 + .short _0223B152 - _0223A862 - 2 ; case 35 + .short _0223B25C - _0223A862 - 2 ; case 36 + .short _0223B272 - _0223A862 - 2 ; case 37 + .short _0223B298 - _0223A862 - 2 ; case 38 +_0223A8B0: + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + mov r2, #5 + bl FUN_0206E7B8 + str r0, [sp, #0x18] + ldr r0, [sp, #0x38] + mov r1, #1 + and r0, r1 + str r0, [sp, #0x1c] + bne _0223A90E + ldr r1, [r4, #4] + ldr r0, _0223AB9C ; =0x00002E4C + ldr r2, _0223ABA0 ; =0x00002FCC + ldr r0, [r1, r0] + ldr r1, [r1, r2] + add r0, r0, r1 + bne _0223A90E + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0223A90E + ldr r1, [r4, #4] + ldr r0, _0223ABA4 ; =0x00003144 + ldr r0, [r1, r0] + cmp r0, #0 + bne _0223A90E + ldr r0, _0223ABA8 ; =0x00000467 + bl FUN_0200521C + ldr r1, [r4, #4] + ldr r0, _0223ABA4 ; =0x00003144 + mov r2, #1 + str r2, [r1, r0] + ldr r0, [r4] + mov r1, #2 + bl MOD11_02231484 +_0223A90E: + mov r0, #0 + str r0, [sp, #0x34] + mov r1, #1 + add r0, sp, #0xb0 + strh r1, [r0, #2] + ldr r2, [sp, #0x34] + add r0, r6, #0 + mov r1, #0xa2 + bl FUN_020671BC + cmp r0, #0 + bne _0223A928 + b _0223AA34 +_0223A928: + add r0, r6, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0x64 + beq _0223AA34 + ldr r0, [r4, #4] + str r0, [sp, #0x20] + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x40] + lsl r2, r1, #2 + ldr r1, [sp, #0x20] + add r1, r1, r2 + add r1, #0xa4 + ldr r1, [r1] + tst r0, r1 + beq _0223A958 + ldr r0, [sp, #0x20] + add r0, #0x9c + ldr r0, [r0] + str r0, [sp, #0x34] +_0223A958: + ldr r0, [sp, #0x18] + cmp r0, #0x32 + bne _0223A96C + ldr r0, [sp, #0x20] + add r0, #0xa0 + str r0, [sp, #0x20] + ldr r1, [r0] + ldr r0, [sp, #0x34] + add r0, r0, r1 + str r0, [sp, #0x34] +_0223A96C: + ldr r0, [sp, #0x18] + cmp r0, #0x41 + bne _0223A980 + ldr r1, [sp, #0x34] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _u32_div_f + str r0, [sp, #0x34] +_0223A980: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0223A994 + ldr r1, [sp, #0x34] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _u32_div_f + str r0, [sp, #0x34] +_0223A994: + ldr r0, [r4] + add r1, r6, #0 + bl MOD11_0224AE14 + cmp r0, #0 + bne _0223A9D6 + add r0, r6, #0 + mov r1, #0xc + mov r2, #0 + bl FUN_020671BC + ldr r1, _0223ABAC ; =0x020ECAC4 + ldrb r1, [r1] + cmp r1, r0 + beq _0223A9C2 + ldr r1, [sp, #0x34] + mov r0, #0xaa + mul r0, r1 + mov r1, #0x64 + blx _u32_div_f + str r0, [sp, #0x34] + b _0223A9D0 +_0223A9C2: + ldr r1, [sp, #0x34] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _u32_div_f + str r0, [sp, #0x34] +_0223A9D0: + mov r1, #2 + add r0, sp, #0xb0 + strh r1, [r0, #2] +_0223A9D6: + add r0, r6, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x48] + add r0, r6, #0 + bl FUN_02068734 + ldr r1, [sp, #0x48] + sub r0, r1, r0 + str r0, [r4, #0x3c] + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x34] + add r2, r1, r0 + str r2, [sp, #0x48] + ldr r3, [r4, #4] + ldr r0, _0223ABB0 ; =0x0000219C + add r1, r3, r7 + ldrb r0, [r1, r0] + cmp r5, r0 + bne _0223AA0C + mov r0, #0xc0 + mul r0, r7 + add r1, r3, r0 + ldr r0, _0223ABB4 ; =0x00002DA4 + str r2, [r1, r0] +_0223AA0C: + add r0, r6, #0 + mov r1, #8 + add r2, sp, #0x48 + bl FUN_02067830 + ldr r6, [r4, #4] + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_0222FF88 + ldr r3, [r6, #0x74] + mov r2, #0xc0 + mul r2, r3 + add r3, r6, r2 + mov r2, #0xb5 + lsl r2, r2, #6 + ldrh r2, [r3, r2] + add r1, r5, #0 + bl MOD11_0223B2DC +_0223AA34: + ldr r0, [sp, #0x34] + cmp r0, #0 + beq _0223AA6C + mov r1, #0x11 + add r0, sp, #0xb0 + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r0, [sp, #0x34] + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AA6C: + mov r0, #0x25 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AA74: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223AB20 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AA8C: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223AB20 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AA9E: + ldr r1, [r4, #4] + ldr r0, _0223ABB0 ; =0x0000219C + add r2, r1, r7 + ldrb r0, [r2, r0] + cmp r5, r0 + bne _0223AAC2 + ldr r0, [r4] + ldr r3, [r4, #0x3c] + add r2, r7, #0 + bl MOD11_02255B68 + mov r0, #0 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AAC2: + mov r0, #5 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AACA: + ldr r0, [r4, #4] + bl MOD11_02243388 + cmp r0, #0 + beq _0223AB20 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AADE: + add r0, r6, #0 + bl FUN_020690E8 + cmp r0, #0 + beq _0223AB0E + ldr r1, [r4, #4] + ldr r0, _0223ABB0 ; =0x0000219C + add r2, r1, r7 + ldrb r0, [r2, r0] + cmp r5, r0 + bne _0223AB06 + ldr r0, [r4] + add r2, r7, #0 + mov r3, #8 + bl MOD11_02255E4C + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_02255FA0 +_0223AB06: + mov r0, #6 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AB0E: + mov r0, #0x25 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AB16: + ldr r0, [r4, #4] + bl MOD11_02243388 + cmp r0, #0 + bne _0223AB22 +_0223AB20: + b _0223B2AE +_0223AB22: + ldr r3, _0223ABB8 ; =0x0225DCC0 + add r2, sp, #0x98 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x30] + mov r0, #5 + mov r1, #0x18 + bl FUN_02016998 + mov r1, #0x5f + ldr r2, [r4, #4] + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #4] + ldr r0, [r0, r1] + mov r1, #0 + str r0, [sp, #0x2c] + str r1, [sp, #0x4c] +_0223AB58: + lsl r2, r1, #2 + add r1, sp, #0x98 + ldr r1, [r1, r2] + add r0, r6, #0 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x4c] + lsl r2, r1, #2 + ldr r1, [sp, #0x2c] + str r0, [r1, r2] + ldr r0, [sp, #0x4c] + add r1, r0, #1 + str r1, [sp, #0x4c] + cmp r1, #6 + blt _0223AB58 + ldr r0, [r4] + bl MOD11_022302B0 + add r2, r0, #0 + lsl r2, r2, #0x10 + add r0, r6, #0 + mov r1, #0 + lsr r2, r2, #0x10 + bl FUN_020688E8 + add r0, r6, #0 + bl FUN_02066F04 + ldr r1, [r4, #4] + ldr r0, _0223ABB0 ; =0x0000219C + b _0223ABBC + .align 2, 0 +_0223AB98: .word 0x0000219E +_0223AB9C: .word 0x00002E4C +_0223ABA0: .word 0x00002FCC +_0223ABA4: .word 0x00003144 +_0223ABA8: .word 0x00000467 +_0223ABAC: .word 0x020ECAC4 +_0223ABB0: .word 0x0000219C +_0223ABB4: .word 0x00002DA4 +_0223ABB8: .word 0x0225DCC0 +_0223ABBC: + add r2, r1, r7 + ldrb r3, [r2, r0] + cmp r5, r3 + bne _0223ABCC + ldr r0, [r4] + add r2, r7, #0 + bl MOD11_02243054 +_0223ABCC: + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, [r4, #4] + ldr r2, _0223AF48 ; =0x00003109 + ldrb r3, [r1, r2] + orr r0, r3 + strb r0, [r1, r2] + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r7, #0 + bl MOD11_02256020 + mov r1, #3 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0x11 + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r0, [sp, #0x30] + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #7 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AC16: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0223AC26 + b _0223B2AE +_0223AC26: + mov r0, #8 + str r0, [r4, #0x28] + mov r0, #0 + add sp, #0xd4 + str r0, [r4, #0x38] + pop {r4, r5, r6, r7, pc} +_0223AC32: + ldr r0, [r4, #4] + add r1, r0, r7 + ldr r0, _0223AF4C ; =0x0000219C + ldrb r0, [r1, r0] + cmp r5, r0 + beq _0223AC48 + ldr r0, [r4] + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0223CDC4 +_0223AC48: + mov r0, #9 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AC50: + ldr r0, [r4] + bl MOD11_0222FF68 + add r6, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl MOD11_0222FF6C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_022300CC + add r7, r0, #0 + ldr r0, _0223AF50 ; =0x04000008 + mov r2, #3 + ldrh r1, [r0] + bic r1, r2 + mov r2, #2 + orr r1, r2 + strh r1, [r0] + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + ldr r0, [r4] + mov r1, #2 + bl MOD11_02231564 + mov r0, #5 + str r0, [sp] + add r0, r6, #0 + mov r1, #2 + mov r2, #1 + mov r3, #0 + bl FUN_0200CABC + bl FUN_0200CAFC + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + add r0, r7, #0 + mov r1, #0x26 + mov r3, #5 + bl FUN_020030E8 + mov r0, #7 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, r5, #0 + mov r2, #2 + mov r3, #0x11 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0xff + bl FUN_02019620 + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + mov r3, #8 + bl FUN_0200CCA4 + mov r0, #0xa + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223ACF8: + ldr r3, _0223AF54 ; =0x0225DCD8 + add r2, sp, #0x80 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _0223AF58 ; =0x0225DC60 + add r2, sp, #0x68 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + mov r1, #1 + bl MOD11_0222FF6C + add r7, r0, #0 + mov r0, #0x5f + ldr r1, [r4, #4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [sp, #0x28] + mov r0, #0 + str r0, [sp, #0x4c] +_0223AD30: + ldr r2, _0223AF5C ; =0x000003B3 + add r1, sp, #0xb0 + strh r2, [r1, #2] + mov r2, #4 + strb r2, [r1, #1] + lsl r2, r0, #2 + add r1, sp, #0x80 + ldr r1, [r1, r2] + lsl r0, r0, #4 + str r1, [sp, #0xb4] + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + add r0, r1, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4] + ldr r2, [sp, #0x3c] + add r1, r7, #0 + add r3, sp, #0xb0 + bl MOD11_022317E0 + mov r1, #0xed + ldr r5, [sp, #0x4c] + lsl r1, r1, #2 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #7 + strb r1, [r0, #1] + lsl r2, r5, #2 + add r1, sp, #0x68 + ldr r1, [r1, r2] + add r0, r6, #0 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x28] + lsl r2, r5, #2 + ldr r1, [r1, r2] + ldr r2, [sp, #0x3c] + sub r0, r0, r1 + str r0, [sp, #0xb4] + mov r0, #2 + str r0, [sp, #0xcc] + mov r0, #0x50 + str r0, [sp] + lsl r0, r5, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0x1c + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, r7, #0 + add r3, sp, #0xb0 + bl MOD11_022317E0 + ldr r0, [sp, #0x4c] + add r0, r0, #1 + str r0, [sp, #0x4c] + cmp r0, #6 + blt _0223AD30 + mov r0, #0xb + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223ADBA: + ldr r3, _0223AF60 ; =0x0225DC90 + add r2, sp, #0x50 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + mov r1, #1 + bl MOD11_0222FF6C + mov r1, #0x24 + str r1, [sp] + mov r1, #0x60 + str r1, [sp, #4] + mov r1, #0xf + mov r2, #0x50 + mov r3, #0 + add r7, r0, #0 + bl FUN_020196F4 + mov r1, #0 + str r1, [sp, #0x4c] + add r5, sp, #0xb0 +_0223ADEC: + ldr r0, _0223AF64 ; =0x000003B5 + lsl r2, r1, #2 + add r1, sp, #0x50 + strh r0, [r5, #2] + mov r0, #7 + ldr r1, [r1, r2] + strb r0, [r5, #1] + add r0, r6, #0 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xb4] + mov r0, #3 + str r0, [sp, #0xcc] + mov r0, #0x48 + str r0, [sp] + ldr r0, [sp, #0x4c] + ldr r2, [sp, #0x3c] + lsl r0, r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0x24 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r4] + add r1, r7, #0 + add r3, r5, #0 + bl MOD11_022317E0 + ldr r0, [sp, #0x4c] + add r1, r0, #1 + str r1, [sp, #0x4c] + cmp r1, #6 + blt _0223ADEC + mov r0, #0xd + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AE3C: + ldr r0, _0223AF68 ; =0x021C48B8 + ldr r1, [r0, #0x48] + ldr r0, _0223AF6C ; =0x00000C03 + tst r0, r1 + bne _0223AE4E + bl FUN_02020AA4 + cmp r0, #0 + beq _0223AEDC +_0223AE4E: + ldr r0, _0223AF70 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AE5E: + ldr r0, [r4] + mov r1, #1 + bl MOD11_0222FF6C + add r6, r0, #0 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + bl FUN_02019178 + ldr r1, _0223AF50 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + ldr r0, [r4] + mov r1, #0 + bl MOD11_02231564 + ldr r0, [r4, #4] + add r1, r0, r7 + ldr r0, _0223AF4C ; =0x0000219C + ldrb r0, [r1, r0] + cmp r5, r0 + beq _0223AEAC + ldr r0, [r4] + add r1, r4, #0 + bl MOD11_0223D068 +_0223AEAC: + mov r0, #0x5f + ldr r1, [r4, #4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + mov r0, #0xf + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AEC0: + ldr r0, [r4] + bl MOD11_0222FF68 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x38 + add r2, sp, #0x44 + bl FUN_02069818 + cmp r0, #0 + beq _0223AEE6 + ldr r1, _0223AF74 ; =0x0000FFFE + cmp r0, r1 + bne _0223AEDE +_0223AEDC: + b _0223B2AE +_0223AEDE: + add r1, r1, #1 + cmp r0, r1 + beq _0223AEEE + b _0223AEFC +_0223AEE6: + mov r0, #3 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AEEE: + add r0, sp, #0x44 + ldrh r0, [r0] + add sp, #0xd4 + str r0, [r4, #0x40] + mov r0, #0x10 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AEFC: + ldr r1, [r4, #4] + ldr r0, _0223AF4C ; =0x0000219C + add r2, r1, r7 + ldrb r3, [r2, r0] + cmp r5, r3 + bne _0223AF10 + ldr r0, [r4] + add r2, r7, #0 + bl MOD11_02243054 +_0223AF10: + mov r1, #4 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0xa + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + add r0, sp, #0x44 + ldrh r0, [r0] + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x24 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AF42: + ldr r1, _0223AF78 ; =0x0000049A + b _0223AF7C + nop +_0223AF48: .word 0x00003109 +_0223AF4C: .word 0x0000219C +_0223AF50: .word 0x04000008 +_0223AF54: .word 0x0225DCD8 +_0223AF58: .word 0x0225DC60 +_0223AF5C: .word 0x000003B3 +_0223AF60: .word 0x0225DC90 +_0223AF64: .word 0x000003B5 +_0223AF68: .word 0x021C48B8 +_0223AF6C: .word 0x00000C03 +_0223AF70: .word 0x000005DC +_0223AF74: .word 0x0000FFFE +_0223AF78: .word 0x0000049A +_0223AF7C: + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0xa + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r0, [r4, #0x40] + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AFAC: + ldr r1, _0223B2B4 ; =0x0000049B + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #2 + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AFDA: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223B01E + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223AFF2: + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r3, _0223B2B8 ; =0x0000049C + add r2, r7, #0 + bl MOD11_02255980 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B012: + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD11_0224AD90 + cmp r0, #0 + bne _0223B020 +_0223B01E: + b _0223B2AE +_0223B020: + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223B034 + mov r0, #0x1f + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B034: + ldr r1, _0223B2BC ; =0x0000049F + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x16 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B05A: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223B160 + ldr r0, [r4] + ldr r2, [r4, #0x40] + add r1, r7, #0 + add r3, r5, #0 + bl MOD11_022562B0 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B07E: + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223B092 + mov r0, #0x1f + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B092: + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223B160 + ldr r1, [r4, #4] + lsl r0, r7, #8 + add r1, r1, r0 + mov r0, #0x23 + lsl r0, r0, #8 + ldrb r0, [r1, r0] + add sp, #0xd4 + sub r0, r0, #1 + str r0, [r4, #0x44] + mov r0, #0x18 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B0B6: + mov r1, #0x4a + lsl r1, r1, #4 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B0E0: + mov r0, #2 + str r0, [sp] + ldr r0, [r4, #0x40] + ldr r3, _0223B2C0 ; =0x000004A1 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r7, #0 + bl MOD11_02255980 + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B102: + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223B160 + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223B122 + mov r0, #0x10 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B122: + ldr r1, _0223B2C4 ; =0x000004A4 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0xa + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r0, [r4, #0x40] + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x23 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B152: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0223B162 +_0223B160: + b _0223B2AE +_0223B162: + mov r0, #0xf + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B16A: + ldr r1, _0223B2C8 ; =0x000004A5 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B192: + ldr r1, _0223B2CC ; =0x000004A6 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0xa + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r1, [r4, #0x44] + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B1CE: + ldr r1, _0223B2D0 ; =0x000004A7 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + ldr r0, [r4, #0x28] + add sp, #0xd4 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B1F6: + ldr r1, _0223B2D4 ; =0x000004A8 + add r0, sp, #0xb0 + strh r1, [r0, #2] + mov r1, #0xa + strb r1, [r0, #1] + lsl r0, r5, #8 + orr r0, r7 + str r0, [sp, #0xb4] + ldr r0, [r4, #0x40] + str r0, [sp, #0xb8] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x3c] + add r2, sp, #0xb0 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0 + str r0, [sp, #0x4c] + ldr r1, [r4, #0x44] + add r0, r6, #0 + add r1, #0x3e + add r2, sp, #0x4c + bl FUN_02067830 + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x44] + lsl r1, r1, #0x10 + lsl r2, r2, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + bl FUN_020697CC + ldr r1, [r4, #4] + ldr r0, _0223B2D8 ; =0x0000219C + add r2, r1, r7 + ldrb r3, [r2, r0] + cmp r5, r3 + bne _0223B254 + ldr r0, [r4] + add r2, r7, #0 + bl MOD11_02243054 +_0223B254: + mov r0, #0x24 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B25C: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223B2AE + mov r0, #0xf + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B272: + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x40] + ldr r2, [r4, #4] + mov r3, #0 + mvn r3, r3 + add r2, #0xa4 + lsl r1, r1, #2 + ldr r6, [r2, r1] + eor r0, r3 + and r0, r6 + str r0, [r2, r1] + add r0, r5, #1 + str r0, [r4, #0x48] + mov r0, #0 + add sp, #0xd4 + str r0, [r4, #0x28] + pop {r4, r5, r6, r7, pc} +_0223B298: + mov r0, #0x5e + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #2 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x14] + bl FUN_0200CAB4 +_0223B2AE: + add sp, #0xd4 + pop {r4, r5, r6, r7, pc} + nop +_0223B2B4: .word 0x0000049B +_0223B2B8: .word 0x0000049C +_0223B2BC: .word 0x0000049F +_0223B2C0: .word 0x000004A1 +_0223B2C4: .word 0x000004A4 +_0223B2C8: .word 0x000004A5 +_0223B2CC: .word 0x000004A6 +_0223B2D0: .word 0x000004A7 +_0223B2D4: .word 0x000004A8 +_0223B2D8: .word 0x0000219C + + thumb_func_start MOD11_0223B2DC +MOD11_0223B2DC: ; 0x0223B2DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp] + str r1, [sp, #4] + add r0, r2, #0 + mov r1, #5 + mov r4, #0 + bl FUN_0206851C + add r7, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #4] + bl FUN_0206B9B0 + mov r1, #6 + add r2, r4, #0 + str r0, [sp, #0x14] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r6, #0 + mov r1, #1 + mov r2, #5 + bl FUN_0206E7B8 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #2 + mov r2, #5 + bl FUN_0206E7B8 + add r6, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + add r0, sp, #0x20 + str r0, [sp, #0xc] +_0223B328: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + add r1, #0xd + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0xc] + strb r0, [r1] + add r0, r1, #0 + ldrb r1, [r0] + ldr r0, [sp, #0x18] + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #6 + blt _0223B328 + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x20 + str r0, [sp, #0x10] +_0223B35E: + ldr r1, [sp, #0x18] + ldr r0, _0223B498 ; =0x000001FE + cmp r1, r0 + blo _0223B368 + b _0223B48C +_0223B368: + ldr r0, [sp, #8] + cmp r0, #5 + bhi _0223B414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B37A: ; jump table + .short _0223B386 - _0223B37A - 2 ; case 0 + .short _0223B39E - _0223B37A - 2 ; case 1 + .short _0223B3B6 - _0223B37A - 2 ; case 2 + .short _0223B3CE - _0223B37A - 2 ; case 3 + .short _0223B3E6 - _0223B37A - 2 ; case 4 + .short _0223B3FE - _0223B37A - 2 ; case 5 +_0223B386: + add r0, r7, #0 + mov r1, #0xa + bl FUN_02068538 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r5, #0x79 + bne _0223B414 + add r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _0223B414 +_0223B39E: + add r0, r7, #0 + mov r1, #0xb + bl FUN_02068538 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r5, #0x74 + bne _0223B414 + add r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _0223B414 +_0223B3B6: + add r0, r7, #0 + mov r1, #0xc + bl FUN_02068538 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r5, #0x75 + bne _0223B414 + add r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _0223B414 +_0223B3CE: + add r0, r7, #0 + mov r1, #0xd + bl FUN_02068538 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r5, #0x78 + bne _0223B414 + add r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _0223B414 +_0223B3E6: + add r0, r7, #0 + mov r1, #0xe + bl FUN_02068538 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r5, #0x76 + bne _0223B414 + add r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _0223B414 +_0223B3FE: + add r0, r7, #0 + mov r1, #0xf + bl FUN_02068538 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r5, #0x77 + bne _0223B414 + add r0, r4, r6 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_0223B414: + ldr r0, [sp, #4] + bl FUN_0206A92C + add r1, r0, #0 + lsl r1, r1, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl FUN_02069CF4 + cmp r0, #0 + beq _0223B42E + lsl r0, r4, #0x11 + asr r4, r0, #0x10 +_0223B42E: + cmp r5, #0x31 + bne _0223B436 + lsl r0, r4, #0x11 + asr r4, r0, #0x10 +_0223B436: + ldr r0, [sp, #0x18] + ldr r1, _0223B498 ; =0x000001FE + add r0, r0, r4 + cmp r0, r1 + ble _0223B448 + sub r0, r0, r1 + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_0223B448: + ldr r0, [sp, #0x10] + ldrb r0, [r0] + add r0, r0, r4 + cmp r0, #0xff + ble _0223B45A + sub r0, #0xff + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_0223B45A: + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x10] + ldrb r0, [r0] + add r1, r0, r4 + ldr r0, [sp, #0x10] + strb r1, [r0] + ldr r0, [sp, #0x18] + ldr r1, [sp, #8] + add r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r1, #0xd + bl FUN_02067830 + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #6 + bge _0223B48C + b _0223B35E +_0223B48C: + add r0, r7, #0 + bl FUN_02068640 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B498: .word 0x000001FE + + thumb_func_start MOD11_0223B49C +MOD11_0223B49C: ; 0x0223B49C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x158 + add r4, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r4] + bl MOD11_022300C4 + str r0, [sp, #0x20] + ldr r0, [r4] + bl MOD11_022300CC + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230068 + mov r7, #1 + str r0, [sp, #0x24] + add r0, r7, #0 + ldr r6, [r4, #4] + bl FUN_0206A92C + ldr r1, _0223B7F0 ; =0x00003108 + ldrb r1, [r6, r1] + tst r0, r1 + beq _0223B4D0 + mov r7, #3 +_0223B4D0: + ldr r0, [r4, #0x28] + cmp r0, #0x20 + bls _0223B4DA + bl _0223BFD0 +_0223B4DA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B4E6: ; jump table + .short _0223B528 - _0223B4E6 - 2 ; case 0 + .short _0223B5E8 - _0223B4E6 - 2 ; case 1 + .short _0223B634 - _0223B4E6 - 2 ; case 2 + .short _0223B662 - _0223B4E6 - 2 ; case 3 + .short _0223B68C - _0223B4E6 - 2 ; case 4 + .short _0223B6A0 - _0223B4E6 - 2 ; case 5 + .short _0223B6D4 - _0223B4E6 - 2 ; case 6 + .short _0223B6F6 - _0223B4E6 - 2 ; case 7 + .short _0223B716 - _0223B4E6 - 2 ; case 8 + .short _0223B75C - _0223B4E6 - 2 ; case 9 + .short _0223B77A - _0223B4E6 - 2 ; case 10 + .short _0223B8BC - _0223B4E6 - 2 ; case 11 + .short _0223B90A - _0223B4E6 - 2 ; case 12 + .short _0223B990 - _0223B4E6 - 2 ; case 13 + .short _0223B9E4 - _0223B4E6 - 2 ; case 14 + .short _0223BA12 - _0223B4E6 - 2 ; case 15 + .short _0223BA42 - _0223B4E6 - 2 ; case 16 + .short _0223BAC4 - _0223B4E6 - 2 ; case 17 + .short _0223BAEA - _0223B4E6 - 2 ; case 18 + .short _0223BB12 - _0223B4E6 - 2 ; case 19 + .short _0223BB6A - _0223B4E6 - 2 ; case 20 + .short _0223BC38 - _0223B4E6 - 2 ; case 21 + .short _0223BC7E - _0223B4E6 - 2 ; case 22 + .short _0223BC7E - _0223B4E6 - 2 ; case 23 + .short _0223BDD8 - _0223B4E6 - 2 ; case 24 + .short _0223BE26 - _0223B4E6 - 2 ; case 25 + .short _0223BE62 - _0223B4E6 - 2 ; case 26 + .short _0223BEA6 - _0223B4E6 - 2 ; case 27 + .short _0223BED8 - _0223B4E6 - 2 ; case 28 + .short _0223BEF0 - _0223B4E6 - 2 ; case 29 + .short _0223BF06 - _0223B4E6 - 2 ; case 30 + .short _0223BF5E - _0223B4E6 - 2 ; case 31 + .short _0223BF8E - _0223B4E6 - 2 ; case 32 +_0223B528: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _0223B5A4 + mov r0, #3 + str r0, [sp, #0x138] + mov r0, #5 + str r0, [sp, #0x134] + ldr r0, _0223B7F4 ; =0x00004E20 + add r0, r7, r0 + str r0, [sp, #0x13c] + ldr r0, [r4, #0x2c] + str r0, [sp, #0x140] + ldr r0, [r4] + bl MOD11_02230078 + str r0, [sp, #0x14c] + ldr r0, [r4] + bl MOD11_022300CC + str r0, [sp, #0x150] + mov r0, #1 + str r0, [sp, #0x144] + mov r0, #0 + str r0, [sp, #0x148] + ldr r0, [r4] + str r0, [sp, #0x154] + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _0223B578 + cmp r7, #1 + bne _0223B572 + mov r0, #0x10 + str r0, [sp, #0x130] + b _0223B57C +_0223B572: + mov r0, #0x11 + str r0, [sp, #0x130] + b _0223B57C +_0223B578: + mov r0, #0xf + str r0, [sp, #0x130] +_0223B57C: + add r0, sp, #0x130 + bl MOD08_02229918 + str r0, [r4, #8] + mov r0, #1 + str r0, [r4, #0x28] + ldr r0, _0223B7F8 ; =0x0000070A + bl FUN_020054C8 + ldr r2, [r4] + ldr r0, _0223B7FC ; =0x0000241E + ldrh r1, [r2, r0] + add r1, r1, #1 + strh r1, [r2, r0] + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_02228AB8 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B5A4: + ldr r0, [r4] + mov r1, #0 + bl MOD11_0222FF7C + add r5, r0, #0 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A80 + cmp r0, #4 + beq _0223B678 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + add r5, #0x88 + str r0, [r4, #8] + mov r0, #0 + str r0, [r5] + mov r0, #1 + str r0, [r4, #0x28] + ldr r0, _0223B7F8 ; =0x0000070A + bl FUN_020054C8 + ldr r2, [r4] + ldr r0, _0223B7FC ; =0x0000241E + ldrh r1, [r2, r0] + add r1, r1, #1 + strh r1, [r2, r0] + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_02228AB8 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B5E8: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223B678 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + beq _0223B618 + ldr r0, _0223B800 ; =0x000005E6 + mov r1, #0x75 + bl FUN_020054A8 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD08_02228AB8 + mov r0, #0x19 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B618: + ldr r0, _0223B804 ; =0x00000708 + mov r1, #0x75 + bl FUN_020054A8 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD08_02228AB8 + mov r0, #2 + str r0, [r4, #0x28] + mov r0, #0x17 + add sp, #0x158 + str r0, [r4, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_0223B634: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223B678 + ldr r0, [r4] + ldr r2, [r4, #0x2c] + add r1, r7, #0 + bl MOD11_02254EA8 + ldr r0, [r4] + ldr r1, [r4, #4] + bl MOD11_0223BFD8 + str r0, [r4, #0x38] + cmp r0, #4 + bge _0223B656 + b _0223B658 +_0223B656: + mov r0, #3 +_0223B658: + str r0, [r4, #0x3c] + mov r0, #3 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B662: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223B678 + ldr r0, [r4, #4] + bl MOD11_02243388 + cmp r0, #0 + bne _0223B67C +_0223B678: + bl _0223BFD0 +_0223B67C: + ldr r0, [r4, #8] + mov r1, #3 + bl MOD08_02228AB8 + mov r0, #4 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B68C: + ldr r0, [r4, #8] + mov r1, #3 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223B78E + mov r0, #5 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B6A0: + ldr r0, [r4, #0x3c] + cmp r0, #0 + bne _0223B6C0 + ldr r0, [r4, #0x38] + cmp r0, #4 + bne _0223B6B8 + mov r0, #7 + str r0, [r4, #0x28] + mov r0, #0xc + add sp, #0x158 + str r0, [r4, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_0223B6B8: + mov r0, #0x1c + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B6C0: + ldr r0, [r4, #8] + mov r1, #4 + bl MOD08_02228AB8 + mov r0, #6 + str r0, [r4, #0x28] + mov r0, #0xc + add sp, #0x158 + str r0, [r4, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_0223B6D4: + ldr r0, [r4, #8] + mov r1, #4 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223B78E + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223B78E + ldr r0, [r4, #0x3c] + add sp, #0x158 + sub r0, r0, #1 + str r0, [r4, #0x3c] + mov r0, #5 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B6F6: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223B78E + ldr r0, [r4, #8] + mov r1, #6 + bl MOD08_02228AB8 + ldr r0, _0223B808 ; =0x00000709 + mov r1, #0x75 + bl FUN_020054A8 + mov r0, #8 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B716: + ldr r0, [r4, #8] + mov r1, #6 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223B78E + ldr r1, _0223B80C ; =0x00000363 + add r0, sp, #0x10c + strh r1, [r0, #2] + mov r1, #0x82 + strb r1, [r0, #1] + str r7, [sp, #0x110] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x20] + add r2, sp, #0x10c + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + mov r0, #9 + str r0, [r4, #0x28] + ldr r0, _0223B810 ; =0x00000467 + bl FUN_0200521C + ldr r0, [r4] + mov r1, #2 + bl MOD11_02231484 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B75C: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223B78E + mov r0, #0xa + str r0, [r4, #0x28] + ldr r0, [r4, #8] + mov r1, #7 + bl MOD08_02228AB8 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B77A: + ldr r0, [r4, #8] + mov r1, #7 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223B78E + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + beq _0223B792 +_0223B78E: + bl _0223BFD0 +_0223B792: + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_022314D4 + ldr r2, [r4, #4] + ldr r0, [r4] + add r3, r2, r7 + ldr r2, _0223B814 ; =0x0000219C + add r1, r7, #0 + ldrb r2, [r3, r2] + bl MOD11_02230014 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #6 + lsl r1, r1, #8 + tst r0, r1 + beq _0223B83C + ldr r2, [r4, #4] + ldr r0, [r4] + add r3, r2, r7 + ldr r2, _0223B814 ; =0x0000219C + add r1, r7, #0 + ldrb r2, [r3, r2] + bl MOD11_02230014 + add r2, r0, #0 + ldr r0, [r4] + ldr r1, [r4, #4] + bl MOD11_0224AD38 + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223B818 ; =0x0000FFFF + b _0223B81C + nop +_0223B7F0: .word 0x00003108 +_0223B7F4: .word 0x00004E20 +_0223B7F8: .word 0x0000070A +_0223B7FC: .word 0x0000241E +_0223B800: .word 0x000005E6 +_0223B804: .word 0x00000708 +_0223B808: .word 0x00000709 +_0223B80C: .word 0x00000363 +_0223B810: .word 0x00000467 +_0223B814: .word 0x0000219C +_0223B818: .word 0x0000FFFF +_0223B81C: + add r0, r5, #0 + mov r1, #0xf + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + ldr r0, [sp, #0x24] + mov r2, #0x10 + add r3, r1, #0 + str r1, [sp] + bl FUN_02007E98 + mov r0, #0x20 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B83C: + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + ldr r0, [r4] + bl MOD11_02231668 + cmp r0, #0 + beq _0223B88A + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223BBD4 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + ldr r0, [sp, #0x24] + mov r2, #0x10 + add r3, r1, #0 + str r1, [sp] + bl FUN_02007E98 + mov r0, #0x10 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B88A: + ldr r1, _0223BBD8 ; =0x00000367 + add r0, sp, #0xe8 + strh r1, [r0, #2] + mov r1, #0x82 + strb r1, [r0, #1] + str r7, [sp, #0xec] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x20] + add r2, sp, #0xe8 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + mov r0, #0xb + str r0, [r4, #0x28] + ldr r0, [r4] + bl MOD11_0223129C + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B8BC: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223B914 + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223B914 + mov r0, #0xc + str r0, [r4, #0x28] + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223BBD4 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp] + mov r2, #0x10 + add r3, r1, #0 + bl FUN_02007E98 + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B90A: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + beq _0223B916 +_0223B914: + b _0223BFD0 +_0223B916: + ldr r0, [r4, #8] + bl MOD08_02229A2C + ldr r0, [sp, #0x24] + bl FUN_02007540 + ldr r0, [r4] + bl MOD11_0222D944 + ldr r0, [r4] + mov r1, #0 + bl MOD11_02230088 + mov r1, #0 + bl MOD11_022583C8 + ldr r0, [r4] + mov r1, #1 + bl MOD11_02230088 + mov r1, #0 + bl MOD11_022583C8 + ldr r0, [r4] + bl MOD11_0222FF68 + str r0, [sp, #0xd0] + ldr r0, [r4] + bl MOD11_022300CC + str r0, [sp, #0xd4] + ldr r0, [sp, #0x24] + add r1, r7, #0 + str r0, [sp, #0xd8] + mov r0, #5 + str r0, [sp, #0xdc] + ldr r2, [r4, #4] + ldr r0, [r4] + add r3, r2, r7 + ldr r2, _0223BBDC ; =0x0000219C + ldrb r2, [r3, r2] + bl MOD11_02230014 + str r0, [sp, #0xe0] + ldr r0, [r4] + bl MOD11_022300D0 + bl FUN_0206BB34 + str r0, [sp, #0xe4] + bl FUN_0201D658 + str r0, [r4, #0x54] + add r0, sp, #0xd0 + bl FUN_021EEF0C + str r0, [r4, #0x50] + mov r0, #0xd + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223B990: + ldr r0, [r4, #0x50] + bl FUN_021EEF84 + cmp r0, #0 + beq _0223BA4C + ldr r0, _0223BBE0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223B9AA + mov r0, #0xe + str r0, [r4, #0x28] + b _0223B9BC +_0223B9AA: + bl FUN_02020AA4 + cmp r0, #0 + beq _0223B9BC + ldr r0, _0223BBE4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xe + str r0, [r4, #0x28] +_0223B9BC: + ldr r0, [r4, #0x28] + cmp r0, #0xe + bne _0223BA4C + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223BBD4 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + mov r3, #1 + bl FUN_02003210 + ldr r0, [r4, #0x50] + mov r1, #0 + bl FUN_021EEF9C + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223B9E4: + ldr r0, [r4, #0x50] + bl FUN_021EEF98 + add r5, r0, #0 + mov r1, #0 + mov r2, #4 + bl FUN_020079E0 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200782C + cmp r0, #0x80 + blt _0223BA4C + add r0, r5, #0 + mov r1, #0 + mov r2, #0x80 + bl FUN_02007558 + mov r0, #0xf + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BA12: + ldr r0, [r4, #0x50] + bl FUN_021EEF68 + ldr r0, [r4, #0x54] + bl FUN_0201D674 + ldr r0, [r4] + bl MOD11_0222D980 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r2, _0223BBD4 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + mov r3, #1 + bl FUN_02003210 + mov r0, #0x11 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BA42: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + beq _0223BA4E +_0223BA4C: + b _0223BFD0 +_0223BA4E: + ldr r2, [r4, #4] + ldr r0, [r4] + add r3, r2, r7 + ldr r2, _0223BBDC ; =0x0000219C + add r1, r7, #0 + ldrb r2, [r3, r2] + bl MOD11_02230014 + add r6, r0, #0 + ldr r0, [r4, #8] + bl MOD08_02229A2C + ldr r0, [sp, #0x24] + bl FUN_02007540 + ldr r0, [r4] + bl MOD11_0222D944 + ldr r0, [r4] + bl MOD11_0222D980 + add r0, sp, #0xc0 + add r1, r6, #0 + mov r2, #2 + bl FUN_02068B68 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + add r1, sp, #0xc0 + mov r2, #0x80 + mov r3, #0x48 + bl FUN_020073A0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r2, _0223BBD4 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + mov r3, #1 + bl FUN_02003210 + mov r2, #0 + ldr r0, [sp, #0x24] + mov r1, #0x10 + add r3, r2, #0 + str r2, [sp] + bl FUN_02007E98 + mov r0, #0x11 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BAC4: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + bne _0223BB74 + mov r0, #0x12 + str r0, [r4, #0x28] + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #0 + bl FUN_020143A8 + add r0, r5, #0 + mov r1, #1 + bl FUN_020038F0 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223BAEA: + ldr r1, [r4, #4] + mov r0, #5 + str r0, [sp] + mov r2, #0 + ldr r0, _0223BBDC ; =0x0000219C + str r2, [sp, #4] + add r3, r1, r7 + ldrb r0, [r3, r0] + mov r3, #0xd9 + lsl r3, r3, #2 + orr r0, r7 + str r0, [sp, #8] + ldr r0, [r4] + bl MOD11_02255980 + ldr r0, [r4, #0x28] + add sp, #0x158 + add r0, r0, #1 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BB12: + add r0, r6, #0 + mov r1, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223BB74 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223BB32 + mov r0, #0x16 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BB32: + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223BBD4 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #0xf + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + ldr r0, [sp, #0x24] + mov r2, #0x10 + add r3, r1, #0 + str r1, [sp] + bl FUN_02007E98 + mov r0, #0x14 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BB6A: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + beq _0223BB76 +_0223BB74: + b _0223BFD0 +_0223BB76: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r2, [r4, #4] + ldr r0, [r4] + add r3, r2, r7 + ldr r2, _0223BBDC ; =0x0000219C + add r1, r7, #0 + ldrb r2, [r3, r2] + bl MOD11_02230014 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230E18 + str r0, [sp] + mov r0, #5 + mov r1, #1 + add r2, r5, #0 + mov r3, #0xa + bl FUN_02077A84 + add r5, r0, #0 + str r5, [r4, #0x54] + ldr r0, [r4] + mov r1, #0 + bl MOD11_0222FFC8 + cmp r0, #6 + bge _0223BBCA + mov r0, #0 + b _0223BBEE +_0223BBCA: + ldr r0, [r4] + bl MOD11_02231280 + ldr r1, _0223BBE8 ; =0x00000496 + b _0223BBEC + .align 2, 0 +_0223BBD4: .word 0x0000FFFF +_0223BBD8: .word 0x00000367 +_0223BBDC: .word 0x0000219C +_0223BBE0: .word 0x021C48B8 +_0223BBE4: .word 0x000005DC +_0223BBE8: .word 0x00000496 +_0223BBEC: + add r0, r0, r1 +_0223BBEE: + str r0, [r5, #0x44] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + str r0, [r5, #8] + ldr r0, [r4] + bl MOD11_02230290 + str r0, [r5, #0x48] + add r0, r6, #0 + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC + str r0, [r5, #0x10] + ldr r0, _0223BF18 ; =0x020FA5FC + add r1, r5, #0 + mov r2, #5 + bl FUN_02006234 + str r0, [r4, #0x50] + mov r0, #0x15 + str r0, [r4, #0x28] + ldr r0, [r4] + bl MOD11_02231438 + ldr r0, [r4] + bl MOD11_0222D840 + ldr r0, [r4] + mov r1, #1 + bl MOD11_02231338 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223BC38: + ldr r0, [r4, #0x50] + bl FUN_02006290 + cmp r0, #0 + beq _0223BC88 + ldr r2, [r4, #4] + ldr r5, [r4, #0x54] + add r3, r2, r7 + ldr r2, _0223BF1C ; =0x0000219C + ldr r0, [r4] + ldrb r2, [r3, r2] + add r1, r7, #0 + bl MOD11_02230014 + ldr r1, [r5, #0x14] + cmp r1, #0 + bne _0223BC62 + ldr r2, [r5, #0x18] + mov r1, #0x77 + bl FUN_02067830 +_0223BC62: + add r0, r5, #0 + bl FUN_02077AC4 + ldr r0, [r4, #0x50] + bl FUN_02006260 + ldr r0, [r4] + mov r1, #2 + bl MOD11_02231338 + mov r0, #0x17 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BC7E: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + beq _0223BC8A +_0223BC88: + b _0223BFD0 +_0223BC8A: + ldr r0, [r4] + mov r1, #0 + bl MOD11_0222FF88 + ldr r2, [r4, #4] + str r0, [sp, #0x28] + add r3, r2, r7 + ldr r2, _0223BF1C ; =0x0000219C + ldr r0, [r4] + ldrb r2, [r3, r2] + add r1, r7, #0 + bl MOD11_02230014 + add r6, r0, #0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_02231628 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r6, #0 + bl MOD11_0224AD38 + ldr r0, [r4] + add r1, r6, #0 + bl MOD11_02230F88 + ldr r0, [r4] + add r1, r6, #0 + bl MOD11_02230FA8 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #9 + bl MOD11_022564A8 + ldr r0, [sp, #0x28] + add r1, r6, #0 + bl FUN_0206B900 + cmp r0, #1 + bne _0223BD1E + ldr r0, [r4, #0x28] + cmp r0, #0x16 + bne _0223BD16 + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223BF20 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #0xf + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + ldr r0, [sp, #0x24] + mov r2, #0x10 + add r3, r1, #0 + str r1, [sp] + bl FUN_02007E98 +_0223BD16: + mov r0, #0x20 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BD1E: + ldr r0, [r4] + bl MOD11_02230290 + str r0, [sp, #0x1c] + bl FUN_0206B330 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + bl FUN_0206B334 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x14] + bl FUN_0206B428 + mov r5, #0 +_0223BD3E: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + add r1, r5, #0 + str r0, [sp, #0x2c] + add r0, r6, #0 + add r1, #0x3a + add r2, sp, #0x2c + bl FUN_02067830 + add r5, r5, #1 + cmp r5, #4 + blt _0223BD3E + add r0, r6, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x14] + bl FUN_0206B244 + ldr r0, [r4, #0x28] + cmp r0, #0x16 + bne _0223BDD0 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x14] + cmp r1, r0 + ldr r0, [r4] + bne _0223BD96 + bl MOD11_02231280 + ldr r1, _0223BF24 ; =0x00000496 + add r1, r0, r1 + add r0, sp, #0x9c + strh r1, [r0, #2] + mov r1, #0x93 + strb r1, [r0, #1] + ldr r0, [sp, #0x18] + str r7, [sp, #0xa0] + str r0, [sp, #0xa4] + b _0223BDB0 +_0223BD96: + bl MOD11_02231280 + ldr r1, _0223BF28 ; =0x00000498 + add r1, r0, r1 + add r0, sp, #0x9c + strh r1, [r0, #2] + mov r1, #0xaf + strb r1, [r0, #1] + ldr r0, [sp, #0x18] + str r7, [sp, #0xa0] + str r0, [sp, #0xa4] + ldr r0, [sp, #0x14] + str r0, [sp, #0xa8] +_0223BDB0: + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x20] + add r2, sp, #0x9c + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + mov r0, #0x18 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BDD0: + mov r0, #0x20 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BDD8: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223BEBC + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223BEBC + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _0223BF20 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #0xf + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + ldr r0, [sp, #0x24] + mov r2, #0x10 + add r3, r1, #0 + str r1, [sp] + bl FUN_02007E98 + mov r0, #0x20 + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BE26: + ldr r0, [r4, #8] + mov r1, #2 + bl MOD08_02228AC0 + cmp r0, #0 + bne _0223BEBC + ldr r0, [r4, #8] + bl MOD08_02229A2C + ldr r1, _0223BF2C ; =0x0000035B + add r0, sp, #0x78 + strh r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x20] + add r2, sp, #0x78 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + mov r0, #0x1a + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BE62: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223BEBC + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223BEBC + mov r1, #0xd7 + lsl r1, r1, #2 + add r0, sp, #0x2c + strh r1, [r0, #0x2a] + mov r1, #0 + add r0, sp, #0x54 + strb r1, [r0, #1] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x20] + add r2, sp, #0x54 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + mov r0, #0x1b + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BEA6: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223BEBC + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + beq _0223BEBE +_0223BEBC: + b _0223BFD0 +_0223BEBE: + mov r0, #0x5e + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #2 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x10] + bl FUN_0200CAB4 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223BED8: + ldr r0, [r4] + ldr r2, [r4, #0x2c] + add r1, r7, #0 + mov r3, #1 + bl MOD11_02254B40 + mov r0, #0x1d + str r0, [r4, #0x28] + mov r0, #2 + add sp, #0x158 + str r0, [r4, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_0223BEF0: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223BFD0 + ldr r0, [r4, #8] + bl MOD08_02229A2C + mov r0, #0x1e + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BF06: + add r0, r6, #0 + bl MOD11_02243388 + cmp r0, #0 + beq _0223BFD0 + ldr r1, [r4, #0x38] + ldr r0, _0223BF30 ; =0x0000035F + b _0223BF34 + nop +_0223BF18: .word 0x020FA5FC +_0223BF1C: .word 0x0000219C +_0223BF20: .word 0x0000FFFF +_0223BF24: .word 0x00000496 +_0223BF28: .word 0x00000498 +_0223BF2C: .word 0x0000035B +_0223BF30: .word 0x0000035F +_0223BF34: + add r1, r1, r0 + add r0, sp, #0x2c + strh r1, [r0, #6] + mov r1, #0 + strb r1, [r0, #5] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x20] + add r2, sp, #0x30 + bl MOD11_0223178C + str r0, [r4, #0x30] + mov r0, #0x14 + str r0, [r4, #0x34] + mov r0, #0x1f + add sp, #0x158 + str r0, [r4, #0x28] + pop {r3, r4, r5, r6, r7, pc} +_0223BF5E: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223BFD0 + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bne _0223BFD0 + mov r0, #0x5e + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #2 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x10] + bl FUN_0200CAB4 + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} +_0223BF8E: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + bne _0223BFD0 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #6 + lsl r1, r1, #8 + tst r0, r1 + beq _0223BFB2 + ldr r0, [r4, #8] + bl MOD08_02229A2C + ldr r0, [sp, #0x24] + bl FUN_02007540 +_0223BFB2: + ldr r1, [r4] + ldr r0, _0223BFD4 ; =0x0000241C + mov r2, #4 + strb r2, [r1, r0] + mov r0, #0x5e + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #2 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x10] + bl FUN_0200CAB4 +_0223BFD0: + add sp, #0x158 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223BFD4: .word 0x0000241C + + thumb_func_start MOD11_0223BFD8 +MOD11_0223BFD8: ; 0x0223BFD8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r4, r1, #0 + bl MOD11_0222FF74 + mov r1, #6 + lsl r1, r1, #8 + tst r0, r1 + beq _0223BFEE + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_0223BFEE: + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r4, #0x6c] + cmp r0, #5 + bne _0223C026 + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r1, r0] + mov r1, #8 + bl FUN_02068678 + ldr r1, _0223C200 ; =0x0000311C + ldr r2, _0223C204 ; =0x0225DCF0 + ldrb r1, [r4, r1] + lsl r1, r1, #1 + ldrb r2, [r2, r1] + mul r2, r0 + add r0, r2, #0 + ldr r2, _0223C208 ; =0x0225DCF1 + ldrb r1, [r2, r1] + blx _u32_div_f + str r0, [sp] + b _0223C03A +_0223C026: + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r1, r0] + mov r1, #8 + bl FUN_02068678 + str r0, [sp] +_0223C03A: + ldr r1, [r4, #0x6c] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + mov r5, #0xa + bl MOD11_02243420 + add r7, r0, #0 + ldr r1, [r4, #0x6c] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + add r1, r0, #0 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r2, [r4, r0] + cmp r2, #5 + ble _0223C128 + cmp r2, #0xf + bhi _0223C12E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223C072: ; jump table + .short _0223C12E - _0223C072 - 2 ; case 0 + .short _0223C12E - _0223C072 - 2 ; case 1 + .short _0223C12E - _0223C072 - 2 ; case 2 + .short _0223C12E - _0223C072 - 2 ; case 3 + .short _0223C12E - _0223C072 - 2 ; case 4 + .short _0223C12E - _0223C072 - 2 ; case 5 + .short _0223C092 - _0223C072 - 2 ; case 6 + .short _0223C0A6 - _0223C072 - 2 ; case 7 + .short _0223C0B4 - _0223C072 - 2 ; case 8 + .short _0223C0D0 - _0223C072 - 2 ; case 9 + .short _0223C0EC - _0223C072 - 2 ; case 10 + .short _0223C12E - _0223C072 - 2 ; case 11 + .short _0223C12E - _0223C072 - 2 ; case 12 + .short _0223C0FA - _0223C072 - 2 ; case 13 + .short _0223C12E - _0223C072 - 2 ; case 14 + .short _0223C11C - _0223C072 - 2 ; case 15 +_0223C092: + cmp r7, #0xb + beq _0223C0A2 + cmp r1, #0xb + beq _0223C0A2 + cmp r7, #6 + beq _0223C0A2 + cmp r1, #6 + bne _0223C12E +_0223C0A2: + mov r5, #0x1e + b _0223C12E +_0223C0A6: + add r0, r6, #0 + bl MOD11_02230294 + cmp r0, #7 + bne _0223C12E + mov r5, #0x23 + b _0223C12E +_0223C0B4: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0223C20C ; =0x00002D74 + ldrb r1, [r1, r0] + cmp r1, #0x28 + bhs _0223C12E + mov r0, #0x28 + sub r5, r0, r1 + cmp r5, #0xa + bhs _0223C12E + mov r5, #0xa + b _0223C12E +_0223C0D0: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + mov r1, #0xb5 + lsl r1, r1, #6 + ldrh r1, [r2, r1] + add r0, r6, #0 + bl MOD11_02231668 + cmp r0, #1 + bne _0223C12E + mov r5, #0x1e + b _0223C12E +_0223C0EC: + add r0, #0x28 + ldr r5, [r4, r0] + add r5, #0xa + cmp r5, #0x28 + bls _0223C12E + mov r5, #0x28 + b _0223C12E +_0223C0FA: + add r0, r6, #0 + bl MOD11_02230C5C + cmp r0, #3 + beq _0223C118 + add r0, r6, #0 + bl MOD11_02230C5C + cmp r0, #4 + beq _0223C118 + add r0, r6, #0 + bl MOD11_02230294 + cmp r0, #5 + bne _0223C12E +_0223C118: + mov r5, #0x23 + b _0223C12E +_0223C11C: + add r0, #0x28 + ldr r0, [r4, r0] + cmp r0, #1 + bge _0223C12E + mov r5, #0x28 + b _0223C12E +_0223C128: + ldr r0, _0223C210 ; =0x0225DC28 + sub r1, r2, #2 + ldrb r5, [r0, r1] +_0223C12E: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + ldr r0, _0223C214 ; =0x00002D90 + add r1, r4, r6 + ldr r1, [r1, r0] + lsl r0, r1, #1 + add r7, r1, r0 + ldr r1, [sp] + add r0, r1, #0 + mul r0, r5 + mov r1, #0xa + blx _u32_div_f + ldr r1, _0223C218 ; =0x00002D8C + add r2, r4, r6 + ldr r1, [r2, r1] + lsl r1, r1, #1 + sub r1, r7, r1 + mul r1, r0 + add r0, r1, #0 + add r1, r7, #0 + blx _u32_div_f + add r1, r0, #0 + ldr r0, _0223C21C ; =0x00002DAC + add r2, r4, r6 + ldr r2, [r2, r0] + mov r0, #0x27 + tst r0, r2 + beq _0223C170 + lsl r1, r1, #1 +_0223C170: + mov r0, #0xd8 + tst r0, r2 + beq _0223C182 + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _u32_div_f + add r1, r0, #0 +_0223C182: + cmp r1, #0xff + blo _0223C18A + mov r5, #4 + b _0223C1FA +_0223C18A: + ldr r0, _0223C220 ; =0x040002B0 + mov r2, #0 + strh r2, [r0] + mov r0, #0xff + lsl r0, r0, #0x10 + blx _u32_div_f + ldr r1, _0223C224 ; =0x040002B8 + add r2, r1, #0 + str r0, [r1] + sub r2, #8 + lsr r0, r1, #0xb +_0223C1A2: + ldrh r1, [r2] + tst r1, r0 + bne _0223C1A2 + ldr r3, _0223C220 ; =0x040002B0 + lsr r0, r3, #0xb +_0223C1AC: + ldrh r1, [r3] + tst r1, r0 + bne _0223C1AC + ldr r2, _0223C228 ; =0x040002B4 + mov r0, #0 + ldr r1, [r2] + strh r0, [r3] + mov r0, #2 + str r1, [r2, #4] + sub r2, r2, #4 + lsl r0, r0, #0xe +_0223C1C2: + ldrh r1, [r2] + tst r1, r0 + bne _0223C1C2 + ldr r2, _0223C220 ; =0x040002B0 + lsr r0, r2, #0xb +_0223C1CC: + ldrh r1, [r2] + tst r1, r0 + bne _0223C1CC + ldr r1, _0223C228 ; =0x040002B4 + ldr r0, _0223C22C ; =0x000FFFF0 + ldr r1, [r1] + blx _u32_div_f + add r6, r0, #0 + mov r5, #0 +_0223C1E0: + bl FUN_0201B9EC + cmp r0, r6 + bhs _0223C1EE + add r5, r5, #1 + cmp r5, #4 + blt _0223C1E0 +_0223C1EE: + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _0223C1FA + mov r5, #4 +_0223C1FA: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C200: .word 0x0000311C +_0223C204: .word 0x0225DCF0 +_0223C208: .word 0x0225DCF1 +_0223C20C: .word 0x00002D74 +_0223C210: .word 0x0225DC28 +_0223C214: .word 0x00002D90 +_0223C218: .word 0x00002D8C +_0223C21C: .word 0x00002DAC +_0223C220: .word 0x040002B0 +_0223C224: .word 0x040002B8 +_0223C228: .word 0x040002B4 +_0223C22C: .word 0x000FFFF0 + + thumb_func_start MOD11_0223C230 +MOD11_0223C230: ; 0x0223C230 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + add r6, r1, #0 + cmp r2, #0x16 + bgt _0223C27A + cmp r2, #0 + blt _0223C280 + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223C24C: ; jump table + .short _0223C280 - _0223C24C - 2 ; case 0 + .short _0223C280 - _0223C24C - 2 ; case 1 + .short _0223C284 - _0223C24C - 2 ; case 2 + .short _0223C320 - _0223C24C - 2 ; case 3 + .short _0223C29C - _0223C24C - 2 ; case 4 + .short _0223C288 - _0223C24C - 2 ; case 5 + .short _0223C28C - _0223C24C - 2 ; case 6 + .short _0223C290 - _0223C24C - 2 ; case 7 + .short _0223C296 - _0223C24C - 2 ; case 8 + .short _0223C346 - _0223C24C - 2 ; case 9 + .short _0223C2C2 - _0223C24C - 2 ; case 10 + .short _0223C36E - _0223C24C - 2 ; case 11 + .short _0223C2EA - _0223C24C - 2 ; case 12 + .short _0223C280 - _0223C24C - 2 ; case 13 + .short _0223C3A4 - _0223C24C - 2 ; case 14 + .short _0223C3AC - _0223C24C - 2 ; case 15 + .short _0223C3B4 - _0223C24C - 2 ; case 16 + .short _0223C3F0 - _0223C24C - 2 ; case 17 + .short _0223C280 - _0223C24C - 2 ; case 18 + .short _0223C42C - _0223C24C - 2 ; case 19 + .short _0223C456 - _0223C24C - 2 ; case 20 + .short _0223C480 - _0223C24C - 2 ; case 21 + .short _0223C28C - _0223C24C - 2 ; case 22 +_0223C27A: + cmp r2, #0xff + bne _0223C280 + b _0223C480 +_0223C280: + ldr r5, [r6, #0x64] + b _0223C486 +_0223C284: + ldr r5, [r6, #0x6c] + b _0223C486 +_0223C288: + ldr r5, [r6, #0x74] + b _0223C486 +_0223C28C: + ldr r5, [r6, #0x78] + b _0223C486 +_0223C290: + add r6, #0x94 + ldr r5, [r6] + b _0223C486 +_0223C296: + add r6, #0x80 + ldr r5, [r6] + b _0223C486 +_0223C29C: + bl MOD11_0222FF84 + add r6, r0, #0 + mov r5, #0 + cmp r6, #0 + ble _0223C2C0 + mov r7, #1 +_0223C2AA: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _0223C48C ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + bne _0223C2C0 + add r5, r5, #1 + cmp r5, r6 + blt _0223C2AA +_0223C2C0: + b _0223C486 +_0223C2C2: + bl MOD11_0222FF84 + add r6, r0, #0 + mov r5, #0 + cmp r6, #0 + ble _0223C2E8 + ldr r7, _0223C48C ; =0x00000195 +_0223C2D0: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #3 + beq _0223C2E8 + cmp r0, #1 + beq _0223C2E8 + add r5, r5, #1 + cmp r5, r6 + blt _0223C2D0 +_0223C2E8: + b _0223C486 +_0223C2EA: + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _0223C2F8 + mov r6, #5 + b _0223C2FA +_0223C2F8: + mov r6, #1 +_0223C2FA: + add r0, r4, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + mov r5, #0 + cmp r7, #0 + ble _0223C31E +_0223C308: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _0223C48C ; =0x00000195 + ldrb r0, [r0, r1] + cmp r0, r6 + beq _0223C31E + add r5, r5, #1 + cmp r5, r7 + blt _0223C308 +_0223C31E: + b _0223C486 +_0223C320: + bl MOD11_0222FF84 + add r6, r0, #0 + mov r5, #0 + cmp r6, #0 + ble _0223C344 + mov r7, #1 +_0223C32E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _0223C48C ; =0x00000195 + ldrb r0, [r0, r1] + tst r0, r7 + beq _0223C344 + add r5, r5, #1 + cmp r5, r6 + blt _0223C32E +_0223C344: + b _0223C486 +_0223C346: + bl MOD11_0222FF84 + add r6, r0, #0 + mov r5, #0 + cmp r6, #0 + ble _0223C36C + ldr r7, _0223C48C ; =0x00000195 +_0223C354: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldrb r0, [r0, r7] + cmp r0, #2 + beq _0223C36C + cmp r0, #0 + beq _0223C36C + add r5, r5, #1 + cmp r5, r6 + blt _0223C354 +_0223C36C: + b _0223C486 +_0223C36E: + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _0223C37C + mov r6, #4 + b _0223C37E +_0223C37C: + mov r6, #0 +_0223C37E: + add r0, r4, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + mov r5, #0 + cmp r7, #0 + ble _0223C486 +_0223C38C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + ldr r1, _0223C48C ; =0x00000195 + ldrb r0, [r0, r1] + cmp r0, r6 + beq _0223C486 + add r5, r5, #1 + cmp r5, r7 + blt _0223C38C + b _0223C486 +_0223C3A4: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r5, [r6, r0] + b _0223C486 +_0223C3AC: + mov r0, #0x12 + lsl r0, r0, #4 + ldr r5, [r6, r0] + b _0223C486 +_0223C3B4: + bl MOD11_0222FF84 + mov r5, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _0223C3E6 +_0223C3C0: + ldr r7, [r6, #0x64] + cmp r5, r7 + beq _0223C3DE + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02230270 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_02230270 + ldr r1, [sp, #8] + cmp r1, r0 + beq _0223C3E6 +_0223C3DE: + ldr r0, [sp, #4] + add r5, r5, #1 + cmp r5, r0 + blt _0223C3C0 +_0223C3E6: + ldr r0, [sp, #4] + cmp r5, r0 + bne _0223C486 + mov r5, #0 + b _0223C486 +_0223C3F0: + bl MOD11_0222FF84 + mov r5, #0 + str r0, [sp] + cmp r0, #0 + ble _0223C422 +_0223C3FC: + ldr r7, [r6, #0x6c] + cmp r5, r7 + beq _0223C41A + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02230270 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_02230270 + ldr r1, [sp, #0xc] + cmp r1, r0 + beq _0223C422 +_0223C41A: + ldr r0, [sp] + add r5, r5, #1 + cmp r5, r0 + blt _0223C3FC +_0223C422: + ldr r0, [sp] + cmp r5, r0 + bne _0223C486 + mov r5, #0 + b _0223C486 +_0223C42C: + bl MOD11_0222FF84 + add r7, r0, #0 + ldr r1, [r6, #0x64] + add r0, r4, #0 + bl MOD11_02230270 + add r6, r0, #0 + mov r5, #0 + cmp r7, #0 + ble _0223C486 +_0223C442: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02230270 + cmp r6, r0 + bne _0223C486 + add r5, r5, #1 + cmp r5, r7 + blt _0223C442 + b _0223C486 +_0223C456: + bl MOD11_0222FF84 + add r7, r0, #0 + ldr r1, [r6, #0x6c] + add r0, r4, #0 + bl MOD11_02230270 + add r6, r0, #0 + mov r5, #0 + cmp r7, #0 + ble _0223C486 +_0223C46C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02230270 + cmp r6, r0 + bne _0223C486 + add r5, r5, #1 + cmp r5, r7 + blt _0223C46C + b _0223C486 +_0223C480: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r5, [r6, r0] +_0223C486: + add r0, r5, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C48C: .word 0x00000195 + + thumb_func_start MOD11_0223C490 +MOD11_0223C490: ; 0x0223C490 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r4, r1, #0 + mov r6, #0 + bl MOD11_0223A404 + str r0, [r4] + add r0, r7, #0 + bl MOD11_0223A404 + str r0, [r4, #4] + cmp r0, #0x3c + bhi _0223C544 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C4B6: ; jump table + .short _0223C530 - _0223C4B6 - 2 ; case 0 + .short _0223C532 - _0223C4B6 - 2 ; case 1 + .short _0223C532 - _0223C4B6 - 2 ; case 2 + .short _0223C532 - _0223C4B6 - 2 ; case 3 + .short _0223C532 - _0223C4B6 - 2 ; case 4 + .short _0223C532 - _0223C4B6 - 2 ; case 5 + .short _0223C532 - _0223C4B6 - 2 ; case 6 + .short _0223C532 - _0223C4B6 - 2 ; case 7 + .short _0223C532 - _0223C4B6 - 2 ; case 8 + .short _0223C536 - _0223C4B6 - 2 ; case 9 + .short _0223C536 - _0223C4B6 - 2 ; case 10 + .short _0223C536 - _0223C4B6 - 2 ; case 11 + .short _0223C536 - _0223C4B6 - 2 ; case 12 + .short _0223C536 - _0223C4B6 - 2 ; case 13 + .short _0223C536 - _0223C4B6 - 2 ; case 14 + .short _0223C536 - _0223C4B6 - 2 ; case 15 + .short _0223C536 - _0223C4B6 - 2 ; case 16 + .short _0223C536 - _0223C4B6 - 2 ; case 17 + .short _0223C536 - _0223C4B6 - 2 ; case 18 + .short _0223C536 - _0223C4B6 - 2 ; case 19 + .short _0223C536 - _0223C4B6 - 2 ; case 20 + .short _0223C536 - _0223C4B6 - 2 ; case 21 + .short _0223C536 - _0223C4B6 - 2 ; case 22 + .short _0223C536 - _0223C4B6 - 2 ; case 23 + .short _0223C536 - _0223C4B6 - 2 ; case 24 + .short _0223C536 - _0223C4B6 - 2 ; case 25 + .short _0223C536 - _0223C4B6 - 2 ; case 26 + .short _0223C536 - _0223C4B6 - 2 ; case 27 + .short _0223C536 - _0223C4B6 - 2 ; case 28 + .short _0223C536 - _0223C4B6 - 2 ; case 29 + .short _0223C536 - _0223C4B6 - 2 ; case 30 + .short _0223C53A - _0223C4B6 - 2 ; case 31 + .short _0223C53A - _0223C4B6 - 2 ; case 32 + .short _0223C53A - _0223C4B6 - 2 ; case 33 + .short _0223C53A - _0223C4B6 - 2 ; case 34 + .short _0223C53A - _0223C4B6 - 2 ; case 35 + .short _0223C53A - _0223C4B6 - 2 ; case 36 + .short _0223C53A - _0223C4B6 - 2 ; case 37 + .short _0223C53A - _0223C4B6 - 2 ; case 38 + .short _0223C53A - _0223C4B6 - 2 ; case 39 + .short _0223C53A - _0223C4B6 - 2 ; case 40 + .short _0223C53A - _0223C4B6 - 2 ; case 41 + .short _0223C53A - _0223C4B6 - 2 ; case 42 + .short _0223C53A - _0223C4B6 - 2 ; case 43 + .short _0223C53A - _0223C4B6 - 2 ; case 44 + .short _0223C53A - _0223C4B6 - 2 ; case 45 + .short _0223C53A - _0223C4B6 - 2 ; case 46 + .short _0223C53A - _0223C4B6 - 2 ; case 47 + .short _0223C53A - _0223C4B6 - 2 ; case 48 + .short _0223C53A - _0223C4B6 - 2 ; case 49 + .short _0223C53A - _0223C4B6 - 2 ; case 50 + .short _0223C53A - _0223C4B6 - 2 ; case 51 + .short _0223C53E - _0223C4B6 - 2 ; case 52 + .short _0223C53E - _0223C4B6 - 2 ; case 53 + .short _0223C53E - _0223C4B6 - 2 ; case 54 + .short _0223C53E - _0223C4B6 - 2 ; case 55 + .short _0223C53E - _0223C4B6 - 2 ; case 56 + .short _0223C53E - _0223C4B6 - 2 ; case 57 + .short _0223C53E - _0223C4B6 - 2 ; case 58 + .short _0223C53E - _0223C4B6 - 2 ; case 59 + .short _0223C542 - _0223C4B6 - 2 ; case 60 +_0223C530: + b _0223C544 +_0223C532: + mov r6, #1 + b _0223C544 +_0223C536: + mov r6, #2 + b _0223C544 +_0223C53A: + mov r6, #3 + b _0223C544 +_0223C53E: + mov r6, #4 + b _0223C544 +_0223C542: + mov r6, #6 +_0223C544: + mov r5, #0 + cmp r6, #0 + ble _0223C55A +_0223C54A: + add r0, r7, #0 + bl MOD11_0223A404 + str r0, [r4, #8] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, r6 + blt _0223C54A +_0223C55A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0223C55C +MOD11_0223C55C: ; 0x0223C55C + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + ldr r2, [r4] + add r5, r3, #0 + strh r2, [r5, #2] + ldr r2, [r4, #4] + add r7, r0, #0 + strb r2, [r5, #1] + ldrb r2, [r5, #1] + add r6, r1, #0 + cmp r2, #0x3c + bls _0223C576 + b _0223CC58 +_0223C576: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223C582: ; jump table + .short _0223CC58 - _0223C582 - 2 ; case 0 + .short _0223C5FC - _0223C582 - 2 ; case 1 + .short _0223C606 - _0223C582 - 2 ; case 2 + .short _0223C610 - _0223C582 - 2 ; case 3 + .short _0223C61C - _0223C582 - 2 ; case 4 + .short _0223C628 - _0223C582 - 2 ; case 5 + .short _0223C634 - _0223C582 - 2 ; case 6 + .short _0223C634 - _0223C582 - 2 ; case 7 + .short _0223C640 - _0223C582 - 2 ; case 8 + .short _0223C64A - _0223C582 - 2 ; case 9 + .short _0223C660 - _0223C582 - 2 ; case 10 + .short _0223C674 - _0223C582 - 2 ; case 11 + .short _0223C68A - _0223C582 - 2 ; case 12 + .short _0223C69E - _0223C582 - 2 ; case 13 + .short _0223C6B2 - _0223C582 - 2 ; case 14 + .short _0223C6C8 - _0223C582 - 2 ; case 15 + .short _0223C6DC - _0223C582 - 2 ; case 16 + .short _0223C6F0 - _0223C582 - 2 ; case 17 + .short _0223C704 - _0223C582 - 2 ; case 18 + .short _0223C71A - _0223C582 - 2 ; case 19 + .short _0223C728 - _0223C582 - 2 ; case 20 + .short _0223C740 - _0223C582 - 2 ; case 21 + .short _0223C758 - _0223C582 - 2 ; case 22 + .short _0223C76E - _0223C582 - 2 ; case 23 + .short _0223C784 - _0223C582 - 2 ; case 24 + .short _0223C79A - _0223C582 - 2 ; case 25 + .short _0223C7B0 - _0223C582 - 2 ; case 26 + .short _0223C7C6 - _0223C582 - 2 ; case 27 + .short _0223C7DC - _0223C582 - 2 ; case 28 + .short _0223C7F0 - _0223C582 - 2 ; case 29 + .short _0223C804 - _0223C582 - 2 ; case 30 + .short _0223C81A - _0223C582 - 2 ; case 31 + .short _0223C83A - _0223C582 - 2 ; case 32 + .short _0223C85C - _0223C582 - 2 ; case 33 + .short _0223C87C - _0223C582 - 2 ; case 34 + .short _0223C89A - _0223C582 - 2 ; case 35 + .short _0223C8B8 - _0223C582 - 2 ; case 36 + .short _0223C8DA - _0223C582 - 2 ; case 37 + .short _0223C8FA - _0223C582 - 2 ; case 38 + .short _0223C91A - _0223C582 - 2 ; case 39 + .short _0223C93A - _0223C582 - 2 ; case 40 + .short _0223C95A - _0223C582 - 2 ; case 41 + .short _0223C97A - _0223C582 - 2 ; case 42 + .short _0223C99A - _0223C582 - 2 ; case 43 + .short _0223C9BA - _0223C582 - 2 ; case 44 + .short _0223C9D8 - _0223C582 - 2 ; case 45 + .short _0223C9F6 - _0223C582 - 2 ; case 46 + .short _0223CA14 - _0223C582 - 2 ; case 47 + .short _0223CA26 - _0223C582 - 2 ; case 48 + .short _0223CA48 - _0223C582 - 2 ; case 49 + .short _0223CA6A - _0223C582 - 2 ; case 50 + .short _0223CA8C - _0223C582 - 2 ; case 51 + .short _0223CAAC - _0223C582 - 2 ; case 52 + .short _0223CAD8 - _0223C582 - 2 ; case 53 + .short _0223CB06 - _0223C582 - 2 ; case 54 + .short _0223CB32 - _0223C582 - 2 ; case 55 + .short _0223CB5C - _0223C582 - 2 ; case 56 + .short _0223CB8A - _0223C582 - 2 ; case 57 + .short _0223CBB8 - _0223C582 - 2 ; case 58 + .short _0223CBE6 - _0223C582 - 2 ; case 59 + .short _0223CC14 - _0223C582 - 2 ; case 60 +_0223C5FC: + ldr r2, [r4, #8] + bl MOD11_0223C230 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C606: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C610: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C61C: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CD6C + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C628: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C634: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C640: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0223C64A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C660: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C674: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C68A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CD6C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C69E: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CD2C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C6B2: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD84 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C6C8: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C6DC: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CD9C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C6F0: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C704: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C71A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r0, [r4, #0xc] + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C728: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223C230 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C740: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C758: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C76E: + ldr r2, [r4, #8] + bl MOD11_0223CD38 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C784: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C79A: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C7B0: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C7C6: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C7DC: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C7F0: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C804: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223C81A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C83A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C85C: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C87C: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C89A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C8B8: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C8DA: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C8FA: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C91A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD6C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C93A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD2C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C95A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD78 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C97A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD20 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C99A: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C9BA: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C9D8: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD6C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223C9F6: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CD78 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223CA14: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r0, [r4, #0xc] + str r0, [r5, #8] + ldr r0, [r4, #0x10] + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223CA26: + ldr r1, [r4, #8] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CDA8 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223CA48: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223CA6A: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223CA8C: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223CAAC: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r1, [r4, #0x14] + add r0, r6, #0 + bl MOD11_0223CC8C + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CAD8: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r2, [r4, #0x14] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CB06: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CD38 + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r1, [r4, #0x14] + add r0, r6, #0 + bl MOD11_0223CD6C + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CB32: + ldr r2, [r4, #8] + bl MOD11_0223CC5C + str r0, [r5, #4] + ldr r1, [r4, #0xc] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r1, [r4, #0x14] + add r0, r6, #0 + bl MOD11_0223CCA8 + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CB5C: + ldr r2, [r4, #8] + bl MOD11_0223CDBC + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #0xc] + ldr r2, [r4, #0x14] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CB8A: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r2, [r4, #0x14] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CBB8: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r2, [r4, #0x14] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CBE6: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDB4 + str r0, [r5, #0xc] + ldr r2, [r4, #0x14] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223CC14: + ldr r2, [r4, #8] + bl MOD11_0223CDB4 + str r0, [r5, #4] + ldr r2, [r4, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #8] + ldr r2, [r4, #0x10] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0xc] + ldr r2, [r4, #0x14] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDB4 + str r0, [r5, #0x10] + ldr r2, [r4, #0x18] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CDBC + str r0, [r5, #0x14] + ldr r2, [r4, #0x1c] + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_0223CC5C + str r0, [r5, #0x18] +_0223CC58: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0223CC5C +MOD11_0223CC5C: ; 0x0223CC5C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + bl MOD11_0223C230 + cmp r4, #0x16 + bne _0223CC76 + ldr r1, _0223CC84 ; =0x000021A0 + add r2, r5, r0 + ldrb r1, [r2, r1] + lsl r1, r1, #8 + orr r0, r1 + pop {r3, r4, r5, pc} +_0223CC76: + ldr r1, _0223CC88 ; =0x0000219C + add r2, r5, r0 + ldrb r1, [r2, r1] + lsl r1, r1, #8 + orr r0, r1 + pop {r3, r4, r5, pc} + nop +_0223CC84: .word 0x000021A0 +_0223CC88: .word 0x0000219C + + thumb_func_start MOD11_0223CC8C +MOD11_0223CC8C: ; 0x0223CC8C + cmp r1, #1 + beq _0223CC96 + cmp r1, #0xff + beq _0223CC9C + bx lr +_0223CC96: + ldr r1, _0223CCA4 ; =0x00003044 + ldr r0, [r0, r1] + bx lr +_0223CC9C: + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + .align 2, 0 +_0223CCA4: .word 0x00003044 + + thumb_func_start MOD11_0223CCA8 +MOD11_0223CCA8: ; 0x0223CCA8 + push {r4, lr} + cmp r1, #0x15 + bgt _0223CCC0 + bge _0223CCF6 + cmp r1, #2 + bgt _0223CD18 + cmp r1, #1 + blt _0223CD18 + beq _0223CCC6 + cmp r1, #2 + beq _0223CCDE + b _0223CD18 +_0223CCC0: + cmp r1, #0xff + beq _0223CD12 + b _0223CD18 +_0223CCC6: + ldr r3, [r0, #0x64] + mov r1, #0xc0 + mul r1, r3 + add r2, r0, r1 + ldr r1, _0223CD1C ; =0x00002DB8 + ldrh r4, [r2, r1] + lsl r1, r3, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0 + bl MOD11_0223D1D0 + b _0223CD18 +_0223CCDE: + ldr r3, [r0, #0x6c] + mov r1, #0xc0 + mul r1, r3 + add r2, r0, r1 + ldr r1, _0223CD1C ; =0x00002DB8 + ldrh r4, [r2, r1] + lsl r1, r3, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0 + bl MOD11_0223D1D0 + b _0223CD18 +_0223CCF6: + mov r1, #0x46 + lsl r1, r1, #2 + ldr r3, [r0, r1] + mov r1, #0xc0 + mul r1, r3 + add r2, r0, r1 + ldr r1, _0223CD1C ; =0x00002DB8 + ldrh r4, [r2, r1] + lsl r1, r3, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0 + bl MOD11_0223D1D0 + b _0223CD18 +_0223CD12: + mov r1, #0x4a + lsl r1, r1, #2 + ldr r4, [r0, r1] +_0223CD18: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0223CD1C: .word 0x00002DB8 + + thumb_func_start MOD11_0223CD20 +MOD11_0223CD20: ; 0x0223CD20 + cmp r1, #0xff + bne _0223CD2A + mov r1, #0x13 + lsl r1, r1, #4 + ldr r0, [r0, r1] +_0223CD2A: + bx lr + + thumb_func_start MOD11_0223CD2C +MOD11_0223CD2C: ; 0x0223CD2C + cmp r1, #0xff + bne _0223CD36 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r0, [r0, r1] +_0223CD36: + bx lr + + thumb_func_start MOD11_0223CD38 +MOD11_0223CD38: ; 0x0223CD38 + push {r3, r4, r5, lr} + add r5, r1, #0 + cmp r2, #0xff + bne _0223CD48 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r4, [r5, r0] + b _0223CD64 +_0223CD48: + bl MOD11_0223C230 + add r1, r0, #0 + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _0223CD68 ; =0x00002D67 + lsl r1, r1, #0x18 + ldrb r4, [r2, r0] + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r4, #0 + bl MOD11_0223D1C4 +_0223CD64: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CD68: .word 0x00002D67 + + thumb_func_start MOD11_0223CD6C +MOD11_0223CD6C: ; 0x0223CD6C + cmp r1, #0xff + bne _0223CD76 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r0, [r0, r1] +_0223CD76: + bx lr + + thumb_func_start MOD11_0223CD78 +MOD11_0223CD78: ; 0x0223CD78 + cmp r1, #0xff + bne _0223CD82 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r0, [r0, r1] +_0223CD82: + bx lr + + thumb_func_start MOD11_0223CD84 +MOD11_0223CD84: ; 0x0223CD84 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0223C230 + ldr r1, _0223CD98 ; =0x0000219C + add r2, r4, r0 + ldrb r1, [r2, r1] + lsl r1, r1, #8 + orr r0, r1 + pop {r4, pc} + .align 2, 0 +_0223CD98: .word 0x0000219C + + thumb_func_start MOD11_0223CD9C +MOD11_0223CD9C: ; 0x0223CD9C + cmp r1, #0xff + bne _0223CDA6 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r0, [r0, r1] +_0223CDA6: + bx lr + + thumb_func_start MOD11_0223CDA8 +MOD11_0223CDA8: ; 0x0223CDA8 + cmp r1, #0xff + bne _0223CDB2 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r0, [r0, r1] +_0223CDB2: + bx lr + + thumb_func_start MOD11_0223CDB4 +MOD11_0223CDB4: ; 0x0223CDB4 + ldr r3, _0223CDB8 ; =MOD11_0223C230 + bx r3 + .align 2, 0 +_0223CDB8: .word MOD11_0223C230 + + thumb_func_start MOD11_0223CDBC +MOD11_0223CDBC: ; 0x0223CDBC + ldr r3, _0223CDC0 ; =MOD11_0223C230 + bx r3 + .align 2, 0 +_0223CDC0: .word MOD11_0223C230 + + thumb_func_start MOD11_0223CDC4 +MOD11_0223CDC4: ; 0x0223CDC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp, #0x18] + bl MOD11_022300C4 + str r0, [sp, #0x28] + add r0, r7, #0 + bl MOD11_0223013C + str r0, [sp, #0x20] + add r0, r7, #0 + bl MOD11_02230138 + str r0, [sp, #0x24] + add r0, r7, #0 + bl MOD11_0222FF68 + str r0, [sp, #0x1c] + add r0, r7, #0 + bl MOD11_02230078 + add r6, r0, #0 + add r0, r7, #0 + bl MOD11_02230080 + add r4, r0, #0 + add r0, r7, #0 + bl MOD11_022300CC + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223D03C ; =0x00004E31 + add r1, r4, #0 + str r0, [sp, #8] + add r0, r6, #0 + mov r2, #0x1b + mov r3, #0xc0 + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + mov r0, #0x2e + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r1, #2 + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0223D040 ; =0x00004E2C + add r2, r6, #0 + str r0, [sp, #0x14] + add r0, r7, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r0, _0223D044 ; =0x00004E29 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x1b + mov r3, #0xc1 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223D044 ; =0x00004E29 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x1b + mov r3, #0xc2 + bl FUN_0200C13C + ldr r2, _0223D048 ; =0x0225DD7C + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200C154 + str r0, [r5, #0xc] + bl FUN_0200C5A8 + ldr r0, [sp, #0x18] + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223D04C ; =0x00004E32 + add r1, r4, #0 + str r0, [sp, #8] + add r0, r6, #0 + mov r2, #0x13 + bl FUN_0200C978 + bl FUN_0206B888 + mov r1, #0x13 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0223D050 ; =0x00004E2D + mov r1, #2 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r6, #0 + add r3, r4, #0 + bl FUN_0200C0DC + bl FUN_0206B894 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0223D054 ; =0x00004E2A + add r1, r4, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B8A0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0223D054 ; =0x00004E2A + add r1, r4, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x13 + bl FUN_0200C13C + ldr r2, _0223D058 ; =0x0225DDB0 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200C154 + str r0, [r5, #0x10] + ldr r0, [sp, #0x18] + bl FUN_0206B87C + add r1, r0, #0 + ldr r0, [r5, #0x10] + ldr r0, [r0] + bl FUN_020202DC + ldr r0, [r5, #0x10] + bl FUN_0200C5A8 + mov r0, #1 + mov r1, #5 + bl FUN_02011744 + str r0, [r5, #0x50] + ldr r0, [sp, #0x18] + mov r1, #0xaf + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0223CF26 + mov r0, #2 + b _0223CF30 +_0223CF26: + ldr r0, [sp, #0x18] + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC +_0223CF30: + cmp r0, #0 + bne _0223CF42 + mov r1, #0x3b + ldr r0, [sp, #0x28] + lsl r1, r1, #4 + bl FUN_0200A914 + add r6, r0, #0 + b _0223CF5C +_0223CF42: + cmp r0, #1 + bne _0223CF52 + ldr r0, [sp, #0x28] + ldr r1, _0223D05C ; =0x000003B1 + bl FUN_0200A914 + add r6, r0, #0 + b _0223CF5C +_0223CF52: + ldr r0, [sp, #0x28] + ldr r1, _0223D060 ; =0x000003B2 + bl FUN_0200A914 + add r6, r0, #0 +_0223CF5C: + ldr r0, [sp, #0x18] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [sp, #0x24] + mov r1, #0 + bl FUN_0200ACF8 + ldr r0, [sp, #0x18] + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r1, #1 + ldr r0, [sp, #0x24] + mov r3, #3 + str r1, [sp, #4] + bl FUN_0200AD38 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x20] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, sp, #0x68 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r1, sp, #0x68 + mov r2, #0xc + mov r3, #4 + bl FUN_020190EC + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0223D064 ; =0x00010200 + ldr r2, [sp, #0x20] + str r0, [sp, #8] + add r0, sp, #0x68 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, sp, #0x68 + mov r1, #1 + mov r2, #5 + bl FUN_02011898 + mov r1, #1 + add r2, r1, #0 + add r3, sp, #0x5c + bl FUN_0201D568 + ldr r0, [r5, #0x50] + str r0, [sp, #0x2c] + add r0, sp, #0x68 + str r0, [sp, #0x30] + add r0, r4, #0 + bl FUN_0200CA40 + str r0, [sp, #0x34] + ldr r1, _0223D040 ; =0x00004E2C + add r0, r4, #0 + bl FUN_0200C334 + mov r1, #0 + str r0, [sp, #0x38] + ldr r0, [sp, #0x60] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + mov r0, #0xb0 + str r0, [sp, #0x44] + mov r0, #8 + str r0, [sp, #0x48] + mov r0, #0x64 + str r0, [sp, #0x50] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #5 + str r0, [sp, #0x58] + add r0, sp, #0x2c + str r1, [sp, #0x4c] + bl FUN_020117E8 + add r2, r5, #0 + add r3, sp, #0x5c + str r0, [r5, #0x14] + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #1 + str r0, [r2] + ldr r0, [r5, #0x14] + bl FUN_02011AC0 + add r0, sp, #0x68 + bl FUN_02019178 + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D03C: .word 0x00004E31 +_0223D040: .word 0x00004E2C +_0223D044: .word 0x00004E29 +_0223D048: .word 0x0225DD7C +_0223D04C: .word 0x00004E32 +_0223D050: .word 0x00004E2D +_0223D054: .word 0x00004E2A +_0223D058: .word 0x0225DDB0 +_0223D05C: .word 0x000003B1 +_0223D060: .word 0x000003B2 +_0223D064: .word 0x00010200 + + thumb_func_start MOD11_0223D068 +MOD11_0223D068: ; 0x0223D068 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl MOD11_02230080 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0200C3DC + ldr r0, [r5, #0x10] + bl FUN_0200C3DC + ldr r0, [r5, #0x14] + bl FUN_02011870 + add r0, r5, #0 + add r0, #0x18 + bl FUN_0201D5E8 + ldr r1, _0223D0D4 ; =0x00004E31 + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223D0D8 ; =0x00004E2C + add r0, r4, #0 + bl FUN_0200C368 + ldr r1, _0223D0DC ; =0x00004E29 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223D0DC ; =0x00004E29 + add r0, r4, #0 + bl FUN_0200C388 + ldr r1, _0223D0E0 ; =0x00004E32 + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223D0E4 ; =0x00004E2D + add r0, r4, #0 + bl FUN_0200C368 + ldr r1, _0223D0E8 ; =0x00004E2A + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223D0E8 ; =0x00004E2A + add r0, r4, #0 + bl FUN_0200C388 + ldr r0, [r5, #0x50] + bl FUN_020117BC + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D0D4: .word 0x00004E31 +_0223D0D8: .word 0x00004E2C +_0223D0DC: .word 0x00004E29 +_0223D0E0: .word 0x00004E32 +_0223D0E4: .word 0x00004E2D +_0223D0E8: .word 0x00004E2A + + thumb_func_start MOD11_0223D0EC +MOD11_0223D0EC: ; 0x0223D0EC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r1, r2, #0 + add r5, r0, #0 + str r2, [sp] + bl MOD11_02230270 + cmp r0, #0 + bne _0223D1B8 + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _0223D13C + add r0, r5, #0 + mov r1, #3 + bl MOD11_0223022C + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0 + mov r1, #5 + bl MOD11_0223022C + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r2, #0xc0 + add r0, r1, #0 + mul r0, r2 + mul r2, r6 + ldr r3, _0223D1BC ; =0x00002D74 + add r0, r4, r0 + add r2, r4, r2 + ldrb r0, [r0, r3] + ldrb r2, [r2, r3] + cmp r0, r2 + bls _0223D148 + add r6, r1, #0 + b _0223D148 +_0223D13C: + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223022C + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_0223D148: + ldr r1, [sp] + add r0, r5, #0 + add r2, r1, #0 + add r3, r4, r2 + ldr r2, _0223D1C0 ; =0x0000219C + ldrb r2, [r3, r2] + bl MOD11_02230014 + add r7, r0, #0 + ldr r0, [sp] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r0, r4, r2 + ldr r2, _0223D1BC ; =0x00002D74 + mul r1, r6 + add r1, r4, r1 + ldrb r0, [r0, r2] + ldrb r1, [r1, r2] + cmp r1, r0 + bls _0223D1A4 + sub r0, r1, r0 + cmp r0, #0x1e + blt _0223D18E + add r0, r5, #0 + bl MOD11_022302B0 + add r2, r0, #0 + lsl r2, r2, #0x10 + add r0, r7, #0 + mov r1, #8 + lsr r2, r2, #0x10 + bl FUN_020688E8 + pop {r3, r4, r5, r6, r7, pc} +_0223D18E: + add r0, r5, #0 + bl MOD11_022302B0 + add r2, r0, #0 + lsl r2, r2, #0x10 + add r0, r7, #0 + mov r1, #6 + lsr r2, r2, #0x10 + bl FUN_020688E8 + pop {r3, r4, r5, r6, r7, pc} +_0223D1A4: + add r0, r5, #0 + bl MOD11_022302B0 + add r2, r0, #0 + lsl r2, r2, #0x10 + add r0, r7, #0 + mov r1, #6 + lsr r2, r2, #0x10 + bl FUN_020688E8 +_0223D1B8: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D1BC: .word 0x00002D74 +_0223D1C0: .word 0x0000219C + + thumb_func_start MOD11_0223D1C4 +MOD11_0223D1C4: ; 0x0223D1C4 + add r1, r0, r1 + mov r0, #0x39 + lsl r0, r0, #4 + strb r2, [r1, r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_0223D1D0 +MOD11_0223D1D0: ; 0x0223D1D0 + lsl r1, r1, #1 + add r1, r0, r1 + mov r0, #0xe5 + lsl r0, r0, #2 + strh r2, [r1, r0] + bx lr + + thumb_func_start MOD11_0223D1DC +MOD11_0223D1DC: ; 0x0223D1DC + push {r3, r4, r5, lr} + ldr r1, _0223D22C ; =0x0000314C + add r5, r0, #0 + mov r0, #5 + bl FUN_02016998 + add r4, r0, #0 + ldr r2, _0223D22C ; =0x0000314C + mov r0, #0 + add r1, r4, #0 + blx MIi_CpuClearFast + add r0, r4, #0 + bl MOD11_02245494 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02245588 + bl FUN_02033590 + cmp r0, #0 + bne _0223D216 + mov r2, #0 + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl FUN_021EFBF4 +_0223D216: + ldr r0, _0223D230 ; =0x000003DE + add r0, r4, r0 + bl FUN_0206AB04 + mov r0, #5 + bl FUN_0206EB50 + ldr r1, _0223D234 ; =0x00002120 + str r0, [r4, r1] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D22C: .word 0x0000314C +_0223D230: .word 0x000003DE +_0223D234: .word 0x00002120 + + thumb_func_start MOD11_0223D238 +MOD11_0223D238: ; 0x0223D238 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _0223D27C ; =0x0000311F + add r5, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _0223D25E + bl MOD11_0223145C + cmp r0, #0 + beq _0223D25E + add r0, r5, #0 + bl MOD11_0223145C + mov r1, #0x40 + tst r0, r1 + bne _0223D25E + mov r0, #0x29 + str r0, [r4, #8] +_0223D25E: + ldr r2, [r4, #8] + add r0, r5, #0 + lsl r3, r2, #2 + ldr r2, _0223D280 ; =0x0225E194 + add r1, r4, #0 + ldr r2, [r2, r3] + blx r2 + ldr r0, [r4, #8] + cmp r0, #0x2b + bne _0223D276 + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D276: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0223D27C: .word 0x0000311F +_0223D280: .word 0x0225E194 + + thumb_func_start MOD11_0223D284 +MOD11_0223D284: ; 0x0223D284 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223D298 ; =0x00002120 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 +_0223D298: .word 0x00002120 + + thumb_func_start MOD11_0223D29C +MOD11_0223D29C: ; 0x0223D29C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r6, [sp, #0x20] + add r5, r0, #0 + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp, #4] + str r6, [sp] + bl MOD11_0224053C + ldr r0, [sp, #0x20] + ldr r3, [sp, #4] + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_02240890 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0223D2C4 +MOD11_0223D2C4: ; 0x0223D2C4 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + mov r4, #0 + cmp r7, #0 + ble _0223D2EC +_0223D2D6: + ldr r3, _0223D2FC ; =0x0000219C + add r6, r5, r4 + ldrb r3, [r6, r3] + ldr r0, [sp] + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_02242B78 + add r4, r4, #1 + cmp r4, r7 + blt _0223D2D6 +_0223D2EC: + ldr r0, _0223D300 ; =0x00002E4C + ldr r1, [r5, r0] + ldr r0, _0223D304 ; =0x00003122 + strh r1, [r5, r0] + mov r0, #1 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D2FC: .word 0x0000219C +_0223D300: .word 0x00002E4C +_0223D304: .word 0x00003122 + + thumb_func_start MOD11_0223D308 +MOD11_0223D308: ; 0x0223D308 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #2 + str r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start MOD11_0223D320 +MOD11_0223D320: ; 0x0223D320 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_0224529C + cmp r0, #0 + beq _0223D342 + add r0, r4, #0 + mov r1, #1 + mov r2, #0x29 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #3 + str r0, [r4, #0xc] + b _0223D346 +_0223D342: + mov r0, #3 + str r0, [r4, #8] +_0223D346: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224728C + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0223D350 +MOD11_0223D350: ; 0x0223D350 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_022476DC + add r2, r0, #0 + beq _0223D370 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223D370: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224728C + mov r0, #4 + str r0, [r4, #8] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223D380 +MOD11_0223D380: ; 0x0223D380 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r4, r1, #0 + bl MOD11_0222FF84 + add r5, r0, #0 + mov r3, #0 + cmp r5, #0 + ble _0223D3AA + mov r7, #0xb7 + lsl r7, r7, #6 + add r6, r4, #0 + add r2, r3, #0 + add r0, r7, #4 +_0223D39C: + strb r2, [r4, r3] + ldr r1, [r6, r7] + add r3, r3, #1 + str r1, [r6, r0] + add r6, #0xc0 + cmp r3, r5 + blt _0223D39C +_0223D3AA: + ldr r0, [sp] + mov r1, #0 + bl MOD11_022312AC + mov r0, #5 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0223D3B8 +MOD11_0223D3B8: ; 0x0223D3B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xb8 + add r7, r0, #0 + add r6, r1, #0 + bl MOD11_0222FF84 + str r0, [sp, #0x64] + add r0, r7, #0 + bl MOD11_0222FF74 + str r0, [sp, #0x24] + mov r4, #0 + ldr r0, [sp, #0x64] + str r4, [sp, #0x60] + cmp r0, #0 + bgt _0223D3DA + b _0223DB58 +_0223D3DA: + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r6, r0 + str r0, [sp, #0x50] + ldr r0, _0223D710 ; =0x000021AC + mov r1, #2 + add r0, r6, r0 + str r0, [sp, #0x40] + mov r0, #0x23 + lsl r0, r0, #8 + add r0, r6, r0 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x24] + str r6, [sp, #0x54] + and r0, r1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x24] + mov r1, #8 + and r0, r1 + str r0, [sp, #0x34] + ldr r0, [sp, #0x24] + lsl r1, r1, #6 + and r0, r1 + str r0, [sp, #0x30] + ldr r0, [sp, #0x24] + mov r1, #0x20 + and r0, r1 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + mov r1, #4 + and r0, r1 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + mov r1, #0x80 + and r0, r1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + mov r1, #1 + and r0, r1 + str r6, [sp, #0x4c] + str r6, [sp, #0x48] + str r6, [sp, #0x44] + str r0, [sp, #0x1c] +_0223D430: + ldrb r0, [r6, r4] + add r5, r6, r4 + cmp r0, #0x10 + bhi _0223D50A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223D444: ; jump table + .short _0223D466 - _0223D444 - 2 ; case 0 + .short _0223D4DA - _0223D444 - 2 ; case 1 + .short _0223D6EE - _0223D444 - 2 ; case 2 + .short _0223D6FC - _0223D444 - 2 ; case 3 + .short _0223D7DA - _0223D444 - 2 ; case 4 + .short _0223D814 - _0223D444 - 2 ; case 5 + .short _0223D848 - _0223D444 - 2 ; case 6 + .short _0223D856 - _0223D444 - 2 ; case 7 + .short _0223D884 - _0223D444 - 2 ; case 8 + .short _0223D8FC - _0223D444 - 2 ; case 9 + .short _0223D93C - _0223D444 - 2 ; case 10 + .short _0223D9F8 - _0223D444 - 2 ; case 11 + .short _0223DA46 - _0223D444 - 2 ; case 12 + .short _0223DA94 - _0223D444 - 2 ; case 13 + .short _0223DA9C - _0223D444 - 2 ; case 14 + .short _0223DAB6 - _0223D444 - 2 ; case 15 + .short _0223DB14 - _0223D444 - 2 ; case 16 +_0223D466: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _0223D486 + ldr r0, [sp, #0x34] + cmp r0, #0 + bne _0223D486 + cmp r4, #2 + bne _0223D47C + ldrb r0, [r6] + cmp r0, #0xd + bne _0223D50A +_0223D47C: + cmp r4, #3 + bne _0223D486 + ldrb r0, [r6, #1] + cmp r0, #0xd + bne _0223D50A +_0223D486: + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, _0223D714 ; =0x00003108 + ldrb r1, [r6, r1] + tst r0, r1 + beq _0223D4A2 + mov r0, #0xc + strb r0, [r5] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x27 + str r2, [r0, r1] + b _0223DB20 +_0223D4A2: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD04 + cmp r0, #0 + bne _0223D4C8 + ldr r0, [sp, #0x50] + mov r2, #0xd + ldr r1, [r0] + mov r0, #2 + orr r1, r0 + ldr r0, [sp, #0x50] + str r1, [r0] + mov r0, #0xc + strb r0, [r5] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + str r2, [r0, r1] + b _0223DB20 +_0223D4C8: + ldr r3, _0223D71C ; =0x0000219C + add r0, r7, #0 + ldrb r3, [r5, r3] + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02255188 + mov r0, #1 + strb r0, [r5] +_0223D4DA: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223D50A + mov r1, #0x23 + ldr r0, [sp, #0x4c] + lsl r1, r1, #8 + ldrb r2, [r0, r1] + ldr r1, _0223D720 ; =0x000021B4 + ldr r0, [sp, #0x54] + str r2, [r0, r1] + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _0223D52E + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #1 + beq _0223D50C + cmp r0, #4 + beq _0223D51E +_0223D50A: + b _0223DB20 +_0223D50C: + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xc + strb r0, [r5, #4] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x11 + str r2, [r0, r1] + b _0223DB20 +_0223D51E: + mov r0, #0x10 + strb r0, [r5] + mov r1, #0xc + strb r1, [r5, #4] + ldr r2, _0223D718 ; =0x000021A8 + ldr r1, [sp, #0x54] + str r0, [r1, r2] + b _0223DB20 +_0223D52E: + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _0223D5B0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #5 + bhi _0223D5DA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223D54C: ; jump table + .short _0223DB20 - _0223D54C - 2 ; case 0 + .short _0223D558 - _0223D54C - 2 ; case 1 + .short _0223D56A - _0223D54C - 2 ; case 2 + .short _0223D57C - _0223D54C - 2 ; case 3 + .short _0223D58E - _0223D54C - 2 ; case 4 + .short _0223D59E - _0223D54C - 2 ; case 5 +_0223D558: + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xc + strb r0, [r5, #4] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x11 + str r2, [r0, r1] + b _0223DB20 +_0223D56A: + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xc + strb r0, [r5, #4] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x12 + str r2, [r0, r1] + b _0223DB20 +_0223D57C: + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xc + strb r0, [r5, #4] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x13 + str r2, [r0, r1] + b _0223DB20 +_0223D58E: + mov r0, #0x10 + strb r0, [r5] + mov r1, #0xc + strb r1, [r5, #4] + ldr r2, _0223D718 ; =0x000021A8 + ldr r1, [sp, #0x54] + str r0, [r1, r2] + b _0223DB20 +_0223D59E: + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xc + strb r0, [r5] + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x14 + str r2, [r0, r1] + b _0223DB20 +_0223D5B0: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #4 + bgt _0223D5D6 + cmp r0, #0 + blt _0223D5DA + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D5CC: ; jump table + .short _0223DB20 - _0223D5CC - 2 ; case 0 + .short _0223D5DC - _0223D5CC - 2 ; case 1 + .short _0223D63C - _0223D5CC - 2 ; case 2 + .short _0223D698 - _0223D5CC - 2 ; case 3 + .short _0223D6A6 - _0223D5CC - 2 ; case 4 +_0223D5D6: + cmp r0, #0xff + beq _0223D6B4 +_0223D5DA: + b _0223DB20 +_0223D5DC: + mov r0, #0 + mvn r0, r0 + str r0, [sp] + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD11_02245D38 + cmp r0, #0xf + bne _0223D5FC + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xf + strb r0, [r5, #4] + b _0223D632 +_0223D5FC: + ldr r3, _0223D724 ; =0x00002DEC + ldr r0, [sp, #0x48] + ldrh r0, [r0, r3] + cmp r0, #0 + beq _0223D62E + ldr r0, [sp, #0x48] + add r1, r3, #2 + ldrh r1, [r0, r1] + ldr r2, _0223D728 ; =0x000030BC + ldr r0, [sp, #0x44] + strh r1, [r0, r2] + ldr r0, [sp, #0x48] + sub r2, #8 + ldrh r1, [r0, r3] + ldr r0, [sp, #0x44] + strh r1, [r0, r2] + ldr r1, _0223D72C ; =0x000021B0 + ldr r0, [sp, #0x54] + mov r2, #0 + str r2, [r0, r1] + mov r0, #0x10 + strb r0, [r5] + mov r0, #0xc + strb r0, [r5, #4] + b _0223D632 +_0223D62E: + mov r0, #2 + strb r0, [r5] +_0223D632: + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0xd + str r2, [r0, r1] + b _0223DB20 +_0223D63C: + add r0, r7, #0 + bl MOD11_0222FF74 + mov r1, #0x84 + tst r0, r1 + beq _0223D68A + ldr r1, _0223D730 ; =0x00000251 + add r0, sp, #0x90 + strh r1, [r0, #6] + mov r1, #0 + strb r1, [r0, #5] + mov r0, sp + str r0, [sp, #0x68] + sub r0, #8 + str r0, [sp, #0x68] + add r3, r0, #0 + mov r0, #4 + add r2, sp, #0x94 + str r0, [sp, #0x6c] +_0223D662: + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #0x6c] + sub r0, r0, #1 + str r0, [sp, #0x6c] + bne _0223D662 + ldr r0, [r2] + add r1, r4, #0 + str r0, [r3] + ldr r0, [sp, #0x68] + ldmia r0!, {r2, r3} + str r0, [sp, #0x68] + add r0, r7, #0 + bl MOD11_02255FBC + mov r0, #0xe + strb r0, [r5] + mov r0, #0 + strb r0, [r5, #4] + b _0223DB20 +_0223D68A: + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0xe + str r2, [r0, r1] + mov r0, #6 + strb r0, [r5] + b _0223DB20 +_0223D698: + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0xf + str r2, [r0, r1] + mov r0, #8 + strb r0, [r5] + b _0223DB20 +_0223D6A6: + ldr r1, _0223D718 ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x10 + str r2, [r0, r1] + mov r0, #0xa + strb r0, [r5] + b _0223DB20 +_0223D6B4: + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _0223D6D4 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02256268 + mov r0, #0 + strb r0, [r5] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022302BC + mov r1, #0 + strb r1, [r6, r0] + b _0223DB20 +_0223D6D4: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _0223D740 + cmp r4, #2 + bne _0223D740 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02256268 + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #2] + b _0223DB20 +_0223D6EE: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02255544 + mov r0, #3 + strb r0, [r5] +_0223D6FC: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223D734 + mov r0, #0 + strb r0, [r5] + b _0223DB20 + nop +_0223D710: .word 0x000021AC +_0223D714: .word 0x00003108 +_0223D718: .word 0x000021A8 +_0223D71C: .word 0x0000219C +_0223D720: .word 0x000021B4 +_0223D724: .word 0x00002DEC +_0223D728: .word 0x000030BC +_0223D72C: .word 0x000021B0 +_0223D730: .word 0x00000251 +_0223D734: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + bne _0223D742 +_0223D740: + b _0223DB20 +_0223D742: + mov r1, #0x23 + ldr r0, [sp, #0x4c] + lsl r1, r1, #8 + ldrb r0, [r0, r1] + sub r3, r0, #1 + cmp r3, #4 + bne _0223D75E + ldr r1, _0223DA6C ; =0x000021A8 + ldr r0, [sp, #0x54] + mov r2, #0x10 + str r2, [r0, r1] + mov r0, #0xa + strb r0, [r5] + b _0223DB20 +_0223D75E: + add r0, sp, #0x94 + str r0, [sp] + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02245F74 + cmp r0, #0 + bne _0223D7A8 + mov r0, sp + str r0, [sp, #0x70] + sub r0, #8 + str r0, [sp, #0x70] + add r3, r0, #0 + mov r0, #4 + add r2, sp, #0x94 + str r0, [sp, #0x74] +_0223D780: + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #0x74] + sub r0, r0, #1 + str r0, [sp, #0x74] + bne _0223D780 + ldr r0, [r2] + add r1, r4, #0 + str r0, [r3] + ldr r0, [sp, #0x70] + ldmia r0!, {r2, r3} + str r0, [sp, #0x70] + add r0, r7, #0 + bl MOD11_02255FBC + mov r0, #0xe + strb r0, [r5] + mov r0, #2 + strb r0, [r5, #4] + b _0223DB20 +_0223D7A8: + mov r3, #0x23 + ldr r0, [sp, #0x4c] + lsl r3, r3, #8 + ldrb r2, [r0, r3] + ldr r1, _0223DA70 ; =0x000021B0 + ldr r0, [sp, #0x54] + str r2, [r0, r1] + ldr r0, [sp, #0x4c] + ldr r2, _0223DA74 ; =0x000030BC + ldrb r0, [r0, r3] + sub r1, r0, #1 + ldr r0, [sp, #0x44] + strh r1, [r0, r2] + ldrh r0, [r0, r2] + sub r2, #8 + lsl r1, r0, #1 + ldr r0, [sp, #0x48] + add r1, r0, r1 + ldr r0, _0223DA78 ; =0x00002D4C + ldrh r1, [r1, r0] + ldr r0, [sp, #0x44] + strh r1, [r0, r2] + mov r0, #4 + strb r0, [r5] + b _0223DB20 +_0223D7DA: + add r0, sp, #0x90 + str r0, [sp] + ldr r1, _0223DA74 ; =0x000030BC + ldr r0, [sp, #0x44] + lsl r2, r4, #0x18 + ldrh r0, [r0, r1] + ldr r3, [sp, #0x24] + add r1, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x40] + lsr r2, r2, #0x18 + str r0, [sp, #8] + add r0, r7, #0 + bl MOD11_0224235C + cmp r0, #0 + beq _0223D80E + ldr r2, [sp, #0x90] + add r0, r7, #0 + add r1, r6, #0 + add r3, r4, #0 + bl MOD11_02255600 + mov r0, #5 + strb r0, [r5] + b _0223DB20 +_0223D80E: + mov r0, #0xc + strb r0, [r5] + b _0223DB20 +_0223D814: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223D826 + mov r0, #2 + strb r0, [r5] + b _0223DB20 +_0223D826: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223D91A + mov r1, #0x23 + ldr r0, [sp, #0x4c] + lsl r1, r1, #8 + ldrb r0, [r0, r1] + ldr r1, _0223DA7C ; =0x000021AC + sub r2, r0, #1 + ldr r0, [sp, #0x54] + str r2, [r0, r1] + mov r0, #0xc + strb r0, [r5] + b _0223DB20 +_0223D848: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_0225573C + mov r0, #7 + strb r0, [r5] +_0223D856: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223D868 + mov r0, #0 + strb r0, [r5] + b _0223DB20 +_0223D868: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223D91A + ldr r0, [sp, #0x3c] + ldr r1, _0223DA70 ; =0x000021B0 + ldr r2, [r0] + ldr r0, [sp, #0x54] + str r2, [r0, r1] + mov r0, #0xc + strb r0, [r5] + b _0223DB20 +_0223D884: + mov r0, #6 + str r0, [sp, #0x58] + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02249E80 + str r0, [sp, #0x5c] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02230260 + cmp r0, #4 + beq _0223D8AC + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02230260 + cmp r0, #5 + bne _0223D8E4 +_0223D8AC: + ldr r0, [sp, #0x24] + cmp r0, #3 + beq _0223D8CA + cmp r0, #7 + beq _0223D8CA + cmp r0, #0x83 + beq _0223D8CA + cmp r0, #0x13 + bne _0223D8E4 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02230260 + cmp r0, #4 + bne _0223D8E4 +_0223D8CA: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022302BC + lsl r0, r0, #4 + add r2, r6, r0 + ldr r0, _0223DA6C ; =0x000021A8 + ldr r1, [r2, r0] + cmp r1, #0xf + bne _0223D8E4 + add r0, #8 + ldr r0, [r2, r0] + str r0, [sp, #0x58] +_0223D8E4: + ldr r0, [sp, #0x5c] + add r1, r6, #0 + str r0, [sp] + ldr r0, [sp, #0x58] + add r2, r4, #0 + str r0, [sp, #4] + add r0, r7, #0 + mov r3, #0 + bl MOD11_022558E0 + mov r0, #9 + strb r0, [r5] +_0223D8FC: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223D90E + mov r0, #0 + strb r0, [r5] + b _0223DB20 +_0223D90E: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + bne _0223D91C +_0223D91A: + b _0223DB20 +_0223D91C: + mov r3, #0x23 + ldr r0, [sp, #0x4c] + lsl r3, r3, #8 + ldrb r0, [r0, r3] + ldr r2, _0223DA70 ; =0x000021B0 + sub r1, r0, #1 + ldr r0, [sp, #0x54] + str r1, [r0, r2] + ldr r0, [sp, #0x4c] + sub r2, #0x10 + ldrb r0, [r0, r3] + sub r0, r0, #1 + strb r0, [r5, r2] + mov r0, #0xc + strb r0, [r5] + b _0223DB20 +_0223D93C: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0223D95C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r3, _0223DA80 ; =0x000003BB + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD11_02255980 + mov r0, #0xb + strb r0, [r5] + b _0223DB20 +_0223D95C: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0223D9AA + ldr r0, [sp, #0x28] + cmp r0, #0 + bne _0223D9AA + mov r1, #0 + add r0, sp, #0x90 + strb r1, [r0, #5] + ldr r1, _0223DA84 ; =0x00000319 + add r2, sp, #0x94 + strh r1, [r0, #6] + mov r0, sp + str r0, [sp, #0x78] + sub r0, #8 + str r0, [sp, #0x78] + add r3, r0, #0 + mov r0, #4 + str r0, [sp, #0x7c] +_0223D982: + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #0x7c] + sub r0, r0, #1 + str r0, [sp, #0x7c] + bne _0223D982 + ldr r0, [r2] + add r1, r4, #0 + str r0, [r3] + ldr r0, [sp, #0x78] + ldmia r0!, {r2, r3} + str r0, [sp, #0x78] + add r0, r7, #0 + bl MOD11_02255FBC + mov r0, #0xe + strb r0, [r5] + mov r0, #0 + strb r0, [r5, #4] + b _0223DB20 +_0223D9AA: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, sp, #0x94 + bl MOD11_02246ED0 + cmp r0, #0 + beq _0223D9F2 + mov r0, sp + str r0, [sp, #0x80] + sub r0, #8 + str r0, [sp, #0x80] + add r3, r0, #0 + mov r0, #4 + add r2, sp, #0x94 + str r0, [sp, #0x84] +_0223D9CA: + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #0x84] + sub r0, r0, #1 + str r0, [sp, #0x84] + bne _0223D9CA + ldr r0, [r2] + add r1, r4, #0 + str r0, [r3] + ldr r0, [sp, #0x80] + ldmia r0!, {r2, r3} + str r0, [sp, #0x80] + add r0, r7, #0 + bl MOD11_02255FBC + mov r0, #0xe + strb r0, [r5] + mov r0, #0 + strb r0, [r5, #4] + b _0223DB20 +_0223D9F2: + mov r0, #0xb + strb r0, [r5] + b _0223DB20 +_0223D9F8: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0223DA22 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223DA26 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0xff + bne _0223DA1C + mov r0, #0 + strb r0, [r5] + b _0223DA26 +_0223DA1C: + mov r0, #0xc + strb r0, [r5] + b _0223DA26 +_0223DA22: + mov r0, #0xc + strb r0, [r5] +_0223DA26: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _0223DB20 + ldr r0, [sp, #0x34] + cmp r0, #0 + bne _0223DB20 + ldrb r0, [r5] + cmp r0, #0xc + bne _0223DB20 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022302BC + mov r1, #0xc + strb r1, [r6, r0] + b _0223DB20 +_0223DA46: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02256268 + ldr r0, [sp, #0x24] + cmp r0, #7 + bne _0223DA88 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022302BC + ldrb r0, [r6, r0] + cmp r0, #0xd + bne _0223DA90 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022564CC + b _0223DA90 + .align 2, 0 +_0223DA6C: .word 0x000021A8 +_0223DA70: .word 0x000021B0 +_0223DA74: .word 0x000030BC +_0223DA78: .word 0x00002D4C +_0223DA7C: .word 0x000021AC +_0223DA80: .word 0x000003BB +_0223DA84: .word 0x00000319 +_0223DA88: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022564CC +_0223DA90: + mov r0, #0xd + strb r0, [r5] +_0223DA94: + ldr r0, [sp, #0x60] + add r0, r0, #1 + str r0, [sp, #0x60] + b _0223DB20 +_0223DA9C: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224AD90 + cmp r0, #0 + beq _0223DB20 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02243400 + ldrb r0, [r5, #4] + strb r0, [r5] + b _0223DB20 +_0223DAB6: + mov r1, #2 + add r0, sp, #0x90 + strb r1, [r0, #5] + mov r1, #0x26 + lsl r1, r1, #4 + strh r1, [r0, #6] + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0224682C + str r0, [sp, #0x98] + mov r0, sp + str r0, [sp, #0x88] + sub r0, #8 + str r0, [sp, #0x88] + add r3, r0, #0 + mov r0, #4 + add r2, sp, #0x94 + mov ip, r0 +_0223DADC: + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, ip + sub r0, r0, #1 + mov ip, r0 + bne _0223DADC + ldr r0, [r2] + add r1, r4, #0 + str r0, [r3] + ldr r0, [sp, #0x88] + ldmia r0!, {r2, r3} + str r0, [sp, #0x88] + add r0, r7, #0 + bl MOD11_02255FBC + ldr r0, [sp, #0x50] + mov r1, #1 + ldr r0, [r0] + bic r0, r1 + mov r1, #1 + orr r1, r0 + ldr r0, [sp, #0x50] + str r1, [r0] + mov r0, #0xe + strb r0, [r5] + mov r0, #0xc + strb r0, [r5, #4] + b _0223DB20 +_0223DB14: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022563B4 + ldrb r0, [r5, #4] + strb r0, [r5] +_0223DB20: + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x4c] + add r0, #0x10 + str r0, [sp, #0x54] + ldr r0, [sp, #0x50] + add r4, r4, #1 + add r0, #0x40 + str r0, [sp, #0x50] + mov r0, #1 + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [sp, #0x4c] + ldr r1, [sp, #0x48] + add r1, #0xc0 + str r1, [sp, #0x48] + ldr r1, [sp, #0x44] + add r1, r1, #2 + str r1, [sp, #0x44] + ldr r1, [sp, #0x40] + add r1, #0x10 + str r1, [sp, #0x40] + ldr r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x64] + cmp r4, r0 + bge _0223DB58 + b _0223D430 +_0223DB58: + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x64] + cmp r1, r0 + bne _0223DB96 + mov r0, #6 + str r0, [r6, #8] + ldr r0, [sp, #0x64] + mov r5, #0 + cmp r0, #0 + ble _0223DB96 + str r6, [sp, #0x8c] +_0223DB6E: + ldr r1, _0223DB9C ; =0x000021A8 + ldr r0, [sp, #0x8c] + ldr r0, [r0, r1] + cmp r0, #0xf + bne _0223DB88 + ldr r3, _0223DBA0 ; =0x000021A0 + add r4, r6, r5 + ldrb r3, [r4, r3] + add r0, r7, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD11_0224B290 +_0223DB88: + ldr r0, [sp, #0x8c] + add r5, r5, #1 + add r0, #0x10 + str r0, [sp, #0x8c] + ldr r0, [sp, #0x64] + cmp r5, r0 + blt _0223DB6E +_0223DB96: + add sp, #0xb8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DB9C: .word 0x000021A8 +_0223DBA0: .word 0x000021A0 + + thumb_func_start MOD11_0223DBA4 +MOD11_0223DBA4: ; 0x0223DBA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + add r5, r1, #0 + bl MOD11_0222FF84 + str r0, [sp, #0x14] + ldr r0, [sp, #4] + bl MOD11_0222FF74 + mov r2, #0x22 + lsl r2, r2, #4 + mov r1, #0 + tst r2, r0 + beq _0223DBDA + ldr r0, [sp, #0x14] + add r4, r1, #0 + cmp r0, #0 + ble _0223DBD8 + ldr r1, _0223DD14 ; =0x000021E8 +_0223DBCC: + add r0, r5, r4 + strb r4, [r0, r1] + ldr r0, [sp, #0x14] + add r4, r4, #1 + cmp r4, r0 + blt _0223DBCC +_0223DBD8: + b _0223DD0C +_0223DBDA: + mov r2, #4 + tst r0, r2 + beq _0223DC02 + ldr r0, [sp, #0x14] + add r4, r1, #0 + cmp r0, #0 + ble _0223DC1A + ldr r2, _0223DD18 ; =0x000021B4 + add r3, r5, #0 +_0223DBEC: + ldr r0, [r3, r2] + cmp r0, #4 + bne _0223DBF6 + mov r1, #5 + b _0223DC1A +_0223DBF6: + ldr r0, [sp, #0x14] + add r4, r4, #1 + add r3, #0x10 + cmp r4, r0 + blt _0223DBEC + b _0223DC1A +_0223DC02: + ldr r0, _0223DD18 ; =0x000021B4 + ldr r0, [r5, r0] + cmp r0, #4 + bne _0223DC0E + add r4, r1, #0 + mov r1, #5 +_0223DC0E: + ldr r0, _0223DD1C ; =0x000021D4 + ldr r0, [r5, r0] + cmp r0, #4 + bne _0223DC1A + mov r4, #2 + mov r1, #5 +_0223DC1A: + cmp r1, #5 + bne _0223DC42 + ldr r0, _0223DD14 ; =0x000021E8 + ldr r2, [sp, #0x14] + strb r4, [r5, r0] + mov r1, #1 + mov r0, #0 + cmp r2, #0 + ble _0223DD0C + ldr r3, _0223DD14 ; =0x000021E8 +_0223DC2E: + cmp r0, r4 + beq _0223DC38 + add r2, r5, r1 + strb r0, [r2, r3] + add r1, r1, #1 +_0223DC38: + ldr r2, [sp, #0x14] + add r0, r0, #1 + cmp r0, r2 + blt _0223DC2E + b _0223DD0C +_0223DC42: + ldr r0, [sp, #0x14] + mov r2, #0 + cmp r0, #0 + ble _0223DC6A + ldr r4, _0223DD14 ; =0x000021E8 + add r0, r5, #0 + add r6, r4, #0 + sub r6, #0x34 +_0223DC52: + ldr r3, [r0, r6] + sub r3, r3, #2 + cmp r3, #1 + bhi _0223DC60 + add r3, r5, r1 + strb r2, [r3, r4] + add r1, r1, #1 +_0223DC60: + ldr r3, [sp, #0x14] + add r2, r2, #1 + add r0, #0x10 + cmp r2, r3 + blt _0223DC52 +_0223DC6A: + ldr r0, [sp, #0x14] + mov r2, #0 + cmp r0, #0 + ble _0223DC94 + ldr r4, _0223DD14 ; =0x000021E8 + add r0, r5, #0 + add r6, r4, #0 + sub r6, #0x34 +_0223DC7A: + ldr r3, [r0, r6] + cmp r3, #2 + beq _0223DC8A + cmp r3, #3 + beq _0223DC8A + add r3, r5, r1 + strb r2, [r3, r4] + add r1, r1, #1 +_0223DC8A: + ldr r3, [sp, #0x14] + add r2, r2, #1 + add r0, #0x10 + cmp r2, r3 + blt _0223DC7A +_0223DC94: + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0 + ble _0223DD0C +_0223DCA2: + ldr r0, [sp, #8] + add r7, r0, #1 + ldr r0, [sp, #0x14] + cmp r7, r0 + bge _0223DD00 + ldr r0, [sp, #8] + add r0, r5, r0 + str r0, [sp, #0x10] +_0223DCB2: + ldr r1, [sp, #0x10] + ldr r0, _0223DD14 ; =0x000021E8 + ldrb r6, [r1, r0] + add r1, r5, r7 + ldrb r4, [r1, r0] + lsl r0, r6, #4 + str r1, [sp, #0xc] + add r1, r5, r0 + ldr r0, _0223DD18 ; =0x000021B4 + ldr r0, [r1, r0] + lsl r1, r4, #4 + add r2, r5, r1 + ldr r1, _0223DD18 ; =0x000021B4 + ldr r1, [r2, r1] + cmp r0, r1 + bne _0223DCF8 + cmp r0, #1 + beq _0223DCDA + mov r0, #1 + b _0223DCDC +_0223DCDA: + mov r0, #0 +_0223DCDC: + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD11_02244248 + cmp r0, #0 + beq _0223DCF8 + ldr r1, [sp, #0x10] + ldr r0, _0223DD14 ; =0x000021E8 + strb r4, [r1, r0] + ldr r1, [sp, #0xc] + strb r6, [r1, r0] +_0223DCF8: + ldr r0, [sp, #0x14] + add r7, r7, #1 + cmp r7, r0 + blt _0223DCB2 +_0223DD00: + ldr r0, [sp, #8] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [sp, #8] + cmp r1, r0 + blt _0223DCA2 +_0223DD0C: + mov r0, #7 + str r0, [r5, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223DD14: .word 0x000021E8 +_0223DD18: .word 0x000021B4 +_0223DD1C: .word 0x000021D4 + + thumb_func_start MOD11_0223DD20 +MOD11_0223DD20: ; 0x0223DD20 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + bl MOD11_0222FF84 + add r7, r0, #0 +_0223DD32: + ldr r0, [r4, #0x28] + cmp r0, #3 + bls _0223DD3A + b _0223DE4A +_0223DD3A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223DD46: ; jump table + .short _0223DD4E - _0223DD46 - 2 ; case 0 + .short _0223DDE8 - _0223DD46 - 2 ; case 1 + .short _0223DE26 - _0223DD46 - 2 ; case 2 + .short _0223DE42 - _0223DD46 - 2 ; case 3 +_0223DD4E: + ldr r0, [r4, #0x2c] + cmp r0, r7 + bge _0223DDDC + add r6, r4, #0 + add r6, #0x2c +_0223DD58: + add r1, r4, r0 + ldr r0, _0223DE60 ; =0x000021E8 + ldrb r5, [r1, r0] + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, _0223DE64 ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + ldr r0, [r6] + beq _0223DD74 + add r0, r0, #1 + str r0, [r6] + b _0223DDD6 +_0223DD74: + add r0, r0, #1 + str r0, [r6] + mov r0, #0xc0 + mul r0, r5 + add r1, r4, r0 + ldr r0, _0223DE68 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + bne _0223DDD6 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0224683C + mov r1, #0x42 + lsl r1, r1, #2 + cmp r0, r1 + bne _0223DDD6 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02247190 + cmp r0, #0 + bne _0223DDD6 + lsl r0, r5, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _0223DDD6 + ldr r0, [sp] + bl MOD11_0225679C + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xe8 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #8 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223DDD6: + ldr r0, [r4, #0x2c] + cmp r0, r7 + blt _0223DD58 +_0223DDDC: + mov r0, #0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223DE4A +_0223DDE8: + mov r6, #0 + cmp r7, #0 + ble _0223DE1E + add r5, r4, #0 +_0223DDF0: + ldr r0, _0223DE6C ; =0x00002DB0 + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #0x16 + tst r0, r1 + beq _0223DE16 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0224683C + cmp r0, #0x63 + beq _0223DE16 + ldr r0, _0223DE6C ; =0x00002DB0 + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #0x16 + and r1, r0 + ldr r0, _0223DE6C ; =0x00002DB0 + str r1, [r5, r0] +_0223DE16: + add r6, r6, #1 + add r5, #0xc0 + cmp r6, r7 + blt _0223DDF0 +_0223DE1E: + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223DE4A +_0223DE26: + mov r6, #0 + add r5, r4, #0 +_0223DE2A: + bl FUN_0201B9EC + ldr r1, _0223DE70 ; =0x0000310C + add r6, r6, #1 + strh r0, [r5, r1] + add r5, r5, #2 + cmp r6, #4 + blt _0223DE2A + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223DE4A +_0223DE42: + mov r0, #0 + str r0, [r4, #0x28] + mov r0, #2 + str r0, [sp, #4] +_0223DE4A: + ldr r0, [sp, #4] + cmp r0, #0 + bne _0223DE52 + b _0223DD32 +_0223DE52: + cmp r0, #2 + bne _0223DE5A + mov r0, #8 + str r0, [r4, #8] +_0223DE5A: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DE60: .word 0x000021E8 +_0223DE64: .word 0x00003108 +_0223DE68: .word 0x00002DAC +_0223DE6C: .word 0x00002DB0 +_0223DE70: .word 0x0000310C + + thumb_func_start MOD11_0223DE74 +MOD11_0223DE74: ; 0x0223DE74 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + bl MOD11_0222FF84 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0224728C + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, r4 + bne _0223DEA0 + add r0, r5, #0 + mov r1, #0 + add r0, #0xec + str r1, [r0] + mov r0, #9 + str r0, [r5, #8] + pop {r4, r5, r6, pc} +_0223DEA0: + add r1, r5, r0 + ldr r0, _0223DEB4 ; =0x000021E8 + ldrb r1, [r1, r0] + sub r0, #0x40 + lsl r1, r1, #4 + add r1, r5, r1 + ldr r0, [r1, r0] + str r0, [r5, #8] + pop {r4, r5, r6, pc} + nop +_0223DEB4: .word 0x000021E8 + + thumb_func_start MOD11_0223DEB8 +MOD11_0223DEB8: ; 0x0223DEB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r0, [sp] + add r4, r1, #0 + mov r5, #0 + bl MOD11_0222FF84 + str r0, [sp, #4] +_0223DEC8: + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #1 + bl MOD11_0224246C + cmp r0, #1 + beq _0223DEF2 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_02242510 + cmp r0, #1 + beq _0223DEF2 + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02241FD8 + cmp r0, #1 + bne _0223DEF4 +_0223DEF2: + b _0223E684 +_0223DEF4: + ldr r0, [r4, #0x10] + cmp r0, #0xd + bhi _0223DFCE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223DF06: ; jump table + .short _0223DF22 - _0223DF06 - 2 ; case 0 + .short _0223DFDC - _0223DF06 - 2 ; case 1 + .short _0223E086 - _0223DF06 - 2 ; case 2 + .short _0223E132 - _0223DF06 - 2 ; case 3 + .short _0223E1E0 - _0223DF06 - 2 ; case 4 + .short _0223E25C - _0223DF06 - 2 ; case 5 + .short _0223E2D8 - _0223DF06 - 2 ; case 6 + .short _0223E3A0 - _0223DF06 - 2 ; case 7 + .short _0223E430 - _0223DF06 - 2 ; case 8 + .short _0223E4C0 - _0223DF06 - 2 ; case 9 + .short _0223E554 - _0223DF06 - 2 ; case 10 + .short _0223E5EA - _0223DF06 - 2 ; case 11 + .short _0223E62C - _0223DF06 - 2 ; case 12 + .short _0223E666 - _0223DF06 - 2 ; case 13 +_0223DF22: + ldr r6, [r4, #0x14] + cmp r6, #2 + bge _0223DFCA + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #0x38] + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0x14 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0x1c] + mov r0, #0x1c + str r0, [sp, #0x18] +_0223DF40: + lsl r0, r6, #2 + mov r1, #0x6f + add r0, r4, r0 + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r1, #1 + tst r1, r2 + beq _0223DFB6 + ldr r1, [sp, #0x38] + lsl r3, r6, #3 + ldr r7, [r1, r3] + ldr r2, [sp, #0x18] + add r1, r7, #0 + str r7, [sp, #0x2c] + bic r1, r2 + str r1, [sp, #0x2c] + lsl r1, r7, #0x1b + lsr r1, r1, #0x1d + sub r1, r1, #1 + lsl r1, r1, #0x1d + lsr r2, r1, #0x1b + ldr r1, [sp, #0x2c] + orr r2, r1 + ldr r1, [sp, #0x38] + str r2, [r1, r3] + ldr r1, [r1, r3] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + bne _0223DFB6 + mov r1, #0x6f + lsl r1, r1, #2 + ldr r2, [r0, r1] + ldr r1, [sp, #0x1c] + bic r2, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r2, [r0, r1] + mov r1, #0x73 + add r0, r1, #0 + add r0, #0xb1 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x32 + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r4, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r6, #0 + bl MOD11_0224C150 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r5, #1 +_0223DFB6: + ldr r0, [sp, #8] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #8] + cmp r5, #0 + str r1, [r0] + bne _0223DFCA + ldr r6, [r4, #0x14] + cmp r6, #2 + blt _0223DF40 +_0223DFCA: + cmp r5, #0 + beq _0223DFD0 +_0223DFCE: + b _0223E668 +_0223DFD0: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223DFDC: + ldr r6, [r4, #0x14] + cmp r6, #2 + bge _0223E076 + mov r0, #0x71 + lsl r0, r0, #2 + add r7, r4, r0 + add r0, r4, #0 + str r0, [sp, #0xc] + add r0, #0x14 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x20] +_0223DFF4: + lsl r0, r6, #2 + add r3, r4, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r3, r0] + mov r0, #2 + tst r0, r1 + beq _0223E062 + lsl r2, r6, #3 + ldr r1, [r7, r2] + ldr r0, _0223E340 ; =0xFFFFFC7F + and r0, r1 + str r0, [sp, #0x30] + lsl r0, r1, #0x16 + lsr r0, r0, #0x1d + sub r0, r0, #1 + lsl r0, r0, #0x1d + lsr r1, r0, #0x16 + ldr r0, [sp, #0x30] + orr r0, r1 + str r0, [r7, r2] + ldr r0, [r7, r2] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1d + bne _0223E062 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r3, r0] + ldr r1, [sp, #0x20] + mov r2, #0x32 + bic r0, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r3, r1] + mov r1, #0x71 + add r0, r1, #0 + add r0, #0xb3 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r4, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r6, #0 + bl MOD11_0224C150 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r5, #1 +_0223E062: + ldr r0, [sp, #0xc] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0xc] + cmp r5, #0 + str r1, [r0] + bne _0223E076 + ldr r6, [r4, #0x14] + cmp r6, #2 + blt _0223DFF4 +_0223E076: + cmp r5, #0 + bne _0223E124 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223E086: + ldr r6, [r4, #0x14] + cmp r6, #2 + bge _0223E120 + mov r0, #0x71 + lsl r0, r0, #2 + add r7, r4, r0 + add r0, r4, #0 + str r0, [sp, #0x10] + add r0, #0x14 + str r0, [sp, #0x10] + mov r0, #0x40 + str r0, [sp, #0x24] +_0223E09E: + lsl r0, r6, #2 + add r3, r4, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r3, r0] + mov r0, #0x40 + tst r0, r1 + beq _0223E10C + lsl r2, r6, #3 + ldr r1, [r7, r2] + ldr r0, _0223E344 ; =0xFFFF8FFF + and r0, r1 + str r0, [sp, #0x34] + lsl r0, r1, #0x11 + lsr r0, r0, #0x1d + sub r0, r0, #1 + lsl r0, r0, #0x1d + lsr r1, r0, #0x11 + ldr r0, [sp, #0x34] + orr r0, r1 + str r0, [r7, r2] + ldr r0, [r7, r2] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1d + bne _0223E10C + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r3, r0] + ldr r1, [sp, #0x24] + mov r2, #0x32 + bic r0, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r3, r1] + mov r1, #0x36 + add r0, r1, #0 + add r0, #0xee + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r4, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r6, #0 + bl MOD11_0224C150 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r5, #1 +_0223E10C: + ldr r0, [sp, #0x10] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x10] + cmp r5, #0 + str r1, [r0] + bne _0223E120 + ldr r6, [r4, #0x14] + cmp r6, #2 + blt _0223E09E +_0223E120: + cmp r5, #0 + beq _0223E126 +_0223E124: + b _0223E668 +_0223E126: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223E132: + ldr r7, [r4, #0x14] + cmp r7, #2 + bge _0223E1D0 + mov r0, #0x71 + lsl r0, r0, #2 + add r6, r4, r0 + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + mov r0, #8 + str r0, [sp, #0x28] +_0223E14A: + lsl r0, r7, #2 + add r3, r4, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r3, r0] + mov r0, #8 + tst r0, r1 + beq _0223E1BC + lsl r0, r7, #3 + ldr r2, [r6, r0] + ldr r1, _0223E348 ; =0xFFF1FFFF + and r1, r2 + mov ip, r1 + lsl r1, r2, #0xc + lsr r1, r1, #0x1d + sub r1, r1, #1 + lsl r1, r1, #0x1d + lsr r2, r1, #0xc + mov r1, ip + orr r1, r2 + str r1, [r6, r0] + ldr r1, [r6, r0] + lsl r1, r1, #0xc + lsr r1, r1, #0x1d + bne _0223E1BC + mov r1, #0x6f + lsl r1, r1, #2 + ldr r1, [r3, r1] + ldr r2, [sp, #0x28] + bic r1, r2 + mov r2, #0x6f + lsl r2, r2, #2 + str r1, [r3, r2] + ldr r0, [r6, r0] + lsl r0, r0, #0xf + lsr r1, r0, #0x1e + add r0, r2, #0 + sub r0, #0xa4 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x6e + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r4, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r7, #0 + bl MOD11_0224C150 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r5, #1 +_0223E1BC: + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + cmp r5, #0 + str r1, [r0] + bne _0223E1D0 + ldr r7, [r4, #0x14] + cmp r7, #2 + blt _0223E14A +_0223E1D0: + cmp r5, #0 + bne _0223E24E + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223E1E0: + ldr r6, [r4, #0x14] + cmp r6, #2 + bge _0223E24A + add r7, r4, #0 + add r7, #0x14 +_0223E1EA: + lsl r0, r6, #2 + mov r1, #0x6f + add r0, r4, r0 + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r1, #3 + lsl r1, r1, #8 + tst r1, r2 + beq _0223E23A + mov r1, #0x6f + lsl r1, r1, #2 + ldr r2, [r0, r1] + sub r1, #0xbc + sub r2, r2, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r2, [r0, r1] + ldr r1, [r0, r1] + mov r0, #3 + lsl r0, r0, #8 + tst r0, r1 + bne _0223E23A + add r0, r4, #0 + mov r1, #1 + mov r2, #0xe9 + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r4, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r6, #0 + bl MOD11_0224C150 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r5, #1 +_0223E23A: + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + cmp r5, #0 + bne _0223E24A + ldr r6, [r4, #0x14] + cmp r6, #2 + blt _0223E1EA +_0223E24A: + cmp r5, #0 + beq _0223E250 +_0223E24E: + b _0223E668 +_0223E250: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223E25C: + ldr r6, [r4, #0x14] + cmp r6, #2 + bge _0223E2C8 + add r7, r4, #0 + add r7, #0x14 +_0223E266: + lsl r0, r6, #2 + mov r1, #0x6f + add r0, r4, r0 + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r1, #7 + lsl r1, r1, #0xc + tst r1, r2 + beq _0223E2B8 + mov r1, #0x6f + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r1, #1 + lsl r1, r1, #0xc + sub r2, r2, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r2, [r0, r1] + ldr r1, [r0, r1] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r1 + bne _0223E2B8 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xfa + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r4, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r0, [sp] + add r2, r6, #0 + bl MOD11_0224C150 + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r5, #1 +_0223E2B8: + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + cmp r5, #0 + bne _0223E2C8 + ldr r6, [r4, #0x14] + cmp r6, #2 + blt _0223E266 +_0223E2C8: + cmp r5, #0 + bne _0223E392 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223E2D8: + ldr r0, [r4, #0x14] + ldr r1, [sp, #4] + cmp r0, r1 + bge _0223E38E + add r6, r4, #0 + mov r7, #2 + add r6, #0x14 +_0223E2E6: + add r1, r4, r0 + ldr r0, _0223E34C ; =0x000021EC + ldrb r2, [r1, r0] + mov r0, #0x63 + lsl r0, r0, #2 + add r1, r4, r2 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223E37C + mov r0, #0x63 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + sub r3, r0, #1 + mov r0, #0x63 + lsl r0, r0, #2 + strb r3, [r1, r0] + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223E37C + mov r0, #0xc0 + mul r0, r2 + ldr r3, _0223E350 ; =0x00002D8C + add r0, r4, r0 + ldr r3, [r0, r3] + cmp r3, #0 + beq _0223E37C + mov r3, #0x46 + lsl r3, r3, #2 + str r2, [r4, r3] + add r3, r4, #0 + add r3, #0xf5 + strb r7, [r3] + add r5, r4, #0 + ldr r3, _0223E354 ; =0x00000215 + add r5, #0xf6 + strh r3, [r5] + sub r3, #0x5d + ldrb r1, [r1, r3] + lsl r1, r1, #8 + orr r2, r1 + add r1, r4, #0 + add r1, #0xf8 + str r2, [r1] + ldr r1, _0223E358 ; =0x00002D90 + b _0223E35C + .align 2, 0 +_0223E340: .word 0xFFFFFC7F +_0223E344: .word 0xFFFF8FFF +_0223E348: .word 0xFFF1FFFF +_0223E34C: .word 0x000021EC +_0223E350: .word 0x00002D8C +_0223E354: .word 0x00000215 +_0223E358: .word 0x00002D90 +_0223E35C: + ldr r0, [r0, r1] + add r1, r7, #0 + bl MOD11_022476C0 + ldr r1, _0223E688 ; =0x0000215C + mov r2, #0x88 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r5, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223E37C: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + cmp r5, #0 + bne _0223E38E + ldr r0, [r4, #0x14] + ldr r1, [sp, #4] + cmp r0, r1 + blt _0223E2E6 +_0223E38E: + cmp r5, #0 + beq _0223E394 +_0223E392: + b _0223E668 +_0223E394: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + b _0223E668 +_0223E3A0: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r2, #3 + tst r2, r1 + beq _0223E428 + mov r2, #2 + tst r1, r2 + beq _0223E3D6 + add r0, r4, #0 + ldr r1, _0223E68C ; =0x00000321 + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E41E +_0223E3D6: + add r1, r0, #4 + ldr r1, [r4, r1] + sub r2, r1, #1 + add r1, r0, #4 + str r2, [r4, r1] + add r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0223E3FC + add r0, r4, #0 + mov r1, #1 + mov r2, #0xea + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E41E +_0223E3FC: + add r0, r4, #0 + ldr r1, _0223E68C ; =0x00000321 + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223E41E: + mov r0, #0x4e + mov r1, #0x13 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r5, #1 +_0223E428: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0223E668 +_0223E430: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r2, #0xc + tst r2, r1 + beq _0223E4B8 + mov r2, #8 + tst r1, r2 + beq _0223E466 + add r0, r4, #0 + ldr r1, _0223E690 ; =0x00000325 + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E4AE +_0223E466: + add r1, r0, #4 + ldr r1, [r4, r1] + sub r2, r1, #1 + add r1, r0, #4 + str r2, [r4, r1] + add r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0223E48C + add r0, r4, #0 + mov r1, #1 + mov r2, #0xeb + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E4AE +_0223E48C: + add r0, r4, #0 + ldr r1, _0223E690 ; =0x00000325 + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223E4AE: + mov r0, #0x4e + mov r1, #0x15 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r5, #1 +_0223E4B8: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0223E668 +_0223E4C0: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r2, #0x30 + tst r2, r1 + beq _0223E54C + mov r2, #0x20 + tst r1, r2 + beq _0223E4F8 + mov r1, #0xca + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E542 +_0223E4F8: + add r1, r0, #4 + ldr r1, [r4, r1] + sub r2, r1, #1 + add r1, r0, #4 + str r2, [r4, r1] + add r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0223E51E + add r0, r4, #0 + mov r1, #1 + mov r2, #0xec + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E542 +_0223E51E: + mov r1, #0xca + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223E542: + mov r0, #0x4e + mov r1, #0x16 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r5, #1 +_0223E54C: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0223E668 +_0223E554: + mov r0, #6 + lsl r0, r0, #6 + ldr r2, [r4, r0] + mov r1, #0xc0 + add r0, r2, #0 + tst r0, r1 + beq _0223E5E2 + mov r0, #0x80 + tst r0, r2 + beq _0223E58C + add r0, r4, #0 + ldr r1, _0223E694 ; =0x0000032B + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E5D8 +_0223E58C: + add r0, r1, #0 + add r0, #0xc4 + ldr r0, [r4, r0] + sub r2, r0, #1 + add r0, r1, #0 + add r0, #0xc4 + add r1, #0xc4 + str r2, [r4, r0] + ldr r0, [r4, r1] + cmp r0, #0 + bne _0223E5B6 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xed + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223E5D8 +_0223E5B6: + add r0, r4, #0 + ldr r1, _0223E694 ; =0x0000032B + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223E5D8: + mov r0, #0x4e + mov r1, #0x14 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r5, #1 +_0223E5E2: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0223E668 +_0223E5EA: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r1 + beq _0223E624 + add r0, r4, #0 + ldr r1, _0223E698 ; =0x0000032D + add r0, #0xf6 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x68 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r1, #0x12 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x4e + lsl r0, r0, #2 + str r1, [r4, r0] + mov r5, #1 +_0223E624: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0223E668 +_0223E62C: + mov r1, #6 + lsl r1, r1, #6 + ldr r3, [r4, r1] + mov r2, #7 + lsl r2, r2, #0xc + add r0, r3, #0 + tst r0, r2 + beq _0223E65E + mov r0, #1 + lsl r0, r0, #0xc + sub r0, r3, r0 + str r0, [r4, r1] + ldr r0, [r4, r1] + tst r0, r2 + bne _0223E65E + add r0, r4, #0 + mov r1, #1 + mov r2, #0xee + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r5, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223E65E: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0223E668 +_0223E666: + mov r5, #2 +_0223E668: + cmp r5, #0 + bne _0223E66E + b _0223DEC8 +_0223E66E: + cmp r5, #1 + bne _0223E678 + ldr r0, [sp] + bl MOD11_0225679C +_0223E678: + cmp r5, #2 + bne _0223E684 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #0xa + str r0, [r4, #8] +_0223E684: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223E688: .word 0x0000215C +_0223E68C: .word 0x00000321 +_0223E690: .word 0x00000325 +_0223E694: .word 0x0000032B +_0223E698: .word 0x0000032D + + thumb_func_start MOD11_0223E69C +MOD11_0223E69C: ; 0x0223E69C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + mov r1, #0 + str r1, [sp, #0x10] + str r0, [sp, #4] + bl MOD11_0222FF84 + ldr r1, [r4, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #1 + bl MOD11_0224246C + cmp r0, #1 + beq _0223E6D8 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_02242510 + cmp r0, #1 + beq _0223E6D8 + ldr r0, [sp, #4] + add r1, r4, #0 + bl MOD11_02241FD8 + cmp r0, #1 + bne _0223E6DC +_0223E6D8: + bl _0223F0B2 +_0223E6DC: + ldr r1, [r4, #0x1c] + ldr r0, [sp, #0xc] + cmp r1, r0 + blt _0223E6E8 + bl _0223F0A8 +_0223E6E8: + ldr r0, _0223EA14 ; =0x000021EC + add r1, r4, r1 + ldrb r5, [r1, r0] + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, _0223EA18 ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + beq _0223E706 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + bl _0223F09C +_0223E706: + ldr r0, [r4, #0x18] + cmp r0, #0x1a + bls _0223E710 + bl _0223F08C +_0223E710: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223E71C: ; jump table + .short _0223E752 - _0223E71C - 2 ; case 0 + .short _0223E7BA - _0223E71C - 2 ; case 1 + .short _0223E83C - _0223E71C - 2 ; case 2 + .short _0223E856 - _0223E71C - 2 ; case 3 + .short _0223E872 - _0223E71C - 2 ; case 4 + .short _0223E88C - _0223E71C - 2 ; case 5 + .short _0223E8F6 - _0223E71C - 2 ; case 6 + .short _0223E948 - _0223E71C - 2 ; case 7 + .short _0223E9C8 - _0223E71C - 2 ; case 8 + .short _0223EA04 - _0223E71C - 2 ; case 9 + .short _0223EA72 - _0223E71C - 2 ; case 10 + .short _0223EAB0 - _0223E71C - 2 ; case 11 + .short _0223EB2A - _0223E71C - 2 ; case 12 + .short _0223EBAE - _0223E71C - 2 ; case 13 + .short _0223ECA6 - _0223E71C - 2 ; case 14 + .short _0223ED0E - _0223E71C - 2 ; case 15 + .short _0223ED90 - _0223E71C - 2 ; case 16 + .short _0223EE56 - _0223E71C - 2 ; case 17 + .short _0223EE74 - _0223E71C - 2 ; case 18 + .short _0223EEBA - _0223E71C - 2 ; case 19 + .short _0223EF06 - _0223E71C - 2 ; case 20 + .short _0223EF50 - _0223E71C - 2 ; case 21 + .short _0223EF9A - _0223E71C - 2 ; case 22 + .short _0223EFE4 - _0223E71C - 2 ; case 23 + .short _0223F034 - _0223E71C - 2 ; case 24 + .short _0223F068 - _0223E71C - 2 ; case 25 + .short _0223F082 - _0223E71C - 2 ; case 26 +_0223E752: + mov r6, #0xc0 + add r0, r5, #0 + mul r0, r6 + add r3, r4, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + mov r1, #1 + ldr r2, [r3, r0] + lsl r1, r1, #0xa + tst r1, r2 + beq _0223E7B0 + add r1, r0, #0 + sub r1, #0x34 + ldr r2, [r3, r1] + add r1, r0, #0 + sub r1, #0x30 + ldr r1, [r3, r1] + cmp r2, r1 + beq _0223E7B0 + cmp r2, #0 + beq _0223E7B0 + add r0, #0xc + ldr r0, [r3, r0] + lsl r0, r0, #0xd + lsr r0, r0, #0x1d + beq _0223E796 + add r6, #0x58 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xef + str r5, [r4, r6] + bl MOD11_022431DC + b _0223E7A4 +_0223E796: + add r6, #0x58 + add r0, r4, #0 + mov r1, #1 + mov r2, #0x89 + str r5, [r4, r6] + bl MOD11_022431DC +_0223E7A4: + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223E7B0: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + bl _0223F08C +_0223E7BA: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r6, r4, r1 + mov r1, #0xb7 + lsl r1, r1, #6 + mov r2, #1 + ldr r3, [r6, r1] + lsl r2, r2, #0x18 + tst r2, r3 + beq _0223E832 + add r2, r1, #0 + sub r2, #0x34 + ldr r3, [r6, r2] + add r2, r1, #0 + sub r2, #0x30 + ldr r2, [r6, r2] + cmp r3, r2 + beq _0223E832 + cmp r3, #0 + beq _0223E832 + add r2, r1, #0 + add r2, #0xc + ldr r2, [r6, r2] + lsl r2, r2, #0xd + lsr r2, r2, #0x1d + beq _0223E800 + add r0, #0x58 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xef + bl MOD11_022431DC + b _0223E826 +_0223E800: + add r2, r0, #0 + add r2, #0x58 + str r5, [r4, r2] + add r2, r0, #0 + add r2, #0xc8 + add r0, #0x64 + sub r1, #0x30 + str r2, [r4, r0] + ldr r0, [r6, r1] + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _0223EA1C ; =0x0000215C + mov r2, #0xa9 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC +_0223E826: + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223E832: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + bl _0223F08C +_0223E83C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_022475B8 + cmp r0, #1 + bne _0223E84C + mov r0, #1 + str r0, [sp, #0x10] +_0223E84C: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + bl _0223F08C +_0223E856: + ldr r0, [sp, #4] + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_02248C0C + cmp r0, #1 + bne _0223E868 + mov r0, #1 + str r0, [sp, #0x10] +_0223E868: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + bl _0223F08C +_0223E872: + ldr r0, [sp, #4] + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022492A4 + cmp r0, #1 + bne _0223E884 + mov r0, #1 + str r0, [sp, #0x10] +_0223E884: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223E88C: + mov r3, #0xc0 + add r0, r5, #0 + mul r0, r3 + mov r2, #0xb7 + add r6, r4, r0 + lsl r2, r2, #6 + ldr r0, [r6, r2] + mov r1, #4 + tst r1, r0 + beq _0223E8EE + mov r1, #3 + and r0, r1 + add r1, r0, #0 + mul r1, r3 + add r0, r4, r1 + sub r2, #0x34 + ldr r0, [r0, r2] + cmp r0, #0 + beq _0223E8EE + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _0223E8EE + ldr r0, _0223EA20 ; =0x00002D8C + ldr r1, [r6, r0] + cmp r1, #0 + beq _0223E8EE + add r0, #0x34 + ldr r1, [r6, r0] + mov r0, #3 + and r1, r0 + mov r0, #0x47 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x45 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223E8EE: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223E8F6: + mov r2, #0xc0 + add r0, r5, #0 + mul r0, r2 + ldr r3, _0223EA24 ; =0x00002DAC + add r0, r4, r0 + ldr r1, [r0, r3] + mov r6, #8 + tst r1, r6 + beq _0223E940 + add r1, r3, #0 + sub r1, #0x20 + ldr r1, [r0, r1] + cmp r1, #0 + beq _0223E940 + add r2, #0x58 + str r5, [r4, r2] + sub r3, #0x1c + ldr r1, [r0, r3] + add r0, r6, #0 + sub r0, #9 + mul r0, r1 + add r1, r6, #0 + bl MOD11_022476C0 + ldr r1, _0223EA1C ; =0x0000215C + mov r2, #0x17 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223E940: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223E948: + mov r0, #0xc0 + mul r0, r5 + ldr r1, _0223EA24 ; =0x00002DAC + add r6, r4, r0 + ldr r0, [r6, r1] + mov r2, #0x80 + tst r0, r2 + beq _0223E9C0 + add r0, r1, #0 + sub r0, #0x20 + ldr r0, [r6, r0] + cmp r0, #0 + beq _0223E9C0 + add r2, #0x98 + str r5, [r4, r2] + sub r1, #0x1c + ldr r0, [r6, r1] + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _0223EA1C ; =0x0000215C + str r0, [r4, r1] + ldr r1, _0223EA24 ; =0x00002DAC + mov r0, #0xf + ldr r2, [r6, r1] + lsl r0, r0, #8 + add r3, r2, #0 + and r3, r0 + cmp r3, r0 + beq _0223E98C + mov r0, #1 + lsl r0, r0, #8 + add r0, r2, r0 + str r0, [r6, r1] +_0223E98C: + ldr r2, _0223EA24 ; =0x00002DAC + ldr r0, _0223EA1C ; =0x0000215C + ldr r3, [r6, r2] + mov r2, #0xf + lsl r2, r2, #8 + and r2, r3 + ldr r1, [r4, r0] + lsr r2, r2, #8 + mul r2, r1 + str r2, [r4, r0] + mov r1, #0 + ldr r2, [r4, r0] + mvn r1, r1 + mul r1, r2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x17 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223E9C0: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223E9C8: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r6, r4, r1 + ldr r1, _0223EA24 ; =0x00002DAC + mov r2, #0x10 + ldr r3, [r6, r1] + tst r2, r3 + beq _0223E9FC + sub r1, #0x20 + ldr r1, [r6, r1] + cmp r1, #0 + beq _0223E9FC + add r0, #0x58 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1a + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223E9FC: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EA04: + mov r6, #0xc0 + add r0, r5, #0 + mul r0, r6 + add r3, r4, r0 + ldr r7, _0223EA28 ; =0x00002DB0 + ldr r0, _0223EA18 ; =0x00003108 + b _0223EA2C + nop +_0223EA14: .word 0x000021EC +_0223EA18: .word 0x00003108 +_0223EA1C: .word 0x0000215C +_0223EA20: .word 0x00002D8C +_0223EA24: .word 0x00002DAC +_0223EA28: .word 0x00002DB0 +_0223EA2C: + ldr r2, [r3, r7] + lsl r0, r0, #0x18 + tst r0, r2 + beq _0223EA6A + add r0, r7, #0 + sub r0, #0x24 + ldr r0, [r3, r0] + cmp r0, #0 + beq _0223EA6A + sub r0, r7, #4 + ldr r1, [r3, r0] + mov r0, #7 + tst r0, r1 + beq _0223EA64 + add r6, #0x58 + str r5, [r4, r6] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x5e + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] + b _0223EA6A +_0223EA64: + ldr r0, _0223ED9C ; =0xF7FFFFFF + and r0, r2 + str r0, [r3, r7] +_0223EA6A: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EA72: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r6, r4, r1 + ldr r1, _0223EDA0 ; =0x00002DB0 + mov r2, #1 + ldr r3, [r6, r1] + lsl r2, r2, #0x1c + tst r2, r3 + beq _0223EAA8 + sub r1, #0x24 + ldr r1, [r6, r1] + cmp r1, #0 + beq _0223EAA8 + add r0, #0x58 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x62 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EAA8: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EAB0: + mov r1, #0xc0 + add r0, r5, #0 + mul r0, r1 + ldr r2, _0223EDA0 ; =0x00002DB0 + add r6, r4, r0 + ldr r3, [r6, r2] + mov r7, #0xe + lsl r7, r7, #0xc + add r0, r3, #0 + tst r0, r7 + beq _0223EB22 + add r0, r2, #0 + sub r0, #0x24 + ldr r0, [r6, r0] + cmp r0, #0 + beq _0223EB22 + mov r0, #2 + lsl r0, r0, #0xc + sub r0, r3, r0 + str r0, [r6, r2] + ldr r0, [r6, r2] + tst r0, r7 + beq _0223EAFE + sub r2, #0x20 + ldr r2, [r6, r2] + sub r1, #0xc1 + add r0, r2, #0 + mul r0, r1 + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _0223EDA4 ; =0x0000215C + mov r2, #0x3b + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + b _0223EB08 +_0223EAFE: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x3c + bl MOD11_022431DC +_0223EB08: + ldr r0, _0223EDA8 ; =0x00002DEA + ldrh r1, [r6, r0] + mov r0, #0x49 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0xc + str r5, [r4, r0] + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EB22: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EB2A: + mov r0, #0x7b + str r0, [sp] + ldr r0, [sp, #4] + add r1, r4, #0 + mov r2, #4 + add r3, r5, #0 + bl MOD11_02246870 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc0 + mul r0, r5 + add r6, r4, r0 + ldr r0, _0223EDAC ; =0x00002DAC + ldr r1, [r6, r0] + mov r0, #7 + tst r0, r1 + beq _0223EBA6 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _0223EBA6 + ldr r1, _0223EDB0 ; =0x00002D8C + ldr r0, [r6, r1] + cmp r0, #0 + beq _0223EBA6 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223EBA6 + add r0, r1, #4 + ldr r1, [r6, r0] + mov r0, #0 + mvn r0, r0 + mul r0, r1 + mov r1, #8 + bl MOD11_022476C0 + ldr r1, _0223EDA4 ; =0x0000215C + ldr r2, _0223EDB4 ; =0x00000107 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, _0223EDB8 ; =0x0000213C + mov r1, #0x40 + ldr r2, [r4, r0] + orr r2, r1 + str r2, [r4, r0] + add r1, #0xd8 + str r5, [r4, r1] + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EBA6: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EBAE: + mov r0, #0xc0 + mul r0, r5 + add r7, r4, r0 + ldr r0, _0223EDA0 ; =0x00002DB0 + ldr r1, [r7, r0] + mov r0, #0x70 + tst r0, r1 + beq _0223EC96 + ldr r0, [sp, #0xc] + mov r6, #0 + cmp r0, #0 + ble _0223EC08 +_0223EBC6: + mov r0, #0xc0 + mul r0, r6 + add r1, r4, r0 + ldr r0, _0223EDAC ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0223EBFC + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x2b + beq _0223EBFC + mov r0, #0x46 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x13 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223EC08 +_0223EBFC: + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [sp, #0xc] + cmp r6, r0 + blt _0223EBC6 +_0223EC08: + ldr r0, [sp, #0xc] + cmp r6, r0 + beq _0223EC14 + mov r0, #2 + str r0, [sp, #0x10] + b _0223F08C +_0223EC14: + ldr r0, _0223EDA0 ; =0x00002DB0 + ldr r1, [r7, r0] + sub r1, #0x10 + str r1, [r7, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246764 + cmp r0, #0 + ldr r2, _0223EDA0 ; =0x00002DB0 + beq _0223EC4E + ldr r1, [r7, r2] + mov r0, #0x70 + bic r1, r0 + mov r6, #0xf1 + add r0, r5, #0 + str r1, [r7, r2] + bl FUN_0206A92C + add r3, r6, #0 + add r3, #0x8f + lsl r2, r0, #8 + add r0, r6, #0 + sub r0, #0xf2 + ldr r1, [r4, r3] + eor r0, r2 + and r0, r1 + str r0, [r4, r3] + b _0223EC7A +_0223EC4E: + ldr r1, [r7, r2] + mov r0, #0x70 + tst r0, r1 + beq _0223EC5A + mov r6, #0xf0 + b _0223EC7A +_0223EC5A: + mov r0, #0x70 + bic r1, r0 + mov r6, #0xf1 + add r0, r5, #0 + str r1, [r7, r2] + bl FUN_0206A92C + add r3, r6, #0 + add r3, #0x8f + lsl r2, r0, #8 + add r0, r6, #0 + sub r0, #0xf2 + ldr r1, [r4, r3] + eor r0, r2 + and r0, r1 + str r0, [r4, r3] +_0223EC7A: + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + add r2, r6, #0 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EC96: + ldr r0, [sp, #0x10] + cmp r0, #2 + bne _0223EC9E + b _0223F08C +_0223EC9E: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223ECA6: + mov r2, #0xc0 + add r0, r5, #0 + mul r0, r2 + add r6, r4, r0 + ldr r0, _0223EDA0 ; =0x00002DB0 + lsl r2, r2, #4 + ldr r1, [r6, r0] + tst r2, r1 + beq _0223ED06 + mov r2, #1 + lsl r2, r2, #0xa + sub r1, r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246764 + cmp r0, #0 + beq _0223ECD8 + ldr r1, _0223EDA0 ; =0x00002DB0 + ldr r0, _0223EDBC ; =0xFFFFF3FF + ldr r2, [r6, r1] + and r0, r2 + str r0, [r6, r1] + b _0223ED06 +_0223ECD8: + ldr r0, _0223EDA0 ; =0x00002DB0 + ldr r1, [r6, r0] + mov r0, #3 + lsl r0, r0, #0xa + tst r0, r1 + bne _0223ED06 + mov r0, #7 + tst r0, r1 + bne _0223ED06 + add r0, r4, #0 + add r0, #0x94 + str r5, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x33 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223ED06: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223ED0E: + mov r0, #0xc0 + add r6, r5, #0 + mul r6, r0 + add r0, r4, r6 + ldr r1, _0223EDC0 ; =0x00002DE8 + mov ip, r0 + ldrh r3, [r0, r1] + cmp r3, #0 + beq _0223ED88 + ldr r7, _0223EDC4 ; =0x00002D4C + mov r2, #0 + mov r1, ip +_0223ED26: + ldrh r0, [r1, r7] + cmp r3, r0 + beq _0223ED34 + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #4 + blt _0223ED26 +_0223ED34: + cmp r2, #4 + bne _0223ED44 + ldr r0, _0223EDC8 ; =0x00002DC8 + add r1, r4, r0 + ldr r2, [r1, r6] + mov r0, #7 + bic r2, r0 + str r2, [r1, r6] +_0223ED44: + ldr r1, _0223EDC8 ; =0x00002DC8 + add r0, r4, r6 + ldr r0, [r0, r1] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + beq _0223ED64 + add r2, r4, r1 + ldr r1, [r2, r6] + mov r3, #7 + bic r1, r3 + sub r3, r0, #1 + mov r0, #7 + and r0, r3 + orr r0, r1 + str r0, [r2, r6] + b _0223ED88 +_0223ED64: + mov r2, #0 + add r1, #0x20 + mov r0, ip + strh r2, [r0, r1] + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x48 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223ED88: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223ED90: + mov r0, #0xc0 + add r6, r5, #0 + mul r6, r0 + add r0, r4, r6 + ldr r1, _0223EDCC ; =0x00002DEC + b _0223EDD0 + .align 2, 0 +_0223ED9C: .word 0xF7FFFFFF +_0223EDA0: .word 0x00002DB0 +_0223EDA4: .word 0x0000215C +_0223EDA8: .word 0x00002DEA +_0223EDAC: .word 0x00002DAC +_0223EDB0: .word 0x00002D8C +_0223EDB4: .word 0x00000107 +_0223EDB8: .word 0x0000213C +_0223EDBC: .word 0xFFFFF3FF +_0223EDC0: .word 0x00002DE8 +_0223EDC4: .word 0x00002D4C +_0223EDC8: .word 0x00002DC8 +_0223EDCC: .word 0x00002DEC +_0223EDD0: + str r0, [sp, #8] + ldrh r2, [r0, r1] + cmp r2, #0 + beq _0223EE4E + ldr r7, _0223F0B8 ; =0x00002D4C + mov r3, #0 + add r1, r0, #0 +_0223EDDE: + ldrh r0, [r1, r7] + cmp r2, r0 + beq _0223EDEC + add r3, r3, #1 + add r1, r1, #2 + cmp r3, #4 + blt _0223EDDE +_0223EDEC: + cmp r3, #4 + beq _0223EDFE + beq _0223EE0A + ldr r0, [sp, #8] + add r1, r0, r3 + ldr r0, _0223F0BC ; =0x00002D6C + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223EE0A +_0223EDFE: + ldr r0, _0223F0C0 ; =0x00002DC8 + add r2, r4, r0 + ldr r1, [r2, r6] + mov r0, #0x38 + bic r1, r0 + str r1, [r2, r6] +_0223EE0A: + ldr r1, _0223F0C0 ; =0x00002DC8 + add r0, r4, r6 + ldr r0, [r0, r1] + lsl r0, r0, #0x1a + lsr r2, r0, #0x1d + beq _0223EE2A + add r1, r4, r1 + sub r2, r2, #1 + lsl r2, r2, #0x1d + ldr r0, [r1, r6] + mov r3, #0x38 + bic r0, r3 + lsr r2, r2, #0x1a + orr r0, r2 + str r0, [r1, r6] + b _0223EE4E +_0223EE2A: + ldr r0, [sp, #8] + mov r2, #0 + add r1, #0x24 + strh r2, [r0, r1] + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x4a + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EE4E: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EE56: + mov r0, #0xc0 + mul r0, r5 + add r3, r4, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r2, [r3, r0] + mov r1, #0x18 + tst r1, r2 + beq _0223EE6C + sub r2, #8 + str r2, [r3, r0] +_0223EE6C: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EE74: + mov r0, #0xc0 + mul r0, r5 + ldr r2, _0223F0C0 ; =0x00002DC8 + add r5, r4, r0 + ldr r1, [r5, r2] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1e + beq _0223EEB2 + add r3, r4, r2 + ldr r6, [r3, r0] + mov r1, #0xc0 + add r7, r6, #0 + bic r7, r1 + lsl r1, r6, #0x18 + lsr r1, r1, #0x1e + sub r1, r1, #1 + lsl r1, r1, #0x1e + lsr r1, r1, #0x18 + orr r1, r7 + str r1, [r3, r0] + ldr r0, [r3, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + bne _0223EEB2 + add r0, r2, #0 + sub r0, #8 + ldr r1, [r5, r0] + ldr r0, _0223F0C4 ; =0xFFFFFDFF + sub r2, #8 + and r0, r1 + str r0, [r5, r2] +_0223EEB2: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EEBA: + ldr r0, _0223F0C0 ; =0x00002DC8 + mov r2, #0xc0 + add r3, r5, #0 + mul r3, r2 + add r1, r4, r0 + ldr r7, [r1, r3] + lsl r0, r7, #0x15 + lsr r6, r0, #0x1d + beq _0223EEFE + ldr r0, _0223F0C8 ; =0xFFFFF8FF + and r7, r0 + sub r0, r6, #1 + lsl r0, r0, #0x1d + lsr r0, r0, #0x15 + orr r0, r7 + str r0, [r1, r3] + ldr r0, [r1, r3] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + bne _0223EEFE + add r0, r2, #0 + add r0, #0x58 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + add r2, #0x60 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EEFE: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EF06: + ldr r0, _0223F0CC ; =0x00002DCC + mov r1, #0xc0 + add r3, r5, #0 + mul r3, r1 + add r2, r4, r0 + ldr r7, [r2, r3] + lsl r0, r7, #0x10 + lsr r6, r0, #0x1d + beq _0223EF48 + ldr r0, _0223F0D0 ; =0xFFFF1FFF + and r7, r0 + sub r0, r6, #1 + lsl r0, r0, #0x1d + lsr r0, r0, #0x10 + orr r0, r7 + str r0, [r2, r3] + ldr r0, [r2, r3] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1d + bne _0223EF48 + add r1, #0x58 + str r5, [r4, r1] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xf2 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EF48: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EF50: + ldr r0, _0223F0CC ; =0x00002DCC + mov r1, #0xc0 + add r3, r5, #0 + mul r3, r1 + add r2, r4, r0 + ldr r7, [r2, r3] + lsl r0, r7, #0xd + lsr r6, r0, #0x1d + beq _0223EF92 + ldr r0, _0223F0D4 ; =0xFFF8FFFF + and r7, r0 + sub r0, r6, #1 + lsl r0, r0, #0x1d + lsr r0, r0, #0xd + orr r0, r7 + str r0, [r2, r3] + ldr r0, [r2, r3] + lsl r0, r0, #0xd + lsr r0, r0, #0x1d + bne _0223EF92 + add r1, #0x58 + str r5, [r4, r1] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xf3 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EF92: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EF9A: + ldr r0, _0223F0CC ; =0x00002DCC + mov r1, #0xc0 + add r3, r5, #0 + mul r3, r1 + add r2, r4, r0 + ldr r7, [r2, r3] + lsl r0, r7, #0xa + lsr r6, r0, #0x1d + beq _0223EFDC + ldr r0, _0223F0D8 ; =0xFFC7FFFF + and r7, r0 + sub r0, r6, #1 + lsl r0, r0, #0x1d + lsr r0, r0, #0xa + orr r0, r7 + str r0, [r2, r3] + ldr r0, [r2, r3] + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + bne _0223EFDC + add r1, #0x58 + str r5, [r4, r1] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xf4 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223EFDC: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223EFE4: + mov r6, #0xc0 + add r0, r5, #0 + mul r0, r6 + mov r3, #0xb7 + add r1, r4, r0 + lsl r3, r3, #6 + ldr r0, [r1, r3] + lsl r2, r6, #5 + tst r2, r0 + beq _0223F02C + mov r2, #2 + lsl r2, r2, #0xa + sub r0, r0, r2 + str r0, [r1, r3] + ldr r1, [r1, r3] + lsl r0, r6, #5 + tst r0, r1 + bne _0223F02C + add r0, r4, #0 + add r0, #0x94 + str r5, [r0] + add r0, r4, #0 + mov r1, #4 + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x12 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223F02C: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223F034: + ldr r0, [sp, #4] + add r1, r4, #0 + add r2, r5, #0 + add r3, sp, #0x14 + bl MOD11_022493A0 + cmp r0, #1 + bne _0223F060 + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + ldr r2, [sp, #0x14] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #0x10] +_0223F060: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223F068: + ldr r0, [sp, #4] + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_02249A7C + cmp r0, #1 + bne _0223F07A + mov r0, #1 + str r0, [sp, #0x10] +_0223F07A: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + b _0223F08C +_0223F082: + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] +_0223F08C: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0223F09C + ldr r0, [sp, #4] + bl MOD11_0225679C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0223F09C: + ldr r1, [r4, #0x1c] + ldr r0, [sp, #0xc] + cmp r1, r0 + bge _0223F0A8 + bl _0223E6E8 +_0223F0A8: + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + mov r0, #0xb + str r0, [r4, #8] +_0223F0B2: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F0B8: .word 0x00002D4C +_0223F0BC: .word 0x00002D6C +_0223F0C0: .word 0x00002DC8 +_0223F0C4: .word 0xFFFFFDFF +_0223F0C8: .word 0xFFFFF8FF +_0223F0CC: .word 0x00002DCC +_0223F0D0: .word 0xFFFF1FFF +_0223F0D4: .word 0xFFF8FFFF +_0223F0D8: .word 0xFFC7FFFF + + thumb_func_start MOD11_0223F0DC +MOD11_0223F0DC: ; 0x0223F0DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + str r0, [sp] + bl MOD11_0222FF84 + ldr r1, [r4, #8] + add r7, r0, #0 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #1 + bl MOD11_0224246C + cmp r0, #1 + bne _0223F0FC + b _0223F30C +_0223F0FC: + ldr r0, [sp] + bl MOD11_0225679C + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223F114 + cmp r0, #1 + beq _0223F1FE + cmp r0, #2 + bne _0223F112 + b _0223F2C4 +_0223F112: + b _0223F302 +_0223F114: + ldr r0, [r4, #0x24] + cmp r0, r7 + bge _0223F1F4 + add r5, r4, #0 + add r5, #0x24 +_0223F11E: + add r1, r4, r0 + ldr r0, _0223F310 ; =0x000021EC + ldrb r6, [r1, r0] + add r0, r6, #0 + bl FUN_0206A92C + ldr r1, _0223F314 ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + ldr r0, [r5] + beq _0223F13A + add r0, r0, #1 + str r0, [r5] + b _0223F1EE +_0223F13A: + add r0, r0, #1 + mov r1, #0x62 + str r0, [r5] + add r0, r4, r6 + lsl r1, r1, #2 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223F1EE + mov r1, #0x62 + lsl r1, r1, #2 + ldrb r1, [r0, r1] + sub r2, r1, #1 + mov r1, #0x62 + lsl r1, r1, #2 + strb r2, [r0, r1] + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223F1EE + mov r0, #0xc0 + mul r0, r6 + add r1, r4, r0 + ldr r0, _0223F318 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223F1EE + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_02230270 + mov r2, #0x6f + lsl r2, r2, #2 + add r1, r4, r2 + lsl r5, r0, #2 + ldr r3, [r1, r5] + mov r0, #0x10 + bic r3, r0 + add r0, r4, #0 + str r3, [r1, r5] + add r2, #0x1f + add r0, #0xf6 + strh r2, [r0] + add r0, r4, #0 + mov r1, #0xa + add r0, #0xf5 + strb r1, [r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_0224682C + add r1, r4, #0 + add r1, #0xf8 + str r0, [r1] + mov r0, #0x19 + lsl r0, r0, #4 + add r1, r4, #0 + add r3, r4, r0 + lsl r2, r6, #1 + ldrh r5, [r3, r2] + add r1, #0xfc + str r5, [r1] + add r1, r0, #0 + sub r1, #0x78 + str r6, [r4, r1] + lsl r1, r6, #2 + add r5, r0, #0 + add r1, r4, r1 + add r5, #8 + ldr r6, [r1, r5] + add r5, r0, #0 + sub r5, #0x74 + str r6, [r4, r5] + ldrh r3, [r3, r2] + add r2, r0, #0 + sub r2, #0x6c + str r3, [r4, r2] + add r0, #0x18 + ldr r1, [r1, r0] + ldr r0, _0223F31C ; =0x0000215C + mov r2, #0x79 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #8 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223F1EE: + ldr r0, [r4, #0x24] + cmp r0, r7 + blt _0223F11E +_0223F1F4: + ldr r0, [r4, #0x20] + add r0, r0, #1 + str r0, [r4, #0x20] + mov r0, #0 + str r0, [r4, #0x24] +_0223F1FE: + ldr r0, [r4, #0x24] + cmp r0, r7 + bge _0223F2BA + add r5, r4, #0 + add r5, #0x24 +_0223F208: + add r1, r4, r0 + ldr r0, _0223F310 ; =0x000021EC + ldrb r6, [r1, r0] + add r0, r6, #0 + bl FUN_0206A92C + ldr r1, _0223F314 ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + ldr r0, [r5] + beq _0223F224 + add r0, r0, #1 + str r0, [r5] + b _0223F2B4 +_0223F224: + add r0, r0, #1 + str r0, [r5] + mov r0, #0xc0 + mul r0, r6 + mov r1, #0xb7 + add r3, r4, r0 + lsl r1, r1, #6 + ldr r2, [r3, r1] + mov r1, #0x20 + tst r1, r2 + beq _0223F2B4 + ldr r7, _0223F320 ; =0x00002DC8 + add r2, r4, r7 + ldr r1, [r2, r0] + lsl r1, r1, #0x11 + lsr r1, r1, #0x1e + bne _0223F27E + add r1, r7, #0 + sub r1, #8 + add r1, r4, r1 + str r1, [sp, #4] + ldr r1, [r1, r0] + mov r5, #0x20 + bic r1, r5 + ldr r5, [sp, #4] + sub r7, #0x3c + str r1, [r5, r0] + ldr r0, [r2, r0] + lsl r0, r0, #0x11 + lsr r1, r0, #0x1e + mov r0, #0x13 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, [r3, r7] + ldr r1, _0223F31C ; =0x0000215C + neg r0, r0 + str r0, [r4, r1] + add r0, r1, #0 + sub r0, #0x20 + ldr r2, [r4, r0] + mov r0, #0x40 + orr r0, r2 + sub r1, #0x20 + str r0, [r4, r1] + b _0223F298 +_0223F27E: + mov r3, #0x13 + lsl r3, r3, #4 + str r1, [r4, r3] + ldr r3, [r2, r0] + ldr r1, _0223F324 ; =0xFFFF9FFF + and r1, r3 + lsl r3, r3, #0x11 + lsr r3, r3, #0x1e + sub r3, r3, #1 + lsl r3, r3, #0x1e + lsr r3, r3, #0x11 + orr r1, r3 + str r1, [r2, r0] +_0223F298: + mov r0, #0x46 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x66 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #8 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223F2B4: + ldr r0, [r4, #0x24] + cmp r0, r7 + blt _0223F208 +_0223F2BA: + ldr r0, [r4, #0x20] + add r0, r0, #1 + str r0, [r4, #0x20] + mov r0, #0 + str r0, [r4, #0x24] +_0223F2C4: + mov r1, #6 + lsl r1, r1, #6 + ldr r3, [r4, r1] + mov r2, #7 + lsl r2, r2, #0x10 + add r0, r3, #0 + tst r0, r2 + beq _0223F2F8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r0, r3, r0 + str r0, [r4, r1] + ldr r0, [r4, r1] + tst r0, r2 + bne _0223F2F8 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xfb + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #8 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_0223F2F8: + ldr r0, [r4, #0x20] + add r0, r0, #1 + str r0, [r4, #0x20] + mov r0, #0 + str r0, [r4, #0x24] +_0223F302: + mov r0, #0 + str r0, [r4, #0x20] + str r0, [r4, #0x24] + mov r0, #0xc + str r0, [r4, #8] +_0223F30C: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F310: .word 0x000021EC +_0223F314: .word 0x00003108 +_0223F318: .word 0x00002D8C +_0223F31C: .word 0x0000215C +_0223F320: .word 0x00002DC8 +_0223F324: .word 0xFFFF9FFF + + thumb_func_start MOD11_0223F328 +MOD11_0223F328: ; 0x0223F328 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #8] + add r5, r0, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_02242510 + cmp r0, #1 + beq _0223F37C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02241FD8 + cmp r0, #1 + beq _0223F37C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02241D2C + cmp r0, #1 + beq _0223F37C + mov r1, #0x15 + lsl r1, r1, #4 + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x24 + ldr r0, [r4, r0] + add r1, #0x24 + add r0, r0, #1 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD11_02245494 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02245C5C + mov r0, #2 + str r0, [r4, #8] +_0223F37C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0223F380 +MOD11_0223F380: ; 0x0223F380 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + mov r4, #0 + add r1, r5, r0 + ldr r0, _0223F4A8 ; =0x000021E8 + ldrb r2, [r1, r0] + lsl r0, r2, #6 + add r1, r5, r0 + mov r0, #0x75 + str r2, [r5, #0x64] + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0223F3B4 + mov r0, #0xc1 + mov r1, #0xa5 + lsl r0, r0, #6 + str r1, [r5, r0] + mov r4, #1 + b _0223F478 +_0223F3B4: + mov r0, #0xc0 + mul r0, r2 + ldr r6, _0223F4AC ; =0x00002DEC + add r0, r5, r0 + ldrh r1, [r0, r6] + cmp r1, #0 + beq _0223F3DC + add r3, r6, #2 + ldrh r3, [r0, r3] + sub r6, #0xa0 + lsl r3, r3, #1 + add r0, r0, r3 + ldrh r0, [r0, r6] + cmp r1, r0 + bne _0223F3DC + mov r0, #0xc1 + lsl r0, r0, #6 + str r1, [r5, r0] + mov r4, #1 + b _0223F478 +_0223F3DC: + cmp r1, #0 + beq _0223F42E + mov r7, #0xc0 + add r0, r2, #0 + mul r0, r7 + ldr r3, _0223F4B0 ; =0x00002DEE + add r0, r5, r0 + ldrh r6, [r0, r3] + lsl r6, r6, #1 + add r0, r0, r6 + add r6, r3, #0 + sub r6, #0xa2 + ldrh r0, [r0, r6] + cmp r1, r0 + beq _0223F42E + mov r1, #0xc1 + lsl r1, r1, #6 + str r0, [r5, r1] + ldr r1, [r5, #0x64] + mov r0, #0 + add r2, r1, #0 + mul r2, r7 + add r2, r5, r2 + sub r1, r3, #2 + strh r0, [r2, r1] + ldr r1, [r5, #0x64] + mov r4, #1 + add r2, r1, #0 + mul r2, r7 + add r1, r5, r2 + strh r0, [r1, r3] + ldr r0, [r5, #0x64] + sub r3, #0x26 + add r2, r0, #0 + add r3, r5, r3 + mul r2, r7 + ldr r1, [r3, r2] + mov r0, #0x38 + bic r1, r0 + str r1, [r3, r2] + b _0223F478 +_0223F42E: + add r0, r5, #0 + add r1, r2, #0 + bl MOD11_0224AD04 + cmp r0, #0 + bne _0223F44A + ldr r0, [r5, #0x64] + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _0223F4B4 ; =0x0000304C + ldr r1, [r1, r0] + sub r0, #0xc + str r1, [r5, r0] + b _0223F478 +_0223F44A: + ldr r2, [r5, #0x64] + mov r0, #0xc0 + mul r0, r2 + lsl r1, r2, #1 + add r3, r5, r0 + add r0, r5, r1 + ldr r1, _0223F4B8 ; =0x000030BC + ldrh r2, [r0, r1] + lsl r2, r2, #1 + add r3, r3, r2 + ldr r2, _0223F4BC ; =0x00002D4C + ldrh r3, [r3, r2] + add r2, r1, #0 + sub r2, #8 + ldrh r0, [r0, r2] + cmp r0, r3 + beq _0223F474 + sub r1, #0x7c + str r3, [r5, r1] + mov r4, #1 + b _0223F478 +_0223F474: + sub r1, #0x7c + str r3, [r5, r1] +_0223F478: + mov r3, #0xc1 + lsl r3, r3, #6 + ldr r1, [r5, r3] + add r0, r3, #4 + str r1, [r5, r0] + mov r0, #0x16 + str r0, [r5, #8] + str r4, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r5, r3] + ldr r0, [sp, #8] + lsl r3, r3, #0x10 + ldr r2, [r5, #0x64] + add r1, r5, #0 + lsr r3, r3, #0x10 + bl MOD11_02244C28 + str r0, [r5, #0x6c] + ldr r0, [sp, #8] + bl MOD11_0225679C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F4A8: .word 0x000021E8 +_0223F4AC: .word 0x00002DEC +_0223F4B0: .word 0x00002DEE +_0223F4B4: .word 0x0000304C +_0223F4B8: .word 0x000030BC +_0223F4BC: .word 0x00002D4C + + thumb_func_start MOD11_0223F4C0 +MOD11_0223F4C0: ; 0x0223F4C0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0xec + ldr r2, [r2] + add r7, r0, #0 + add r3, r4, r2 + ldr r2, _0223F5FC ; =0x000021E8 + ldrb r2, [r3, r2] + str r2, [r4, #0x64] + bl MOD11_022482A4 + str r0, [r4, #0x6c] + ldr r0, _0223F600 ; =0x000021B0 + ldr r1, [r4, #0x64] + add r2, r4, r0 + lsl r0, r1, #4 + add r6, r2, r0 + add r0, r7, #0 + bl MOD11_02230270 + cmp r0, #0 + beq _0223F568 + ldr r0, [r4, #0x64] + asr r0, r0, #1 + add r1, r4, r0 + ldr r0, _0223F604 ; =0x000003D1 + ldrb r2, [r1, r0] + cmp r2, #4 + bhi _0223F554 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223F508: ; jump table + .short _0223F512 - _0223F508 - 2 ; case 0 + .short _0223F516 - _0223F508 - 2 ; case 1 + .short _0223F51A - _0223F508 - 2 ; case 2 + .short _0223F544 - _0223F508 - 2 ; case 3 + .short _0223F552 - _0223F508 - 2 ; case 4 +_0223F512: + ldr r5, _0223F608 ; =0x00000121 + b _0223F554 +_0223F516: + ldr r5, _0223F60C ; =0x0000010B + b _0223F554 +_0223F51A: + add r0, r0, #2 + ldrb r0, [r1, r0] + mov r1, #1 + tst r1, r0 + beq _0223F534 + mov r1, #0x3e + add r2, r0, #0 + tst r2, r1 + beq _0223F534 + mov r0, #6 + add r1, #0xf2 + str r0, [r4, r1] + b _0223F53E +_0223F534: + bl FUN_0206A94C + mov r1, #0x13 + lsl r1, r1, #4 + str r0, [r4, r1] +_0223F53E: + mov r5, #0x43 + lsl r5, r5, #2 + b _0223F554 +_0223F544: + add r0, r0, #2 + ldrb r0, [r1, r0] + mov r5, #0x13 + lsl r5, r5, #4 + str r0, [r4, r5] + sub r5, #0x23 + b _0223F554 +_0223F552: + ldr r5, _0223F610 ; =0x0000010E +_0223F554: + ldr r1, [r4, #0x64] + mov r0, #1 + bic r1, r0 + ldr r0, _0223F614 ; =0x000003D6 + add r1, r4, r1 + ldrh r1, [r1, r0] + mov r0, #0x4a + lsl r0, r0, #2 + str r1, [r4, r0] + b _0223F5DA +_0223F568: + ldrb r0, [r6, #2] + cmp r0, #3 + bhi _0223F5D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223F57A: ; jump table + .short _0223F582 - _0223F57A - 2 ; case 0 + .short _0223F582 - _0223F57A - 2 ; case 1 + .short _0223F598 - _0223F57A - 2 ; case 2 + .short _0223F582 - _0223F57A - 2 ; case 3 +_0223F582: + ldrh r1, [r6] + ldr r0, _0223F618 ; =0x0000FFC1 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _0223F594 + mov r5, #0xde + b _0223F5D2 +_0223F594: + mov r5, #0xdf + b _0223F5D2 +_0223F598: + add r0, r7, #0 + mov r5, #0xb + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + bne _0223F5D2 + add r0, r7, #0 + bl MOD11_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + bne _0223F5D2 + add r0, r7, #0 + bl MOD11_02230214 + ldrh r1, [r6] + mov r2, #1 + mov r3, #5 + bl FUN_0206EDD4 + add r0, r7, #0 + bl MOD11_02230218 + ldrh r1, [r6] + ldrb r2, [r6, #2] + bl FUN_0206F1E4 +_0223F5D2: + ldrh r1, [r6] + mov r0, #0x4a + lsl r0, r0, #2 + str r1, [r4, r0] +_0223F5DA: + add r0, r4, #0 + mov r1, #1 + add r2, r5, #0 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + ldr r1, _0223F61C ; =0x0000216C + mov r0, #2 + ldr r2, [r4, r1] + lsl r0, r0, #0x1e + orr r0, r2 + str r0, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F5FC: .word 0x000021E8 +_0223F600: .word 0x000021B0 +_0223F604: .word 0x000003D1 +_0223F608: .word 0x00000121 +_0223F60C: .word 0x0000010B +_0223F610: .word 0x0000010E +_0223F614: .word 0x000003D6 +_0223F618: .word 0x0000FFC1 +_0223F61C: .word 0x0000216C + + thumb_func_start MOD11_0223F620 +MOD11_0223F620: ; 0x0223F620 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + mov r2, #9 + bl MOD11_022431DC + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + ldr r1, _0223F660 ; =0x000021E8 + add r0, r4, r0 + ldrb r0, [r0, r1] + mov r2, #0 + str r0, [r4, #0x64] + str r0, [r4, #0x78] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x28 + str r0, [r4, #0xc] + mov r0, #0x4e + lsl r0, r0, #2 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x7c + ldr r2, [r4, r0] + mov r0, #2 + lsl r0, r0, #0x1e + orr r0, r2 + sub r1, #0x7c + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_0223F660: .word 0x000021E8 + + thumb_func_start MOD11_0223F664 +MOD11_0223F664: ; 0x0223F664 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r1, #0xec + ldr r1, [r1] + add r5, r0, #0 + add r2, r4, r1 + ldr r1, _0223F71C ; =0x000021E8 + ldrb r1, [r2, r1] + str r1, [r4, #0x64] + bl MOD11_02230270 + cmp r0, #0 + beq _0223F6D6 + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + bne _0223F6D6 + ldr r0, [r4, #0x64] + mov r2, #0xc0 + add r1, r0, #0 + mul r1, r2 + ldr r0, _0223F720 ; =0x00002DB0 + add r1, r4, r1 + ldr r1, [r1, r0] + ldr r0, _0223F724 ; =0x0400E000 + tst r0, r1 + beq _0223F6BA + add r0, r4, #0 + mov r1, #1 + add r2, #0x5e + bl MOD11_022431DC + add r0, r4, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223F6BA: + add r0, r4, #0 + mov r1, #1 + mov r2, #0xe6 + bl MOD11_022431DC + add r0, r4, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x2a + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223F6D6: + ldr r2, [r4, #0x64] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022470B8 + cmp r0, #0 + beq _0223F700 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + bl MOD11_022431DC + add r0, r4, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x2a + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223F700: + add r0, r4, #0 + mov r1, #1 + mov r2, #8 + bl MOD11_022431DC + add r0, r4, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223F71C: .word 0x000021E8 +_0223F720: .word 0x00002DB0 +_0223F724: .word 0x0400E000 + + thumb_func_start MOD11_0223F728 +MOD11_0223F728: ; 0x0223F728 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r2, _0223F76C ; =0x00000113 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0 + str r0, [r4, #0x64] + mov r0, #1 + str r0, [r4, #0x6c] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + mov r0, #0x4a + mov r1, #5 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl MOD11_02230E00 + sub r1, r0, #1 + add r0, r5, #0 + bl MOD11_02230E0C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD11_02256020 + pop {r3, r4, r5, pc} + nop +_0223F76C: .word 0x00000113 + + thumb_func_start MOD11_0223F770 +MOD11_0223F770: ; 0x0223F770 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xe3 + bl MOD11_022431DC + mov r0, #0 + str r0, [r4, #0x64] + mov r0, #1 + str r0, [r4, #0x6c] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + mov r0, #0x4e + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _0223F7C4 ; =0x0000311C + ldrb r1, [r4, r0] + cmp r1, #0xc + bhs _0223F7AA + add r1, r1, #1 + strb r1, [r4, r0] +_0223F7AA: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223F7C0 + ldr r0, _0223F7C8 ; =0x0000311D + ldrb r1, [r4, r0] + cmp r1, #0xc + bhs _0223F7C0 + add r1, r1, #1 + strb r1, [r4, r0] +_0223F7C0: + pop {r4, pc} + nop +_0223F7C4: .word 0x0000311C +_0223F7C8: .word 0x0000311D + + thumb_func_start MOD11_0223F7CC +MOD11_0223F7CC: ; 0x0223F7CC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xe4 + bl MOD11_022431DC + mov r0, #0 + str r0, [r4, #0x64] + mov r0, #1 + str r0, [r4, #0x6c] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + mov r0, #0x4e + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _0223F824 ; =0x0000311D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223F806 + sub r1, r1, #1 + strb r1, [r4, r0] +_0223F806: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _0223F822 + mov r1, #1 + sub r0, #8 + str r1, [r4, r0] + ldr r0, _0223F828 ; =0x0000311C + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223F822 + sub r1, r1, #1 + strb r1, [r4, r0] +_0223F822: + pop {r4, pc} + .align 2, 0 +_0223F824: .word 0x0000311D +_0223F828: .word 0x0000311C + + thumb_func_start MOD11_0223F82C +MOD11_0223F82C: ; 0x0223F82C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xe5 + bl MOD11_022431DC + mov r0, #0 + str r0, [r4, #0x64] + mov r0, #1 + str r0, [r4, #0x6c] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x27 + str r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start MOD11_0223F84C +MOD11_0223F84C: ; 0x0223F84C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0x18] + add r4, r1, #0 + add r6, r2, #0 + bl MOD11_0222FF74 + add r5, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0 + bl MOD11_022301D4 + add r7, r0, #0 + mov r0, #0x84 + tst r0, r5 + beq _0223F872 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F872: + ldr r0, [sp, #0x18] + ldr r1, [r4, #0x64] + bl MOD11_02230270 + cmp r0, #0 + beq _0223F884 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F884: + mov r0, #0x40 + tst r0, r5 + beq _0223F89C + ldr r0, [sp, #0x18] + ldr r1, [r4, #0x64] + bl MOD11_02230260 + cmp r0, #4 + bne _0223F89C + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F89C: + ldr r0, [sp, #0x18] + add r1, r4, #0 + bl MOD11_0224ADB8 + cmp r0, #1 + bne _0223F8AE + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F8AE: + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_0224AD04 + cmp r0, #0 + bne _0223F8C0 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F8C0: + add r0, r7, #0 + bl FUN_020239F4 + cmp r0, #8 + blt _0223F8D0 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F8D0: + add r0, r7, #0 + mov r5, #0xa + bl FUN_020239F4 + cmp r0, #2 + blt _0223F8DE + mov r5, #0x1e +_0223F8DE: + add r0, r7, #0 + bl FUN_020239F4 + cmp r0, #4 + blt _0223F8EA + mov r5, #0x32 +_0223F8EA: + add r0, r7, #0 + bl FUN_020239F4 + cmp r0, #6 + blt _0223F8F6 + mov r5, #0x46 +_0223F8F6: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r7, r1, #0 + mul r7, r0 + ldr r0, _0223FAEC ; =0x00002D74 + add r1, r4, r7 + ldrb r0, [r1, r0] + cmp r0, r5 + bhi _0223F90E + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F90E: + bl FUN_0201B9EC + lsl r0, r0, #0x18 + ldr r1, _0223FAEC ; =0x00002D74 + add r2, r4, r7 + ldrb r2, [r2, r1] + lsr r0, r0, #0x18 + add r2, r5, r2 + mul r0, r2 + asr r0, r0, #8 + cmp r0, r5 + bge _0223F92C + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F92C: + ldr r0, _0223FAF0 ; =0x00003044 + ldr r0, [r4, r0] + cmp r0, #0x63 + bne _0223F940 + add r1, #0x3c + add r0, r4, r1 + ldr r2, [r0, r7] + ldr r1, _0223FAF4 ; =0xFF7FFFFF + and r1, r2 + str r1, [r0, r7] +_0223F940: + ldr r7, [r4, #0x64] + mov r0, #0xc0 + mul r0, r7 + add r1, r4, r0 + ldr r0, _0223FAF8 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0223F968 + ldr r0, _0223FAF0 ; =0x00003044 + ldr r0, [r4, r0] + cmp r0, #0xad + beq _0223F95E + cmp r0, #0xd6 + bne _0223F968 +_0223F95E: + mov r0, #0xfe + str r0, [r6] + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223F968: + mov r0, #0xc0 + mul r0, r7 + add r1, r4, r0 + ldr r0, _0223FAEC ; =0x00002D74 + ldrb r0, [r1, r0] + str r0, [sp, #0x1c] + bl FUN_0201B9EC + ldr r1, [sp, #0x1c] + lsl r0, r0, #0x18 + add r1, r5, r1 + lsr r0, r0, #0x18 + mul r0, r1 + asr r0, r0, #8 + cmp r0, r5 + bge _0223FA2E + lsl r0, r7, #1 + add r1, r4, r0 + ldr r0, _0223FAFC ; =0x000030BC + ldrh r0, [r1, r0] + bl FUN_0206A92C + add r3, r0, #0 + mov r0, #0 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #0x18] + ldr r2, [r4, #0x64] + add r1, r4, #0 + bl MOD11_02245D38 + add r5, r0, #0 + cmp r5, #0xf + bne _0223F9B6 + mov r0, #0xff + str r0, [r6] + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223F9B6: + bl FUN_0201B9EC + mov r1, #3 + add r7, r0, #0 + and r7, r1 + add r0, r7, #0 + bl FUN_0206A92C + tst r0, r5 + bne _0223F9B6 + ldr r0, [r4, #0x64] + ldr r3, _0223FAFC ; =0x000030BC + lsl r0, r0, #1 + add r0, r4, r0 + strh r7, [r0, r3] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + lsl r1, r1, #1 + add r1, r4, r1 + ldrh r1, [r1, r3] + add r0, r4, r0 + lsl r1, r1, #1 + add r1, r0, r1 + ldr r0, _0223FB00 ; =0x00002D4C + ldrh r1, [r1, r0] + add r0, r3, #0 + sub r0, #0x7c + str r1, [r4, r0] + add r0, r3, #0 + sub r0, #0x7c + ldr r1, [r4, r0] + add r0, r3, #0 + sub r0, #0x78 + str r1, [r4, r0] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + sub r3, #0x7c + ldr r3, [r4, r3] + ldr r0, [sp, #0x18] + lsl r3, r3, #0x10 + ldr r2, [r4, #0x64] + add r1, r4, #0 + lsr r3, r3, #0x10 + bl MOD11_02244C28 + str r0, [r4, #0x6c] + mov r0, #1 + lsl r0, r0, #8 + str r0, [r6] + ldr r1, _0223FB04 ; =0x00002184 + mov r0, #1 + ldr r2, [r4, r1] + add sp, #0x20 + orr r0, r2 + str r0, [r4, r1] + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_0223FA2E: + ldr r0, [sp, #0x1c] + sub r0, r0, r5 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + bl FUN_0201B9EC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, r5 + bge _0223FA8E + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _0223FAF8 ; =0x00002DAC + ldr r0, [r2, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _0223FA8E + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x48 + beq _0223FA8E + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0xf + beq _0223FA8E + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x66 + beq _0223FA8E + mov r1, #6 + lsl r1, r1, #6 + mov r0, #0xf + ldr r2, [r4, r1] + lsl r0, r0, #8 + tst r0, r2 + bne _0223FA8E + sub r1, #0x7f + add sp, #0x20 + str r1, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FA8E: + sub r0, r7, r5 + cmp r0, r5 + bge _0223FAE2 + ldr r1, [r4, #0x64] + mov r0, #0x46 + str r1, [r4, #0x6c] + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r1, [r4, #0x64] + mov r3, #0 + str r3, [sp] + mov r0, #0x28 + str r0, [sp, #4] + lsl r0, r1, #0x18 + str r3, [sp, #8] + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r2, #1 + ldr r0, [sp, #0x18] + add r1, r4, #0 + str r2, [sp, #0x14] + bl MOD11_0224B310 + ldr r1, _0223FB08 ; =0x0000215C + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD11_0224BF10 + ldr r1, _0223FB08 ; =0x0000215C + add sp, #0x20 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + mul r0, r2 + str r0, [r4, r1] + ldr r0, _0223FB0C ; =0x00000102 + str r0, [r6] + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0223FAE2: + mov r0, #0xff + str r0, [r6] + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FAEC: .word 0x00002D74 +_0223FAF0: .word 0x00003044 +_0223FAF4: .word 0xFF7FFFFF +_0223FAF8: .word 0x00002DAC +_0223FAFC: .word 0x000030BC +_0223FB00: .word 0x00002D4C +_0223FB04: .word 0x00002184 +_0223FB08: .word 0x0000215C +_0223FB0C: .word 0x00000102 + + thumb_func_start MOD11_0223FB10 +MOD11_0223FB10: ; 0x0223FB10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + ldr r3, [r5, #0x64] + mov r2, #0x1c + mul r2, r3 + add r6, r5, r2 + mov r2, #0xb5 + lsl r2, r2, #2 + ldr r2, [r6, r2] + str r0, [sp, #4] + lsl r2, r2, #0x1f + mov r4, #1 + lsr r2, r2, #0x1f + bne _0223FBCA + ldr r6, [r5, #0x6c] + cmp r6, #0xff + beq _0223FBCA + mov r2, #0xc1 + lsl r2, r2, #6 + ldr r7, [r5, r2] + ldr r2, _0223FC98 ; =0x0000011E + cmp r7, r2 + bne _0223FB4E + mov r2, #0x2e + str r2, [sp] + mov r2, #3 + bl MOD11_02246870 + add r4, r4, r0 + b _0223FBCA +_0223FB4E: + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _0223FC9C ; =0x000003E6 + ldrh r1, [r1, r0] + cmp r1, #0x40 + bgt _0223FB78 + bge _0223FB94 + cmp r1, #0x10 + bgt _0223FB72 + bge _0223FBCA + cmp r1, #8 + bgt _0223FBB8 + cmp r1, #4 + blt _0223FBB8 + beq _0223FBA6 + cmp r1, #8 + beq _0223FB94 + b _0223FBB8 +_0223FB72: + cmp r1, #0x20 + beq _0223FBCA + b _0223FBB8 +_0223FB78: + add r0, r2, #0 + sub r0, #0x1e + cmp r1, r0 + bgt _0223FB8C + sub r2, #0x1e + cmp r1, r2 + bge _0223FBCA + cmp r1, #0x80 + beq _0223FBA6 + b _0223FBB8 +_0223FB8C: + add r2, #0xe2 + cmp r1, r2 + beq _0223FBCA + b _0223FBB8 +_0223FB94: + mov r0, #0x2e + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #9 + bl MOD11_02246870 + add r4, r4, r0 + b _0223FBCA +_0223FBA6: + mov r0, #0x2e + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #3 + bl MOD11_02246870 + add r4, r4, r0 + b _0223FBCA +_0223FBB8: + cmp r3, r6 + beq _0223FBCA + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x2e + bne _0223FBCA + add r4, r4, #1 +_0223FBCA: + mov r0, #0xb5 + lsl r0, r0, #6 + add r2, r5, r0 + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + mov r1, #0xc1 + lsl r1, r1, #6 + ldr r1, [r5, r1] + add r0, r2, r0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD11_022461AC + add r6, r0, #0 + ldr r1, [r5, #0x64] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r7, r1, #6 + ldr r3, [r0, r7] + lsl r2, r3, #0x1e + lsr r2, r2, #0x1f + bne _0223FC42 + lsl r2, r3, #0x1f + lsr r2, r2, #0x1f + bne _0223FC42 + mov r1, #2 + orr r1, r3 + str r1, [r0, r7] + ldr r0, _0223FCA0 ; =0x00002D6C + ldr r1, [r5, #0x64] + add r2, r5, r0 + mov r0, #0xc0 + mul r0, r1 + add r1, r2, r0 + ldrb r0, [r1, r6] + cmp r0, #0 + beq _0223FC34 + cmp r6, #4 + bge _0223FC34 + cmp r0, r4 + ble _0223FC24 + sub r0, r0, r4 + b _0223FC26 +_0223FC24: + mov r0, #0 +_0223FC26: + strb r0, [r1, r6] + ldr r0, [sp, #4] + ldr r2, [r5, #0x64] + add r1, r5, #0 + bl MOD11_02245190 + b _0223FC90 +_0223FC34: + ldr r1, _0223FCA4 ; =0x0000216C + mov r0, #2 + ldr r2, [r5, r1] + lsl r0, r0, #8 + orr r0, r2 + str r0, [r5, r1] + b _0223FC90 +_0223FC42: + mov r2, #0xc0 + add r0, r1, #0 + mul r0, r2 + add r0, r5, r0 + ldr r3, _0223FCA0 ; =0x00002D6C + add r4, r0, r6 + ldrb r4, [r4, r3] + cmp r4, #0 + bne _0223FC90 + ldr r4, _0223FCA8 ; =0x0000213C + mov r7, #2 + ldr r4, [r5, r4] + lsl r7, r7, #8 + tst r4, r7 + bne _0223FC90 + add r3, #0x44 + ldr r0, [r0, r3] + lsl r3, r7, #3 + tst r3, r0 + bne _0223FC90 + lsl r2, r2, #4 + tst r0, r2 + bne _0223FC90 + add r0, r1, #0 + bl FUN_0206A92C + add r1, r7, #0 + sub r1, #0x80 + ldr r2, [r5, r1] + lsl r0, r0, #8 + tst r0, r2 + bne _0223FC90 + cmp r6, #4 + bge _0223FC90 + ldr r0, _0223FCA4 ; =0x0000216C + add r1, #0x80 + ldr r2, [r5, r0] + orr r1, r2 + str r1, [r5, r0] +_0223FC90: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FC98: .word 0x0000011E +_0223FC9C: .word 0x000003E6 +_0223FCA0: .word 0x00002D6C +_0223FCA4: .word 0x0000216C +_0223FCA8: .word 0x0000213C + + thumb_func_start MOD11_0223FCAC +MOD11_0223FCAC: ; 0x0223FCAC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x6c] + mov r4, #0 + cmp r0, #0xff + bne _0223FCC6 + ldr r1, _0223FD10 ; =0x00003044 + add r0, r5, #0 + ldr r1, [r5, r1] + bl MOD11_02246AF8 + cmp r0, #0 + beq _0223FCF8 +_0223FCC6: + ldr r0, [r5, #0x6c] + cmp r0, #0xff + bne _0223FD0C + ldr r1, _0223FD10 ; =0x00003044 + add r0, r5, #0 + ldr r1, [r5, r1] + bl MOD11_02246AF8 + cmp r0, #1 + bne _0223FD0C + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _0223FD14 ; =0x00002DB0 + ldr r0, [r1, r0] + mov r1, #1 + lsl r1, r1, #0xc + tst r0, r1 + bne _0223FCF8 + ldr r0, _0223FD18 ; =0x0000213C + ldr r2, [r5, r0] + lsr r0, r1, #3 + tst r0, r2 + beq _0223FD0C +_0223FCF8: + ldr r2, _0223FD1C ; =0x00000119 + add r0, r5, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0x26 + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] + mov r4, #1 +_0223FD0C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223FD10: .word 0x00003044 +_0223FD14: .word 0x00002DB0 +_0223FD18: .word 0x0000213C +_0223FD1C: .word 0x00000119 + + thumb_func_start MOD11_0223FD20 +MOD11_0223FD20: ; 0x0223FD20 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r1, _0223FDA0 ; =0x00003044 + ldr r2, [r4, r1] + lsl r1, r2, #4 + add r5, r4, r1 + ldr r1, _0223FDA4 ; =0x000003E6 + ldrh r3, [r5, r1] + cmp r3, #0x10 + beq _0223FD54 + cmp r3, #0x20 + beq _0223FD54 + sub r1, r1, #5 + ldrb r1, [r5, r1] + cmp r1, #0 + beq _0223FD54 + ldr r1, _0223FDA8 ; =0x0000213C + ldr r3, [r4, r1] + mov r1, #2 + lsl r1, r1, #0xe + tst r1, r3 + bne _0223FD54 + mov r1, #0x20 + tst r1, r3 + beq _0223FD58 +_0223FD54: + cmp r2, #0x56 + bne _0223FD98 +_0223FD58: + ldr r1, [r4, #0x64] + ldr r3, _0223FDAC ; =0x00002144 + str r1, [sp] + ldr r1, [r4, #0x6c] + str r1, [sp, #4] + ldr r1, [r4, r3] + str r1, [sp, #8] + add r1, r3, #0 + add r1, #0x28 + add r1, r4, r1 + str r1, [sp, #0xc] + add r3, #0x1c + ldr r3, [r4, r3] + add r1, r4, #0 + bl MOD11_02246274 + ldr r1, _0223FDAC ; =0x00002144 + str r0, [r4, r1] + add r1, #0x28 + ldr r1, [r4, r1] + mov r0, #8 + tst r0, r1 + beq _0223FD98 + mov r0, #0xd1 + lsl r0, r0, #2 + add r3, r4, r0 + ldr r0, [r4, #0x64] + lsl r2, r0, #2 + ldr r1, [r3, r2] + mov r0, #2 + orr r0, r1 + str r0, [r3, r2] +_0223FD98: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223FDA0: .word 0x00003044 +_0223FDA4: .word 0x000003E6 +_0223FDA8: .word 0x0000213C +_0223FDAC: .word 0x00002144 + + thumb_func_start MOD11_0223FDB0 +MOD11_0223FDB0: ; 0x0223FDB0 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp, #0x18] + add r4, r1, #0 + ldr r0, _022400D8 ; =0x00003044 + add r5, r4, #0 + ldr r0, [r4, r0] + mov r7, #0 + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _022400DC ; =0x000003DE + add r5, #0x50 + ldrh r0, [r1, r0] + str r0, [sp, #0x1c] + mov r0, #0xd1 + lsl r0, r0, #2 + add r6, r4, r0 + mov r0, #7 + str r0, [sp, #0x20] + mov r0, #8 + str r0, [sp, #0x24] + mov r0, #1 + str r0, [sp, #0x28] +_0223FDDE: + ldr r0, [r4, #0x50] + cmp r0, #0x10 + bls _0223FDE6 + b _0224043C +_0223FDE6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FDF2: ; jump table + .short _0223FE14 - _0223FDF2 - 2 ; case 0 + .short _0223FE48 - _0223FDF2 - 2 ; case 1 + .short _0223FF42 - _0223FDF2 - 2 ; case 2 + .short _0223FFA6 - _0223FDF2 - 2 ; case 3 + .short _0223FFCE - _0223FDF2 - 2 ; case 4 + .short _0224000A - _0223FDF2 - 2 ; case 5 + .short _02240050 - _0223FDF2 - 2 ; case 6 + .short _0224008C - _0223FDF2 - 2 ; case 7 + .short _022400D4 - _0223FDF2 - 2 ; case 8 + .short _02240138 - _0223FDF2 - 2 ; case 9 + .short _02240174 - _0223FDF2 - 2 ; case 10 + .short _022401B0 - _0223FDF2 - 2 ; case 11 + .short _0224028C - _0223FDF2 - 2 ; case 12 + .short _022402E8 - _0223FDF2 - 2 ; case 13 + .short _0224034E - _0223FDF2 - 2 ; case 14 + .short _022403FE - _0223FDF2 - 2 ; case 15 + .short _02240436 - _0223FDF2 - 2 ; case 16 +_0223FE14: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _022400E0 ; =0x00002DB0 + ldr r1, [r2, r0] + ldr r0, _022400E4 ; =0xFDFFFFFF + and r1, r0 + ldr r0, _022400E0 ; =0x00002DB0 + str r1, [r2, r0] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r1, [r2, r0] + ldr r0, _022400E8 ; =0xFFFFBFFF + and r1, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + str r1, [r2, r0] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0223FE48: + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _022400EC ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0223FF3A + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xf + lsl r0, r0, #8 + tst r0, r1 + beq _0223FE92 + add r0, r4, #0 + add r1, r2, #0 + bl MOD11_02246D1C + cmp r0, #0x2b + beq _0223FE92 + mov r0, #0x46 + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x13 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0223FF3A +_0223FE92: + ldr r0, _022400D8 ; =0x00003044 + ldr r0, [r4, r0] + cmp r0, #0xd6 + beq _0223FEA8 + mov r0, #0xc1 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0xd6 + bne _0223FEA8 + mov r0, #1 + b _0223FEAA +_0223FEA8: + mov r0, #0 +_0223FEAA: + cmp r0, #0 + bne _0223FF3A + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x30 + bne _0223FEBE + mov r3, #2 + b _0223FEC0 +_0223FEBE: + mov r3, #1 +_0223FEC0: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _022400EC ; =0x00002DAC + ldr r1, [r2, r0] + mov r0, #7 + and r0, r1 + cmp r0, r3 + ldr r0, _022400EC ; =0x00002DAC + bhs _0223FEDE + ldr r1, [r2, r0] + ldr r0, [sp, #0x20] + bic r1, r0 + b _0223FEE2 +_0223FEDE: + ldr r0, [r2, r0] + sub r1, r0, r3 +_0223FEE2: + ldr r0, _022400EC ; =0x00002DAC + str r1, [r2, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _022400EC ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0223FF20 + ldr r0, _022400D8 ; =0x00003044 + ldr r0, [r4, r0] + cmp r0, #0xad + beq _0223FF3A + mov r0, #0xc1 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0xd6 + beq _0223FF3A + add r0, r4, #0 + mov r1, #1 + mov r2, #0x14 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #2 + b _0223FF3A +_0223FF20: + mov r0, #0x46 + lsl r0, r0, #2 + str r2, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x13 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223FF3A: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0223FF42: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _022400EC ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _0223FF9E + bl FUN_0201B9EC + mov r1, #5 + blx _s32_div_f + cmp r1, #0 + beq _0223FF82 + ldr r0, [sp, #0x1c] + cmp r0, #0x7d + beq _0223FF9E + cmp r0, #0xfd + beq _0223FF9E + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1c + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 + b _0223FF9E +_0223FF82: + mov r0, #0x46 + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1d + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0223FF9E: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0223FFA6: + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02247190 + cmp r0, #1 + bne _0223FFC6 + add r0, r4, #0 + mov r1, #1 + mov r2, #0xbf + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_0223FFC6: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0223FFCE: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _022400E0 ; =0x00002DB0 + ldr r1, [r2, r0] + mov r0, #1 + lsl r0, r0, #0x16 + tst r0, r1 + beq _02240002 + ldr r0, _022400E0 ; =0x00002DB0 + ldr r1, [r2, r0] + ldr r0, _022400F0 ; =0xFFBFFFFF + and r1, r0 + ldr r0, _022400E0 ; =0x00002DB0 + str r1, [r2, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x41 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_02240002: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0224000A: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _022400E0 ; =0x00002DB0 + ldr r1, [r2, r0] + mov r0, #8 + tst r0, r1 + beq _02240048 + ldr r0, _022400E0 ; =0x00002DB0 + ldr r1, [sp, #0x24] + ldr r0, [r2, r0] + bic r0, r1 + ldr r1, _022400E0 ; =0x00002DB0 + str r0, [r2, r1] + ldr r0, [r4, #0x64] + mov r1, #0x40 + lsl r0, r0, #2 + ldr r2, [r6, r0] + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xf + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_02240048: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_02240050: + mov r0, #0xc1 + lsl r0, r0, #6 + ldr r3, [r4, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _022400F4 ; =0x00002DE8 + ldrh r0, [r1, r0] + cmp r3, r0 + bne _02240084 + lsl r0, r2, #2 + ldr r2, [r6, r0] + mov r1, #0x10 + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x47 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_02240084: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0224008C: + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _022400F8 ; =0x00002DC8 + ldr r0, [r1, r0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + beq _022400CC + ldr r0, _022400D8 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _022400FC ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _022400CC + lsl r0, r2, #2 + ldr r2, [r6, r0] + mov r1, #0x20 + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x85 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_022400CC: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_022400D4: + ldr r3, _022400D8 ; =0x00003044 + b _02240100 + .align 2, 0 +_022400D8: .word 0x00003044 +_022400DC: .word 0x000003DE +_022400E0: .word 0x00002DB0 +_022400E4: .word 0xFDFFFFFF +_022400E8: .word 0xFFFFBFFF +_022400EC: .word 0x00002DAC +_022400F0: .word 0xFFBFFFFF +_022400F4: .word 0x00002DE8 +_022400F8: .word 0x00002DC8 +_022400FC: .word 0x000003E1 +_02240100: + ldr r0, [sp, #0x18] + ldr r2, [r4, #0x64] + ldr r3, [r4, r3] + add r1, r4, #0 + bl MOD11_022471C4 + cmp r0, #0 + beq _02240130 + ldr r0, [r4, #0x64] + mov r1, #4 + lsl r0, r0, #2 + ldr r2, [r6, r0] + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x90 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_02240130: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_02240138: + ldr r3, _0224047C ; =0x00003044 + ldr r0, [sp, #0x18] + ldr r2, [r4, #0x64] + ldr r3, [r4, r3] + add r1, r4, #0 + bl MOD11_02247314 + cmp r0, #0 + beq _0224016C + ldr r0, [r4, #0x64] + mov r1, #1 + lsl r0, r0, #2 + ldr r2, [r6, r0] + lsl r1, r1, #8 + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x9d + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_0224016C: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_02240174: + ldr r3, _0224047C ; =0x00003044 + ldr r0, [sp, #0x18] + ldr r2, [r4, #0x64] + ldr r3, [r4, r3] + add r1, r4, #0 + bl MOD11_02247348 + cmp r0, #0 + beq _022401A8 + ldr r0, [r4, #0x64] + mov r1, #2 + lsl r0, r0, #2 + ldr r2, [r6, r0] + lsl r1, r1, #8 + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xae + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_022401A8: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_022401B0: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _02240480 ; =0x00002DB0 + ldr r1, [r2, r0] + mov r0, #7 + tst r0, r1 + bne _022401CA + b _0224043C +_022401CA: + ldr r0, _02240480 ; =0x00002DB0 + ldr r0, [r2, r0] + sub r1, r0, #1 + ldr r0, _02240480 ; =0x00002DB0 + str r1, [r2, r0] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02240480 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _02240276 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _02240204 + add r0, r4, #0 + mov r2, #0x26 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0224043C +_02240204: + ldr r0, [r4, #0x64] + mov r1, #0x80 + lsl r0, r0, #2 + ldr r2, [r6, r0] + mov r3, #0 + orr r1, r2 + str r1, [r6, r0] + ldr r1, [r4, #0x64] + mov r0, #0x46 + str r1, [r4, #0x6c] + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [r4, #0x64] + mov r1, #0 + str r1, [sp] + mov r1, #0x28 + str r1, [sp, #4] + mov r1, #0 + lsl r0, r0, #0x18 + str r1, [sp, #8] + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r4, #0 + mov r2, #0xa5 + bl MOD11_0224B310 + ldr r1, _02240484 ; =0x0000215C + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD11_0224BF10 + ldr r1, _02240484 ; =0x0000215C + str r0, [r4, r1] + add r0, r1, #0 + ldr r1, [r4, r0] + mov r0, #0 + add r2, r1, #0 + mvn r0, r0 + mul r2, r0 + ldr r0, _02240484 ; =0x0000215C + mov r1, #1 + str r2, [r4, r0] + add r0, r4, #0 + mov r2, #0x27 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x21 + str r0, [r4, #0xc] + mov r7, #1 + b _0224043C +_02240276: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x28 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0224043C +_0224028C: + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02240488 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x40 + tst r0, r1 + beq _022402E0 + add r0, r4, #0 + add r1, r2, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _022402E0 + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r1, r2 + bne _022402E0 + ldr r0, [r4, #0x64] + ldr r2, [sp, #0x28] + lsl r1, r0, #2 + ldr r0, [r6, r1] + bic r0, r2 + mov r2, #1 + orr r0, r2 + str r0, [r6, r1] + add r1, r2, #0 + add r0, r4, #0 + mov r2, #0x20 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_022402E0: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_022402E8: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02240480 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #0xf + lsl r0, r0, #0x10 + and r0, r1 + beq _02240346 + lsr r0, r0, #0x10 + bl FUN_0206A94C + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r4, r1] + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _02240326 + add r0, r4, #0 + mov r2, #0x6b + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _02240346 +_02240326: + ldr r0, [r4, #0x64] + mov r1, #8 + lsl r0, r0, #2 + ldr r2, [r6, r0] + orr r1, r2 + str r1, [r6, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x6c + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + mov r7, #1 +_02240346: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_0224034E: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _02240480 ; =0x00002DB0 + ldr r1, [r2, r0] + mov r0, #3 + lsl r0, r0, #8 + tst r0, r1 + beq _0224043C + ldr r0, _02240480 ; =0x00002DB0 + ldr r1, [r2, r0] + mov r0, #1 + lsl r0, r0, #8 + sub r1, r1, r0 + ldr r0, _02240480 ; =0x00002DB0 + str r1, [r2, r0] + ldr r0, [r4, #0x64] + mov r1, #0xc0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02240480 ; =0x00002DB0 + ldr r2, [r2, r1] + mov r1, #3 + lsl r1, r1, #8 + tst r1, r2 + bne _022403E8 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _0224048C ; =0x000030E4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022403E8 + lsl r1, r0, #1 + ldr r0, _02240490 ; =0x00002144 + str r1, [r4, r0] + ldr r3, [r4, #0x64] + lsl r0, r3, #2 + add r1, r4, r0 + ldr r0, _02240494 ; =0x000030F4 + ldr r2, [r1, r0] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02240498 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _022403B8 + str r2, [r4, #0x6c] + b _022403E8 +_022403B8: + ldr r0, [sp, #0x18] + add r1, r4, #0 + add r2, r3, #0 + bl MOD11_022482A4 + mov r1, #0xc0 + mul r1, r0 + str r0, [r4, #0x6c] + ldr r0, _02240498 ; =0x00002D8C + add r1, r4, r1 + ldr r0, [r1, r0] + cmp r0, #0 + bne _022403E8 + ldr r2, _0224049C ; =0x0000011A + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0x26 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r7, #2 + b _0224043C +_022403E8: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x24 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + b _0224043C +_022403FE: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02240488 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _0224042E + ldr r0, [sp, #0x1c] + cmp r0, #0x7d + beq _0224041A + cmp r0, #0xfd + bne _0224042E +_0224041A: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1e + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r7, #2 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0224042E: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224043C +_02240436: + mov r0, #0 + str r0, [r4, #0x50] + mov r7, #3 +_0224043C: + cmp r7, #0 + bne _02240442 + b _0223FDDE +_02240442: + ldr r0, [sp, #0x18] + ldr r2, [r4, #0x64] + add r1, r4, #0 + bl MOD11_02245190 + cmp r7, #1 + bne _0224046A + ldr r1, _022404A0 ; =0x0000213C + mov r0, #2 + ldr r2, [r4, r1] + orr r0, r2 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x30 + ldr r2, [r4, r0] + mov r0, #2 + lsl r0, r0, #0x1e + orr r0, r2 + add r1, #0x30 + str r0, [r4, r1] +_0224046A: + cmp r7, #3 + beq _02240474 + add sp, #0x2c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02240474: + mov r0, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_0224047C: .word 0x00003044 +_02240480: .word 0x00002DB0 +_02240484: .word 0x0000215C +_02240488: .word 0x00002DAC +_0224048C: .word 0x000030E4 +_02240490: .word 0x00002144 +_02240494: .word 0x000030F4 +_02240498: .word 0x00002D8C +_0224049C: .word 0x0000011A +_022404A0: .word 0x0000213C + + thumb_func_start MOD11_022404A4 +MOD11_022404A4: ; 0x022404A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r5, #0 + ldr r7, _02240514 ; =0x0000216C + mov r4, #0 + add r6, #0x54 +_022404B0: + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _022404BC + cmp r0, #1 + beq _022404FC + b _02240502 +_022404BC: + ldr r1, [r5, #0x64] + ldr r2, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_02247418 + add r2, r0, #0 + beq _022404D4 + ldr r0, _02240514 ; =0x0000216C + ldr r1, [r5, r0] + ldr r0, _02240518 ; =0x001FD849 + tst r0, r1 + beq _022404D8 +_022404D4: + cmp r2, #0xb5 + bne _022404F4 +_022404D8: + add r0, r5, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r5, #8] + mov r4, #1 + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] + mov r0, #2 + ldr r1, [r5, r7] + lsl r0, r0, #0x1e + orr r0, r1 + str r0, [r5, r7] +_022404F4: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _02240502 +_022404FC: + mov r0, #0 + str r0, [r5, #0x54] + mov r4, #2 +_02240502: + cmp r4, #0 + beq _022404B0 + cmp r4, #2 + beq _0224050E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224050E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240514: .word 0x0000216C +_02240518: .word 0x001FD849 + + thumb_func_start MOD11_0224051C +MOD11_0224051C: ; 0x0224051C + push {r4, lr} + add r4, r1, #0 + ldr r2, _02240538 ; =0x00000116 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + nop +_02240538: .word 0x00000116 + + thumb_func_start MOD11_0224053C +MOD11_0224053C: ; 0x0224053C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #4] + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp, #8] + bl MOD11_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + beq _0224055A + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224055A: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + ldr r0, [sp, #0x38] + ldr r2, _02240868 ; =0x00002D5E + lsl r0, r0, #4 + str r0, [sp, #0x10] + add r1, r5, r0 + mov r0, #0x3e + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r6, #0 + str r0, [sp, #0x18] + mov r0, #0xc0 + mul r1, r0 + str r1, [sp, #0xc] + add r1, r5, r1 + ldrsb r1, [r1, r2] + sub r1, r1, #6 + lsl r1, r1, #0x18 + asr r7, r1, #0x18 + ldr r1, [sp, #8] + mul r0, r1 + str r0, [sp, #0x14] + add r1, r5, r0 + add r0, r2, #1 + ldrsb r1, [r1, r0] + mov r0, #6 + sub r0, r0, r1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x56 + bne _022405AA + lsl r0, r7, #0x19 + asr r7, r0, #0x18 +_022405AA: + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0x56 + bl MOD11_02246D84 + cmp r0, #1 + bne _022405BE + lsl r0, r4, #0x19 + asr r4, r0, #0x18 +_022405BE: + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0x6d + bl MOD11_02246D84 + cmp r0, #1 + bne _022405D0 + mov r7, #0 +_022405D0: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x6d + bne _022405DE + mov r4, #0 +_022405DE: + ldr r0, _0224086C ; =0x00002DB0 + ldr r1, [sp, #0x14] + add r2, r5, r0 + str r2, [sp, #0x1c] + ldr r1, [r2, r1] + mov r2, #2 + lsl r2, r2, #0x1c + tst r1, r2 + bne _022405FE + ldr r1, [sp, #0x14] + add r0, #0x10 + add r1, r5, r1 + ldr r1, [r1, r0] + lsr r0, r2, #7 + tst r0, r1 + beq _02240604 +_022405FE: + cmp r4, #0 + bge _02240604 + mov r4, #0 +_02240604: + add r0, r4, #6 + add r0, r0, r7 + lsl r0, r0, #0x18 + asr r7, r0, #0x18 + bpl _02240610 + mov r7, #0 +_02240610: + cmp r7, #0xc + ble _02240616 + mov r7, #0xc +_02240616: + ldr r0, _02240870 ; =0x000003E3 + add r1, r5, r0 + ldr r0, [sp, #0x10] + ldrb r4, [r1, r0] + cmp r4, #0 + bne _02240628 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02240628: + ldr r0, _02240874 ; =0x0000213C + mov r1, #0x20 + ldr r0, [r5, r0] + add r2, r0, #0 + tst r2, r1 + beq _0224063A + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224063A: + lsl r1, r1, #5 + tst r0, r1 + beq _02240646 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02240646: + mov r0, #0xd + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _02240688 + mov r0, #0x4c + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _02240688 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0x30 + tst r0, r1 + beq _02240688 + ldr r0, [sp, #0x10] + add r1, r5, r0 + ldr r0, _02240878 ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x98 + bne _02240688 + mov r4, #0x32 +_02240688: + ldr r0, _0224087C ; =0x0225E178 + lsl r1, r7, #1 + ldrb r0, [r0, r1] + ldr r2, _02240880 ; =0x0225E179 + ldrb r1, [r2, r1] + mul r0, r4 + blx _u32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0xe + bne _022406B6 + mov r0, #0x82 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_022406B6: + mov r0, #0xd + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224074E + mov r0, #0x4c + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224074E + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0xc + tst r0, r1 + beq _02240708 + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + mov r3, #8 + bl MOD11_02246D84 + cmp r0, #1 + bne _02240708 + mov r0, #0x50 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02240708: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0xc0 + tst r0, r1 + beq _02240732 + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0x51 + bl MOD11_02246D84 + cmp r0, #1 + bne _02240732 + mov r0, #0x50 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02240732: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r1 + beq _0224074E + mov r0, #6 + mul r0, r4 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224074E: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x37 + bne _0224076E + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0224076E + mov r0, #0x50 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224076E: + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0x4d + bl MOD11_02246D84 + cmp r0, #1 + bne _02240798 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _02240798 + mov r0, #0x32 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02240798: + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_02249D90 + add r7, r0, #0 + ldr r1, [sp, #8] + add r0, r5, #0 + mov r2, #0 + bl MOD11_02249DA4 + cmp r7, #0x2f + bne _022407BE + mov r1, #0x64 + sub r0, r1, r0 + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_022407BE: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + add r7, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD11_02249DA4 + add r6, r0, #0 + cmp r7, #0x5c + bne _022407E6 + add r0, #0x64 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_022407E6: + cmp r7, #0x67 + bne _02240806 + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_02249B7C + cmp r0, #1 + bne _02240806 + add r6, #0x64 + add r0, r4, #0 + mul r0, r6 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02240806: + ldr r0, _02240884 ; =0x00002DCC + ldr r1, [sp, #0xc] + add r0, r5, r0 + ldr r2, [r0, r1] + lsl r1, r2, #4 + lsr r1, r1, #0x1f + beq _0224082A + ldr r1, _02240888 ; =0xF7FFFFFF + and r2, r1 + ldr r1, [sp, #0xc] + str r2, [r0, r1] + mov r0, #0x78 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224082A: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r1 + beq _02240846 + mov r0, #0xa + mul r0, r4 + mov r1, #6 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02240846: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + add r0, r1, #1 + cmp r0, r4 + ble _02240860 + ldr r1, _0224088C ; =0x0000216C + mov r0, #1 + ldr r2, [r5, r1] + orr r0, r2 + str r0, [r5, r1] +_02240860: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240868: .word 0x00002D5E +_0224086C: .word 0x00002DB0 +_02240870: .word 0x000003E3 +_02240874: .word 0x0000213C +_02240878: .word 0x000003DE +_0224087C: .word 0x0225E178 +_02240880: .word 0x0225E179 +_02240884: .word 0x00002DCC +_02240888: .word 0xF7FFFFFF +_0224088C: .word 0x0000216C + + thumb_func_start MOD11_02240890 +MOD11_02240890: ; 0x02240890 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r5, r1, #0 + ldr r0, _02240A54 ; =0x0000213C + add r6, r3, #0 + ldr r3, [r5, r0] + mov r1, #0x20 + add r7, r2, #0 + ldr r4, [sp, #0x20] + tst r1, r3 + beq _022408AE + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022408AE: + lsl r1, r6, #6 + add r3, r5, r1 + mov r1, #0x75 + lsl r1, r1, #2 + ldr r1, [r3, r1] + lsl r1, r1, #0x1d + lsr r1, r1, #0x1f + beq _0224091C + lsl r1, r4, #4 + add r3, r5, r1 + ldr r1, _02240A58 ; =0x000003E9 + ldrb r3, [r3, r1] + mov r1, #2 + tst r1, r3 + beq _0224091C + add r0, #0x30 + ldr r1, [r5, r0] + ldr r0, _02240A5C ; =0x801FDA49 + tst r0, r1 + bne _0224091C + cmp r4, #0xae + bne _022408E8 + lsl r1, r4, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD11_02246C20 + cmp r0, #1 + bne _0224091C +_022408E8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246AF8 + cmp r0, #0 + beq _02240900 + ldr r0, _02240A54 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #8 + tst r0, r1 + beq _0224091C +_02240900: + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_022451F0 + ldr r1, _02240A60 ; =0x0000216C + mov r0, #2 + ldr r2, [r5, r1] + lsl r0, r0, #0xe + orr r0, r2 + str r0, [r5, r1] + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224091C: + ldr r0, _02240A54 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #1 + lsl r0, r0, #0xa + tst r0, r1 + bne _0224096E + mov r0, #0xc0 + mul r0, r6 + add r3, r5, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r2, [r3, r0] + mov r1, #0x18 + tst r1, r2 + beq _02240946 + add r0, #0xc + ldr r0, [r3, r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r7, r0 + beq _0224095E +_02240946: + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x63 + beq _0224095E + ldr r1, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x63 + bne _0224096E +_0224095E: + ldr r1, _02240A60 ; =0x0000216C + mov r0, #1 + ldr r2, [r5, r1] + add sp, #8 + bic r2, r0 + str r2, [r5, r1] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224096E: + mov r0, #0xd + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022409DC + mov r0, #0x4c + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022409DC + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #3 + tst r0, r1 + beq _022409B8 + lsl r0, r4, #4 + add r1, r5, r0 + ldr r0, _02240A64 ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x98 + bne _022409B8 + ldr r1, _02240A60 ; =0x0000216C + mov r0, #1 + ldr r2, [r5, r1] + bic r2, r0 + str r2, [r5, r1] +_022409B8: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0xc0 + tst r0, r1 + beq _022409DC + lsl r0, r4, #4 + add r2, r5, r0 + ldr r0, _02240A64 ; =0x000003DE + add r1, #0x44 + ldrh r0, [r2, r0] + cmp r0, r1 + bne _022409DC + ldr r1, _02240A60 ; =0x0000216C + mov r0, #1 + ldr r2, [r5, r1] + bic r2, r0 + str r2, [r5, r1] +_022409DC: + ldr r1, _02240A60 ; =0x0000216C + mov r2, #1 + ldr r0, [r5, r1] + lsl r2, r2, #0xa + tst r0, r2 + bne _02240A4C + ldr r0, _02240A68 ; =0x00003044 + sub r2, #0x1a + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r0, r5, r0 + ldrh r0, [r0, r2] + cmp r0, #0x80 + beq _02240A4C + sub r1, #0x30 + ldr r0, [r5, r1] + mov r1, #4 + tst r1, r0 + bne _02240A14 + mov r1, #0xc0 + mul r1, r6 + add r2, r5, r1 + mov r1, #0xb7 + lsl r1, r1, #6 + ldr r2, [r2, r1] + mov r1, #0x40 + tst r1, r2 + bne _02240A40 +_02240A14: + mov r1, #0xc0 + mul r1, r6 + add r2, r5, r1 + mov r1, #0xb7 + lsl r1, r1, #6 + ldr r1, [r2, r1] + mov r2, #2 + lsl r2, r2, #0x1c + tst r2, r1 + bne _02240A40 + mov r2, #8 + tst r2, r0 + bne _02240A34 + mov r2, #0x80 + tst r2, r1 + bne _02240A40 +_02240A34: + mov r2, #0x10 + tst r0, r2 + bne _02240A4C + lsl r0, r2, #0xe + tst r0, r1 + beq _02240A4C +_02240A40: + ldr r1, _02240A60 ; =0x0000216C + mov r0, #1 + ldr r2, [r5, r1] + lsl r0, r0, #0x10 + orr r0, r2 + str r0, [r5, r1] +_02240A4C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240A54: .word 0x0000213C +_02240A58: .word 0x000003E9 +_02240A5C: .word 0x801FDA49 +_02240A60: .word 0x0000216C +_02240A64: .word 0x000003DE +_02240A68: .word 0x00003044 + + thumb_func_start MOD11_02240A6C +MOD11_02240A6C: ; 0x02240A6C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + bl MOD11_0222FF84 + add r2, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0xff + bne _02240A80 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02240A80: + ldr r6, _02240BBC ; =0x0000216C + ldr r1, _02240BC0 ; =0x801FDA49 + ldr r3, [r4, r6] + add r7, r3, #0 + and r7, r1 + bne _02240B12 + mov r1, #0x75 + lsl r1, r1, #2 + lsl r0, r0, #6 + add r5, r4, r1 + ldr r3, [r5, r0] + mov ip, r0 + lsl r0, r3, #0x1b + lsr r0, r0, #0x1f + beq _02240B12 + ldr r0, _02240BC4 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _02240BC8 ; =0x000003E9 + ldrb r0, [r1, r0] + mov r1, #4 + tst r0, r1 + beq _02240B12 + mov r0, #0x10 + bic r3, r0 + mov r0, ip + str r3, [r5, r0] + ldr r2, [r4, #0x64] + mov r0, #0 + lsl r2, r2, #1 + add r3, r4, r2 + ldr r2, _02240BC4 ; =0x00003044 + add r2, #0x18 + strh r0, [r3, r2] + ldr r2, [r4, #0x64] + ldr r0, _02240BC4 ; =0x00003044 + lsl r2, r2, #1 + sub r0, r0, #4 + add r3, r4, r2 + ldr r2, _02240BC4 ; =0x00003044 + ldr r0, [r4, r0] + add r2, #0x38 + strh r0, [r3, r2] + ldr r0, _02240BC4 ; =0x00003044 + sub r0, r0, #4 + ldr r2, [r4, r0] + ldr r0, _02240BC4 ; =0x00003044 + add r0, r0, #4 + str r2, [r4, r0] + add r0, r6, #0 + sub r0, #0x30 + ldr r2, [r4, r0] + lsl r0, r1, #0x12 + orr r0, r2 + sub r6, #0x30 + str r0, [r4, r6] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x8b + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x64] + add r0, r4, #0 + bl MOD11_0224C438 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02240B12: + mov r1, #0 + cmp r2, #0 + ble _02240BB8 + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r4, r0 +_02240B1E: + ldr r3, _02240BCC ; =0x000021EC + add r5, r4, r1 + ldrb r5, [r5, r3] + cmp r7, #0 + bne _02240BB2 + lsl r3, r5, #6 + str r3, [sp] + ldr r3, [r0, r3] + lsl r3, r3, #0x1a + lsr r3, r3, #0x1f + beq _02240BB2 + ldr r3, _02240BC4 ; =0x00003044 + ldr r3, [r4, r3] + lsl r3, r3, #4 + add r6, r4, r3 + ldr r3, _02240BC8 ; =0x000003E9 + ldrb r6, [r6, r3] + mov r3, #8 + tst r3, r6 + beq _02240BB2 + mov r1, #0x46 + lsl r1, r1, #2 + str r5, [r4, r1] + ldr r1, [sp] + mov r7, #1 + ldr r2, [r0, r1] + mov r1, #0x20 + bic r2, r1 + ldr r1, [sp] + lsl r7, r7, #0x14 + str r2, [r0, r1] + ldr r2, _02240BD0 ; =0x0000213C + ldr r0, [r4, r2] + tst r0, r7 + bne _02240B92 + ldr r1, [r4, #0x64] + mov r0, #0 + lsl r1, r1, #1 + add r3, r4, r1 + ldr r1, _02240BD4 ; =0x0000305C + strh r0, [r3, r1] + add r0, r1, #0 + sub r0, #0x1c + ldr r6, [r4, r0] + ldr r0, [r4, #0x64] + lsl r0, r0, #1 + add r3, r4, r0 + add r0, r1, #0 + add r0, #0x20 + strh r6, [r3, r0] + add r0, r1, #0 + sub r0, #0x1c + ldr r0, [r4, r0] + sub r1, #0x14 + str r0, [r4, r1] + ldr r0, [r4, r2] + orr r0, r7 + str r0, [r4, r2] +_02240B92: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x92 + bl MOD11_022431DC + ldr r0, [r4, #8] + add r1, r5, #0 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + ldr r2, [r4, #0x64] + add r0, r4, #0 + bl MOD11_0224C438 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02240BB2: + add r1, r1, #1 + cmp r1, r2 + blt _02240B1E +_02240BB8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240BBC: .word 0x0000216C +_02240BC0: .word 0x801FDA49 +_02240BC4: .word 0x00003044 +_02240BC8: .word 0x000003E9 +_02240BCC: .word 0x000021EC +_02240BD0: .word 0x0000213C +_02240BD4: .word 0x0000305C + + thumb_func_start MOD11_02240BD8 +MOD11_02240BD8: ; 0x02240BD8 + push {r4, lr} + add r4, r1, #0 + bl MOD11_02232264 + cmp r0, #1 + bne _02240BF0 + add r0, r4, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + ldr r0, [r4, #0xc] + str r0, [r4, #8] +_02240BF0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02240BF4 +MOD11_02240BF4: ; 0x02240BF4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4, #0x48] + add r5, r0, #0 + cmp r2, #6 + bhi _02240CEA + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02240C0C: ; jump table + .short _02240C1A - _02240C0C - 2 ; case 0 + .short _02240C26 - _02240C0C - 2 ; case 1 + .short _02240C3E - _02240C0C - 2 ; case 2 + .short _02240C8A - _02240C0C - 2 ; case 3 + .short _02240CA6 - _02240C0C - 2 ; case 4 + .short _02240CB8 - _02240C0C - 2 ; case 5 + .short _02240CD4 - _02240C0C - 2 ; case 6 +_02240C1A: + bl MOD11_0224051C + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_02240C26: + ldr r2, _02240D30 ; =0x00002184 + ldr r3, [r4, r2] + mov r2, #4 + tst r2, r3 + bne _02240C38 + bl MOD11_0223FDB0 + cmp r0, #1 + beq _02240D2C +_02240C38: + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] +_02240C3E: + ldr r0, _02240D30 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #1 + tst r0, r1 + bne _02240C84 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD11_0223F84C + cmp r0, #0 + beq _02240C84 + cmp r0, #1 + beq _02240C64 + cmp r0, #2 + beq _02240C6A + cmp r0, #3 + beq _02240C70 + b _02240C74 +_02240C64: + mov r0, #0x26 + str r0, [r4, #0xc] + b _02240C74 +_02240C6A: + ldr r0, [r4, #8] + str r0, [r4, #0xc] + b _02240C74 +_02240C70: + mov r0, #0x21 + str r0, [r4, #0xc] +_02240C74: + mov r0, #0x15 + str r0, [r4, #8] + ldr r2, [sp] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + pop {r3, r4, r5, pc} +_02240C84: + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] +_02240C8A: + ldr r0, _02240D30 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #8 + tst r0, r1 + bne _02240CA0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223FB10 + cmp r0, #1 + beq _02240D2C +_02240CA0: + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] +_02240CA6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223FCAC + cmp r0, #1 + beq _02240D2C + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] +_02240CB8: + ldr r0, _02240D30 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #0x80 + tst r0, r1 + bne _02240CCE + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02240A6C + cmp r0, #1 + beq _02240D2C +_02240CCE: + ldr r0, [r4, #0x48] + add r0, r0, #1 + str r0, [r4, #0x48] +_02240CD4: + ldr r3, _02240D34 ; =0x00003044 + ldr r2, [r4, #0x64] + ldr r3, [r4, r3] + add r0, r5, #0 + lsl r3, r3, #0x10 + add r1, r4, #0 + lsr r3, r3, #0x10 + bl MOD11_02244F68 + mov r0, #0 + str r0, [r4, #0x48] +_02240CEA: + ldr r1, _02240D38 ; =0x0000216C + ldr r0, _02240D3C ; =0x801FDA49 + ldr r2, [r4, r1] + tst r0, r2 + beq _02240CFA + mov r0, #0x19 + str r0, [r4, #8] + b _02240D24 +_02240CFA: + add r0, r1, #0 + sub r0, #0x2c + ldr r2, [r4, r0] + mov r0, #0x40 + orr r0, r2 + sub r1, #0x2c + str r0, [r4, r1] + ldr r2, _02240D34 ; =0x00003044 + add r0, r4, #0 + ldr r2, [r4, r2] + mov r1, #0 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x17 + str r0, [r4, #0xc] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02247380 +_02240D24: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224AB44 +_02240D2C: + pop {r3, r4, r5, pc} + nop +_02240D30: .word 0x00002184 +_02240D34: .word 0x00003044 +_02240D38: .word 0x0000216C +_02240D3C: .word 0x801FDA49 + + thumb_func_start MOD11_02240D40 +MOD11_02240D40: ; 0x02240D40 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4, #0x4c] + add r5, r0, #0 + cmp r2, #6 + bhi _02240E20 + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02240D58: ; jump table + .short _02240D66 - _02240D58 - 2 ; case 0 + .short _02240D72 - _02240D58 - 2 ; case 1 + .short _02240D84 - _02240D58 - 2 ; case 2 + .short _02240DAE - _02240D58 - 2 ; case 3 + .short _02240DD8 - _02240D58 - 2 ; case 4 + .short _02240DFA - _02240D58 - 2 ; case 5 + .short _02240E1C - _02240D58 - 2 ; case 6 +_02240D66: + add r2, r2, #1 + str r2, [r4, #0x4c] + bl MOD11_0223FCAC + cmp r0, #1 + beq _02240E24 +_02240D72: + ldr r0, [r4, #0x4c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x4c] + add r0, r5, #0 + bl MOD11_0224510C + cmp r0, #1 + beq _02240E24 +_02240D84: + ldr r0, _02240E28 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #0x20 + tst r0, r1 + bne _02240DA8 + ldr r3, [r4, #0x6c] + cmp r3, #0xff + beq _02240DA8 + ldr r0, _02240E2C ; =0x00003044 + add r1, r4, #0 + ldr r0, [r4, r0] + str r0, [sp] + ldr r2, [r4, #0x64] + add r0, r5, #0 + bl MOD11_0224053C + cmp r0, #1 + beq _02240E24 +_02240DA8: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] +_02240DAE: + ldr r0, _02240E28 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #0x40 + tst r0, r1 + bne _02240DD2 + ldr r3, [r4, #0x6c] + cmp r3, #0xff + beq _02240DD2 + ldr r0, _02240E2C ; =0x00003044 + add r1, r4, #0 + ldr r0, [r4, r0] + str r0, [sp] + ldr r2, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02240890 + cmp r0, #1 + beq _02240E24 +_02240DD2: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] +_02240DD8: + ldr r0, _02240E28 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #2 + tst r0, r1 + bne _02240DF4 + ldr r0, [r4, #0x6c] + cmp r0, #0xff + beq _02240DF4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0223FD20 + cmp r0, #1 + beq _02240E24 +_02240DF4: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] +_02240DFA: + ldr r0, _02240E28 ; =0x00002184 + ldr r1, [r4, r0] + mov r0, #0x10 + tst r0, r1 + bne _02240E16 + ldr r0, [r4, #0x6c] + cmp r0, #0xff + beq _02240E16 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022404A4 + cmp r0, #1 + beq _02240E24 +_02240E16: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] +_02240E1C: + mov r0, #0 + str r0, [r4, #0x4c] +_02240E20: + mov r0, #0x18 + str r0, [r4, #8] +_02240E24: + pop {r3, r4, r5, pc} + nop +_02240E28: .word 0x00002184 +_02240E2C: .word 0x00003044 + + thumb_func_start MOD11_02240E30 +MOD11_02240E30: ; 0x02240E30 + push {r3, r4, lr} + sub sp, #4 + add r2, sp, #0 + add r4, r1, #0 + bl MOD11_02244948 + cmp r0, #1 + bne _02240E56 + ldr r2, [sp] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x19 + add sp, #4 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_02240E56: + mov r0, #0x19 + str r0, [r4, #8] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02240E60 +MOD11_02240E60: ; 0x02240E60 + push {r4, lr} + ldr r0, _02240ED8 ; =0x0000216C + add r4, r1, #0 + ldr r1, [r4, r0] + mov r2, #2 + lsl r2, r2, #0x1e + add r3, r1, #0 + tst r3, r2 + beq _02240E78 + mov r0, #0x22 + str r0, [r4, #8] + pop {r4, pc} +_02240E78: + lsr r2, r2, #0x16 + tst r2, r1 + beq _02240E92 + add r0, r4, #0 + mov r1, #1 + mov r2, #0x2a + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x26 + str r0, [r4, #0xc] + pop {r4, pc} +_02240E92: + add r2, r0, #0 + add r2, #0x14 + ldr r2, [r4, r2] + cmp r2, #0 + beq _02240EB8 + mov r3, #1 + add r2, r1, #0 + tst r2, r3 + beq _02240EB8 + mov r2, #1 + bic r1, r2 + str r1, [r4, r0] + ldr r2, [r4, r0] + lsl r1, r3, #0xe + orr r1, r2 + str r1, [r4, r0] + mov r0, #0x1c + str r0, [r4, #8] + pop {r4, pc} +_02240EB8: + ldr r0, _02240EDC ; =0x001FD849 + tst r0, r1 + beq _02240ED2 + add r0, r4, #0 + mov r1, #1 + mov r2, #7 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x21 + str r0, [r4, #0xc] + pop {r4, pc} +_02240ED2: + mov r0, #0x1a + str r0, [r4, #8] + pop {r4, pc} + .align 2, 0 +_02240ED8: .word 0x0000216C +_02240EDC: .word 0x001FD849 + + thumb_func_start MOD11_02240EE0 +MOD11_02240EE0: ; 0x02240EE0 + push {r4, lr} + add r4, r1, #0 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x1b + str r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start MOD11_02240EF8 +MOD11_02240EF8: ; 0x02240EF8 + push {r3, r4, r5, r6, r7, lr} + ldr r2, _02241260 ; =0x0000216C + add r4, r1, #0 + ldr r1, [r4, r2] + add r5, r0, #0 + mov r0, #0x20 + tst r0, r1 + beq _02240F1E + ldr r0, [r4, #0x6c] + mov r1, #0xc0 + add r3, r0, #0 + mul r3, r1 + ldr r0, _02241264 ; =0x00002D90 + add r3, r4, r3 + ldr r0, [r3, r0] + sub r1, #0xc1 + mul r1, r0 + sub r2, #0x28 + str r1, [r4, r2] +_02240F1E: + ldr r0, _02241268 ; =0x00002144 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02240F28 + b _022412E8 +_02240F28: + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_02249D90 + add r7, r0, #0 + ldr r1, [r4, #0x6c] + add r0, r4, #0 + mov r2, #0 + bl MOD11_02249DA4 + str r0, [sp] + ldr r0, _02241268 ; =0x00002144 + ldr r0, [r4, r0] + cmp r0, #0 + blt _02240F4A + bl ErrorHandling +_02240F4A: + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_02230270 + add r6, r0, #0 + ldr r1, [r4, #0x6c] + add r0, r5, #0 + bl MOD11_02230270 + cmp r6, r0 + bne _02240F6C + ldr r1, [r4, #0x64] + add r0, r5, #0 + mov r2, #0 + mov r3, #0x46 + bl MOD11_022564A8 +_02240F6C: + ldr r0, [r4, #0x6c] + ldr r2, [r4, #0x64] + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, _0224126C ; =0x000030F4 + str r2, [r1, r0] + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + mov r2, #1 + ldr r1, _02241270 ; =0x00002DB0 + add r5, r4, r6 + ldr r3, [r5, r1] + lsl r2, r2, #0x18 + tst r2, r3 + beq _02241044 + ldr r2, _02241268 ; =0x00002144 + ldr r2, [r4, r2] + cmp r2, #0 + bge _02241044 + add r3, r1, #0 + add r3, #0x30 + ldr r3, [r5, r3] + add r5, r2, r3 + cmp r5, #0 + bgt _02240FE8 + mov r2, #0xbb + lsl r2, r2, #2 + add r6, r4, r2 + ldr r2, [r4, #0x64] + mov r5, #0x1c + mul r5, r2 + ldr r2, [r6, r5] + sub r2, r2, r3 + str r2, [r6, r5] + ldr r5, [r4, #0x6c] + add r3, r4, r1 + add r2, r5, #0 + mul r2, r0 + ldr r6, [r3, r2] + ldr r5, _02241274 ; =0xFEFFFFFF + and r5, r6 + str r5, [r3, r2] + ldr r2, [r4, #0x6c] + add r3, r2, #0 + add r2, r1, #0 + mul r3, r0 + add r3, r4, r3 + add r2, #0x30 + ldr r2, [r3, r2] + add r1, #0x30 + neg r3, r2 + ldr r2, _02241268 ; =0x00002144 + add r2, r2, #4 + str r3, [r4, r2] + ldr r2, [r4, #0x6c] + mov r3, #0 + mul r0, r2 + add r0, r4, r0 + str r3, [r0, r1] + b _02241014 +_02240FE8: + mov r3, #0xbb + lsl r3, r3, #2 + add r6, r4, r3 + ldr r3, [r4, #0x64] + mov r5, #0x1c + mul r5, r3 + ldr r3, [r6, r5] + add r1, #0x30 + add r2, r3, r2 + str r2, [r6, r5] + ldr r2, [r4, #0x6c] + add r1, r4, r1 + mul r0, r2 + ldr r2, _02241268 ; =0x00002144 + ldr r3, [r1, r0] + ldr r2, [r4, r2] + add r2, r3, r2 + str r2, [r1, r0] + ldr r0, _02241268 ; =0x00002144 + ldr r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] +_02241014: + mov r0, #0xba + lsl r0, r0, #2 + ldr r2, [r4, #0x6c] + add r1, r4, r0 + add r0, r2, #0 + mov r3, #0x1c + mul r0, r3 + ldr r5, [r1, r0] + mov r2, #8 + orr r2, r5 + str r2, [r1, r0] + ldr r0, [r4, #0x6c] + add r3, #0xfc + str r0, [r4, r3] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x5a + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x1c + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02241044: + ldr r0, _02241278 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _0224127C ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x65 + bne _0224106A + ldr r0, _02241280 ; =0x00002D8C + add r1, r4, r6 + ldr r2, [r1, r0] + ldr r0, _02241268 ; =0x00002144 + ldr r1, [r4, r0] + add r1, r1, r2 + cmp r1, #0 + bgt _0224106A + sub r1, r2, #1 + neg r1, r1 + str r1, [r4, r0] +_0224106A: + ldr r0, [r4, #0x6c] + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1f + bne _022410D0 + cmp r7, #0x40 + bne _022410A4 + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + ldr r0, [sp] + cmp r1, r0 + bge _022410A4 + mov r0, #0xb5 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r2, [r4, #0x6c] + mov r0, #0x1c + mul r0, r2 + ldr r3, [r1, r0] + mov r2, #0x20 + orr r2, r3 + str r2, [r1, r0] +_022410A4: + cmp r7, #0x66 + bne _022410D0 + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r3, r4, r0 + ldr r0, _02241280 ; =0x00002D8C + ldr r2, [r3, r0] + add r0, r0, #4 + ldr r0, [r3, r0] + cmp r2, r0 + bne _022410D0 + mov r0, #0xb5 + lsl r0, r0, #2 + add r3, r1, #0 + mov r2, #0x1c + add r0, r4, r0 + mul r3, r2 + ldr r2, [r0, r3] + mov r1, #0x20 + orr r1, r2 + str r1, [r0, r3] +_022410D0: + ldr r0, [r4, #0x6c] + lsl r1, r0, #6 + add r2, r4, r1 + mov r1, #0x75 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #0x16 + lsr r1, r1, #0x1f + bne _022410F4 + mov r1, #0x1c + mul r1, r0 + add r2, r4, r1 + mov r1, #0xb5 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1f + beq _0224113E +_022410F4: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02241280 ; =0x00002D8C + add r1, r4, r1 + ldr r2, _02241268 ; =0x00002144 + ldr r1, [r1, r0] + ldr r0, [r4, r2] + add r0, r0, r1 + cmp r0, #0 + bgt _0224113E + sub r0, r1, #1 + neg r0, r0 + str r0, [r4, r2] + ldr r0, [r4, #0x6c] + mov r1, #0x75 + lsl r0, r0, #6 + add r0, r4, r0 + lsl r1, r1, #2 + ldr r0, [r0, r1] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1f + beq _02241130 + add r0, r2, #0 + add r0, #0x28 + ldr r1, [r4, r0] + mov r0, #0x80 + orr r0, r1 + add r2, #0x28 + str r0, [r4, r2] + b _0224113E +_02241130: + add r0, r2, #0 + add r0, #0x28 + ldr r0, [r4, r0] + sub r1, #0xd4 + orr r0, r1 + add r2, #0x28 + str r0, [r4, r2] +_0224113E: + ldr r1, [r4, #0x6c] + ldr r0, _02241284 ; =0x000030E4 + lsl r3, r1, #2 + ldr r1, _02241268 ; =0x00002144 + add r0, r4, r0 + ldr r2, [r0, r3] + ldr r1, [r4, r1] + add r1, r2, r1 + str r1, [r0, r3] + ldr r0, _02241288 ; =0x00002DBC + ldr r1, [r4, #0x6c] + add r3, r4, r0 + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldrb r0, [r3, r2] + cmp r0, #0xff + bhs _02241166 + add r0, r0, #1 + strb r0, [r3, r2] +_02241166: + ldr r0, _02241278 ; =0x00003044 + mov r1, #0x3e + ldr r0, [r4, r0] + lsl r1, r1, #4 + lsl r0, r0, #4 + add r0, r4, r0 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _022411D4 + ldr r1, [r4, #0x6c] + ldr r0, _02241268 ; =0x00002144 + lsl r1, r1, #6 + add r2, r4, r1 + ldr r1, [r4, #0x64] + ldr r0, [r4, r0] + lsl r1, r1, #2 + add r2, r2, r1 + mov r1, #0x76 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #0x6c] + ldr r2, [r4, #0x64] + lsl r0, r0, #6 + add r0, r4, r0 + add r1, #0x10 + str r2, [r0, r1] + ldr r0, [r4, #0x64] + bl FUN_0206A92C + mov r1, #0x7b + ldr r3, [r4, #0x6c] + lsl r1, r1, #2 + add r2, r4, r1 + lsl r5, r3, #6 + ldr r3, [r2, r5] + orr r0, r3 + str r0, [r2, r5] + ldr r2, [r4, #0x6c] + ldr r0, _02241268 ; =0x00002144 + add r5, r2, #0 + add r2, r1, #0 + mov r3, #0x1c + mul r5, r3 + ldr r0, [r4, r0] + add r5, r4, r5 + add r2, #0xec + str r0, [r5, r2] + ldr r0, [r4, #0x6c] + ldr r5, [r4, #0x64] + add r2, r0, #0 + mul r2, r3 + add r0, r4, r2 + add r1, #0xf0 + str r5, [r0, r1] + b _02241232 +_022411D4: + cmp r0, #1 + bne _02241232 + ldr r2, [r4, #0x6c] + ldr r0, _02241268 ; =0x00002144 + lsl r2, r2, #6 + add r3, r4, r2 + ldr r2, [r4, #0x64] + ldr r0, [r4, r0] + lsl r2, r2, #2 + add r2, r3, r2 + lsr r1, r1, #1 + str r0, [r2, r1] + ldr r0, [r4, #0x6c] + ldr r2, [r4, #0x64] + lsl r0, r0, #6 + add r1, r4, r0 + mov r0, #2 + lsl r0, r0, #8 + str r2, [r1, r0] + ldr r0, [r4, #0x64] + bl FUN_0206A92C + mov r1, #0x81 + ldr r3, [r4, #0x6c] + lsl r1, r1, #2 + add r2, r4, r1 + lsl r5, r3, #6 + ldr r3, [r2, r5] + orr r0, r3 + str r0, [r2, r5] + ldr r2, [r4, #0x6c] + ldr r0, _02241268 ; =0x00002144 + add r5, r2, #0 + add r2, r1, #0 + mov r3, #0x1c + mul r5, r3 + ldr r0, [r4, r0] + add r5, r4, r5 + add r2, #0xdc + str r0, [r5, r2] + ldr r0, [r4, #0x6c] + ldr r5, [r4, #0x64] + add r2, r0, #0 + mul r2, r3 + add r0, r4, r2 + add r1, #0xe0 + str r5, [r0, r1] +_02241232: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02241280 ; =0x00002D8C + ldr r2, [r1, r0] + ldr r0, _02241268 ; =0x00002144 + ldr r1, [r4, r0] + add r0, r1, r2 + cmp r0, #0 + bgt _0224128C + mov r0, #0xbb + lsl r0, r0, #2 + add r1, r4, r0 + ldr r3, [r4, #0x64] + mov r0, #0x1c + mul r0, r3 + ldr r3, [r1, r0] + neg r2, r2 + add r2, r3, r2 + str r2, [r1, r0] + b _022412A0 + nop +_02241260: .word 0x0000216C +_02241264: .word 0x00002D90 +_02241268: .word 0x00002144 +_0224126C: .word 0x000030F4 +_02241270: .word 0x00002DB0 +_02241274: .word 0xFEFFFFFF +_02241278: .word 0x00003044 +_0224127C: .word 0x000003DE +_02241280: .word 0x00002D8C +_02241284: .word 0x000030E4 +_02241288: .word 0x00002DBC +_0224128C: + ldr r3, [r4, #0x64] + mov r0, #0xbb + lsl r0, r0, #2 + mov r2, #0x1c + add r5, r3, #0 + add r0, r4, r0 + mul r5, r2 + ldr r2, [r0, r5] + add r1, r2, r1 + str r1, [r0, r5] +_022412A0: + ldr r3, _022412F0 ; =0x00002144 + ldr r0, [r4, #0x6c] + mov r2, #0x82 + lsl r0, r0, #6 + ldr r1, [r4, r3] + add r0, r4, r0 + lsl r2, r2, #2 + str r1, [r0, r2] + ldr r1, [r4, #0x6c] + ldr r0, [r4, #0x64] + lsl r1, r1, #6 + add r5, r4, r1 + add r1, r2, #4 + str r0, [r5, r1] + ldr r0, [r4, #0x6c] + sub r2, #0xf0 + str r0, [r4, r2] + ldr r0, [r4, r3] + add r3, #0x18 + str r0, [r4, r3] + add r0, r4, #0 + mov r1, #1 + mov r2, #2 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x1c + str r0, [r4, #0xc] + ldr r1, _022412F4 ; =0x0000213C + mov r0, #2 + ldr r2, [r4, r1] + lsl r0, r0, #0xc + orr r0, r2 + str r0, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_022412E8: + mov r0, #0x1c + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + nop +_022412F0: .word 0x00002144 +_022412F4: .word 0x0000213C + + thumb_func_start MOD11_022412F8 +MOD11_022412F8: ; 0x022412F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r2, [r4, #0x38] + add r5, r0, #0 + cmp r2, #0 + beq _0224130C + cmp r2, #1 + beq _022413D2 + b _02241490 +_0224130C: + ldr r2, [r4, #0x3c] + cmp r2, #5 + bls _02241314 + b _02241490 +_02241314: + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02241320: ; jump table + .short _0224132C - _02241320 - 2 ; case 0 + .short _02241338 - _02241320 - 2 ; case 1 + .short _0224134A - _02241320 - 2 ; case 2 + .short _0224137E - _02241320 - 2 ; case 3 + .short _02241392 - _02241320 - 2 ; case 4 + .short _022413BC - _02241320 - 2 ; case 5 +_0224132C: + add r2, r2, #1 + str r2, [r4, #0x3c] + bl MOD11_02242774 + cmp r0, #1 + beq _02241390 +_02241338: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD11_02242790 + cmp r0, #1 + beq _02241390 +_0224134A: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + add r2, sp, #0xc + bl MOD11_022449EC + cmp r0, #1 + bne _0224137E + ldr r0, _0224149C ; =0x0000216C + ldr r1, [r4, r0] + ldr r0, _022414A0 ; =0x001FD849 + tst r0, r1 + bne _0224137E + ldr r2, [sp, #0xc] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224137E: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD11_022427E4 + cmp r0, #1 + bne _02241392 +_02241390: + b _02241498 +_02241392: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + add r2, sp, #8 + bl MOD11_02248308 + cmp r0, #1 + bne _022413BC + ldr r2, [sp, #8] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_022413BC: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD11_02242870 + cmp r0, #1 + bne _02241490 + add sp, #0x10 + pop {r3, r4, r5, pc} +_022413D2: + ldr r2, [r4, #0x3c] + cmp r2, #5 + bhi _02241490 + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_022413E4: ; jump table + .short _022413F0 - _022413E4 - 2 ; case 0 + .short _022413FC - _022413E4 - 2 ; case 1 + .short _02241430 - _022413E4 - 2 ; case 2 + .short _02241442 - _022413E4 - 2 ; case 3 + .short _0224146C - _022413E4 - 2 ; case 4 + .short _0224147E - _022413E4 - 2 ; case 5 +_022413F0: + add r2, r2, #1 + str r2, [r4, #0x3c] + bl MOD11_02242774 + cmp r0, #1 + beq _02241498 +_022413FC: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + add r2, sp, #4 + bl MOD11_022449EC + cmp r0, #1 + bne _02241430 + ldr r0, _0224149C ; =0x0000216C + ldr r1, [r4, r0] + ldr r0, _022414A0 ; =0x001FD849 + tst r0, r1 + bne _02241430 + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02241430: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD11_022427E4 + cmp r0, #1 + beq _02241498 +_02241442: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + add r2, sp, #0 + bl MOD11_02248308 + cmp r0, #1 + bne _0224146C + ldr r2, [sp] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224146C: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD11_02242790 + cmp r0, #1 + beq _02241498 +_0224147E: + ldr r0, [r4, #0x3c] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD11_02242870 + cmp r0, #1 + beq _02241498 +_02241490: + mov r0, #0 + str r0, [r4, #0x3c] + mov r0, #0x1e + str r0, [r4, #8] +_02241498: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224149C: .word 0x0000216C +_022414A0: .word 0x001FD849 + + thumb_func_start MOD11_022414A4 +MOD11_022414A4: ; 0x022414A4 + bx lr + .align 2, 0 + + thumb_func_start MOD11_022414A8 +MOD11_022414A8: ; 0x022414A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r1, [r4, #0x40] + add r7, r0, #0 + cmp r1, #7 + bls _022414B8 + b _022416F2 +_022414B8: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022414C4: ; jump table + .short _022414D4 - _022414C4 - 2 ; case 0 + .short _0224154E - _022414C4 - 2 ; case 1 + .short _02241562 - _022414C4 - 2 ; case 2 + .short _02241588 - _022414C4 - 2 ; case 3 + .short _0224159C - _022414C4 - 2 ; case 4 + .short _022415B6 - _022414C4 - 2 ; case 5 + .short _022415E0 - _022414C4 - 2 ; case 6 + .short _02241674 - _022414C4 - 2 ; case 7 +_022414D4: + mov r1, #0 + ldr r5, [r4, #0x44] + str r1, [sp, #4] + bl MOD11_0222FF84 + cmp r5, r0 + bge _02241544 + add r6, r4, #0 + add r6, #0x44 +_022414E6: + mov r0, #0xc0 + mul r0, r5 + mov r1, #0xb7 + add r0, r4, r0 + lsl r1, r1, #6 + ldr r2, [r0, r1] + ldr r1, _02241700 ; =0x200400C0 + tst r1, r2 + bne _0224152C + ldr r1, _02241704 ; =0x00002DC4 + ldr r2, [r0, r1] + ldr r1, _02241700 ; =0x200400C0 + tst r1, r2 + beq _0224152C + ldr r1, _02241704 ; =0x00002DC4 + ldr r2, [r0, r1] + ldr r1, _02241708 ; =0xDFFBFF3F + and r2, r1 + ldr r1, _02241704 ; =0x00002DC4 + str r2, [r0, r1] + ldr r2, _0224170C ; =0x0000011F + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0x46 + ldr r1, [r4, #0x44] + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp, #4] +_0224152C: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + ldr r0, [sp, #4] + cmp r0, #0 + bne _022415B4 + ldr r5, [r4, #0x44] + add r0, r7, #0 + bl MOD11_0222FF84 + cmp r5, r0 + blt _022414E6 +_02241544: + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x44] +_0224154E: + ldr r0, [r4, #0x40] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x40] + ldr r2, [r4, #8] + add r0, r7, #0 + bl MOD11_02248A78 + cmp r0, #1 + beq _022415B4 +_02241562: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022476DC + add r2, r0, #0 + beq _02241582 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02241582: + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] +_02241588: + ldr r0, [r4, #0x40] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x40] + ldr r2, [r4, #0x64] + add r0, r7, #0 + bl MOD11_02248C0C + cmp r0, #1 + beq _022415B4 +_0224159C: + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + ldr r2, [r4, #0x6c] + cmp r2, #0xff + beq _022415B6 + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02248C0C + cmp r0, #1 + bne _022415B6 +_022415B4: + b _022416FC +_022415B6: + ldr r0, [r4, #0x40] + add r1, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x40] + add r0, r7, #0 + add r2, sp, #0xc + bl MOD11_02249B94 + cmp r0, #1 + bne _022415E0 + ldr r2, [sp, #0xc] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_022415E0: + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x60 + bne _022415F0 + mov r2, #0 + b _02241604 +_022415F0: + ldr r0, _02241710 ; =0x00002160 + ldr r2, [r4, r0] + cmp r2, #0 + bne _02241604 + ldr r0, _02241714 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _02241718 ; =0x000003E2 + ldrb r2, [r1, r0] +_02241604: + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + ldr r3, [r4, #0x6c] + cmp r3, #0xff + beq _02241674 + mov r0, #0xc0 + add r5, r3, #0 + mul r5, r0 + ldr r0, _0224171C ; =0x00002DAC + add r1, r4, r5 + ldr r1, [r1, r0] + mov r0, #0x20 + tst r1, r0 + beq _02241674 + ldr r1, _02241720 ; =0x0000216C + lsl r0, r0, #9 + ldr r1, [r4, r1] + tst r0, r1 + bne _02241674 + ldr r0, [r4, #0x64] + cmp r3, r0 + beq _02241674 + mov r0, #0x1c + mul r0, r3 + add r6, r4, r0 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + bne _0224164A + add r0, #8 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02241674 +_0224164A: + ldr r0, _02241724 ; =0x00002D8C + add r1, r4, r5 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02241674 + cmp r2, #0xa + bne _02241674 + mov r0, #0x46 + lsl r0, r0, #2 + str r3, [r4, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x1d + bl MOD11_022431DC + ldr r0, [r4, #8] + add sp, #0x10 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02241674: + mov r0, #0 + str r0, [sp] + ldr r6, [r4, #0x44] + add r0, r7, #0 + bl MOD11_0222FF84 + cmp r6, r0 + bge _022416E2 + add r5, r4, #0 + add r5, #0x44 +_02241688: + ldr r0, _02241728 ; =0x000021EC + add r1, r4, r6 + ldrb r6, [r1, r0] + add r0, r6, #0 + bl FUN_0206A92C + ldr r1, _0224172C ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + ldr r0, [r5] + beq _022416A4 + add r0, r0, #1 + str r0, [r5] + b _022416D6 +_022416A4: + add r0, r0, #1 + str r0, [r5] + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, sp, #8 + bl MOD11_022493A0 + cmp r0, #1 + bne _022416D6 + mov r0, #0x46 + lsl r0, r0, #2 + str r6, [r4, r0] + ldr r2, [sp, #8] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + str r0, [sp] + b _022416E2 +_022416D6: + ldr r6, [r4, #0x44] + add r0, r7, #0 + bl MOD11_0222FF84 + cmp r6, r0 + blt _02241688 +_022416E2: + ldr r0, [sp] + cmp r0, #0 + bne _022416F2 + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x44] +_022416F2: + mov r0, #0 + str r0, [r4, #0x40] + str r0, [r4, #0x44] + mov r0, #0x1f + str r0, [r4, #8] +_022416FC: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241700: .word 0x200400C0 +_02241704: .word 0x00002DC4 +_02241708: .word 0xDFFBFF3F +_0224170C: .word 0x0000011F +_02241710: .word 0x00002160 +_02241714: .word 0x00003044 +_02241718: .word 0x000003E2 +_0224171C: .word 0x00002DAC +_02241720: .word 0x0000216C +_02241724: .word 0x00002D8C +_02241728: .word 0x000021EC +_0224172C: .word 0x00003108 + + thumb_func_start MOD11_02241730 +MOD11_02241730: ; 0x02241730 + bx lr + .align 2, 0 + + thumb_func_start MOD11_02241734 +MOD11_02241734: ; 0x02241734 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _02241820 ; =0x0000217D + add r4, r1, #0 + ldrb r2, [r4, r6] + str r0, [sp] + cmp r2, #0 + beq _0224181A + ldr r3, [r4, #0x74] + mov ip, r3 + cmp r3, #0xff + bne _022417CC + ldr r3, [r4, #0x64] + mov r7, #0xc0 + add r5, r3, #0 + mul r5, r7 + ldr r3, _02241824 ; =0x00002DAC + add r5, r4, r5 + ldr r5, [r5, r3] + mov r3, #7 + tst r3, r5 + bne _022417CC + add r3, r6, #0 + sub r3, #0x11 + ldr r5, [r4, r3] + mov r3, #1 + lsl r3, r3, #0xe + tst r3, r5 + bne _022417CC + sub r2, r6, #1 + ldrb r2, [r4, r2] + sub r3, r2, #1 + sub r2, r6, #1 + strb r3, [r4, r2] + ldrb r2, [r4, r2] + cmp r2, #0 + beq _022417B2 + mov r3, #1 + add r2, r6, #3 + str r3, [r4, r2] + bl MOD11_02247264 + add r1, r6, #0 + sub r1, #0x41 + ldr r2, [r4, r1] + ldr r0, _02241828 ; =0xFFFFBFFF + and r0, r2 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x4c + ldr r0, [r4, r0] + add r1, #0x48 + str r0, [r4, r1] + ldr r2, _0224182C ; =0x00003044 + add r0, r4, #0 + ldr r2, [r4, r2] + mov r1, #0 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x17 + str r0, [r4, #0xc] + b _02241812 +_022417B2: + ldrb r0, [r4, r6] + add r7, #0x70 + mov r1, #1 + str r0, [r4, r7] + add r0, r4, #0 + mov r2, #0x11 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x21 + str r0, [r4, #0xc] + b _02241812 +_022417CC: + mov r0, ip + cmp r0, #0xff + bne _022417E6 + ldr r0, [r4, #0x64] + mov r1, #0xc0 + add r3, r0, #0 + mul r3, r1 + ldr r0, _02241824 ; =0x00002DAC + add r3, r4, r3 + ldr r3, [r3, r0] + mov r0, #7 + tst r0, r3 + beq _022417F6 +_022417E6: + ldr r0, _02241830 ; =0x0000217C + ldrb r0, [r4, r0] + sub r0, r2, r0 + add r1, r0, #1 + mov r0, #0x13 + lsl r0, r0, #4 + str r1, [r4, r0] + b _02241800 +_022417F6: + ldr r0, _02241830 ; =0x0000217C + add r1, #0x70 + ldrb r0, [r4, r0] + sub r0, r2, r0 + str r0, [r4, r1] +_02241800: + add r0, r4, #0 + mov r1, #1 + mov r2, #0x11 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x21 + str r0, [r4, #0xc] +_02241812: + ldr r0, [sp] + bl MOD11_0225679C + pop {r3, r4, r5, r6, r7, pc} +_0224181A: + mov r0, #0x21 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241820: .word 0x0000217D +_02241824: .word 0x00002DAC +_02241828: .word 0xFFFFBFFF +_0224182C: .word 0x00003044 +_02241830: .word 0x0000217C + + thumb_func_start MOD11_02241834 +MOD11_02241834: ; 0x02241834 + push {r3, lr} + ldr r0, _02241858 ; =0x0000213C + ldr r2, [r1, r0] + mov r0, #0xf + lsl r0, r0, #0x18 + tst r0, r2 + beq _02241850 + add r0, r1, #0 + mov r1, #0x21 + add r2, r1, #0 + mov r3, #0 + bl MOD11_0224246C + pop {r3, pc} +_02241850: + mov r0, #0x22 + str r0, [r1, #8] + pop {r3, pc} + nop +_02241858: .word 0x0000213C + + thumb_func_start MOD11_0224185C +MOD11_0224185C: ; 0x0224185C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #0x85 + lsl r1, r1, #6 + add r5, r0, #0 + ldr r2, [r4, r1] + mov r0, #8 + tst r0, r2 + beq _02241880 + mov r0, #8 + bic r2, r0 + str r2, [r4, r1] + ldr r0, [r4, #0x64] + str r0, [r4, #0x6c] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + str r0, [r4, #0x64] +_02241880: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224256C + ldr r0, _022419E0 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _022419E4 ; =0x000003E6 + ldrh r0, [r1, r0] + cmp r0, #4 + bne _0224194C + ldr r0, _022419E8 ; =0x0000213C + ldr r1, [r4, r0] + mov r0, #2 + tst r0, r1 + bne _0224194C + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r1, _022419EC ; =0x0000217E + ldrb r2, [r4, r1] + cmp r2, r0 + bge _0224194C + mov r2, #0xd + add r0, r1, #6 + str r2, [r4, r0] + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r1, [r4, #0x64] + add r0, r5, #0 + bl MOD11_0222FF7C + bl MOD11_02253A4C + mov r1, #1 + add r7, r0, #0 + and r7, r1 +_022418CE: + ldr r1, _022419EC ; =0x0000217E + ldr r0, _022419EC ; =0x0000217E + ldrb r1, [r4, r1] + ldrb r0, [r4, r0] + add r2, r1, #1 + ldr r1, _022419EC ; =0x0000217E + strb r2, [r4, r1] + add r1, r4, r0 + ldr r0, _022419F0 ; =0x000021EC + ldrb r6, [r1, r0] + add r0, r6, #0 + bl FUN_0206A92C + ldr r1, _022419F4 ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + bne _02241936 + mov r0, #0xc0 + mul r0, r6 + add r1, r4, r0 + ldr r0, _022419F8 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02241936 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0222FF7C + str r0, [sp] + cmp r7, #0 + beq _02241916 + bl MOD11_02253A4C + mov r1, #1 + tst r0, r1 + beq _02241926 +_02241916: + cmp r7, #0 + bne _02241936 + ldr r0, [sp] + bl MOD11_02253A4C + mov r1, #1 + tst r0, r1 + beq _02241936 +_02241926: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02247264 + str r6, [r4, #0x6c] + mov r0, #0x16 + str r0, [r4, #8] + b _02241944 +_02241936: + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r1, _022419EC ; =0x0000217E + ldrb r1, [r4, r1] + cmp r1, r0 + blt _022418CE +_02241944: + add r0, r5, #0 + bl MOD11_0225679C + pop {r3, r4, r5, r6, r7, pc} +_0224194C: + ldr r0, _022419E0 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _022419E4 ; =0x000003E6 + ldrh r0, [r1, r0] + cmp r0, #8 + bne _022419DA + ldr r0, _022419E8 ; =0x0000213C + ldr r1, [r4, r0] + mov r0, #2 + tst r0, r1 + bne _022419DA + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r1, _022419EC ; =0x0000217E + ldrb r2, [r4, r1] + cmp r2, r0 + bge _022419DA + mov r2, #0xd + add r0, r1, #6 + str r2, [r4, r0] + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r7, _022419EC ; =0x0000217E +_02241982: + ldr r0, _022419EC ; =0x0000217E + ldrb r1, [r4, r0] + ldrb r0, [r4, r7] + add r1, r4, r1 + add r0, r0, #1 + strb r0, [r4, r7] + ldr r0, _022419F0 ; =0x000021EC + ldrb r6, [r1, r0] + add r0, r6, #0 + bl FUN_0206A92C + ldr r1, _022419F4 ; =0x00003108 + ldrb r1, [r4, r1] + tst r0, r1 + bne _022419C4 + mov r0, #0xc0 + mul r0, r6 + add r1, r4, r0 + ldr r0, _022419F8 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _022419C4 + ldr r0, [r4, #0x64] + cmp r6, r0 + beq _022419C4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02247264 + str r6, [r4, #0x6c] + mov r0, #0x16 + str r0, [r4, #8] + b _022419D2 +_022419C4: + add r0, r5, #0 + bl MOD11_0222FF84 + ldr r1, _022419EC ; =0x0000217E + ldrb r1, [r4, r1] + cmp r1, r0 + blt _02241982 +_022419D2: + add r0, r5, #0 + bl MOD11_0225679C + pop {r3, r4, r5, r6, r7, pc} +_022419DA: + mov r0, #0x23 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022419E0: .word 0x00003044 +_022419E4: .word 0x000003E6 +_022419E8: .word 0x0000213C +_022419EC: .word 0x0000217E +_022419F0: .word 0x000021EC +_022419F4: .word 0x00003108 +_022419F8: .word 0x00002D8C + + thumb_func_start MOD11_022419FC +MOD11_022419FC: ; 0x022419FC + push {r4, lr} + ldr r0, _02241A38 ; =0x0000213C + add r4, r1, #0 + ldr r1, [r4, r0] + mov r0, #0xf + lsl r0, r0, #0x1c + and r0, r1 + beq _02241A32 + lsr r0, r0, #0x1c + bl FUN_0206A94C + str r0, [r4, #0x74] + ldr r1, _02241A38 ; =0x0000213C + ldr r0, _02241A3C ; =0x0FFFFFFF + ldr r2, [r4, r1] + and r0, r2 + str r0, [r4, r1] + ldr r2, _02241A40 ; =0x00000115 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x24 + str r0, [r4, #0xc] + pop {r4, pc} +_02241A32: + mov r0, #0x24 + str r0, [r4, #8] + pop {r4, pc} + .align 2, 0 +_02241A38: .word 0x0000213C +_02241A3C: .word 0x0FFFFFFF +_02241A40: .word 0x00000115 + + thumb_func_start MOD11_02241A44 +MOD11_02241A44: ; 0x02241A44 + push {r4, lr} + add r4, r1, #0 + bl MOD11_022429B0 + cmp r0, #1 + beq _02241A54 + mov r0, #0x26 + str r0, [r4, #8] +_02241A54: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02241A58 +MOD11_02241A58: ; 0x02241A58 + bx lr + .align 2, 0 + + thumb_func_start MOD11_02241A5C +MOD11_02241A5C: ; 0x02241A5C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #0x64] + add r5, r0, #0 + add r0, r4, #0 + bl MOD11_02249D90 + ldr r1, _02241B60 ; =0x0000213C + lsl r0, r0, #0x18 + ldr r3, [r4, r1] + mov r2, #0x20 + lsr r0, r0, #0x18 + tst r2, r3 + bne _02241A82 + add r1, r1, #4 + ldr r2, [r4, r1] + mov r1, #4 + tst r1, r2 + beq _02241AC4 +_02241A82: + cmp r0, #0x36 + beq _02241A8E + cmp r0, #0x72 + beq _02241A8E + cmp r0, #0x7c + bne _02241AB6 +_02241A8E: + mov r0, #0xc1 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0xa5 + beq _02241AC4 + cmp r0, #0xe2 + bne _02241AA8 + mov r1, #0x85 + lsl r1, r1, #6 + ldr r2, [r4, r1] + mov r1, #0x40 + tst r1, r2 + bne _02241AC4 +_02241AA8: + ldr r2, [r4, #0x64] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _02241B64 ; =0x00002DF8 + strh r0, [r2, r1] + b _02241AC4 +_02241AB6: + ldr r2, [r4, #0x64] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _02241B64 ; =0x00002DF8 + mov r0, #0 + strh r0, [r2, r1] +_02241AC4: + ldr r0, _02241B60 ; =0x0000213C + mov r1, #1 + ldr r2, [r4, r0] + lsl r1, r1, #0x14 + tst r1, r2 + bne _02241B2C + add r0, r0, #4 + ldr r1, [r4, r0] + mov r0, #4 + tst r0, r1 + beq _02241AF2 + ldr r2, [r4, #0x64] + ldr r1, _02241B68 ; =0x00003044 + lsl r2, r2, #1 + add r3, r4, r2 + add r2, r1, #0 + ldr r0, [r4, r1] + add r2, #0x18 + strh r0, [r3, r2] + sub r0, r1, #4 + ldr r2, [r4, r0] + add r0, r1, #4 + b _02241B00 +_02241AF2: + ldr r0, [r4, #0x64] + mov r2, #0 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _02241B6C ; =0x0000305C + strh r2, [r1, r0] + sub r0, #0x14 +_02241B00: + str r2, [r4, r0] + mov r0, #0x85 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x40 + tst r0, r1 + beq _02241B20 + mov r0, #0xc1 + ldr r1, [r4, #0x64] + lsl r0, r0, #6 + ldr r2, [r4, r0] + lsl r1, r1, #1 + add r1, r4, r1 + add r0, #0x3c + strh r2, [r1, r0] + b _02241B2C +_02241B20: + ldr r0, [r4, #0x64] + mov r2, #0 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _02241B70 ; =0x0000307C + strh r2, [r1, r0] +_02241B2C: + mov r0, #0x85 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #4 + tst r0, r1 + beq _02241B48 + mov r0, #0xc1 + ldr r1, [r4, #0x64] + lsl r0, r0, #6 + ldr r2, [r4, r0] + lsl r1, r1, #1 + add r1, r4, r1 + add r0, #0x6c + strh r2, [r1, r0] +_02241B48: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224256C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224ABF8 + mov r0, #0x27 + str r0, [r4, #8] + pop {r3, r4, r5, pc} + nop +_02241B60: .word 0x0000213C +_02241B64: .word 0x00002DF8 +_02241B68: .word 0x00003044 +_02241B6C: .word 0x0000305C +_02241B70: .word 0x0000307C + + thumb_func_start MOD11_02241B74 +MOD11_02241B74: ; 0x02241B74 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _02241BF6 + ldr r2, [r4, #0x64] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #0 + bl MOD11_02248898 + cmp r0, #1 + beq _02241C4C + ldr r2, [r4, #0x6c] + cmp r2, #0xff + beq _02241BAA + add r0, r5, #0 + add r1, r4, #0 + mov r3, #0 + bl MOD11_02248898 + cmp r0, #1 + beq _02241C4C +_02241BAA: + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_02242510 + cmp r0, #1 + beq _02241C4C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02241FD8 + cmp r0, #1 + beq _02241C4C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022476DC + add r2, r0, #0 + beq _02241BE2 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_02241BE2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02242924 + cmp r0, #1 + beq _02241C4C + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02242404 +_02241BF6: + add r1, r4, #0 + add r1, #0xec + ldr r1, [r1] + mov r0, #0x27 + add r2, r4, r1 + ldr r1, _02241C50 ; =0x000021E8 + ldrb r2, [r2, r1] + sub r1, #0x40 + lsl r2, r2, #4 + add r2, r4, r2 + str r0, [r2, r1] + ldr r1, [r4, #0x64] + mov r0, #0x1c + mul r0, r1 + add r1, r4, r0 + mov r0, #0xb5 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + beq _02241C34 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224C178 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224728C + mov r1, #0 + b _02241C3C +_02241C34: + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 +_02241C3C: + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + bl MOD11_02245494 + mov r0, #8 + str r0, [r4, #8] +_02241C4C: + pop {r3, r4, r5, pc} + nop +_02241C50: .word 0x000021E8 + + thumb_func_start MOD11_02241C54 +MOD11_02241C54: ; 0x02241C54 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #1 + bl MOD11_0224246C + cmp r0, #1 + beq _02241C6C + mov r0, #0x27 + str r0, [r4, #8] +_02241C6C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02241C70 +MOD11_02241C70: ; 0x02241C70 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_0223145C + mov r1, #0x80 + tst r0, r1 + beq _02241C86 + mov r0, #0x2a + str r0, [r4, #8] + b _02241CE4 +_02241C86: + add r0, r5, #0 + bl MOD11_0223145C + cmp r0, #2 + beq _02241C9A + add r0, r5, #0 + bl MOD11_0223145C + cmp r0, #3 + bne _02241CAE +_02241C9A: + add r0, r4, #0 + mov r1, #1 + mov r2, #5 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x2a + str r0, [r4, #0xc] + b _02241CE4 +_02241CAE: + add r0, r5, #0 + bl MOD11_0223145C + cmp r0, #1 + bne _02241CCC + add r0, r4, #0 + mov r1, #1 + mov r2, #4 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #0x2a + str r0, [r4, #0xc] + b _02241CE4 +_02241CCC: + add r0, r5, #0 + bl MOD11_0223145C + cmp r0, #4 + beq _02241CE0 + add r0, r5, #0 + bl MOD11_0223145C + cmp r0, #5 + bne _02241CE4 +_02241CE0: + mov r0, #0x2a + str r0, [r4, #8] +_02241CE4: + ldr r0, _02241CEC ; =0x0000311F + mov r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02241CEC: .word 0x0000311F + + thumb_func_start MOD11_02241CF0 +MOD11_02241CF0: ; 0x02241CF0 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + bl MOD11_0222FF74 + mov r1, #4 + add r4, r0, #0 + and r4, r1 + bne _02241D16 + add r0, r6, #0 + mov r1, #0 + bl MOD11_0222FF88 + add r6, r0, #0 + bl FUN_02069C4C + add r0, r6, #0 + bl FUN_02069DC8 +_02241D16: + cmp r4, #0 + beq _02241D20 + mov r0, #0x16 + bl FUN_020311DC +_02241D20: + mov r0, #0x2b + str r0, [r5, #8] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02241D28 +MOD11_02241D28: ; 0x02241D28 + bx lr + .align 2, 0 + + thumb_func_start MOD11_02241D2C +MOD11_02241D2C: ; 0x02241D2C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r1, [sp, #4] + mov r1, #0 + str r0, [sp] + str r1, [sp, #0x30] + bl MOD11_0222FF84 + str r0, [sp, #0x28] + ldr r0, [sp] + bl MOD11_0222FF74 + str r0, [sp, #0x24] + ldr r0, [sp, #4] + ldr r0, [r0, #8] + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + cmp r0, #0 + bgt _02241D58 + b _02241F4A +_02241D58: + ldr r0, [sp, #4] + mov r1, #2 + str r0, [sp, #0x1c] + str r0, [sp, #0x18] + ldr r0, [sp, #0x24] + and r0, r1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x24] + mov r1, #0x18 + and r0, r1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x24] + mov r1, #0x10 + and r0, r1 + str r0, [sp, #0xc] +_02241D76: + mov r1, #0x4f + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r0, #1 + bic r2, r0 + ldr r0, [sp, #0x1c] + str r2, [r0, r1] + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02241D92 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _02241DA4 +_02241D92: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02241E8A + ldr r0, [sp] + ldr r1, [sp, #0x2c] + bl MOD11_02230270 + cmp r0, #0 + bne _02241E8A +_02241DA4: + ldr r3, _02241FC8 ; =0x00002D8C + ldr r0, [sp, #0x18] + ldr r0, [r0, r3] + cmp r0, #0 + bne _02241DCC + ldr r1, [sp, #0x2c] + mov r2, #2 + add r4, r1, #0 + eor r4, r2 + mov r1, #0xc0 + add r5, r4, #0 + mul r5, r1 + ldr r1, [sp, #4] + add r1, r1, r5 + ldr r1, [r1, r3] + cmp r1, #0 + bne _02241DCC + ldr r1, [sp, #0x2c] + tst r1, r2 + bne _02241DD0 +_02241DCC: + cmp r0, #0 + beq _02241DD2 +_02241DD0: + b _02241F30 +_02241DD2: + ldr r0, [sp] + ldr r1, [sp, #0x2c] + mov r7, #0 + bl MOD11_0222FF88 + add r6, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x2c] + bl MOD11_0222FF7C + add r0, r6, #0 + add r5, r7, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02241E4A + ldr r0, [sp, #0x2c] + mov r1, #2 + eor r1, r0 + ldr r0, [sp, #4] + add r0, r0, r1 + str r0, [sp, #8] +_02241DFE: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02241E3E + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02241FCC ; =0x000001EE + cmp r0, r1 + beq _02241E3E + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02241E3E + ldr r2, [sp, #8] + ldr r1, _02241FD0 ; =0x0000219C + ldrb r1, [r2, r1] + cmp r5, r1 + beq _02241E3E + add r7, r7, r0 +_02241E3E: + add r0, r6, #0 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _02241DFE +_02241E4A: + cmp r7, #0 + bne _02241E6E + ldr r0, [sp, #0x2c] + bl FUN_0206A92C + ldr r2, _02241FD4 ; =0x00003108 + ldr r1, [sp, #4] + ldrb r1, [r1, r2] + orr r1, r0 + ldr r0, [sp, #4] + strb r1, [r0, r2] + add r1, r0, #0 + ldr r0, [sp, #0x2c] + mov r2, #6 + add r1, r1, r0 + ldr r0, _02241FD0 ; =0x0000219C + strb r2, [r1, r0] + b _02241F30 +_02241E6E: + ldr r1, [sp, #0x20] + ldr r0, [sp, #4] + str r1, [r0, #0xc] + mov r1, #0x15 + str r1, [r0, #8] + mov r1, #0x4f + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r0, #1 + orr r2, r0 + ldr r0, [sp, #0x1c] + str r2, [r0, r1] + b _02241F30 +_02241E8A: + ldr r1, _02241FC8 ; =0x00002D8C + ldr r0, [sp, #0x18] + ldr r0, [r0, r1] + cmp r0, #0 + bne _02241F30 + ldr r0, [sp] + ldr r1, [sp, #0x2c] + mov r7, #0 + bl MOD11_0222FF88 + add r6, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x2c] + bl MOD11_0222FF7C + add r0, r6, #0 + add r5, r7, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02241EF2 +_02241EB4: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02241EE6 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02241FCC ; =0x000001EE + cmp r0, r1 + beq _02241EE6 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r7, r7, r0 +_02241EE6: + add r0, r6, #0 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _02241EB4 +_02241EF2: + cmp r7, #0 + bne _02241F16 + ldr r0, [sp, #0x2c] + bl FUN_0206A92C + ldr r2, _02241FD4 ; =0x00003108 + ldr r1, [sp, #4] + ldrb r1, [r1, r2] + orr r1, r0 + ldr r0, [sp, #4] + strb r1, [r0, r2] + add r1, r0, #0 + ldr r0, [sp, #0x2c] + mov r2, #6 + add r1, r1, r0 + ldr r0, _02241FD0 ; =0x0000219C + strb r2, [r1, r0] + b _02241F30 +_02241F16: + ldr r1, [sp, #0x20] + ldr r0, [sp, #4] + str r1, [r0, #0xc] + mov r1, #0x15 + str r1, [r0, #8] + mov r1, #0x4f + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r0, #1 + orr r2, r0 + ldr r0, [sp, #0x1c] + str r2, [r0, r1] +_02241F30: + ldr r0, [sp, #0x1c] + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, #0xc0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + add r1, r0, #1 + ldr r0, [sp, #0x28] + str r1, [sp, #0x2c] + cmp r1, r0 + bge _02241F4A + b _02241D76 +_02241F4A: + ldr r0, [sp, #4] + ldr r0, [r0, #8] + cmp r0, #0x15 + bne _02241FC0 + ldr r0, [sp, #0x24] + mov r1, #0x86 + tst r0, r1 + bne _02241FB2 + ldr r0, [sp] + bl MOD11_02230E70 + cmp r0, #0 + bne _02241FB2 + mov r1, #0x4f + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r2, #1 + tst r0, r2 + beq _02241F7C + ldr r0, [sp, #4] + add r1, r1, #4 + ldr r0, [r0, r1] + tst r0, r2 + bne _02241FB2 +_02241F7C: + ldr r0, [sp] + ldr r1, [sp, #4] + mov r2, #0 + bl MOD11_02246DE0 + cmp r0, #0 + beq _02241FB2 + mov r1, #0x4f + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r2, #1 + tst r0, r2 + beq _02241FA0 + mov r2, #0 + sub r1, r1, #4 + ldr r0, [sp, #4] + b _02241FA4 +_02241FA0: + ldr r0, [sp, #4] + sub r1, r1, #4 +_02241FA4: + str r2, [r0, r1] + ldr r0, [sp, #4] + mov r1, #1 + mov r2, #0xe7 + bl MOD11_022431DC + b _02241FBC +_02241FB2: + ldr r0, [sp, #4] + mov r1, #1 + mov r2, #0xa + bl MOD11_022431DC +_02241FBC: + mov r0, #1 + str r0, [sp, #0x30] +_02241FC0: + ldr r0, [sp, #0x30] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_02241FC8: .word 0x00002D8C +_02241FCC: .word 0x000001EE +_02241FD0: .word 0x0000219C +_02241FD4: .word 0x00003108 + + thumb_func_start MOD11_02241FD8 +MOD11_02241FD8: ; 0x02241FD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp] + str r1, [sp, #4] + bl MOD11_0222FF84 + str r0, [sp, #0x24] + ldr r0, [sp] + bl MOD11_0222FF74 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + cmp r0, #0 + bgt _02241FFC + b _02242256 +_02241FFC: + ldr r0, [sp, #0x20] + mov r1, #8 + and r0, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + mov r1, #0x10 + and r0, r1 + str r0, [sp, #8] +_0224200C: + ldr r0, [sp, #0x20] + sub r0, #0x4a + cmp r0, #1 + bhi _022420A6 + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_02230270 + cmp r0, #0 + bne _022420A6 + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_02230260 + cmp r0, #2 + bne _022420C8 + ldr r1, _0224233C ; =0x00002D8C + ldr r0, [sp, #4] + ldr r0, [r0, r1] + cmp r0, #0 + bne _022420C8 + ldr r0, [sp] + ldr r1, [sp, #0x28] + mov r7, #0 + bl MOD11_0222FF88 + add r6, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_0222FF7C + add r0, r6, #0 + add r4, r7, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02242094 +_02242056: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r5, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02242088 + add r0, r5, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242340 ; =0x000001EE + cmp r0, r1 + beq _02242088 + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r7, r7, r0 +_02242088: + add r0, r6, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _02242056 +_02242094: + cmp r7, #0 + bne _022420C8 + ldr r0, [sp, #0x1c] + mov r1, #2 + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + b _02242242 +_022420A6: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _022420BE + ldr r0, [sp, #8] + cmp r0, #0 + beq _022421B0 + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_02230270 + cmp r0, #0 + beq _022421B0 +_022420BE: + ldr r1, _0224233C ; =0x00002D8C + ldr r0, [sp, #4] + ldr r0, [r0, r1] + cmp r0, #0 + beq _022420CA +_022420C8: + b _02242242 +_022420CA: + ldr r0, [sp] + ldr r1, [sp, #0x28] + mov r5, #0 + bl MOD11_0222FF88 + add r7, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_022302BC + add r1, r0, #0 + ldr r0, [sp] + bl MOD11_0222FF88 + str r0, [sp, #0x18] + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_0222FF7C + str r0, [sp, #0x14] + add r0, r7, #0 + add r4, r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0224213C +_022420FE: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02242130 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242340 ; =0x000001EE + cmp r0, r1 + beq _02242130 + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r5, r5, r0 +_02242130: + add r0, r7, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _022420FE +_0224213C: + ldr r0, [sp, #0x18] + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02242186 + ldr r7, _02242340 ; =0x000001EE +_0224214A: + ldr r0, [sp, #0x18] + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0224217A + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, r7 + beq _0224217A + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r5, r5, r0 +_0224217A: + ldr r0, [sp, #0x18] + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _0224214A +_02242186: + cmp r5, #0 + bne _02242242 + ldr r0, [sp, #0x14] + bl MOD11_02253A4C + mov r1, #1 + tst r0, r1 + beq _022421A2 + ldr r0, [sp, #0x1c] + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + b _02242242 +_022421A2: + ldr r0, [sp, #0x1c] + mov r1, #2 + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + b _02242242 +_022421B0: + ldr r1, _0224233C ; =0x00002D8C + ldr r0, [sp, #4] + ldr r0, [r0, r1] + cmp r0, #0 + bne _02242242 + ldr r0, [sp] + ldr r1, [sp, #0x28] + mov r7, #0 + bl MOD11_0222FF88 + add r6, r0, #0 + ldr r0, [sp] + ldr r1, [sp, #0x28] + bl MOD11_0222FF7C + str r0, [sp, #0x10] + add r0, r6, #0 + add r4, r7, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0224221A +_022421DC: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r5, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0224220E + add r0, r5, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242340 ; =0x000001EE + cmp r0, r1 + beq _0224220E + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r7, r7, r0 +_0224220E: + add r0, r6, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _022421DC +_0224221A: + cmp r7, #0 + bne _02242242 + ldr r0, [sp, #0x10] + bl MOD11_02253A4C + mov r1, #1 + tst r0, r1 + beq _02242236 + ldr r0, [sp, #0x1c] + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + b _02242242 +_02242236: + ldr r0, [sp, #0x1c] + mov r1, #2 + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] +_02242242: + ldr r0, [sp, #4] + add r0, #0xc0 + str r0, [sp, #4] + ldr r0, [sp, #0x28] + add r1, r0, #1 + ldr r0, [sp, #0x24] + str r1, [sp, #0x28] + cmp r1, r0 + bge _02242256 + b _0224200C +_02242256: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0224226C + ldr r0, [sp, #0x20] + mov r1, #1 + tst r0, r1 + beq _0224226C + ldr r0, [sp, #0x20] + mov r1, #4 + tst r0, r1 + beq _02242282 +_0224226C: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0224231C + ldr r0, [sp, #0x20] + mov r1, #0x80 + tst r0, r1 + beq _0224231C + ldr r0, [sp, #0x20] + mov r1, #4 + tst r0, r1 + bne _0224231C +_02242282: + ldr r0, [sp] + mov r1, #1 + bl MOD11_02230188 + ldrb r0, [r0, #1] + sub r0, #0x3e + cmp r0, #0x23 + bhi _0224230E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224229E: ; jump table + .short _022422E6 - _0224229E - 2 ; case 0 + .short _0224230E - _0224229E - 2 ; case 1 + .short _022422E6 - _0224229E - 2 ; case 2 + .short _02242306 - _0224229E - 2 ; case 3 + .short _02242306 - _0224229E - 2 ; case 4 + .short _02242306 - _0224229E - 2 ; case 5 + .short _02242306 - _0224229E - 2 ; case 6 + .short _022422EE - _0224229E - 2 ; case 7 + .short _0224230E - _0224229E - 2 ; case 8 + .short _0224230E - _0224229E - 2 ; case 9 + .short _022422F6 - _0224229E - 2 ; case 10 + .short _022422F6 - _0224229E - 2 ; case 11 + .short _022422E6 - _0224229E - 2 ; case 12 + .short _022422E6 - _0224229E - 2 ; case 13 + .short _022422E6 - _0224229E - 2 ; case 14 + .short _022422E6 - _0224229E - 2 ; case 15 + .short _022422E6 - _0224229E - 2 ; case 16 + .short _022422E6 - _0224229E - 2 ; case 17 + .short _0224230E - _0224229E - 2 ; case 18 + .short _0224230E - _0224229E - 2 ; case 19 + .short _0224230E - _0224229E - 2 ; case 20 + .short _0224230E - _0224229E - 2 ; case 21 + .short _0224230E - _0224229E - 2 ; case 22 + .short _0224230E - _0224229E - 2 ; case 23 + .short _022422FE - _0224229E - 2 ; case 24 + .short _022422F6 - _0224229E - 2 ; case 25 + .short _022422F6 - _0224229E - 2 ; case 26 + .short _022422F6 - _0224229E - 2 ; case 27 + .short _0224230E - _0224229E - 2 ; case 28 + .short _0224230E - _0224229E - 2 ; case 29 + .short _0224230E - _0224229E - 2 ; case 30 + .short _0224230E - _0224229E - 2 ; case 31 + .short _0224230E - _0224229E - 2 ; case 32 + .short _0224230E - _0224229E - 2 ; case 33 + .short _0224230E - _0224229E - 2 ; case 34 + .short _022422E6 - _0224229E - 2 ; case 35 +_022422E6: + ldr r0, _02242344 ; =0x00000469 + bl FUN_0200521C + b _02242314 +_022422EE: + ldr r0, _02242348 ; =0x0000046A + bl FUN_0200521C + b _02242314 +_022422F6: + ldr r0, _0224234C ; =0x0000046B + bl FUN_0200521C + b _02242314 +_022422FE: + ldr r0, _02242350 ; =0x0000046C + bl FUN_0200521C + b _02242314 +_02242306: + ldr r0, _02242354 ; =0x0000046D + bl FUN_0200521C + b _02242314 +_0224230E: + ldr r0, _02242358 ; =0x00000468 + bl FUN_0200521C +_02242314: + ldr r0, [sp] + mov r1, #2 + bl MOD11_02231484 +_0224231C: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0224232A + ldr r0, [sp] + ldr r1, [sp, #0x1c] + bl MOD11_02231468 +_0224232A: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _02242336 + add sp, #0x2c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02242336: + mov r0, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224233C: .word 0x00002D8C +_02242340: .word 0x000001EE +_02242344: .word 0x00000469 +_02242348: .word 0x0000046A +_0224234C: .word 0x0000046B +_02242350: .word 0x0000046C +_02242354: .word 0x0000046D +_02242358: .word 0x00000468 + + thumb_func_start MOD11_0224235C +MOD11_0224235C: ; 0x0224235C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + add r5, r1, #0 + ldr r0, _022423F4 ; =0x00002D4C + add r6, r2, #0 + mov r1, #0xc0 + add r0, r5, r0 + mul r1, r6 + add r0, r0, r1 + str r0, [sp, #8] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #8] + lsl r0, r0, #1 + ldrh r1, [r1, r0] + str r3, [sp, #4] + ldr r4, [sp, #0x28] + ldr r7, [sp, #0x30] + str r0, [sp, #0xc] + cmp r1, #0xae + bne _02242396 + add r0, r5, #0 + bl MOD11_02246C20 + cmp r0, #0 + bne _02242396 + mov r0, #0x10 + str r0, [r4] + b _022423A6 +_02242396: + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + ldrh r0, [r1, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _022423F8 ; =0x000003E6 + ldrh r0, [r1, r0] + str r0, [r4] +_022423A6: + ldr r0, [sp, #4] + mov r1, #2 + tst r0, r1 + beq _022423DC + ldr r0, [r4] + add r1, #0xfe + cmp r0, r1 + bne _022423D6 + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_022302BC + bl FUN_0206A92C + ldr r1, _022423FC ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _022423D0 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022423D0: + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022423D6: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022423DC: + ldr r1, [r4] + ldr r0, _02242400 ; =0x00000251 + tst r0, r1 + beq _022423E8 + str r6, [r7] + b _022423EE +_022423E8: + mov r0, #1 + eor r0, r6 + str r0, [r7] +_022423EE: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022423F4: .word 0x00002D4C +_022423F8: .word 0x000003E6 +_022423FC: .word 0x00003108 +_02242400: .word 0x00000251 + + thumb_func_start MOD11_02242404 +MOD11_02242404: ; 0x02242404 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + bl MOD11_0222FF84 + add r4, r0, #0 + mov r3, #0 + cmp r4, #0 + ble _0224243E + ldr r5, [sp] + add r7, r3, #0 + add r6, r5, #0 +_0224241A: + ldr r0, _02242460 ; =0x00002DB0 + add r3, r3, #1 + ldr r2, [r6, r0] + ldr r0, _02242464 ; =0x0000218C + ldr r1, [r5, r0] + mov r0, #0 + mvn r0, r0 + eor r0, r1 + add r1, r2, #0 + and r1, r0 + ldr r0, _02242460 ; =0x00002DB0 + str r1, [r6, r0] + ldr r0, _02242464 ; =0x0000218C + add r6, #0xc0 + str r7, [r5, r0] + add r5, r5, #4 + cmp r3, r4 + blt _0224241A +_0224243E: + ldr r1, [sp] + mov r0, #0 + ldr r1, [r1, #0x64] + lsl r2, r1, #1 + ldr r1, [sp] + add r1, r1, r2 + ldr r2, _02242468 ; =0x00003064 + strh r0, [r1, r2] + ldr r1, [sp] + add r2, #0x60 + ldr r1, [r1, #0x64] + lsl r3, r1, #1 + ldr r1, [sp] + add r1, r1, r3 + strh r0, [r1, r2] + pop {r3, r4, r5, r6, r7, pc} + nop +_02242460: .word 0x00002DB0 +_02242464: .word 0x0000218C +_02242468: .word 0x00003064 + + thumb_func_start MOD11_0224246C +MOD11_0224246C: ; 0x0224246C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _02242504 ; =0x000021EC + str r1, [sp] + ldrb r0, [r5, r0] + add r6, r2, #0 + str r3, [sp, #4] + mov r4, #0 + bl FUN_0206A92C + ldr r1, _02242508 ; =0x0000213C + lsl r0, r0, #0x18 + ldr r2, [r5, r1] + mov r1, #0xf + lsl r1, r1, #0x18 + tst r1, r2 + beq _022424FA + add r1, r2, #0 + tst r1, r0 + bne _022424AE + ldr r7, _02242504 ; =0x000021EC + add r6, r7, #0 + sub r6, #0xb0 +_0224249C: + add r4, r4, #1 + add r0, r5, r4 + ldrb r0, [r0, r7] + bl FUN_0206A92C + ldr r1, [r5, r6] + lsl r0, r0, #0x18 + tst r1, r0 + beq _0224249C +_022424AE: + ldr r2, _02242508 ; =0x0000213C + mov r1, #0 + mvn r1, r1 + eor r1, r0 + ldr r3, [r5, r2] + asr r0, r0, #0x18 + and r1, r3 + str r1, [r5, r2] + bl FUN_0206A94C + str r0, [r5, #0x74] + ldr r0, [sp, #4] + cmp r0, #1 + bne _022424D6 + add r0, r5, #0 + mov r1, #1 + mov r2, #6 + bl MOD11_022431DC + b _022424E0 +_022424D6: + add r0, r5, #0 + mov r1, #1 + mov r2, #0x53 + bl MOD11_022431DC +_022424E0: + mov r0, #0x15 + str r0, [r5, #8] + ldr r0, [sp] + mov r2, #0x27 + str r0, [r5, #0xc] + ldr r0, [r5, #0x74] + add sp, #8 + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224250C ; =0x000021A8 + str r2, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022424FA: + str r6, [r5, #8] + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02242504: .word 0x000021EC +_02242508: .word 0x0000213C +_0224250C: .word 0x000021A8 + + thumb_func_start MOD11_02242510 +MOD11_02242510: ; 0x02242510 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x85 + lsl r0, r0, #6 + add r4, r1, #0 + ldr r1, [r5, r0] + mov r0, #0xf + lsl r0, r0, #0x1c + tst r0, r1 + beq _02242564 + mov r0, #1 + lsl r0, r0, #0x1c + add r2, r1, #0 + tst r2, r0 + bne _02242536 +_0224252E: + lsl r0, r0, #1 + add r2, r1, #0 + tst r2, r0 + beq _0224252E +_02242536: + mov r2, #0x85 + lsl r2, r2, #6 + mov r1, #0 + mvn r1, r1 + eor r1, r0 + ldr r3, [r5, r2] + asr r0, r0, #0x1c + and r1, r3 + str r1, [r5, r2] + bl FUN_0206A94C + mov r2, #0x45 + str r0, [r5, #0x74] + add r0, r5, #0 + mov r1, #1 + lsl r2, r2, #2 + bl MOD11_022431DC + mov r0, #0x15 + str r0, [r5, #8] + str r4, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_02242564: + str r2, [r5, #8] + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0224256C +MOD11_0224256C: ; 0x0224256C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x60 + bne _02242580 + mov r4, #0 + b _02242594 +_02242580: + ldr r0, _0224274C ; =0x00002160 + ldr r4, [r5, r0] + cmp r4, #0 + bne _02242594 + ldr r0, _02242750 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02242754 ; =0x000003E2 + ldrb r4, [r1, r0] +_02242594: + mov r0, #0xc1 + lsl r0, r0, #6 + ldr r2, [r5, r0] + mov r6, #0x10 + lsl r1, r2, #4 + add r3, r5, r1 + ldr r1, _02242758 ; =0x000003E9 + ldrb r1, [r3, r1] + tst r1, r6 + beq _022425DE + ldr r3, _0224275C ; =0x0000213C + lsl r6, r6, #0x10 + ldr r1, [r5, r3] + tst r1, r6 + bne _022425DE + ldr r1, [r5, #0x6c] + cmp r1, #0xff + beq _022425DE + add r3, r3, #4 + ldr r6, [r5, r3] + mov r3, #4 + tst r3, r6 + beq _022425DE + lsl r1, r1, #1 + add r3, r5, r1 + add r1, r0, #0 + add r1, #0x44 + strh r2, [r3, r1] + ldr r2, [r5, #0x6c] + ldr r1, [r5, r0] + lsl r2, r2, #3 + add r3, r5, r2 + ldr r2, [r5, #0x64] + add r0, #0x4c + lsl r2, r2, #1 + add r2, r3, r2 + strh r1, [r2, r0] +_022425DE: + ldr r1, [r5, #0x6c] + cmp r1, #0xff + beq _02242628 + add r0, r5, #0 + bl MOD11_02249D90 + ldr r1, _0224275C ; =0x0000213C + lsl r0, r0, #0x18 + ldr r3, [r5, r1] + mov r2, #0x20 + lsr r0, r0, #0x18 + tst r2, r3 + bne _02242602 + add r1, r1, #4 + ldr r2, [r5, r1] + mov r1, #4 + tst r1, r2 + beq _0224261C +_02242602: + cmp r0, #0x36 + beq _0224261C + cmp r0, #0x72 + beq _0224261C + cmp r0, #0x7c + beq _0224261C + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02242760 ; =0x00002DF8 + mov r2, #0 + strh r2, [r1, r0] +_0224261C: + ldr r0, _0224275C ; =0x0000213C + mov r1, #1 + ldr r2, [r5, r0] + lsl r1, r1, #0x14 + tst r1, r2 + beq _0224262A +_02242628: + b _0224274A +_0224262A: + add r0, r0, #4 + ldr r1, [r5, r0] + mov r0, #4 + tst r0, r1 + beq _02242668 + ldr r1, [r5, #0x6c] + ldr r0, _02242750 ; =0x00003044 + lsl r1, r1, #1 + add r2, r5, r1 + add r1, r0, #0 + ldr r3, [r5, r0] + add r1, #0x20 + strh r3, [r2, r1] + ldr r1, [r5, #0x6c] + ldr r3, [r5, #0x64] + lsl r1, r1, #1 + add r2, r5, r1 + add r1, r0, #0 + add r1, #0x28 + strh r3, [r2, r1] + ldr r1, [r5, #0x6c] + lsl r1, r1, #1 + add r2, r5, r1 + add r1, r0, #0 + add r1, #0x30 + strh r4, [r2, r1] + sub r1, r0, #4 + ldr r1, [r5, r1] + add r0, r0, #4 + str r1, [r5, r0] + b _02242692 +_02242668: + ldr r0, [r5, #0x6c] + ldr r3, _02242764 ; =0x00003064 + lsl r0, r0, #1 + mov r1, #0 + add r0, r5, r0 + strh r1, [r0, r3] + ldr r2, [r5, #0x6c] + mov r0, #0xff + lsl r2, r2, #1 + add r6, r5, r2 + add r2, r3, #0 + add r2, #8 + strh r0, [r6, r2] + ldr r0, [r5, #0x6c] + lsl r0, r0, #1 + add r2, r5, r0 + add r0, r3, #0 + add r0, #0x10 + strh r1, [r2, r0] + sub r3, #0x1c + str r1, [r5, r3] +_02242692: + mov r0, #0x85 + lsl r0, r0, #6 + ldr r2, [r5, r0] + mov r1, #0x40 + tst r1, r2 + beq _02242726 + add r0, #0x2c + ldr r0, [r5, r0] + ldr r2, _02242768 ; =0x801FDA49 + tst r0, r2 + bne _02242726 + ldr r0, _02242750 ; =0x00003044 + ldr r0, [r5, r0] + lsl r1, r0, #4 + add r3, r5, r1 + ldr r1, _0224276C ; =0x000003E6 + ldrh r3, [r3, r1] + cmp r3, #0x40 + bgt _022426C8 + bge _022426DC + cmp r3, #0x10 + bgt _022426C2 + beq _022426DC + b _02242702 +_022426C2: + cmp r3, #0x20 + beq _022426DC + b _02242702 +_022426C8: + lsr r1, r2, #0x17 + cmp r3, r1 + bgt _022426D6 + bge _022426DC + cmp r3, #0x80 + beq _022426DC + b _02242702 +_022426D6: + lsr r1, r2, #0x16 + cmp r3, r1 + bne _02242702 +_022426DC: + ldr r1, [r5, #0x6c] + ldr r2, _02242770 ; =0x000030C4 + lsl r1, r1, #1 + mov r0, #0 + add r1, r5, r1 + strh r0, [r1, r2] + ldr r1, [r5, #0x6c] + mov r4, #0xff + lsl r1, r1, #1 + add r3, r5, r1 + add r1, r2, #0 + add r1, #8 + strh r4, [r3, r1] + ldr r1, [r5, #0x6c] + add r2, #0x10 + lsl r1, r1, #1 + add r1, r5, r1 + strh r0, [r1, r2] + pop {r4, r5, r6, pc} +_02242702: + ldr r1, [r5, #0x6c] + lsl r1, r1, #1 + add r2, r5, r1 + ldr r1, _02242770 ; =0x000030C4 + strh r0, [r2, r1] + ldr r0, [r5, #0x6c] + ldr r3, [r5, #0x64] + lsl r0, r0, #1 + add r2, r5, r0 + add r0, r1, #0 + add r0, #8 + strh r3, [r2, r0] + ldr r0, [r5, #0x6c] + add r1, #0x10 + lsl r0, r0, #1 + add r0, r5, r0 + strh r4, [r0, r1] + pop {r4, r5, r6, pc} +_02242726: + ldr r1, [r5, #0x6c] + ldr r2, _02242770 ; =0x000030C4 + lsl r1, r1, #1 + mov r0, #0 + add r1, r5, r1 + strh r0, [r1, r2] + ldr r1, [r5, #0x6c] + mov r4, #0xff + lsl r1, r1, #1 + add r3, r5, r1 + add r1, r2, #0 + add r1, #8 + strh r4, [r3, r1] + ldr r1, [r5, #0x6c] + add r2, #0x10 + lsl r1, r1, #1 + add r1, r5, r1 + strh r0, [r1, r2] +_0224274A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0224274C: .word 0x00002160 +_02242750: .word 0x00003044 +_02242754: .word 0x000003E2 +_02242758: .word 0x000003E9 +_0224275C: .word 0x0000213C +_02242760: .word 0x00002DF8 +_02242764: .word 0x00003064 +_02242768: .word 0x801FDA49 +_0224276C: .word 0x000003E6 +_02242770: .word 0x000030C4 + + thumb_func_start MOD11_02242774 +MOD11_02242774: ; 0x02242774 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + mov r2, #0x10 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02242790 +MOD11_02242790: ; 0x02242790 + push {r3, r4, r5, lr} + ldr r2, _022427E0 ; =0x0000216C + add r5, r1, #0 + ldr r0, [r5, r2] + mov r4, #0 + cmp r0, #0 + beq _022427C4 + add r1, r2, #0 + add r1, #0x11 + ldrb r1, [r5, r1] + cmp r1, #0 + beq _022427C2 + ldr r1, [r5, #0x74] + cmp r1, #0xff + bne _022427BE + add r2, #0x10 + ldrb r1, [r5, r2] + cmp r1, #1 + beq _022427BE + mov r1, #1 + lsl r1, r1, #0xe + tst r0, r1 + beq _022427C4 +_022427BE: + mov r4, #1 + b _022427C4 +_022427C2: + mov r4, #1 +_022427C4: + cmp r4, #1 + bne _022427DA + add r0, r5, #0 + mov r1, #1 + mov r2, #0x15 + bl MOD11_022431DC + ldr r0, [r5, #8] + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] +_022427DA: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_022427E0: .word 0x0000216C + + thumb_func_start MOD11_022427E4 +MOD11_022427E4: ; 0x022427E4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r2, [r4, #0x6c] + mov r3, #0 + cmp r2, #0xff + bne _022427F4 + add r0, r3, #0 + pop {r3, r4, r5, r6, r7, pc} +_022427F4: + mov r0, #0xc0 + add r5, r2, #0 + mul r5, r0 + mov r1, #2 + ldr r0, _02242864 ; =0x00002DB0 + add r7, r4, r5 + ldr r6, [r7, r0] + lsl r1, r1, #0x16 + tst r1, r6 + beq _0224285E + ldr r1, _02242868 ; =0x0000216C + mov r6, #2 + lsl r6, r6, #0x16 + ldr r1, [r4, r1] + lsr r6, r6, #9 + tst r1, r6 + bne _0224285E + ldr r1, [r4, #0x64] + cmp r2, r1 + beq _0224285E + sub r0, #0x24 + ldr r0, [r7, r0] + cmp r0, #0 + beq _0224285E + mov r0, #0x1c + mul r0, r2 + add r2, r4, r0 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0 + bne _0224283C + add r0, #8 + ldr r0, [r2, r0] + cmp r0, #0 + beq _0224285E +_0224283C: + ldr r0, _0224286C ; =0x00002D59 + add r1, r4, r0 + ldrsb r0, [r1, r5] + cmp r0, #0xc + bge _0224285E + add r0, r0, #1 + strb r0, [r1, r5] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xf5 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r3, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0224285E: + add r0, r3, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02242864: .word 0x00002DB0 +_02242868: .word 0x0000216C +_0224286C: .word 0x00002D59 + + thumb_func_start MOD11_02242870 +MOD11_02242870: ; 0x02242870 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, [r5, #0x64] + add r0, r5, #0 + mov r4, #0 + bl MOD11_02249D90 + add r7, r0, #0 + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r4, #0 + bl MOD11_02249DA4 + add r6, r0, #0 + ldr r0, [r5, #0x6c] + cmp r0, #0xff + beq _0224290A + cmp r7, #0x37 + bne _0224290A + ldr r1, _02242910 ; =0x0000216C + ldr r2, [r5, r1] + ldr r1, _02242914 ; =0x801FDA49 + tst r1, r2 + bne _0224290A + mov r1, #0x1c + mul r1, r0 + mov r0, #0xb6 + add r2, r5, r1 + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0 + bne _022428B8 + add r0, #8 + ldr r0, [r2, r0] + cmp r0, #0 + beq _0224290A +_022428B8: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r6 + bge _0224290A + ldr r0, _02242918 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224291C ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _0224290A + ldr r0, [r5, #0x6c] + mov r1, #0xc0 + mul r1, r0 + add r2, r5, r1 + ldr r1, _02242920 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _0224290A + add r1, r5, #0 + add r1, #0x94 + str r0, [r1] + add r0, r5, #0 + mov r1, #2 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + mov r1, #1 + mov r2, #0xe + bl MOD11_022431DC + ldr r0, [r5, #8] + mov r4, #1 + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] +_0224290A: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02242910: .word 0x0000216C +_02242914: .word 0x801FDA49 +_02242918: .word 0x00003044 +_0224291C: .word 0x000003E9 +_02242920: .word 0x00002D8C + + thumb_func_start MOD11_02242924 +MOD11_02242924: ; 0x02242924 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r4, [r5, #0x5c] + str r0, [sp] + mov r7, #0 + bl MOD11_0222FF84 + cmp r4, r0 + bge _02242994 + add r6, r5, #0 + add r6, #0x5c +_0224293A: + mov r0, #0xc0 + mul r0, r4 + mov r1, #0xb7 + add r0, r5, r0 + lsl r1, r1, #6 + ldr r2, [r0, r1] + ldr r1, _022429A0 ; =0x200400C0 + tst r1, r2 + bne _0224297E + ldr r1, _022429A4 ; =0x00002DC4 + ldr r2, [r0, r1] + ldr r1, _022429A0 ; =0x200400C0 + tst r1, r2 + beq _0224297E + ldr r1, _022429A4 ; =0x00002DC4 + ldr r2, [r0, r1] + ldr r1, _022429A8 ; =0xDFFBFF3F + and r2, r1 + ldr r1, _022429A4 ; =0x00002DC4 + str r2, [r0, r1] + ldr r2, _022429AC ; =0x0000011F + add r0, r5, #0 + mov r1, #1 + bl MOD11_022431DC + mov r0, #0x46 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + str r1, [r5, r0] + ldr r0, [r5, #8] + mov r7, #1 + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] +_0224297E: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + cmp r7, #1 + beq _02242994 + ldr r0, [sp] + ldr r4, [r5, #0x5c] + bl MOD11_0222FF84 + cmp r4, r0 + blt _0224293A +_02242994: + cmp r7, #0 + bne _0224299C + mov r0, #0 + str r0, [r5, #0x5c] +_0224299C: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022429A0: .word 0x200400C0 +_022429A4: .word 0x00002DC4 +_022429A8: .word 0xDFFBFF3F +_022429AC: .word 0x0000011F + + thumb_func_start MOD11_022429B0 +MOD11_022429B0: ; 0x022429B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + mov r6, #0 + bl MOD11_0222FF84 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #4] + ldr r1, [r4, #0x64] + add r0, r4, #0 + add r2, r6, #0 + bl MOD11_02249DA4 + ldr r1, [r4, #8] + str r0, [sp] + add r0, r4, #0 + add r2, r1, #0 + mov r3, #1 + bl MOD11_0224246C + cmp r0, #1 + bne _022429E8 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022429E8: + add r5, r4, #0 + add r5, #0x30 +_022429EC: + ldr r0, [r4, #0x30] + cmp r0, #3 + bls _022429F4 + b _02242B44 +_022429F4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242A00: ; jump table + .short _02242A08 - _02242A00 - 2 ; case 0 + .short _02242A38 - _02242A00 - 2 ; case 1 + .short _02242AB8 - _02242A00 - 2 ; case 2 + .short _02242B3C - _02242A00 - 2 ; case 3 +_02242A08: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _02242B5C ; =0x00002DB0 + add r0, r4, r0 + ldr r2, [r0, r1] + mov r1, #2 + lsl r1, r1, #0x16 + tst r1, r2 + beq _02242A30 + ldr r1, _02242B60 ; =0x00003044 + ldr r1, [r4, r1] + cmp r1, #0x63 + beq _02242A30 + ldr r1, _02242B5C ; =0x00002DB0 + ldr r2, [r0, r1] + ldr r1, _02242B64 ; =0xFF7FFFFF + and r2, r1 + ldr r1, _02242B5C ; =0x00002DB0 + str r2, [r0, r1] +_02242A30: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02242B44 +_02242A38: + ldr r3, [r4, #0x6c] + cmp r3, #0xff + beq _02242AB0 + ldr r0, [sp, #4] + cmp r0, #0x57 + bne _02242AB0 + mov r0, #0x85 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x10 + tst r0, r1 + bne _02242AB0 + ldr r0, _02242B68 ; =0x0000213C + ldr r1, [r4, r0] + mov r0, #2 + lsl r0, r0, #0xc + tst r0, r1 + beq _02242AB0 + ldr r2, [r4, #0x64] + mov r0, #0x1c + mul r0, r2 + add r1, r4, r0 + mov r0, #0xbb + lsl r0, r0, #2 + ldr r7, [r1, r0] + cmp r7, #0 + beq _02242AB0 + cmp r2, r3 + beq _02242AB0 + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _02242B6C ; =0x00002D8C + ldr r1, [r2, r0] + add r0, r0, #4 + ldr r0, [r2, r0] + cmp r1, r0 + bhs _02242AB0 + cmp r1, #0 + beq _02242AB0 + ldr r1, [sp] + neg r0, r7 + bl MOD11_022476C0 + ldr r1, _02242B70 ; =0x0000215C + mov r2, #0xd5 + str r0, [r4, r1] + mov r0, #0x46 + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r6, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_02242AB0: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02242B44 +_02242AB8: + ldr r0, [sp, #4] + cmp r0, #0x61 + bne _02242B34 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _02242B34 + mov r0, #0x85 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x10 + tst r0, r1 + bne _02242B34 + ldr r0, _02242B68 ; =0x0000213C + ldr r1, [r4, r0] + mov r0, #2 + lsl r0, r0, #0xc + tst r0, r1 + beq _02242B34 + ldr r0, _02242B60 ; =0x00003044 + ldr r0, [r4, r0] + lsl r0, r0, #4 + add r1, r4, r0 + mov r0, #0x3e + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #2 + beq _02242B34 + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _02242B6C ; =0x00002D8C + add r0, r4, r0 + ldr r1, [r0, r1] + cmp r1, #0 + beq _02242B34 + ldr r1, _02242B74 ; =0x00002D90 + ldr r1, [r0, r1] + mov r0, #0 + mvn r0, r0 + mul r0, r1 + mov r1, #0xa + bl MOD11_022476C0 + ldr r1, _02242B70 ; =0x0000215C + mov r2, #0xd6 + str r0, [r4, r1] + mov r0, #0x46 + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r6, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_02242B34: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02242B44 +_02242B3C: + mov r0, #0 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + mov r6, #2 +_02242B44: + cmp r6, #0 + bne _02242B4A + b _022429EC +_02242B4A: + cmp r6, #1 + bne _02242B54 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02242B54: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02242B5C: .word 0x00002DB0 +_02242B60: .word 0x00003044 +_02242B64: .word 0xFF7FFFFF +_02242B68: .word 0x0000213C +_02242B6C: .word 0x00002D8C +_02242B70: .word 0x0000215C +_02242B74: .word 0x00002D90 + + thumb_func_start MOD11_02242B78 +MOD11_02242B78: ; 0x02242B78 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r1, #0 + str r2, [sp, #4] + add r1, r2, #0 + add r2, r3, #0 + str r0, [sp] + bl MOD11_02230014 + ldr r1, [sp, #4] + mov r2, #0xc0 + add r5, r1, #0 + mov r1, #0xb5 + lsl r1, r1, #6 + add r1, r7, r1 + mul r5, r2 + str r1, [sp, #0x18] + mov r1, #5 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + ldr r1, [sp, #0x18] + mov r2, #0 + strh r0, [r1, r5] + add r0, r4, #0 + mov r1, #0xa4 + bl FUN_020671BC + ldr r1, _02242F4C ; =0x00002D42 + add r2, r7, r5 + strh r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xa5 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242F50 ; =0x00002D44 + add r2, r7, r5 + strh r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xa6 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242F54 ; =0x00002D46 + add r2, r7, r5 + strh r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xa7 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242F58 ; =0x00002D48 + add r2, r7, r5 + strh r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xa8 + mov r2, #0 + bl FUN_020671BC + add r1, r7, r5 + ldr r2, _02242F5C ; =0x00002D4A + str r1, [sp, #0xc] + strh r0, [r1, r2] + add r0, r1, #0 + mov r6, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x10] +_02242C02: + add r1, r6, #0 + add r0, r4, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp, #0x14] + ldr r1, _02242F60 ; =0x00002D4C + strh r0, [r2, r1] + add r1, r6, #0 + add r0, r4, #0 + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp, #0x10] + ldr r1, _02242F64 ; =0x00002D6C + strb r0, [r2, r1] + add r1, r6, #0 + add r0, r4, #0 + add r1, #0x3e + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp, #0x10] + ldr r1, _02242F68 ; =0x00002D70 + add r6, r6, #1 + strb r0, [r2, r1] + ldr r0, [sp, #0x14] + add r0, r0, #2 + str r0, [sp, #0x14] + add r0, r2, #0 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r6, #4 + blt _02242C02 + add r0, r1, #0 + sub r0, #0x1c + add r6, r7, r0 + add r0, r4, #0 + mov r1, #0x46 + mov r2, #0 + bl FUN_020671BC + ldr r1, [r6, r5] + mov r2, #0x1f + bic r1, r2 + mov r2, #0x1f + and r0, r2 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x47 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x1b + ldr r2, [r6, r5] + ldr r1, _02242F6C ; =0xFFFFFC1F + lsr r0, r0, #0x16 + and r1, r2 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x48 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x1b + ldr r2, [r6, r5] + ldr r1, _02242F70 ; =0xFFFF83FF + lsr r0, r0, #0x11 + and r1, r2 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x49 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x1b + ldr r2, [r6, r5] + ldr r1, _02242F74 ; =0xFFF07FFF + lsr r0, r0, #0xc + and r1, r2 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x4a + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x1b + ldr r2, [r6, r5] + ldr r1, _02242F78 ; =0xFE0FFFFF + lsr r0, r0, #7 + and r1, r2 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x4b + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x1b + ldr r2, [r6, r5] + ldr r1, _02242F7C ; =0xC1FFFFFF + lsr r0, r0, #2 + and r1, r2 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + ldr r2, [r6, r5] + ldr r1, _02242F80 ; =0xBFFFFFFF + lsl r0, r0, #0x1f + and r1, r2 + lsr r0, r0, #1 + orr r0, r1 + str r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x4d + mov r2, #0 + bl FUN_020671BC + ldr r2, [r6, r5] + ldr r1, _02242F84 ; =0x7FFFFFFF + lsl r0, r0, #0x1f + and r1, r2 + orr r0, r1 + str r0, [r6, r5] + ldr r0, _02242F88 ; =0x0000213C + ldr r1, [r7, r0] + mov r0, #1 + lsl r0, r0, #8 + tst r0, r1 + bne _02242D2E + ldr r0, _02242F8C ; =0x00002D58 + mov r2, #0 + mov r1, #6 +_02242D20: + ldr r3, [sp, #0xc] + add r2, r2, #1 + strb r1, [r3, r0] + add r3, r3, #1 + str r3, [sp, #0xc] + cmp r2, #8 + blt _02242D20 +_02242D2E: + ldr r0, _02242F90 ; =0x00002D68 + mov r1, #1 + add r0, r7, r0 + ldr r2, [r0, r5] + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #2 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #4 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #8 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #0x10 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #0x20 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #0x40 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + mov r1, #0x80 + bic r2, r1 + str r2, [r0, r5] + ldr r2, [r0, r5] + ldr r1, _02242F94 ; =0xFFFFFEFF + and r1, r2 + str r1, [r0, r5] + ldr r2, [r0, r5] + ldr r1, _02242F98 ; =0xFFFFFDFF + and r1, r2 + str r1, [r0, r5] + ldr r2, [r0, r5] + ldr r1, _02242F9C ; =0xFFFFFBFF + and r1, r2 + str r1, [r0, r5] + add r0, r4, #0 + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FA0 ; =0x00002D64 + add r2, r7, r5 + strb r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FA4 ; =0x00002D65 + add r2, r7, r5 + strb r0, [r2, r1] + add r1, #0x59 + add r0, r7, r1 + str r0, [sp, #0x1c] + add r0, r4, #0 + bl FUN_020689E0 + ldr r1, [sp, #0x1c] + mov r2, #0xf + ldrb r1, [r1, r5] + bic r1, r2 + mov r2, #0xf + and r0, r2 + orr r1, r0 + ldr r0, [sp, #0x1c] + strb r1, [r0, r5] + ldr r0, _02242FA8 ; =0x00002D66 + add r6, r7, r0 + add r0, r4, #0 + bl FUN_02068A80 + ldrb r1, [r6, r5] + mov r2, #0x20 + lsl r0, r0, #0x1f + bic r1, r2 + lsr r0, r0, #0x1a + orr r0, r1 + strb r0, [r6, r5] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + ldrb r1, [r6, r5] + mov r2, #0x1f + lsl r0, r0, #0x18 + bic r1, r2 + lsr r2, r0, #0x18 + mov r0, #0x1f + and r0, r2 + orr r0, r1 + strb r0, [r6, r5] + ldr r0, [sp] + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + beq _02242E24 + ldr r2, _02242FAC ; =0x00002D67 + mov r0, #0 + add r3, r7, r5 + add r1, r2, #0 + strb r0, [r3, r2] + add r2, #0x51 + add r1, #0x45 + add r2, r7, r2 + str r0, [r3, r1] + add r1, r2, r5 + str r1, [sp, #8] + strh r0, [r2, r5] + b _02242E58 +_02242E24: + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FAC ; =0x00002D67 + add r2, r7, r5 + strb r0, [r2, r1] + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FB0 ; =0x00002DAC + add r2, r7, r5 + str r0, [r2, r1] + add r1, #0xc + add r6, r7, r1 + add r0, r6, r5 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r6, r5] +_02242E58: + ldr r0, [sp, #4] + mov r1, #0xc0 + add r6, r0, #0 + mul r6, r1 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FB4 ; =0x00002D74 + add r2, r7, r6 + strb r0, [r2, r1] + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FB8 ; =0x00002D75 + add r2, r7, r6 + strb r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FBC ; =0x00002D8C + add r2, r7, r6 + str r0, [r2, r1] + add r0, r4, #0 + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FC0 ; =0x00002D90 + add r2, r7, r6 + str r0, [r2, r1] + add r0, r4, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FC4 ; =0x00002DA4 + add r2, r7, r6 + str r0, [r2, r1] + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_020671BC + ldr r1, _02242FC8 ; =0x00002DA8 + add r2, r7, r6 + str r0, [r2, r1] + add r0, r4, #0 + mov r1, #7 + mov r2, #0 + bl FUN_020671BC + ldr r1, _02242FCC ; =0x00002DB4 + add r2, r7, r6 + str r0, [r2, r1] + add r0, r4, #0 + mov r1, #0x9c + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x1c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1c + ldrb r1, [r1, r5] + mov r2, #0xf0 + lsr r0, r0, #0x18 + bic r1, r2 + orr r1, r0 + ldr r0, [sp, #0x1c] + mov r2, #0 + strb r1, [r0, r5] + add r0, r4, #0 + mov r1, #0x9a + bl FUN_020671BC + ldr r1, _02242FD0 ; =0x00002DBF + add r2, r7, r6 + strb r0, [r2, r1] + mov r0, #5 + bl FUN_02087A6C + mov r1, #0 + mov r2, #5 + str r0, [sp, #0x20] + bl FUN_02087A98 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x20] + ldrh r1, [r1, r5] + bl FUN_02087B78 + ldr r1, _02242FD4 ; =0x00002D60 + add r2, r7, r6 + str r0, [r2, r1] + ldr r0, [sp, #0x20] + bl FUN_02087B0C + ldr r0, [sp, #0x20] + bl FUN_02087A84 + ldr r2, _02242FD8 ; =0x00002D76 + add r0, r4, #0 + add r2, r7, r2 + mov r1, #0x74 + add r2, r2, r6 + bl FUN_020671BC + ldr r2, _02242FDC ; =0x00002D94 + add r0, r4, #0 + add r2, r7, r2 + mov r1, #0x8f + add r2, r2, r6 + bl FUN_020671BC + ldr r0, _02242FE0 ; =0x00002DBC + b _02242FE4 + .align 2, 0 +_02242F4C: .word 0x00002D42 +_02242F50: .word 0x00002D44 +_02242F54: .word 0x00002D46 +_02242F58: .word 0x00002D48 +_02242F5C: .word 0x00002D4A +_02242F60: .word 0x00002D4C +_02242F64: .word 0x00002D6C +_02242F68: .word 0x00002D70 +_02242F6C: .word 0xFFFFFC1F +_02242F70: .word 0xFFFF83FF +_02242F74: .word 0xFFF07FFF +_02242F78: .word 0xFE0FFFFF +_02242F7C: .word 0xC1FFFFFF +_02242F80: .word 0xBFFFFFFF +_02242F84: .word 0x7FFFFFFF +_02242F88: .word 0x0000213C +_02242F8C: .word 0x00002D58 +_02242F90: .word 0x00002D68 +_02242F94: .word 0xFFFFFEFF +_02242F98: .word 0xFFFFFDFF +_02242F9C: .word 0xFFFFFBFF +_02242FA0: .word 0x00002D64 +_02242FA4: .word 0x00002D65 +_02242FA8: .word 0x00002D66 +_02242FAC: .word 0x00002D67 +_02242FB0: .word 0x00002DAC +_02242FB4: .word 0x00002D74 +_02242FB8: .word 0x00002D75 +_02242FBC: .word 0x00002D8C +_02242FC0: .word 0x00002D90 +_02242FC4: .word 0x00002DA4 +_02242FC8: .word 0x00002DA8 +_02242FCC: .word 0x00002DB4 +_02242FD0: .word 0x00002DBF +_02242FD4: .word 0x00002D60 +_02242FD8: .word 0x00002D76 +_02242FDC: .word 0x00002D94 +_02242FE0: .word 0x00002DBC +_02242FE4: + mov r2, #0 + add r1, r7, r6 + strb r2, [r1, r0] + add r0, r0, #1 + strb r2, [r1, r0] + ldr r0, [sp] + ldr r1, [sp, #4] + bl MOD11_02230270 + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, r7, r0 + ldr r0, _02243048 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + lsl r1, r4, #3 + add r2, r7, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #3 + lsr r1, r1, #0x1a + tst r0, r1 + beq _0224302C + ldr r0, [sp, #8] + mov r1, #0 + strh r1, [r0] + ldr r0, _0224304C ; =0x00002DCC + add sp, #0x24 + add r2, r7, r0 + ldr r1, [r2, r5] + ldr r0, _02243050 ; =0xFFBFFFFF + and r0, r1 + str r0, [r2, r5] + pop {r4, r5, r6, r7, pc} +_0224302C: + ldr r0, [sp, #8] + ldrh r0, [r0] + cmp r0, #0 + beq _02243042 + ldr r0, _0224304C ; =0x00002DCC + add r2, r7, r0 + mov r0, #1 + ldr r1, [r2, r5] + lsl r0, r0, #0x16 + orr r0, r1 + str r0, [r2, r5] +_02243042: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02243048: .word 0x0000219C +_0224304C: .word 0x00002DCC +_02243050: .word 0xFFBFFFFF + + thumb_func_start MOD11_02243054 +MOD11_02243054: ; 0x02243054 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r2, #0 + str r1, [sp] + add r1, r5, #0 + add r2, r3, #0 + bl MOD11_02230014 + mov r1, #0xc0 + mul r1, r5 + str r1, [sp, #4] + mov r1, #0xa4 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431A8 ; =0x00002D42 + strh r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa5 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431AC ; =0x00002D44 + strh r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa6 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431B0 ; =0x00002D46 + strh r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa7 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431B4 ; =0x00002D48 + strh r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa8 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431B8 ; =0x00002D4A + strh r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431BC ; =0x00002D74 + strb r0, [r2, r1] + add r0, r6, #0 + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431C0 ; =0x00002D75 + strb r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431C4 ; =0x00002D8C + str r0, [r2, r1] + add r0, r6, #0 + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431C8 ; =0x00002D90 + str r0, [r2, r1] + add r0, r1, #0 + add r0, #0x20 + ldr r2, [r2, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r2 + bne _022431A4 + mov r0, #0xc0 + mul r0, r5 + ldr r2, [sp] + str r0, [sp, #8] + add r7, r2, r0 + add r1, #0x3c + add r0, r2, #0 + add r0, r0, r1 + mov r4, #0 + add r5, r7, #0 + str r0, [sp, #0xc] +_02243142: + add r0, r4, #0 + bl FUN_0206A92C + ldr r2, [sp, #0xc] + ldr r1, [sp, #8] + ldr r1, [r2, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1c + tst r0, r1 + bne _02243186 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + ldr r1, _022431CC ; =0x00002D4C + mov r2, #0 + strh r0, [r7, r1] + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x3a + bl FUN_020671BC + ldr r1, _022431D0 ; =0x00002D6C + mov r2, #0 + strb r0, [r5, r1] + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x3e + bl FUN_020671BC + ldr r1, _022431D4 ; =0x00002D70 + strb r0, [r5, r1] +_02243186: + add r4, r4, #1 + add r7, r7, #2 + add r5, r5, #1 + cmp r4, #4 + blt _02243142 + add r0, r6, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020671BC + ldr r2, [sp] + ldr r1, [sp, #4] + add r2, r2, r1 + ldr r1, _022431D8 ; =0x00002DA4 + str r0, [r2, r1] +_022431A4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022431A8: .word 0x00002D42 +_022431AC: .word 0x00002D44 +_022431B0: .word 0x00002D46 +_022431B4: .word 0x00002D48 +_022431B8: .word 0x00002D4A +_022431BC: .word 0x00002D74 +_022431C0: .word 0x00002D75 +_022431C4: .word 0x00002D8C +_022431C8: .word 0x00002D90 +_022431CC: .word 0x00002D4C +_022431D0: .word 0x00002D6C +_022431D4: .word 0x00002D70 +_022431D8: .word 0x00002DA4 + + thumb_func_start MOD11_022431DC +MOD11_022431DC: ; 0x022431DC + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl LoadFromNARC_7 + mov r1, #0x19 + lsl r1, r1, #6 + cmp r0, r1 + blo _022431F8 + bl ErrorHandling +_022431F8: + add r0, r5, #0 + add r0, #0xac + str r4, [r0] + add r0, r5, #0 + add r0, #0xb0 + str r6, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x27 + lsl r0, r0, #8 + add r0, r5, r0 + add r1, r4, #0 + add r2, r6, #0 + bl LoadFromNARC + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0224321C +MOD11_0224321C: ; 0x0224321C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl LoadFromNARC_7 + mov r1, #0x19 + lsl r1, r1, #6 + cmp r0, r1 + blo _02243238 + bl ErrorHandling +_02243238: + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #4 + blt _02243246 + bl ErrorHandling +_02243246: + add r1, r5, #0 + add r1, #0xb8 + ldr r1, [r1] + add r0, r5, #0 + add r0, #0xac + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + add r1, #0xbc + str r0, [r1] + add r1, r5, #0 + add r1, #0xb8 + ldr r1, [r1] + add r0, r5, #0 + add r0, #0xb0 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + add r1, #0xcc + str r0, [r1] + add r1, r5, #0 + add r1, #0xb8 + ldr r1, [r1] + add r0, r5, #0 + add r0, #0xb4 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + add r1, #0xdc + str r0, [r1] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + add r2, r6, #0 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xb8 + str r1, [r0] + add r0, r5, #0 + add r0, #0xac + str r4, [r0] + add r0, r5, #0 + add r0, #0xb0 + str r6, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x27 + lsl r0, r0, #8 + add r0, r5, r0 + add r1, r4, #0 + bl LoadFromNARC + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_022432B4 +MOD11_022432B4: ; 0x022432B4 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xb8 + ldr r1, [r1] + cmp r1, #0 + beq _022432FE + add r1, r4, #0 + add r1, #0xb8 + ldr r1, [r1] + sub r2, r1, #1 + add r1, r4, #0 + add r1, #0xb8 + str r2, [r1] + add r1, r4, #0 + add r1, #0xb8 + ldr r1, [r1] + lsl r2, r1, #2 + add r1, r4, r2 + add r2, r4, r2 + add r1, #0xbc + add r2, #0xcc + ldr r1, [r1] + ldr r2, [r2] + bl MOD11_022431DC + add r0, r4, #0 + add r0, #0xb8 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + add r0, #0xdc + ldr r0, [r0] + add r4, #0xb4 + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_022432FE: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02243304 +MOD11_02243304: ; 0x02243304 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + lsl r0, r1, #6 + lsl r6, r2, #4 + add r1, r4, r0 + add r5, r1, r6 + mov r1, #0x22 + add r7, r3, #0 + mov r3, #0 + lsl r1, r1, #8 +_02243318: + ldrb r2, [r5, r1] + cmp r2, #0 + bne _0224332C + add r0, r4, r0 + add r0, r0, r6 + add r1, r0, r3 + mov r0, #0x22 + lsl r0, r0, #8 + strb r7, [r1, r0] + b _02243334 +_0224332C: + add r3, r3, #1 + add r5, r5, #1 + cmp r3, #0x10 + blt _02243318 +_02243334: + cmp r3, #0x10 + blt _0224333C + bl ErrorHandling +_0224333C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02243340 +MOD11_02243340: ; 0x02243340 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp] + add r4, r3, #0 + bne _02243350 + bl ErrorHandling +_02243350: + ldr r0, [sp] + lsl r6, r5, #6 + lsl r5, r0, #4 + add r0, r7, r6 + add r3, r0, r5 + mov r0, #0x22 + mov r2, #0 + lsl r0, r0, #8 +_02243360: + ldrb r1, [r3, r0] + cmp r4, r1 + bne _02243376 + add r1, r7, r6 + add r1, r1, r5 + add r3, r1, r2 + mov r1, #0x22 + mov r0, #0 + lsl r1, r1, #8 + strb r0, [r3, r1] + b _0224337E +_02243376: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #0x10 + blt _02243360 +_0224337E: + cmp r2, #0x10 + blt _02243386 + bl ErrorHandling +_02243386: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02243388 +MOD11_02243388: ; 0x02243388 + push {r3, r4, r5, r6, r7, lr} + mov r2, #0 + mov r4, #0x22 + mov lr, r0 + mov ip, r2 + add r7, r0, #0 + add r6, r2, #0 + lsl r4, r4, #8 +_02243398: + mov r0, #0 + add r3, r7, #0 +_0224339C: + add r1, r6, #0 +_0224339E: + add r5, r3, r1 + ldrb r5, [r5, r4] + add r1, r1, #1 + add r2, r2, r5 + cmp r1, #0x10 + blt _0224339E + add r0, r0, #1 + add r3, #0x10 + cmp r0, #4 + blt _0224339C + mov r0, ip + add r0, r0, #1 + add r7, #0x40 + mov ip, r0 + cmp r0, #4 + blt _02243398 + cmp r2, #0 + bne _022433CA + ldr r1, _022433D8 ; =0x00003148 + mov r3, #0 + mov r0, lr + str r3, [r0, r1] +_022433CA: + cmp r2, #0 + bne _022433D2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022433D2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022433D8: .word 0x00003148 + + thumb_func_start MOD11_022433DC +MOD11_022433DC: ; 0x022433DC + push {r3, lr} + ldr r1, _022433F8 ; =0x00003148 + ldr r2, [r0, r1] + add r2, r2, #1 + str r2, [r0, r1] + ldr r1, [r0, r1] + ldr r0, _022433FC ; =0x00000708 + cmp r1, r0 + ble _022433F4 + mov r0, #1 + bl FUN_020336A0 +_022433F4: + pop {r3, pc} + nop +_022433F8: .word 0x00003148 +_022433FC: .word 0x00000708 + + thumb_func_start MOD11_02243400 +MOD11_02243400: ; 0x02243400 + push {r3, r4} + lsl r1, r1, #8 + add r4, r0, r1 + mov r3, #0 + mov r0, #0x23 + mov r1, #1 + add r2, r3, #0 + lsl r0, r0, #8 + lsl r1, r1, #8 +_02243412: + add r3, r3, #1 + strb r2, [r4, r0] + add r4, r4, #1 + cmp r3, r1 + blt _02243412 + pop {r3, r4} + bx lr + + thumb_func_start MOD11_02243420 +MOD11_02243420: ; 0x02243420 + push {r4, r5, r6, lr} + mov r4, #0xb5 + lsl r4, r4, #6 + add r5, r0, r4 + mov r6, #0xc0 + add r4, r1, #0 + mul r4, r6 + add r4, r5, r4 + cmp r2, #0x64 + bls _02243436 + b _02243794 +_02243436: + add r5, r2, r2 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_02243442: ; jump table + .short _0224350C - _02243442 - 2 ; case 0 + .short _02243510 - _02243442 - 2 ; case 1 + .short _02243514 - _02243442 - 2 ; case 2 + .short _02243518 - _02243442 - 2 ; case 3 + .short _0224351C - _02243442 - 2 ; case 4 + .short _02243520 - _02243442 - 2 ; case 5 + .short _02243524 - _02243442 - 2 ; case 6 + .short _02243524 - _02243442 - 2 ; case 7 + .short _02243524 - _02243442 - 2 ; case 8 + .short _02243524 - _02243442 - 2 ; case 9 + .short _0224352E - _02243442 - 2 ; case 10 + .short _02243536 - _02243442 - 2 ; case 11 + .short _0224353E - _02243442 - 2 ; case 12 + .short _02243546 - _02243442 - 2 ; case 13 + .short _0224354E - _02243442 - 2 ; case 14 + .short _02243556 - _02243442 - 2 ; case 15 + .short _0224355E - _02243442 - 2 ; case 16 + .short _02243566 - _02243442 - 2 ; case 17 + .short _0224356C - _02243442 - 2 ; case 18 + .short _0224356C - _02243442 - 2 ; case 19 + .short _0224356C - _02243442 - 2 ; case 20 + .short _0224356C - _02243442 - 2 ; case 21 + .short _0224356C - _02243442 - 2 ; case 22 + .short _0224356C - _02243442 - 2 ; case 23 + .short _0224356C - _02243442 - 2 ; case 24 + .short _0224356C - _02243442 - 2 ; case 25 + .short _02243576 - _02243442 - 2 ; case 26 + .short _0224357C - _02243442 - 2 ; case 27 + .short _0224357C - _02243442 - 2 ; case 28 + .short _02243582 - _02243442 - 2 ; case 29 + .short _0224358C - _02243442 - 2 ; case 30 + .short _02243596 - _02243442 - 2 ; case 31 + .short _02243596 - _02243442 - 2 ; case 32 + .short _02243596 - _02243442 - 2 ; case 33 + .short _02243596 - _02243442 - 2 ; case 34 + .short _022435A0 - _02243442 - 2 ; case 35 + .short _022435A0 - _02243442 - 2 ; case 36 + .short _022435A0 - _02243442 - 2 ; case 37 + .short _022435A0 - _02243442 - 2 ; case 38 + .short _022435AA - _02243442 - 2 ; case 39 + .short _022435AA - _02243442 - 2 ; case 40 + .short _022435AA - _02243442 - 2 ; case 41 + .short _022435AA - _02243442 - 2 ; case 42 + .short _022435BE - _02243442 - 2 ; case 43 + .short _022435C4 - _02243442 - 2 ; case 44 + .short _022435CA - _02243442 - 2 ; case 45 + .short _022435DC - _02243442 - 2 ; case 46 + .short _022435E8 - _02243442 - 2 ; case 47 + .short _022435EC - _02243442 - 2 ; case 48 + .short _022435F0 - _02243442 - 2 ; case 49 + .short _02243606 - _02243442 - 2 ; case 50 + .short _0224360A - _02243442 - 2 ; case 51 + .short _0224360E - _02243442 - 2 ; case 52 + .short _02243612 - _02243442 - 2 ; case 53 + .short _02243616 - _02243442 - 2 ; case 54 + .short _0224361A - _02243442 - 2 ; case 55 + .short _02243620 - _02243442 - 2 ; case 56 + .short _02243626 - _02243442 - 2 ; case 57 + .short _0224362C - _02243442 - 2 ; case 58 + .short _02243636 - _02243442 - 2 ; case 59 + .short _0224363C - _02243442 - 2 ; case 60 + .short _02243642 - _02243442 - 2 ; case 61 + .short _0224364C - _02243442 - 2 ; case 62 + .short _02243656 - _02243442 - 2 ; case 63 + .short _02243660 - _02243442 - 2 ; case 64 + .short _0224366A - _02243442 - 2 ; case 65 + .short _02243674 - _02243442 - 2 ; case 66 + .short _0224367E - _02243442 - 2 ; case 67 + .short _02243688 - _02243442 - 2 ; case 68 + .short _02243692 - _02243442 - 2 ; case 69 + .short _0224369C - _02243442 - 2 ; case 70 + .short _022436A6 - _02243442 - 2 ; case 71 + .short _022436B0 - _02243442 - 2 ; case 72 + .short _022436BA - _02243442 - 2 ; case 73 + .short _022436C2 - _02243442 - 2 ; case 74 + .short _022436CC - _02243442 - 2 ; case 75 + .short _022436D6 - _02243442 - 2 ; case 76 + .short _022436E0 - _02243442 - 2 ; case 77 + .short _022436EA - _02243442 - 2 ; case 78 + .short _022436F4 - _02243442 - 2 ; case 79 + .short _022436FE - _02243442 - 2 ; case 80 + .short _02243708 - _02243442 - 2 ; case 81 + .short _02243712 - _02243442 - 2 ; case 82 + .short _0224371C - _02243442 - 2 ; case 83 + .short _02243726 - _02243442 - 2 ; case 84 + .short _02243730 - _02243442 - 2 ; case 85 + .short _0224373A - _02243442 - 2 ; case 86 + .short _02243744 - _02243442 - 2 ; case 87 + .short _0224374A - _02243442 - 2 ; case 88 + .short _02243750 - _02243442 - 2 ; case 89 + .short _02243756 - _02243442 - 2 ; case 90 + .short _0224375C - _02243442 - 2 ; case 91 + .short _02243762 - _02243442 - 2 ; case 92 + .short _02243768 - _02243442 - 2 ; case 93 + .short _0224376E - _02243442 - 2 ; case 94 + .short _02243774 - _02243442 - 2 ; case 95 + .short _0224377A - _02243442 - 2 ; case 96 + .short _02243782 - _02243442 - 2 ; case 97 + .short _02243794 - _02243442 - 2 ; case 98 + .short _02243794 - _02243442 - 2 ; case 99 + .short _0224378A - _02243442 - 2 ; case 100 +_0224350C: + ldrh r0, [r4] + pop {r4, r5, r6, pc} +_02243510: + ldrh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02243514: + ldrh r0, [r4, #4] + pop {r4, r5, r6, pc} +_02243518: + ldrh r0, [r4, #6] + pop {r4, r5, r6, pc} +_0224351C: + ldrh r0, [r4, #8] + pop {r4, r5, r6, pc} +_02243520: + ldrh r0, [r4, #0xa] + pop {r4, r5, r6, pc} +_02243524: + sub r0, r2, #6 + lsl r0, r0, #1 + add r0, r4, r0 + ldrh r0, [r0, #0xc] + pop {r4, r5, r6, pc} +_0224352E: + ldr r0, [r4, #0x14] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1b + pop {r4, r5, r6, pc} +_02243536: + ldr r0, [r4, #0x14] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1b + pop {r4, r5, r6, pc} +_0224353E: + ldr r0, [r4, #0x14] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + pop {r4, r5, r6, pc} +_02243546: + ldr r0, [r4, #0x14] + lsl r0, r0, #0xc + lsr r0, r0, #0x1b + pop {r4, r5, r6, pc} +_0224354E: + ldr r0, [r4, #0x14] + lsl r0, r0, #7 + lsr r0, r0, #0x1b + pop {r4, r5, r6, pc} +_02243556: + ldr r0, [r4, #0x14] + lsl r0, r0, #2 + lsr r0, r0, #0x1b + pop {r4, r5, r6, pc} +_0224355E: + ldr r0, [r4, #0x14] + lsl r0, r0, #1 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_02243566: + ldr r0, [r4, #0x14] + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_0224356C: + sub r2, #0x12 + add r1, r4, r2 + mov r0, #0x18 + ldrsb r0, [r1, r0] + pop {r4, r5, r6, pc} +_02243576: + add r4, #0x27 + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_0224357C: + bl MOD11_0224C740 + pop {r4, r5, r6, pc} +_02243582: + add r4, #0x7e + ldrb r0, [r4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + pop {r4, r5, r6, pc} +_0224358C: + add r4, #0x26 + ldrb r0, [r4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_02243596: + sub r2, #0x1f + add r0, r4, r2 + add r0, #0x2c + ldrb r0, [r0] + pop {r4, r5, r6, pc} +_022435A0: + sub r2, #0x23 + add r0, r4, r2 + add r0, #0x30 + ldrb r0, [r0] + pop {r4, r5, r6, pc} +_022435AA: + sub r2, #0x27 + lsl r0, r2, #1 + add r1, r4, r2 + add r0, r4, r0 + add r1, #0x30 + ldrh r0, [r0, #0xc] + ldrb r1, [r1] + bl FUN_0206AB30 + pop {r4, r5, r6, pc} +_022435BE: + add r4, #0x34 + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_022435C4: + add r4, #0x35 + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_022435CA: + mov r1, #0 +_022435CC: + ldrh r0, [r4, #0x36] + add r1, r1, #1 + add r4, r4, #2 + strh r0, [r3] + add r3, r3, #2 + cmp r1, #0xb + blt _022435CC + b _02243798 +_022435DC: + add r4, #0x36 + add r0, r3, #0 + add r1, r4, #0 + bl FUN_02021E28 + b _02243798 +_022435E8: + ldr r0, [r4, #0x4c] + pop {r4, r5, r6, pc} +_022435EC: + ldr r0, [r4, #0x50] + pop {r4, r5, r6, pc} +_022435F0: + mov r1, #0 +_022435F2: + add r0, r4, #0 + add r0, #0x54 + ldrh r0, [r0] + add r1, r1, #1 + add r4, r4, #2 + strh r0, [r3] + add r3, r3, #2 + cmp r1, #0xb + blt _022435F2 + b _02243798 +_02243606: + ldr r0, [r4, #0x64] + pop {r4, r5, r6, pc} +_0224360A: + ldr r0, [r4, #0x68] + pop {r4, r5, r6, pc} +_0224360E: + ldr r0, [r4, #0x6c] + pop {r4, r5, r6, pc} +_02243612: + ldr r0, [r4, #0x70] + pop {r4, r5, r6, pc} +_02243616: + ldr r0, [r4, #0x74] + pop {r4, r5, r6, pc} +_0224361A: + add r4, #0x78 + ldrh r0, [r4] + pop {r4, r5, r6, pc} +_02243620: + add r4, #0x7c + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_02243626: + add r4, #0x7d + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_0224362C: + add r4, #0x7e + ldrb r0, [r4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + pop {r4, r5, r6, pc} +_02243636: + add r4, #0x80 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_0224363C: + add r4, #0x84 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_02243642: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_0224364C: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_02243656: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + pop {r4, r5, r6, pc} +_02243660: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_0224366A: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0x13 + lsr r0, r0, #0x1e + pop {r4, r5, r6, pc} +_02243674: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1e + pop {r4, r5, r6, pc} +_0224367E: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0xe + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_02243688: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #0xb + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_02243692: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #8 + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_0224369C: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #5 + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_022436A6: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #2 + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_022436B0: + add r4, #0x88 + ldr r0, [r4] + lsl r0, r0, #1 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_022436BA: + add r4, #0x88 + ldr r0, [r4] + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_022436C2: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + pop {r4, r5, r6, pc} +_022436CC: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1c + pop {r4, r5, r6, pc} +_022436D6: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + pop {r4, r5, r6, pc} +_022436E0: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1e + pop {r4, r5, r6, pc} +_022436EA: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0x13 + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_022436F4: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_022436FE: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0xd + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_02243708: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + pop {r4, r5, r6, pc} +_02243712: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #9 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_0224371C: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #5 + lsr r0, r0, #0x1c + pop {r4, r5, r6, pc} +_02243726: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #4 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_02243730: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #3 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_0224373A: + add r4, #0x8c + ldr r0, [r4] + lsl r0, r0, #2 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_02243744: + add r4, #0x90 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_0224374A: + add r4, #0x94 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_02243750: + add r4, #0x98 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_02243756: + add r4, #0xa0 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_0224375C: + add r4, #0xa4 + ldr r0, [r4] + pop {r4, r5, r6, pc} +_02243762: + add r4, #0xa8 + ldrh r0, [r4] + pop {r4, r5, r6, pc} +_02243768: + add r4, #0xac + ldrh r0, [r4] + pop {r4, r5, r6, pc} +_0224376E: + add r4, #0xaa + ldrh r0, [r4] + pop {r4, r5, r6, pc} +_02243774: + add r4, #0xbc + ldr r0, [r4] + pop {r4, r5, r6, pc} +_0224377A: + ldr r0, [r4, #0x28] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_02243782: + ldr r0, [r4, #0x28] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + pop {r4, r5, r6, pc} +_0224378A: + add r6, #0x78 + ldr r2, [r0, r6] + bl MOD11_02243420 + pop {r4, r5, r6, pc} +_02243794: + bl ErrorHandling +_02243798: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0224379C +MOD11_0224379C: ; 0x0224379C + push {r4, r5, r6, lr} + add r5, r2, #0 + mov r2, #0xb5 + lsl r2, r2, #6 + add r4, r0, r2 + mov r6, #0xc0 + add r2, r1, #0 + mul r2, r6 + add r2, r4, r2 + cmp r5, #0x64 + bls _022437B4 + b _02243D9E +_022437B4: + add r4, r5, r5 + add r4, pc + ldrh r4, [r4, #6] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add pc, r4 +_022437C0: ; jump table + .short _0224388A - _022437C0 - 2 ; case 0 + .short _02243890 - _022437C0 - 2 ; case 1 + .short _02243896 - _022437C0 - 2 ; case 2 + .short _0224389C - _022437C0 - 2 ; case 3 + .short _022438A2 - _022437C0 - 2 ; case 4 + .short _022438A8 - _022437C0 - 2 ; case 5 + .short _022438AE - _022437C0 - 2 ; case 6 + .short _022438AE - _022437C0 - 2 ; case 7 + .short _022438AE - _022437C0 - 2 ; case 8 + .short _022438AE - _022437C0 - 2 ; case 9 + .short _022438BA - _022437C0 - 2 ; case 10 + .short _022438CC - _022437C0 - 2 ; case 11 + .short _022438DE - _022437C0 - 2 ; case 12 + .short _022438F0 - _022437C0 - 2 ; case 13 + .short _02243902 - _022437C0 - 2 ; case 14 + .short _02243914 - _022437C0 - 2 ; case 15 + .short _02243926 - _022437C0 - 2 ; case 16 + .short _02243938 - _022437C0 - 2 ; case 17 + .short _02243948 - _022437C0 - 2 ; case 18 + .short _02243948 - _022437C0 - 2 ; case 19 + .short _02243948 - _022437C0 - 2 ; case 20 + .short _02243948 - _022437C0 - 2 ; case 21 + .short _02243948 - _022437C0 - 2 ; case 22 + .short _02243948 - _022437C0 - 2 ; case 23 + .short _02243948 - _022437C0 - 2 ; case 24 + .short _02243948 - _022437C0 - 2 ; case 25 + .short _02243954 - _022437C0 - 2 ; case 26 + .short _0224395C - _022437C0 - 2 ; case 27 + .short _02243964 - _022437C0 - 2 ; case 28 + .short _0224396C - _022437C0 - 2 ; case 29 + .short _02243984 - _022437C0 - 2 ; case 30 + .short _0224399C - _022437C0 - 2 ; case 31 + .short _0224399C - _022437C0 - 2 ; case 32 + .short _0224399C - _022437C0 - 2 ; case 33 + .short _0224399C - _022437C0 - 2 ; case 34 + .short _022439A8 - _022437C0 - 2 ; case 35 + .short _022439A8 - _022437C0 - 2 ; case 36 + .short _022439A8 - _022437C0 - 2 ; case 37 + .short _022439A8 - _022437C0 - 2 ; case 38 + .short _022439B4 - _022437C0 - 2 ; case 39 + .short _022439B4 - _022437C0 - 2 ; case 40 + .short _022439B4 - _022437C0 - 2 ; case 41 + .short _022439B4 - _022437C0 - 2 ; case 42 + .short _022439BA - _022437C0 - 2 ; case 43 + .short _022439C2 - _022437C0 - 2 ; case 44 + .short _022439CA - _022437C0 - 2 ; case 45 + .short _02243D9E - _022437C0 - 2 ; case 46 + .short _022439DC - _022437C0 - 2 ; case 47 + .short _022439E4 - _022437C0 - 2 ; case 48 + .short _022439EA - _022437C0 - 2 ; case 49 + .short _02243A00 - _022437C0 - 2 ; case 50 + .short _02243A06 - _022437C0 - 2 ; case 51 + .short _02243A0C - _022437C0 - 2 ; case 52 + .short _02243A12 - _022437C0 - 2 ; case 53 + .short _02243A18 - _022437C0 - 2 ; case 54 + .short _02243A1E - _022437C0 - 2 ; case 55 + .short _02243A26 - _022437C0 - 2 ; case 56 + .short _02243A2E - _022437C0 - 2 ; case 57 + .short _02243A36 - _022437C0 - 2 ; case 58 + .short _02243A4E - _022437C0 - 2 ; case 59 + .short _02243A56 - _022437C0 - 2 ; case 60 + .short _02243A5E - _022437C0 - 2 ; case 61 + .short _02243A76 - _022437C0 - 2 ; case 62 + .short _02243A8E - _022437C0 - 2 ; case 63 + .short _02243AA6 - _022437C0 - 2 ; case 64 + .short _02243ABE - _022437C0 - 2 ; case 65 + .short _02243AD6 - _022437C0 - 2 ; case 66 + .short _02243AEE - _022437C0 - 2 ; case 67 + .short _02243B06 - _022437C0 - 2 ; case 68 + .short _02243B1E - _022437C0 - 2 ; case 69 + .short _02243B36 - _022437C0 - 2 ; case 70 + .short _02243B4E - _022437C0 - 2 ; case 71 + .short _02243B66 - _022437C0 - 2 ; case 72 + .short _02243B7E - _022437C0 - 2 ; case 73 + .short _02243B94 - _022437C0 - 2 ; case 74 + .short _02243BAC - _022437C0 - 2 ; case 75 + .short _02243BC4 - _022437C0 - 2 ; case 76 + .short _02243BDC - _022437C0 - 2 ; case 77 + .short _02243BF4 - _022437C0 - 2 ; case 78 + .short _02243C0C - _022437C0 - 2 ; case 79 + .short _02243C24 - _022437C0 - 2 ; case 80 + .short _02243C3C - _022437C0 - 2 ; case 81 + .short _02243C54 - _022437C0 - 2 ; case 82 + .short _02243C6C - _022437C0 - 2 ; case 83 + .short _02243CE0 - _022437C0 - 2 ; case 84 + .short _02243CF8 - _022437C0 - 2 ; case 85 + .short _02243D10 - _022437C0 - 2 ; case 86 + .short _02243D28 - _022437C0 - 2 ; case 87 + .short _02243D30 - _022437C0 - 2 ; case 88 + .short _02243D38 - _022437C0 - 2 ; case 89 + .short _02243D40 - _022437C0 - 2 ; case 90 + .short _02243D48 - _022437C0 - 2 ; case 91 + .short _02243D50 - _022437C0 - 2 ; case 92 + .short _02243D58 - _022437C0 - 2 ; case 93 + .short _02243D60 - _022437C0 - 2 ; case 94 + .short _02243D68 - _022437C0 - 2 ; case 95 + .short _02243D70 - _022437C0 - 2 ; case 96 + .short _02243D82 - _022437C0 - 2 ; case 97 + .short _02243D9E - _022437C0 - 2 ; case 98 + .short _02243D9E - _022437C0 - 2 ; case 99 + .short _02243D94 - _022437C0 - 2 ; case 100 +_0224388A: + ldrh r0, [r3] + strh r0, [r2] + pop {r4, r5, r6, pc} +_02243890: + ldrh r0, [r3] + strh r0, [r2, #2] + pop {r4, r5, r6, pc} +_02243896: + ldrh r0, [r3] + strh r0, [r2, #4] + pop {r4, r5, r6, pc} +_0224389C: + ldrh r0, [r3] + strh r0, [r2, #6] + pop {r4, r5, r6, pc} +_022438A2: + ldrh r0, [r3] + strh r0, [r2, #8] + pop {r4, r5, r6, pc} +_022438A8: + ldrh r0, [r3] + strh r0, [r2, #0xa] + pop {r4, r5, r6, pc} +_022438AE: + sub r0, r5, #6 + lsl r0, r0, #1 + ldrh r1, [r3] + add r0, r2, r0 + strh r1, [r0, #0xc] + pop {r4, r5, r6, pc} +_022438BA: + ldr r4, [r2, #0x14] + mov r0, #0x1f + bic r4, r0 + ldrb r1, [r3] + mov r0, #0x1f + and r0, r1 + orr r0, r4 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_022438CC: + ldr r1, [r2, #0x14] + ldr r0, _02243C78 ; =0xFFFFFC1F + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_022438DE: + ldr r1, [r2, #0x14] + ldr r0, _02243C7C ; =0xFFFF83FF + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1b + lsr r0, r0, #0x11 + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_022438F0: + ldr r1, [r2, #0x14] + ldr r0, _02243C80 ; =0xFFF07FFF + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1b + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_02243902: + ldr r1, [r2, #0x14] + ldr r0, _02243C84 ; =0xFE0FFFFF + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1b + lsr r0, r0, #7 + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_02243914: + ldr r1, [r2, #0x14] + ldr r0, _02243C88 ; =0xC1FFFFFF + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1b + lsr r0, r0, #2 + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_02243926: + ldr r1, [r2, #0x14] + ldr r0, _02243C8C ; =0xBFFFFFFF + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #1 + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_02243938: + ldr r1, [r2, #0x14] + ldr r0, _02243C90 ; =0x7FFFFFFF + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + orr r0, r1 + str r0, [r2, #0x14] + pop {r4, r5, r6, pc} +_02243948: + mov r0, #0 + ldrsb r1, [r3, r0] + sub r5, #0x12 + add r0, r2, r5 + strb r1, [r0, #0x18] + pop {r4, r5, r6, pc} +_02243954: + ldrb r0, [r3] + add r2, #0x27 + strb r0, [r2] + pop {r4, r5, r6, pc} +_0224395C: + ldrb r0, [r3] + add r2, #0x24 + strb r0, [r2] + pop {r4, r5, r6, pc} +_02243964: + ldrb r0, [r3] + add r2, #0x25 + strb r0, [r2] + pop {r4, r5, r6, pc} +_0224396C: + add r0, r2, #0 + add r0, #0x7e + ldrb r4, [r0] + ldrb r1, [r3] + mov r0, #0xf + bic r4, r0 + mov r0, #0xf + and r0, r1 + orr r0, r4 + add r2, #0x7e + strb r0, [r2] + pop {r4, r5, r6, pc} +_02243984: + add r0, r2, #0 + add r0, #0x26 + ldrb r1, [r0] + mov r0, #0x20 + add r2, #0x26 + bic r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1a + orr r0, r1 + strb r0, [r2] + pop {r4, r5, r6, pc} +_0224399C: + sub r5, #0x1f + add r0, r2, r5 + ldrb r1, [r3] + add r0, #0x2c + strb r1, [r0] + pop {r4, r5, r6, pc} +_022439A8: + sub r5, #0x23 + add r0, r2, r5 + ldrb r1, [r3] + add r0, #0x30 + strb r1, [r0] + pop {r4, r5, r6, pc} +_022439B4: + bl ErrorHandling + pop {r4, r5, r6, pc} +_022439BA: + ldrb r0, [r3] + add r2, #0x34 + strb r0, [r2] + pop {r4, r5, r6, pc} +_022439C2: + ldrb r0, [r3] + add r2, #0x35 + strb r0, [r2] + pop {r4, r5, r6, pc} +_022439CA: + mov r1, #0 +_022439CC: + ldrh r0, [r3] + add r1, r1, #1 + add r3, r3, #2 + strh r0, [r2, #0x36] + add r2, r2, #2 + cmp r1, #0xb + blt _022439CC + pop {r4, r5, r6, pc} +_022439DC: + mov r0, #0 + ldrsh r0, [r3, r0] + str r0, [r2, #0x4c] + pop {r4, r5, r6, pc} +_022439E4: + ldrh r0, [r3] + str r0, [r2, #0x50] + pop {r4, r5, r6, pc} +_022439EA: + mov r4, #0 +_022439EC: + ldrh r1, [r3] + add r0, r2, #0 + add r0, #0x54 + add r4, r4, #1 + strh r1, [r0] + add r3, r3, #2 + add r2, r2, #2 + cmp r4, #0xb + blt _022439EC + pop {r4, r5, r6, pc} +_02243A00: + ldr r0, [r3] + str r0, [r2, #0x64] + pop {r4, r5, r6, pc} +_02243A06: + ldr r0, [r3] + str r0, [r2, #0x68] + pop {r4, r5, r6, pc} +_02243A0C: + ldr r0, [r3] + str r0, [r2, #0x6c] + pop {r4, r5, r6, pc} +_02243A12: + ldr r0, [r3] + str r0, [r2, #0x70] + pop {r4, r5, r6, pc} +_02243A18: + ldr r0, [r3] + str r0, [r2, #0x74] + pop {r4, r5, r6, pc} +_02243A1E: + ldrh r0, [r3] + add r2, #0x78 + strh r0, [r2] + pop {r4, r5, r6, pc} +_02243A26: + ldrb r0, [r3] + add r2, #0x7c + strb r0, [r2] + pop {r4, r5, r6, pc} +_02243A2E: + ldrb r0, [r3] + add r2, #0x7d + strb r0, [r2] + pop {r4, r5, r6, pc} +_02243A36: + add r0, r2, #0 + add r0, #0x7e + ldrb r1, [r0] + mov r0, #0xf0 + add r2, #0x7e + bic r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1c + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r2] + pop {r4, r5, r6, pc} +_02243A4E: + ldr r0, [r3] + add r2, #0x80 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243A56: + ldr r0, [r3] + add r2, #0x84 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243A5E: + add r0, r2, #0 + add r0, #0x88 + ldr r4, [r0] + mov r0, #7 + bic r4, r0 + ldrb r1, [r3] + mov r0, #7 + add r2, #0x88 + and r0, r1 + orr r0, r4 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243A76: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + mov r0, #0x38 + bic r1, r0 + ldrb r0, [r3] + add r2, #0x88 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1a + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243A8E: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + mov r0, #0xc0 + bic r1, r0 + ldrb r0, [r3] + add r2, #0x88 + lsl r0, r0, #0x1e + lsr r0, r0, #0x18 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243AA6: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243C94 ; =0xFFFFF8FF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x15 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243ABE: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243C98 ; =0xFFFFE7FF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1e + lsr r0, r0, #0x13 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243AD6: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243C9C ; =0xFFFF9FFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1e + lsr r0, r0, #0x11 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243AEE: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243CA0 ; =0xFFFC7FFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0xe + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B06: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243CA4 ; =0xFFE3FFFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0xb + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B1E: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243CA8 ; =0xFF1FFFFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #8 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B36: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243CAC ; =0xF8FFFFFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #5 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B4E: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243CB0 ; =0xC7FFFFFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #2 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B66: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243C8C ; =0xBFFFFFFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #1 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B7E: + add r0, r2, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02243C90 ; =0x7FFFFFFF + add r2, #0x88 + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243B94: + add r0, r2, #0 + add r0, #0x8c + ldr r4, [r0] + mov r0, #3 + bic r4, r0 + ldrb r1, [r3] + mov r0, #3 + add r2, #0x8c + and r0, r1 + orr r0, r4 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243BAC: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + mov r0, #0x3c + bic r1, r0 + ldrb r0, [r3] + add r2, #0x8c + lsl r0, r0, #0x1c + lsr r0, r0, #0x1a + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243BC4: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + mov r0, #0xc0 + bic r1, r0 + ldrb r0, [r3] + add r2, #0x8c + lsl r0, r0, #0x1e + lsr r0, r0, #0x18 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243BDC: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CB4 ; =0xFFFFFCFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1e + lsr r0, r0, #0x16 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243BF4: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CB8 ; =0xFFFFE3FF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x13 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243C0C: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CBC ; =0xFFFF1FFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x10 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243C24: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CC0 ; =0xFFF8FFFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0xd + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243C3C: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CC4 ; =0xFFC7FFFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0xa + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243C54: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CC8 ; =0xFFBFFFFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #9 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243C6C: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243CCC ; =0xF87FFFFF + b _02243CD0 + nop +_02243C78: .word 0xFFFFFC1F +_02243C7C: .word 0xFFFF83FF +_02243C80: .word 0xFFF07FFF +_02243C84: .word 0xFE0FFFFF +_02243C88: .word 0xC1FFFFFF +_02243C8C: .word 0xBFFFFFFF +_02243C90: .word 0x7FFFFFFF +_02243C94: .word 0xFFFFF8FF +_02243C98: .word 0xFFFFE7FF +_02243C9C: .word 0xFFFF9FFF +_02243CA0: .word 0xFFFC7FFF +_02243CA4: .word 0xFFE3FFFF +_02243CA8: .word 0xFF1FFFFF +_02243CAC: .word 0xF8FFFFFF +_02243CB0: .word 0xC7FFFFFF +_02243CB4: .word 0xFFFFFCFF +_02243CB8: .word 0xFFFFE3FF +_02243CBC: .word 0xFFFF1FFF +_02243CC0: .word 0xFFF8FFFF +_02243CC4: .word 0xFFC7FFFF +_02243CC8: .word 0xFFBFFFFF +_02243CCC: .word 0xF87FFFFF +_02243CD0: + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1c + lsr r0, r0, #5 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243CE0: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243DA4 ; =0xF7FFFFFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #4 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243CF8: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243DA8 ; =0xEFFFFFFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #3 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D10: + add r0, r2, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02243DAC ; =0xDFFFFFFF + add r2, #0x8c + and r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #2 + orr r0, r1 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D28: + ldr r0, [r3] + add r2, #0x90 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D30: + ldr r0, [r3] + add r2, #0x94 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D38: + ldr r0, [r3] + add r2, #0x98 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D40: + ldr r0, [r3] + add r2, #0xa0 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D48: + ldr r0, [r3] + add r2, #0xa4 + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D50: + ldrh r0, [r3] + add r2, #0xa8 + strh r0, [r2] + pop {r4, r5, r6, pc} +_02243D58: + ldrh r0, [r3] + add r2, #0xac + strh r0, [r2] + pop {r4, r5, r6, pc} +_02243D60: + ldrh r0, [r3] + add r2, #0xaa + strh r0, [r2] + pop {r4, r5, r6, pc} +_02243D68: + ldr r0, [r3] + add r2, #0xbc + str r0, [r2] + pop {r4, r5, r6, pc} +_02243D70: + ldr r1, [r2, #0x28] + mov r0, #0x40 + bic r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x19 + orr r0, r1 + str r0, [r2, #0x28] + pop {r4, r5, r6, pc} +_02243D82: + ldr r1, [r2, #0x28] + mov r0, #0x80 + bic r1, r0 + ldrb r0, [r3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x18 + orr r0, r1 + str r0, [r2, #0x28] + pop {r4, r5, r6, pc} +_02243D94: + add r6, #0x78 + ldr r2, [r0, r6] + bl MOD11_0224379C + pop {r4, r5, r6, pc} +_02243D9E: + bl ErrorHandling + pop {r4, r5, r6, pc} + .align 2, 0 +_02243DA4: .word 0xF7FFFFFF +_02243DA8: .word 0xEFFFFFFF +_02243DAC: .word 0xDFFFFFFF + + thumb_func_start MOD11_02243DB0 +MOD11_02243DB0: ; 0x02243DB0 + push {r4, lr} + mov r4, #0xb5 + lsl r4, r4, #6 + add r4, r0, r4 + mov r0, #0xc0 + mul r0, r1 + add r1, r2, #0 + add r0, r4, r0 + add r2, r3, #0 + bl MOD11_02243DC8 + pop {r4, pc} + + thumb_func_start MOD11_02243DC8 +MOD11_02243DC8: ; 0x02243DC8 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r5, r2, #0 + cmp r1, #0x61 + bls _02243DD4 + b _02244200 +_02243DD4: + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243DE0: ; jump table + .short _02244200 - _02243DE0 - 2 ; case 0 + .short _02243EA4 - _02243DE0 - 2 ; case 1 + .short _02243EAC - _02243DE0 - 2 ; case 2 + .short _02243EB4 - _02243DE0 - 2 ; case 3 + .short _02243EBC - _02243DE0 - 2 ; case 4 + .short _02243EC4 - _02243DE0 - 2 ; case 5 + .short _02244200 - _02243DE0 - 2 ; case 6 + .short _02244200 - _02243DE0 - 2 ; case 7 + .short _02244200 - _02243DE0 - 2 ; case 8 + .short _02244200 - _02243DE0 - 2 ; case 9 + .short _02243ECC - _02243DE0 - 2 ; case 10 + .short _02243EE4 - _02243DE0 - 2 ; case 11 + .short _02243EFA - _02243DE0 - 2 ; case 12 + .short _02243F10 - _02243DE0 - 2 ; case 13 + .short _02243F26 - _02243DE0 - 2 ; case 14 + .short _02243F3C - _02243DE0 - 2 ; case 15 + .short _02244200 - _02243DE0 - 2 ; case 16 + .short _02244200 - _02243DE0 - 2 ; case 17 + .short _02243F52 - _02243DE0 - 2 ; case 18 + .short _02243F52 - _02243DE0 - 2 ; case 19 + .short _02243F52 - _02243DE0 - 2 ; case 20 + .short _02243F52 - _02243DE0 - 2 ; case 21 + .short _02243F52 - _02243DE0 - 2 ; case 22 + .short _02243F52 - _02243DE0 - 2 ; case 23 + .short _02243F52 - _02243DE0 - 2 ; case 24 + .short _02243F52 - _02243DE0 - 2 ; case 25 + .short _02244200 - _02243DE0 - 2 ; case 26 + .short _02244200 - _02243DE0 - 2 ; case 27 + .short _02244200 - _02243DE0 - 2 ; case 28 + .short _02244200 - _02243DE0 - 2 ; case 29 + .short _02244200 - _02243DE0 - 2 ; case 30 + .short _02243F70 - _02243DE0 - 2 ; case 31 + .short _02243F70 - _02243DE0 - 2 ; case 32 + .short _02243F70 - _02243DE0 - 2 ; case 33 + .short _02243F70 - _02243DE0 - 2 ; case 34 + .short _02243F96 - _02243DE0 - 2 ; case 35 + .short _02243F96 - _02243DE0 - 2 ; case 36 + .short _02243F96 - _02243DE0 - 2 ; case 37 + .short _02243F96 - _02243DE0 - 2 ; case 38 + .short _02244200 - _02243DE0 - 2 ; case 39 + .short _02244200 - _02243DE0 - 2 ; case 40 + .short _02244200 - _02243DE0 - 2 ; case 41 + .short _02244200 - _02243DE0 - 2 ; case 42 + .short _02243FA2 - _02243DE0 - 2 ; case 43 + .short _02243FB0 - _02243DE0 - 2 ; case 44 + .short _02244200 - _02243DE0 - 2 ; case 45 + .short _02244200 - _02243DE0 - 2 ; case 46 + .short _02243FD2 - _02243DE0 - 2 ; case 47 + .short _02243FE4 - _02243DE0 - 2 ; case 48 + .short _02244200 - _02243DE0 - 2 ; case 49 + .short _02243FEC - _02243DE0 - 2 ; case 50 + .short _02243FF4 - _02243DE0 - 2 ; case 51 + .short _02244200 - _02243DE0 - 2 ; case 52 + .short _02244200 - _02243DE0 - 2 ; case 53 + .short _02244200 - _02243DE0 - 2 ; case 54 + .short _02244200 - _02243DE0 - 2 ; case 55 + .short _02244200 - _02243DE0 - 2 ; case 56 + .short _02244200 - _02243DE0 - 2 ; case 57 + .short _02244200 - _02243DE0 - 2 ; case 58 + .short _02244200 - _02243DE0 - 2 ; case 59 + .short _02244200 - _02243DE0 - 2 ; case 60 + .short _02243FFC - _02243DE0 - 2 ; case 61 + .short _0224401A - _02243DE0 - 2 ; case 62 + .short _02244038 - _02243DE0 - 2 ; case 63 + .short _02244056 - _02243DE0 - 2 ; case 64 + .short _02244072 - _02243DE0 - 2 ; case 65 + .short _0224408E - _02243DE0 - 2 ; case 66 + .short _022440AA - _02243DE0 - 2 ; case 67 + .short _022440C6 - _02243DE0 - 2 ; case 68 + .short _022440E2 - _02243DE0 - 2 ; case 69 + .short _022440FE - _02243DE0 - 2 ; case 70 + .short _0224411A - _02243DE0 - 2 ; case 71 + .short _02244200 - _02243DE0 - 2 ; case 72 + .short _02244200 - _02243DE0 - 2 ; case 73 + .short _02244200 - _02243DE0 - 2 ; case 74 + .short _02244200 - _02243DE0 - 2 ; case 75 + .short _02244200 - _02243DE0 - 2 ; case 76 + .short _02244200 - _02243DE0 - 2 ; case 77 + .short _02244136 - _02243DE0 - 2 ; case 78 + .short _02244152 - _02243DE0 - 2 ; case 79 + .short _0224416E - _02243DE0 - 2 ; case 80 + .short _02244200 - _02243DE0 - 2 ; case 81 + .short _02244200 - _02243DE0 - 2 ; case 82 + .short _02244200 - _02243DE0 - 2 ; case 83 + .short _02244200 - _02243DE0 - 2 ; case 84 + .short _02244200 - _02243DE0 - 2 ; case 85 + .short _02244200 - _02243DE0 - 2 ; case 86 + .short _0224418A - _02243DE0 - 2 ; case 87 + .short _02244198 - _02243DE0 - 2 ; case 88 + .short _022441A6 - _02243DE0 - 2 ; case 89 + .short _022441B4 - _02243DE0 - 2 ; case 90 + .short _02244200 - _02243DE0 - 2 ; case 91 + .short _02244200 - _02243DE0 - 2 ; case 92 + .short _02244200 - _02243DE0 - 2 ; case 93 + .short _02244200 - _02243DE0 - 2 ; case 94 + .short _022441C2 - _02243DE0 - 2 ; case 95 + .short _022441D0 - _02243DE0 - 2 ; case 96 + .short _022441E8 - _02243DE0 - 2 ; case 97 +_02243EA4: + ldrh r0, [r4, #2] + add r0, r0, r5 + strh r0, [r4, #2] + pop {r4, r5, r6, pc} +_02243EAC: + ldrh r0, [r4, #4] + add r0, r0, r5 + strh r0, [r4, #4] + pop {r4, r5, r6, pc} +_02243EB4: + ldrh r0, [r4, #6] + add r0, r0, r5 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_02243EBC: + ldrh r0, [r4, #8] + add r0, r0, r5 + strh r0, [r4, #8] + pop {r4, r5, r6, pc} +_02243EC4: + ldrh r0, [r4, #0xa] + add r0, r0, r5 + strh r0, [r4, #0xa] + pop {r4, r5, r6, pc} +_02243ECC: + ldr r2, [r4, #0x14] + mov r1, #0x1f + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0x1b + add r2, r1, r5 + mov r1, #0x1f + and r1, r2 + orr r0, r1 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02243EE4: + ldr r1, [r4, #0x14] + ldr r0, _02244208 ; =0xFFFFFC1F + and r0, r1 + lsl r1, r1, #0x16 + lsr r1, r1, #0x1b + add r1, r1, r5 + lsl r1, r1, #0x1b + lsr r1, r1, #0x16 + orr r0, r1 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02243EFA: + ldr r1, [r4, #0x14] + ldr r0, _0224420C ; =0xFFFF83FF + and r0, r1 + lsl r1, r1, #0x11 + lsr r1, r1, #0x1b + add r1, r1, r5 + lsl r1, r1, #0x1b + lsr r1, r1, #0x11 + orr r0, r1 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02243F10: + ldr r1, [r4, #0x14] + ldr r0, _02244210 ; =0xFFF07FFF + and r0, r1 + lsl r1, r1, #0xc + lsr r1, r1, #0x1b + add r1, r1, r5 + lsl r1, r1, #0x1b + lsr r1, r1, #0xc + orr r0, r1 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02243F26: + ldr r1, [r4, #0x14] + ldr r0, _02244214 ; =0xFE0FFFFF + and r0, r1 + lsl r1, r1, #7 + lsr r1, r1, #0x1b + add r1, r1, r5 + lsl r1, r1, #0x1b + lsr r1, r1, #7 + orr r0, r1 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02243F3C: + ldr r1, [r4, #0x14] + ldr r0, _02244218 ; =0xC1FFFFFF + and r0, r1 + lsl r1, r1, #2 + lsr r1, r1, #0x1b + add r1, r1, r5 + lsl r1, r1, #0x1b + lsr r1, r1, #2 + orr r0, r1 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02243F52: + add r4, #0x18 + sub r1, #0x12 + ldrsb r0, [r4, r1] + add r0, r5, r0 + bpl _02243F62 + mov r0, #0 + strb r0, [r4, r1] + pop {r4, r5, r6, pc} +_02243F62: + cmp r0, #0xc + ble _02243F6C + mov r0, #0xc + strb r0, [r4, r1] + pop {r4, r5, r6, pc} +_02243F6C: + strb r0, [r4, r1] + pop {r4, r5, r6, pc} +_02243F70: + add r6, r1, #0 + sub r6, #0x1f + lsl r0, r6, #1 + add r1, r4, r6 + add r0, r4, r0 + add r1, #0x30 + ldrh r0, [r0, #0xc] + ldrb r1, [r1] + bl FUN_0206AB30 + add r4, #0x2c + ldrb r1, [r4, r6] + add r1, r5, r1 + cmp r1, r0 + ble _02243F92 + strb r0, [r4, r6] + pop {r4, r5, r6, pc} +_02243F92: + strb r1, [r4, r6] + pop {r4, r5, r6, pc} +_02243F96: + add r4, #0x30 + sub r1, #0x23 + ldrb r0, [r4, r1] + add r0, r0, r5 + strb r0, [r4, r1] + pop {r4, r5, r6, pc} +_02243FA2: + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + add r4, #0x34 + add r0, r0, r5 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02243FB0: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + add r0, r0, r5 + cmp r0, #0xff + ble _02243FC4 + mov r0, #0xff + add r4, #0x35 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02243FC4: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + add r4, #0x35 + add r0, r0, r5 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02243FD2: + ldr r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + add r0, r0, r5 + cmp r0, r1 + bls _02243FE0 + str r1, [r4, #0x4c] + pop {r4, r5, r6, pc} +_02243FE0: + str r0, [r4, #0x4c] + pop {r4, r5, r6, pc} +_02243FE4: + ldr r0, [r4, #0x50] + add r0, r0, r5 + str r0, [r4, #0x50] + pop {r4, r5, r6, pc} +_02243FEC: + ldr r0, [r4, #0x64] + add r0, r0, r5 + str r0, [r4, #0x64] + pop {r4, r5, r6, pc} +_02243FF4: + ldr r0, [r4, #0x68] + add r0, r0, r5 + str r0, [r4, #0x68] + pop {r4, r5, r6, pc} +_02243FFC: + add r0, r4, #0 + add r0, #0x88 + ldr r2, [r0] + mov r1, #7 + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x1d + lsr r1, r1, #0x1d + add r2, r1, r5 + mov r1, #7 + and r1, r2 + orr r0, r1 + add r4, #0x88 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224401A: + add r0, r4, #0 + add r0, #0x88 + ldr r2, [r0] + mov r1, #0x38 + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x1a + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0x1a + orr r0, r1 + add r4, #0x88 + str r0, [r4] + pop {r4, r5, r6, pc} +_02244038: + add r0, r4, #0 + add r0, #0x88 + ldr r2, [r0] + mov r1, #0xc0 + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x1e + add r1, r1, r5 + lsl r1, r1, #0x1e + lsr r1, r1, #0x18 + orr r0, r1 + add r4, #0x88 + str r0, [r4] + pop {r4, r5, r6, pc} +_02244056: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _0224421C ; =0xFFFFF8FF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #0x15 + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0x15 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02244072: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02244220 ; =0xFFFFE7FF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #0x13 + lsr r1, r1, #0x1e + add r1, r1, r5 + lsl r1, r1, #0x1e + lsr r1, r1, #0x13 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224408E: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02244224 ; =0xFFFF9FFF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #0x11 + lsr r1, r1, #0x1e + add r1, r1, r5 + lsl r1, r1, #0x1e + lsr r1, r1, #0x11 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_022440AA: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02244228 ; =0xFFFC7FFF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #0xe + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0xe + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_022440C6: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _0224422C ; =0xFFE3FFFF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #0xb + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0xb + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_022440E2: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02244230 ; =0xFF1FFFFF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #8 + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #8 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_022440FE: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02244234 ; =0xF8FFFFFF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #5 + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #5 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224411A: + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + ldr r0, _02244238 ; =0xC7FFFFFF + add r4, #0x88 + and r0, r1 + lsl r1, r1, #2 + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #2 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02244136: + add r0, r4, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _0224423C ; =0xFFFFE3FF + add r4, #0x8c + and r0, r1 + lsl r1, r1, #0x13 + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0x13 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02244152: + add r0, r4, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02244240 ; =0xFFFF1FFF + add r4, #0x8c + and r0, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0x10 + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224416E: + add r0, r4, #0 + add r0, #0x8c + ldr r1, [r0] + ldr r0, _02244244 ; =0xFFF8FFFF + add r4, #0x8c + and r0, r1 + lsl r1, r1, #0xd + lsr r1, r1, #0x1d + add r1, r1, r5 + lsl r1, r1, #0x1d + lsr r1, r1, #0xd + orr r0, r1 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224418A: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + add r4, #0x90 + add r0, r0, r5 + str r0, [r4] + pop {r4, r5, r6, pc} +_02244198: + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r4, #0x94 + add r0, r0, r5 + str r0, [r4] + pop {r4, r5, r6, pc} +_022441A6: + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + add r4, #0x98 + add r0, r0, r5 + str r0, [r4] + pop {r4, r5, r6, pc} +_022441B4: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + add r4, #0xa0 + add r0, r0, r5 + str r0, [r4] + pop {r4, r5, r6, pc} +_022441C2: + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + add r4, #0xbc + add r0, r0, r5 + str r0, [r4] + pop {r4, r5, r6, pc} +_022441D0: + ldr r2, [r4, #0x28] + mov r1, #0x40 + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x19 + lsr r1, r1, #0x1f + add r1, r1, r5 + lsl r1, r1, #0x1f + lsr r1, r1, #0x19 + orr r0, r1 + str r0, [r4, #0x28] + pop {r4, r5, r6, pc} +_022441E8: + ldr r2, [r4, #0x28] + mov r1, #0x80 + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x1f + add r1, r1, r5 + lsl r1, r1, #0x1f + lsr r1, r1, #0x18 + orr r0, r1 + str r0, [r4, #0x28] + pop {r4, r5, r6, pc} +_02244200: + bl ErrorHandling + pop {r4, r5, r6, pc} + nop +_02244208: .word 0xFFFFFC1F +_0224420C: .word 0xFFFF83FF +_02244210: .word 0xFFF07FFF +_02244214: .word 0xFE0FFFFF +_02244218: .word 0xC1FFFFFF +_0224421C: .word 0xFFFFF8FF +_02244220: .word 0xFFFFE7FF +_02244224: .word 0xFFFF9FFF +_02244228: .word 0xFFFC7FFF +_0224422C: .word 0xFFE3FFFF +_02244230: .word 0xFF1FFFFF +_02244234: .word 0xF8FFFFFF +_02244238: .word 0xC7FFFFFF +_0224423C: .word 0xFFFFE3FF +_02244240: .word 0xFFFF1FFF +_02244244: .word 0xFFF8FFFF + + thumb_func_start MOD11_02244248 +MOD11_02244248: ; 0x02244248 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x68 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #0x64] + str r0, [sp, #0x60] + ldr r0, [sp, #0x64] + str r2, [sp, #8] + str r0, [sp, #0x5c] + ldr r0, [sp, #0x64] + str r3, [sp, #0xc] + str r0, [sp, #0x48] + ldr r0, [sp, #0x64] + add r5, r1, #0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x64] + mov r2, #0xc0 + str r0, [sp, #0x40] + ldr r0, [sp, #0x64] + ldr r3, _0224455C ; =0x00002D8C + str r0, [sp, #0x3c] + ldr r0, [sp, #0x64] + str r0, [sp, #0x38] + ldr r0, [sp, #0x64] + str r0, [sp, #0x34] + ldr r0, [sp, #8] + add r1, r0, #0 + mul r1, r2 + add r0, r5, r1 + ldr r0, [r0, r3] + str r1, [sp, #0x18] + cmp r0, #0 + bne _0224429C + ldr r1, [sp, #0xc] + mul r2, r1 + add r1, r5, r2 + ldr r1, [r1, r3] + cmp r1, #0 + beq _0224429C + add sp, #0x68 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224429C: + cmp r0, #0 + beq _022442B6 + ldr r0, [sp, #0xc] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224455C ; =0x00002D8C + add r1, r5, r1 + ldr r0, [r1, r0] + cmp r0, #0 + bne _022442B6 + add sp, #0x68 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022442B6: + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_02246D1C + str r0, [sp, #0x2c] + ldr r1, [sp, #0xc] + add r0, r5, #0 + bl MOD11_02246D1C + str r0, [sp, #0x28] + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_02249D90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x58] + ldr r1, [sp, #8] + add r0, r5, #0 + mov r2, #0 + bl MOD11_02249DA4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x54] + ldr r1, [sp, #0xc] + add r0, r5, #0 + bl MOD11_02249D90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x50] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0 + bl MOD11_02249DA4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x18] + ldr r2, _02244560 ; =0x00002D5B + add r0, r5, r0 + ldrsb r4, [r0, r2] + ldr r0, [sp, #0xc] + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + str r1, [sp, #0x14] + ldrsb r7, [r0, r2] + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x56 + bne _02244338 + sub r0, r4, #6 + lsl r0, r0, #1 + add r4, r0, #6 + cmp r4, #0xc + ble _02244332 + mov r4, #0xc +_02244332: + cmp r4, #0 + bge _02244338 + mov r4, #0 +_02244338: + ldr r1, [sp, #0xc] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x56 + bne _02244356 + sub r0, r7, #6 + lsl r0, r0, #1 + add r7, r0, #6 + cmp r7, #0xc + ble _02244350 + mov r7, #0xc +_02244350: + cmp r7, #0 + bge _02244356 + mov r7, #0 +_02244356: + ldr r0, [sp, #0x18] + lsl r1, r4, #1 + add r2, r5, r0 + ldr r0, _02244564 ; =0x00002D46 + ldrh r2, [r2, r0] + ldr r0, _02244568 ; =0x0225E284 + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224456C ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + add r6, r0, #0 + ldr r0, [sp, #0x14] + lsl r1, r7, #1 + add r2, r5, r0 + ldr r0, _02244564 ; =0x00002D46 + ldrh r2, [r2, r0] + ldr r0, _02244568 ; =0x0225E284 + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224456C ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + add r4, r0, #0 + mov r0, #0xd + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022443FE + mov r0, #0x4c + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022443FE + ldr r0, [sp, #0x2c] + cmp r0, #0x21 + bne _022443C4 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #3 + tst r0, r1 + bne _022443D6 +_022443C4: + ldr r0, [sp, #0x2c] + cmp r0, #0x22 + bne _022443D8 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0x30 + tst r0, r1 + beq _022443D8 +_022443D6: + lsl r6, r6, #1 +_022443D8: + ldr r0, [sp, #0x28] + cmp r0, #0x21 + bne _022443EA + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #3 + tst r0, r1 + bne _022443FC +_022443EA: + ldr r0, [sp, #0x28] + cmp r0, #0x22 + bne _022443FE + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0x30 + tst r0, r1 + beq _022443FE +_022443FC: + lsl r4, r4, #1 +_022443FE: + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x18] + ldr r7, _02244570 ; =0x0225E24C + add r0, r5, r0 + str r0, [sp, #0x1c] +_0224440A: + ldr r2, [sp, #0x1c] + ldr r1, _02244574 ; =0x00002DB8 + add r0, r5, #0 + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD11_0224C12C + ldrb r1, [r7] + cmp r1, r0 + bne _02244422 + lsr r6, r6, #1 + b _0224442E +_02244422: + ldr r0, [sp, #0x24] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #8 + blo _0224440A +_0224442E: + ldr r0, [sp, #0x58] + cmp r0, #0x72 + bne _02244440 + mov r0, #0xf + mul r0, r6 + mov r1, #0xa + blx _u32_div_f + add r6, r0, #0 +_02244440: + ldr r0, [sp, #0x58] + cmp r0, #0x65 + bne _02244456 + ldr r0, [sp, #0x18] + add r1, r5, r0 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r1, r0] + cmp r0, #0x84 + bne _02244456 + lsl r6, r6, #1 +_02244456: + ldr r0, [sp, #0x2c] + cmp r0, #0x5f + bne _02244478 + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _02244578 ; =0x00002DAC + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02244478 + mov r0, #0xf + mul r0, r6 + mov r1, #0xa + blx _u32_div_f + add r6, r0, #0 + b _02244488 +_02244478: + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _02244578 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x40 + tst r0, r1 + beq _02244488 + lsr r6, r6, #2 +_02244488: + ldr r0, [sp, #0x2c] + cmp r0, #0x70 + bne _022444A4 + ldr r1, [sp, #0x18] + mov r0, #0x15 + add r2, r5, r1 + ldr r1, _0224457C ; =0x00002DD8 + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r1, [r2, r1] + sub r0, r0, r1 + cmp r0, #5 + bge _022444A4 + lsr r6, r6, #1 +_022444A4: + ldr r0, [sp, #0x2c] + cmp r0, #0x54 + bne _022444C2 + ldr r0, [sp, #0x18] + add r2, r5, r0 + ldr r0, _02244580 ; =0x00002DCC + ldr r1, [r2, r0] + lsl r1, r1, #9 + lsr r1, r1, #0x1f + beq _022444C2 + sub r0, #0x14 + ldrh r0, [r2, r0] + cmp r0, #0 + bne _022444C2 + lsl r6, r6, #1 +_022444C2: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #3 + lsl r0, r0, #8 + tst r0, r1 + beq _022444DE + lsl r6, r6, #1 +_022444DE: + ldr r0, [sp, #0x58] + cmp r0, #0x33 + bne _0224451C + ldr r1, [sp, #0x54] + mov r0, #0x64 + blx _s32_div_f + add r1, r0, #0 + ldr r0, [sp, #8] + lsl r0, r0, #1 + add r2, r5, r0 + ldr r0, _02244584 ; =0x0000310C + ldrh r0, [r2, r0] + blx _s32_div_f + cmp r1, #0 + bne _0224451C + mov r0, #1 + str r0, [sp, #0x40] + ldr r0, [sp, #0x80] + cmp r0, #0 + bne _0224451C + ldr r0, _02244580 ; =0x00002DCC + ldr r1, [sp, #0x18] + add r0, r5, r0 + ldr r2, [r0, r1] + mov r1, #2 + lsl r1, r1, #0x1c + orr r2, r1 + ldr r1, [sp, #0x18] + str r2, [r0, r1] +_0224451C: + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _02244580 ; =0x00002DCC + ldr r0, [r1, r0] + lsl r0, r0, #3 + lsr r0, r0, #0x1f + beq _0224452E + mov r0, #1 + str r0, [sp, #0x40] +_0224452E: + ldr r0, [sp, #0x58] + cmp r0, #0x6a + bne _02244538 + mov r0, #1 + str r0, [sp, #0x38] +_02244538: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r7, _02244570 ; =0x0225E24C + add r0, r5, r0 + str r0, [sp, #0x20] +_02244544: + ldr r2, [sp, #0x20] + ldr r1, _02244574 ; =0x00002DB8 + add r0, r5, #0 + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD11_0224C12C + ldrb r1, [r7] + cmp r1, r0 + bne _02244588 + lsr r4, r4, #1 + b _02244594 + .align 2, 0 +_0224455C: .word 0x00002D8C +_02244560: .word 0x00002D5B +_02244564: .word 0x00002D46 +_02244568: .word 0x0225E284 +_0224456C: .word 0x0225E285 +_02244570: .word 0x0225E24C +_02244574: .word 0x00002DB8 +_02244578: .word 0x00002DAC +_0224457C: .word 0x00002DD8 +_02244580: .word 0x00002DCC +_02244584: .word 0x0000310C +_02244588: + ldr r0, [sp, #0x10] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #8 + blo _02244544 +_02244594: + ldr r0, [sp, #0x50] + cmp r0, #0x72 + bne _022445A6 + mov r0, #0xf + mul r0, r4 + mov r1, #0xa + blx _u32_div_f + add r4, r0, #0 +_022445A6: + ldr r0, [sp, #0x50] + cmp r0, #0x65 + bne _022445BC + ldr r0, [sp, #0x14] + add r1, r5, r0 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r1, r0] + cmp r0, #0x84 + bne _022445BC + lsl r4, r4, #1 +_022445BC: + ldr r0, [sp, #0x28] + cmp r0, #0x5f + bne _022445DE + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, _02244894 ; =0x00002DAC + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _022445DE + mov r0, #0xf + mul r0, r4 + mov r1, #0xa + blx _u32_div_f + add r4, r0, #0 + b _022445EE +_022445DE: + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, _02244894 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x40 + tst r0, r1 + beq _022445EE + lsr r4, r4, #2 +_022445EE: + ldr r0, [sp, #0x28] + cmp r0, #0x70 + bne _0224460A + ldr r1, [sp, #0x14] + mov r0, #0x15 + add r2, r5, r1 + ldr r1, _02244898 ; =0x00002DD8 + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r1, [r2, r1] + sub r0, r0, r1 + cmp r0, #5 + bge _0224460A + lsr r4, r4, #1 +_0224460A: + ldr r0, [sp, #0x28] + cmp r0, #0x54 + bne _02244628 + ldr r0, [sp, #0x14] + add r2, r5, r0 + ldr r0, _0224489C ; =0x00002DCC + ldr r1, [r2, r0] + lsl r1, r1, #9 + lsr r1, r1, #0x1f + beq _02244628 + sub r0, #0x14 + ldrh r0, [r2, r0] + cmp r0, #0 + bne _02244628 + lsl r4, r4, #1 +_02244628: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #3 + lsl r0, r0, #8 + tst r0, r1 + beq _02244644 + lsl r4, r4, #1 +_02244644: + ldr r0, [sp, #0x50] + cmp r0, #0x33 + bne _02244682 + ldr r1, [sp, #0x4c] + mov r0, #0x64 + blx _s32_div_f + add r1, r0, #0 + ldr r0, [sp, #0xc] + lsl r0, r0, #1 + add r2, r5, r0 + ldr r0, _022448A0 ; =0x0000310C + ldrh r0, [r2, r0] + blx _s32_div_f + cmp r1, #0 + bne _02244682 + mov r0, #1 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x80] + cmp r0, #0 + bne _02244682 + ldr r0, _0224489C ; =0x00002DCC + ldr r1, [sp, #0x14] + add r0, r5, r0 + ldr r2, [r0, r1] + mov r1, #2 + lsl r1, r1, #0x1c + orr r2, r1 + ldr r1, [sp, #0x14] + str r2, [r0, r1] +_02244682: + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, _0224489C ; =0x00002DCC + ldr r0, [r1, r0] + lsl r0, r0, #3 + lsr r0, r0, #0x1f + beq _02244694 + mov r0, #1 + str r0, [sp, #0x3c] +_02244694: + ldr r0, [sp, #0x50] + cmp r0, #0x6a + bne _0224469E + mov r0, #1 + str r0, [sp, #0x34] +_0224469E: + ldr r0, [sp, #8] + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _022448A4 ; =0x000021F0 + str r6, [r1, r0] + ldr r1, [sp, #0xc] + lsl r1, r1, #2 + add r1, r5, r1 + str r4, [r1, r0] + ldr r1, [sp, #0x80] + cmp r1, #0 + bne _02244756 + ldr r1, [sp, #0xc] + ldr r3, _022448A8 ; =0x000030BC + lsl r1, r1, #4 + add r2, r5, r1 + add r1, r0, #0 + sub r1, #0x3c + ldr r1, [r2, r1] + sub r0, #0x3c + str r1, [sp, #0x30] + ldr r1, [sp, #8] + lsl r1, r1, #1 + add r1, r5, r1 + ldrh r2, [r1, r3] + ldr r1, [sp, #0xc] + lsl r1, r1, #1 + add r1, r5, r1 + ldrh r7, [r1, r3] + ldr r1, [sp, #8] + lsl r1, r1, #4 + add r1, r5, r1 + ldr r0, [r1, r0] + cmp r0, #1 + bne _0224470E + ldr r0, [sp, #8] + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _022446FC + mov r0, #0xa5 + str r0, [sp, #0x60] + b _0224470E +_022446FC: + ldr r1, [sp, #8] + add r0, r5, #0 + add r2, r2, #6 + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x60] +_0224470E: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0224473E + ldr r0, [sp, #0xc] + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0224472C + mov r0, #0xa5 + str r0, [sp, #0x5c] + b _0224473E +_0224472C: + ldr r1, [sp, #0xc] + add r0, r5, #0 + add r2, r7, #6 + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x5c] +_0224473E: + ldr r0, [sp, #0x60] + mov r1, #0xfa + lsl r0, r0, #4 + add r0, r5, r0 + lsl r1, r1, #2 + ldrsb r0, [r0, r1] + str r0, [sp, #0x48] + ldr r0, [sp, #0x5c] + lsl r0, r0, #4 + add r0, r5, r0 + ldrsb r0, [r0, r1] + str r0, [sp, #0x44] +_02244756: + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x44] + cmp r1, r0 + beq _02244760 + b _022448AC +_02244760: + ldr r0, [sp, #0x40] + cmp r0, #0 + beq _0224478C + ldr r0, [sp, #0x3c] + cmp r0, #0 + beq _0224478C + cmp r6, r4 + bhs _02244776 + mov r0, #1 + str r0, [sp, #0x64] + b _022448B4 +_02244776: + cmp r6, r4 + bne _02244784 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + bne _02244786 +_02244784: + b _022448B4 +_02244786: + mov r0, #2 + str r0, [sp, #0x64] + b _022448B4 +_0224478C: + ldr r0, [sp, #0x40] + cmp r0, #0 + bne _0224479E + ldr r0, [sp, #0x3c] + cmp r0, #0 + beq _0224479E + mov r0, #1 + str r0, [sp, #0x64] + b _022448B4 +_0224479E: + ldr r0, [sp, #0x40] + cmp r0, #0 + beq _022447B0 + ldr r0, [sp, #0x3c] + cmp r0, #0 + bne _022447B0 + mov r0, #0 + str r0, [sp, #0x64] + b _022448B4 +_022447B0: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _022447DA + ldr r0, [sp, #0x34] + cmp r0, #0 + beq _022447DA + cmp r6, r4 + bls _022447C6 + mov r0, #1 + str r0, [sp, #0x64] + b _022448B4 +_022447C6: + cmp r6, r4 + bne _022448B4 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _022448B4 + mov r0, #2 + str r0, [sp, #0x64] + b _022448B4 +_022447DA: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _022447EC + ldr r0, [sp, #0x34] + cmp r0, #0 + bne _022447EC + mov r0, #1 + str r0, [sp, #0x64] + b _022448B4 +_022447EC: + ldr r0, [sp, #0x38] + cmp r0, #0 + bne _022447FE + ldr r0, [sp, #0x34] + cmp r0, #0 + beq _022447FE + mov r0, #0 + str r0, [sp, #0x64] + b _022448B4 +_022447FE: + ldr r0, [sp, #0x2c] + cmp r0, #0x64 + bne _02244828 + ldr r0, [sp, #0x28] + cmp r0, #0x64 + bne _02244828 + cmp r6, r4 + bls _02244814 + mov r0, #1 + str r0, [sp, #0x64] + b _022448B4 +_02244814: + cmp r6, r4 + bne _022448B4 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _022448B4 + mov r0, #2 + str r0, [sp, #0x64] + b _022448B4 +_02244828: + ldr r0, [sp, #0x2c] + cmp r0, #0x64 + bne _0224483A + ldr r0, [sp, #0x28] + cmp r0, #0x64 + beq _0224483A + mov r0, #1 + str r0, [sp, #0x64] + b _022448B4 +_0224483A: + ldr r0, [sp, #0x2c] + cmp r0, #0x64 + beq _0224484C + ldr r0, [sp, #0x28] + cmp r0, #0x64 + bne _0224484C + mov r0, #0 + str r0, [sp, #0x64] + b _022448B4 +_0224484C: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #7 + lsl r0, r0, #0x10 + tst r0, r1 + beq _02244876 + cmp r6, r4 + bls _02244862 + mov r0, #1 + str r0, [sp, #0x64] +_02244862: + cmp r6, r4 + bne _022448B4 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _022448B4 + mov r0, #2 + str r0, [sp, #0x64] + b _022448B4 +_02244876: + cmp r6, r4 + bhs _0224487E + mov r0, #1 + str r0, [sp, #0x64] +_0224487E: + cmp r6, r4 + bne _022448B4 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _022448B4 + mov r0, #2 + str r0, [sp, #0x64] + b _022448B4 + nop +_02244894: .word 0x00002DAC +_02244898: .word 0x00002DD8 +_0224489C: .word 0x00002DCC +_022448A0: .word 0x0000310C +_022448A4: .word 0x000021F0 +_022448A8: .word 0x000030BC +_022448AC: + cmp r1, r0 + bge _022448B4 + mov r0, #1 + str r0, [sp, #0x64] +_022448B4: + ldr r0, [sp, #0x64] + add sp, #0x68 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022448BC +MOD11_022448BC: ; 0x022448BC + asr r1, r1, #1 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1d + add r0, r0, r1 + mov r2, #0 + add r0, #0xa4 + str r2, [r0] + bx lr + + thumb_func_start MOD11_022448CC +MOD11_022448CC: ; 0x022448CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r2, [sp] + add r5, r1, #0 + mov r4, #0 + bl MOD11_0222FF74 + add r7, r0, #0 + ldr r0, [sp] + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + str r0, [sp, #4] + ldr r0, [sp] + asr r0, r0, #1 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1d + add r6, r5, r0 + add r6, #0xa4 +_022448F2: + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, _0224493C ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _02244928 + ldr r0, [sp] + bl FUN_0206A92C + ldr r1, _0224493C ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _02244928 + ldr r1, [sp, #4] + ldr r0, _02244940 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244928 + ldr r0, _02244944 ; =0x0000219C + add r1, r5, r4 + ldrb r0, [r1, r0] + bl FUN_0206A92C + ldr r1, [r6] + orr r0, r1 + str r0, [r6] +_02244928: + add r4, r4, #2 + cmp r7, #0x4a + beq _02244936 + cmp r7, #0x4b + beq _02244936 + cmp r4, #2 + ble _022448F2 +_02244936: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224493C: .word 0x00003108 +_02244940: .word 0x00002D8C +_02244944: .word 0x0000219C + + thumb_func_start MOD11_02244948 +MOD11_02244948: ; 0x02244948 + push {r4, r5, r6, lr} + ldr r0, _022449D4 ; =0x00002170 + add r5, r1, #0 + add r4, r2, #0 + ldr r2, [r5, r0] + mov r0, #2 + lsl r0, r0, #0x1c + mov r6, #0 + tst r0, r2 + beq _0224497A + add r0, r5, #0 + mov r1, #1 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _022449D4 ; =0x00002170 + add r1, r6, #0 + str r1, [r5, r0] + sub r0, r0, #4 + ldr r1, [r5, r0] + ldr r0, _022449D8 ; =0x801FDA49 + tst r0, r1 + bne _022449CE + mov r6, #1 + b _022449CE +_0224497A: + cmp r2, #0 + beq _022449CE + add r0, r5, #0 + mov r1, #1 + bl MOD11_0224C5DC + str r0, [r4] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022449DC ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _022449C8 + ldr r1, _022449E0 ; =0x0000216C + ldr r2, _022449D8 ; =0x801FDA49 + ldr r0, [r5, r1] + tst r2, r0 + beq _022449C6 + add r1, r1, #4 + mov r2, #2 + ldr r1, [r5, r1] + lsl r2, r2, #0x16 + tst r2, r1 + beq _022449B8 + ldr r2, _022449E4 ; =0x00040008 + tst r2, r0 + bne _022449C6 +_022449B8: + mov r2, #1 + lsl r2, r2, #0x1c + tst r1, r2 + beq _022449C8 + ldr r1, _022449E8 ; =0x00010001 + tst r0, r1 + beq _022449C8 +_022449C6: + mov r6, #1 +_022449C8: + ldr r0, _022449D4 ; =0x00002170 + mov r1, #0 + str r1, [r5, r0] +_022449CE: + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_022449D4: .word 0x00002170 +_022449D8: .word 0x801FDA49 +_022449DC: .word 0x00002D8C +_022449E0: .word 0x0000216C +_022449E4: .word 0x00040008 +_022449E8: .word 0x00010001 + + thumb_func_start MOD11_022449EC +MOD11_022449EC: ; 0x022449EC + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02244C04 ; =0x00002174 + add r5, r1, #0 + add r4, r2, #0 + ldr r2, [r5, r0] + mov r1, #2 + lsl r1, r1, #0x1c + add r3, r2, #0 + mov r6, #0 + tst r3, r1 + beq _02244A20 + add r0, r5, #0 + mov r1, #2 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _02244C04 ; =0x00002174 + add r1, r6, #0 + str r1, [r5, r0] + sub r0, #8 + ldr r1, [r5, r0] + ldr r0, _02244C08 ; =0x801FDA49 + tst r0, r1 + bne _02244AC0 + mov r6, #1 + b _02244C00 +_02244A20: + lsr r3, r1, #5 + tst r3, r2 + beq _02244A54 + add r0, r5, #0 + mov r1, #2 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _02244C04 ; =0x00002174 + add r1, r6, #0 + str r1, [r5, r0] + add r1, r5, #0 + add r1, #0x94 + ldr r1, [r1] + add r0, r5, #0 + bl MOD11_0224AD9C + cmp r0, #0 + bne _02244AC0 + ldr r0, _02244C0C ; =0x0000216C + ldr r1, [r5, r0] + ldr r0, _02244C08 ; =0x801FDA49 + tst r0, r1 + bne _02244AC0 + mov r6, #1 + b _02244C00 +_02244A54: + lsr r3, r1, #4 + tst r3, r2 + beq _02244A96 + add r0, r5, #0 + mov r1, #2 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _02244C04 ; =0x00002174 + add r1, r6, #0 + str r1, [r5, r0] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02244C10 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02244AC0 + add r0, r5, #0 + bl MOD11_0224AD9C + cmp r0, #0 + bne _02244AC0 + ldr r0, _02244C0C ; =0x0000216C + ldr r1, [r5, r0] + ldr r0, _02244C08 ; =0x801FDA49 + tst r0, r1 + bne _02244AC0 + mov r6, #1 + b _02244C00 +_02244A96: + lsr r3, r1, #1 + tst r3, r2 + beq _02244AC6 + add r0, r5, #0 + mov r1, #2 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _02244C04 ; =0x00002174 + add r1, r6, #0 + str r1, [r5, r0] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02244C10 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + bne _02244AC2 +_02244AC0: + b _02244C00 +_02244AC2: + mov r6, #1 + b _02244C00 +_02244AC6: + lsr r1, r1, #3 + tst r1, r2 + beq _02244B50 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x20 + ldr r0, _02244C14 ; =0x00003044 + bne _02244AEA + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02244C18 ; =0x000003E5 + ldrb r0, [r1, r0] + lsl r0, r0, #0x11 + lsr r6, r0, #0x10 + b _02244AF4 +_02244AEA: + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02244C18 ; =0x000003E5 + ldrb r6, [r1, r0] +_02244AF4: + cmp r6, #0 + bne _02244AFC + bl ErrorHandling +_02244AFC: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r6 + bge _02244B16 + ldr r1, _02244C1C ; =0x0000213C + mov r0, #1 + ldr r2, [r5, r1] + lsl r0, r0, #0x16 + orr r0, r2 + str r0, [r5, r1] +_02244B16: + ldr r2, _02244C04 ; =0x00002174 + add r0, r5, #0 + ldr r2, [r5, r2] + mov r1, #2 + bl MOD11_0224C5DC + str r0, [r4] + ldr r1, _02244C04 ; =0x00002174 + mov r0, #0 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0x94 + ldr r2, [r0] + mov r0, #0xc0 + mul r0, r2 + add r2, r5, r0 + ldr r0, _02244C10 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + bne _02244B4C + add r0, r1, #0 + sub r0, #0x38 + ldr r2, [r5, r0] + ldr r0, _02244C20 ; =0xFFBFFFFF + sub r1, #0x38 + and r0, r2 + str r0, [r5, r1] +_02244B4C: + mov r6, #1 + b _02244C00 +_02244B50: + cmp r2, #0 + beq _02244BD2 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x20 + ldr r0, _02244C14 ; =0x00003044 + bne _02244B72 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02244C18 ; =0x000003E5 + ldrb r0, [r1, r0] + lsl r0, r0, #0x11 + lsr r7, r0, #0x10 + b _02244B7C +_02244B72: + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02244C18 ; =0x000003E5 + ldrb r7, [r1, r0] +_02244B7C: + cmp r7, #0 + bne _02244B84 + bl ErrorHandling +_02244B84: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, r7 + bge _02244C00 + ldr r2, _02244C04 ; =0x00002174 + add r0, r5, #0 + ldr r2, [r5, r2] + mov r1, #2 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _02244C04 ; =0x00002174 + mov r1, #0 + str r1, [r5, r0] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02244C10 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02244C00 + add r0, r5, #0 + bl MOD11_0224AD9C + cmp r0, #0 + bne _02244C00 + ldr r0, _02244C0C ; =0x0000216C + ldr r1, [r5, r0] + ldr r0, _02244C08 ; =0x801FDA49 + tst r0, r1 + bne _02244C00 + mov r6, #1 + b _02244C00 +_02244BD2: + add r0, r0, #4 + ldr r2, [r5, r0] + cmp r2, #0 + beq _02244C00 + add r0, r5, #0 + mov r1, #3 + bl MOD11_0224C5DC + str r0, [r4] + ldr r0, _02244C24 ; =0x00002178 + add r1, r6, #0 + str r1, [r5, r0] + add r0, r5, #0 + add r0, #0x94 + ldr r1, [r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02244C10 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244C00 + mov r6, #1 +_02244C00: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244C04: .word 0x00002174 +_02244C08: .word 0x801FDA49 +_02244C0C: .word 0x0000216C +_02244C10: .word 0x00002D8C +_02244C14: .word 0x00003044 +_02244C18: .word 0x000003E5 +_02244C1C: .word 0x0000213C +_02244C20: .word 0xFFBFFFFF +_02244C24: .word 0x00002178 + + thumb_func_start MOD11_02244C28 +MOD11_02244C28: ; 0x02244C28 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + mov r0, #0xff + add r4, r1, #0 + add r5, r2, #0 + str r0, [sp, #0xc] + cmp r3, #0 + beq _02244C44 + lsl r0, r3, #4 + add r1, r4, r0 + ldr r0, _02244F24 ; =0x000003E6 + ldrh r0, [r1, r0] + b _02244C46 +_02244C44: + ldr r0, [sp, #0x34] +_02244C46: + cmp r0, #4 + bne _02244CD6 + add r0, r6, #0 + bl MOD11_0222FF84 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_0222FF7C + bl MOD11_02253A4C + ldr r1, _02244F28 ; =0x0000217E + mov r2, #0 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + ldr r2, [sp, #8] + cmp r1, r2 + bge _02244CC4 + mov r2, #1 + add r5, r0, #0 + and r5, r2 +_02244C72: + ldr r0, _02244F2C ; =0x000021EC + add r1, r4, r1 + ldrb r7, [r1, r0] + mov r0, #0xc0 + mul r0, r7 + add r1, r4, r0 + ldr r0, _02244F30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244CB2 + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_0222FF7C + str r0, [sp] + cmp r5, #0 + beq _02244C9E + bl MOD11_02253A4C + mov r1, #1 + tst r0, r1 + beq _02244CAE +_02244C9E: + cmp r5, #0 + bne _02244CB2 + ldr r0, [sp] + bl MOD11_02253A4C + mov r1, #1 + tst r0, r1 + beq _02244CB2 +_02244CAE: + str r7, [sp, #0xc] + b _02244CC4 +_02244CB2: + ldr r0, _02244F28 ; =0x0000217E + ldrb r0, [r4, r0] + add r1, r0, #1 + ldr r0, _02244F28 ; =0x0000217E + strb r1, [r4, r0] + ldrb r1, [r4, r0] + ldr r0, [sp, #8] + cmp r1, r0 + blt _02244C72 +_02244CC4: + ldr r1, _02244F28 ; =0x0000217E + ldr r0, [sp, #8] + ldrb r2, [r4, r1] + cmp r2, r0 + bne _02244CD0 + b _02244F5C +_02244CD0: + add r0, r2, #1 + strb r0, [r4, r1] + b _02244F5C +_02244CD6: + cmp r0, #8 + bne _02244D26 + add r0, r6, #0 + bl MOD11_0222FF84 + add r2, r0, #0 + ldr r0, _02244F28 ; =0x0000217E + mov r1, #0 + strb r1, [r4, r0] + ldrb r3, [r4, r0] + cmp r3, r2 + bge _02244D18 + ldr r7, _02244F30 ; =0x00002D8C +_02244CF0: + ldr r1, _02244F2C ; =0x000021EC + add r6, r4, r3 + ldrb r1, [r6, r1] + mov r6, #0xc0 + mul r6, r1 + add r6, r4, r6 + ldr r6, [r6, r7] + cmp r6, #0 + beq _02244D0A + cmp r1, r5 + beq _02244D0A + str r1, [sp, #0xc] + b _02244D18 +_02244D0A: + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldr r1, _02244F28 ; =0x0000217E + ldrb r3, [r4, r1] + cmp r3, r2 + blt _02244CF0 +_02244D18: + cmp r3, r2 + beq _02244E02 + ldr r0, _02244F28 ; =0x0000217E + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _02244F5C +_02244D26: + mov r1, #2 + lsl r1, r1, #8 + cmp r0, r1 + bne _02244D72 + ldr r1, [sp, #0x30] + cmp r1, #1 + bne _02244D72 + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02244D6E + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + bne _02244D6E + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022302BC + mov r1, #0xc0 + mul r1, r0 + str r0, [sp, #0xc] + ldr r0, _02244F30 ; =0x00002D8C + add r1, r4, r1 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02244E02 + str r5, [sp, #0xc] + b _02244F5C +_02244D6E: + str r5, [sp, #0xc] + b _02244F5C +_02244D72: + mov r1, #1 + lsl r1, r1, #0xa + cmp r0, r1 + bne _02244D8E + ldr r1, [sp, #0x30] + cmp r1, #1 + bne _02244D8E + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022482A4 + str r0, [sp, #0xc] + b _02244F5C +_02244D8E: + cmp r0, #0x80 + bne _02244DA0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022482A4 + str r0, [sp, #0xc] + b _02244F5C +_02244DA0: + cmp r0, #0x10 + beq _02244DB0 + cmp r0, #0x20 + beq _02244DB0 + cmp r0, #1 + beq _02244DB0 + cmp r0, #0x40 + bne _02244DB4 +_02244DB0: + str r5, [sp, #0xc] + b _02244F5C +_02244DB4: + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _02244DD8 + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02244DD4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_022302BC + str r0, [sp, #0xc] + b _02244F5C +_02244DD4: + str r5, [sp, #0xc] + b _02244F5C +_02244DD8: + lsl r1, r1, #1 + cmp r0, r1 + bne _02244E0C + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02244E08 + lsl r0, r5, #4 + add r1, r4, r0 + ldr r0, _02244F34 ; =0x000021AC + ldr r0, [r1, r0] + mov r1, #0xc0 + mul r1, r0 + str r0, [sp, #0xc] + ldr r0, _02244F30 ; =0x00002D8C + add r1, r4, r1 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244E04 +_02244E02: + b _02244F5C +_02244E04: + str r5, [sp, #0xc] + b _02244F5C +_02244E08: + str r5, [sp, #0xc] + b _02244F5C +_02244E0C: + cmp r0, #2 + beq _02244E16 + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _02244ED6 +_02244E16: + add r0, r6, #0 + bl MOD11_0222FF74 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02230270 + add r7, r0, #0 + mov r1, #1 + eor r7, r1 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD11_02230308 + str r0, [sp, #0x14] + add r0, r6, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD11_02230308 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + mov r1, #2 + tst r0, r1 + beq _02244EBE + mov r0, #0x71 + lsl r0, r0, #2 + add r1, r4, r0 + lsl r0, r7, #3 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02244E72 + lsl r0, r0, #9 + lsr r2, r0, #0x1e + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02244F30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244E72 + str r2, [sp, #0xc] + b _02244F5C +_02244E72: + ldr r0, [sp, #0x14] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r0, r4, r2 + ldr r2, _02244F30 ; =0x00002D8C + ldr r0, [r0, r2] + cmp r0, #0 + beq _02244EA0 + ldr r3, [sp, #0x18] + mul r1, r3 + add r1, r4, r1 + ldr r1, [r1, r2] + cmp r1, #0 + beq _02244EA0 + bl FUN_0201B9EC + lsl r0, r0, #0x1f + lsr r1, r0, #0x1d + add r0, sp, #0x14 + ldr r0, [r0, r1] + str r0, [sp, #0xc] + b _02244F5C +_02244EA0: + cmp r0, #0 + beq _02244EAA + ldr r0, [sp, #0x14] + str r0, [sp, #0xc] + b _02244F5C +_02244EAA: + ldr r2, [sp, #0x18] + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02244F30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244F5C + str r2, [sp, #0xc] + b _02244F5C +_02244EBE: + mov r0, #1 + add r2, r5, #0 + eor r2, r0 + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02244F30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244F5C + str r2, [sp, #0xc] + b _02244F5C +_02244ED6: + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02230270 + mov r1, #1 + eor r0, r1 + str r0, [sp, #4] + lsl r0, r5, #4 + add r1, r4, r0 + ldr r0, _02244F34 ; =0x000021AC + ldr r7, [r1, r0] + add r0, r6, #0 + bl MOD11_0222FF84 + mov r0, #0x71 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r0, [sp, #4] + lsl r0, r0, #3 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02244F1A + lsl r0, r0, #9 + lsr r0, r0, #0x1e + mov r1, #0xc0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02244F30 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _02244F1A + str r0, [sp, #0xc] + b _02244F5C +_02244F1A: + mov r0, #0xc0 + mul r0, r7 + add r1, r4, r0 + ldr r0, _02244F30 ; =0x00002D8C + b _02244F38 + .align 2, 0 +_02244F24: .word 0x000003E6 +_02244F28: .word 0x0000217E +_02244F2C: .word 0x000021EC +_02244F30: .word 0x00002D8C +_02244F34: .word 0x000021AC +_02244F38: + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244F42 + str r7, [sp, #0xc] + b _02244F5C +_02244F42: + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022482A4 + mov r1, #0xc0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02244F64 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, #0 + beq _02244F5C + str r0, [sp, #0xc] +_02244F5C: + ldr r0, [sp, #0xc] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02244F64: .word 0x00002D8C + + thumb_func_start MOD11_02244F68 +MOD11_02244F68: ; 0x02244F68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x6c] + add r7, r2, #0 + add r6, r3, #0 + cmp r0, #0xff + beq _02244FC2 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x60 + beq _02244FC2 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x68 + beq _02244FC2 + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD11_02230270 + add r2, r0, #0 + mov r1, #1 + mov r0, #0x71 + eor r2, r1 + lsl r0, r0, #2 + add r1, r5, r0 + lsl r0, r2, #3 + ldr r0, [r1, r0] + lsl r1, r0, #0xb + lsr r1, r1, #0x1f + beq _02244FC4 + lsl r0, r0, #9 + lsr r1, r0, #0x1e + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _022450F8 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02244FC4 +_02244FC2: + b _022450F4 +_02244FC4: + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD11_0224C8EC + str r0, [sp, #0xc] + cmp r0, #0 + bne _02244FE0 + lsl r0, r6, #4 + add r1, r5, r0 + ldr r0, _022450FC ; =0x000003E2 + ldrb r0, [r1, r0] + str r0, [sp, #0xc] +_02244FE0: + ldr r0, [sp, #4] + bl MOD11_0222FF84 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + cmp r0, #0xd + bne _02245070 + lsl r0, r6, #4 + add r1, r5, r0 + ldr r0, _02245100 ; =0x000003E6 + ldrh r0, [r1, r0] + cmp r0, #0 + beq _02244FFE + cmp r0, #2 + bne _02245070 +_02244FFE: + ldr r0, _02245104 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #0x20 + tst r0, r1 + bne _02245070 + mov r0, #0x1f + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #9 + add r3, r7, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _02245070 + ldr r0, [sp, #8] + mov r6, #0 + cmp r0, #0 + ble _02245050 +_02245024: + ldr r0, _02245108 ; =0x000021EC + add r1, r5, r6 + ldrb r4, [r1, r0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x1f + bne _02245048 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022450F8 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02245048 + cmp r7, r4 + bne _02245050 +_02245048: + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + blt _02245024 +_02245050: + ldr r0, [r5, #0x6c] + cmp r4, r0 + beq _022450F4 + mov r0, #0xb5 + lsl r0, r0, #2 + add r3, r5, r0 + mov r0, #0x1c + add r2, r4, #0 + mul r2, r0 + ldr r1, [r3, r2] + mov r0, #2 + orr r0, r1 + str r0, [r3, r2] + add sp, #0x10 + str r4, [r5, #0x6c] + pop {r3, r4, r5, r6, r7, pc} +_02245070: + ldr r0, [sp, #0xc] + cmp r0, #0xb + bne _022450F4 + lsl r0, r6, #4 + add r1, r5, r0 + ldr r0, _02245100 ; =0x000003E6 + ldrh r0, [r1, r0] + cmp r0, #0 + beq _02245086 + cmp r0, #2 + bne _022450F4 +_02245086: + ldr r0, _02245104 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #0x20 + tst r0, r1 + bne _022450F4 + mov r0, #0x72 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #9 + add r3, r7, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _022450F4 + ldr r0, [sp, #8] + mov r6, #0 + cmp r0, #0 + ble _022450D8 +_022450AC: + ldr r0, _02245108 ; =0x000021EC + add r1, r5, r6 + ldrb r4, [r1, r0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x72 + bne _022450D0 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022450F8 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _022450D0 + cmp r7, r4 + bne _022450D8 +_022450D0: + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + blt _022450AC +_022450D8: + ldr r0, [r5, #0x6c] + cmp r4, r0 + beq _022450F4 + mov r0, #0xb5 + lsl r0, r0, #2 + add r3, r5, r0 + mov r0, #0x1c + add r2, r4, #0 + mul r2, r0 + ldr r1, [r3, r2] + mov r0, #4 + orr r0, r1 + str r0, [r3, r2] + str r4, [r5, #0x6c] +_022450F4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022450F8: .word 0x00002D8C +_022450FC: .word 0x000003E2 +_02245100: .word 0x000003E6 +_02245104: .word 0x0000213C +_02245108: .word 0x000021EC + + thumb_func_start MOD11_0224510C +MOD11_0224510C: ; 0x0224510C + push {r3, r4, r5, lr} + ldr r0, _02245188 ; =0x0000216C + add r4, r1, #0 + ldr r1, [r4, r0] + ldr r0, _0224518C ; =0x801FDA49 + mov r2, #0 + tst r0, r1 + bne _0224514A + mov r0, #0xb5 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r3, [r4, #0x6c] + mov r0, #0x1c + mul r0, r3 + ldr r3, [r1, r0] + lsl r5, r3, #0x1e + lsr r5, r5, #0x1f + beq _0224514A + mov r2, #2 + bic r3, r2 + str r3, [r1, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xb4 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r2, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_0224514A: + ldr r0, _02245188 ; =0x0000216C + ldr r1, [r4, r0] + ldr r0, _0224518C ; =0x801FDA49 + tst r0, r1 + bne _02245182 + mov r0, #0xb5 + lsl r0, r0, #2 + add r1, r4, r0 + ldr r3, [r4, #0x6c] + mov r0, #0x1c + mul r0, r3 + ldr r3, [r1, r0] + lsl r5, r3, #0x1d + lsr r5, r5, #0x1f + beq _02245182 + mov r2, #4 + bic r3, r2 + str r3, [r1, r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xb4 + bl MOD11_022431DC + ldr r0, [r4, #8] + mov r2, #1 + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_02245182: + add r0, r2, #0 + pop {r3, r4, r5, pc} + nop +_02245188: .word 0x0000216C +_0224518C: .word 0x801FDA49 + + thumb_func_start MOD11_02245190 +MOD11_02245190: ; 0x02245190 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0xc0 + add r5, r1, #0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022451BC ; =0x00002DB8 + ldrh r0, [r1, r0] + cmp r0, #0 + bne _022451B0 + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD11_0224C83C +_022451B0: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD11_02256150 + pop {r4, r5, r6, pc} + .align 2, 0 +_022451BC: .word 0x00002DB8 + + thumb_func_start MOD11_022451C0 +MOD11_022451C0: ; 0x022451C0 + push {r4, r5} + ldr r0, _022451E8 ; =0x00002DB0 + add r4, r2, #0 + add r5, r1, r0 + mov r0, #0xc0 + mul r4, r0 + mov r0, #1 + ldr r3, [r5, r4] + lsl r0, r0, #0xc + orr r0, r3 + str r0, [r5, r4] + ldr r0, _022451EC ; =0x00003044 + lsl r2, r2, #2 + ldr r3, [r1, r0] + add r1, r1, r2 + add r0, #8 + str r3, [r1, r0] + pop {r4, r5} + bx lr + nop +_022451E8: .word 0x00002DB0 +_022451EC: .word 0x00003044 + + thumb_func_start MOD11_022451F0 +MOD11_022451F0: ; 0x022451F0 + push {r4, r5} + ldr r4, _02245234 ; =0x00002DB0 + add r3, r2, #0 + mov r0, #0xc0 + mul r3, r0 + add r0, r1, r4 + ldr r5, [r0, r3] + ldr r2, _02245238 ; =0xFFFFEFFF + and r2, r5 + str r2, [r0, r3] + ldr r5, [r0, r3] + ldr r2, _0224523C ; =0xFFFFFCFF + and r2, r5 + str r2, [r0, r3] + add r0, r4, #0 + add r0, #0x10 + add r5, r1, r0 + ldr r2, [r5, r3] + ldr r0, _02245240 ; =0xDFFBFF3F + add r4, #0x18 + and r0, r2 + str r0, [r5, r3] + add r2, r1, r4 + ldr r1, [r2, r3] + ldr r0, _02245244 ; =0xFFFC7FFF + and r0, r1 + str r0, [r2, r3] + ldr r1, [r2, r3] + ldr r0, _02245248 ; =0xFFE3FFFF + and r0, r1 + str r0, [r2, r3] + pop {r4, r5} + bx lr + nop +_02245234: .word 0x00002DB0 +_02245238: .word 0xFFFFEFFF +_0224523C: .word 0xFFFFFCFF +_02245240: .word 0xDFFBFF3F +_02245244: .word 0xFFFC7FFF +_02245248: .word 0xFFE3FFFF + + thumb_func_start MOD11_0224524C +MOD11_0224524C: ; 0x0224524C + mov r2, #0xc0 + mul r2, r1 + add r1, r0, r2 + ldr r0, _02245298 ; =0x00002DAC + ldr r0, [r1, r0] + mov r1, #7 + tst r1, r0 + beq _02245260 + mov r0, #1 + bx lr +_02245260: + mov r1, #8 + tst r1, r0 + beq _0224526A + mov r0, #2 + bx lr +_0224526A: + mov r1, #0x10 + tst r1, r0 + beq _02245274 + mov r0, #3 + bx lr +_02245274: + mov r1, #0x20 + tst r1, r0 + beq _0224527E + mov r0, #4 + bx lr +_0224527E: + mov r1, #0x40 + tst r1, r0 + beq _02245288 + mov r0, #5 + bx lr +_02245288: + mov r1, #0x80 + tst r0, r1 + beq _02245292 + mov r0, #2 + bx lr +_02245292: + mov r0, #0 + bx lr + nop +_02245298: .word 0x00002DAC + + thumb_func_start MOD11_0224529C +MOD11_0224529C: ; 0x0224529C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r7, r1, #0 + bl MOD11_0222FF74 + mov r1, #0x84 + tst r1, r0 + beq _022452B4 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_022452B4: + mov r1, #1 + add r2, r0, #0 + tst r2, r1 + bne _022452C2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_022452C2: + mov r2, #2 + tst r0, r2 + beq _022452CE + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_022452CE: + ldr r0, [sp] + bl MOD11_02230140 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #4] +_022452DA: + ldr r0, [sp, #4] + cmp r0, #4 + bls _022452E2 + b _02245478 +_022452E2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022452EE: ; jump table + .short _022452F8 - _022452EE - 2 ; case 0 + .short _0224533C - _022452EE - 2 ; case 1 + .short _02245384 - _022452EE - 2 ; case 2 + .short _022453F8 - _022452EE - 2 ; case 3 + .short _02245478 - _022452EE - 2 ; case 4 +_022452F8: + ldr r0, _02245488 ; =0x00002E7C + ldrb r0, [r7, r0] + cmp r0, #1 + bne _02245334 + mov r0, #0x85 + lsl r0, r0, #6 + ldr r1, [r7, r0] + mov r0, #0x20 + tst r0, r1 + bne _02245334 + ldr r0, [sp, #8] + mov r1, #0xd + mov r2, #5 + bl FUN_0206ACD4 + cmp r0, #0 + beq _02245334 + mov r1, #0x85 + lsl r1, r1, #6 + ldr r2, [r7, r1] + mov r0, #0x20 + orr r0, r2 + str r0, [r7, r1] + mov r0, #0x13 + mov r1, #0xd + lsl r0, r0, #4 + str r1, [r7, r0] + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245334: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + b _02245478 +_0224533C: + ldr r1, _0224548C ; =0x00002E7D + mov r0, #2 + ldrb r2, [r7, r1] + tst r0, r2 + bne _0224537C + add r0, r1, #0 + sub r0, #0x31 + sub r1, #0x2d + ldr r2, [r7, r0] + ldr r0, [r7, r1] + lsr r0, r0, #1 + cmp r2, r0 + bhi _0224537C + ldr r0, [sp, #8] + mov r1, #0xe + mov r2, #5 + bl FUN_0206ACD4 + cmp r0, #0 + beq _0224537C + ldr r1, _0224548C ; =0x00002E7D + mov r0, #2 + ldrb r2, [r7, r1] + add sp, #0xc + orr r0, r2 + strb r0, [r7, r1] + mov r0, #0x13 + mov r1, #0xe + lsl r0, r0, #4 + str r1, [r7, r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224537C: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + b _02245478 +_02245384: + ldr r0, _0224548C ; =0x00002E7D + ldrb r1, [r7, r0] + mov r0, #3 + tst r0, r1 + bne _022453F0 + ldr r0, [sp] + mov r1, #1 + bl MOD11_0222FF88 + mov r6, #0 + add r5, r0, #0 + add r4, r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _022453C6 +_022453A4: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022453BA + add r6, r6, #1 +_022453BA: + add r0, r5, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _022453A4 +_022453C6: + cmp r6, #1 + bne _022453F0 + ldr r0, [sp, #8] + mov r1, #0xf + mov r2, #5 + bl FUN_0206ACD4 + cmp r0, #0 + beq _022453F0 + ldr r1, _0224548C ; =0x00002E7D + mov r0, #3 + ldrb r2, [r7, r1] + add sp, #0xc + orr r0, r2 + strb r0, [r7, r1] + mov r0, #0x13 + mov r1, #0xf + lsl r0, r0, #4 + str r1, [r7, r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022453F0: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + b _02245478 +_022453F8: + ldr r0, _0224548C ; =0x00002E7D + ldrb r1, [r7, r0] + mov r0, #4 + tst r0, r1 + bne _02245472 + ldr r0, [sp] + mov r1, #1 + bl MOD11_0222FF88 + mov r6, #0 + add r5, r0, #0 + add r4, r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0224543A +_02245418: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0224542E + add r6, r6, #1 +_0224542E: + add r0, r5, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _02245418 +_0224543A: + cmp r6, #1 + bne _02245472 + ldr r0, _02245490 ; =0x00002E4C + ldr r1, [r7, r0] + add r0, r0, #4 + ldr r0, [r7, r0] + lsr r0, r0, #1 + cmp r1, r0 + bhi _02245472 + ldr r0, [sp, #8] + mov r1, #0x10 + mov r2, #5 + bl FUN_0206ACD4 + cmp r0, #0 + beq _02245472 + ldr r1, _0224548C ; =0x00002E7D + mov r0, #4 + ldrb r2, [r7, r1] + add sp, #0xc + orr r0, r2 + strb r0, [r7, r1] + mov r0, #0x13 + mov r1, #0x10 + lsl r0, r0, #4 + str r1, [r7, r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245472: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02245478: + ldr r0, [sp, #4] + cmp r0, #4 + beq _02245480 + b _022452DA +_02245480: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02245488: .word 0x00002E7C +_0224548C: .word 0x00002E7D +_02245490: .word 0x00002E4C + + thumb_func_start MOD11_02245494 +MOD11_02245494: ; 0x02245494 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _02245574 ; =0x00002144 + add r5, r0, #0 + mov r4, #0 + add r0, r1, #0 + str r4, [r5, r1] + mov r2, #1 + add r0, #0xc + str r2, [r5, r0] + add r0, r1, #0 + add r0, #8 + str r4, [r5, r0] + add r0, r1, #0 + add r0, #0x10 + str r4, [r5, r0] + add r0, r1, #0 + mov r2, #0xa + add r0, #0x14 + str r2, [r5, r0] + add r0, r1, #0 + add r0, #0x1c + str r4, [r5, r0] + add r0, r1, #0 + add r0, #0x20 + str r4, [r5, r0] + add r0, r1, #0 + add r0, #0x28 + str r4, [r5, r0] + mov r0, #0xff + add r2, r1, #0 + str r0, [r5, #0x74] + add r2, #0x2c + str r4, [r5, r2] + add r2, r1, #0 + add r2, #0x30 + str r4, [r5, r2] + add r2, r1, #0 + add r2, #0x34 + str r4, [r5, r2] + add r2, r5, #0 + add r2, #0x88 + str r4, [r2] + add r2, r5, #0 + add r2, #0x8c + str r4, [r2] + add r2, r5, #0 + add r2, #0x94 + str r0, [r2] + add r0, r1, #0 + add r0, #0x38 + strb r4, [r5, r0] + add r0, r1, #0 + add r0, #0x39 + strb r4, [r5, r0] + add r0, r1, #0 + add r0, #0x3a + strb r4, [r5, r0] + add r0, r1, #0 + add r0, #0x3c + str r4, [r5, r0] + add r0, r1, #0 + str r4, [r5, #0x38] + add r0, #0x40 + str r4, [r5, r0] + add r0, r1, #0 + add r0, #0x44 + str r4, [r5, r0] + str r4, [r5, #0x10] + str r4, [r5, #0x18] + str r4, [r5, #0x20] + str r4, [r5, #0x28] + str r4, [r5, #0x30] + str r4, [r5, #0x3c] + str r4, [r5, #0x40] + str r4, [r5, #0x48] + str r4, [r5, #0x4c] + str r4, [r5, #0x50] + add r0, r1, #0 + str r4, [r5, #0x54] + sub r0, #8 + ldr r2, [r5, r0] + ldr r0, _02245578 ; =0xFF880000 + mov r7, #6 + and r2, r0 + add r0, r1, #0 + sub r0, #8 + str r2, [r5, r0] + sub r0, r1, #4 + ldr r2, [r5, r0] + ldr r0, _0224557C ; =0xFFFFFEA1 + and r2, r0 + sub r0, r1, #4 + str r2, [r5, r0] + ldr r0, _02245580 ; =0x00003120 + strb r4, [r5, r0] + mov r0, #0xb5 + lsl r0, r0, #2 + add r6, r5, r0 +_02245558: + mov r0, #0 + add r1, r6, #0 + mov r2, #0x1c + blx MIi_CpuClearFast + add r1, r5, r4 + ldr r0, _02245584 ; =0x000021A4 + add r4, r4, #1 + add r6, #0x1c + strb r7, [r1, r0] + cmp r4, #4 + blt _02245558 + pop {r3, r4, r5, r6, r7, pc} + nop +_02245574: .word 0x00002144 +_02245578: .word 0xFF880000 +_0224557C: .word 0xFFFFFEA1 +_02245580: .word 0x00003120 +_02245584: .word 0x000021A4 + + thumb_func_start MOD11_02245588 +MOD11_02245588: ; 0x02245588 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + str r0, [sp] + mov r4, #0 + add r5, r6, #0 + mov r7, #0xff +_02245594: + ldr r0, _022455F0 ; =0x0000306C + add r2, r6, r4 + strh r7, [r5, r0] + ldr r0, _022455F4 ; =0x000021A0 + mov r1, #6 + strb r1, [r2, r0] + bl FUN_0201B9EC + ldr r1, _022455F8 ; =0x0000310C + add r4, r4, #1 + strh r0, [r5, r1] + add r5, r5, #2 + cmp r4, #4 + blt _02245594 + ldr r0, _022455FC ; =0x00002168 + mov r1, #1 + str r1, [r6, r0] + mov r0, #0x5d + lsl r0, r0, #2 + str r1, [r6, r0] + ldr r0, [sp] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _022455E4 + add r0, r1, #0 + bl FUN_0206A92C + ldr r1, _02245600 ; =0x00003108 + ldrb r2, [r6, r1] + orr r0, r2 + strb r0, [r6, r1] + mov r0, #3 + bl FUN_0206A92C + ldr r1, _02245600 ; =0x00003108 + ldrb r2, [r6, r1] + orr r0, r2 + strb r0, [r6, r1] +_022455E4: + ldr r0, _02245604 ; =0x0000311C + mov r1, #6 + strb r1, [r6, r0] + add r0, r0, #1 + strb r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022455F0: .word 0x0000306C +_022455F4: .word 0x000021A0 +_022455F8: .word 0x0000310C +_022455FC: .word 0x00002168 +_02245600: .word 0x00003108 +_02245604: .word 0x0000311C + + thumb_func_start MOD11_02245608 +MOD11_02245608: ; 0x02245608 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r1, [sp, #4] + str r0, [sp] + ldr r1, _0224594C ; =0x00002DC8 + ldr r0, [sp, #4] + add r4, r2, #0 + add r1, r0, r1 + mov r0, #0xc0 + mul r0, r4 + add r5, r1, r0 + str r5, [sp, #0x14] + add r3, sp, #0x20 + mov r2, #7 +_02245624: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02245624 + ldr r0, [sp] + bl MOD11_0222FF84 + add r6, r0, #0 + ldr r0, [sp] + bl MOD11_0222FF74 + ldr r1, [sp, #4] + lsl r2, r4, #4 + add r1, r1, r2 + ldr r2, _02245950 ; =0x000021A8 + mov r0, #0x27 + str r0, [r1, r2] + ldr r1, [sp, #4] + sub r2, #0x6c + ldr r1, [r1, r2] + add r0, #0xd9 + tst r0, r1 + bne _022456E2 + mov r5, #0 + cmp r6, #0 + ble _022456BE + ldr r1, [sp, #4] + ldr r2, _02245954 ; =0x00002DCC + add r0, r1, #0 + add r2, r0, r2 + mov r0, #0x18 + mov ip, r0 + mov r7, #3 +_02245666: + ldr r0, _02245958 ; =0x00002DB0 + ldr r3, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x1a + tst r0, r3 + beq _02245688 + ldr r0, [r2] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1e + cmp r4, r0 + bne _02245688 + ldr r0, _02245958 ; =0x00002DB0 + ldr r3, [r1, r0] + ldr r0, _0224595C ; =0xFBFFFFFF + and r3, r0 + ldr r0, _02245958 ; =0x00002DB0 + str r3, [r1, r0] +_02245688: + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r3, [r1, r0] + mov r0, #0x18 + tst r0, r3 + beq _022456B4 + ldr r0, [r2] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r4, r0 + bne _022456B4 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r3, ip + bic r0, r3 + mov r3, #0xb7 + lsl r3, r3, #6 + str r0, [r1, r3] + ldr r0, [r2] + bic r0, r7 + str r0, [r2] +_022456B4: + add r5, r5, #1 + add r1, #0xc0 + add r2, #0xc0 + cmp r5, r6 + blt _02245666 +_022456BE: + mov r0, #0xc0 + mul r0, r4 + str r0, [sp, #0xc] + ldr r2, [sp, #4] + ldr r1, [sp, #0xc] + mov r0, #0 + add r1, r2, r1 + ldr r2, _02245958 ; =0x00002DB0 + str r0, [r1, r2] + ldr r1, [sp, #4] + add r2, #0x10 + add r2, r1, r2 + ldr r1, [sp, #0xc] + add r1, r2, r1 + str r1, [sp, #0x10] + ldr r1, [sp, #0xc] + str r0, [r2, r1] + b _0224575A +_022456E2: + mov r0, #0xc0 + mul r0, r4 + str r0, [sp, #0xc] + ldr r1, _02245958 ; =0x00002DB0 + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + add r0, r0, r1 + ldr r3, [r0, r2] + ldr r2, _02245960 ; =0x15100007 + and r3, r2 + ldr r2, [sp, #0xc] + str r3, [r0, r2] + add r2, r1, #0 + ldr r0, [sp, #4] + add r2, #0x10 + add r0, r0, r2 + ldr r2, [sp, #0xc] + add r2, r0, r2 + str r2, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r3, [r0, r2] + ldr r2, _02245964 ; =0x0FA3843F + and r3, r2 + ldr r2, [sp, #0xc] + str r3, [r0, r2] + mov r2, #0 + cmp r6, #0 + ble _0224575A + ldr r0, [sp, #4] + add r1, #0x1c + add r3, r0, #0 + add r1, r3, r1 + mov r7, #0x18 +_02245724: + mov r3, #0xb7 + lsl r3, r3, #6 + ldr r5, [r0, r3] + mov r3, #0x18 + tst r3, r5 + beq _02245750 + ldr r3, [r1] + lsl r3, r3, #0x1e + lsr r3, r3, #0x1e + cmp r4, r3 + bne _02245750 + mov r3, #0xb7 + lsl r3, r3, #6 + ldr r5, [r0, r3] + bic r5, r7 + str r5, [r0, r3] + ldr r5, [r0, r3] + mov r3, #0x10 + orr r5, r3 + mov r3, #0xb7 + lsl r3, r3, #6 + str r5, [r0, r3] +_02245750: + add r2, r2, #1 + add r0, #0xc0 + add r1, #0xc0 + cmp r2, r6 + blt _02245724 +_0224575A: + mov r0, #0 + str r0, [sp, #8] + cmp r6, #0 + ble _022457C2 + ldr r5, [sp, #4] + ldr r1, _02245954 ; =0x00002DCC + add r0, r5, #0 + add r7, r0, r1 +_0224576A: + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, _02245958 ; =0x00002DB0 + lsl r0, r0, #0x10 + ldr r1, [r5, r1] + tst r0, r1 + beq _02245792 + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, _02245958 ; =0x00002DB0 + lsl r2, r0, #0x10 + mov r0, #0 + mvn r0, r0 + ldr r1, [r5, r1] + eor r0, r2 + and r1, r0 + ldr r0, _02245958 ; =0x00002DB0 + str r1, [r5, r0] +_02245792: + ldr r0, _02245958 ; =0x00002DB0 + ldr r1, [r5, r0] + mov r0, #0xe + lsl r0, r0, #0xc + tst r0, r1 + beq _022457B4 + ldr r0, [r7] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + cmp r4, r0 + bne _022457B4 + ldr r0, _02245958 ; =0x00002DB0 + ldr r1, [r5, r0] + ldr r0, _02245968 ; =0xFFFF1FFF + and r1, r0 + ldr r0, _02245958 ; =0x00002DB0 + str r1, [r5, r0] +_022457B4: + ldr r0, [sp, #8] + add r5, #0xc0 + add r0, r0, #1 + add r7, #0xc0 + str r0, [sp, #8] + cmp r0, r6 + blt _0224576A +_022457C2: + mov r2, #0 + add r1, r2, #0 +_022457C6: + ldr r0, [sp, #0x14] + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #0x38 + blo _022457C6 + ldr r1, _0224596C ; =0x0000213C + ldr r0, [sp, #4] + ldr r1, [r0, r1] + mov r0, #1 + lsl r0, r0, #8 + tst r0, r1 + beq _0224587A + ldr r1, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x38] + add r0, r1, r0 + ldr r1, _02245970 ; =0x00002DE0 + str r2, [r0, r1] + ldr r0, [sp, #4] + sub r1, #0x14 + add r0, r0, r1 + ldr r1, [sp, #0xc] + mov r2, #3 + ldr r1, [r0, r1] + bic r1, r2 + ldr r2, [sp, #0x24] + lsl r2, r2, #0x1e + lsr r3, r2, #0x1e + mov r2, #3 + and r2, r3 + orr r2, r1 + ldr r1, [sp, #0xc] + str r2, [r0, r1] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x14] + lsl r3, r3, #0x11 + lsr r3, r3, #0x1e + lsl r3, r3, #0x1e + ldr r1, [r1] + ldr r2, _02245974 ; =0xFFFF9FFF + lsr r3, r3, #0x11 + and r1, r2 + orr r3, r1 + ldr r1, [sp, #0x14] + str r3, [r1] + ldr r1, [sp, #0xc] + ldr r3, [r0, r1] + asr r1, r2, #5 + ldr r2, [sp, #0x24] + and r1, r3 + lsl r2, r2, #0x16 + lsr r2, r2, #0x1e + lsl r2, r2, #0x1e + lsr r2, r2, #0x16 + orr r2, r1 + ldr r1, [sp, #0xc] + str r2, [r0, r1] + ldr r2, [r0, r1] + ldr r1, _02245968 ; =0xFFFF1FFF + and r1, r2 + ldr r2, [sp, #0x24] + lsl r2, r2, #0x10 + lsr r2, r2, #0x1d + lsl r2, r2, #0x1d + lsr r2, r2, #0x10 + orr r2, r1 + ldr r1, [sp, #0xc] + str r2, [r0, r1] + ldr r3, [sp, #0x24] + ldr r1, [r0, r1] + lsl r3, r3, #0xa + ldr r2, _02245978 ; =0xFFC7FFFF + lsr r3, r3, #0x1d + lsl r3, r3, #0x1d + and r1, r2 + lsr r3, r3, #0xa + orr r3, r1 + ldr r1, [sp, #0xc] + str r3, [r0, r1] + ldr r3, [r0, r1] + asr r1, r2, #3 + ldr r2, [sp, #0x24] + and r1, r3 + lsl r2, r2, #0xd + lsr r2, r2, #0x1d + lsl r2, r2, #0x1d + lsr r2, r2, #0xd + orr r2, r1 + ldr r1, [sp, #0xc] + str r2, [r0, r1] +_0224587A: + mov r0, #0xc0 + add r3, r0, #0 + ldr r2, [sp, #4] + add r3, #0x90 + ldr r2, [r2, r3] + add r1, r4, #0 + ldr r3, [sp, #4] + mul r1, r0 + add r5, r0, #0 + add r1, r3, r1 + ldr r3, _0224597C ; =0x00002DD4 + add r2, r2, #1 + str r2, [r1, r3] + ldr r2, [sp, #4] + add r5, #0x90 + ldr r2, [r2, r5] + add r0, #0x90 + add r5, r2, #1 + add r2, r3, #4 + str r5, [r1, r2] + ldr r1, [sp, #0x14] + lsl r7, r4, #1 + ldr r2, [r1] + ldr r1, _02245980 ; =0xBFFFFFFF + mov r5, #0 + and r1, r2 + ldr r2, [sp, #4] + ldr r0, [r2, r0] + add r0, r0, #1 + lsl r0, r0, #0x1f + lsr r0, r0, #1 + orr r1, r0 + ldr r0, [sp, #0x14] + str r1, [r0] + add r0, r2, #0 + ldr r1, _02245984 ; =0x0000305C + add r3, r0, r7 + add r0, r1, #0 + strh r5, [r3, r1] + add r0, #8 + strh r5, [r3, r0] + add r0, r1, #0 + mov r2, #0xff + add r0, #0x10 + strh r2, [r3, r0] + add r0, r1, #0 + add r0, #0x18 + strh r5, [r3, r0] + add r0, r1, #0 + add r0, #0x20 + strh r5, [r3, r0] + add r0, r1, #0 + add r0, #0x28 + strh r5, [r3, r0] + ldr r0, [sp, #4] + lsl r2, r4, #3 + add r0, r0, r2 + add r2, r1, #0 + add r2, #0x30 + strh r5, [r0, r2] + add r2, r1, #0 + add r2, #0x32 + strh r5, [r0, r2] + add r2, r1, #0 + add r2, #0x34 + strh r5, [r0, r2] + add r2, r1, #0 + add r2, #0x36 + strh r5, [r0, r2] + add r0, r1, #0 + add r0, #0x50 + strh r5, [r3, r0] + add r0, r1, #0 + add r0, #0x68 + strh r5, [r3, r0] + add r0, r1, #0 + add r0, #0x70 + strh r5, [r3, r0] + add r0, r1, #0 + add r0, #0x78 + strh r5, [r3, r0] + add r1, #0x80 + add r0, r4, #0 + strh r5, [r3, r1] + bl FUN_0206A92C + mov r1, #6 + lsl r3, r0, #8 + sub r0, r5, #1 + ldr r2, [sp, #4] + lsl r1, r1, #6 + ldr r2, [r2, r1] + eor r0, r3 + and r2, r0 + ldr r0, [sp, #4] + str r2, [r0, r1] + ldr r0, [sp, #0x10] + ldr r1, [r0] + mov r0, #2 + lsl r0, r0, #0x16 + tst r0, r1 + beq _022459A2 + ldr r0, _02245988 ; =0x00002D42 + b _0224598C + nop +_0224594C: .word 0x00002DC8 +_02245950: .word 0x000021A8 +_02245954: .word 0x00002DCC +_02245958: .word 0x00002DB0 +_0224595C: .word 0xFBFFFFFF +_02245960: .word 0x15100007 +_02245964: .word 0x0FA3843F +_02245968: .word 0xFFFF1FFF +_0224596C: .word 0x0000213C +_02245970: .word 0x00002DE0 +_02245974: .word 0xFFFF9FFF +_02245978: .word 0xFFC7FFFF +_0224597C: .word 0x00002DD4 +_02245980: .word 0xBFFFFFFF +_02245984: .word 0x0000305C +_02245988: .word 0x00002D42 +_0224598C: + ldr r1, [sp, #4] + add r5, r1, r0 + ldr r1, [sp, #0xc] + ldrh r3, [r5, r1] + add r1, r0, #2 + ldr r0, [sp, #4] + add r2, r0, r1 + ldr r0, [sp, #0xc] + ldrh r1, [r2, r0] + strh r1, [r5, r0] + strh r3, [r2, r0] +_022459A2: + mov r5, #0 + cmp r6, #0 + ble _022459E6 + ldr r0, [sp, #4] + str r0, [sp, #0x18] + add r7, r0, r7 +_022459AE: + cmp r5, r4 + beq _022459D2 + ldr r0, [sp] + add r1, r5, #0 + bl MOD11_02230270 + str r0, [sp, #0x1c] + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02230270 + ldr r1, [sp, #0x1c] + cmp r1, r0 + beq _022459D2 + ldr r1, [sp, #0x18] + ldr r0, _02245A08 ; =0x00003084 + mov r2, #0 + strh r2, [r1, r0] +_022459D2: + ldr r0, _02245A0C ; =0x0000308C + mov r1, #0 + strh r1, [r7, r0] + ldr r0, [sp, #0x18] + add r5, r5, #1 + add r0, r0, #2 + str r0, [sp, #0x18] + add r7, #8 + cmp r5, r6 + blt _022459AE +_022459E6: + lsl r1, r4, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD11_0224C818 + lsl r1, r4, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD11_0224C830 + lsl r1, r4, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD11_0224C83C + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245A08: .word 0x00003084 +_02245A0C: .word 0x0000308C + + thumb_func_start MOD11_02245A10 +MOD11_02245A10: ; 0x02245A10 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #4] + str r0, [sp] + add r5, r2, #0 + bl MOD11_0222FF84 + str r0, [sp, #0xc] + mov r0, #0xc0 + mul r0, r5 + ldr r1, [sp, #4] + str r0, [sp, #8] + add r3, r1, r0 + ldr r0, _02245C34 ; =0x00002D58 + mov r2, #0 + mov r1, #6 +_02245A30: + add r2, r2, #1 + strb r1, [r3, r0] + add r3, r3, #1 + cmp r2, #8 + blt _02245A30 + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + ldr r0, [sp, #4] + mov r7, #0 + add r2, r0, r1 + ldr r1, _02245C38 ; =0x00002DB0 + add r0, r1, #0 + str r7, [r2, r1] + add r0, #0x10 + str r7, [r2, r0] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _02245AD6 + ldr r4, [sp, #4] + add r1, #0x1c + add r0, r4, #0 + add r6, r0, r1 +_02245A5E: + ldr r0, _02245C38 ; =0x00002DB0 + ldr r1, [r4, r0] + mov r0, #1 + lsl r0, r0, #0x1a + tst r0, r1 + beq _02245A80 + ldr r0, [r6] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1e + cmp r5, r0 + bne _02245A80 + ldr r0, _02245C38 ; =0x00002DB0 + ldr r1, [r4, r0] + ldr r0, _02245C3C ; =0xFBFFFFFF + and r1, r0 + ldr r0, _02245C38 ; =0x00002DB0 + str r1, [r4, r0] +_02245A80: + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, _02245C38 ; =0x00002DB0 + lsl r0, r0, #0x10 + ldr r1, [r4, r1] + tst r0, r1 + beq _02245AA8 + add r0, r5, #0 + bl FUN_0206A92C + ldr r1, _02245C38 ; =0x00002DB0 + lsl r2, r0, #0x10 + mov r0, #0 + mvn r0, r0 + ldr r1, [r4, r1] + eor r0, r2 + and r1, r0 + ldr r0, _02245C38 ; =0x00002DB0 + str r1, [r4, r0] +_02245AA8: + ldr r0, _02245C38 ; =0x00002DB0 + ldr r1, [r4, r0] + mov r0, #0xe + lsl r0, r0, #0xc + tst r0, r1 + beq _02245ACA + ldr r0, [r6] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + cmp r5, r0 + bne _02245ACA + ldr r0, _02245C38 ; =0x00002DB0 + ldr r1, [r4, r0] + ldr r0, _02245C40 ; =0xFFFF1FFF + and r1, r0 + ldr r0, _02245C38 ; =0x00002DB0 + str r1, [r4, r0] +_02245ACA: + ldr r0, [sp, #0xc] + add r7, r7, #1 + add r4, #0xc0 + add r6, #0xc0 + cmp r7, r0 + blt _02245A5E +_02245AD6: + ldr r1, _02245C44 ; =0x00002DC8 + ldr r0, [sp, #4] + add r1, r0, r1 + ldr r0, [sp, #8] + add r6, r1, r0 + mov r1, #0 + add r0, r1, #0 +_02245AE4: + strb r0, [r6, r1] + add r1, r1, #1 + cmp r1, #0x38 + blo _02245AE4 + mov r2, #0x75 + ldr r1, [sp, #4] + lsl r2, r2, #2 + add r2, r1, r2 + lsl r1, r5, #6 + add r1, r2, r1 + mov r4, #0 +_02245AFA: + strb r4, [r1, r0] + add r0, r0, #1 + cmp r0, #0x40 + blo _02245AFA + mov r2, #0xc0 + add r3, r2, #0 + ldr r0, [sp, #4] + add r3, #0x90 + ldr r0, [r0, r3] + add r1, r5, #0 + ldr r3, [sp, #4] + mul r1, r2 + add r3, r3, r1 + add r1, r2, #0 + ldr r7, _02245C48 ; =0x00002DD4 + add r0, r0, #1 + str r0, [r3, r7] + ldr r0, [sp, #4] + add r1, #0x90 + ldr r0, [r0, r1] + add r1, r7, #4 + add r0, r0, #1 + str r0, [r3, r1] + ldr r1, [r6] + ldr r0, _02245C4C ; =0xBFFFFFFF + add r2, #0x90 + and r0, r1 + ldr r1, [sp, #4] + mov r3, #0xff + ldr r1, [r1, r2] + add r1, r1, #1 + lsl r1, r1, #0x1f + lsr r1, r1, #1 + orr r0, r1 + str r0, [r6] + ldr r0, [sp, #4] + lsl r6, r5, #1 + add r2, r0, r6 + ldr r0, _02245C50 ; =0x0000305C + add r1, r0, #0 + strh r4, [r2, r0] + add r1, #8 + strh r4, [r2, r1] + add r1, r0, #0 + add r1, #0x10 + strh r3, [r2, r1] + add r1, r0, #0 + add r1, #0x18 + strh r4, [r2, r1] + add r1, r0, #0 + add r1, #0x20 + strh r4, [r2, r1] + add r1, r0, #0 + add r1, #0x28 + strh r4, [r2, r1] + ldr r1, [sp, #4] + lsl r3, r5, #3 + add r1, r1, r3 + add r3, r0, #0 + add r3, #0x30 + strh r4, [r1, r3] + add r3, r0, #0 + add r3, #0x32 + strh r4, [r1, r3] + add r3, r0, #0 + add r3, #0x34 + strh r4, [r1, r3] + add r3, r0, #0 + add r3, #0x36 + strh r4, [r1, r3] + add r1, r0, #0 + add r1, #0x50 + strh r4, [r2, r1] + add r1, r0, #0 + add r1, #0x68 + strh r4, [r2, r1] + add r1, r0, #0 + add r1, #0x70 + strh r4, [r2, r1] + add r1, r0, #0 + add r1, #0x78 + strh r4, [r2, r1] + add r0, #0x80 + strh r4, [r2, r0] + add r0, r5, #0 + bl FUN_0206A92C + mov r1, #6 + lsl r3, r0, #8 + mov r0, #0 + mvn r0, r0 + ldr r2, [sp, #4] + lsl r1, r1, #6 + ldr r2, [r2, r1] + eor r0, r3 + and r2, r0 + ldr r0, [sp, #4] + mov r4, #0 + str r2, [r0, r1] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _02245C00 + ldr r7, [sp, #4] + add r0, r7, #0 + add r6, r0, r6 +_02245BCC: + cmp r4, r5 + beq _02245BEE + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02230270 + str r0, [sp, #0x10] + ldr r0, [sp] + add r1, r5, #0 + bl MOD11_02230270 + ldr r1, [sp, #0x10] + cmp r1, r0 + beq _02245BEE + ldr r0, _02245C54 ; =0x00003084 + mov r1, #0 + strh r1, [r7, r0] +_02245BEE: + ldr r0, _02245C58 ; =0x0000308C + mov r1, #0 + strh r1, [r6, r0] + ldr r0, [sp, #0xc] + add r4, r4, #1 + add r7, r7, #2 + add r6, #8 + cmp r4, r0 + blt _02245BCC +_02245C00: + mov r1, #0x4f + ldr r0, [sp, #4] + lsl r1, r1, #2 + add r3, r0, r1 + lsl r2, r5, #2 + ldr r1, [r3, r2] + mov r0, #1 + bic r1, r0 + str r1, [r3, r2] + lsl r1, r5, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD11_0224C818 + lsl r1, r5, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD11_0224C830 + lsl r1, r5, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD11_0224C83C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02245C34: .word 0x00002D58 +_02245C38: .word 0x00002DB0 +_02245C3C: .word 0xFBFFFFFF +_02245C40: .word 0xFFFF1FFF +_02245C44: .word 0x00002DC8 +_02245C48: .word 0x00002DD4 +_02245C4C: .word 0xBFFFFFFF +_02245C50: .word 0x0000305C +_02245C54: .word 0x00003084 +_02245C58: .word 0x0000308C + + thumb_func_start MOD11_02245C5C +MOD11_02245C5C: ; 0x02245C5C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x75 + add r5, r1, #0 + lsl r0, r0, #2 + add r7, r5, r0 + mov r0, #0xd1 + lsl r0, r0, #2 + add r6, r5, r0 + mov r0, #8 + add r4, r5, #0 + str r0, [sp, #8] +_02245C7A: + mov r0, #0 + add r1, r7, #0 + mov r2, #0x40 + blx MIi_CpuClearFast + mov r0, #0 + add r1, r6, #0 + mov r2, #4 + blx MIi_CpuClearFast + ldr r0, _02245D24 ; =0x00002DB0 + ldr r1, [r4, r0] + ldr r0, [sp, #8] + bic r1, r0 + ldr r0, _02245D24 ; =0x00002DB0 + str r1, [r4, r0] + add r0, #0x20 + ldr r0, [r4, r0] + add r1, r0, #1 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r1, r0 + bge _02245CB6 + ldr r0, _02245D24 ; =0x00002DB0 + ldr r1, [r4, r0] + ldr r0, _02245D28 ; =0xFFBFFFFF + and r1, r0 + ldr r0, _02245D24 ; =0x00002DB0 + str r1, [r4, r0] +_02245CB6: + ldr r0, _02245D2C ; =0x00002DAC + ldr r1, [r4, r0] + mov r0, #7 + tst r0, r1 + beq _02245CD6 + ldr r0, _02245D24 ; =0x00002DB0 + ldr r1, [r4, r0] + mov r0, #1 + lsl r0, r0, #0xc + tst r0, r1 + beq _02245CD6 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r5, #0 + bl MOD11_022451F0 +_02245CD6: + ldr r0, _02245D2C ; =0x00002DAC + ldr r1, [r4, r0] + mov r0, #7 + tst r0, r1 + beq _02245CF8 + ldr r0, _02245D24 ; =0x00002DB0 + ldr r1, [r4, r0] + mov r0, #3 + lsl r0, r0, #0xa + tst r0, r1 + beq _02245CF8 + ldr r0, _02245D24 ; =0x00002DB0 + ldr r1, [r4, r0] + ldr r0, _02245D30 ; =0xFFFFF3FF + and r1, r0 + ldr r0, _02245D24 ; =0x00002DB0 + str r1, [r4, r0] +_02245CF8: + ldr r0, [sp, #4] + add r7, #0x40 + add r0, r0, #1 + add r6, r6, #4 + add r4, #0xc0 + str r0, [sp, #4] + cmp r0, #4 + blt _02245C7A + mov r2, #0x71 + lsl r2, r2, #2 + ldr r0, [r5, r2] + ldr r1, _02245D34 ; =0xFFEFFFFF + and r0, r1 + str r0, [r5, r2] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + add r2, #8 + and r0, r1 + str r0, [r5, r2] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02245D24: .word 0x00002DB0 +_02245D28: .word 0xFFBFFFFF +_02245D2C: .word 0x00002DAC +_02245D30: .word 0xFFFFF3FF +_02245D34: .word 0xFFEFFFFF + + thumb_func_start MOD11_02245D38 +MOD11_02245D38: ; 0x02245D38 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + str r0, [sp] + ldr r0, [sp, #0x70] + add r7, r1, #0 + str r0, [sp, #0x70] + str r2, [sp, #4] + add r0, r7, #0 + add r1, r2, #0 + add r5, r3, #0 + bl MOD11_02249D90 + str r0, [sp, #0x34] + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + add r4, r7, r1 + str r1, [sp, #0x38] + ldr r0, [sp, #0x70] + mov r1, #1 + and r0, r1 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x70] + mov r1, #2 + and r0, r1 + str r0, [sp, #0x28] + ldr r0, [sp, #0x70] + mov r1, #4 + and r0, r1 + str r0, [sp, #0x24] + ldr r0, [sp, #4] + mov r1, #8 + lsl r0, r0, #1 + add r0, r7, r0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x70] + mov r2, #0x10 + and r0, r1 + ldr r1, _02245F50 ; =0x00002DC8 + str r0, [sp, #0x1c] + add r0, r7, r1 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x70] + sub r1, #0x88 + and r0, r2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x70] + mov r2, #0x20 + and r0, r2 + str r0, [sp, #0x14] + ldr r0, [sp, #0x70] + mov r2, #0x40 + and r0, r2 + str r0, [sp, #0x10] + ldr r2, [sp, #0x70] + mov r0, #0x80 + and r2, r0 + str r2, [sp, #0xc] + lsl r2, r0, #2 + ldr r0, [sp, #0x70] + mov r6, #0 + and r0, r2 + str r0, [sp, #8] + add r0, r7, r1 + str r0, [sp, #0x40] + ldr r0, _02245F54 ; =0x00002DE8 + str r4, [sp, #0x30] + add r0, r4, r0 + str r0, [sp, #0x44] + ldr r0, _02245F58 ; =0x00002DB0 + add r0, r4, r0 + str r0, [sp, #0x48] + ldr r0, _02245F5C ; =0x00002DEC + add r0, r4, r0 + str r0, [sp, #0x4c] + ldr r0, _02245F60 ; =0x00002DF8 + add r0, r4, r0 + str r0, [sp, #0x50] + ldr r0, _02245F60 ; =0x00002DF8 + add r0, r4, r0 + str r0, [sp, #0x58] + ldr r0, _02245F60 ; =0x00002DF8 + add r0, r4, r0 + str r0, [sp, #0x54] +_02245DE0: + ldr r0, _02245F64 ; =0x00002D4C + ldrh r0, [r4, r0] + cmp r0, #0 + bne _02245DF6 + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _02245DF6 + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245DF6: + ldr r1, [sp, #0x30] + ldr r0, _02245F68 ; =0x00002D6C + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02245E0E + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _02245E0E + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245E0E: + ldr r0, [sp, #0x44] + ldrh r1, [r0] + ldr r0, _02245F64 ; =0x00002D4C + ldrh r0, [r4, r0] + cmp r1, r0 + bne _02245E28 + ldr r0, [sp, #0x24] + cmp r0, #0 + beq _02245E28 + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245E28: + ldr r1, [sp, #0x20] + ldr r0, _02245F6C ; =0x0000307C + ldrh r1, [r1, r0] + ldr r0, _02245F64 ; =0x00002D4C + ldrh r0, [r4, r0] + cmp r1, r0 + bne _02245E50 + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _02245E50 + ldr r0, [sp, #0x48] + ldr r1, [r0] + mov r0, #2 + lsl r0, r0, #0x1e + tst r0, r1 + beq _02245E50 + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245E50: + ldr r1, [sp, #0x3c] + ldr r0, [sp, #0x38] + ldr r0, [r1, r0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + beq _02245E7A + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _02245E7A + ldr r0, _02245F64 ; =0x00002D4C + ldrh r0, [r4, r0] + lsl r0, r0, #4 + add r1, r7, r0 + ldr r0, _02245F70 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02245E7A + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245E7A: + ldr r3, _02245F64 ; =0x00002D4C + ldr r0, [sp] + ldrh r3, [r4, r3] + ldr r2, [sp, #4] + add r1, r7, #0 + bl MOD11_022471C4 + cmp r0, #0 + beq _02245E9A + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02245E9A + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245E9A: + ldr r3, _02245F64 ; =0x00002D4C + ldr r0, [sp] + ldrh r3, [r4, r3] + ldr r2, [sp, #4] + add r1, r7, #0 + bl MOD11_02247314 + cmp r0, #0 + beq _02245EBA + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _02245EBA + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245EBA: + ldr r3, _02245F64 ; =0x00002D4C + ldr r0, [sp] + ldrh r3, [r4, r3] + ldr r2, [sp, #4] + add r1, r7, #0 + bl MOD11_02247348 + cmp r0, #0 + beq _02245EDA + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02245EDA + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245EDA: + ldr r0, [sp, #0x4c] + ldrh r1, [r0] + cmp r1, #0 + beq _02245EF2 + ldr r0, _02245F64 ; =0x00002D4C + ldrh r0, [r4, r0] + cmp r1, r0 + beq _02245EF2 + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245EF2: + ldr r0, [sp, #0x34] + cmp r0, #0x36 + beq _02245F00 + cmp r0, #0x72 + beq _02245F00 + cmp r0, #0x7c + bne _02245F38 +_02245F00: + ldr r0, [sp, #8] + cmp r0, #0 + beq _02245F38 + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x38] + add r0, r1, r0 + ldr r1, [sp, #0x50] + ldrh r1, [r1] + bl MOD11_022461AC + cmp r0, #4 + bne _02245F20 + ldr r0, [sp, #0x54] + mov r1, #0 + strh r1, [r0] + b _02245F38 +_02245F20: + ldr r0, [sp, #0x58] + ldrh r1, [r0] + cmp r1, #0 + beq _02245F38 + ldr r0, _02245F64 ; =0x00002D4C + ldrh r0, [r4, r0] + cmp r1, r0 + beq _02245F38 + add r0, r6, #0 + bl FUN_0206A92C + orr r5, r0 +_02245F38: + ldr r0, [sp, #0x30] + add r6, r6, #1 + add r0, r0, #1 + add r4, r4, #2 + str r0, [sp, #0x30] + cmp r6, #4 + bge _02245F48 + b _02245DE0 +_02245F48: + add r0, r5, #0 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_02245F50: .word 0x00002DC8 +_02245F54: .word 0x00002DE8 +_02245F58: .word 0x00002DB0 +_02245F5C: .word 0x00002DEC +_02245F60: .word 0x00002DF8 +_02245F64: .word 0x00002D4C +_02245F68: .word 0x00002D6C +_02245F6C: .word 0x0000307C +_02245F70: .word 0x000003E1 + + thumb_func_start MOD11_02245F74 +MOD11_02245F74: ; 0x02245F74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r3, #0 + mov r3, #1 + str r3, [sp, #8] + mov r3, #4 + str r3, [sp] + mov r3, #0 + str r0, [sp, #4] + add r5, r1, #0 + add r6, r2, #0 + ldr r4, [sp, #0x40] + bl MOD11_02245D38 + str r0, [sp, #0xc] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0xc] + tst r0, r1 + beq _02245FC6 + mov r0, #0xa + strb r0, [r4, #1] + ldr r0, _02246188 ; =0x00000261 + add r1, r6, #0 + strh r0, [r4, #2] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + lsl r0, r7, #1 + add r1, r1, r0 + ldr r0, _0224618C ; =0x00002D4C + ldrh r0, [r1, r0] + str r0, [r4, #8] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_02245FC6: + mov r0, #8 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + str r0, [sp, #0x10] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x10] + tst r0, r1 + beq _02245FFE + mov r0, #2 + strb r0, [r4, #1] + mov r0, #0x99 + lsl r0, r0, #2 + strh r0, [r4, #2] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_02245FFE: + mov r0, #0x10 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + str r0, [sp, #0x14] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x14] + tst r0, r1 + beq _02246044 + mov r0, #0xa + strb r0, [r4, #1] + ldr r0, _02246190 ; =0x00000265 + add r1, r6, #0 + strh r0, [r4, #2] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + lsl r0, r7, #1 + add r1, r1, r0 + ldr r0, _0224618C ; =0x00002D4C + ldrh r0, [r1, r0] + str r0, [r4, #8] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_02246044: + mov r0, #0x20 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + str r0, [sp, #0x18] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x18] + tst r0, r1 + beq _0224608C + mov r0, #0xa + strb r0, [r4, #1] + mov r0, #0x9a + lsl r0, r0, #2 + strh r0, [r4, #2] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + lsl r0, r7, #1 + add r1, r1, r0 + ldr r0, _0224618C ; =0x00002D4C + ldrh r0, [r1, r0] + str r0, [r4, #8] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_0224608C: + mov r0, #0x40 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + str r0, [sp, #0x1c] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x1c] + tst r0, r1 + beq _022460D2 + mov r0, #0xa + strb r0, [r4, #1] + ldr r0, _02246194 ; =0x000003E9 + add r1, r6, #0 + strh r0, [r4, #2] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + lsl r0, r7, #1 + add r1, r1, r0 + ldr r0, _0224618C ; =0x00002D4C + ldrh r0, [r1, r0] + str r0, [r4, #8] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_022460D2: + mov r0, #0x80 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + str r0, [sp, #0x20] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x20] + tst r0, r1 + beq _0224611C + mov r0, #0x22 + strb r0, [r4, #1] + ldr r0, _02246198 ; =0x00000421 + add r1, r6, #0 + strh r0, [r4, #2] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + ldr r0, _0224619C ; =0x00000179 + str r0, [r4, #8] + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + lsl r0, r7, #1 + add r1, r1, r0 + ldr r0, _0224618C ; =0x00002D4C + ldrh r0, [r1, r0] + str r0, [r4, #0xc] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_0224611C: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + str r0, [sp, #0x24] + add r0, r7, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x24] + tst r0, r1 + beq _0224615C + mov r0, #0x18 + strb r0, [r4, #1] + ldr r0, _022461A0 ; =0x0000038F + strh r0, [r4, #2] + mov r0, #0xc0 + mul r0, r6 + add r2, r5, r0 + ldr r0, _022461A4 ; =0x00002DB8 + ldrh r1, [r2, r0] + add r0, #0x40 + str r1, [r4, #4] + ldrh r0, [r2, r0] + str r0, [r4, #8] + mov r0, #0 + str r0, [sp, #8] + b _02246182 +_0224615C: + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD11_02245D38 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_0206A92C + tst r0, r5 + beq _02246182 + mov r0, #0 + str r0, [sp, #8] + strb r0, [r4, #1] + ldr r0, _022461A8 ; =0x00000337 + strh r0, [r4, #2] +_02246182: + ldr r0, [sp, #8] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246188: .word 0x00000261 +_0224618C: .word 0x00002D4C +_02246190: .word 0x00000265 +_02246194: .word 0x000003E9 +_02246198: .word 0x00000421 +_0224619C: .word 0x00000179 +_022461A0: .word 0x0000038F +_022461A4: .word 0x00002DB8 +_022461A8: .word 0x00000337 + + thumb_func_start MOD11_022461AC +MOD11_022461AC: ; 0x022461AC + mov r3, #0 +_022461AE: + ldrh r2, [r0, #0xc] + cmp r1, r2 + beq _022461BC + add r3, r3, #1 + add r0, r0, #2 + cmp r3, #4 + blt _022461AE +_022461BC: + add r0, r3, #0 + bx lr + + thumb_func_start MOD11_022461C0 +MOD11_022461C0: ; 0x022461C0 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r1, r6, #0 + add r5, r0, #0 + add r4, r3, #0 + bl MOD11_02249D90 + mov r1, #1 + cmp r0, #0x69 + beq _022461E6 + mov r0, #0xc0 + mul r0, r6 + add r2, r5, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r2, [r2, r0] + lsl r0, r1, #0xa + tst r0, r2 + beq _022461FC +_022461E6: + lsl r0, r4, #1 + add r2, r4, r0 + ldr r0, _0224626C ; =0x0225E379 + ldrb r0, [r0, r2] + cmp r0, #2 + bne _022461FC + ldr r0, _02246270 ; =0x0225E37A + ldrb r0, [r0, r2] + cmp r0, #0 + bne _022461FC + mov r1, #0 +_022461FC: + lsl r0, r6, #6 + add r2, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r2, r0] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + beq _0224621A + lsl r0, r4, #1 + add r2, r4, r0 + ldr r0, _0224626C ; =0x0225E379 + ldrb r0, [r0, r2] + cmp r0, #2 + bne _0224621A + mov r1, #0 +_0224621A: + mov r0, #6 + lsl r0, r0, #6 + ldr r2, [r5, r0] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r2 + beq _0224623E + lsl r0, r4, #1 + add r2, r4, r0 + ldr r0, _0224626C ; =0x0225E379 + ldrb r0, [r0, r2] + cmp r0, #2 + bne _0224623E + ldr r0, _02246270 ; =0x0225E37A + ldrb r0, [r0, r2] + cmp r0, #0 + bne _0224623E + mov r1, #0 +_0224623E: + mov r0, #0xc0 + mul r0, r6 + add r2, r5, r0 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r2, [r2, r0] + mov r0, #1 + lsl r0, r0, #0x16 + tst r0, r2 + beq _02246268 + lsl r0, r4, #1 + add r2, r4, r0 + ldr r0, _0224626C ; =0x0225E379 + ldrb r0, [r0, r2] + cmp r0, #0x11 + bne _02246268 + ldr r0, _02246270 ; =0x0225E37A + ldrb r0, [r0, r2] + cmp r0, #0 + bne _02246268 + mov r1, #0 +_02246268: + add r0, r1, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224626C: .word 0x0225E379 +_02246270: .word 0x0225E37A + + thumb_func_start MOD11_02246274 +MOD11_02246274: ; 0x02246274 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r0, [sp, #0x50] + add r5, r1, #0 + str r0, [sp, #0x50] + ldr r0, [sp, #0x54] + str r2, [sp, #8] + str r0, [sp, #0x54] + add r0, r2, #0 + add r4, r3, #0 + ldr r7, [sp, #0x48] + ldr r6, [sp, #0x4c] + cmp r0, #0xa5 + bne _02246296 + ldr r0, [sp, #0x50] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_02246296: + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02249D90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD11_02249DA4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x20] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD11_02249DA4 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x60 + bne _022462DE + mov r0, #0 + str r0, [sp, #0x28] + b _022462F6 +_022462DE: + cmp r4, #0 + beq _022462EA + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x28] + b _022462F6 +_022462EA: + ldr r0, [sp, #8] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02246588 ; =0x000003E2 + ldrb r0, [r1, r0] + str r0, [sp, #0x28] +_022462F6: + ldr r0, [sp, #8] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224658C ; =0x000003E1 + ldrb r0, [r1, r0] + str r0, [sp, #0x14] + ldr r0, _02246590 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #0xa + tst r0, r1 + bne _02246354 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x28] + cmp r1, r0 + beq _02246332 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x28] + cmp r1, r0 + bne _02246354 +_02246332: + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x5b + bne _02246346 + ldr r0, [sp, #0x50] + lsl r0, r0, #1 + str r0, [sp, #0x50] + b _02246354 +_02246346: + ldr r1, [sp, #0x50] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + str r0, [sp, #0x50] +_02246354: + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + mov r3, #0x1a + bl MOD11_02246D84 + cmp r0, #1 + bne _02246380 + ldr r0, [sp, #0x28] + cmp r0, #4 + bne _02246380 + ldr r0, [sp, #0x20] + cmp r0, #0x69 + beq _02246380 + ldr r0, [sp, #0x54] + ldr r1, [r0] + mov r0, #2 + lsl r0, r0, #0xa + orr r1, r0 + ldr r0, [sp, #0x54] + str r1, [r0] + b _0224649C +_02246380: + mov r0, #0xc0 + add r1, r6, #0 + mul r1, r0 + ldr r0, _02246594 ; =0x00002DCC + add r3, r5, r1 + ldr r2, [r3, r0] + lsl r2, r2, #0x10 + lsr r2, r2, #0x1d + beq _022463B8 + sub r0, #0xc + ldr r2, [r3, r0] + mov r0, #1 + lsl r0, r0, #0xa + tst r2, r0 + bne _022463B8 + ldr r2, [sp, #0x28] + cmp r2, #4 + bne _022463B8 + ldr r2, [sp, #0x20] + cmp r2, #0x69 + beq _022463B8 + ldr r1, [sp, #0x54] + lsl r0, r0, #0xa + ldr r1, [r1] + orr r1, r0 + ldr r0, [sp, #0x54] + str r1, [r0] + b _0224649C +_022463B8: + add r0, r5, r1 + mov r4, #0 + str r0, [sp, #0x18] +_022463BE: + lsl r0, r4, #1 + ldr r1, _02246598 ; =0x0225E378 + add r0, r4, r0 + add r1, r1, r0 + str r1, [sp, #0xc] + ldr r1, _02246598 ; =0x0225E378 + ldrb r1, [r1, r0] + cmp r1, #0xfe + bne _022463EE + ldr r1, [sp, #0x18] + ldr r0, _0224659C ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #2 + lsl r0, r0, #0x1c + tst r0, r1 + bne _0224649C + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x71 + beq _0224649C + add r4, r4, #1 + b _02246490 +_022463EE: + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _0224648E + ldr r0, [sp, #0xc] + add r1, r6, #0 + ldrb r0, [r0, #1] + mov r2, #0x1b + mov r3, #0 + str r0, [sp, #0x10] + add r0, r5, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _02246434 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD11_022461C0 + cmp r0, #1 + bne _02246434 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #0x54] + ldr r3, [sp, #0x50] + str r0, [sp, #4] + ldrb r2, [r2, #2] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0224C648 + str r0, [sp, #0x50] +_02246434: + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _0224648E + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x2c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x2c] + cmp r1, r0 + beq _0224648E + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD11_022461C0 + cmp r0, #1 + bne _0224648E + ldr r0, [sp, #0x14] + ldr r2, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #0x54] + ldr r3, [sp, #0x50] + str r0, [sp, #4] + ldrb r2, [r2, #2] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0224C648 + str r0, [sp, #0x50] +_0224648E: + add r4, r4, #1 +_02246490: + lsl r0, r4, #1 + add r1, r4, r0 + ldr r0, _02246598 ; =0x0225E378 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _022463BE +_0224649C: + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + mov r3, #0x19 + bl MOD11_02246D84 + cmp r0, #1 + bne _022464E0 + ldr r1, [sp, #8] + add r0, r5, #0 + bl MOD11_0224C6D4 + cmp r0, #0 + beq _022464E0 + ldr r0, [sp, #0x54] + ldr r1, [r0] + mov r0, #2 + tst r0, r1 + beq _022464CA + mov r0, #6 + and r0, r1 + cmp r0, #6 + bne _022464E0 +_022464CA: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _022464E0 + ldr r0, [sp, #0x54] + ldr r1, [r0] + mov r0, #1 + lsl r0, r0, #0x12 + orr r1, r0 + ldr r0, [sp, #0x54] + str r1, [r0] + b _02246582 +_022464E0: + ldr r0, _02246590 ; =0x0000213C + ldr r2, [r5, r0] + mov r0, #2 + lsl r0, r0, #0xa + add r1, r2, #0 + tst r1, r0 + bne _0224656E + lsl r0, r0, #4 + tst r0, r2 + bne _0224656E + ldr r0, [sp, #0x54] + ldr r1, [r0] + mov r0, #2 + tst r0, r1 + beq _0224654A + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0224654A + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + mov r3, #0x6f + bl MOD11_02246D84 + cmp r0, #1 + beq _02246524 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + mov r3, #0x74 + bl MOD11_02246D84 + cmp r0, #1 + bne _02246532 +_02246524: + ldr r0, [sp, #0x50] + lsl r1, r0, #1 + add r0, r0, r1 + mov r1, #4 + bl MOD11_022476C0 + str r0, [sp, #0x50] +_02246532: + ldr r0, [sp, #0x24] + cmp r0, #0x5f + bne _0224654A + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x50] + add r0, #0x64 + str r0, [sp, #0x1c] + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + str r0, [sp, #0x50] +_0224654A: + ldr r0, [sp, #0x54] + ldr r1, [r0] + mov r0, #4 + tst r0, r1 + beq _02246582 + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02246582 + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x6e + bne _02246582 + ldr r0, [sp, #0x50] + lsl r0, r0, #1 + str r0, [sp, #0x50] + b _02246582 +_0224656E: + ldr r0, [sp, #0x54] + ldr r1, [r0] + mov r0, #2 + bic r1, r0 + ldr r0, [sp, #0x54] + str r1, [r0] + mov r0, #4 + bic r1, r0 + ldr r0, [sp, #0x54] + str r1, [r0] +_02246582: + ldr r0, [sp, #0x50] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246588: .word 0x000003E2 +_0224658C: .word 0x000003E1 +_02246590: .word 0x0000213C +_02246594: .word 0x00002DCC +_02246598: .word 0x0225E378 +_0224659C: .word 0x00002DB0 + + thumb_func_start MOD11_022465A0 +MOD11_022465A0: ; 0x022465A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + ldr r0, [sp, #0x2c] + str r1, [sp] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x30] + str r3, [sp, #4] + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + ldr r6, [sp, #0x38] + str r0, [sp, #0x34] + add r0, r1, #0 + cmp r0, #0xa5 + beq _022466B6 + add r0, r3, #0 + cmp r0, #0x60 + bne _022465CA + mov r0, #0 + str r0, [sp, #0xc] + b _022465E2 +_022465CA: + cmp r2, #0 + beq _022465D6 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + b _022465E2 +_022465D6: + add r0, r1, #0 + lsl r0, r0, #4 + add r1, r7, r0 + ldr r0, _022466BC ; =0x000003E2 + ldrb r0, [r1, r0] + str r0, [sp, #0xc] +_022465E2: + ldr r0, [sp, #4] + cmp r0, #0x68 + beq _02246612 + ldr r0, [sp, #0x28] + cmp r0, #0x1a + bne _02246612 + ldr r0, [sp, #0xc] + cmp r0, #4 + bne _02246612 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r7, r0] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r1 + bne _02246612 + ldr r0, [sp, #0x2c] + cmp r0, #0x69 + beq _02246612 + ldr r1, [r6] + mov r0, #8 + orr r0, r1 + str r0, [r6] + b _02246686 +_02246612: + mov r4, #0 +_02246614: + lsl r0, r4, #1 + add r1, r4, r0 + ldr r0, _022466C0 ; =0x0225E378 + add r5, r0, r1 + ldrb r1, [r0, r1] + cmp r1, #0xfe + bne _0224662C + ldr r0, [sp, #4] + cmp r0, #0x71 + beq _02246686 + add r4, r4, #1 + b _0224667A +_0224662C: + ldr r0, [sp, #0xc] + cmp r0, r1 + bne _02246678 + ldrb r0, [r5, #1] + ldr r1, [sp, #0x30] + str r0, [sp, #8] + cmp r1, r0 + bne _02246652 + ldr r1, [sp, #0x2c] + add r0, r7, #0 + add r2, r4, #0 + bl MOD11_022466C4 + cmp r0, #1 + bne _02246652 + ldrb r0, [r5, #2] + add r1, r6, #0 + bl MOD11_02246714 +_02246652: + ldr r1, [sp, #0x34] + ldr r0, [sp, #8] + cmp r1, r0 + bne _02246678 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + cmp r1, r0 + beq _02246678 + ldr r1, [sp, #0x2c] + add r0, r7, #0 + add r2, r4, #0 + bl MOD11_022466C4 + cmp r0, #1 + bne _02246678 + ldrb r0, [r5, #2] + add r1, r6, #0 + bl MOD11_02246714 +_02246678: + add r4, r4, #1 +_0224667A: + lsl r0, r4, #1 + add r1, r4, r0 + ldr r0, _022466C0 ; =0x0225E378 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _02246614 +_02246686: + ldr r0, [sp, #4] + cmp r0, #0x68 + beq _022466B6 + ldr r0, [sp, #0x28] + cmp r0, #0x19 + bne _022466B6 + ldr r1, [sp] + add r0, r7, #0 + bl MOD11_0224C6D4 + cmp r0, #0 + beq _022466B6 + ldr r1, [r6] + mov r0, #2 + tst r0, r1 + beq _022466AE + mov r0, #6 + and r0, r1 + cmp r0, #6 + bne _022466B6 +_022466AE: + ldr r1, [r6] + mov r0, #8 + orr r0, r1 + str r0, [r6] +_022466B6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022466BC: .word 0x000003E2 +_022466C0: .word 0x0225E378 + + thumb_func_start MOD11_022466C4 +MOD11_022466C4: ; 0x022466C4 + push {r3, r4} + mov r3, #1 + cmp r1, #0x69 + bne _022466E2 + lsl r1, r2, #1 + add r4, r2, r1 + ldr r1, _0224670C ; =0x0225E379 + ldrb r1, [r1, r4] + cmp r1, #2 + bne _022466E2 + ldr r1, _02246710 ; =0x0225E37A + ldrb r1, [r1, r4] + cmp r1, #0 + bne _022466E2 + mov r3, #0 +_022466E2: + mov r1, #6 + lsl r1, r1, #6 + ldr r1, [r0, r1] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r1 + beq _02246706 + lsl r0, r2, #1 + add r1, r2, r0 + ldr r0, _0224670C ; =0x0225E379 + ldrb r0, [r0, r1] + cmp r0, #2 + bne _02246706 + ldr r0, _02246710 ; =0x0225E37A + ldrb r0, [r0, r1] + cmp r0, #0 + bne _02246706 + mov r3, #0 +_02246706: + add r0, r3, #0 + pop {r3, r4} + bx lr + .align 2, 0 +_0224670C: .word 0x0225E379 +_02246710: .word 0x0225E37A + + thumb_func_start MOD11_02246714 +MOD11_02246714: ; 0x02246714 + cmp r0, #0 + beq _02246722 + cmp r0, #5 + beq _02246734 + cmp r0, #0x14 + beq _0224674C + bx lr +_02246722: + ldr r2, [r1] + mov r0, #8 + orr r2, r0 + mov r0, #4 + bic r2, r0 + mov r0, #2 + bic r2, r0 + str r2, [r1] + bx lr +_02246734: + ldr r2, [r1] + mov r0, #2 + tst r0, r2 + beq _02246744 + mov r0, #2 + bic r2, r0 + str r2, [r1] + bx lr +_02246744: + mov r0, #4 + orr r0, r2 + str r0, [r1] + bx lr +_0224674C: + ldr r2, [r1] + mov r0, #4 + tst r0, r2 + beq _0224675C + mov r0, #4 + bic r2, r0 + str r2, [r1] + bx lr +_0224675C: + mov r0, #2 + orr r0, r2 + str r0, [r1] + bx lr + + thumb_func_start MOD11_02246764 +MOD11_02246764: ; 0x02246764 + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r0, r2 + lsl r0, r1, #2 + ldr r0, [r2, r0] + lsl r1, r0, #0x1f + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x1e + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x1d + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x1c + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x1b + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x1a + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x19 + lsr r1, r1, #0x1f + bne _022467A4 + lsl r1, r0, #0x17 + lsr r1, r1, #0x1f + bne _022467A4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + beq _022467A8 +_022467A4: + mov r0, #1 + bx lr +_022467A8: + mov r0, #0 + bx lr + + thumb_func_start MOD11_022467AC +MOD11_022467AC: ; 0x022467AC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp, #4] + mov r4, #0 + bl MOD11_0222FF84 + add r7, r0, #0 + cmp r6, #0 + beq _022467CA + cmp r6, #1 + beq _022467EE + b _02246822 +_022467CA: + add r0, r4, #0 + cmp r7, #0 + ble _02246822 + ldr r2, _02246828 ; =0x00002D8C +_022467D2: + ldr r1, [sp, #4] + cmp r0, r1 + beq _022467E4 + ldr r1, [r5, r2] + cmp r1, #0 + beq _022467E4 + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 +_022467E4: + add r0, r0, #1 + add r5, #0xc0 + cmp r0, r7 + blt _022467D2 + b _02246822 +_022467EE: + add r6, r4, #0 + cmp r7, #0 + ble _02246822 +_022467F4: + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_02230270 + str r0, [sp, #8] + ldr r0, [sp] + ldr r1, [sp, #4] + bl MOD11_02230270 + ldr r1, [sp, #8] + cmp r1, r0 + bne _0224681A + ldr r0, _02246828 ; =0x00002D8C + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224681A + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0224681A: + add r6, r6, #1 + add r5, #0xc0 + cmp r6, r7 + blt _022467F4 +_02246822: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02246828: .word 0x00002D8C + + thumb_func_start MOD11_0224682C +MOD11_0224682C: ; 0x0224682C + add r2, r0, r1 + ldr r0, _02246838 ; =0x0000219C + ldrb r0, [r2, r0] + lsl r0, r0, #8 + orr r0, r1 + bx lr + .align 2, 0 +_02246838: .word 0x0000219C + + thumb_func_start MOD11_0224683C +MOD11_0224683C: ; 0x0224683C + push {r4, r5} + lsl r3, r1, #4 + add r5, r0, r3 + ldr r3, _02246868 ; =0x000021B4 + mov r2, #0 + ldr r4, [r5, r3] + cmp r4, #1 + bne _02246862 + sub r3, r3, #4 + ldr r3, [r5, r3] + cmp r3, #0 + beq _02246862 + mov r2, #0xc0 + mul r2, r1 + add r1, r0, r2 + lsl r0, r3, #1 + add r1, r1, r0 + ldr r0, _0224686C ; =0x00002D4A + ldrh r2, [r1, r0] +_02246862: + add r0, r2, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_02246868: .word 0x000021B4 +_0224686C: .word 0x00002D4A + + thumb_func_start MOD11_02246870 +MOD11_02246870: ; 0x02246870 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + str r2, [sp, #4] + str r0, [sp] + add r7, r1, #0 + str r3, [sp, #8] + ldr r6, [sp, #0x70] + mov r4, #0 + bl MOD11_0222FF84 + add r5, r0, #0 + ldr r0, [sp, #4] + cmp r0, #9 + bhi _022468E4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02246898: ; jump table + .short _022468AC - _02246898 - 2 ; case 0 + .short _022468E6 - _02246898 - 2 ; case 1 + .short _02246932 - _02246898 - 2 ; case 2 + .short _0224696C - _02246898 - 2 ; case 3 + .short _022469B8 - _02246898 - 2 ; case 4 + .short _02246A0A - _02246898 - 2 ; case 5 + .short _02246A2C - _02246898 - 2 ; case 6 + .short _02246A54 - _02246898 - 2 ; case 7 + .short _02246A80 - _02246898 - 2 ; case 8 + .short _02246AB4 - _02246898 - 2 ; case 9 +_022468AC: + add r0, r4, #0 + str r0, [sp, #0x44] + cmp r5, #0 + ble _022468E4 +_022468B4: + ldr r0, [sp] + ldr r1, [sp, #0x44] + bl MOD11_02230270 + str r0, [sp, #0x48] + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_02230270 + ldr r1, [sp, #0x48] + cmp r1, r0 + bne _022468DA + ldr r1, [sp, #0x44] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _022468DA + add r4, r4, #1 +_022468DA: + ldr r0, [sp, #0x44] + add r0, r0, #1 + str r0, [sp, #0x44] + cmp r0, r5 + blt _022468B4 +_022468E4: + b _02246AEC +_022468E6: + add r0, r4, #0 + str r0, [sp, #0xc] + cmp r5, #0 + ble _02246930 + str r7, [sp, #0x30] +_022468F0: + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD11_02230270 + str r0, [sp, #0x4c] + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_02230270 + ldr r1, [sp, #0x4c] + cmp r1, r0 + bne _02246920 + ldr r1, [sp, #0x30] + ldr r0, _02246AF4 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246920 + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246920 + add r4, r4, #1 +_02246920: + ldr r0, [sp, #0x30] + add r0, #0xc0 + str r0, [sp, #0x30] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, r5 + blt _022468F0 +_02246930: + b _02246AEC +_02246932: + add r0, r4, #0 + str r0, [sp, #0x10] + cmp r5, #0 + ble _0224696A +_0224693A: + ldr r0, [sp] + ldr r1, [sp, #0x10] + bl MOD11_02230270 + str r0, [sp, #0x50] + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_02230270 + ldr r1, [sp, #0x50] + cmp r1, r0 + beq _02246960 + ldr r1, [sp, #0x10] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246960 + add r4, r4, #1 +_02246960: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, r5 + blt _0224693A +_0224696A: + b _02246AEC +_0224696C: + add r0, r4, #0 + str r0, [sp, #0x14] + cmp r5, #0 + ble _022469B6 + str r7, [sp, #0x34] +_02246976: + ldr r0, [sp] + ldr r1, [sp, #0x14] + bl MOD11_02230270 + str r0, [sp, #0x54] + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_02230270 + ldr r1, [sp, #0x54] + cmp r1, r0 + beq _022469A6 + ldr r1, [sp, #0x34] + ldr r0, _02246AF4 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _022469A6 + ldr r1, [sp, #0x14] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _022469A6 + add r4, r4, #1 +_022469A6: + ldr r0, [sp, #0x34] + add r0, #0xc0 + str r0, [sp, #0x34] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r5 + blt _02246976 +_022469B6: + b _02246AEC +_022469B8: + add r0, r4, #0 + str r0, [sp, #0x18] + cmp r5, #0 + ble _02246A08 + str r7, [sp, #0x38] +_022469C2: + ldr r0, [sp] + ldr r1, [sp, #0x18] + bl MOD11_02230270 + str r0, [sp, #0x58] + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_02230270 + ldr r1, [sp, #0x58] + cmp r1, r0 + beq _022469F8 + ldr r1, [sp, #0x38] + ldr r0, _02246AF4 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _022469F8 + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _022469F8 + ldr r0, [sp, #0x18] + bl FUN_0206A92C + orr r4, r0 +_022469F8: + ldr r0, [sp, #0x38] + add r0, #0xc0 + str r0, [sp, #0x38] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r5 + blt _022469C2 +_02246A08: + b _02246AEC +_02246A0A: + add r0, r4, #0 + str r0, [sp, #0x1c] + cmp r5, #0 + ble _02246AEC +_02246A12: + ldr r1, [sp, #0x1c] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246A20 + add r4, r4, #1 +_02246A20: + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r5 + blt _02246A12 + b _02246AEC +_02246A2C: + add r0, r4, #0 + str r0, [sp, #0x20] + cmp r5, #0 + ble _02246AEC +_02246A34: + ldr r1, [sp, #0x20] + ldr r0, [sp, #8] + cmp r1, r0 + beq _02246A48 + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246A48 + add r4, r4, #1 +_02246A48: + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, r5 + blt _02246A34 + b _02246AEC +_02246A54: + add r0, r4, #0 + str r0, [sp, #0x24] + cmp r5, #0 + ble _02246AEC +_02246A5C: + ldr r1, [sp, #0x24] + ldr r0, [sp, #8] + cmp r1, r0 + beq _02246A74 + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246A74 + ldr r0, [sp, #0x24] + add r4, r0, #1 + b _02246AEC +_02246A74: + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, r5 + blt _02246A5C + b _02246AEC +_02246A80: + add r0, r4, #0 + str r0, [sp, #0x28] + cmp r5, #0 + ble _02246AEC + str r7, [sp, #0x3c] +_02246A8A: + ldr r1, [sp, #0x28] + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246AA2 + ldr r1, [sp, #0x3c] + ldr r0, _02246AF4 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246AA2 + add r4, r4, #1 +_02246AA2: + ldr r0, [sp, #0x3c] + add r0, #0xc0 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, r5 + blt _02246A8A + b _02246AEC +_02246AB4: + add r0, r4, #0 + str r0, [sp, #0x2c] + cmp r5, #0 + ble _02246AEC + str r7, [sp, #0x40] +_02246ABE: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #8] + cmp r1, r0 + beq _02246ADC + add r0, r7, #0 + bl MOD11_02246D1C + cmp r6, r0 + bne _02246ADC + ldr r1, [sp, #0x40] + ldr r0, _02246AF4 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246ADC + add r4, r4, #1 +_02246ADC: + ldr r0, [sp, #0x40] + add r0, #0xc0 + str r0, [sp, #0x40] + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, r5 + blt _02246ABE +_02246AEC: + add r0, r4, #0 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_02246AF4: .word 0x00002D8C + + thumb_func_start MOD11_02246AF8 +MOD11_02246AF8: ; 0x02246AF8 + lsl r1, r1, #4 + add r1, r0, r1 + ldr r0, _02246B54 ; =0x000003DE + ldrh r2, [r1, r0] + cmp r2, #0x9b + bgt _02246B2A + cmp r2, #0x97 + blt _02246B10 + beq _02246B4A + cmp r2, #0x9b + beq _02246B4A + b _02246B4E +_02246B10: + cmp r2, #0x27 + bgt _02246B1C + bge _02246B4A + cmp r2, #0x1a + beq _02246B4A + b _02246B4E +_02246B1C: + cmp r2, #0x4b + bgt _02246B24 + beq _02246B4A + b _02246B4E +_02246B24: + cmp r2, #0x91 + beq _02246B4A + b _02246B4E +_02246B2A: + mov r1, #1 + lsl r1, r1, #8 + cmp r2, r1 + bgt _02246B3A + bge _02246B4A + cmp r2, #0xff + beq _02246B4A + b _02246B4E +_02246B3A: + add r0, r1, #7 + cmp r2, r0 + bgt _02246B44 + beq _02246B4A + b _02246B4E +_02246B44: + add r1, #0x10 + cmp r2, r1 + bne _02246B4E +_02246B4A: + mov r0, #1 + bx lr +_02246B4E: + mov r0, #0 + bx lr + nop +_02246B54: .word 0x000003DE + + thumb_func_start MOD11_02246B58 +MOD11_02246B58: ; 0x02246B58 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + mov r0, #1 + cmp r6, #0x70 + blo _02246B76 + bl FUN_0201B9EC + mov r1, #0x70 + blx _u32_div_f + add r6, r1, #0 + mov r0, #0 +_02246B76: + lsl r1, r6, #1 + ldr r2, _02246B90 ; =0x0225E378 + add r1, r6, r1 + ldrb r2, [r2, r1] + strb r2, [r5] + ldr r2, _02246B94 ; =0x0225E379 + ldrb r2, [r2, r1] + strb r2, [r4] + ldr r2, _02246B98 ; =0x0225E37A + ldrb r1, [r2, r1] + strb r1, [r7] + pop {r3, r4, r5, r6, r7, pc} + nop +_02246B90: .word 0x0225E378 +_02246B94: .word 0x0225E379 +_02246B98: .word 0x0225E37A + + thumb_func_start MOD11_02246B9C +MOD11_02246B9C: ; 0x02246B9C + push {r3, r4, r5, r6, r7, lr} + ldr r4, _02246BE4 ; =0x0225E378 + add r5, r1, #0 + str r0, [sp] + add r6, r2, #0 + mov r1, #0x28 +_02246BA8: + ldrb r2, [r4] + ldr r0, [sp] + cmp r0, r2 + bne _02246BD6 + ldrb r7, [r4, #1] + cmp r5, r7 + bne _02246BC2 + ldrb r0, [r4, #2] + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + add r1, r0, #0 +_02246BC2: + cmp r6, r7 + bne _02246BD6 + cmp r5, r6 + beq _02246BD6 + ldrb r0, [r4, #2] + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + add r1, r0, #0 +_02246BD6: + add r4, r4, #3 + ldrb r0, [r4] + cmp r0, #0xff + bne _02246BA8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246BE4: .word 0x0225E378 + + thumb_func_start MOD11_02246BE8 +MOD11_02246BE8: ; 0x02246BE8 + cmp r0, #0 + beq _02246C10 + cmp r0, #0xd6 + beq _02246C10 + ldr r2, _02246C18 ; =0x0000017F + cmp r0, r2 + beq _02246C10 + add r1, r2, #0 + sub r1, #0x6d + cmp r0, r1 + beq _02246C10 + sub r1, r2, #1 + cmp r0, r1 + beq _02246C10 + ldr r1, _02246C1C ; =0x0000FF8A + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _02246C14 +_02246C10: + mov r0, #1 + bx lr +_02246C14: + mov r0, #0 + bx lr + .align 2, 0 +_02246C18: .word 0x0000017F +_02246C1C: .word 0x0000FF8A + + thumb_func_start MOD11_02246C20 +MOD11_02246C20: ; 0x02246C20 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #0xae + bne _02246C4C + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #7 + beq _02246C48 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #7 + bne _02246C4C +_02246C48: + mov r0, #1 + pop {r3, r4, r5, pc} +_02246C4C: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02246C50 +MOD11_02246C50: ; 0x02246C50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r2, #0 + add r5, r1, #0 + add r1, r6, #0 + mov r7, #0 + bl MOD11_02230270 + str r0, [sp] + ldr r0, _02246CA4 ; =0x00002DB8 + add r4, r5, r0 + mov r0, #0xc0 + mul r0, r6 + str r0, [sp, #4] + ldrh r0, [r4, r0] + cmp r0, #0 + beq _02246C9E + ldr r0, _02246CA8 ; =0x0000219C + add r1, r5, r6 + ldrb r0, [r1, r0] + bl FUN_0206A92C + ldr r1, [sp] + lsl r1, r1, #3 + add r2, r5, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #3 + lsr r1, r1, #0x1a + tst r0, r1 + bne _02246C9E + ldr r0, [sp, #4] + ldrh r0, [r4, r0] + bl FUN_0206EA98 + cmp r0, #0 + bne _02246C9E + mov r7, #1 +_02246C9E: + add r0, r7, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246CA4: .word 0x00002DB8 +_02246CA8: .word 0x0000219C + + thumb_func_start MOD11_02246CAC +MOD11_02246CAC: ; 0x02246CAC + push {r3, lr} + mov r2, #0xc0 + mul r2, r1 + add r1, r0, r2 + ldr r0, _02246CC8 ; =0x00002DB8 + ldrh r0, [r1, r0] + bl FUN_0206EA98 + cmp r0, #0 + bne _02246CC4 + mov r0, #1 + pop {r3, pc} +_02246CC4: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_02246CC8: .word 0x00002DB8 + + thumb_func_start MOD11_02246CCC +MOD11_02246CCC: ; 0x02246CCC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + add r3, r1, #0 + ldr r1, _02246D18 ; =0x00002D74 + mul r3, r0 + add r2, r5, r1 + ldrb r4, [r2, r3] + ldr r2, [r5, #0x64] + mov r6, #0 + mul r0, r2 + add r0, r5, r0 + ldrb r0, [r0, r1] + cmp r0, r4 + blo _02246CF0 + mov r6, #1 + b _02246D14 +_02246CF0: + bl FUN_0201B9EC + ldr r2, [r5, #0x64] + mov r1, #0xc0 + mul r1, r2 + add r2, r5, r1 + ldr r1, _02246D18 ; =0x00002D74 + lsl r0, r0, #0x18 + ldrb r1, [r2, r1] + lsr r0, r0, #0x18 + add r1, r1, r4 + mul r0, r1 + asr r0, r0, #8 + add r1, r0, #1 + lsr r0, r4, #2 + cmp r1, r0 + ble _02246D14 + mov r6, #1 +_02246D14: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02246D18: .word 0x00002D74 + + thumb_func_start MOD11_02246D1C +MOD11_02246D1C: ; 0x02246D1C + push {r4, r5} + mov r2, #0xc0 + mul r2, r1 + mov r3, #0xb7 + mov r4, #2 + add r5, r0, r2 + lsl r3, r3, #6 + ldr r1, [r5, r3] + lsl r4, r4, #0x14 + tst r4, r1 + beq _02246D40 + sub r3, #0x59 + ldrb r3, [r5, r3] + cmp r3, #0x79 + beq _02246D40 + mov r0, #0 + pop {r4, r5} + bx lr +_02246D40: + mov r3, #6 + lsl r3, r3, #6 + ldr r4, [r0, r3] + mov r3, #7 + lsl r3, r3, #0xc + tst r3, r4 + beq _02246D5E + ldr r3, _02246D80 ; =0x00002D67 + add r4, r0, r2 + ldrb r3, [r4, r3] + cmp r3, #0x1a + bne _02246D5E + mov r0, #0 + pop {r4, r5} + bx lr +_02246D5E: + mov r3, #1 + lsl r3, r3, #0xa + tst r1, r3 + beq _02246D76 + ldr r1, _02246D80 ; =0x00002D67 + add r3, r0, r2 + ldrb r1, [r3, r1] + cmp r1, #0x1a + bne _02246D76 + mov r0, #0 + pop {r4, r5} + bx lr +_02246D76: + add r1, r0, r2 + ldr r0, _02246D80 ; =0x00002D67 + ldrb r0, [r1, r0] + pop {r4, r5} + bx lr + .align 2, 0 +_02246D80: .word 0x00002D67 + + thumb_func_start MOD11_02246D84 +MOD11_02246D84: ; 0x02246D84 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + add r4, r3, #0 + mov r6, #0 + bl MOD11_02246D1C + cmp r0, #0x68 + beq _02246DA8 + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r4, r0 + bne _02246DD6 + mov r6, #1 + b _02246DD6 +_02246DA8: + ldr r1, [sp] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r4, r0 + bne _02246DD6 + mov r0, #0xb5 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x1c + mul r0, r7 + ldr r3, [r1, r0] + lsl r2, r3, #0x1c + lsr r2, r2, #0x1f + bne _02246DD6 + mov r2, #8 + orr r3, r2 + str r3, [r1, r0] + ldr r1, _02246DDC ; =0x0000213C + lsl r0, r2, #0x14 + ldr r3, [r5, r1] + orr r0, r3 + str r0, [r5, r1] +_02246DD6: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246DDC: .word 0x0000213C + + thumb_func_start MOD11_02246DE0 +MOD11_02246DE0: ; 0x02246DE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + mov r6, #0 + str r0, [sp] + str r1, [sp, #4] + add r4, r2, #0 + str r6, [sp, #0x18] + bl MOD11_0222FF74 + add r5, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_0222FF88 + str r0, [sp, #0x14] + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_0222FFC8 + add r7, r0, #0 + mov r0, #8 + tst r0, r5 + bne _02246E22 + mov r0, #0x10 + tst r0, r5 + beq _02246E36 + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + beq _02246E36 +_02246E22: + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + mov r5, #0 + add r1, r0, r4 + ldr r0, _02246ECC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #0xc] + str r0, [sp, #8] + b _02246E72 +_02246E36: + mov r0, #2 + tst r0, r5 + beq _02246E60 + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + mov r5, #0 + add r1, r0, r4 + ldr r0, _02246ECC ; =0x0000219C + ldrb r0, [r1, r0] + add r1, r4, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + bl MOD11_022302BC + ldr r1, [sp, #4] + add r1, r1, r0 + ldr r0, _02246ECC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #8] + b _02246E72 +_02246E60: + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + mov r5, #0 + add r1, r0, r4 + ldr r0, _02246ECC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #0xc] + str r0, [sp, #8] +_02246E72: + cmp r5, r7 + bge _02246EBC +_02246E76: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02246EB6 + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02246EB6 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02246EB6 + ldr r0, [sp, #0xc] + cmp r0, r5 + beq _02246EB6 + ldr r0, [sp, #8] + cmp r0, r5 + beq _02246EB6 + add r6, r6, #1 +_02246EB6: + add r5, r5, #1 + cmp r5, r7 + blt _02246E76 +_02246EBC: + ldr r0, [sp, #0x10] + cmp r6, r0 + blt _02246EC6 + mov r0, #1 + str r0, [sp, #0x18] +_02246EC6: + ldr r0, [sp, #0x18] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02246ECC: .word 0x0000219C + + thumb_func_start MOD11_02246ED0 +MOD11_02246ED0: ; 0x02246ED0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r6, r2, #0 + add r7, r0, #0 + add r4, r3, #0 + bl MOD11_0222FF74 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #8] + cmp r0, #0x3e + beq _02246F06 + mov r1, #0xa9 + ldr r0, [sp, #0xc] + lsl r1, r1, #2 + tst r0, r1 + bne _02246F06 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x32 + bne _02246F0C +_02246F06: + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02246F0C: + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_02230270 + add r0, r7, #0 + bl MOD11_0222FF84 + mov r0, #0x17 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #9 + add r3, r6, #0 + bl MOD11_02246870 + str r0, [sp, #0x10] + cmp r0, #0 + beq _02246F62 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x17 + beq _02246F62 + cmp r4, #0 + bne _02246F46 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02246F46: + mov r0, #0xb + strb r0, [r4, #1] + mov r0, #0x27 + strh r0, [r4, #2] + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0x17 + str r0, [r4, #8] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02246F62: + mov r0, #0x47 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #3 + add r3, r6, #0 + bl MOD11_02246870 + str r0, [sp, #4] + cmp r0, #0 + beq _02247014 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r1 + bne _02246FEE + ldr r0, [sp, #8] + cmp r0, #0x69 + beq _02246FEE + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x1a + beq _02247014 + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + ldr r0, _022470A8 ; =0x00002DCC + ldr r0, [r1, r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1d + bne _02247014 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #2 + beq _02247014 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #2 + beq _02247014 + cmp r4, #0 + bne _02246FD2 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02246FD2: + mov r0, #0xb + strb r0, [r4, #1] + mov r0, #0x27 + strh r0, [r4, #2] + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0x47 + str r0, [r4, #8] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02246FEE: + cmp r4, #0 + bne _02246FF8 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02246FF8: + mov r0, #0xb + strb r0, [r4, #1] + mov r0, #0x27 + strh r0, [r4, #2] + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0x47 + str r0, [r4, #8] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02247014: + mov r0, #0x2a + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #3 + add r3, r6, #0 + bl MOD11_02246870 + add r7, r0, #0 + beq _0224706E + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + beq _02247048 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + bne _0224706E +_02247048: + cmp r4, #0 + bne _02247052 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02247052: + mov r0, #0xb + strb r0, [r4, #1] + mov r0, #0x27 + strh r0, [r4, #2] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_0224682C + str r0, [r4, #4] + mov r0, #0x2a + str r0, [r4, #8] + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224706E: + mov r0, #0xc0 + mul r0, r6 + add r3, r5, r0 + ldr r0, _022470AC ; =0x00002DB0 + ldr r1, _022470B0 ; =0x0400E000 + ldr r2, [r3, r0] + tst r2, r1 + bne _02247088 + add r0, #0x10 + ldr r2, [r3, r0] + lsr r0, r1, #0x10 + tst r0, r2 + beq _022470A0 +_02247088: + cmp r4, #0 + bne _02247092 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02247092: + mov r0, #0 + strb r0, [r4, #1] + ldr r0, _022470B4 ; =0x0000031A + add sp, #0x14 + strh r0, [r4, #2] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022470A0: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022470A8: .word 0x00002DCC +_022470AC: .word 0x00002DB0 +_022470B0: .word 0x0400E000 +_022470B4: .word 0x0000031A + + thumb_func_start MOD11_022470B8 +MOD11_022470B8: ; 0x022470B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp] + bl MOD11_0222FF74 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + mov r6, #0 + cmp r0, #0x3e + bne _022470EC + mov r0, #0x75 + lsl r0, r0, #2 + add r3, r5, r0 + lsl r2, r4, #6 + ldr r1, [r3, r2] + ldr r0, _02247184 ; =0xFFFFFE7F + mov r6, #1 + and r1, r0 + mov r0, #0x80 + orr r0, r1 + str r0, [r3, r2] + b _0224717E +_022470EC: + mov r0, #0xa9 + lsl r0, r0, #2 + tst r0, r7 + beq _022470F8 + mov r6, #1 + b _0224717E +_022470F8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x32 + bne _0224711C + mov r1, #0x75 + lsl r1, r1, #2 + add r5, r5, r1 + lsl r3, r4, #6 + ldr r2, [r5, r3] + ldr r0, _02247184 ; =0xFFFFFE7F + sub r1, #0xd4 + and r0, r2 + orr r0, r1 + str r0, [r5, r3] + mov r6, #1 + b _0224717E +_0224711C: + mov r0, #1 + add r1, r4, #0 + eor r1, r0 + mov r2, #0xc0 + add r3, r1, #0 + mul r3, r2 + add r1, r5, r3 + ldr r3, _02247188 ; =0x00002D46 + mul r2, r4 + add r2, r5, r2 + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + cmp r2, r1 + bhs _02247164 + lsl r0, r2, #7 + blx _s32_div_f + ldr r1, _0224718C ; =0x0000311E + ldrb r2, [r5, r1] + mov r1, #0x1e + mul r1, r2 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x18 + sub r2, r2, r1 + mov r0, #0x18 + ror r2, r0 + add r0, r1, r2 + cmp r7, r0 + ble _02247166 + mov r6, #1 + b _02247166 +_02247164: + add r6, r0, #0 +_02247166: + cmp r6, #0 + bne _02247176 + ldr r0, [sp] + add r1, r4, #0 + mov r2, #0 + mov r3, #0x47 + bl MOD11_022564A8 +_02247176: + ldr r0, _0224718C ; =0x0000311E + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] +_0224717E: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247184: .word 0xFFFFFE7F +_02247188: .word 0x00002D46 +_0224718C: .word 0x0000311E + + thumb_func_start MOD11_02247190 +MOD11_02247190: ; 0x02247190 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_02246D1C + cmp r0, #0x36 + bne _022471BA + mov r2, #0xc0 + mul r2, r4 + add r3, r5, r2 + ldr r2, _022471C0 ; =0x00002DC8 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r2, [r3, r2] + ldr r1, [r5, r0] + mov r0, #1 + lsl r2, r2, #1 + and r1, r0 + lsr r2, r2, #0x1f + cmp r1, r2 + bne _022471BC +_022471BA: + mov r0, #0 +_022471BC: + pop {r3, r4, r5, pc} + nop +_022471C0: .word 0x00002DC8 + + thumb_func_start MOD11_022471C4 +MOD11_022471C4: ; 0x022471C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0 + str r0, [sp] + add r4, r2, #0 + add r5, r3, #0 + str r1, [sp, #4] + bl MOD11_0222FF84 + str r0, [sp, #0xc] + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_02230270 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r7, #0 + cmp r0, #0 + ble _0224722E + ldr r4, _02247234 ; =0x00002D4C +_022471EE: + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_02230270 + ldr r1, [sp, #8] + cmp r1, r0 + beq _02247224 + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r1, [r6, r0] + mov r0, #2 + lsl r0, r0, #0xc + tst r0, r1 + beq _02247224 + mov r1, #0 + add r2, r6, #0 +_0224720E: + ldrh r0, [r2, r4] + cmp r5, r0 + beq _0224721C + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #4 + blt _0224720E +_0224721C: + cmp r1, #4 + beq _02247224 + mov r0, #1 + str r0, [sp, #4] +_02247224: + ldr r0, [sp, #0xc] + add r7, r7, #1 + add r6, #0xc0 + cmp r7, r0 + blt _022471EE +_0224722E: + ldr r0, [sp, #4] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02247234: .word 0x00002D4C + + thumb_func_start MOD11_02247238 +MOD11_02247238: ; 0x02247238 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r6, #0 + bl MOD11_0222FF84 + add r3, r6, #0 + cmp r0, #0 + ble _02247260 + mov r1, #0xb7 + lsl r1, r1, #6 +_0224724E: + ldr r2, [r5, r1] + tst r2, r4 + beq _02247258 + mov r6, #1 + b _02247260 +_02247258: + add r3, r3, #1 + add r5, #0xc0 + cmp r3, r0 + blt _0224724E +_02247260: + add r0, r6, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02247264 +MOD11_02247264: ; 0x02247264 + ldr r2, _02247284 ; =0x0000216C + mov r0, #0 + str r0, [r1, r2] + add r0, r2, #0 + mov r3, #1 + sub r0, #0x1c + str r3, [r1, r0] + add r0, r2, #0 + sub r0, #0x30 + ldr r3, [r1, r0] + ldr r0, _02247288 ; =0xFFEFFFFF + sub r2, #0x30 + and r0, r3 + str r0, [r1, r2] + bx lr + nop +_02247284: .word 0x0000216C +_02247288: .word 0xFFEFFFFF + + thumb_func_start MOD11_0224728C +MOD11_0224728C: ; 0x0224728C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + bl MOD11_0222FF84 + mov r2, #0 + str r0, [sp, #0x14] + cmp r0, #0 + ble _022472B0 + ldr r1, _02247310 ; =0x000021EC +_022472A2: + ldr r0, [sp, #8] + add r0, r0, r2 + strb r2, [r0, r1] + ldr r0, [sp, #0x14] + add r2, r2, #1 + cmp r2, r0 + blt _022472A2 +_022472B0: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0 + ble _0224730C +_022472BE: + ldr r0, [sp, #0x10] + add r4, r0, #1 + ldr r0, [sp, #0x14] + cmp r4, r0 + bge _02247300 + ldr r1, [sp, #8] + ldr r0, [sp, #0x10] + add r6, r1, r0 +_022472CE: + ldr r0, _02247310 ; =0x000021EC + ldr r1, [sp, #8] + ldrb r0, [r6, r0] + str r0, [sp, #0xc] + ldr r0, [sp, #8] + ldr r2, [sp, #0xc] + add r7, r0, r4 + ldr r0, _02247310 ; =0x000021EC + ldrb r5, [r7, r0] + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + bl MOD11_02244248 + cmp r0, #0 + beq _022472F8 + ldr r0, _02247310 ; =0x000021EC + ldr r1, [sp, #0xc] + strb r5, [r6, r0] + strb r1, [r7, r0] +_022472F8: + ldr r0, [sp, #0x14] + add r4, r4, #1 + cmp r4, r0 + blt _022472CE +_02247300: + ldr r0, [sp, #0x10] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [sp, #0x10] + cmp r1, r0 + blt _022472BE +_0224730C: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02247310: .word 0x000021EC + + thumb_func_start MOD11_02247314 +MOD11_02247314: ; 0x02247314 + push {r3, r4} + mov r2, #6 + lsl r2, r2, #6 + ldr r2, [r1, r2] + mov r1, #7 + lsl r1, r1, #0xc + mov r0, #0 + tst r1, r2 + beq _0224733E + ldr r4, _02247344 ; =0x0225E278 + add r2, r0, #0 +_0224732A: + ldrh r1, [r4] + cmp r3, r1 + bne _02247336 + mov r0, #1 + pop {r3, r4} + bx lr +_02247336: + add r2, r2, #1 + add r4, r4, #2 + cmp r2, #6 + blo _0224732A +_0224733E: + pop {r3, r4} + bx lr + nop +_02247344: .word 0x0225E278 + + thumb_func_start MOD11_02247348 +MOD11_02247348: ; 0x02247348 + push {r3, r4} + mov r4, #0xc0 + mul r4, r2 + add r2, r1, r4 + ldr r1, _02247378 ; =0x00002DCC + mov r0, #0 + ldr r1, [r2, r1] + lsl r1, r1, #0xd + lsr r1, r1, #0x1d + beq _02247374 + ldr r4, _0224737C ; =0x0225E29E + add r2, r0, #0 +_02247360: + ldrh r1, [r4] + cmp r3, r1 + bne _0224736C + mov r0, #1 + pop {r3, r4} + bx lr +_0224736C: + add r2, r2, #1 + add r4, r4, #2 + cmp r2, #0xe + blo _02247360 +_02247374: + pop {r3, r4} + bx lr + .align 2, 0 +_02247378: .word 0x00002DCC +_0224737C: .word 0x0225E29E + + thumb_func_start MOD11_02247380 +MOD11_02247380: ; 0x02247380 + push {r4, r5, r6, r7} + mov r0, #0xc1 + lsl r0, r0, #6 + ldr r3, [r1, r0] + ldr r0, _022473E8 ; =0x00000183 + cmp r3, r0 + beq _022473E4 + ldr r4, [r1, #0x64] + mov r0, #0xc0 + add r2, r4, #0 + mul r2, r0 + ldr r4, _022473EC ; =0x00002DCC + add r0, r1, r2 + ldr r4, [r0, r4] + lsl r4, r4, #0x13 + lsr r7, r4, #0x1d + cmp r7, #4 + beq _022473E4 + mov r6, #0 + cmp r7, #0 + bls _022473BA + ldr r4, _022473F0 ; =0x00002DF0 +_022473AC: + ldrh r5, [r0, r4] + cmp r3, r5 + beq _022473E4 + add r6, r6, #1 + add r0, r0, #2 + cmp r6, r7 + blo _022473AC +_022473BA: + add r2, r1, r2 + lsl r0, r6, #1 + add r2, r2, r0 + ldr r0, _022473F0 ; =0x00002DF0 + strh r3, [r2, r0] + sub r0, #0x24 + add r2, r1, r0 + ldr r3, [r1, #0x64] + mov r0, #0xc0 + add r1, r3, #0 + mul r1, r0 + ldr r3, [r2, r1] + ldr r0, _022473F4 ; =0xFFFFE3FF + and r0, r3 + lsl r3, r3, #0x13 + lsr r3, r3, #0x1d + add r3, r3, #1 + lsl r3, r3, #0x1d + lsr r3, r3, #0x13 + orr r0, r3 + str r0, [r2, r1] +_022473E4: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_022473E8: .word 0x00000183 +_022473EC: .word 0x00002DCC +_022473F0: .word 0x00002DF0 +_022473F4: .word 0xFFFFE3FF + + thumb_func_start MOD11_022473F8 +MOD11_022473F8: ; 0x022473F8 + mov r3, #0xc0 + mul r3, r2 + add r3, r1, r3 + ldr r1, _02247414 ; =0x00002D4C + mov r0, #0 +_02247402: + ldrh r2, [r3, r1] + cmp r2, #0 + beq _02247410 + add r0, r0, #1 + add r3, r3, #2 + cmp r0, #4 + blt _02247402 +_02247410: + bx lr + nop +_02247414: .word 0x00002D4C + + thumb_func_start MOD11_02247418 +MOD11_02247418: ; 0x02247418 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + mov r2, #0 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + bl MOD11_02246D1C + cmp r0, #0x60 + bne _02247430 + mov r6, #0 + b _02247444 +_02247430: + ldr r0, _02247594 ; =0x00002160 + ldr r6, [r5, r0] + cmp r6, #0 + bne _02247444 + ldr r0, _02247598 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224759C ; =0x000003E2 + ldrb r6, [r1, r0] +_02247444: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + mov r3, #0xa + bl MOD11_02246D84 + cmp r0, #1 + bne _02247474 + cmp r6, #0xd + bne _02247474 + cmp r7, r4 + beq _02247474 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022475A0 ; =0x00002D90 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD11_022476C0 + ldr r1, _022475A4 ; =0x0000215C + str r0, [r5, r1] + mov r0, #0xb2 + str r0, [sp] +_02247474: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + mov r3, #0xb + bl MOD11_02246D84 + cmp r0, #1 + bne _022474BA + cmp r6, #0xb + bne _022474BA + ldr r0, _022475A8 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #0x20 + tst r0, r1 + bne _022474BA + ldr r0, _02247598 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _022475AC ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _022474BA + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022475A0 ; =0x00002D90 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD11_022476C0 + ldr r1, _022475A4 ; =0x0000215C + str r0, [r5, r1] + mov r0, #0xb2 + str r0, [sp] +_022474BA: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + mov r3, #0x12 + bl MOD11_02246D84 + cmp r0, #1 + bne _02247500 + cmp r6, #0xa + bne _02247500 + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022475B0 ; =0x00002DAC + ldr r0, [r1, r0] + mov r1, #0x20 + tst r0, r1 + bne _02247500 + ldr r0, _022475A8 ; =0x0000213C + ldr r0, [r5, r0] + tst r0, r1 + bne _02247500 + ldr r0, _02247598 ; =0x00003044 + ldr r3, [r5, r0] + lsl r0, r3, #4 + add r2, r5, r0 + ldr r0, _022475AC ; =0x000003E1 + ldrb r0, [r2, r0] + cmp r0, #0 + bne _022474FC + add r1, #0xe5 + cmp r3, r1 + bne _02247500 +_022474FC: + mov r0, #0xb3 + str r0, [sp] +_02247500: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + mov r3, #0x2b + bl MOD11_02246D84 + cmp r0, #1 + bne _0224752C + ldr r0, _02247598 ; =0x00003044 + ldr r2, _022475B4 ; =0x0225FF84 + ldr r3, [r5, r0] + mov r1, #0 +_02247518: + ldrh r0, [r2] + cmp r3, r0 + bne _02247524 + mov r0, #0xb5 + str r0, [sp] + b _0224752C +_02247524: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #0xc + blo _02247518 +_0224752C: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + mov r3, #0x4e + bl MOD11_02246D84 + cmp r0, #1 + bne _02247548 + cmp r6, #0xd + bne _02247548 + cmp r7, r4 + beq _02247548 + mov r0, #0xb6 + str r0, [sp] +_02247548: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + mov r3, #0x57 + bl MOD11_02246D84 + cmp r0, #1 + bne _0224758E + cmp r6, #0xb + bne _0224758E + ldr r0, _022475A8 ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #0x20 + tst r0, r1 + bne _0224758E + ldr r0, _02247598 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _022475AC ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0224758E + mov r0, #0xc0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _022475A0 ; =0x00002D90 + ldr r0, [r1, r0] + mov r1, #4 + bl MOD11_022476C0 + ldr r1, _022475A4 ; =0x0000215C + str r0, [r5, r1] + mov r0, #0xb2 + str r0, [sp] +_0224758E: + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + nop +_02247594: .word 0x00002160 +_02247598: .word 0x00003044 +_0224759C: .word 0x000003E2 +_022475A0: .word 0x00002D90 +_022475A4: .word 0x0000215C +_022475A8: .word 0x0000213C +_022475AC: .word 0x000003E1 +_022475B0: .word 0x00002DAC +_022475B4: .word 0x0225FF84 + + thumb_func_start MOD11_022475B8 +MOD11_022475B8: ; 0x022475B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + bl MOD11_02246D1C + cmp r0, #3 + beq _022475D0 + cmp r0, #0x3d + beq _02247616 + b _02247696 +_022475D0: + mov r2, #0xc0 + add r0, r4, #0 + mul r0, r2 + ldr r3, _022476B4 ; =0x00002D8C + add r0, r5, r0 + ldr r1, [r0, r3] + cmp r1, #0 + beq _02247696 + add r1, r3, #0 + sub r1, #0x31 + ldrsb r1, [r0, r1] + cmp r1, #0xc + bge _02247696 + add r2, #0x90 + ldr r1, [r5, r2] + add r3, #0x48 + ldr r0, [r0, r3] + add r1, r1, #1 + cmp r1, r0 + beq _02247696 + add r0, r5, #0 + mov r1, #0x11 + add r0, #0x8c + str r1, [r0] + add r0, r5, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + add r0, #0x94 + str r4, [r0] + mov r0, #0xc + str r0, [sp] + mov r6, #1 + b _02247696 +_02247616: + ldr r1, _022476B8 ; =0x00002DAC + mov r0, #0xc0 + add r7, r4, #0 + mul r7, r0 + add r0, r5, r1 + str r0, [sp, #4] + ldr r0, [r0, r7] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02247696 + add r0, r5, r7 + sub r1, #0x20 + ldr r0, [r0, r1] + cmp r0, #0 + beq _02247696 + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #3 + bge _02247696 + ldr r0, [sp, #4] + mov r1, #7 + ldr r0, [r0, r7] + tst r1, r0 + beq _02247656 + mov r0, #0x13 + add r1, r6, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0224768A +_02247656: + ldr r1, _022476BC ; =0x00000F88 + tst r1, r0 + beq _02247666 + mov r0, #0x13 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0224768A +_02247666: + mov r1, #0x10 + tst r1, r0 + beq _02247676 + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0224768A +_02247676: + mov r1, #0x40 + tst r0, r1 + beq _02247684 + mov r0, #3 + add r1, #0xf0 + str r0, [r5, r1] + b _0224768A +_02247684: + mov r0, #4 + add r1, #0xf0 + str r0, [r5, r1] +_0224768A: + mov r0, #0x46 + lsl r0, r0, #2 + str r4, [r5, r0] + mov r0, #0xbe + str r0, [sp] + mov r6, #1 +_02247696: + cmp r6, #1 + bne _022476AC + ldr r2, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r5, #8] + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] +_022476AC: + add r0, r6, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022476B4: .word 0x00002D8C +_022476B8: .word 0x00002DAC +_022476BC: .word 0x00000F88 + + thumb_func_start MOD11_022476C0 +MOD11_022476C0: ; 0x022476C0 + push {r4, lr} + cmp r0, #0 + bge _022476CC + mov r4, #0 + mvn r4, r4 + b _022476CE +_022476CC: + mov r4, #1 +_022476CE: + blx _s32_div_f + cmp r0, #0 + bne _022476D8 + add r0, r4, #0 +_022476D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_022476DC +MOD11_022476DC: ; 0x022476DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xd0 + add r7, r0, #0 + add r4, r1, #0 + bl MOD11_0222FF84 + str r0, [sp, #0x80] + mov r0, #0 + str r0, [sp, #0x84] + str r0, [sp, #0xcc] + + thumb_func_start MOD11_022476F0 +MOD11_022476F0: ; 0x022476F0 + ldr r0, [r4, #0x58] + cmp r0, #0xf + bls _022476FA + bl _02248282 +_022476FA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02247706: ; jump table + .short _02247726 - _02247706 - 2 ; case 0 + .short _022477A2 - _02247706 - 2 ; case 1 + .short _0224785A - _02247706 - 2 ; case 2 + .short _0224796A - _02247706 - 2 ; case 3 + .short _022479E0 - _02247706 - 2 ; case 4 + .short _02247B34 - _02247706 - 2 ; case 5 + .short _02247C74 - _02247706 - 2 ; case 6 + .short _02247E76 - _02247706 - 2 ; case 7 + .short _02247FCC - _02247706 - 2 ; case 8 + .short _022480A4 - _02247706 - 2 ; case 9 + .short _02248118 - _02247706 - 2 ; case 10 + .short _022481A6 - _02247706 - 2 ; case 11 + .short _022481C4 - _02247706 - 2 ; case 12 + .short _022481FE - _02247706 - 2 ; case 13 + .short _0224823A - _02247706 - 2 ; case 14 + .short _0224827A - _02247706 - 2 ; case 15 +_02247726: + ldr r0, _02247A18 ; =0x00003121 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _02247798 + add r0, r7, #0 + bl MOD11_0223125C + cmp r0, #0xf + bhi _0224778C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02247744: ; jump table + .short _0224778C - _02247744 - 2 ; case 0 + .short _0224778C - _02247744 - 2 ; case 1 + .short _02247764 - _02247744 - 2 ; case 2 + .short _02247764 - _02247744 - 2 ; case 3 + .short _02247764 - _02247744 - 2 ; case 4 + .short _0224776E - _02247744 - 2 ; case 5 + .short _0224776E - _02247744 - 2 ; case 6 + .short _0224776E - _02247744 - 2 ; case 7 + .short _0224778C - _02247744 - 2 ; case 8 + .short _0224778C - _02247744 - 2 ; case 9 + .short _0224777A - _02247744 - 2 ; case 10 + .short _0224778C - _02247744 - 2 ; case 11 + .short _0224778C - _02247744 - 2 ; case 12 + .short _0224778C - _02247744 - 2 ; case 13 + .short _02247784 - _02247744 - 2 ; case 14 + .short _02247784 - _02247744 - 2 ; case 15 +_02247764: + ldr r0, _02247A1C ; =0x0000010F + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224778C +_0224776E: + mov r0, #0x11 + lsl r0, r0, #4 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224778C +_0224777A: + ldr r0, _02247A20 ; =0x00000111 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224778C +_02247784: + ldr r0, _02247A24 ; =0x00000112 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] +_0224778C: + ldr r0, [sp, #0x84] + cmp r0, #1 + bne _02247798 + ldr r0, _02247A18 ; =0x00003121 + mov r1, #1 + strb r1, [r4, r0] +_02247798: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + bl _02248282 +_022477A2: + ldr r0, [sp, #0x80] + mov r6, #0 + cmp r0, #0 + ble _02247846 + ldr r0, _02247A28 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0x90] +_022477B0: + ldr r0, _02247A2C ; =0x000021EC + add r1, r4, r6 + ldrb r5, [r1, r0] + add r0, r7, #0 + mov r2, #0 + add r1, r5, #0 + bl MOD11_02230308 + str r0, [sp, #0x88] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD11_02230308 + add r2, r0, #0 + ldr r1, [sp, #0x88] + add r0, r4, #0 + bl MOD11_0224C84C + mov r1, #0x12 + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #0xc0 + mul r0, r5 + ldr r1, [sp, #0x90] + str r0, [sp, #0x8c] + ldr r0, [r1, r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0224783E + mov r0, #0x12 + lsl r0, r0, #4 + ldr r2, [r4, r0] + cmp r2, #0xff + beq _0224783E + ldr r0, [sp, #0x8c] + add r1, r4, r0 + ldr r0, _02247A30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224783E + mov r0, #0xc0 + mul r0, r2 + add r1, r4, r0 + ldr r0, _02247A30 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224783E + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x24 + bne _0224783E + ldr r1, [sp, #0x90] + ldr r0, [sp, #0x8c] + ldr r1, [r1, r0] + mov r0, #4 + add r2, r1, #0 + orr r2, r0 + ldr r1, [sp, #0x90] + ldr r0, [sp, #0x8c] + str r2, [r1, r0] + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + mov r0, #0xbb + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02247846 +_0224783E: + ldr r0, [sp, #0x80] + add r6, r6, #1 + cmp r6, r0 + blt _022477B0 +_02247846: + ldr r0, [sp, #0x80] + cmp r6, r0 + beq _02247850 + bl _02248282 +_02247850: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + bl _02248282 +_0224785A: + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x80] + cmp r0, #0 + ble _02247958 + ldr r0, _02247A28 ; =0x00002D68 + add r6, r4, r0 + mov r0, #1 + str r0, [sp, #0xbc] + str r0, [sp, #0xb8] + str r0, [sp, #0xb4] + str r0, [sp, #0xb0] +_02247872: + ldr r0, [sp, #0x2c] + add r1, r4, r0 + ldr r0, _02247A2C ; =0x000021EC + ldrb r1, [r1, r0] + mov r0, #0xc0 + add r5, r1, #0 + mul r5, r0 + ldr r0, [r6, r5] + str r1, [sp, #0x10] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _0224793C + ldr r0, _02247A30 ; =0x00002D8C + add r1, r4, r5 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224793C + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x2d + bgt _022478A8 + bge _022478D8 + cmp r0, #2 + beq _022478B6 + b _0224793C +_022478A8: + cmp r0, #0x46 + bgt _022478B0 + beq _022478FA + b _0224793C +_022478B0: + cmp r0, #0x75 + beq _0224791C + b _0224793C +_022478B6: + ldr r0, [r6, r5] + ldr r1, [sp, #0xb0] + bic r0, r1 + mov r1, #1 + orr r0, r1 + str r0, [r6, r5] + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #2 + tst r0, r1 + bne _0224793C + mov r0, #0xb7 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224793C +_022478D8: + ldr r0, [r6, r5] + ldr r1, [sp, #0xb4] + bic r0, r1 + mov r1, #1 + orr r0, r1 + str r0, [r6, r5] + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #8 + tst r0, r1 + bne _0224793C + mov r0, #0xb8 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224793C +_022478FA: + ldr r0, [r6, r5] + ldr r1, [sp, #0xb8] + bic r0, r1 + mov r1, #1 + orr r0, r1 + str r0, [r6, r5] + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x20 + tst r0, r1 + bne _0224793C + mov r0, #0xb9 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224793C +_0224791C: + ldr r0, [r6, r5] + ldr r1, [sp, #0xbc] + bic r0, r1 + mov r1, #1 + orr r0, r1 + str r0, [r6, r5] + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x80 + tst r0, r1 + bne _0224793C + mov r0, #0xfc + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] +_0224793C: + ldr r0, [sp, #0x84] + cmp r0, #1 + bne _0224794C + mov r1, #0x46 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + str r0, [r4, r1] + b _02247958 +_0224794C: + ldr r0, [sp, #0x2c] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x2c] + cmp r1, r0 + blt _02247872 +_02247958: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x80] + cmp r1, r0 + bne _022479D2 + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + bl _02248282 +_0224796A: + ldr r0, [sp, #0x80] + mov r5, #0 + cmp r0, #0 + ble _022479CC + ldr r0, _02247A28 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0x94] +_02247978: + ldr r0, _02247A2C ; =0x000021EC + add r1, r4, r5 + ldrb r1, [r1, r0] + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + ldr r0, [sp, #0x94] + str r1, [sp, #0x14] + ldr r0, [r0, r6] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _022479C4 + ldr r0, _02247A30 ; =0x00002D8C + add r1, r4, r6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022479C4 + ldr r1, [sp, #0x14] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x16 + bne _022479C4 + ldr r0, [sp, #0x94] + ldr r1, [r0, r6] + mov r0, #2 + orr r1, r0 + ldr r0, [sp, #0x94] + str r1, [r0, r6] + mov r1, #0x46 + ldr r0, [sp, #0x14] + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xba + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _022479CC +_022479C4: + ldr r0, [sp, #0x80] + add r5, r5, #1 + cmp r5, r0 + blt _02247978 +_022479CC: + ldr r0, [sp, #0x80] + cmp r5, r0 + beq _022479D6 +_022479D2: + bl _02248282 +_022479D6: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + bl _02248282 +_022479E0: + mov r0, #0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x80] + cmp r0, #0 + bgt _022479EC + b _02247B22 +_022479EC: + ldr r0, _02247A28 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0x9c] +_022479F2: + ldr r0, [sp, #0x30] + add r1, r4, r0 + ldr r0, _02247A2C ; =0x000021EC + ldrb r1, [r1, r0] + mov r0, #0xc0 + mul r0, r1 + str r1, [sp, #0x18] + ldr r1, [sp, #0x9c] + str r0, [sp, #0x98] + ldr r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _02247A0E + b _02247B14 +_02247A0E: + ldr r0, [sp, #0x98] + add r1, r4, r0 + ldr r0, _02247A30 ; =0x00002D8C + b _02247A34 + nop +_02247A18: .word 0x00003121 +_02247A1C: .word 0x0000010F +_02247A20: .word 0x00000111 +_02247A24: .word 0x00000112 +_02247A28: .word 0x00002D68 +_02247A2C: .word 0x000021EC +_02247A30: .word 0x00002D8C +_02247A34: + ldr r0, [r1, r0] + cmp r0, #0 + beq _02247B14 + ldr r1, [sp, #0x18] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x58 + bne _02247B14 + mov r0, #0 + str r0, [sp, #0x78] + str r0, [sp, #0x74] + str r0, [sp, #0x7c] + ldr r0, [sp, #0x80] + cmp r0, #0 + ble _02247ACE + add r5, r4, #0 +_02247A56: + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl MOD11_02230270 + add r6, r0, #0 + ldr r1, [sp, #0x7c] + add r0, r7, #0 + bl MOD11_02230270 + cmp r6, r0 + beq _02247AC0 + ldr r0, _02247D60 ; =0x00002DB0 + ldr r1, [r5, r0] + mov r0, #1 + lsl r0, r0, #0x18 + tst r0, r1 + bne _02247AC0 + ldr r0, _02247D64 ; =0x00002D8C + ldr r0, [r5, r0] + cmp r0, #0 + beq _02247AC0 + ldr r0, _02247D68 ; =0x00002D5A + ldrsb r0, [r5, r0] + lsl r2, r0, #1 + ldr r0, _02247D6C ; =0x0225E284 + add r1, r0, r2 + ldr r0, _02247D70 ; =0x00002D44 + ldrb r1, [r1, #1] + ldrh r3, [r5, r0] + ldr r0, _02247D6C ; =0x0225E284 + ldrb r0, [r0, r2] + mul r0, r3 + blx _s32_div_f + ldr r1, [sp, #0x78] + add r0, r1, r0 + str r0, [sp, #0x78] + ldr r0, _02247D74 ; =0x00002D5D + ldrsb r0, [r5, r0] + lsl r2, r0, #1 + ldr r0, _02247D6C ; =0x0225E284 + add r1, r0, r2 + ldr r0, _02247D78 ; =0x00002D4A + ldrb r1, [r1, #1] + ldrh r3, [r5, r0] + ldr r0, _02247D6C ; =0x0225E284 + ldrb r0, [r0, r2] + mul r0, r3 + blx _s32_div_f + ldr r1, [sp, #0x74] + add r0, r1, r0 + str r0, [sp, #0x74] +_02247AC0: + ldr r0, [sp, #0x7c] + add r5, #0xc0 + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x7c] + cmp r1, r0 + blt _02247A56 +_02247ACE: + ldr r1, [sp, #0x9c] + ldr r0, [sp, #0x98] + ldr r1, [r1, r0] + mov r0, #8 + add r2, r1, #0 + orr r2, r0 + ldr r1, [sp, #0x9c] + ldr r0, [sp, #0x98] + str r2, [r1, r0] + ldr r1, [sp, #0x78] + ldr r0, [sp, #0x74] + add r0, r1, r0 + beq _02247B14 + ldr r0, [sp, #0x74] + cmp r1, r0 + blt _02247AF2 + mov r1, #0x12 + b _02247AF4 +_02247AF2: + mov r1, #0xf +_02247AF4: + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x94 + str r0, [r1] + mov r0, #0xc + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02247B22 +_02247B14: + ldr r0, [sp, #0x30] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x30] + cmp r1, r0 + bge _02247B22 + b _022479F2 +_02247B22: + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x80] + cmp r1, r0 + beq _02247B2C + b _02248282 +_02247B2C: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_02247B34: + mov r0, #0 + str r0, [sp, #0x34] + ldr r0, [sp, #0x80] + cmp r0, #0 + bgt _02247B40 + b _02247C62 +_02247B40: + ldr r0, _02247D7C ; =0x00002D68 + add r6, r4, r0 +_02247B44: + ldr r0, [sp, #0x34] + add r1, r4, r0 + ldr r0, _02247D80 ; =0x000021EC + ldrb r1, [r1, r0] + mov r0, #0xc0 + add r5, r1, #0 + mul r5, r0 + ldr r0, [r6, r5] + str r1, [sp, #0x1c] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + bne _02247C54 + ldr r0, _02247D64 ; =0x00002D8C + add r1, r4, r5 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02247C54 + ldr r1, [sp, #0x1c] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x6b + bne _02247C54 + ldr r1, [r6, r5] + mov r0, #0x10 + orr r0, r1 + str r0, [r6, r5] + mov r0, #0 + str r0, [sp, #0x70] + ldr r0, [sp, #0x80] + cmp r0, #0 + ble _02247C40 + add r0, r4, r5 + str r4, [sp, #0x50] + str r0, [sp, #0x4c] +_02247B8A: + ldr r1, [sp, #0x1c] + add r0, r7, #0 + bl MOD11_02230270 + add r5, r0, #0 + ldr r1, [sp, #0x70] + add r0, r7, #0 + bl MOD11_02230270 + cmp r5, r0 + beq _02247C2E + ldr r1, [sp, #0x50] + ldr r0, _02247D64 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02247C2E + mov r0, #0 + str r0, [sp, #0x6c] + add r6, r1, #0 +_02247BB0: + ldr r0, _02247D84 ; =0x00002D4C + ldrh r5, [r6, r0] + cmp r5, #0 + beq _02247C1C + mov r0, #0 + str r0, [sp, #0xc8] + ldr r0, [sp, #0x70] + add r1, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + add r2, r5, #0 + str r0, [sp, #4] + ldr r0, _02247D88 ; =0x00002144 + mov r3, #0 + ldr r0, [r4, r0] + str r0, [sp, #8] + add r0, sp, #0xc8 + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD11_02246274 + ldr r1, _02247D88 ; =0x00002144 + str r0, [r4, r1] + ldr r1, [sp, #0xc8] + mov r0, #8 + tst r0, r1 + bne _02247C1C + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0224C8C0 + cmp r0, #0 + bne _02247C1C + ldr r1, [sp, #0xc8] + mov r0, #2 + tst r0, r1 + bne _02247C16 + lsl r0, r5, #4 + add r1, r4, r0 + ldr r0, _02247D8C ; =0x000003DE + ldrh r0, [r1, r0] + cmp r0, #0x26 + bne _02247C1C + ldr r1, [sp, #0x4c] + ldr r0, _02247D90 ; =0x00002D74 + ldr r2, [sp, #0x50] + ldrb r0, [r1, r0] + ldr r1, _02247D90 ; =0x00002D74 + ldrb r1, [r2, r1] + cmp r0, r1 + bhi _02247C1C +_02247C16: + mov r0, #1 + str r0, [sp, #0x84] + b _02247C28 +_02247C1C: + ldr r0, [sp, #0x6c] + add r6, r6, #2 + add r0, r0, #1 + str r0, [sp, #0x6c] + cmp r0, #4 + blt _02247BB0 +_02247C28: + ldr r0, [sp, #0x84] + cmp r0, #1 + beq _02247C40 +_02247C2E: + ldr r0, [sp, #0x50] + add r0, #0xc0 + str r0, [sp, #0x50] + ldr r0, [sp, #0x70] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x70] + cmp r1, r0 + blt _02247B8A +_02247C40: + ldr r0, [sp, #0x84] + cmp r0, #1 + bne _02247C62 + mov r1, #0x46 + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc2 + str r0, [sp, #0xcc] + b _02247C62 +_02247C54: + ldr r0, [sp, #0x34] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x34] + cmp r1, r0 + bge _02247C62 + b _02247B44 +_02247C62: + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x80] + cmp r1, r0 + beq _02247C6C + b _02248282 +_02247C6C: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_02247C74: + mov r0, #0 + str r0, [sp, #0x38] + ldr r0, [sp, #0x80] + cmp r0, #0 + bgt _02247C80 + b _02247E64 +_02247C80: + ldr r0, _02247D7C ; =0x00002D68 + add r6, r4, r0 +_02247C84: + ldr r0, [sp, #0x38] + add r1, r4, r0 + ldr r0, _02247D80 ; =0x000021EC + ldrb r1, [r1, r0] + mov r0, #0xc0 + add r5, r1, #0 + mul r5, r0 + ldr r0, [r6, r5] + str r1, [sp, #0x20] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + bne _02247CB2 + ldr r0, _02247D64 ; =0x00002D8C + add r1, r4, r5 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02247CB2 + ldr r1, [sp, #0x20] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x6c + beq _02247CB4 +_02247CB2: + b _02247E56 +_02247CB4: + ldr r1, [r6, r5] + mov r0, #0x20 + orr r0, r1 + str r0, [r6, r5] + mov r5, #0 + ldr r0, [sp, #0x80] + str r5, [sp, #0x5c] + str r5, [sp, #0x68] + cmp r0, #0 + bgt _02247CCA + b _02247DF2 +_02247CCA: + str r4, [sp, #0x58] +_02247CCC: + ldr r1, [sp, #0x20] + add r0, r7, #0 + bl MOD11_02230270 + add r6, r0, #0 + ldr r1, [sp, #0x68] + add r0, r7, #0 + bl MOD11_02230270 + cmp r6, r0 + beq _02247DDE + ldr r1, [sp, #0x58] + ldr r0, _02247D64 ; =0x00002D8C + ldr r1, [r1, r0] + cmp r1, #0 + beq _02247DDE + ldr r0, [sp, #0x5c] + add r0, r0, r1 + str r0, [sp, #0x5c] + mov r0, #0 + str r0, [sp, #0x64] + ldr r0, [sp, #0x58] + str r0, [sp, #0x54] +_02247CFA: + ldr r1, [sp, #0x54] + ldr r0, _02247D84 ; =0x00002D4C + ldrh r6, [r1, r0] + ldr r1, _02247D94 ; =0x000003E1 + lsl r0, r6, #4 + add r0, r4, r0 + ldrb r1, [r0, r1] + str r1, [sp, #0x60] + cmp r1, #1 + bne _02247DB2 + ldr r1, _02247D8C ; =0x000003DE + ldrh r0, [r0, r1] + cmp r0, #0x59 + bgt _02247D1E + bge _02247D46 + cmp r0, #0x26 + beq _02247D2C + b _02247D98 +_02247D1E: + cmp r0, #0x90 + bgt _02247D26 + beq _02247D46 + b _02247D98 +_02247D26: + cmp r0, #0xe3 + beq _02247D46 + b _02247D98 +_02247D2C: + cmp r5, #0x96 + blo _02247D3C + bne _02247DCE + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _02247DCE +_02247D3C: + mov r5, #0x96 + add r0, r5, #0 + add r0, #0x8e + str r6, [r4, r0] + b _02247DCE +_02247D46: + cmp r5, #0x78 + blo _02247D56 + bne _02247DCE + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _02247DCE +_02247D56: + mov r5, #0x78 + add r0, r5, #0 + add r0, #0xac + str r6, [r4, r0] + b _02247DCE + .align 2, 0 +_02247D60: .word 0x00002DB0 +_02247D64: .word 0x00002D8C +_02247D68: .word 0x00002D5A +_02247D6C: .word 0x0225E284 +_02247D70: .word 0x00002D44 +_02247D74: .word 0x00002D5D +_02247D78: .word 0x00002D4A +_02247D7C: .word 0x00002D68 +_02247D80: .word 0x000021EC +_02247D84: .word 0x00002D4C +_02247D88: .word 0x00002144 +_02247D8C: .word 0x000003DE +_02247D90: .word 0x00002D74 +_02247D94: .word 0x000003E1 +_02247D98: + cmp r5, #0x50 + blo _02247DA8 + bne _02247DCE + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _02247DCE +_02247DA8: + mov r5, #0x50 + add r0, r5, #0 + add r0, #0xd4 + str r6, [r4, r0] + b _02247DCE +_02247DB2: + add r0, r1, #0 + cmp r5, r0 + blo _02247DC6 + cmp r5, r0 + bne _02247DCE + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _02247DCE +_02247DC6: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r5, [sp, #0x60] + str r6, [r4, r0] +_02247DCE: + ldr r0, [sp, #0x54] + add r0, r0, #2 + str r0, [sp, #0x54] + ldr r0, [sp, #0x64] + add r0, r0, #1 + str r0, [sp, #0x64] + cmp r0, #4 + blt _02247CFA +_02247DDE: + ldr r0, [sp, #0x58] + add r0, #0xc0 + str r0, [sp, #0x58] + ldr r0, [sp, #0x68] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x68] + cmp r1, r0 + bge _02247DF2 + b _02247CCC +_02247DF2: + cmp r5, #0 + beq _02247E08 + mov r1, #0x46 + ldr r0, [sp, #0x20] + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc3 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02247E64 +_02247E08: + ldr r0, [sp, #0x5c] + cmp r0, #0 + beq _02247E64 + ldr r2, [sp, #0x20] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_022482A4 + add r5, r0, #0 + add r0, r7, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022473F8 + add r6, r0, #0 + bl FUN_0201B9EC + add r1, r6, #0 + blx _s32_div_f + mov r0, #0xc0 + add r2, r5, #0 + mul r2, r0 + lsl r3, r1, #1 + add r1, r4, r2 + add r2, r3, r1 + ldr r1, _02248144 ; =0x00002D4C + ldrh r2, [r2, r1] + add r1, r0, #0 + add r1, #0x64 + str r2, [r4, r1] + ldr r1, [sp, #0x20] + add r0, #0x58 + str r1, [r4, r0] + mov r0, #0xc3 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02247E64 +_02247E56: + ldr r0, [sp, #0x38] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x38] + cmp r1, r0 + bge _02247E64 + b _02247C84 +_02247E64: + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x80] + cmp r1, r0 + beq _02247E6E + b _02248282 +_02247E6E: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_02247E76: + mov r0, #0 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x80] + cmp r0, #0 + bgt _02247E82 + b _02247FBA +_02247E82: + ldr r0, _02248148 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0xa0] +_02247E88: + ldr r0, [sp, #0x3c] + add r1, r4, r0 + ldr r0, _0224814C ; =0x000021EC + ldrb r5, [r1, r0] + mov r0, #0xc0 + add r6, r5, #0 + mul r6, r0 + ldr r0, [sp, #0xa0] + ldr r0, [r0, r6] + lsl r0, r0, #0x17 + lsr r0, r0, #0x1f + bne _02247F9A + ldr r0, _02248150 ; =0x00002D8C + add r1, r4, r6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02247F9A + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x77 + bne _02247F9A + ldr r0, [sp, #0xa0] + ldr r1, [r0, r6] + mov r0, #1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, [sp, #0xa0] + str r1, [r0, r6] + add r0, r7, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02247F74 + add r0, r7, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD11_02230308 + str r0, [sp, #0xc0] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD11_02230308 + ldr r2, [sp, #0xc0] + mov r1, #0xc0 + mul r1, r2 + ldr r2, _02248150 ; =0x00002D8C + add r1, r4, r1 + ldr r3, [r1, r2] + str r0, [sp, #0xc4] + cmp r3, #0 + beq _02247F38 + add r2, #0x2c + ldrh r2, [r1, r2] + cmp r2, #0 + beq _02247F38 + mov r2, #0xc0 + mul r2, r0 + add r0, r4, r2 + ldr r2, _02248150 ; =0x00002D8C + ldr r2, [r0, r2] + cmp r2, #0 + beq _02247F38 + ldr r2, _02248154 ; =0x00002DB8 + ldrh r0, [r0, r2] + cmp r0, #0 + beq _02247F38 + bl FUN_0201B9EC + lsl r0, r0, #0x1f + lsr r1, r0, #0x1d + add r0, sp, #0xc0 + ldr r1, [r0, r1] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02248154 ; =0x00002DB8 + ldrh r1, [r1, r0] + mov r0, #0x4a + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [sp, #0x84] + b _02247F9A +_02247F38: + cmp r3, #0 + beq _02247F50 + ldr r0, _02248154 ; =0x00002DB8 + ldrh r1, [r1, r0] + cmp r1, #0 + beq _02247F50 + mov r0, #0x4a + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [sp, #0x84] + b _02247F9A +_02247F50: + ldr r1, [sp, #0xc4] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _02248150 ; =0x00002D8C + add r0, r4, r0 + ldr r1, [r0, r1] + cmp r1, #0 + beq _02247F9A + ldr r1, _02248154 ; =0x00002DB8 + ldrh r1, [r0, r1] + cmp r1, #0 + beq _02247F9A + mov r0, #0x4a + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [sp, #0x84] + b _02247F9A +_02247F74: + mov r0, #1 + add r1, r5, #0 + eor r1, r0 + mov r0, #0xc0 + mul r0, r1 + ldr r1, _02248150 ; =0x00002D8C + add r0, r4, r0 + ldr r1, [r0, r1] + cmp r1, #0 + beq _02247F9A + ldr r1, _02248154 ; =0x00002DB8 + ldrh r1, [r0, r1] + cmp r1, #0 + beq _02247F9A + mov r0, #0x4a + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [sp, #0x84] +_02247F9A: + ldr r0, [sp, #0x84] + cmp r0, #1 + bne _02247FAC + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + mov r0, #0xfd + str r0, [sp, #0xcc] + b _02247FBA +_02247FAC: + ldr r0, [sp, #0x3c] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x3c] + cmp r1, r0 + bge _02247FBA + b _02247E88 +_02247FBA: + ldr r1, [sp, #0x3c] + ldr r0, [sp, #0x80] + cmp r1, r0 + beq _02247FC4 + b _02248282 +_02247FC4: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_02247FCC: + mov r0, #0 + str r0, [sp, #0x40] + ldr r0, [sp, #0x80] + cmp r0, #0 + ble _02248094 + ldr r0, _02248148 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0xa4] +_02247FDC: + ldr r0, [sp, #0x40] + add r1, r4, r0 + ldr r0, _0224814C ; =0x000021EC + ldrb r6, [r1, r0] + mov r0, #0xc0 + add r5, r6, #0 + mul r5, r0 + ldr r0, [sp, #0xa4] + ldr r0, [r0, r5] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + bne _02248038 + ldr r0, _02248150 ; =0x00002D8C + add r1, r4, r5 + ldr r0, [r1, r0] + str r1, [sp, #0x48] + cmp r0, #0 + beq _02248038 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x70 + bne _02248038 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r2, [r4, r0] + ldr r1, [sp, #0x48] + ldr r0, _02248158 ; =0x00002DD8 + ldr r0, [r1, r0] + cmp r2, r0 + bgt _02248038 + ldr r0, [sp, #0xa4] + mov r2, #0x40 + ldr r0, [r0, r5] + add r1, r0, #0 + orr r1, r2 + ldr r0, [sp, #0xa4] + add r2, #0xd8 + str r1, [r0, r5] + str r6, [r4, r2] + mov r0, #0xc4 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02248094 +_02248038: + ldr r0, [sp, #0xa4] + ldr r0, [r0, r5] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _02248088 + ldr r0, _02248150 ; =0x00002D8C + add r1, r4, r5 + ldr r0, [r1, r0] + str r1, [sp, #0x44] + cmp r0, #0 + beq _02248088 + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x70 + bne _02248088 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r2, [r4, r0] + ldr r1, [sp, #0x44] + ldr r0, _02248158 ; =0x00002DD8 + ldr r0, [r1, r0] + sub r0, r2, r0 + cmp r0, #5 + bne _02248088 + ldr r0, [sp, #0xa4] + mov r2, #0x80 + ldr r0, [r0, r5] + add r1, r0, #0 + orr r1, r2 + ldr r0, [sp, #0xa4] + add r2, #0x98 + str r1, [r0, r5] + str r6, [r4, r2] + mov r0, #0xc5 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02248094 +_02248088: + ldr r0, [sp, #0x40] + add r1, r0, #1 + ldr r0, [sp, #0x80] + str r1, [sp, #0x40] + cmp r1, r0 + blt _02247FDC +_02248094: + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x80] + cmp r1, r0 + bne _0224810E + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_022480A4: + ldr r0, [sp, #0x80] + mov r5, #0 + cmp r0, #0 + ble _02248108 + ldr r0, _02248148 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0xa8] +_022480B2: + ldr r0, _0224814C ; =0x000021EC + add r1, r4, r5 + ldrb r1, [r1, r0] + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + ldr r0, [sp, #0xa8] + str r1, [sp, #0x24] + ldr r0, [r0, r6] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1f + bne _02248100 + ldr r0, _02248150 ; =0x00002D8C + add r1, r4, r6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02248100 + ldr r1, [sp, #0x24] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x68 + bne _02248100 + ldr r0, [sp, #0xa8] + mov r2, #2 + ldr r0, [r0, r6] + lsl r2, r2, #8 + add r1, r0, #0 + orr r1, r2 + ldr r0, [sp, #0xa8] + sub r2, #0xe8 + str r1, [r0, r6] + ldr r0, [sp, #0x24] + str r0, [r4, r2] + mov r0, #0xb1 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02248108 +_02248100: + ldr r0, [sp, #0x80] + add r5, r5, #1 + cmp r5, r0 + blt _022480B2 +_02248108: + ldr r0, [sp, #0x80] + cmp r5, r0 + beq _02248110 +_0224810E: + b _02248282 +_02248110: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_02248118: + ldr r0, [sp, #0x80] + mov r5, #0 + cmp r0, #0 + ble _02248198 + ldr r0, _02248148 ; =0x00002D68 + add r0, r4, r0 + str r0, [sp, #0xac] +_02248126: + ldr r0, _0224814C ; =0x000021EC + add r1, r4, r5 + ldrb r1, [r1, r0] + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + ldr r0, [sp, #0xac] + str r1, [sp, #0x28] + ldr r0, [r0, r6] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1f + bne _02248190 + ldr r0, _02248150 ; =0x00002D8C + b _0224815C + nop +_02248144: .word 0x00002D4C +_02248148: .word 0x00002D68 +_0224814C: .word 0x000021EC +_02248150: .word 0x00002D8C +_02248154: .word 0x00002DB8 +_02248158: .word 0x00002DD8 +_0224815C: + add r1, r4, r6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02248190 + ldr r1, [sp, #0x28] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x2e + bne _02248190 + ldr r0, [sp, #0xac] + ldr r1, [r0, r6] + mov r0, #1 + lsl r0, r0, #0xa + orr r1, r0 + ldr r0, [sp, #0xac] + str r1, [r0, r6] + mov r1, #0x46 + ldr r0, [sp, #0x28] + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #5 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02248198 +_02248190: + ldr r0, [sp, #0x80] + add r5, r5, #1 + cmp r5, r0 + blt _02248126 +_02248198: + ldr r0, [sp, #0x80] + cmp r5, r0 + bne _02248282 + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_022481A6: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_0224AE78 + cmp r0, #1 + bne _022481BC + ldr r0, _02248294 ; =0x00000106 + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _02248282 +_022481BC: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_022481C4: + ldr r0, [sp, #0x80] + mov r5, #0 + cmp r0, #0 + ble _022481F6 + mov r6, #2 +_022481CE: + ldr r1, _02248298 ; =0x000021EC + add r2, r4, r5 + ldrb r2, [r2, r1] + mov r1, #0xc0 + add r0, r4, #0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224829C ; =0x00002DB8 + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD11_0224C12C + cmp r0, #0x39 + bne _022481EE + ldr r0, _022482A0 ; =0x00002168 + str r6, [r4, r0] +_022481EE: + ldr r0, [sp, #0x80] + add r5, r5, #1 + cmp r5, r0 + blt _022481CE +_022481F6: + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_022481FE: + ldr r0, [sp, #0x80] + mov r5, #0 + cmp r0, #0 + ble _0224822C + ldr r6, _02248298 ; =0x000021EC +_02248208: + add r2, r4, r5 + ldrb r2, [r2, r6] + add r0, r7, #0 + add r1, r4, #0 + mov r3, #1 + bl MOD11_02248898 + cmp r0, #1 + bne _02248224 + mov r0, #0xdd + str r0, [sp, #0xcc] + mov r0, #1 + str r0, [sp, #0x84] + b _0224822C +_02248224: + ldr r0, [sp, #0x80] + add r5, r5, #1 + cmp r5, r0 + blt _02248208 +_0224822C: + ldr r0, [sp, #0x80] + cmp r5, r0 + bne _02248282 + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_0224823A: + ldr r0, [sp, #0x80] + mov r5, #0 + cmp r0, #0 + ble _0224826C +_02248242: + ldr r0, _02248298 ; =0x000021EC + add r1, r4, r5 + ldrb r6, [r1, r0] + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, sp, #0xcc + bl MOD11_022493A0 + cmp r0, #1 + bne _02248264 + mov r0, #0x46 + lsl r0, r0, #2 + str r6, [r4, r0] + mov r0, #1 + str r0, [sp, #0x84] + b _0224826C +_02248264: + ldr r0, [sp, #0x80] + add r5, r5, #1 + cmp r5, r0 + blt _02248242 +_0224826C: + ldr r0, [sp, #0x80] + cmp r5, r0 + bne _02248282 + ldr r0, [r4, #0x58] + add r0, r0, #1 + str r0, [r4, #0x58] + b _02248282 +_0224827A: + mov r0, #0 + str r0, [r4, #0x58] + mov r0, #2 + str r0, [sp, #0x84] +_02248282: + ldr r0, [sp, #0x84] + cmp r0, #0 + bne _0224828C + bl MOD11_022476F0 +_0224828C: + ldr r0, [sp, #0xcc] + add sp, #0xd0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02248294: .word 0x00000106 +_02248298: .word 0x000021EC +_0224829C: .word 0x00002DB8 +_022482A0: .word 0x00002168 + + thumb_func_start MOD11_022482A4 +MOD11_022482A4: ; 0x022482A4 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _022482FA + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD11_02230308 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD11_02230308 + str r0, [sp, #4] + bl FUN_0201B9EC + mov r3, #1 + add r2, r0, #0 + and r2, r3 + lsl r0, r2, #2 + add r1, sp, #0 + ldr r0, [r1, r0] + mov r4, #0xc0 + mul r4, r0 + add r5, r6, r4 + ldr r4, _02248304 ; =0x00002D8C + ldr r4, [r5, r4] + cmp r4, #0 + bne _022482FE + add r0, r2, #0 + eor r0, r3 + lsl r0, r0, #2 + add sp, #8 + ldr r0, [r1, r0] + pop {r4, r5, r6, pc} +_022482FA: + mov r0, #1 + eor r0, r4 +_022482FE: + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02248304: .word 0x00002D8C + + thumb_func_start MOD11_02248308 +MOD11_02248308: ; 0x02248308 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, [r5, #0x6c] + add r7, r0, #0 + add r4, r2, #0 + mov r6, #0 + cmp r1, #0xff + bne _0224831C + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224831C: + add r0, r5, #0 + bl MOD11_0224AD9C + cmp r0, #1 + bne _0224832A + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224832A: + ldr r1, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x26 + bgt _0224835A + blt _0224833A + b _022485FC +_0224833A: + cmp r0, #0x10 + bgt _02248346 + bge _02248408 + cmp r0, #9 + beq _02248372 + b _0224887A +_02248346: + cmp r0, #0x1b + bgt _02248358 + cmp r0, #0x18 + blt _02248358 + bne _02248352 + b _022484B0 +_02248352: + cmp r0, #0x1b + bne _02248358 + b _02248546 +_02248358: + b _0224887A +_0224835A: + cmp r0, #0x38 + bgt _0224836A + blt _02248362 + b _02248752 +_02248362: + cmp r0, #0x31 + bne _02248368 + b _022486BE +_02248368: + b _0224887A +_0224836A: + cmp r0, #0x6a + bne _02248370 + b _022487FA +_02248370: + b _0224887A +_02248372: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248660 ; =0x00002D8C + ldr r1, [r2, r0] + cmp r1, #0 + beq _022483E6 + add r1, r0, #0 + add r1, #0x20 + ldr r1, [r2, r1] + cmp r1, #0 + bne _022483E6 + ldr r2, _02248664 ; =0x0000216C + ldr r1, _02248668 ; =0x801FDA49 + ldr r3, [r5, r2] + tst r1, r3 + bne _022483E6 + add r1, r2, #0 + sub r1, #0x30 + ldr r3, [r5, r1] + mov r1, #0x20 + tst r1, r3 + bne _022483E6 + sub r2, #0x2c + ldr r2, [r5, r2] + mov r1, #0x10 + tst r1, r2 + bne _022483E6 + ldr r2, [r5, #0x6c] + mov r1, #0x1c + mul r1, r2 + add r1, r5, r1 + lsr r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _022483C6 + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022483E6 +_022483C6: + ldr r0, _0224866C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248670 ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _022483E6 + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #3 + blt _022483E8 +_022483E6: + b _0224887A +_022483E8: + add r0, r5, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0x94 + str r1, [r0] + mov r0, #0x46 + ldr r1, [r5, #0x6c] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0x1f + str r0, [r4] + mov r6, #1 + b _0224887A +_02248408: + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x60 + bne _02248418 + add r7, r6, #0 + b _02248432 +_02248418: + ldr r0, _02248674 ; =0x00002160 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02248426 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + b _02248432 +_02248426: + ldr r0, _0224866C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248678 ; =0x000003E2 + ldrb r7, [r1, r0] +_02248432: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248660 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02248516 + ldr r0, _02248664 ; =0x0000216C + ldr r2, [r5, r0] + ldr r0, _02248668 ; =0x801FDA49 + tst r0, r2 + bne _02248516 + ldr r0, _0224866C ; =0x00003044 + ldr r3, [r5, r0] + cmp r3, #0xa5 + beq _02248516 + mov r0, #0x1c + ldr r2, _02248660 ; =0x00002D8C + mul r0, r1 + add r0, r5, r0 + lsr r2, r2, #4 + ldr r2, [r0, r2] + cmp r2, #0 + bne _0224846E + mov r2, #0x2e + lsl r2, r2, #4 + ldr r0, [r0, r2] + cmp r0, #0 + beq _02248516 +_0224846E: + mov r0, #0x85 + lsl r0, r0, #6 + ldr r2, [r5, r0] + mov r0, #0x10 + tst r0, r2 + bne _02248516 + lsl r0, r3, #4 + add r2, r5, r0 + ldr r0, _0224867C ; =0x000003E1 + ldrb r0, [r2, r0] + cmp r0, #0 + beq _02248516 + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r7, r0 + beq _02248516 + ldr r1, [r5, #0x6c] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r7, r0 + beq _02248516 + mov r0, #0xbc + str r0, [r4] + add r0, #0x74 + str r7, [r5, r0] + mov r6, #1 + b _0224887A +_022484B0: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248660 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02248516 + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _02248516 + ldr r1, _02248664 ; =0x0000216C + ldr r0, _02248668 ; =0x801FDA49 + ldr r2, [r5, r1] + tst r0, r2 + bne _02248516 + add r0, r1, #0 + sub r0, #0x30 + ldr r2, [r5, r0] + mov r0, #0x20 + tst r0, r2 + bne _02248516 + sub r1, #0x2c + ldr r1, [r5, r1] + mov r0, #0x10 + tst r0, r1 + bne _02248516 + ldr r1, [r5, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r2, r5, r0 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0 + bne _02248504 + add r0, #8 + ldr r0, [r2, r0] + cmp r0, #0 + beq _02248516 +_02248504: + ldr r0, _0224866C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248670 ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + bne _02248518 +_02248516: + b _0224887A +_02248518: + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _02248680 ; =0x00002D90 + add r2, r5, r2 + ldr r2, [r2, r0] + sub r1, #0xc1 + add r0, r2, #0 + mul r0, r1 + mov r1, #8 + bl MOD11_022476C0 + ldr r1, _02248684 ; =0x0000215C + mov r6, #1 + str r0, [r5, r1] + mov r0, #0x46 + ldr r1, [r5, #0x64] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0xbd + str r0, [r4] + b _0224887A +_02248546: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248660 ; =0x00002D8C + ldr r1, [r2, r0] + cmp r1, #0 + beq _02248650 + add r1, r0, #0 + add r1, #0x20 + ldr r1, [r2, r1] + cmp r1, #0 + bne _02248650 + ldr r2, _02248664 ; =0x0000216C + ldr r1, _02248668 ; =0x801FDA49 + ldr r3, [r5, r2] + tst r1, r3 + bne _02248650 + add r1, r2, #0 + sub r1, #0x30 + ldr r3, [r5, r1] + mov r1, #0x20 + tst r1, r3 + bne _02248650 + sub r2, #0x2c + ldr r2, [r5, r2] + mov r1, #0x10 + tst r1, r2 + bne _02248650 + ldr r2, [r5, #0x6c] + mov r1, #0x1c + mul r1, r2 + add r1, r5, r1 + lsr r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _0224859A + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02248650 +_0224859A: + ldr r0, _0224866C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248670 ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02248650 + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #3 + bge _02248650 + bl FUN_0201B9EC + mov r1, #3 + blx _s32_div_f + cmp r1, #0 + beq _022485D0 + cmp r1, #1 + beq _022485D6 + cmp r1, #2 + beq _022485DC +_022485D0: + mov r0, #0x16 + str r0, [r4] + b _022485E0 +_022485D6: + mov r0, #0x1f + str r0, [r4] + b _022485E0 +_022485DC: + mov r0, #0x12 + str r0, [r4] +_022485E0: + add r0, r5, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0x94 + str r1, [r0] + mov r0, #0x46 + ldr r1, [r5, #0x6c] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r6, #1 + b _0224887A +_022485FC: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248660 ; =0x00002D8C + ldr r1, [r2, r0] + cmp r1, #0 + beq _02248650 + add r1, r0, #0 + add r1, #0x20 + ldr r1, [r2, r1] + cmp r1, #0 + bne _02248650 + ldr r2, _02248664 ; =0x0000216C + ldr r1, _02248668 ; =0x801FDA49 + ldr r3, [r5, r2] + tst r1, r3 + bne _02248650 + add r1, r2, #0 + sub r1, #0x30 + ldr r3, [r5, r1] + mov r1, #0x20 + tst r1, r3 + bne _02248650 + sub r2, #0x2c + ldr r2, [r5, r2] + mov r1, #0x10 + tst r1, r2 + bne _02248650 + ldr r2, [r5, #0x6c] + mov r1, #0x1c + mul r1, r2 + add r1, r5, r1 + lsr r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02248652 + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02248652 +_02248650: + b _0224887A +_02248652: + ldr r0, _0224866C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248670 ; =0x000003E9 + b _02248688 + nop +_02248660: .word 0x00002D8C +_02248664: .word 0x0000216C +_02248668: .word 0x801FDA49 +_0224866C: .word 0x00003044 +_02248670: .word 0x000003E9 +_02248674: .word 0x00002160 +_02248678: .word 0x000003E2 +_0224867C: .word 0x000003E1 +_02248680: .word 0x00002D90 +_02248684: .word 0x0000215C +_02248688: + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02248770 + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #3 + bge _02248770 + add r0, r5, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0x94 + str r1, [r0] + mov r0, #0x46 + ldr r1, [r5, #0x6c] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0x16 + str r0, [r4] + mov r6, #1 + b _0224887A +_022486BE: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248880 ; =0x00002D8C + ldr r1, [r2, r0] + cmp r1, #0 + beq _02248770 + add r1, r0, #0 + add r1, #0x20 + ldr r1, [r2, r1] + cmp r1, #0 + bne _02248770 + ldr r2, _02248884 ; =0x0000216C + ldr r1, _02248888 ; =0x801FDA49 + ldr r3, [r5, r2] + tst r1, r3 + bne _02248770 + add r1, r2, #0 + sub r1, #0x30 + ldr r3, [r5, r1] + mov r1, #0x20 + tst r1, r3 + bne _02248770 + sub r2, #0x2c + ldr r2, [r5, r2] + mov r1, #0x10 + tst r1, r2 + bne _02248770 + ldr r2, [r5, #0x6c] + mov r1, #0x1c + mul r1, r2 + add r1, r5, r1 + lsr r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02248712 + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02248770 +_02248712: + ldr r0, _0224888C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248890 ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02248770 + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #3 + bge _02248770 + add r0, r5, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0x94 + str r1, [r0] + mov r0, #0x46 + ldr r1, [r5, #0x6c] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0x19 + str r0, [r4] + mov r6, #1 + b _0224887A +_02248752: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02248880 ; =0x00002D8C + ldr r1, [r2, r0] + cmp r1, #0 + beq _02248770 + add r1, r0, #0 + add r1, #0x24 + ldr r2, [r2, r1] + mov r1, #0xf + lsl r1, r1, #0x10 + tst r1, r2 + beq _02248772 +_02248770: + b _0224887A +_02248772: + ldr r2, _02248884 ; =0x0000216C + ldr r1, _02248888 ; =0x801FDA49 + ldr r3, [r5, r2] + tst r1, r3 + bne _0224887A + add r1, r2, #0 + sub r1, #0x30 + ldr r3, [r5, r1] + mov r1, #0x20 + tst r1, r3 + bne _0224887A + sub r2, #0x2c + ldr r2, [r5, r2] + mov r1, #0x10 + tst r1, r2 + bne _0224887A + ldr r2, [r5, #0x6c] + mov r1, #0x1c + mul r1, r2 + add r1, r5, r1 + lsr r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _022487AC + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224887A +_022487AC: + ldr r0, _0224888C ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02248890 ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _0224887A + mov r0, #0xc0 + mul r0, r2 + add r1, r5, r0 + ldr r0, _02248880 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224887A + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #3 + bge _0224887A + add r0, r5, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r5, #0x64] + add r0, #0x94 + str r1, [r0] + mov r0, #0x46 + ldr r1, [r5, #0x6c] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0x6a + str r0, [r4] + mov r6, #1 + b _0224887A +_022487FA: + ldr r1, [r5, #0x6c] + ldr r0, [r5, #0x74] + cmp r1, r0 + bne _0224887A + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _0224887A + mov r0, #6 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #8 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224887A + mov r2, #0x85 + lsl r2, r2, #6 + ldr r1, [r5, r2] + mov r0, #0x10 + tst r0, r1 + bne _0224887A + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r5, r0 + ldr r0, _02248880 ; =0x00002D8C + ldr r3, [r1, r0] + cmp r3, #0 + beq _0224887A + add r2, #0x2c + ldr r3, [r5, r2] + ldr r2, _02248888 ; =0x801FDA49 + tst r2, r3 + bne _0224887A + ldr r2, _0224888C ; =0x00003044 + ldr r2, [r5, r2] + lsl r2, r2, #4 + add r3, r5, r2 + ldr r2, _02248890 ; =0x000003E9 + ldrb r3, [r3, r2] + mov r2, #1 + tst r3, r2 + beq _0224887A + add r0, r0, #4 + ldr r1, [r1, r0] + sub r0, r2, #2 + mul r0, r1 + mov r1, #4 + bl MOD11_022476C0 + ldr r1, _02248894 ; =0x0000215C + mov r6, #1 + str r0, [r5, r1] + mov r0, #0x46 + ldr r1, [r5, #0x64] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0xc1 + str r0, [r4] +_0224887A: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02248880: .word 0x00002D8C +_02248884: .word 0x0000216C +_02248888: .word 0x801FDA49 +_0224888C: .word 0x00003044 +_02248890: .word 0x000003E9 +_02248894: .word 0x0000215C + + thumb_func_start MOD11_02248898 +MOD11_02248898: ; 0x02248898 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r2, #0 + add r0, r4, #0 + add r1, r5, #0 + add r7, r3, #0 + mov r6, #0 + bl MOD11_02246D1C + cmp r0, #0x28 + bgt _022488DE + bge _02248978 + cmp r0, #7 + bgt _022488B8 + beq _02248926 + b _022489D0 +_022488B8: + add r1, r0, #0 + sub r1, #0xc + cmp r1, #8 + bhi _022488E8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022488CC: ; jump table + .short _02248994 - _022488CC - 2 ; case 0 + .short _022489D0 - _022488CC - 2 ; case 1 + .short _022489D0 - _022488CC - 2 ; case 2 + .short _02248940 - _022488CC - 2 ; case 3 + .short _022489D0 - _022488CC - 2 ; case 4 + .short _022488F0 - _022488CC - 2 ; case 5 + .short _022489D0 - _022488CC - 2 ; case 6 + .short _022489D0 - _022488CC - 2 ; case 7 + .short _0224890A - _022488CC - 2 ; case 8 +_022488DE: + cmp r0, #0x48 + bgt _022488EA + bge _02248940 + cmp r0, #0x29 + beq _0224895C +_022488E8: + b _022489D0 +_022488EA: + cmp r0, #0x54 + beq _022489B2 + b _022489D0 +_022488F0: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02248A04 ; =0x00002DAC + ldr r2, [r2, r1] + ldr r1, _02248A08 ; =0x00000F88 + tst r1, r2 + beq _022489D0 + mov r6, #1 + add r0, #0x70 + str r6, [r4, r0] + b _022489D0 +_0224890A: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02248A0C ; =0x00002DB0 + ldr r2, [r2, r1] + mov r1, #7 + tst r1, r2 + beq _022489D0 + mov r1, #5 + add r0, #0x70 + str r1, [r4, r0] + mov r6, #1 + b _022489D0 +_02248926: + mov r0, #0xc0 + mul r0, r5 + add r1, r4, r0 + ldr r0, _02248A04 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x40 + tst r1, r0 + beq _022489D0 + mov r1, #3 + add r0, #0xf0 + str r1, [r4, r0] + mov r6, #1 + b _022489D0 +_02248940: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02248A04 ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #7 + tst r1, r2 + beq _022489D0 + mov r1, #0 + add r0, #0x70 + str r1, [r4, r0] + mov r6, #1 + b _022489D0 +_0224895C: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02248A04 ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #0x10 + tst r1, r2 + beq _022489D0 + mov r1, #2 + add r0, #0x70 + str r1, [r4, r0] + mov r6, #1 + b _022489D0 +_02248978: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02248A04 ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #0x20 + tst r1, r2 + beq _022489D0 + mov r1, #4 + add r0, #0x70 + str r1, [r4, r0] + mov r6, #1 + b _022489D0 +_02248994: + mov r0, #0xc0 + add r1, r5, #0 + mul r1, r0 + add r2, r4, r1 + ldr r1, _02248A0C ; =0x00002DB0 + ldr r2, [r2, r1] + mov r1, #0xf + lsl r1, r1, #0x10 + tst r1, r2 + beq _022489D0 + mov r1, #6 + add r0, #0x70 + str r1, [r4, r0] + mov r6, #1 + b _022489D0 +_022489B2: + mov r0, #0xc0 + add r3, r5, #0 + mul r3, r0 + ldr r0, _02248A10 ; =0x00002DB8 + add r1, r4, r3 + ldrh r1, [r1, r0] + cmp r1, #0 + beq _022489D0 + add r0, #0x14 + add r2, r4, r0 + mov r0, #1 + ldr r1, [r2, r3] + lsl r0, r0, #0x16 + orr r0, r1 + str r0, [r2, r3] +_022489D0: + cmp r6, #1 + bne _022489FE + mov r0, #0x46 + lsl r0, r0, #2 + str r5, [r4, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_02246D1C + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r4, r1] + cmp r7, #0 + bne _022489FE + add r0, r4, #0 + mov r1, #1 + mov r2, #0xdd + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_022489FE: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02248A04: .word 0x00002DAC +_02248A08: .word 0x00000F88 +_02248A0C: .word 0x00002DB0 +_02248A10: .word 0x00002DB8 + + thumb_func_start MOD11_02248A14 +MOD11_02248A14: ; 0x02248A14 + mov r0, #0 + cmp r1, #0x28 + bgt _02248A34 + bge _02248A6A + cmp r1, #7 + bgt _02248A24 + beq _02248A4C + bx lr +_02248A24: + cmp r1, #0x11 + bgt _02248A72 + cmp r1, #0xf + blt _02248A72 + beq _02248A56 + cmp r1, #0x11 + beq _02248A42 + bx lr +_02248A34: + cmp r1, #0x29 + bgt _02248A3C + beq _02248A60 + bx lr +_02248A3C: + cmp r1, #0x48 + beq _02248A56 + bx lr +_02248A42: + ldr r1, _02248A74 ; =0x00000F88 + tst r1, r2 + beq _02248A72 + mov r0, #1 + bx lr +_02248A4C: + mov r1, #0x40 + tst r1, r2 + beq _02248A72 + mov r0, #1 + bx lr +_02248A56: + mov r1, #7 + tst r1, r2 + beq _02248A72 + mov r0, #1 + bx lr +_02248A60: + mov r1, #0x10 + tst r1, r2 + beq _02248A72 + mov r0, #1 + bx lr +_02248A6A: + mov r1, #0x20 + tst r1, r2 + beq _02248A72 + mov r0, #1 +_02248A72: + bx lr + .align 2, 0 +_02248A74: .word 0x00000F88 + + thumb_func_start MOD11_02248A78 +MOD11_02248A78: ; 0x02248A78 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4, #0x6c] + str r0, [sp] + mov r7, #0 + add r0, r4, #0 + add r6, r2, #0 + add r5, r7, #0 + bl MOD11_02246D1C + cmp r0, #0x1c + bne _02248ABA + ldr r0, [r4, #0x6c] + cmp r0, #0xff + beq _02248ABA + add r1, r4, #0 + add r1, #0x94 + ldr r1, [r1] + cmp r0, r1 + bne _02248ABA + ldr r1, _02248BFC ; =0x0000213C + ldr r2, [r4, r1] + mov r1, #0x80 + tst r2, r1 + beq _02248ABA + add r1, #0x98 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, [r4, #0x64] + add r0, #0x94 + str r1, [r0] + mov r7, #1 + b _02248AEA +_02248ABA: + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x1c + bne _02248AEA + add r1, r4, #0 + add r1, #0x94 + ldr r0, [r4, #0x64] + ldr r1, [r1] + cmp r0, r1 + bne _02248AEA + ldr r1, _02248BFC ; =0x0000213C + ldr r2, [r4, r1] + mov r1, #0x80 + tst r2, r1 + beq _02248AEA + add r1, #0x98 + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, [r4, #0x6c] + add r0, #0x94 + str r1, [r0] + mov r7, #1 +_02248AEA: + cmp r7, #1 + bne _02248B3A + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02248C00 ; =0x00002DAC + ldr r0, [r1, r0] + ldr r1, _02248C04 ; =0x00000F88 + tst r1, r0 + beq _02248B08 + mov r5, #0x16 + b _02248B1A +_02248B08: + mov r1, #0x10 + tst r1, r0 + beq _02248B12 + mov r5, #0x19 + b _02248B1A +_02248B12: + mov r1, #0x40 + tst r0, r1 + beq _02248B1A + mov r5, #0x1f +_02248B1A: + cmp r5, #0 + beq _02248B3A + add r0, r4, #0 + mov r1, #3 + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + mov r1, #1 + add r2, r5, #0 + bl MOD11_022431DC + str r6, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} +_02248B3A: + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_0224AE78 + add r5, r0, #0 + cmp r5, #1 + bne _02248B5C + ldr r2, _02248C08 ; =0x00000106 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022431DC + str r6, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02248B5C: + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_02249D90 + cmp r0, #0x6b + bne _02248B9C + ldr r0, [r4, #0x6c] + cmp r0, #0xff + beq _02248B9C + add r1, r4, #0 + add r1, #0x94 + ldr r1, [r1] + cmp r0, r1 + bne _02248B9C + mov r1, #0x1c + add r2, r0, #0 + mul r2, r1 + add r3, r4, r2 + mov r2, #0xba + lsl r2, r2, #2 + ldr r3, [r3, r2] + mov r2, #4 + tst r2, r3 + beq _02248B9C + add r1, #0xfc + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, [r4, #0x64] + add r0, #0x94 + str r1, [r0] + mov r5, #1 + b _02248BD6 +_02248B9C: + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02249D90 + cmp r0, #0x6b + bne _02248BD6 + add r1, r4, #0 + add r1, #0x94 + ldr r0, [r4, #0x64] + ldr r1, [r1] + cmp r0, r1 + bne _02248BD6 + mov r1, #0x1c + add r2, r0, #0 + mul r2, r1 + add r3, r4, r2 + mov r2, #0xba + lsl r2, r2, #2 + ldr r3, [r3, r2] + mov r2, #4 + tst r2, r3 + beq _02248BD6 + add r1, #0xfc + str r0, [r4, r1] + add r0, r4, #0 + ldr r1, [r4, #0x6c] + add r0, #0x94 + str r1, [r0] + mov r5, #1 +_02248BD6: + cmp r5, #1 + bne _02248BF6 + add r0, r4, #0 + mov r1, #5 + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + mov r1, #1 + mov r2, #0x6a + bl MOD11_022431DC + str r6, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02248BF6: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02248BFC: .word 0x0000213C +_02248C00: .word 0x00002DAC +_02248C04: .word 0x00000F88 +_02248C08: .word 0x00000106 + + thumb_func_start MOD11_02248C0C +MOD11_02248C0C: ; 0x02248C0C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + add r4, r1, #0 + mov r0, #0 + str r0, [sp, #0xc] + str r2, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD11_02249D90 + str r0, [sp, #0x10] + ldr r1, [sp, #4] + add r0, r4, #0 + mov r2, #0 + bl MOD11_02249DA4 + add r6, r0, #0 + ldr r0, [sp, #4] + mov r3, #0xc0 + add r5, r0, #0 + ldr r0, _02248F50 ; =0x00002D8C + mul r5, r3 + add r1, r4, r0 + ldr r2, [r1, r5] + str r1, [sp, #0x14] + cmp r2, #0 + bne _02248C46 + b _02249274 +_02248C46: + ldr r1, [sp, #0x10] + cmp r1, #0x35 + bhi _02248CE8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02248C58: ; jump table + .short _02249246 - _02248C58 - 2 ; case 0 + .short _02248CC4 - _02248C58 - 2 ; case 1 + .short _02249246 - _02248C58 - 2 ; case 2 + .short _02249246 - _02248C58 - 2 ; case 3 + .short _02248D00 - _02248C58 - 2 ; case 4 + .short _02248D14 - _02248C58 - 2 ; case 5 + .short _02248D28 - _02248C58 - 2 ; case 6 + .short _02248D3C - _02248C58 - 2 ; case 7 + .short _02248D50 - _02248C58 - 2 ; case 8 + .short _02248D64 - _02248C58 - 2 ; case 9 + .short _02248DC6 - _02248C58 - 2 ; case 10 + .short _02248DDA - _02248C58 - 2 ; case 11 + .short _02248CDC - _02248C58 - 2 ; case 12 + .short _02248E3A - _02248C58 - 2 ; case 13 + .short _02248E76 - _02248C58 - 2 ; case 14 + .short _02248EB2 - _02248C58 - 2 ; case 15 + .short _02248EEE - _02248C58 - 2 ; case 16 + .short _02248F2C - _02248C58 - 2 ; case 17 + .short _02249246 - _02248C58 - 2 ; case 18 + .short _02249246 - _02248C58 - 2 ; case 19 + .short _02249246 - _02248C58 - 2 ; case 20 + .short _02249246 - _02248C58 - 2 ; case 21 + .short _02249246 - _02248C58 - 2 ; case 22 + .short _02249246 - _02248C58 - 2 ; case 23 + .short _02249246 - _02248C58 - 2 ; case 24 + .short _02249246 - _02248C58 - 2 ; case 25 + .short _02249246 - _02248C58 - 2 ; case 26 + .short _02249246 - _02248C58 - 2 ; case 27 + .short _02249246 - _02248C58 - 2 ; case 28 + .short _02249246 - _02248C58 - 2 ; case 29 + .short _02249246 - _02248C58 - 2 ; case 30 + .short _02249246 - _02248C58 - 2 ; case 31 + .short _02249246 - _02248C58 - 2 ; case 32 + .short _02249246 - _02248C58 - 2 ; case 33 + .short _02249246 - _02248C58 - 2 ; case 34 + .short _02248F86 - _02248C58 - 2 ; case 35 + .short _02248FCA - _02248C58 - 2 ; case 36 + .short _02249012 - _02248C58 - 2 ; case 37 + .short _02249058 - _02248C58 - 2 ; case 38 + .short _0224909E - _02248C58 - 2 ; case 39 + .short _022490E4 - _02248C58 - 2 ; case 40 + .short _02249128 - _02248C58 - 2 ; case 41 + .short _02249246 - _02248C58 - 2 ; case 42 + .short _022491D8 - _02248C58 - 2 ; case 43 + .short _0224920C - _02248C58 - 2 ; case 44 + .short _02249246 - _02248C58 - 2 ; case 45 + .short _02249246 - _02248C58 - 2 ; case 46 + .short _02249246 - _02248C58 - 2 ; case 47 + .short _02249194 - _02248C58 - 2 ; case 48 + .short _02249246 - _02248C58 - 2 ; case 49 + .short _02249246 - _02248C58 - 2 ; case 50 + .short _02249246 - _02248C58 - 2 ; case 51 + .short _02249246 - _02248C58 - 2 ; case 52 + .short _022491BC - _02248C58 - 2 ; case 53 +_02248CC4: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r0, r0, #1 + cmp r2, r0 + bhi _02248CE8 + ldr r0, _02248F54 ; =0x0000215C + mov r7, #0xc6 + str r6, [r4, r0] + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248CDC: + add r1, r4, r5 + add r0, r0, #4 + ldr r1, [r1, r0] + lsr r0, r1, #1 + cmp r2, r0 + bls _02248CEA +_02248CE8: + b _02249246 +_02248CEA: + add r0, r6, #0 + mul r0, r1 + mov r1, #0x64 + bl MOD11_022476C0 + ldr r1, _02248F54 ; =0x0000215C + mov r7, #0xc6 + str r0, [r4, r1] + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248D00: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #0x40 + tst r0, r1 + beq _02248DF2 + mov r0, #1 + mov r7, #0xc7 + str r0, [sp, #0xc] + b _02249246 +_02248D14: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _02248DF2 + mov r0, #1 + mov r7, #0xc8 + str r0, [sp, #0xc] + b _02249246 +_02248D28: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + ldr r0, _02248F58 ; =0x00000F88 + tst r0, r1 + beq _02248DF2 + mov r0, #1 + mov r7, #0xc9 + str r0, [sp, #0xc] + b _02249246 +_02248D3C: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #0x10 + tst r0, r1 + beq _02248DF2 + mov r0, #1 + mov r7, #0xca + str r0, [sp, #0xc] + b _02249246 +_02248D50: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _02248DF2 + mov r0, #1 + mov r7, #0xcb + str r0, [sp, #0xc] + b _02249246 +_02248D64: + mov r0, #0 + str r0, [sp, #8] + add r0, r4, r5 + ldr r3, _02248F5C ; =0x00002D4C + add r1, r0, #0 +_02248D6E: + ldrh r2, [r0, r3] + cmp r2, #0 + beq _02248D7C + ldr r2, _02248F60 ; =0x00002D6C + ldrb r2, [r1, r2] + cmp r2, #0 + beq _02248D8A +_02248D7C: + ldr r2, [sp, #8] + add r0, r0, #2 + add r2, r2, #1 + add r1, r1, #1 + str r2, [sp, #8] + cmp r2, #4 + blt _02248D6E +_02248D8A: + ldr r0, [sp, #8] + cmp r0, #4 + beq _02248DF2 + mov r0, #0xb5 + lsl r0, r0, #6 + ldr r1, [sp, #8] + add r0, r4, r0 + add r0, r0, r5 + add r1, #0x1f + add r2, r6, #0 + bl MOD11_02243DC8 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r4, #0 + bl MOD11_02245190 + ldr r0, [sp, #8] + add r1, r4, r5 + lsl r0, r0, #1 + add r1, r1, r0 + ldr r0, _02248F5C ; =0x00002D4C + mov r7, #0xcc + ldrh r1, [r1, r0] + mov r0, #0x49 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248DC6: + add r1, r4, r5 + add r0, #0x24 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _02248DF2 + mov r0, #1 + mov r7, #0xcd + str r0, [sp, #0xc] + b _02249246 +_02248DDA: + add r2, r0, #0 + add r1, r4, r5 + add r2, #0x20 + ldr r2, [r1, r2] + lsl r3, r2, #0x18 + lsr r3, r3, #0x18 + bne _02248DF4 + add r0, #0x24 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + bne _02248DF4 +_02248DF2: + b _02249246 +_02248DF4: + mov r0, #0x40 + tst r0, r2 + beq _02248DFC + mov r7, #0xc7 +_02248DFC: + mov r0, #7 + tst r0, r2 + beq _02248E04 + mov r7, #0xc8 +_02248E04: + ldr r0, _02248F58 ; =0x00000F88 + tst r0, r2 + beq _02248E0C + mov r7, #0xc9 +_02248E0C: + mov r0, #0x10 + tst r0, r2 + beq _02248E14 + mov r7, #0xca +_02248E14: + mov r0, #0x20 + tst r0, r2 + beq _02248E1C + mov r7, #0xcb +_02248E1C: + ldr r0, _02248F64 ; =0x00002DB0 + add r1, r4, r5 + ldr r1, [r1, r0] + mov r0, #7 + and r0, r1 + beq _02248E2A + mov r7, #0xcd +_02248E2A: + cmp r3, #0 + beq _02248E34 + cmp r0, #0 + beq _02248E34 + mov r7, #0xce +_02248E34: + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248E3A: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _02248EFA + add r1, r6, #0 + bl MOD11_022476C0 + ldr r1, _02248F54 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02248F68 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02248E6E + mov r7, #0xcf + b _02248E70 +_02248E6E: + mov r7, #0xc6 +_02248E70: + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248E76: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _02248EFA + add r1, r6, #0 + bl MOD11_022476C0 + ldr r1, _02248F54 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02248F68 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02248EAA + mov r7, #0xcf + b _02248EAC +_02248EAA: + mov r7, #0xc6 +_02248EAC: + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248EB2: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _02248EFA + add r1, r6, #0 + bl MOD11_022476C0 + ldr r1, _02248F54 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02248F68 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02248EE6 + mov r7, #0xcf + b _02248EE8 +_02248EE6: + mov r7, #0xc6 +_02248EE8: + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248EEE: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bls _02248EFC +_02248EFA: + b _02249246 +_02248EFC: + add r1, r6, #0 + bl MOD11_022476C0 + ldr r1, _02248F54 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02248F68 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02248F24 + mov r7, #0xcf + b _02248F26 +_02248F24: + mov r7, #0xc6 +_02248F26: + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248F2C: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _02249000 + add r1, r6, #0 + bl MOD11_022476C0 + ldr r1, _02248F54 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02248F68 ; =0x00002DA8 + b _02248F6C + .align 2, 0 +_02248F50: .word 0x00002D8C +_02248F54: .word 0x0000215C +_02248F58: .word 0x00000F88 +_02248F5C: .word 0x00002D4C +_02248F60: .word 0x00002D6C +_02248F64: .word 0x00002DB0 +_02248F68: .word 0x00002DA8 +_02248F6C: + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02248F7E + mov r7, #0xcf + b _02248F80 +_02248F7E: + mov r7, #0xc6 +_02248F80: + mov r0, #1 + str r0, [sp, #0xc] + b _02249246 +_02248F86: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _02248F98 + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_02248F98: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249000 + ldr r0, _02249280 ; =0x00002D59 + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _02249000 + mov r1, #0x13 + mov r0, #1 + lsl r1, r1, #4 + str r0, [sp, #0xc] + str r0, [r4, r1] + mov r7, #0xd0 + b _02249246 +_02248FCA: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _02248FDC + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_02248FDC: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249000 + ldr r0, _02249284 ; =0x00002D5A + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + blt _02249002 +_02249000: + b _02249246 +_02249002: + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #1 + mov r7, #0xd0 + str r0, [sp, #0xc] + b _02249246 +_02249012: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _02249024 + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_02249024: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _0224911E + ldr r0, _02249288 ; =0x00002D5B + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _0224911E + mov r0, #0x13 + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #1 + mov r7, #0xd0 + str r0, [sp, #0xc] + b _02249246 +_02249058: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _0224906A + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_0224906A: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _0224911E + ldr r0, _0224928C ; =0x00002D5C + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _0224911E + mov r0, #0x13 + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #1 + mov r7, #0xd0 + str r0, [sp, #0xc] + b _02249246 +_0224909E: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _022490B0 + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_022490B0: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _0224911E + ldr r0, _02249290 ; =0x00002D5D + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _0224911E + mov r0, #0x13 + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #1 + mov r7, #0xd0 + str r0, [sp, #0xc] + b _02249246 +_022490E4: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _022490F6 + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_022490F6: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _0224911E + ldr r0, _02249294 ; =0x00002DB0 + add r1, r4, r5 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x14 + tst r0, r1 + beq _02249120 +_0224911E: + b _02249246 +_02249120: + mov r0, #1 + mov r7, #0xd1 + str r0, [sp, #0xc] + b _02249246 +_02249128: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _0224913A + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_0224913A: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249246 + ldr r0, _02249280 ; =0x00002D59 + mov r2, #0 + add r3, r4, r5 +_0224915A: + ldrsb r1, [r3, r0] + cmp r1, #0xc + blt _02249168 + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #5 + blt _0224915A +_02249168: + cmp r2, #5 + beq _02249246 + ldr r6, _02249280 ; =0x00002D59 + add r5, r4, r5 + mov r7, #5 +_02249172: + bl FUN_0201B9EC + add r1, r7, #0 + blx _s32_div_f + add r0, r5, r1 + ldrsb r0, [r0, r6] + cmp r0, #0xc + beq _02249172 + mov r0, #0x13 + add r1, r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #1 + mov r7, #0xd2 + str r0, [sp, #0xc] + b _02249246 +_02249194: + ldr r6, _02249298 ; =0x00002D58 + add r1, r4, r5 + mov r0, #0 + mov r5, #6 + add r3, r6, #0 +_0224919E: + ldrsb r2, [r1, r3] + cmp r2, #6 + bge _022491AA + mov r2, #1 + strb r5, [r1, r6] + str r2, [sp, #0xc] +_022491AA: + add r0, r0, #1 + add r1, r1, #1 + cmp r0, #8 + blt _0224919E + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _02249246 + mov r7, #0xd3 + b _02249246 +_022491BC: + add r1, r4, r5 + add r0, #0x24 + ldr r1, [r1, r0] + mov r0, #0xf + lsl r0, r0, #0x10 + tst r0, r1 + beq _02249246 + mov r0, #6 + add r3, #0x70 + str r0, [r4, r3] + mov r0, #1 + mov r7, #0xd4 + str r0, [sp, #0xc] + b _02249246 +_022491D8: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _022491EA + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_022491EA: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249246 + mov r0, #1 + ldr r7, _0224929C ; =0x00000109 + str r0, [sp, #0xc] + b _02249246 +_0224920C: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _0224921E + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r6, r0, #1 +_0224921E: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224927C ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r6, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249246 + ldr r0, _022492A0 ; =0x00002DCC + add r2, r4, r0 + mov r0, #1 + ldr r1, [r2, r5] + lsl r0, r0, #0x1c + orr r0, r1 + str r0, [r2, r5] +_02249246: + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _02249274 + mov r1, #0x46 + ldr r0, [sp, #4] + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02249B4C + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + add r2, r7, #0 + bl MOD11_022431DC + ldr r0, [r4, #8] + str r0, [r4, #0xc] + mov r0, #0x15 + str r0, [r4, #8] +_02249274: + ldr r0, [sp, #0xc] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224927C: .word 0x00002D90 +_02249280: .word 0x00002D59 +_02249284: .word 0x00002D5A +_02249288: .word 0x00002D5B +_0224928C: .word 0x00002D5C +_02249290: .word 0x00002D5D +_02249294: .word 0x00002DB0 +_02249298: .word 0x00002D58 +_0224929C: .word 0x00000109 +_022492A0: .word 0x00002DCC + + thumb_func_start MOD11_022492A4 +MOD11_022492A4: ; 0x022492A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + mov r7, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02249DA4 + mov r0, #0xc0 + add r4, r6, #0 + mul r4, r0 + ldr r0, _02249394 ; =0x00002D8C + add r1, r5, r0 + str r1, [sp, #8] + ldr r1, [r1, r4] + cmp r1, #0 + beq _0224938E + ldr r2, [sp, #4] + cmp r2, #0x44 + beq _022492E2 + add r0, r2, #0 + cmp r0, #0x6c + beq _022492FE + b _02249364 +_022492E2: + add r2, r5, r4 + add r0, r0, #4 + ldr r0, [r2, r0] + cmp r1, r0 + bhs _02249364 + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _02249398 ; =0x0000215C + mov r7, #1 + str r0, [r5, r1] + mov r0, #0xd5 + str r0, [sp] + b _02249364 +_022492FE: + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + add r3, r7, #0 + bl MOD11_02243420 + cmp r0, #3 + beq _0224931E + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + add r3, r7, #0 + bl MOD11_02243420 + cmp r0, #3 + bne _0224933E +_0224931E: + ldr r0, _0224939C ; =0x00002D90 + add r1, r5, r4 + ldr r0, [r1, r0] + ldr r1, [sp, #8] + ldr r1, [r1, r4] + cmp r1, r0 + bhs _02249364 + mov r1, #0x10 + bl MOD11_022476C0 + ldr r1, _02249398 ; =0x0000215C + mov r7, #1 + str r0, [r5, r1] + mov r0, #0xd5 + str r0, [sp] + b _02249364 +_0224933E: + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _02249364 + ldr r0, _0224939C ; =0x00002D90 + add r1, r5, r4 + ldr r1, [r1, r0] + sub r0, r7, #1 + mul r0, r1 + mov r1, #8 + bl MOD11_022476C0 + ldr r1, _02249398 ; =0x0000215C + mov r7, #1 + str r0, [r5, r1] + mov r0, #0xd7 + str r0, [sp] +_02249364: + cmp r7, #1 + bne _0224938E + mov r0, #0x46 + lsl r0, r0, #2 + str r6, [r5, r0] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249B4C + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r2, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r5, #8] + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] +_0224938E: + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02249394: .word 0x00002D8C +_02249398: .word 0x0000215C +_0224939C: .word 0x00002D90 + + thumb_func_start MOD11_022493A0 +MOD11_022493A0: ; 0x022493A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + add r4, r1, #0 + mov r0, #0 + str r0, [sp, #0xc] + str r2, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + add r6, r3, #0 + bl MOD11_02249D90 + str r0, [sp, #0x10] + ldr r1, [sp, #4] + add r0, r4, #0 + mov r2, #0 + bl MOD11_02249DA4 + add r7, r0, #0 + ldr r0, [sp, #4] + mov r3, #0xc0 + add r5, r0, #0 + ldr r0, _022496E4 ; =0x00002D8C + mul r5, r3 + add r1, r4, r0 + ldr r2, [r1, r5] + str r1, [sp, #0x14] + cmp r2, #0 + bne _022493DC + b _02249A50 +_022493DC: + ldr r1, [sp, #0x10] + cmp r1, #0x35 + bhi _02249480 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022493EE: ; jump table + .short _02249A3C - _022493EE - 2 ; case 0 + .short _0224945A - _022493EE - 2 ; case 1 + .short _02249A3C - _022493EE - 2 ; case 2 + .short _02249A3C - _022493EE - 2 ; case 3 + .short _0224949A - _022493EE - 2 ; case 4 + .short _022494B0 - _022493EE - 2 ; case 5 + .short _022494C6 - _022493EE - 2 ; case 6 + .short _022494DC - _022493EE - 2 ; case 7 + .short _022494F2 - _022493EE - 2 ; case 8 + .short _02249508 - _022493EE - 2 ; case 9 + .short _0224956C - _022493EE - 2 ; case 10 + .short _02249582 - _022493EE - 2 ; case 11 + .short _02249474 - _022493EE - 2 ; case 12 + .short _022496BC - _022493EE - 2 ; case 13 + .short _0224972C - _022493EE - 2 ; case 14 + .short _0224976A - _022493EE - 2 ; case 15 + .short _022497A8 - _022493EE - 2 ; case 16 + .short _022497E6 - _022493EE - 2 ; case 17 + .short _02249A3C - _022493EE - 2 ; case 18 + .short _02249A3C - _022493EE - 2 ; case 19 + .short _02249A3C - _022493EE - 2 ; case 20 + .short _02249A3C - _022493EE - 2 ; case 21 + .short _02249A3C - _022493EE - 2 ; case 22 + .short _02249A3C - _022493EE - 2 ; case 23 + .short _02249A3C - _022493EE - 2 ; case 24 + .short _02249A3C - _022493EE - 2 ; case 25 + .short _02249A3C - _022493EE - 2 ; case 26 + .short _02249A3C - _022493EE - 2 ; case 27 + .short _02249A3C - _022493EE - 2 ; case 28 + .short _02249A3C - _022493EE - 2 ; case 29 + .short _02249A3C - _022493EE - 2 ; case 30 + .short _02249A3C - _022493EE - 2 ; case 31 + .short _02249A3C - _022493EE - 2 ; case 32 + .short _02249A3C - _022493EE - 2 ; case 33 + .short _02249A3C - _022493EE - 2 ; case 34 + .short _02249826 - _022493EE - 2 ; case 35 + .short _0224986C - _022493EE - 2 ; case 36 + .short _022498B4 - _022493EE - 2 ; case 37 + .short _022498FC - _022493EE - 2 ; case 38 + .short _02249946 - _022493EE - 2 ; case 39 + .short _0224998E - _022493EE - 2 ; case 40 + .short _022499D2 - _022493EE - 2 ; case 41 + .short _02249A3C - _022493EE - 2 ; case 42 + .short _0224964A - _022493EE - 2 ; case 43 + .short _02249680 - _022493EE - 2 ; case 44 + .short _02249A3C - _022493EE - 2 ; case 45 + .short _02249A3C - _022493EE - 2 ; case 46 + .short _02249A3C - _022493EE - 2 ; case 47 + .short _02249602 - _022493EE - 2 ; case 48 + .short _02249A3C - _022493EE - 2 ; case 49 + .short _02249A3C - _022493EE - 2 ; case 50 + .short _02249A3C - _022493EE - 2 ; case 51 + .short _02249A3C - _022493EE - 2 ; case 52 + .short _0224962C - _022493EE - 2 ; case 53 +_0224945A: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r0, r0, #1 + cmp r2, r0 + bhi _02249480 + ldr r0, _022496E8 ; =0x0000215C + str r7, [r4, r0] + mov r0, #0xc6 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249474: + add r1, r4, r5 + add r0, r0, #4 + ldr r1, [r1, r0] + lsr r0, r1, #1 + cmp r2, r0 + bls _02249482 +_02249480: + b _02249A3C +_02249482: + add r0, r7, #0 + mul r0, r1 + mov r1, #0x64 + bl MOD11_022476C0 + ldr r1, _022496E8 ; =0x0000215C + str r0, [r4, r1] + mov r0, #0xc6 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_0224949A: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #0x40 + tst r0, r1 + beq _0224959C + mov r0, #0xc7 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022494B0: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0224959C + mov r0, #0xc8 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022494C6: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + ldr r0, _022496EC ; =0x00000F88 + tst r0, r1 + beq _0224959C + mov r0, #0xc9 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022494DC: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #0x10 + tst r0, r1 + beq _0224959C + mov r0, #0xca + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022494F2: + add r1, r4, r5 + add r0, #0x20 + ldr r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _0224959C + mov r0, #0xcb + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249508: + mov r0, #0 + str r0, [sp, #8] + add r0, r4, r5 + ldr r3, _022496F0 ; =0x00002D4C + add r1, r0, #0 +_02249512: + ldrh r2, [r0, r3] + cmp r2, #0 + beq _02249520 + ldr r2, _022496F4 ; =0x00002D6C + ldrb r2, [r1, r2] + cmp r2, #0 + beq _0224952E +_02249520: + ldr r2, [sp, #8] + add r0, r0, #2 + add r2, r2, #1 + add r1, r1, #1 + str r2, [sp, #8] + cmp r2, #4 + blt _02249512 +_0224952E: + ldr r0, [sp, #8] + cmp r0, #4 + beq _0224959C + mov r0, #0xb5 + lsl r0, r0, #6 + ldr r1, [sp, #8] + add r0, r4, r0 + add r0, r0, r5 + add r1, #0x1f + add r2, r7, #0 + bl MOD11_02243DC8 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, r4, #0 + bl MOD11_02245190 + ldr r0, [sp, #8] + add r1, r4, r5 + lsl r0, r0, #1 + add r1, r1, r0 + ldr r0, _022496F0 ; =0x00002D4C + ldrh r1, [r1, r0] + mov r0, #0x49 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0xcc + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_0224956C: + add r1, r4, r5 + add r0, #0x24 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0224959C + mov r0, #0xcd + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249582: + add r1, r0, #0 + add r1, #0x20 + add r1, r4, r1 + ldr r2, [r1, r5] + lsl r3, r2, #0x18 + lsr r3, r3, #0x18 + bne _0224959E + add r3, r4, r5 + add r0, #0x24 + ldr r3, [r3, r0] + mov r0, #7 + tst r0, r3 + bne _0224959E +_0224959C: + b _02249A3C +_0224959E: + mov r0, #0x40 + tst r0, r2 + beq _022495A8 + mov r0, #0xc7 + str r0, [r6] +_022495A8: + ldr r2, [r1, r5] + mov r0, #7 + tst r0, r2 + beq _022495B4 + mov r0, #0xc8 + str r0, [r6] +_022495B4: + ldr r2, [r1, r5] + ldr r0, _022496EC ; =0x00000F88 + tst r0, r2 + beq _022495C0 + mov r0, #0xc9 + str r0, [r6] +_022495C0: + ldr r2, [r1, r5] + mov r0, #0x10 + tst r0, r2 + beq _022495CC + mov r0, #0xca + str r0, [r6] +_022495CC: + ldr r2, [r1, r5] + mov r0, #0x20 + tst r0, r2 + beq _022495D8 + mov r0, #0xcb + str r0, [r6] +_022495D8: + ldr r0, _022496F8 ; =0x00002DB0 + mov r2, #7 + add r0, r4, r0 + ldr r3, [r0, r5] + tst r2, r3 + beq _022495E8 + mov r2, #0xcd + str r2, [r6] +_022495E8: + ldr r1, [r1, r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + beq _022495FC + ldr r1, [r0, r5] + mov r0, #7 + tst r0, r1 + beq _022495FC + mov r0, #0xce + str r0, [r6] +_022495FC: + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249602: + ldr r7, _022496FC ; =0x00002D58 + add r1, r4, r5 + mov r0, #0 + mov r5, #6 + add r3, r7, #0 +_0224960C: + ldrsb r2, [r1, r3] + cmp r2, #6 + bge _02249618 + mov r2, #1 + strb r5, [r1, r7] + str r2, [sp, #0xc] +_02249618: + add r0, r0, #1 + add r1, r1, #1 + cmp r0, #8 + blt _0224960C + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _022496C8 + mov r0, #0xd3 + str r0, [r6] + b _02249A3C +_0224962C: + add r1, r4, r5 + add r0, #0x24 + ldr r1, [r1, r0] + mov r0, #0xf + lsl r0, r0, #0x10 + tst r0, r1 + beq _022496C8 + mov r0, #6 + add r3, #0x70 + str r0, [r4, r3] + mov r0, #0xd4 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_0224964A: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _0224965C + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_0224965C: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249700 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _022496C8 + ldr r0, _02249704 ; =0x00000109 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249680: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _02249692 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_02249692: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249700 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _022496C8 + ldr r0, _02249708 ; =0x00002DCC + add r2, r4, r0 + mov r0, #1 + ldr r1, [r2, r5] + lsl r0, r0, #0x1c + orr r0, r1 + str r0, [r2, r5] + b _02249A3C +_022496BC: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bls _022496CA +_022496C8: + b _02249A3C +_022496CA: + add r1, r7, #0 + bl MOD11_022476C0 + ldr r1, _022496E8 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _0224970C ; =0x00002DA8 + b _02249710 + nop +_022496E4: .word 0x00002D8C +_022496E8: .word 0x0000215C +_022496EC: .word 0x00000F88 +_022496F0: .word 0x00002D4C +_022496F4: .word 0x00002D6C +_022496F8: .word 0x00002DB0 +_022496FC: .word 0x00002D58 +_02249700: .word 0x00002D90 +_02249704: .word 0x00000109 +_02249708: .word 0x00002DCC +_0224970C: .word 0x00002DA8 +_02249710: + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02249722 + mov r0, #0xcf + b _02249724 +_02249722: + mov r0, #0xc6 +_02249724: + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_0224972C: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _022497F2 + add r1, r7, #0 + bl MOD11_022476C0 + ldr r1, _02249A58 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02249A5C ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02249760 + mov r0, #0xcf + b _02249762 +_02249760: + mov r0, #0xc6 +_02249762: + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_0224976A: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _022497F2 + add r1, r7, #0 + bl MOD11_022476C0 + ldr r1, _02249A58 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02249A5C ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224979E + mov r0, #0xcf + b _022497A0 +_0224979E: + mov r0, #0xc6 +_022497A0: + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022497A8: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bhi _022497F2 + add r1, r7, #0 + bl MOD11_022476C0 + ldr r1, _02249A58 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02249A5C ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _022497DC + mov r0, #0xcf + b _022497DE +_022497DC: + mov r0, #0xc6 +_022497DE: + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022497E6: + add r1, r4, r5 + add r0, r0, #4 + ldr r0, [r1, r0] + lsr r1, r0, #1 + cmp r2, r1 + bls _022497F4 +_022497F2: + b _02249A3C +_022497F4: + add r1, r7, #0 + bl MOD11_022476C0 + ldr r1, _02249A58 ; =0x0000215C + add r2, r4, r5 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02249A5C ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224981C + mov r0, #0xcf + b _0224981E +_0224981C: + mov r0, #0xc6 +_0224981E: + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249826: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _02249838 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_02249838: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249932 + ldr r0, _02249A64 ; =0x00002D59 + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _02249932 + mov r1, #0x13 + mov r0, #1 + lsl r1, r1, #4 + str r0, [sp, #0xc] + str r0, [r4, r1] + mov r0, #0xd0 + str r0, [r6] + b _02249A3C +_0224986C: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _0224987E + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_0224987E: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249932 + ldr r0, _02249A68 ; =0x00002D5A + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _02249932 + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xd0 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022498B4: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _022498C6 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_022498C6: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249932 + ldr r0, _02249A6C ; =0x00002D5B + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _02249932 + mov r0, #0x13 + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xd0 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022498FC: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _0224990E + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_0224990E: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249932 + ldr r0, _02249A70 ; =0x00002D5C + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + blt _02249934 +_02249932: + b _02249A3C +_02249934: + mov r0, #0x13 + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xd0 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_02249946: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _02249958 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_02249958: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249A3C + ldr r0, _02249A74 ; =0x00002D5D + add r1, r4, r5 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bge _02249A3C + mov r0, #0x13 + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xd0 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_0224998E: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _022499A0 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_022499A0: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249A3C + ldr r0, _02249A78 ; =0x00002DB0 + add r1, r4, r5 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x14 + tst r0, r1 + bne _02249A3C + mov r0, #0xd1 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] + b _02249A3C +_022499D2: + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x52 + bne _022499E4 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r7, r0, #1 +_022499E4: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _02249A60 ; =0x00002D90 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, r7, #0 + blx _u32_div_f + ldr r1, [sp, #0x14] + ldr r1, [r1, r5] + cmp r1, r0 + bhi _02249A3C + ldr r0, _02249A64 ; =0x00002D59 + mov r2, #0 + add r3, r4, r5 +_02249A04: + ldrsb r1, [r3, r0] + cmp r1, #0xc + blt _02249A12 + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #5 + blt _02249A04 +_02249A12: + cmp r2, #5 + beq _02249A3C + ldr r7, _02249A64 ; =0x00002D59 + add r5, r4, r5 +_02249A1A: + bl FUN_0201B9EC + mov r1, #5 + blx _s32_div_f + add r0, r5, r1 + ldrsb r0, [r0, r7] + cmp r0, #0xc + beq _02249A1A + mov r0, #0x13 + add r1, r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xd2 + str r0, [r6] + mov r0, #1 + str r0, [sp, #0xc] +_02249A3C: + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _02249A50 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02249B4C + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r4, r1] +_02249A50: + ldr r0, [sp, #0xc] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02249A58: .word 0x0000215C +_02249A5C: .word 0x00002DA8 +_02249A60: .word 0x00002D90 +_02249A64: .word 0x00002D59 +_02249A68: .word 0x00002D5A +_02249A6C: .word 0x00002D5B +_02249A70: .word 0x00002D5C +_02249A74: .word 0x00002D5D +_02249A78: .word 0x00002DB0 + + thumb_func_start MOD11_02249A7C +MOD11_02249A7C: ; 0x02249A7C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r4, r2, #0 + mov r6, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_02249DA4 + str r0, [sp, #8] + mov r0, #0xc0 + mul r0, r4 + str r0, [sp] + add r1, r5, r0 + ldr r0, _02249B40 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02249B38 + cmp r7, #0x63 + beq _02249ABA + cmp r7, #0x64 + beq _02249AD0 + cmp r7, #0x73 + beq _02249AE6 + b _02249B0E +_02249ABA: + add r0, r5, #0 + add r0, #0x94 + str r4, [r0] + add r0, r5, #0 + mov r1, #5 + add r0, #0x88 + str r1, [r0] + mov r0, #0x2f + str r0, [sp, #4] + mov r6, #1 + b _02249B0E +_02249AD0: + add r0, r5, #0 + add r0, #0x94 + str r4, [r0] + add r0, r5, #0 + mov r1, #5 + add r0, #0x88 + str r1, [r0] + mov r0, #0x19 + str r0, [sp, #4] + mov r6, #1 + b _02249B0E +_02249AE6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _02249B0E + ldr r0, [sp] + add r1, r5, r0 + ldr r0, _02249B44 ; =0x00002D90 + ldr r1, [r1, r0] + sub r0, r6, #1 + mul r0, r1 + ldr r1, [sp, #8] + bl MOD11_022476C0 + ldr r1, _02249B48 ; =0x0000215C + mov r6, #1 + str r0, [r5, r1] + mov r0, #0xd7 + str r0, [sp, #4] +_02249B0E: + cmp r6, #1 + bne _02249B38 + mov r0, #0x46 + lsl r0, r0, #2 + str r4, [r5, r0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249B4C + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r2, [sp, #4] + add r0, r5, #0 + mov r1, #1 + bl MOD11_022431DC + ldr r0, [r5, #8] + str r0, [r5, #0xc] + mov r0, #0x15 + str r0, [r5, #8] +_02249B38: + add r0, r6, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02249B40: .word 0x00002D8C +_02249B44: .word 0x00002D90 +_02249B48: .word 0x0000215C + + thumb_func_start MOD11_02249B4C +MOD11_02249B4C: ; 0x02249B4C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_02246D1C + cmp r0, #0x67 + bne _02249B5E + mov r0, #0 + pop {r3, r4, r5, pc} +_02249B5E: + mov r0, #0xc0 + mul r0, r4 + add r2, r5, r0 + ldr r0, _02249B78 ; =0x00002DCC + ldr r1, [r2, r0] + lsl r1, r1, #0xa + lsr r1, r1, #0x1d + beq _02249B72 + mov r0, #0 + pop {r3, r4, r5, pc} +_02249B72: + sub r0, #0x14 + ldrh r0, [r2, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02249B78: .word 0x00002DCC + + thumb_func_start MOD11_02249B7C +MOD11_02249B7C: ; 0x02249B7C + lsl r1, r1, #4 + add r1, r0, r1 + ldr r0, _02249B90 ; =0x000021A8 + ldr r0, [r1, r0] + cmp r0, #0x27 + bne _02249B8C + mov r0, #1 + bx lr +_02249B8C: + mov r0, #0 + bx lr + .align 2, 0 +_02249B90: .word 0x000021A8 + + thumb_func_start MOD11_02249B94 +MOD11_02249B94: ; 0x02249B94 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [r5, #0x6c] + str r0, [sp] + add r6, r2, #0 + mov r7, #0 + cmp r1, #0xff + bne _02249BAC + add sp, #0xc + add r0, r7, #0 + pop {r4, r5, r6, r7, pc} +_02249BAC: + add r0, r5, #0 + bl MOD11_0224AD9C + cmp r0, #1 + bne _02249BBC + add sp, #0xc + add r0, r7, #0 + pop {r4, r5, r6, r7, pc} +_02249BBC: + ldr r1, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_02249D90 + add r4, r0, #0 + ldr r1, [r5, #0x6c] + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_02249DA4 + str r0, [sp, #4] + ldr r0, [sp] + ldr r1, [r5, #0x64] + bl MOD11_02230270 + str r0, [sp, #8] + cmp r4, #0x2e + bgt _02249BF2 + cmp r4, #0x2a + blt _02249BF0 + bne _02249BE8 + b _02249D24 +_02249BE8: + cmp r4, #0x2d + beq _02249C74 + cmp r4, #0x2e + beq _02249CD2 +_02249BF0: + b _02249D6A +_02249BF2: + cmp r4, #0x73 + bne _02249C5C + ldr r0, [r5, #0x64] + mov r1, #0xc0 + mul r1, r0 + add r3, r5, r1 + ldr r1, _02249D70 ; =0x00002D8C + ldr r2, [r3, r1] + cmp r2, #0 + beq _02249C5C + add r1, #0x2c + ldrh r1, [r3, r1] + cmp r1, #0 + bne _02249C5C + add r1, r5, r0 + ldr r0, _02249D74 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + ldr r1, [sp, #8] + lsl r1, r1, #3 + add r2, r5, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r2, [r2, r1] + lsl r2, r2, #3 + lsr r2, r2, #0x1a + tst r0, r2 + bne _02249C5C + ldr r0, _02249D78 ; =0x00003044 + sub r1, #0xaa + ldr r0, [r5, r0] + cmp r0, r1 + beq _02249C5C + ldr r2, [r5, #0x6c] + mov r1, #0x1c + mul r1, r2 + add r3, r5, r1 + mov r1, #0xb6 + lsl r1, r1, #2 + ldr r2, [r3, r1] + cmp r2, #0 + bne _02249C50 + add r1, #8 + ldr r1, [r3, r1] + cmp r1, #0 + beq _02249C5C +_02249C50: + mov r1, #0x85 + lsl r1, r1, #6 + ldr r2, [r5, r1] + mov r1, #0x10 + tst r1, r2 + beq _02249C5E +_02249C5C: + b _02249D6A +_02249C5E: + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _02249D7C ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r1, r0 + beq _02249D6A + mov r1, #0xd8 + str r1, [r6] + add r7, r0, #0 + b _02249D6A +_02249C74: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02249D70 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02249D6A + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _02249D6A + mov r0, #0x85 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #0x10 + tst r0, r1 + bne _02249D6A + ldr r1, [r5, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r1, r5, r0 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02249D6A + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _02249D80 ; =0x00002D90 + add r2, r5, r2 + ldr r2, [r2, r0] + sub r1, #0xc1 + add r0, r2, #0 + mul r0, r1 + ldr r1, [sp, #4] + bl MOD11_022476C0 + ldr r1, _02249D84 ; =0x0000215C + mov r7, #1 + str r0, [r5, r1] + lsr r0, r1, #5 + str r0, [r6] + b _02249D6A +_02249CD2: + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _02249D70 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _02249D6A + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _02249D6A + ldr r1, [r5, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r1, r5, r0 + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02249D6A + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _02249D80 ; =0x00002D90 + add r2, r5, r2 + ldr r2, [r2, r0] + sub r1, #0xc1 + add r0, r2, #0 + mul r0, r1 + ldr r1, [sp, #4] + bl MOD11_022476C0 + ldr r1, _02249D84 ; =0x0000215C + mov r7, #1 + str r0, [r5, r1] + lsr r0, r1, #5 + str r0, [r6] + b _02249D6A +_02249D24: + ldr r1, [r5, #0x6c] + mov r0, #0xc0 + mul r0, r1 + ldr r2, _02249D70 ; =0x00002D8C + add r0, r5, r0 + ldr r1, [r0, r2] + cmp r1, #0 + beq _02249D6A + ldr r1, _02249D88 ; =0x0000216C + ldr r3, [r5, r1] + mov r1, #2 + tst r1, r3 + beq _02249D6A + add r1, r2, #4 + ldr r0, [r0, r1] + ldr r1, [sp, #4] + bl MOD11_022476C0 + ldr r1, _02249D84 ; =0x0000215C + mov r7, #1 + str r0, [r5, r1] + mov r1, #0xc6 + str r1, [r6] + ldr r0, [r5, #0x6c] + add r1, #0x52 + str r0, [r5, r1] + ldr r0, [r5, #0x6c] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _02249D8C ; =0x00002DB8 + add r2, r5, r2 + ldrh r0, [r2, r0] + add r1, #0x68 + str r0, [r5, r1] +_02249D6A: + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02249D70: .word 0x00002D8C +_02249D74: .word 0x0000219C +_02249D78: .word 0x00003044 +_02249D7C: .word 0x000003E9 +_02249D80: .word 0x00002D90 +_02249D84: .word 0x0000215C +_02249D88: .word 0x0000216C +_02249D8C: .word 0x00002DB8 + + thumb_func_start MOD11_02249D90 +MOD11_02249D90: ; 0x02249D90 + push {r4, lr} + add r4, r0, #0 + bl MOD11_02249B4C + add r1, r0, #0 + add r0, r4, #0 + mov r2, #1 + bl MOD11_0224C12C + pop {r4, pc} + + thumb_func_start MOD11_02249DA4 +MOD11_02249DA4: ; 0x02249DA4 + push {r4, lr} + add r4, r0, #0 + cmp r2, #0 + beq _02249DB6 + cmp r2, #1 + beq _02249DD2 + cmp r2, #2 + beq _02249DBE + b _02249DDC +_02249DB6: + bl MOD11_02249B4C + add r1, r0, #0 + b _02249DDC +_02249DBE: + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _02249DE8 ; =0x00002DCC + ldr r0, [r2, r0] + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + beq _02249DD2 + mov r0, #0 + pop {r4, pc} +_02249DD2: + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _02249DEC ; =0x00002DB8 + ldrh r1, [r1, r0] +_02249DDC: + add r0, r4, #0 + mov r2, #2 + bl MOD11_0224C12C + pop {r4, pc} + nop +_02249DE8: .word 0x00002DCC +_02249DEC: .word 0x00002DB8 + + thumb_func_start MOD11_02249DF0 +MOD11_02249DF0: ; 0x02249DF0 + push {r4, lr} + add r4, r0, #0 + bl MOD11_02249B4C + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0xb + bl MOD11_0224C12C + pop {r4, pc} + + thumb_func_start MOD11_02249E04 +MOD11_02249E04: ; 0x02249E04 + push {r4, lr} + add r4, r0, #0 + bl MOD11_02249B4C + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0xc + bl MOD11_0224C12C + pop {r4, pc} + + thumb_func_start MOD11_02249E18 +MOD11_02249E18: ; 0x02249E18 + mov r2, #0xc0 + mul r2, r1 + ldr r1, _02249E28 ; =0x00002DB8 + add r2, r0, r2 + ldrh r1, [r2, r1] + ldr r3, _02249E2C ; =MOD11_0224C12C + mov r2, #8 + bx r3 + .align 2, 0 +_02249E28: .word 0x00002DB8 +_02249E2C: .word MOD11_0224C12C + + thumb_func_start MOD11_02249E30 +MOD11_02249E30: ; 0x02249E30 + push {r3, lr} + mov r2, #0xc0 + mul r2, r1 + ldr r1, _02249E54 ; =0x00002DCC + add r3, r0, r2 + ldr r2, [r3, r1] + lsl r2, r2, #0xa + lsr r2, r2, #0x1d + beq _02249E46 + mov r0, #0 + pop {r3, pc} +_02249E46: + sub r1, #0x14 + ldrh r1, [r3, r1] + mov r2, #9 + bl MOD11_0224C12C + pop {r3, pc} + nop +_02249E54: .word 0x00002DCC + + thumb_func_start MOD11_02249E58 +MOD11_02249E58: ; 0x02249E58 + push {r3, lr} + mov r2, #0xc0 + mul r2, r1 + ldr r1, _02249E7C ; =0x00002DCC + add r3, r0, r2 + ldr r2, [r3, r1] + lsl r2, r2, #0xa + lsr r2, r2, #0x1d + beq _02249E6E + mov r0, #0 + pop {r3, pc} +_02249E6E: + sub r1, #0x14 + ldrh r1, [r3, r1] + mov r2, #0xa + bl MOD11_0224C12C + pop {r3, pc} + nop +_02249E7C: .word 0x00002DCC + + thumb_func_start MOD11_02249E80 +MOD11_02249E80: ; 0x02249E80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r6, #0 + bl MOD11_02249D90 + cmp r0, #0x7a + bne _02249E9E + add sp, #8 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_02249E9E: + mov r0, #0xc0 + add r7, r4, #0 + mul r7, r0 + ldr r0, _02249F80 ; =0x00002DB0 + add r2, r5, r7 + ldr r1, [r2, r0] + ldr r3, _02249F84 ; =0x0400E000 + tst r1, r3 + bne _02249EBA + add r0, #0x10 + ldr r1, [r2, r0] + lsr r0, r3, #0x10 + tst r0, r1 + beq _02249EBC +_02249EBA: + mov r6, #1 +_02249EBC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x17 + beq _02249EDC + mov r0, #0x17 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #3 + add r3, r4, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _02249F10 +_02249EDC: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + beq _02249EFC + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + bne _02249F12 +_02249EFC: + mov r0, #0x2a + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #3 + add r3, r4, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _02249F12 +_02249F10: + mov r6, #1 +_02249F12: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x1a + beq _02249F4A + ldr r0, _02249F88 ; =0x00002DCC + add r1, r5, r7 + ldr r0, [r1, r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1d + bne _02249F4A + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #2 + beq _02249F4A + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #2 + bne _02249F64 +_02249F4A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + cmp r0, #0x69 + beq _02249F64 + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + mov r0, #7 + lsl r0, r0, #0xc + tst r0, r1 + beq _02249F7A +_02249F64: + mov r0, #0x47 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #3 + add r3, r4, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _02249F7A + mov r6, #1 +_02249F7A: + add r0, r6, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249F80: .word 0x00002DB0 +_02249F84: .word 0x0400E000 +_02249F88: .word 0x00002DCC + + thumb_func_start MOD11_02249F8C +MOD11_02249F8C: ; 0x02249F8C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp] + mov r6, #0 + str r2, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + add r5, r6, #0 + bl MOD11_02249E18 + add r7, r0, #0 + ldr r1, [sp, #4] + add r0, r4, #0 + mov r2, #1 + bl MOD11_02249DA4 + str r0, [sp, #0x10] + ldr r1, [r4, #0x6c] + add r0, r4, #0 + bl MOD11_0224AD9C + cmp r0, #1 + bne _02249FC2 + add sp, #0x14 + add r0, r6, #0 + pop {r4, r5, r6, r7, pc} +_02249FC2: + cmp r7, #0x17 + bls _02249FC8 + b _0224A444 +_02249FC8: + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02249FD4: ; jump table + .short _0224A444 - _02249FD4 - 2 ; case 0 + .short _0224A04E - _02249FD4 - 2 ; case 1 + .short _0224A066 - _02249FD4 - 2 ; case 2 + .short _0224A07E - _02249FD4 - 2 ; case 3 + .short _0224A096 - _02249FD4 - 2 ; case 4 + .short _0224A0AE - _02249FD4 - 2 ; case 5 + .short _0224A0C6 - _02249FD4 - 2 ; case 6 + .short _0224A004 - _02249FD4 - 2 ; case 7 + .short _0224A13C - _02249FD4 - 2 ; case 8 + .short _0224A154 - _02249FD4 - 2 ; case 9 + .short _0224A024 - _02249FD4 - 2 ; case 10 + .short _0224A1B6 - _02249FD4 - 2 ; case 11 + .short _0224A1FC - _02249FD4 - 2 ; case 12 + .short _0224A242 - _02249FD4 - 2 ; case 13 + .short _0224A288 - _02249FD4 - 2 ; case 14 + .short _0224A2CE - _02249FD4 - 2 ; case 15 + .short _0224A314 - _02249FD4 - 2 ; case 16 + .short _0224A360 - _02249FD4 - 2 ; case 17 + .short _0224A37E - _02249FD4 - 2 ; case 18 + .short _0224A39C - _02249FD4 - 2 ; case 19 + .short _0224A3BA - _02249FD4 - 2 ; case 20 + .short _0224A424 - _02249FD4 - 2 ; case 21 + .short _0224A3D8 - _02249FD4 - 2 ; case 22 + .short _0224A43E - _02249FD4 - 2 ; case 23 +_0224A004: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _0224A320 ; =0x00002D8C + ldr r1, [r2, r0] + add r0, r0, #4 + ldr r0, [r2, r0] + cmp r1, r0 + beq _0224A020 + ldr r1, _0224A324 ; =0x0000215C + ldr r0, [sp, #0x10] + mov r5, #0xc6 + str r0, [r4, r1] +_0224A020: + mov r6, #1 + b _0224A45A +_0224A024: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A328 ; =0x00002D90 + ldr r2, [r1, r0] + sub r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, r2 + beq _0224A04A + ldr r1, [sp, #0x10] + add r0, r1, #0 + mul r0, r2 + mov r1, #0x64 + bl MOD11_022476C0 + ldr r1, _0224A324 ; =0x0000215C + mov r5, #0xc6 + str r0, [r4, r1] +_0224A04A: + mov r6, #1 + b _0224A45A +_0224A04E: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A32C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x40 + tst r0, r1 + beq _0224A062 + mov r5, #0xc7 +_0224A062: + mov r6, #1 + b _0224A45A +_0224A066: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A32C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0224A07A + mov r5, #0xc8 +_0224A07A: + mov r6, #1 + b _0224A45A +_0224A07E: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A32C ; =0x00002DAC + ldr r1, [r1, r0] + ldr r0, _0224A330 ; =0x00000F88 + tst r0, r1 + beq _0224A092 + mov r5, #0xc9 +_0224A092: + mov r6, #1 + b _0224A45A +_0224A096: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A32C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x10 + tst r0, r1 + beq _0224A0AA + mov r5, #0xca +_0224A0AA: + mov r6, #1 + b _0224A45A +_0224A0AE: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A32C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _0224A0C2 + mov r5, #0xcb +_0224A0C2: + mov r6, #1 + b _0224A45A +_0224A0C6: + str r5, [sp, #0xc] +_0224A0C8: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r7, r1, #0 + mul r7, r0 + add r1, r4, r7 + ldr r0, _0224A334 ; =0x00002D4C + add r2, r6, r1 + ldrh r0, [r2, r0] + cmp r0, #0 + beq _0224A0FA + add r2, r5, r1 + ldr r1, _0224A338 ; =0x00002D70 + ldrb r1, [r2, r1] + bl FUN_0206AB30 + add r1, r4, r7 + add r2, r5, r1 + ldr r1, _0224A33C ; =0x00002D6C + ldrb r1, [r2, r1] + sub r1, r0, r1 + ldr r0, [sp, #0xc] + cmp r1, r0 + ble _0224A0FA + str r1, [sp, #0xc] + str r5, [sp, #8] +_0224A0FA: + add r5, r5, #1 + add r6, r6, #2 + cmp r5, #4 + blt _0224A0C8 + mov r0, #0xb5 + lsl r0, r0, #6 + ldr r1, [sp, #8] + add r0, r4, r0 + ldr r2, [sp, #0x10] + add r0, r0, r7 + add r1, #0x1f + bl MOD11_02243DC8 + ldr r0, [sp] + ldr r2, [r4, #0x64] + add r1, r4, #0 + bl MOD11_02245190 + ldr r0, [r4, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, [sp, #8] + add r2, r4, r2 + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _0224A334 ; =0x00002D4C + add r1, #0x64 + ldrh r0, [r2, r0] + mov r5, #0xcc + mov r6, #1 + str r0, [r4, r1] + b _0224A45A +_0224A13C: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A340 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0224A150 + mov r5, #0xcd +_0224A150: + mov r6, #1 + b _0224A45A +_0224A154: + ldr r2, [r4, #0x64] + mov r0, #0xc0 + add r1, r2, #0 + mul r1, r0 + ldr r6, _0224A32C ; =0x00002DAC + add r0, r4, r1 + ldr r2, [r0, r6] + lsl r3, r2, #0x18 + lsr r3, r3, #0x18 + bne _0224A172 + add r6, r6, #4 + ldr r6, [r0, r6] + mov r0, #7 + tst r0, r6 + beq _0224A1B2 +_0224A172: + mov r0, #0x40 + tst r0, r2 + beq _0224A17A + mov r5, #0xc7 +_0224A17A: + mov r0, #7 + tst r0, r2 + beq _0224A182 + mov r5, #0xc8 +_0224A182: + ldr r0, _0224A330 ; =0x00000F88 + tst r0, r2 + beq _0224A18A + mov r5, #0xc9 +_0224A18A: + mov r0, #0x10 + tst r0, r2 + beq _0224A192 + mov r5, #0xca +_0224A192: + mov r0, #0x20 + tst r0, r2 + beq _0224A19A + mov r5, #0xcb +_0224A19A: + ldr r0, _0224A340 ; =0x00002DB0 + add r1, r4, r1 + ldr r1, [r1, r0] + mov r0, #7 + and r0, r1 + beq _0224A1A8 + mov r5, #0xcd +_0224A1A8: + cmp r3, #0 + beq _0224A1B2 + cmp r0, #0 + beq _0224A1B2 + mov r5, #0xce +_0224A1B2: + mov r6, #1 + b _0224A45A +_0224A1B6: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224A328 ; =0x00002D90 + add r2, r4, r0 + ldr r0, [r2, r1] + sub r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, r0 + beq _0224A1F8 + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A324 ; =0x0000215C + str r0, [r4, r1] + mov r0, #0x13 + add r1, r6, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A344 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r6, #1 + cmp r0, r1 + bne _0224A1F6 + mov r5, #0xcf + b _0224A1F8 +_0224A1F6: + mov r5, #0xc6 +_0224A1F8: + mov r6, #1 + b _0224A45A +_0224A1FC: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224A328 ; =0x00002D90 + add r2, r4, r0 + ldr r0, [r2, r1] + sub r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, r0 + beq _0224A23E + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A324 ; =0x0000215C + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A344 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r6, #1 + cmp r0, r1 + bne _0224A23C + mov r5, #0xcf + b _0224A23E +_0224A23C: + mov r5, #0xc6 +_0224A23E: + mov r6, #1 + b _0224A45A +_0224A242: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224A328 ; =0x00002D90 + add r2, r4, r0 + ldr r0, [r2, r1] + sub r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, r0 + beq _0224A284 + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A324 ; =0x0000215C + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A344 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r6, #1 + cmp r0, r1 + bne _0224A282 + mov r5, #0xcf + b _0224A284 +_0224A282: + mov r5, #0xc6 +_0224A284: + mov r6, #1 + b _0224A45A +_0224A288: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224A328 ; =0x00002D90 + add r2, r4, r0 + ldr r0, [r2, r1] + sub r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, r0 + beq _0224A2CA + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A324 ; =0x0000215C + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A344 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r6, #1 + cmp r0, r1 + bne _0224A2C8 + mov r5, #0xcf + b _0224A2CA +_0224A2C8: + mov r5, #0xc6 +_0224A2CA: + mov r6, #1 + b _0224A45A +_0224A2CE: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224A328 ; =0x00002D90 + add r2, r4, r0 + ldr r0, [r2, r1] + sub r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, r0 + beq _0224A310 + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A324 ; =0x0000215C + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x64] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A344 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r6, #1 + cmp r0, r1 + bne _0224A30E + mov r5, #0xcf + b _0224A310 +_0224A30E: + mov r5, #0xc6 +_0224A310: + mov r6, #1 + b _0224A45A +_0224A314: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _0224A348 ; =0x00002D59 + b _0224A34C + .align 2, 0 +_0224A320: .word 0x00002D8C +_0224A324: .word 0x0000215C +_0224A328: .word 0x00002D90 +_0224A32C: .word 0x00002DAC +_0224A330: .word 0x00000F88 +_0224A334: .word 0x00002D4C +_0224A338: .word 0x00002D70 +_0224A33C: .word 0x00002D6C +_0224A340: .word 0x00002DB0 +_0224A344: .word 0x00002DA8 +_0224A348: .word 0x00002D59 +_0224A34C: + add r2, r4, r2 + ldrsb r1, [r2, r1] + cmp r1, #0xc + bge _0224A35C + mov r1, #1 + add r0, #0x70 + str r1, [r4, r0] + mov r5, #0xd0 +_0224A35C: + mov r6, #1 + b _0224A45A +_0224A360: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _0224A4C0 ; =0x00002D5A + add r2, r4, r2 + ldrsb r1, [r2, r1] + cmp r1, #0xc + bge _0224A37A + mov r1, #2 + add r0, #0x70 + str r1, [r4, r0] + mov r5, #0xd0 +_0224A37A: + mov r6, #1 + b _0224A45A +_0224A37E: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _0224A4C4 ; =0x00002D5B + add r2, r4, r2 + ldrsb r1, [r2, r1] + cmp r1, #0xc + bge _0224A398 + mov r1, #3 + add r0, #0x70 + str r1, [r4, r0] + mov r5, #0xd0 +_0224A398: + mov r6, #1 + b _0224A45A +_0224A39C: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _0224A4C8 ; =0x00002D5C + add r2, r4, r2 + ldrsb r1, [r2, r1] + cmp r1, #0xc + bge _0224A3B6 + mov r1, #4 + add r0, #0x70 + str r1, [r4, r0] + mov r5, #0xd0 +_0224A3B6: + mov r6, #1 + b _0224A45A +_0224A3BA: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, _0224A4CC ; =0x00002D5D + add r2, r4, r2 + ldrsb r1, [r2, r1] + cmp r1, #0xc + bge _0224A3D4 + mov r1, #5 + add r0, #0x70 + str r1, [r4, r0] + mov r5, #0xd0 +_0224A3D4: + mov r6, #1 + b _0224A45A +_0224A3D8: + ldr r2, [r4, #0x64] + mov r1, #0xc0 + mul r1, r2 + add r3, r4, r1 + ldr r1, _0224A4D0 ; =0x00002D59 + add r0, r6, #0 +_0224A3E4: + ldrsb r2, [r3, r1] + cmp r2, #0xc + blt _0224A3F2 + add r0, r0, #1 + add r3, r3, #1 + cmp r0, #5 + blt _0224A3E4 +_0224A3F2: + cmp r0, #5 + beq _0224A420 + ldr r5, _0224A4D0 ; =0x00002D59 + mov r7, #5 + mov r6, #0xc0 +_0224A3FC: + bl FUN_0201B9EC + add r1, r7, #0 + blx _s32_div_f + ldr r0, [r4, #0x64] + add r2, r0, #0 + mul r2, r6 + add r0, r4, r2 + add r0, r1, r0 + ldrsb r0, [r0, r5] + cmp r0, #0xc + beq _0224A3FC + mov r0, #0x13 + add r1, r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r5, #0xd2 +_0224A420: + mov r6, #1 + b _0224A45A +_0224A424: + ldr r1, [r4, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A4D4 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x14 + tst r0, r1 + bne _0224A43A + mov r5, #0xd1 +_0224A43A: + mov r6, #1 + b _0224A45A +_0224A43E: + ldr r5, _0224A4D8 ; =0x00000109 + mov r6, #1 + b _0224A45A +_0224A444: + ldr r0, [sp, #4] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _0224A4DC ; =0x00002DB8 + add r1, r4, r1 + ldrh r0, [r1, r0] + bl FUN_0206EAEC + cmp r0, #1 + bne _0224A45A + mov r6, #1 +_0224A45A: + cmp r6, #1 + bne _0224A4B8 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x67 + beq _0224A482 + ldr r1, [r4, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + mov r1, #0xb7 + add r2, r4, r2 + lsl r1, r1, #6 + ldr r2, [r2, r1] + mov r1, #1 + lsl r1, r1, #0x1a + tst r1, r2 + beq _0224A48C +_0224A482: + mov r0, #0x4e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _0224A490 +_0224A48C: + add r0, #0x78 + str r5, [r4, r0] +_0224A490: + ldr r0, [sp, #4] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _0224A4DC ; =0x00002DB8 + add r2, r4, r2 + ldrh r0, [r2, r0] + add r1, #0x68 + str r0, [r4, r1] + ldr r2, [r4, #0x64] + mov r0, #0xba + lsl r0, r0, #2 + mov r1, #0x1c + add r3, r2, #0 + mul r3, r1 + add r0, r4, r0 + ldr r2, [r0, r3] + mov r1, #2 + orr r1, r2 + str r1, [r0, r3] +_0224A4B8: + add r0, r6, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224A4C0: .word 0x00002D5A +_0224A4C4: .word 0x00002D5B +_0224A4C8: .word 0x00002D5C +_0224A4CC: .word 0x00002D5D +_0224A4D0: .word 0x00002D59 +_0224A4D4: .word 0x00002DB0 +_0224A4D8: .word 0x00000109 +_0224A4DC: .word 0x00002DB8 + + thumb_func_start MOD11_0224A4E0 +MOD11_0224A4E0: ; 0x0224A4E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp] + str r2, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD11_02249E30 + add r6, r0, #0 + ldr r1, [sp, #4] + add r0, r4, #0 + mov r2, #2 + bl MOD11_02249DA4 + str r0, [sp, #0x10] + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD11_02249E58 + ldr r1, _0224A84C ; =0x00002154 + add r2, r4, #0 + str r0, [r4, r1] + ldr r0, _0224A850 ; =0x00003118 + mov r5, #0 + str r5, [r4, r0] + add r2, #0x88 + str r5, [r2] + ldr r1, [r4, r1] + cmp r1, #0 + bne _0224A524 + add sp, #0x14 + add r0, r5, #0 + pop {r4, r5, r6, r7, pc} +_0224A524: + cmp r6, #0x1e + bls _0224A52A + b _0224AAAC +_0224A52A: + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224A536: ; jump table + .short _0224AAAC - _0224A536 - 2 ; case 0 + .short _0224A5A2 - _0224A536 - 2 ; case 1 + .short _0224A5BA - _0224A536 - 2 ; case 2 + .short _0224A5D2 - _0224A536 - 2 ; case 3 + .short _0224A5EA - _0224A536 - 2 ; case 4 + .short _0224A602 - _0224A536 - 2 ; case 5 + .short _0224A61A - _0224A536 - 2 ; case 6 + .short _0224A574 - _0224A536 - 2 ; case 7 + .short _0224A69C - _0224A536 - 2 ; case 8 + .short _0224A6B4 - _0224A536 - 2 ; case 9 + .short _0224A580 - _0224A536 - 2 ; case 10 + .short _0224A77A - _0224A536 - 2 ; case 11 + .short _0224A7BC - _0224A536 - 2 ; case 12 + .short _0224A7FE - _0224A536 - 2 ; case 13 + .short _0224A840 - _0224A536 - 2 ; case 14 + .short _0224A8B0 - _0224A536 - 2 ; case 15 + .short _0224A9AC - _0224A536 - 2 ; case 16 + .short _0224A9CA - _0224A536 - 2 ; case 17 + .short _0224A9E8 - _0224A536 - 2 ; case 18 + .short _0224AA06 - _0224A536 - 2 ; case 19 + .short _0224AA24 - _0224A536 - 2 ; case 20 + .short _0224AA8E - _0224A536 - 2 ; case 21 + .short _0224AA42 - _0224A536 - 2 ; case 22 + .short _0224AAA8 - _0224A536 - 2 ; case 23 + .short _0224A8F2 - _0224A536 - 2 ; case 24 + .short _0224A91A - _0224A536 - 2 ; case 25 + .short _0224A93E - _0224A536 - 2 ; case 26 + .short _0224A954 - _0224A536 - 2 ; case 27 + .short _0224A96A - _0224A536 - 2 ; case 28 + .short _0224A980 - _0224A536 - 2 ; case 29 + .short _0224A996 - _0224A536 - 2 ; case 30 +_0224A574: + ldr r1, [sp, #0x10] + sub r2, r0, #4 + str r1, [r4, r2] + mov r1, #0xc6 + str r1, [r4, r0] + b _0224AAAC +_0224A580: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A854 ; =0x00002D90 + ldr r0, [r1, r0] + ldr r1, [sp, #0x10] + mul r0, r1 + mov r1, #0x64 + bl MOD11_022476C0 + ldr r1, _0224A858 ; =0x00003114 + mov r2, #0xc6 + str r0, [r4, r1] + add r0, r1, #4 + str r2, [r4, r0] + b _0224AAAC +_0224A5A2: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224A85C ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #0x40 + tst r1, r2 + beq _0224A65C + mov r1, #0xc7 + str r1, [r4, r0] + b _0224AAAC +_0224A5BA: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224A85C ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #7 + tst r1, r2 + beq _0224A65C + mov r1, #0xc8 + str r1, [r4, r0] + b _0224AAAC +_0224A5D2: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224A85C ; =0x00002DAC + ldr r2, [r2, r1] + ldr r1, _0224A860 ; =0x00000F88 + tst r1, r2 + beq _0224A65C + mov r1, #0xc9 + str r1, [r4, r0] + b _0224AAAC +_0224A5EA: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224A85C ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #0x10 + tst r1, r2 + beq _0224A65C + mov r1, #0xca + str r1, [r4, r0] + b _0224AAAC +_0224A602: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224A85C ; =0x00002DAC + ldr r2, [r2, r1] + mov r1, #0x20 + tst r1, r2 + beq _0224A65C + mov r1, #0xcb + str r1, [r4, r0] + b _0224AAAC +_0224A61A: + add r6, r5, #0 + add r7, r5, #0 +_0224A61E: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + str r0, [sp, #8] + ldr r0, _0224A864 ; =0x00002D4C + add r2, r7, r1 + ldrh r0, [r2, r0] + cmp r0, #0 + beq _0224A650 + add r2, r6, r1 + ldr r1, _0224A868 ; =0x00002D70 + ldrb r1, [r2, r1] + bl FUN_0206AB30 + ldr r1, [sp, #8] + add r1, r4, r1 + add r2, r6, r1 + ldr r1, _0224A86C ; =0x00002D6C + ldrb r1, [r2, r1] + sub r0, r0, r1 + cmp r0, r5 + ble _0224A650 + add r5, r0, #0 + str r6, [sp, #0xc] +_0224A650: + add r6, r6, #1 + add r7, r7, #2 + cmp r6, #4 + blt _0224A61E + cmp r5, #0 + bne _0224A65E +_0224A65C: + b _0224AAAC +_0224A65E: + mov r0, #0xb5 + lsl r0, r0, #6 + add r1, r4, r0 + ldr r0, [sp, #8] + ldr r2, [sp, #0x10] + add r0, r1, r0 + ldr r1, [sp, #0xc] + add r1, #0x1f + bl MOD11_02243DC8 + ldr r0, [sp] + ldr r2, [r4, #0x6c] + add r1, r4, #0 + bl MOD11_02245190 + ldr r0, [r4, #0x6c] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, [sp, #0xc] + add r2, r4, r2 + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _0224A864 ; =0x00002D4C + add r1, #0x64 + ldrh r0, [r2, r0] + str r0, [r4, r1] + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xcc + str r1, [r4, r0] + b _0224AAAC +_0224A69C: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224A870 ; =0x00002DB0 + ldr r2, [r2, r1] + mov r1, #7 + tst r1, r2 + beq _0224A770 + mov r1, #0xcd + str r1, [r4, r0] + b _0224AAAC +_0224A6B4: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224A85C ; =0x00002DAC + add r3, r4, r0 + ldr r0, [r3, r1] + lsl r2, r0, #0x18 + lsr r2, r2, #0x18 + bne _0224A6D0 + add r1, r1, #4 + ldr r2, [r3, r1] + mov r1, #7 + tst r1, r2 + beq _0224A770 +_0224A6D0: + mov r1, #0x40 + tst r0, r1 + beq _0224A6DC + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xc7 + str r1, [r4, r0] +_0224A6DC: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A85C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0224A6F4 + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xc8 + str r1, [r4, r0] +_0224A6F4: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A85C ; =0x00002DAC + ldr r1, [r1, r0] + ldr r0, _0224A860 ; =0x00000F88 + tst r0, r1 + beq _0224A70C + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xc9 + str r1, [r4, r0] +_0224A70C: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A85C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x10 + tst r0, r1 + beq _0224A724 + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xca + str r1, [r4, r0] +_0224A724: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A85C ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #0x20 + tst r0, r1 + beq _0224A73C + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xcb + str r1, [r4, r0] +_0224A73C: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A870 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _0224A754 + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xcd + str r1, [r4, r0] +_0224A754: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _0224A85C ; =0x00002DAC + ldr r1, [r2, r0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + beq _0224A770 + add r0, r0, #4 + ldr r1, [r2, r0] + mov r0, #7 + tst r0, r1 + bne _0224A772 +_0224A770: + b _0224AAAC +_0224A772: + ldr r0, _0224A850 ; =0x00003118 + mov r1, #0xce + str r1, [r4, r0] + b _0224AAAC +_0224A77A: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A854 ; =0x00002D90 + ldr r0, [r1, r0] + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A858 ; =0x00003114 + str r0, [r4, r1] + mov r0, #0x13 + add r1, r5, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A874 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r5, #1 + cmp r0, r1 + ldr r0, _0224A850 ; =0x00003118 + bne _0224A7B6 + mov r1, #0xcf + str r1, [r4, r0] + b _0224AAAC +_0224A7B6: + mov r1, #0xc6 + str r1, [r4, r0] + b _0224AAAC +_0224A7BC: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A854 ; =0x00002D90 + ldr r0, [r1, r0] + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A858 ; =0x00003114 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A874 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r5, #1 + cmp r0, r1 + ldr r0, _0224A850 ; =0x00003118 + bne _0224A7F8 + mov r1, #0xcf + str r1, [r4, r0] + b _0224AAAC +_0224A7F8: + mov r1, #0xc6 + str r1, [r4, r0] + b _0224AAAC +_0224A7FE: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A854 ; =0x00002D90 + ldr r0, [r1, r0] + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224A858 ; =0x00003114 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224A874 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r5, #1 + cmp r0, r1 + ldr r0, _0224A850 ; =0x00003118 + bne _0224A83A + mov r1, #0xcf + str r1, [r4, r0] + b _0224AAAC +_0224A83A: + mov r1, #0xc6 + str r1, [r4, r0] + b _0224AAAC +_0224A840: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224A854 ; =0x00002D90 + b _0224A878 + .align 2, 0 +_0224A84C: .word 0x00002154 +_0224A850: .word 0x00003118 +_0224A854: .word 0x00002D90 +_0224A858: .word 0x00003114 +_0224A85C: .word 0x00002DAC +_0224A860: .word 0x00000F88 +_0224A864: .word 0x00002D4C +_0224A868: .word 0x00002D70 +_0224A86C: .word 0x00002D6C +_0224A870: .word 0x00002DB0 +_0224A874: .word 0x00002DA8 +_0224A878: + ldr r0, [r1, r0] + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224AB14 ; =0x00003114 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224AB18 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r5, #1 + cmp r0, r1 + ldr r0, _0224AB1C ; =0x00003118 + bne _0224A8AA + mov r1, #0xcf + str r1, [r4, r0] + b _0224AAAC +_0224A8AA: + mov r1, #0xc6 + str r1, [r4, r0] + b _0224AAAC +_0224A8B0: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0224AB20 ; =0x00002D90 + ldr r0, [r1, r0] + ldr r1, [sp, #0x10] + bl MOD11_022476C0 + ldr r1, _0224AB14 ; =0x00003114 + str r0, [r4, r1] + mov r0, #0x13 + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r2, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _0224AB18 ; =0x00002DA8 + ldr r0, [r2, r0] + bl FUN_02069BE4 + sub r1, r5, #1 + cmp r0, r1 + ldr r0, _0224AB1C ; =0x00003118 + bne _0224A8EC + mov r1, #0xcf + str r1, [r4, r0] + b _0224AAAC +_0224A8EC: + mov r1, #0xc6 + str r1, [r4, r0] + b _0224AAAC +_0224A8F2: + ldr r2, _0224AB24 ; =0x00002D58 + mov r6, #6 + mov r3, #0xd3 + mov r7, #0xc0 +_0224A8FA: + ldr r0, [r4, #0x6c] + add r1, r0, #0 + mul r1, r7 + add r0, r4, r1 + add r0, r0, r5 + ldrsb r1, [r0, r2] + cmp r1, #6 + bge _0224A912 + ldr r1, _0224AB24 ; =0x00002D58 + strb r6, [r0, r1] + ldr r0, _0224AB1C ; =0x00003118 + str r3, [r4, r0] +_0224A912: + add r5, r5, #1 + cmp r5, #8 + blt _0224A8FA + b _0224AAAC +_0224A91A: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + add r3, r2, #0 + mul r3, r1 + ldr r2, _0224AB28 ; =0x00002DB0 + add r3, r4, r3 + ldr r3, [r3, r2] + mov r2, #0xf + lsl r2, r2, #0x10 + tst r2, r3 + bne _0224A932 + b _0224AAAC +_0224A932: + mov r2, #6 + add r1, #0x70 + str r2, [r4, r1] + mov r1, #0xd4 + str r1, [r4, r0] + b _0224AAAC +_0224A93E: + add r2, r4, #0 + ldr r1, [sp, #4] + add r2, #0x94 + str r1, [r2] + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + str r2, [r1] + mov r1, #0xe + str r1, [r4, r0] + b _0224AAAC +_0224A954: + add r2, r4, #0 + ldr r1, [sp, #4] + add r2, #0x94 + str r1, [r2] + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + str r2, [r1] + mov r1, #0x1f + str r1, [r4, r0] + b _0224AAAC +_0224A96A: + add r2, r4, #0 + ldr r1, [sp, #4] + add r2, #0x94 + str r1, [r2] + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + str r2, [r1] + mov r1, #0x16 + str r1, [r4, r0] + b _0224AAAC +_0224A980: + add r2, r4, #0 + ldr r1, [sp, #4] + add r2, #0x94 + str r1, [r2] + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + str r2, [r1] + mov r1, #0x2f + str r1, [r4, r0] + b _0224AAAC +_0224A996: + add r2, r4, #0 + ldr r1, [sp, #4] + add r2, #0x94 + str r1, [r2] + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + str r2, [r1] + mov r1, #0x19 + str r1, [r4, r0] + b _0224AAAC +_0224A9AC: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + add r3, r2, #0 + mul r3, r1 + ldr r2, _0224AB2C ; =0x00002D59 + add r3, r4, r3 + ldrsb r2, [r3, r2] + cmp r2, #0xc + bge _0224AAAC + mov r2, #1 + add r1, #0x70 + str r2, [r4, r1] + mov r1, #0xd0 + str r1, [r4, r0] + b _0224AAAC +_0224A9CA: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + add r3, r2, #0 + mul r3, r1 + ldr r2, _0224AB30 ; =0x00002D5A + add r3, r4, r3 + ldrsb r2, [r3, r2] + cmp r2, #0xc + bge _0224AAAC + mov r2, #2 + add r1, #0x70 + str r2, [r4, r1] + mov r1, #0xd0 + str r1, [r4, r0] + b _0224AAAC +_0224A9E8: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + add r3, r2, #0 + mul r3, r1 + ldr r2, _0224AB34 ; =0x00002D5B + add r3, r4, r3 + ldrsb r2, [r3, r2] + cmp r2, #0xc + bge _0224AAAC + mov r2, #3 + add r1, #0x70 + str r2, [r4, r1] + mov r1, #0xd0 + str r1, [r4, r0] + b _0224AAAC +_0224AA06: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + add r3, r2, #0 + mul r3, r1 + ldr r2, _0224AB38 ; =0x00002D5C + add r3, r4, r3 + ldrsb r2, [r3, r2] + cmp r2, #0xc + bge _0224AAAC + mov r2, #4 + add r1, #0x70 + str r2, [r4, r1] + mov r1, #0xd0 + str r1, [r4, r0] + b _0224AAAC +_0224AA24: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + add r3, r2, #0 + mul r3, r1 + ldr r2, _0224AB3C ; =0x00002D5D + add r3, r4, r3 + ldrsb r2, [r3, r2] + cmp r2, #0xc + bge _0224AAAC + mov r2, #5 + add r1, #0x70 + str r2, [r4, r1] + mov r1, #0xd0 + str r1, [r4, r0] + b _0224AAAC +_0224AA42: + ldr r1, [r4, #0x6c] + mov r0, #0xc0 + mul r0, r1 + add r2, r4, r0 + ldr r0, _0224AB2C ; =0x00002D59 +_0224AA4C: + ldrsb r1, [r2, r0] + cmp r1, #0xc + blt _0224AA5A + add r5, r5, #1 + add r2, r2, #1 + cmp r5, #5 + blt _0224AA4C +_0224AA5A: + cmp r5, #5 + beq _0224AAAC + ldr r5, _0224AB2C ; =0x00002D59 + mov r7, #5 + mov r6, #0xc0 +_0224AA64: + bl FUN_0201B9EC + add r1, r7, #0 + blx _s32_div_f + ldr r0, [r4, #0x6c] + add r2, r0, #0 + mul r2, r6 + add r0, r4, r2 + add r0, r1, r0 + ldrsb r0, [r0, r5] + cmp r0, #0xc + beq _0224AA64 + mov r0, #0x13 + add r1, r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _0224AB1C ; =0x00003118 + mov r1, #0xd2 + str r1, [r4, r0] + b _0224AAAC +_0224AA8E: + ldr r2, [r4, #0x6c] + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _0224AB28 ; =0x00002DB0 + ldr r2, [r2, r1] + mov r1, #1 + lsl r1, r1, #0x14 + tst r1, r2 + bne _0224AAAC + mov r1, #0xd1 + str r1, [r4, r0] + b _0224AAAC +_0224AAA8: + ldr r1, _0224AB40 ; =0x00000109 + str r1, [r4, r0] +_0224AAAC: + ldr r0, [r4, #0x6c] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r0, r4, r2 + mov r2, #0xb7 + lsl r2, r2, #6 + ldr r3, [r0, r2] + mov r0, #1 + lsl r0, r0, #0x1a + tst r0, r3 + beq _0224AACC + ldr r0, _0224AB1C ; =0x00003118 + mov r1, #0 + str r1, [r4, r0] + b _0224AB0C +_0224AACC: + ldr r0, [sp, #4] + sub r2, #8 + add r3, r0, #0 + mul r3, r1 + add r0, r4, r3 + ldrh r0, [r0, r2] + add r1, #0x68 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0 + bne _0224AB04 + ldr r0, _0224AB1C ; =0x00003118 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0224AB04 + mov r0, #0xba + ldr r1, [r4, #0x64] + lsl r0, r0, #2 + add r3, r4, r0 + mov r0, #0x1c + add r2, r1, #0 + mul r2, r0 + ldr r1, [r3, r2] + mov r0, #2 + orr r0, r1 + str r0, [r3, r2] +_0224AB04: + mov r0, #0x46 + ldr r1, [r4, #0x6c] + lsl r0, r0, #2 + str r1, [r4, r0] +_0224AB0C: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224AB14: .word 0x00003114 +_0224AB18: .word 0x00002DA8 +_0224AB1C: .word 0x00003118 +_0224AB20: .word 0x00002D90 +_0224AB24: .word 0x00002D58 +_0224AB28: .word 0x00002DB0 +_0224AB2C: .word 0x00002D59 +_0224AB30: .word 0x00002D5A +_0224AB34: .word 0x00002D5B +_0224AB38: .word 0x00002D5C +_0224AB3C: .word 0x00002D5D +_0224AB40: .word 0x00000109 + + thumb_func_start MOD11_0224AB44 +MOD11_0224AB44: ; 0x0224AB44 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02249D90 + cmp r0, #0x68 + bne _0224ABD2 + ldr r5, [r4, #0x64] + mov r6, #0xc0 + add r3, r5, #0 + mul r3, r6 + ldr r0, _0224ABE8 ; =0x00002DB0 + add r2, r4, r3 + ldr r1, [r2, r0] + lsl r6, r6, #4 + tst r6, r1 + bne _0224ABE6 + mov r6, #0x70 + tst r6, r1 + bne _0224ABE6 + ldr r6, _0224ABEC ; =0x0000213C + ldr r7, [r4, r6] + mov r6, #2 + lsl r6, r6, #8 + tst r7, r6 + bne _0224ABE6 + lsl r6, r6, #3 + tst r1, r6 + bne _0224ABE6 + mov r6, #0xc1 + lsl r6, r6, #6 + lsl r5, r5, #1 + add r7, r4, r5 + add r5, r6, #0 + add r5, #0x9c + ldrh r5, [r7, r5] + ldr r1, [r4, r6] + cmp r1, r5 + bne _0224ABB8 + add r1, r0, #0 + add r1, #0x1c + ldr r1, [r2, r1] + lsl r1, r1, #5 + lsr r5, r1, #0x1c + cmp r5, #0xa + bhs _0224ABE6 + add r0, #0x1c + add r0, r4, r0 + ldr r2, [r0, r3] + ldr r1, _0224ABF0 ; =0xF87FFFFF + and r2, r1 + add r1, r5, #1 + lsl r1, r1, #0x1c + lsr r1, r1, #5 + orr r1, r2 + str r1, [r0, r3] + pop {r3, r4, r5, r6, r7, pc} +_0224ABB8: + add r0, #0x1c + add r2, r4, r0 + ldr r1, [r2, r3] + ldr r0, _0224ABF0 ; =0xF87FFFFF + and r0, r1 + str r0, [r2, r3] + ldr r0, [r4, #0x64] + ldr r1, [r4, r6] + lsl r0, r0, #1 + add r0, r4, r0 + add r6, #0x9c + strh r1, [r0, r6] + pop {r3, r4, r5, r6, r7, pc} +_0224ABD2: + ldr r0, _0224ABF4 ; =0x00002DCC + ldr r1, [r4, #0x64] + add r3, r4, r0 + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, [r3, r2] + ldr r0, _0224ABF0 ; =0xF87FFFFF + and r0, r1 + str r0, [r3, r2] +_0224ABE6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224ABE8: .word 0x00002DB0 +_0224ABEC: .word 0x0000213C +_0224ABF0: .word 0xF87FFFFF +_0224ABF4: .word 0x00002DCC + + thumb_func_start MOD11_0224ABF8 +MOD11_0224ABF8: ; 0x0224ABF8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4, #0x64] + add r0, r4, #0 + bl MOD11_02249D90 + cmp r0, #0x68 + bne _0224AC84 + ldr r5, _0224AC9C ; =0x0000216C + ldr r0, _0224ACA0 ; =0x801FDA49 + ldr r1, [r4, r5] + tst r0, r1 + beq _0224AC98 + ldr r2, [r4, #0x64] + mov r0, #0xc1 + lsl r0, r0, #6 + lsl r1, r2, #1 + ldr r3, [r4, r0] + add r1, r4, r1 + add r0, #0x9c + ldrh r0, [r1, r0] + cmp r3, r0 + bne _0224AC98 + mov r0, #0xc0 + add r1, r2, #0 + mul r1, r0 + ldr r3, _0224ACA4 ; =0x00002DCC + add r6, r4, r1 + ldr r0, [r6, r3] + lsl r0, r0, #5 + lsr r0, r0, #0x1c + beq _0224AC98 + mov r7, #0x1c + mul r7, r2 + mov r2, #0xb5 + add r7, r4, r7 + lsl r2, r2, #2 + ldr r7, [r7, r2] + lsl r7, r7, #0x17 + lsr r7, r7, #0x1d + bne _0224AC98 + add r7, r3, #0 + sub r7, #0x1c + ldr r6, [r6, r7] + mov r7, #0xc0 + lsl r7, r7, #4 + tst r7, r6 + bne _0224AC98 + mov r7, #0x70 + tst r7, r6 + bne _0224AC98 + sub r5, #0x30 + ldr r5, [r4, r5] + sub r2, #0xd4 + tst r2, r5 + bne _0224AC98 + mov r2, #1 + lsl r2, r2, #0xc + tst r2, r6 + bne _0224AC98 + add r2, r4, r3 + sub r0, r0, #1 + lsl r0, r0, #0x1c + ldr r4, [r2, r1] + ldr r3, _0224ACA8 ; =0xF87FFFFF + lsr r0, r0, #5 + and r3, r4 + orr r0, r3 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} +_0224AC84: + ldr r0, _0224ACA4 ; =0x00002DCC + ldr r1, [r4, #0x64] + add r3, r4, r0 + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r1, [r3, r2] + ldr r0, _0224ACA8 ; =0xF87FFFFF + and r0, r1 + str r0, [r3, r2] +_0224AC98: + pop {r3, r4, r5, r6, r7, pc} + nop +_0224AC9C: .word 0x0000216C +_0224ACA0: .word 0x801FDA49 +_0224ACA4: .word 0x00002DCC +_0224ACA8: .word 0xF87FFFFF + + thumb_func_start MOD11_0224ACAC +MOD11_0224ACAC: ; 0x0224ACAC + push {r4, r5, r6, lr} + add r5, r0, #0 + cmp r3, #1 + bne _0224ACBE + sub r0, r2, #2 + cmp r0, #1 + bhi _0224ACBE + mov r0, #1 + b _0224ACC0 +_0224ACBE: + mov r0, #0 +_0224ACC0: + cmp r0, #1 + mov r0, #0xc0 + add r4, r1, #0 + mul r4, r0 + ldr r2, _0224ACFC ; =0x00002D8C + add r1, r5, r4 + ldr r0, [r1, r2] + add r2, r2, #4 + ldr r1, [r1, r2] + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x30 + mov r6, #0 + bl FUN_02079A54 + ldr r1, _0224AD00 ; =0x00002DAC + add r2, r5, r4 + ldr r1, [r2, r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bne _0224ACF6 + cmp r0, #4 + beq _0224ACF8 + cmp r0, #3 + beq _0224ACF8 +_0224ACF6: + mov r6, #0xb +_0224ACF8: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224ACFC: .word 0x00002D8C +_0224AD00: .word 0x00002DAC + + thumb_func_start MOD11_0224AD04 +MOD11_0224AD04: ; 0x0224AD04 + push {r3, r4} + mov r3, #0xc0 + add r4, r1, #0 + mul r4, r3 + add r1, r0, r4 + ldr r0, _0224AD34 ; =0x00002DB0 + mov r2, #1 + ldr r0, [r1, r0] + lsl r1, r2, #0x16 + tst r1, r0 + bne _0224AD2C + lsl r1, r3, #4 + tst r1, r0 + bne _0224AD2C + mov r1, #0x70 + tst r1, r0 + bne _0224AD2C + lsl r1, r2, #0xc + tst r0, r1 + beq _0224AD2E +_0224AD2C: + mov r2, #0 +_0224AD2E: + add r0, r2, #0 + pop {r3, r4} + bx lr + .align 2, 0 +_0224AD34: .word 0x00002DB0 + + thumb_func_start MOD11_0224AD38 +MOD11_0224AD38: ; 0x0224AD38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + add r6, r2, #0 + bl MOD11_022301D4 + str r0, [sp, #0xc] + add r0, r5, #0 + bl MOD11_022302B0 + str r0, [sp, #8] + add r0, r5, #0 + bl MOD11_02230294 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #2 + lsl r1, r1, #8 + tst r0, r1 + beq _0224AD76 + add r0, r6, #0 + mov r1, #0x9a + mov r2, #0 + bl FUN_020671BC + add r2, r0, #0 + b _0224AD7A +_0224AD76: + sub r1, #0xd8 + ldr r2, [r4, r1] +_0224AD7A: + str r7, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r6, #0 + bl FUN_0206A014 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224AD90 +MOD11_0224AD90: ; 0x0224AD90 + lsl r1, r1, #8 + add r1, r0, r1 + mov r0, #0x23 + lsl r0, r0, #8 + ldrb r0, [r1, r0] + bx lr + + thumb_func_start MOD11_0224AD9C +MOD11_0224AD9C: ; 0x0224AD9C + mov r3, #0x1c + mul r3, r1 + add r1, r0, r3 + mov r0, #0xba + lsl r0, r0, #2 + ldr r1, [r1, r0] + mov r0, #8 + mov r2, #0 + tst r0, r1 + beq _0224ADB2 + mov r2, #1 +_0224ADB2: + add r0, r2, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0224ADB8 +MOD11_0224ADB8: ; 0x0224ADB8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #0 + bl MOD11_022301D4 + add r4, r0, #0 + bl FUN_020239BC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_020239CC + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0202398C + ldr r2, [r5, #0x64] + mov r1, #0xc0 + add r4, r2, #0 + mul r4, r1 + ldr r1, _0224AE10 ; =0x00002DB4 + add r3, r5, r4 + ldr r2, [r3, r1] + cmp r6, r2 + bne _0224AE0C + add r2, r1, #0 + add r2, #0xa + ldrb r2, [r3, r2] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1c + cmp r7, r2 + bne _0224AE0C + sub r1, #0x20 + add r1, r5, r1 + add r1, r1, r4 + mov r2, #7 + bl StringNotEqualN + cmp r0, #0 + bne _0224AE0C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224AE0C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224AE10: .word 0x00002DB4 + + thumb_func_start MOD11_0224AE14 +MOD11_0224AE14: ; 0x0224AE14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + mov r1, #0 + bl MOD11_022301D4 + add r4, r0, #0 + bl FUN_020239BC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_020239CC + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0202398C + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x8f + add r2, sp, #0 + bl FUN_020671BC + add r0, r5, #0 + mov r1, #7 + mov r2, #0 + bl FUN_020671BC + cmp r6, r0 + bne _0224AE72 + add r0, r5, #0 + mov r1, #0x9c + mov r2, #0 + bl FUN_020671BC + cmp r7, r0 + bne _0224AE72 + add r0, r4, #0 + add r1, sp, #0 + mov r2, #7 + bl StringNotEqualN + cmp r0, #0 + bne _0224AE72 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224AE72: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0224AE78 +MOD11_0224AE78: ; 0x0224AE78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r4, #0 + add r7, r0, #0 + add r5, r1, #0 + str r4, [sp, #4] + bl MOD11_0222FF84 + cmp r0, #0 + bgt _0224AE8E + b _0224B232 +_0224AE8E: + ldr r0, _0224B1B8 ; =0x00002D66 + add r6, r5, r0 +_0224AE92: + ldr r0, _0224B1BC ; =0x000021EC + add r1, r5, r4 + ldrb r1, [r1, r0] + mov r0, #0x46 + lsl r0, r0, #2 + str r1, [r5, r0] + ldr r3, [r5, r0] + mov r0, #0xc0 + mul r0, r3 + add r2, r5, r0 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r1, [r2, r0] + ldr r0, _0224B1C0 ; =0x0000015F + cmp r1, r0 + bne _0224AEC6 + ldr r0, _0224B1C4 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _0224AEC6 + add r0, r5, #0 + add r1, r3, #0 + bl MOD11_02246D1C + cmp r0, #0x3b + beq _0224AEC8 +_0224AEC6: + b _0224B096 +_0224AEC8: + mov r0, #0xd + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224AEF0 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _0224AEF2 +_0224AEF0: + b _0224B04A +_0224AEF2: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0xf3 + tst r1, r0 + bne _0224AF4A + mov r1, #0x46 + lsl r1, r1, #2 + ldr r2, [r5, r1] + mov r1, #0xc0 + mul r1, r2 + ldr r2, _0224B1C8 ; =0x00002D64 + add r1, r5, r1 + ldrb r2, [r1, r2] + cmp r2, #0 + beq _0224AF4A + ldr r2, _0224B1CC ; =0x00002D65 + ldrb r2, [r1, r2] + cmp r2, #0 + beq _0224AF4A + ldr r3, _0224B1C8 ; =0x00002D64 + mov r2, #0 + mov r0, #0x46 + strb r2, [r1, r3] + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r1, #0xc0 + add r6, r4, #0 + mul r6, r1 + add r6, r5, r6 + add r4, r3, #1 + strb r2, [r6, r4] + add r2, r3, #2 + ldr r0, [r5, r0] + add r2, r5, r2 + add r3, r0, #0 + mul r3, r1 + ldrb r1, [r2, r3] + mov r0, #0x1f + bic r1, r0 + mov r0, #1 + strb r1, [r2, r3] + str r0, [sp, #4] + b _0224B232 +_0224AF4A: + mov r1, #0x30 + tst r1, r0 + beq _0224AF9E + mov r1, #0x46 + lsl r1, r1, #2 + ldr r2, [r5, r1] + mov r1, #0xc0 + mul r1, r2 + ldr r2, _0224B1C8 ; =0x00002D64 + add r1, r5, r1 + ldrb r2, [r1, r2] + cmp r2, #0xa + beq _0224AF9E + ldr r2, _0224B1CC ; =0x00002D65 + ldrb r2, [r1, r2] + cmp r2, #0xa + beq _0224AF9E + ldr r3, _0224B1C8 ; =0x00002D64 + mov r2, #0xa + mov r0, #0x46 + strb r2, [r1, r3] + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r1, #0xc0 + add r6, r4, #0 + mul r6, r1 + add r6, r5, r6 + add r4, r3, #1 + strb r2, [r6, r4] + add r2, r3, #2 + ldr r0, [r5, r0] + add r2, r5, r2 + add r3, r0, #0 + mul r3, r1 + ldrb r1, [r2, r3] + mov r0, #0x1f + bic r1, r0 + mov r0, #1 + str r0, [sp, #4] + orr r0, r1 + strb r0, [r2, r3] + b _0224B232 +_0224AF9E: + mov r1, #3 + tst r1, r0 + beq _0224AFF4 + mov r1, #0x46 + lsl r1, r1, #2 + ldr r2, [r5, r1] + mov r1, #0xc0 + mul r1, r2 + ldr r2, _0224B1C8 ; =0x00002D64 + add r1, r5, r1 + ldrb r2, [r1, r2] + cmp r2, #0xb + beq _0224AFF4 + ldr r2, _0224B1CC ; =0x00002D65 + ldrb r2, [r1, r2] + cmp r2, #0xb + beq _0224AFF4 + ldr r3, _0224B1C8 ; =0x00002D64 + mov r2, #0xb + mov r0, #0x46 + strb r2, [r1, r3] + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r1, #0xc0 + add r6, r4, #0 + mul r6, r1 + add r6, r5, r6 + add r4, r3, #1 + strb r2, [r6, r4] + add r2, r3, #2 + ldr r0, [r5, r0] + add r2, r5, r2 + add r3, r0, #0 + mul r3, r1 + ldrb r1, [r2, r3] + mov r0, #0x1f + bic r1, r0 + mov r0, #2 + orr r0, r1 + strb r0, [r2, r3] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224AFF4: + mov r1, #0xc0 + tst r0, r1 + beq _0224B096 + add r0, r1, #0 + add r0, #0x58 + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224B1C8 ; =0x00002D64 + add r0, r5, r0 + ldrb r1, [r0, r1] + cmp r1, #0xf + beq _0224B096 + ldr r1, _0224B1CC ; =0x00002D65 + ldrb r1, [r0, r1] + cmp r1, #0xf + beq _0224B096 + ldr r3, _0224B1C8 ; =0x00002D64 + mov r2, #0xf + strb r2, [r0, r3] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r1, #0xc0 + add r6, r4, #0 + mul r6, r1 + add r6, r5, r6 + add r4, r3, #1 + strb r2, [r6, r4] + add r2, r3, #2 + ldr r0, [r5, r0] + add r2, r5, r2 + add r3, r0, #0 + mul r3, r1 + ldrb r1, [r2, r3] + mov r0, #0x1f + bic r1, r0 + mov r0, #3 + orr r0, r1 + strb r0, [r2, r3] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224B04A: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + ldr r1, _0224B1C8 ; =0x00002D64 + add r0, r5, r0 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0224B096 + ldr r1, _0224B1CC ; =0x00002D65 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0224B096 + ldr r3, _0224B1C8 ; =0x00002D64 + mov r2, #0 + strb r2, [r0, r3] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r1, #0xc0 + add r6, r4, #0 + mul r6, r1 + add r6, r5, r6 + add r4, r3, #1 + strb r2, [r6, r4] + add r2, r3, #2 + ldr r0, [r5, r0] + add r2, r5, r2 + add r3, r0, #0 + mul r3, r1 + ldrb r1, [r2, r3] + mov r0, #0x1f + bic r1, r0 + mov r0, #1 + strb r1, [r2, r3] + str r0, [sp, #4] + b _0224B232 +_0224B096: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + mov r1, #0xb5 + add r0, r5, r0 + lsl r1, r1, #6 + ldrh r2, [r0, r1] + ldr r1, _0224B1D0 ; =0x000001A5 + cmp r2, r1 + bne _0224B1A2 + ldr r1, _0224B1C4 ; =0x00002D8C + ldr r0, [r0, r1] + cmp r0, #0 + beq _0224B1A2 + mov r0, #0xd + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224B182 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224B182 + mov r0, #6 + lsl r0, r0, #6 + ldr r2, [r5, r0] + mov r0, #0xf3 + tst r0, r2 + bne _0224B10C + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xc0 + add r3, r0, #0 + mul r3, r1 + ldrb r0, [r6, r3] + lsl r1, r0, #0x1b + lsr r1, r1, #0x1b + cmp r1, #1 + bne _0224B10C + mov r1, #0x1f + bic r0, r1 + strb r0, [r6, r3] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224B10C: + mov r0, #0x30 + tst r0, r2 + beq _0224B134 + mov r0, #0x46 + lsl r0, r0, #2 +_0224B116: + ldr r0, [r5, r0] + mov r1, #0xc0 + add r3, r0, #0 + mul r3, r1 + ldrb r0, [r6, r3] + lsl r1, r0, #0x1b + lsr r1, r1, #0x1b + bne _0224B134 + mov r1, #0x1f + bic r0, r1 + mov r1, #1 + orr r0, r1 + str r1, [sp, #4] + strb r0, [r6, r3] + b _0224B232 +_0224B134: + mov r0, #3 + tst r0, r2 + beq _0224B15C + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xc0 + add r3, r0, #0 + mul r3, r1 + ldrb r0, [r6, r3] + lsl r1, r0, #0x1b + lsr r1, r1, #0x1b + cmp r1, #1 + bne _0224B15C + mov r1, #0x1f + bic r0, r1 + strb r0, [r6, r3] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224B15C: + mov r0, #0xc0 + tst r0, r2 + beq _0224B1A2 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + ldrb r2, [r6, r0] + lsl r1, r2, #0x1b + lsr r1, r1, #0x1b + cmp r1, #1 + bne _0224B1A2 + mov r1, #0x1f + bic r2, r1 + strb r2, [r6, r0] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224B182: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + ldrb r2, [r6, r0] + lsl r1, r2, #0x1b + lsr r1, r1, #0x1b + cmp r1, #1 + bne _0224B1A2 + mov r1, #0x1f + bic r2, r1 + strb r2, [r6, r0] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224B1A2: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + mov r1, #0xb5 + add r0, r5, r0 + lsl r1, r1, #6 + ldrh r2, [r0, r1] + ldr r1, _0224B1D4 ; =0x000001ED + b _0224B1D8 + .align 2, 0 +_0224B1B8: .word 0x00002D66 +_0224B1BC: .word 0x000021EC +_0224B1C0: .word 0x0000015F +_0224B1C4: .word 0x00002D8C +_0224B1C8: .word 0x00002D64 +_0224B1CC: .word 0x00002D65 +_0224B1D0: .word 0x000001A5 +_0224B1D4: .word 0x000001ED +_0224B1D8: + cmp r2, r1 + bne _0224B224 + ldr r1, _0224B238 ; =0x00002D8C + ldr r1, [r0, r1] + cmp r1, #0 + beq _0224B224 + ldr r1, _0224B23C ; =0x00002DB8 + mov r2, #5 + ldrh r0, [r0, r1] + mov r1, #1 + bl FUN_0206E7B8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069F24 + mov r1, #0x46 + lsl r1, r1, #2 + ldr r1, [r5, r1] + mov r2, #0xc0 + add r3, r1, #0 + mul r3, r2 + ldrb r1, [r6, r3] + lsl r2, r1, #0x1b + lsr r2, r2, #0x1b + cmp r0, r2 + beq _0224B224 + mov r2, #0x1f + lsl r0, r0, #0x18 + bic r1, r2 + lsr r2, r0, #0x18 + mov r0, #0x1f + and r0, r2 + orr r0, r1 + strb r0, [r6, r3] + mov r0, #1 + str r0, [sp, #4] + b _0224B232 +_0224B224: + add r0, r7, #0 + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + bge _0224B232 + b _0224AE92 +_0224B232: + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224B238: .word 0x00002D8C +_0224B23C: .word 0x00002DB8 + + thumb_func_start MOD11_0224B240 +MOD11_0224B240: ; 0x0224B240 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + str r1, [sp] + mov r7, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _0224B282 + ldr r5, [sp] + ldr r4, _0224B288 ; =0x0000312C +_0224B256: + mov r1, #0 +_0224B258: + add r0, r5, r1 + strb r1, [r0, r4] + add r1, r1, #1 + cmp r1, #6 + blt _0224B258 + ldr r1, [sp] + ldr r0, [sp, #4] + add r3, r1, #0 + add r6, r3, r7 + ldr r3, _0224B28C ; =0x0000219C + add r2, r7, #0 + ldrb r3, [r6, r3] + bl MOD11_0224B290 + ldr r0, [sp, #4] + add r5, r5, #6 + add r7, r7, #1 + bl MOD11_0222FF84 + cmp r7, r0 + blt _0224B256 +_0224B282: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B288: .word 0x0000312C +_0224B28C: .word 0x0000219C + + thumb_func_start MOD11_0224B290 +MOD11_0224B290: ; 0x0224B290 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + add r5, r2, #0 + add r4, r3, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r1, r0 + beq _0224B2AA + mov r1, #0x18 + tst r1, r0 + beq _0224B2BE +_0224B2AA: + mov r1, #0x10 + tst r0, r1 + beq _0224B2E2 + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02230260 + mov r1, #1 + tst r0, r1 + bne _0224B2E2 +_0224B2BE: + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02230260 + cmp r0, #4 + beq _0224B2D6 + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02230260 + cmp r0, #5 + bne _0224B2DA +_0224B2D6: + mov r1, #1 + b _0224B2DC +_0224B2DA: + mov r1, #0 +_0224B2DC: + mov r0, #1 + and r5, r0 + b _0224B2E4 +_0224B2E2: + mov r1, #0 +_0224B2E4: + mov r2, #6 + mul r2, r5 + ldr r3, _0224B30C ; =0x0000312C + mov r0, #0 + add r7, r6, r2 +_0224B2EE: + ldrb r5, [r7, r3] + cmp r4, r5 + beq _0224B2FC + add r0, r0, #1 + add r7, r7, #1 + cmp r0, #6 + blt _0224B2EE +_0224B2FC: + ldr r3, _0224B30C ; =0x0000312C + add r3, r6, r3 + add r4, r3, r2 + ldrb r3, [r4, r1] + ldrb r2, [r4, r0] + strb r2, [r4, r1] + strb r3, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224B30C: .word 0x0000312C + + thumb_func_start MOD11_0224B310 +MOD11_0224B310: ; 0x0224B310 + push {r4, r5, r6, r7, lr} + sub sp, #0x8c + str r0, [sp, #4] + ldr r0, [sp, #0xa0] + add r5, r1, #0 + str r0, [sp, #0xa0] + ldr r0, [sp, #0xb4] + str r2, [sp, #8] + str r0, [sp, #0xb4] + mov r0, #0 + str r0, [sp, #0x84] + ldr r0, [sp, #0xb4] + str r3, [sp, #0xc] + cmp r0, #1 + beq _0224B334 + bhi _0224B334 + bl ErrorHandling +_0224B334: + add r0, sp, #0x90 + ldrb r0, [r0, #0x1c] + mov r2, #1 + mov r3, #0 + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r5, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] + add r0, sp, #0xb0 + ldrb r0, [r0] + mov r2, #2 + mov r3, #0 + str r0, [sp, #0x20] + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x78] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #4 + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #5 + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x13 + mov r3, #0 + bl MOD11_02243420 + sub r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x70] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x14 + mov r3, #0 + bl MOD11_02243420 + sub r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x6c] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x16 + mov r3, #0 + bl MOD11_02243420 + sub r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x68] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x17 + mov r3, #0 + bl MOD11_02243420 + sub r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x64] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x2b + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r2, #0 + str r0, [sp, #0x60] + ldr r1, [sp, #0x24] + add r0, r5, #0 + add r3, r2, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #0 + str r0, [sp, #0x58] + ldr r1, [sp, #0x20] + add r0, r5, #0 + add r3, r2, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x54] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x2f + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x50] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x2f + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x30 + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4c] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x30 + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x48] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x34 + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x44] + ldr r1, [sp, #0x24] + add r0, r5, #0 + bl MOD11_02246D1C + add r7, r0, #0 + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD11_02246D1C + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x1d + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x40] + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x1d + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x38] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x20] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x34] + ldr r1, [sp, #0x24] + add r0, r5, #0 + bl MOD11_02249B4C + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD11_0224C12C + str r0, [sp, #0x30] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD11_0224C12C + str r0, [sp, #0x2c] + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD11_02249B4C + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD11_0224C12C + str r0, [sp, #0x28] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD11_0224C12C + ldr r0, [sp, #4] + bl MOD11_0222FF74 + str r0, [sp, #0x5c] + add r0, sp, #0x90 + ldrh r4, [r0, #0x14] + cmp r4, #0 + bne _0224B534 + ldr r0, [sp, #8] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224B754 ; =0x000003E1 + ldrb r4, [r1, r0] +_0224B534: + cmp r7, #0x60 + bne _0224B53C + mov r6, #0 + b _0224B558 +_0224B53C: + add r0, sp, #0x90 + ldrb r1, [r0, #0x18] + cmp r1, #0 + bne _0224B550 + ldr r0, [sp, #8] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224B758 ; =0x000003E2 + ldrb r6, [r1, r0] + b _0224B558 +_0224B550: + mov r0, #0x3f + and r0, r1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_0224B558: + ldr r0, _0224B75C ; =0x00002158 + ldr r0, [r5, r0] + cmp r0, #0xa + bge _0224B564 + bl ErrorHandling +_0224B564: + ldr r0, _0224B75C ; =0x00002158 + mov r1, #0xa + ldr r0, [r5, r0] + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, sp, #0x90 + ldrb r0, [r0, #0x1c] + mov r1, #0xc0 + mul r1, r0 + add r2, r5, r1 + mov r1, #0xb7 + lsl r1, r1, #6 + ldr r2, [r2, r1] + mov r1, #2 + lsl r1, r1, #8 + tst r1, r2 + beq _0224B594 + cmp r6, #0xd + bne _0224B594 + lsl r1, r4, #0x11 + lsr r4, r1, #0x10 +_0224B594: + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x75 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _0224B5B2 + mov r0, #0xf + mul r0, r4 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B5B2: + cmp r7, #0x65 + bne _0224B5CE + ldr r0, [sp, #8] + cmp r0, #0xa5 + beq _0224B5CE + cmp r4, #0x3c + bhi _0224B5CE + mov r0, #0xf + mul r0, r4 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B5CE: + ldr r0, [sp, #8] + lsl r0, r0, #4 + str r0, [sp, #0x18] + add r1, r5, r0 + mov r0, #0x3e + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r7, #0x25 + str r0, [sp, #0x80] + beq _0224B5E6 + cmp r7, #0x4a + bne _0224B5EE +_0224B5E6: + ldr r0, [sp, #0x7c] + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224B5EE: + cmp r7, #0x70 + bne _0224B61C + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #3 + mov r3, #0 + bl MOD11_0224C474 + str r0, [sp, #0x88] + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x59 + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x88] + sub r0, r1, r0 + cmp r0, #5 + bge _0224B61C + ldr r0, [sp, #0x7c] + lsl r0, r0, #0xf + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224B61C: + ldr r3, _0224B760 ; =0x0225E336 + mov r2, #0 +_0224B620: + ldrb r1, [r3] + ldr r0, [sp, #0x30] + cmp r0, r1 + bne _0224B640 + ldrb r0, [r3, #1] + cmp r6, r0 + bne _0224B640 + ldr r0, [sp, #0x2c] + mov r1, #0x64 + add r0, #0x64 + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0224B648 +_0224B640: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #0x21 + blo _0224B620 +_0224B648: + ldr r0, [sp, #0x30] + cmp r0, #0x36 + bne _0224B660 + ldr r1, [sp, #0x7c] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224B660: + ldr r0, [sp, #0x30] + cmp r0, #0x7c + bne _0224B678 + ldr r1, [sp, #0x74] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] +_0224B678: + ldr r0, [sp, #0x30] + cmp r0, #0x3b + bne _0224B6A6 + ldr r0, [sp, #0x5c] + mov r1, #0x80 + tst r0, r1 + bne _0224B6A6 + ldr r1, _0224B764 ; =0x0000FE84 + ldr r0, [sp, #0x58] + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _0224B6A6 + ldr r1, [sp, #0x74] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] +_0224B6A6: + ldr r0, [sp, #0x28] + cmp r0, #0x3b + bne _0224B6D4 + ldr r0, [sp, #0x5c] + mov r1, #0x80 + tst r0, r1 + bne _0224B6D4 + ldr r1, _0224B764 ; =0x0000FE84 + ldr r0, [sp, #0x54] + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _0224B6D4 + ldr r1, [sp, #0x10] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] +_0224B6D4: + ldr r0, [sp, #0x30] + cmp r0, #0x3c + bne _0224B6EA + ldr r1, _0224B768 ; =0x0000016E + ldr r0, [sp, #0x58] + cmp r0, r1 + bne _0224B6EA + ldr r0, [sp, #0x74] + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] +_0224B6EA: + ldr r0, [sp, #0x28] + cmp r0, #0x3d + bne _0224B700 + ldr r1, _0224B768 ; =0x0000016E + ldr r0, [sp, #0x54] + cmp r0, r1 + bne _0224B700 + ldr r0, [sp, #0x10] + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] +_0224B700: + ldr r0, [sp, #0x30] + cmp r0, #0x46 + bne _0224B710 + ldr r0, [sp, #0x58] + cmp r0, #0x19 + bne _0224B710 + lsl r0, r4, #0x11 + lsr r4, r0, #0x10 +_0224B710: + ldr r0, [sp, #0x28] + cmp r0, #0x59 + bne _0224B724 + ldr r0, [sp, #0x54] + cmp r0, #0x84 + bne _0224B724 + ldr r0, [sp, #0x78] + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + str r0, [sp, #0x78] +_0224B724: + ldr r0, [sp, #0x30] + cmp r0, #0x5a + bne _0224B740 + ldr r1, _0224B76C ; =0x0000FF98 + ldr r0, [sp, #0x58] + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _0224B740 + ldr r0, [sp, #0x7c] + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224B740: + ldr r0, [sp, #0x30] + cmp r0, #2 + bne _0224B78A + cmp r6, #0x10 + beq _0224B74E + cmp r6, #8 + bne _0224B78A +_0224B74E: + ldr r1, _0224B770 ; =0x000001E3 + b _0224B774 + nop +_0224B754: .word 0x000003E1 +_0224B758: .word 0x000003E2 +_0224B75C: .word 0x00002158 +_0224B760: .word 0x0225E336 +_0224B764: .word 0x0000FE84 +_0224B768: .word 0x0000016E +_0224B76C: .word 0x0000FF98 +_0224B770: .word 0x000001E3 +_0224B774: + ldr r0, [sp, #0x58] + cmp r0, r1 + bne _0224B78A + ldr r0, [sp, #0x2c] + mov r1, #0x64 + add r0, #0x64 + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B78A: + ldr r0, [sp, #0x30] + cmp r0, #3 + bne _0224B7B2 + cmp r6, #0x10 + beq _0224B798 + cmp r6, #0xb + bne _0224B7B2 +_0224B798: + mov r1, #0x79 + ldr r0, [sp, #0x58] + lsl r1, r1, #2 + cmp r0, r1 + bne _0224B7B2 + ldr r0, [sp, #0x2c] + mov r1, #0x64 + add r0, #0x64 + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B7B2: + ldr r0, [sp, #0x30] + cmp r0, #0x5d + bne _0224B7CE + ldr r0, [sp, #0x80] + cmp r0, #0 + bne _0224B7CE + ldr r0, [sp, #0x2c] + mov r1, #0x64 + add r0, #0x64 + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B7CE: + ldr r0, [sp, #0x30] + cmp r0, #0x5e + bne _0224B7EC + ldr r0, [sp, #0x80] + cmp r0, #1 + bne _0224B7EC + ldr r0, [sp, #0x2c] + mov r1, #0x64 + add r0, #0x64 + str r0, [sp, #0x2c] + mul r0, r4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B7EC: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r3, #0x2f + bl MOD11_02246D84 + cmp r0, #1 + bne _0224B808 + cmp r6, #0xa + beq _0224B804 + cmp r6, #0xf + bne _0224B808 +_0224B804: + lsl r0, r4, #0xf + lsr r4, r0, #0x10 +_0224B808: + cmp r7, #0x37 + bne _0224B81E + ldr r1, [sp, #0x7c] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224B81E: + cmp r7, #0x3e + bne _0224B83A + ldr r0, [sp, #0x48] + cmp r0, #0 + beq _0224B83A + ldr r1, [sp, #0x7c] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224B83A: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r3, #0x3f + bl MOD11_02246D84 + cmp r0, #1 + bne _0224B862 + ldr r0, [sp, #0x44] + cmp r0, #0 + beq _0224B862 + ldr r1, [sp, #0x78] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x78] +_0224B862: + cmp r7, #0x39 + bne _0224B88C + mov r0, #0x3a + str r0, [sp] + ldr r0, [sp, #4] + ldr r3, [sp, #0x24] + add r1, r5, #0 + mov r2, #1 + bl MOD11_02246870 + cmp r0, #0 + beq _0224B88C + ldr r1, [sp, #0x74] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] +_0224B88C: + cmp r7, #0x3a + bne _0224B8B6 + mov r0, #0x39 + str r0, [sp] + ldr r0, [sp, #4] + ldr r3, [sp, #0x24] + add r1, r5, #0 + mov r2, #1 + bl MOD11_02246870 + cmp r0, #0 + beq _0224B8B6 + ldr r1, [sp, #0x74] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] +_0224B8B6: + cmp r6, #0xd + bne _0224B8CE + mov r2, #1 + ldr r0, [sp, #4] + add r1, r5, #0 + lsl r2, r2, #0x10 + bl MOD11_02247238 + cmp r0, #0 + beq _0224B8CE + lsl r0, r4, #0xf + lsr r4, r0, #0x10 +_0224B8CE: + cmp r6, #0xa + bne _0224B8E6 + mov r2, #2 + ldr r0, [sp, #4] + add r1, r5, #0 + lsl r2, r2, #0x10 + bl MOD11_02247238 + cmp r0, #0 + beq _0224B8E6 + lsl r0, r4, #0xf + lsr r4, r0, #0x10 +_0224B8E6: + cmp r6, #0xc + bne _0224B90A + cmp r7, #0x41 + bne _0224B90A + ldr r0, [sp, #0x4c] + mov r1, #3 + blx _s32_div_f + ldr r1, [sp, #0x50] + cmp r1, r0 + bgt _0224B90A + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B90A: + cmp r6, #0xa + bne _0224B92E + cmp r7, #0x42 + bne _0224B92E + ldr r0, [sp, #0x4c] + mov r1, #3 + blx _s32_div_f + ldr r1, [sp, #0x50] + cmp r1, r0 + bgt _0224B92E + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B92E: + cmp r6, #0xb + bne _0224B952 + cmp r7, #0x43 + bne _0224B952 + ldr r0, [sp, #0x4c] + mov r1, #3 + blx _s32_div_f + ldr r1, [sp, #0x50] + cmp r1, r0 + bgt _0224B952 + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B952: + cmp r6, #6 + bne _0224B976 + cmp r7, #0x44 + bne _0224B976 + ldr r0, [sp, #0x4c] + mov r1, #3 + blx _s32_div_f + ldr r1, [sp, #0x50] + cmp r1, r0 + bgt _0224B976 + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B976: + cmp r6, #0xa + bne _0224B98E + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r3, #0x55 + bl MOD11_02246D84 + cmp r0, #1 + bne _0224B98E + lsl r0, r4, #0xf + lsr r4, r0, #0x10 +_0224B98E: + cmp r6, #0xa + bne _0224B9B0 + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r3, #0x57 + bl MOD11_02246D84 + cmp r0, #1 + bne _0224B9B0 + mov r0, #0x7d + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224B9B0: + cmp r7, #0x56 + bne _0224B9F0 + ldr r0, [sp, #0x70] + mov r1, #5 + lsl r0, r0, #0x19 + asr r0, r0, #0x18 + str r0, [sp, #0x70] + ldr r0, [sp, #0x70] + mvn r1, r1 + cmp r0, r1 + bge _0224B9C8 + str r1, [sp, #0x70] +_0224B9C8: + ldr r0, [sp, #0x70] + cmp r0, #6 + ble _0224B9D2 + mov r0, #6 + str r0, [sp, #0x70] +_0224B9D2: + ldr r0, [sp, #0x68] + mov r1, #5 + lsl r0, r0, #0x19 + asr r0, r0, #0x18 + str r0, [sp, #0x68] + ldr r0, [sp, #0x68] + mvn r1, r1 + cmp r0, r1 + bge _0224B9E6 + str r1, [sp, #0x68] +_0224B9E6: + ldr r0, [sp, #0x68] + cmp r0, #6 + ble _0224B9F0 + mov r0, #6 + str r0, [sp, #0x68] +_0224B9F0: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r3, #0x56 + bl MOD11_02246D84 + cmp r0, #1 + bne _0224BA3C + ldr r0, [sp, #0x6c] + mov r1, #5 + lsl r0, r0, #0x19 + asr r0, r0, #0x18 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x6c] + mvn r1, r1 + cmp r0, r1 + bge _0224BA14 + str r1, [sp, #0x6c] +_0224BA14: + ldr r0, [sp, #0x6c] + cmp r0, #6 + ble _0224BA1E + mov r0, #6 + str r0, [sp, #0x6c] +_0224BA1E: + ldr r0, [sp, #0x64] + mov r1, #5 + lsl r0, r0, #0x19 + asr r0, r0, #0x18 + str r0, [sp, #0x64] + ldr r0, [sp, #0x64] + mvn r1, r1 + cmp r0, r1 + bge _0224BA32 + str r1, [sp, #0x64] +_0224BA32: + ldr r0, [sp, #0x64] + cmp r0, #6 + ble _0224BA3C + mov r0, #6 + str r0, [sp, #0x64] +_0224BA3C: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r3, #0x6d + bl MOD11_02246D84 + cmp r0, #1 + bne _0224BA52 + mov r0, #0 + str r0, [sp, #0x70] + str r0, [sp, #0x68] +_0224BA52: + cmp r7, #0x6d + bne _0224BA5C + mov r0, #0 + str r0, [sp, #0x6c] + str r0, [sp, #0x64] +_0224BA5C: + ldr r0, [sp, #0x70] + add r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x70] + ldr r0, [sp, #0x6c] + add r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x68] + add r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x68] + ldr r0, [sp, #0x64] + add r0, r0, #6 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x64] + cmp r7, #0x4f + bne _0224BAAA + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x3c] + cmp r1, r0 + bne _0224BAAA + add r0, r1, #0 + cmp r0, #2 + beq _0224BAAA + ldr r0, [sp, #0x3c] + cmp r0, #2 + beq _0224BAAA + mov r0, #0x7d + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224BAAA: + cmp r7, #0x4f + bne _0224BAD0 + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x3c] + cmp r1, r0 + beq _0224BAD0 + add r0, r1, #0 + cmp r0, #2 + beq _0224BAD0 + ldr r0, [sp, #0x3c] + cmp r0, #2 + beq _0224BAD0 + mov r0, #0x4b + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0224BAD0: + ldr r2, _0224BDDC ; =0x0225E2BA + mov r3, #0 +_0224BAD4: + ldrh r1, [r2] + ldr r0, [sp, #8] + cmp r0, r1 + bne _0224BAF0 + cmp r7, #0x59 + bne _0224BAF0 + mov r0, #0xc + mul r0, r4 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0224BAF8 +_0224BAF0: + add r3, r3, #1 + add r2, r2, #2 + cmp r3, #0xf + blo _0224BAD4 +_0224BAF8: + mov r0, #0xd + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224BBCA + mov r0, #0x4c + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224BBCA + ldr r0, [sp, #0xa0] + mov r1, #0x30 + and r0, r1 + str r0, [sp, #0x1c] + beq _0224BB40 + cmp r7, #0x5e + bne _0224BB40 + ldr r1, [sp, #0x74] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x74] +_0224BB40: + ldr r0, [sp, #0xa0] + mov r1, #0xc + tst r0, r1 + beq _0224BB66 + ldr r0, [sp, #0x38] + cmp r0, #5 + beq _0224BB54 + ldr r0, [sp, #0x34] + cmp r0, #5 + bne _0224BB66 +_0224BB54: + ldr r1, [sp, #0x10] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] +_0224BB66: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0224BB92 + mov r0, #0x7a + str r0, [sp] + ldr r0, [sp, #4] + ldr r3, [sp, #0x24] + add r1, r5, #0 + mov r2, #1 + bl MOD11_02246870 + cmp r0, #0 + beq _0224BB92 + ldr r1, [sp, #0x7c] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x7c] +_0224BB92: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0224BBCA + ldr r1, [sp, #0x24] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x68 + beq _0224BBCA + mov r0, #0x7a + str r0, [sp] + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r5, #0 + mov r2, #1 + bl MOD11_02246870 + cmp r0, #0 + beq _0224BBCA + ldr r1, [sp, #0x10] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] +_0224BBCA: + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _0224BDE0 ; =0x000003DE + ldrh r0, [r1, r0] + str r0, [sp, #0x14] + cmp r0, #7 + bne _0224BBE0 + ldr r0, [sp, #0x78] + lsl r0, r0, #0xf + lsr r0, r0, #0x10 + str r0, [sp, #0x78] +_0224BBE0: + ldr r0, [sp, #0x80] + cmp r0, #0 + bne _0224BCE2 + ldr r0, [sp, #0xb4] + cmp r0, #1 + bls _0224BC0E + ldr r0, [sp, #0x70] + cmp r0, #6 + ble _0224BC08 + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldr r2, [sp, #0x7c] + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x84] + b _0224BC24 +_0224BC08: + ldr r0, [sp, #0x7c] + str r0, [sp, #0x84] + b _0224BC24 +_0224BC0E: + ldr r0, [sp, #0x70] + ldr r2, [sp, #0x7c] + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x84] +_0224BC24: + ldr r0, [sp, #0x84] + add r1, r0, #0 + ldr r0, [sp, #0x60] + mul r1, r4 + str r1, [sp, #0x84] + lsl r0, r0, #1 + mov r1, #5 + blx _s32_div_f + add r1, r0, #2 + ldr r0, [sp, #0x84] + mul r1, r0 + ldr r0, [sp, #0xb4] + str r1, [sp, #0x84] + cmp r0, #1 + bls _0224BC60 + ldr r0, [sp, #0x6c] + cmp r0, #6 + bge _0224BC76 + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldr r2, [sp, #0x78] + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x78] + b _0224BC76 +_0224BC60: + ldr r0, [sp, #0x6c] + ldr r2, [sp, #0x78] + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x78] +_0224BC76: + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x78] + blx _s32_div_f + mov r1, #0x32 + blx _s32_div_f + str r0, [sp, #0x84] + ldr r0, [sp, #0x48] + mov r1, #0x10 + tst r0, r1 + beq _0224BC9C + cmp r7, #0x3e + beq _0224BC9C + ldr r0, [sp, #0x84] + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + str r0, [sp, #0x84] +_0224BC9C: + ldr r0, [sp, #0xc] + mov r2, #1 + tst r0, r2 + beq _0224BCB0 + ldr r0, [sp, #0xb4] + cmp r0, #1 + bne _0224BCB0 + ldr r0, [sp, #0x14] + cmp r0, #0xba + bne _0224BCB2 +_0224BCB0: + b _0224BDC8 +_0224BCB2: + ldr r0, [sp, #0x5c] + mov r1, #2 + tst r0, r1 + beq _0224BCD6 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r5, #0 + bl MOD11_022467AC + cmp r0, #2 + bne _0224BCD6 + ldr r0, [sp, #0x84] + mov r1, #3 + lsl r0, r0, #1 + blx _s32_div_f + str r0, [sp, #0x84] + b _0224BDC8 +_0224BCD6: + ldr r0, [sp, #0x84] + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + str r0, [sp, #0x84] + b _0224BDC8 +_0224BCE2: + cmp r0, #1 + bne _0224BDC8 + ldr r0, [sp, #0xb4] + cmp r0, #1 + bls _0224BD0E + ldr r0, [sp, #0x68] + cmp r0, #6 + ble _0224BD08 + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldr r2, [sp, #0x74] + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x84] + b _0224BD24 +_0224BD08: + ldr r0, [sp, #0x74] + str r0, [sp, #0x84] + b _0224BD24 +_0224BD0E: + ldr r0, [sp, #0x68] + ldr r2, [sp, #0x74] + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x84] +_0224BD24: + ldr r0, [sp, #0x84] + add r1, r0, #0 + ldr r0, [sp, #0x60] + mul r1, r4 + str r1, [sp, #0x84] + lsl r0, r0, #1 + mov r1, #5 + blx _s32_div_f + add r1, r0, #2 + ldr r0, [sp, #0x84] + mul r1, r0 + ldr r0, [sp, #0xb4] + str r1, [sp, #0x84] + cmp r0, #1 + bls _0224BD60 + ldr r0, [sp, #0x64] + cmp r0, #6 + bge _0224BD76 + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldr r2, [sp, #0x10] + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x10] + b _0224BD76 +_0224BD60: + ldr r0, [sp, #0x64] + ldr r2, [sp, #0x10] + lsl r1, r0, #1 + ldr r0, _0224BDE4 ; =0x0225E284 + ldrb r0, [r0, r1] + mul r0, r2 + ldr r2, _0224BDE8 ; =0x0225E285 + ldrb r1, [r2, r1] + blx _s32_div_f + str r0, [sp, #0x10] +_0224BD76: + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x10] + blx _s32_div_f + mov r1, #0x32 + blx _s32_div_f + str r0, [sp, #0x84] + ldr r0, [sp, #0xc] + mov r1, #2 + tst r0, r1 + beq _0224BDC8 + ldr r0, [sp, #0xb4] + cmp r0, #1 + bne _0224BDC8 + ldr r0, [sp, #0x14] + cmp r0, #0xba + beq _0224BDC8 + ldr r0, [sp, #0x5c] + tst r0, r1 + beq _0224BDBE + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r5, #0 + mov r2, #1 + bl MOD11_022467AC + cmp r0, #2 + bne _0224BDBE + ldr r0, [sp, #0x84] + mov r1, #3 + lsl r0, r0, #1 + blx _s32_div_f + str r0, [sp, #0x84] + b _0224BDC8 +_0224BDBE: + ldr r0, [sp, #0x84] + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + str r0, [sp, #0x84] +_0224BDC8: + ldr r0, [sp, #0x5c] + mov r1, #2 + add r4, r0, #0 + and r4, r1 + beq _0224BE16 + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _0224BDEC ; =0x000003E6 + b _0224BDF0 + nop +_0224BDDC: .word 0x0225E2BA +_0224BDE0: .word 0x000003DE +_0224BDE4: .word 0x0225E284 +_0224BDE8: .word 0x0225E285 +_0224BDEC: .word 0x000003E6 +_0224BDF0: + ldrh r0, [r1, r0] + cmp r0, #4 + bne _0224BE16 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r5, #0 + mov r2, #1 + bl MOD11_022467AC + cmp r0, #2 + bne _0224BE16 + ldr r0, [sp, #0x84] + lsl r1, r0, #1 + add r1, r0, r1 + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + str r0, [sp, #0x84] +_0224BE16: + cmp r4, #0 + beq _0224BE46 + ldr r0, [sp, #0x18] + add r1, r5, r0 + ldr r0, _0224BF08 ; =0x000003E6 + ldrh r0, [r1, r0] + cmp r0, #8 + bne _0224BE46 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r5, #0 + mov r2, #0 + bl MOD11_022467AC + cmp r0, #2 + blo _0224BE46 + ldr r0, [sp, #0x84] + lsl r1, r0, #1 + add r1, r0, r1 + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + str r0, [sp, #0x84] +_0224BE46: + mov r0, #0xd + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224BEDE + mov r0, #0x4c + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224BEDE + ldr r0, [sp, #0xa0] + mov r1, #3 + tst r0, r1 + beq _0224BE9A + cmp r6, #0xa + beq _0224BE80 + cmp r6, #0xb + beq _0224BE8C + b _0224BE9A +_0224BE80: + ldr r0, [sp, #0x84] + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + str r0, [sp, #0x84] + b _0224BE9A +_0224BE8C: + ldr r1, [sp, #0x84] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + str r0, [sp, #0x84] +_0224BE9A: + ldr r1, _0224BF0C ; =0x000080CF + ldr r0, [sp, #0xa0] + tst r0, r1 + beq _0224BEB2 + ldr r0, [sp, #8] + cmp r0, #0x4c + bne _0224BEB2 + ldr r0, [sp, #0x84] + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + str r0, [sp, #0x84] +_0224BEB2: + ldr r0, [sp, #0xa0] + mov r1, #0x30 + tst r0, r1 + beq _0224BEDE + cmp r6, #0xa + beq _0224BEC4 + cmp r6, #0xb + beq _0224BED4 + b _0224BEDE +_0224BEC4: + ldr r1, [sp, #0x84] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + str r0, [sp, #0x84] + b _0224BEDE +_0224BED4: + ldr r0, [sp, #0x84] + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + str r0, [sp, #0x84] +_0224BEDE: + ldr r1, [sp, #0x24] + add r0, r5, #0 + mov r2, #0x49 + mov r3, #0 + bl MOD11_02243420 + cmp r0, #0 + beq _0224BF00 + cmp r6, #0xa + bne _0224BF00 + ldr r1, [sp, #0x84] + mov r0, #0xf + mul r0, r1 + mov r1, #0xa + blx _s32_div_f + str r0, [sp, #0x84] +_0224BF00: + ldr r0, [sp, #0x84] + add r0, r0, #2 + add sp, #0x8c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224BF08: .word 0x000003E6 +_0224BF0C: .word 0x000080CF + + thumb_func_start MOD11_0224BF10 +MOD11_0224BF10: ; 0x0224BF10 + push {r4, lr} + add r4, r1, #0 + beq _0224BF36 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + mov r1, #0x64 + sub r0, r1, r0 + mul r0, r4 + blx _s32_div_f + add r4, r0, #0 + bne _0224BF36 + mov r4, #1 +_0224BF36: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0224BF3C +MOD11_0224BF3C: ; 0x0224BF3C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r7, #1 + str r1, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + bl MOD11_02249B4C + add r1, r0, #0 + add r0, r4, #0 + add r2, r7, #0 + bl MOD11_0224C12C + add r3, r0, #0 + ldr r1, [sp] + mov r0, #0xc0 + mul r0, r1 + mov r1, #0xb5 + lsl r1, r1, #6 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x70 + ldr r0, [r2, r0] + ldr r6, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0xc0 + mul r0, r6 + add r6, r4, r0 + add r0, r1, #0 + add r0, #0x80 + ldr r0, [r6, r0] + ldrh r5, [r2, r1] + add r1, #0x27 + str r0, [sp, #0xc] + ldrb r0, [r2, r1] + cmp r0, #0x69 + bne _0224BF8C + add r2, r7, #0 + b _0224BF8E +_0224BF8C: + mov r2, #0 +_0224BF8E: + cmp r3, #0x42 + bne _0224BF96 + mov r6, #1 + b _0224BF98 +_0224BF96: + mov r6, #0 +_0224BF98: + mov r1, #1 + ldr r0, [sp, #0x10] + lsl r1, r1, #0x14 + tst r0, r1 + beq _0224BFA6 + mov r0, #1 + b _0224BFA8 +_0224BFA6: + mov r0, #0 +_0224BFA8: + cmp r3, #0x58 + bne _0224BFB4 + cmp r5, #0x71 + bne _0224BFB4 + mov r1, #1 + b _0224BFB6 +_0224BFB4: + mov r1, #0 +_0224BFB6: + cmp r3, #0x5b + bne _0224BFC2 + cmp r5, #0x53 + bne _0224BFC2 + mov r3, #1 + b _0224BFC4 +_0224BFC2: + mov r3, #0 +_0224BFC4: + lsl r0, r0, #1 + add r5, r6, r0 + ldr r0, [sp, #8] + add r0, r0, r5 + add r2, r2, r0 + lsl r0, r1, #1 + add r1, r2, r0 + lsl r0, r3, #1 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #4 + bls _0224BFE0 + mov r5, #4 +_0224BFE0: + bl FUN_0201B9EC + ldr r1, _0224C040 ; =0x0225E244 + ldrb r1, [r1, r5] + blx _s32_div_f + cmp r1, #0 + bne _0224C026 + ldr r1, [sp] + ldr r2, [sp, #4] + add r0, r4, #0 + mov r3, #4 + bl MOD11_02246D84 + cmp r0, #0 + bne _0224C026 + ldr r1, [sp] + ldr r2, [sp, #4] + add r0, r4, #0 + mov r3, #0x4b + bl MOD11_02246D84 + cmp r0, #0 + bne _0224C026 + mov r0, #7 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xc + tst r0, r1 + bne _0224C026 + mov r1, #2 + ldr r0, [sp, #0xc] + lsl r1, r1, #0xe + tst r0, r1 + bne _0224C026 + mov r7, #2 +_0224C026: + cmp r7, #2 + bne _0224C038 + ldr r1, [sp] + add r0, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x61 + bne _0224C038 + mov r7, #3 +_0224C038: + add r0, r7, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224C040: .word 0x0225E244 + + thumb_func_start MOD11_0224C044 +MOD11_0224C044: ; 0x0224C044 + push {r3, r4} + ldr r4, _0224C074 ; =0x0225E300 + ldr r1, _0224C078 ; =0x0000FFFE + mov r3, #0 +_0224C04C: + ldrh r2, [r4] + cmp r0, r2 + beq _0224C05C + add r4, r4, #2 + ldrh r2, [r4] + add r3, r3, #1 + cmp r2, r1 + bne _0224C04C +_0224C05C: + ldr r0, _0224C074 ; =0x0225E300 + lsl r1, r3, #1 + ldrh r1, [r0, r1] + ldr r0, _0224C078 ; =0x0000FFFE + cmp r1, r0 + bne _0224C06E + mov r0, #1 + pop {r3, r4} + bx lr +_0224C06E: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 +_0224C074: .word 0x0225E300 +_0224C078: .word 0x0000FFFE + + thumb_func_start MOD11_0224C07C +MOD11_0224C07C: ; 0x0224C07C + push {r3, r4} + ldr r4, _0224C0AC ; =0x0225E300 + ldr r1, _0224C0B0 ; =0x0000FFFF + mov r3, #0 +_0224C084: + ldrh r2, [r4] + cmp r0, r2 + beq _0224C094 + add r4, r4, #2 + ldrh r2, [r4] + add r3, r3, #1 + cmp r2, r1 + bne _0224C084 +_0224C094: + ldr r0, _0224C0AC ; =0x0225E300 + lsl r1, r3, #1 + ldrh r1, [r0, r1] + ldr r0, _0224C0B0 ; =0x0000FFFF + cmp r1, r0 + bne _0224C0A6 + mov r0, #1 + pop {r3, r4} + bx lr +_0224C0A6: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 +_0224C0AC: .word 0x0225E300 +_0224C0B0: .word 0x0000FFFF + + thumb_func_start MOD11_0224C0B4 +MOD11_0224C0B4: ; 0x0224C0B4 + push {r4, r5} + lsl r1, r1, #4 + add r4, r0, r1 + ldr r1, _0224C0E8 ; =0x000003DE + ldr r3, _0224C0EC ; =0x0225E254 + ldrh r1, [r4, r1] + ldr r4, _0224C0E8 ; =0x000003DE + mov r2, #0 +_0224C0C4: + ldrh r5, [r3] + lsl r5, r5, #4 + add r5, r0, r5 + ldrh r5, [r5, r4] + cmp r1, r5 + beq _0224C0D8 + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #6 + blo _0224C0C4 +_0224C0D8: + cmp r2, #6 + bne _0224C0E2 + mov r0, #1 + pop {r4, r5} + bx lr +_0224C0E2: + mov r0, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0224C0E8: .word 0x000003DE +_0224C0EC: .word 0x0225E254 + + thumb_func_start MOD11_0224C0F0 +MOD11_0224C0F0: ; 0x0224C0F0 + push {r4, r5} + lsl r1, r1, #4 + add r4, r0, r1 + ldr r1, _0224C124 ; =0x000003DE + ldr r3, _0224C128 ; =0x0225E26C + ldrh r1, [r4, r1] + ldr r4, _0224C124 ; =0x000003DE + mov r2, #0 +_0224C100: + ldrh r5, [r3] + lsl r5, r5, #4 + add r5, r0, r5 + ldrh r5, [r5, r4] + cmp r1, r5 + beq _0224C114 + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #6 + blo _0224C100 +_0224C114: + cmp r2, #6 + bne _0224C11E + mov r0, #1 + pop {r4, r5} + bx lr +_0224C11E: + mov r0, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0224C124: .word 0x000003DE +_0224C128: .word 0x0225E26C + + thumb_func_start MOD11_0224C12C +MOD11_0224C12C: ; 0x0224C12C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0 + add r4, r2, #0 + bl FUN_0206E640 + add r1, r0, #0 + ldr r0, _0224C14C ; =0x00002120 + ldr r0, [r5, r0] + bl FUN_0206EB78 + add r1, r4, #0 + bl FUN_0206E7DC + pop {r3, r4, r5, pc} + .align 2, 0 +_0224C14C: .word 0x00002120 + + thumb_func_start MOD11_0224C150 +MOD11_0224C150: ; 0x0224C150 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r2, #0 + bl MOD11_0222FF84 + add r6, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _0224C174 +_0224C162: + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02230270 + cmp r5, r0 + beq _0224C174 + add r4, r4, #1 + cmp r4, r6 + blt _0224C162 +_0224C174: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0224C178 +MOD11_0224C178: ; 0x0224C178 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + add r5, r1, #0 + bl MOD11_0222FF84 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + sub r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0 + ble _0224C1FE +_0224C194: + ldr r0, [sp, #0x14] + add r7, r0, #1 + ldr r0, [sp, #0x10] + cmp r7, r0 + bge _0224C1F2 + ldr r0, [sp, #0x14] + add r0, r5, r0 + str r0, [sp, #0xc] +_0224C1A4: + ldr r1, [sp, #0xc] + ldr r0, _0224C204 ; =0x000021E8 + ldrb r6, [r1, r0] + add r1, r5, r7 + ldrb r4, [r1, r0] + lsl r0, r6, #4 + str r1, [sp, #8] + add r1, r5, r0 + ldr r0, _0224C208 ; =0x000021B4 + ldr r0, [r1, r0] + lsl r1, r4, #4 + add r2, r5, r1 + ldr r1, _0224C208 ; =0x000021B4 + ldr r1, [r2, r1] + cmp r0, r1 + bne _0224C1EA + cmp r0, #1 + beq _0224C1CC + mov r0, #1 + b _0224C1CE +_0224C1CC: + mov r0, #0 +_0224C1CE: + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD11_02244248 + cmp r0, #0 + beq _0224C1EA + ldr r1, [sp, #0xc] + ldr r0, _0224C204 ; =0x000021E8 + strb r4, [r1, r0] + ldr r1, [sp, #8] + strb r6, [r1, r0] +_0224C1EA: + ldr r0, [sp, #0x10] + add r7, r7, #1 + cmp r7, r0 + blt _0224C1A4 +_0224C1F2: + ldr r0, [sp, #0x14] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [sp, #0x14] + cmp r1, r0 + blt _0224C194 +_0224C1FE: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224C204: .word 0x000021E8 +_0224C208: .word 0x000021B4 + + thumb_func_start MOD11_0224C20C +MOD11_0224C20C: ; 0x0224C20C + push {r4, r5} + mov r4, #0xc0 + mul r4, r1 + add r5, r0, r4 + ldr r0, _0224C24C ; =0x00002DB0 + mov r1, #1 + ldr r4, [r5, r0] + lsl r1, r1, #0x18 + mov r3, #0 + tst r1, r4 + bne _0224C22C + add r0, #0x10 + ldr r1, [r5, r0] + ldr r0, _0224C250 ; =0x200400C0 + tst r0, r1 + beq _0224C244 +_0224C22C: + ldr r4, _0224C254 ; =0x0225E2D8 + mov r1, #0 +_0224C230: + ldr r0, [r4] + cmp r2, r0 + bne _0224C23A + mov r3, #1 + b _0224C246 +_0224C23A: + add r1, r1, #1 + add r4, r4, #4 + cmp r1, #0xa + blo _0224C230 + b _0224C246 +_0224C244: + mov r3, #1 +_0224C246: + add r0, r3, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0224C24C: .word 0x00002DB0 +_0224C250: .word 0x200400C0 +_0224C254: .word 0x0225E2D8 + + thumb_func_start MOD11_0224C258 +MOD11_0224C258: ; 0x0224C258 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r1, [r5, #0x64] + str r0, [sp] + add r0, r5, #0 + add r4, r2, #0 + mov r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0xc] + ldr r1, [r5, #0x64] + add r0, r5, #0 + add r2, r6, #0 + bl MOD11_02249DA4 + str r0, [sp, #0x10] + ldr r1, [r5, #0x6c] + add r0, r5, #0 + bl MOD11_02249D90 + add r7, r0, #0 + ldr r1, [r5, #0x6c] + add r0, r5, #0 + add r2, r6, #0 + bl MOD11_02249DA4 + str r0, [sp, #8] + ldr r0, [sp] + ldr r1, [r5, #0x64] + bl MOD11_02230270 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + cmp r0, #0x57 + bne _0224C2F4 + ldr r0, _0224C41C ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #0xc + tst r0, r1 + beq _0224C2F4 + ldr r0, [r5, #0x64] + mov r1, #0x1c + mul r1, r0 + add r2, r5, r1 + mov r1, #0xbb + lsl r1, r1, #2 + ldr r2, [r2, r1] + cmp r2, #0 + beq _0224C2F4 + ldr r1, [r5, #0x6c] + cmp r0, r1 + beq _0224C2F4 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _0224C420 ; =0x00002D8C + add r1, r5, r1 + ldr r0, [r1, r3] + add r3, r3, #4 + ldr r1, [r1, r3] + cmp r0, r1 + bhs _0224C2F4 + cmp r0, #0 + beq _0224C2F4 + ldr r1, [sp, #0x10] + neg r0, r2 + bl MOD11_022476C0 + ldr r1, _0224C424 ; =0x0000215C + mov r6, #1 + str r0, [r5, r1] + mov r0, #0x46 + ldr r1, [r5, #0x64] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0xd5 + str r0, [r4] +_0224C2F4: + ldr r0, [sp, #0xc] + cmp r0, #0x61 + bne _0224C356 + ldr r1, [r5, #0x64] + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _0224C356 + ldr r0, _0224C41C ; =0x0000213C + ldr r1, [r5, r0] + mov r0, #2 + lsl r0, r0, #0xc + tst r0, r1 + beq _0224C356 + ldr r0, _0224C428 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + mov r0, #0x3e + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #2 + beq _0224C356 + ldr r1, [r5, #0x64] + mov r0, #0xc0 + add r2, r1, #0 + mul r2, r0 + ldr r3, _0224C420 ; =0x00002D8C + add r2, r5, r2 + ldr r1, [r2, r3] + cmp r1, #0 + beq _0224C356 + add r1, r3, #4 + ldr r1, [r2, r1] + sub r0, #0xc1 + mul r0, r1 + mov r1, #0xa + bl MOD11_022476C0 + ldr r1, _0224C424 ; =0x0000215C + mov r6, #1 + str r0, [r5, r1] + mov r0, #0x46 + ldr r1, [r5, #0x64] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0xd6 + str r0, [r4] +_0224C356: + cmp r7, #0x2d + bne _0224C3AA + ldr r1, [r5, #0x64] + mov r0, #0xc0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _0224C420 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _0224C3AA + add r0, r5, #0 + bl MOD11_02246D1C + cmp r0, #0x62 + beq _0224C3AA + ldr r1, [r5, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r1, r5, r0 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224C3AA + ldr r0, [r5, #0x64] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r0, _0224C42C ; =0x00002D90 + add r2, r5, r2 + ldr r2, [r2, r0] + sub r1, #0xc1 + add r0, r2, #0 + mul r0, r1 + ldr r1, [sp, #8] + bl MOD11_022476C0 + ldr r1, _0224C424 ; =0x0000215C + mov r6, #1 + str r0, [r5, r1] + lsr r0, r1, #5 + str r0, [r4] +_0224C3AA: + cmp r7, #0x73 + bne _0224C416 + ldr r0, [r5, #0x64] + mov r1, #0xc0 + mul r1, r0 + add r3, r5, r1 + ldr r1, _0224C420 ; =0x00002D8C + ldr r2, [r3, r1] + cmp r2, #0 + beq _0224C416 + add r1, #0x2c + ldrh r1, [r3, r1] + cmp r1, #0 + bne _0224C416 + add r1, r5, r0 + ldr r0, _0224C430 ; =0x0000219C + ldrb r0, [r1, r0] + bl FUN_0206A92C + ldr r1, [sp, #4] + lsl r1, r1, #3 + add r2, r5, r1 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r1, [r2, r1] + lsl r1, r1, #3 + lsr r1, r1, #0x1a + tst r0, r1 + bne _0224C416 + ldr r1, [r5, #0x6c] + mov r0, #0x1c + mul r0, r1 + add r2, r5, r0 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0 + bne _0224C3FE + add r0, #8 + ldr r0, [r2, r0] + cmp r0, #0 + beq _0224C416 +_0224C3FE: + ldr r0, _0224C428 ; =0x00003044 + ldr r0, [r5, r0] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _0224C434 ; =0x000003E9 + ldrb r1, [r1, r0] + mov r0, #1 + tst r1, r0 + beq _0224C416 + mov r1, #0xd8 + str r1, [r4] + add r6, r0, #0 +_0224C416: + add r0, r6, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C41C: .word 0x0000213C +_0224C420: .word 0x00002D8C +_0224C424: .word 0x0000215C +_0224C428: .word 0x00003044 +_0224C42C: .word 0x00002D90 +_0224C430: .word 0x0000219C +_0224C434: .word 0x000003E9 + + thumb_func_start MOD11_0224C438 +MOD11_0224C438: ; 0x0224C438 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r4, r1, #0 + add r1, r6, #0 + add r5, r0, #0 + bl MOD11_02246D1C + cmp r0, #0x2e + bne _0224C46A + cmp r6, #0xff + beq _0224C46A + ldr r0, _0224C46C ; =0x00002D6C + add r1, r5, r0 + mov r0, #0xc0 + mul r0, r4 + add r0, r1, r0 + lsl r1, r4, #1 + add r2, r5, r1 + ldr r1, _0224C470 ; =0x000030BC + ldrh r2, [r2, r1] + ldrb r1, [r0, r2] + cmp r1, #0 + beq _0224C46A + sub r1, r1, #1 + strb r1, [r0, r2] +_0224C46A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0224C46C: .word 0x00002D6C +_0224C470: .word 0x000030BC + + thumb_func_start MOD11_0224C474 +MOD11_0224C474: ; 0x0224C474 + push {r4, lr} + add r4, r1, #0 + cmp r2, #0xc + bhi _0224C528 + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C488: ; jump table + .short _0224C4A2 - _0224C488 - 2 ; case 0 + .short _0224C4B4 - _0224C488 - 2 ; case 1 + .short _0224C4CA - _0224C488 - 2 ; case 2 + .short _0224C4D2 - _0224C488 - 2 ; case 3 + .short _0224C4DA - _0224C488 - 2 ; case 4 + .short _0224C4E0 - _0224C488 - 2 ; case 5 + .short _0224C4E6 - _0224C488 - 2 ; case 6 + .short _0224C4F2 - _0224C488 - 2 ; case 7 + .short _0224C4FE - _0224C488 - 2 ; case 8 + .short _0224C508 - _0224C488 - 2 ; case 9 + .short _0224C510 - _0224C488 - 2 ; case 10 + .short _0224C516 - _0224C488 - 2 ; case 11 + .short _0224C51E - _0224C488 - 2 ; case 12 +_0224C4A2: + add r1, r3, #0 + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r1, r0] + pop {r4, pc} +_0224C4B4: + add r1, r3, #0 + bl MOD11_02230270 + lsl r0, r0, #3 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1d + pop {r4, pc} +_0224C4CA: + ldr r0, _0224C530 ; =0x0000219C + add r1, r4, r3 + ldrb r0, [r1, r0] + pop {r4, pc} +_0224C4D2: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + pop {r4, pc} +_0224C4DA: + ldr r0, _0224C534 ; =0x00003109 + ldrb r0, [r4, r0] + pop {r4, pc} +_0224C4E0: + ldr r0, _0224C538 ; =0x0000311D + ldrb r0, [r4, r0] + pop {r4, pc} +_0224C4E6: + lsl r0, r3, #2 + add r1, r4, r0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r1, r0] + pop {r4, pc} +_0224C4F2: + lsl r0, r3, #2 + add r1, r4, r0 + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r1, r0] + pop {r4, pc} +_0224C4FE: + lsl r0, r3, #4 + add r1, r4, r0 + ldr r0, _0224C53C ; =0x000021A8 + ldr r0, [r1, r0] + pop {r4, pc} +_0224C508: + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r4, r0] + pop {r4, pc} +_0224C510: + ldr r0, _0224C540 ; =0x00003108 + ldrb r0, [r4, r0] + pop {r4, pc} +_0224C516: + ldr r0, _0224C544 ; =0x000003DA + add r1, r4, r3 + ldrb r0, [r1, r0] + pop {r4, pc} +_0224C51E: + lsl r0, r3, #4 + add r1, r4, r0 + ldr r0, _0224C548 ; =0x000021B0 + ldr r0, [r1, r0] + pop {r4, pc} +_0224C528: + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0224C530: .word 0x0000219C +_0224C534: .word 0x00003109 +_0224C538: .word 0x0000311D +_0224C53C: .word 0x000021A8 +_0224C540: .word 0x00003108 +_0224C544: .word 0x000003DA +_0224C548: .word 0x000021B0 + + thumb_func_start MOD11_0224C54C +MOD11_0224C54C: ; 0x0224C54C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [sp, #0x10] + cmp r2, #0xb + bhi _0224C5CA + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C562: ; jump table + .short _0224C57A - _0224C562 - 2 ; case 0 + .short _0224C58C - _0224C562 - 2 ; case 1 + .short _0224C5AA - _0224C562 - 2 ; case 2 + .short _0224C5B2 - _0224C562 - 2 ; case 3 + .short _0224C5CA - _0224C562 - 2 ; case 4 + .short _0224C5CA - _0224C562 - 2 ; case 5 + .short _0224C5CA - _0224C562 - 2 ; case 6 + .short _0224C5CA - _0224C562 - 2 ; case 7 + .short _0224C5CA - _0224C562 - 2 ; case 8 + .short _0224C5BA - _0224C562 - 2 ; case 9 + .short _0224C5CA - _0224C562 - 2 ; case 10 + .short _0224C5C2 - _0224C562 - 2 ; case 11 +_0224C57A: + add r1, r3, #0 + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + str r4, [r1, r0] + pop {r3, r4, r5, pc} +_0224C58C: + add r1, r3, #0 + bl MOD11_02230270 + mov r1, #0x71 + lsl r1, r1, #2 + add r1, r5, r1 + lsl r0, r0, #3 + ldr r3, [r1, r0] + ldr r2, _0224C5D0 ; =0xFFFF8FFF + and r3, r2 + lsl r2, r4, #0x1d + lsr r2, r2, #0x11 + orr r2, r3 + str r2, [r1, r0] + pop {r3, r4, r5, pc} +_0224C5AA: + ldr r0, _0224C5D4 ; =0x0000219C + add r1, r5, r3 + strb r4, [r1, r0] + pop {r3, r4, r5, pc} +_0224C5B2: + mov r0, #0x15 + lsl r0, r0, #4 + str r4, [r5, r0] + pop {r3, r4, r5, pc} +_0224C5BA: + mov r0, #0x3d + lsl r0, r0, #4 + strb r4, [r5, r0] + pop {r3, r4, r5, pc} +_0224C5C2: + ldr r0, _0224C5D8 ; =0x000003DA + add r1, r5, r3 + strb r4, [r1, r0] + pop {r3, r4, r5, pc} +_0224C5CA: + bl ErrorHandling + pop {r3, r4, r5, pc} + .align 2, 0 +_0224C5D0: .word 0xFFFF8FFF +_0224C5D4: .word 0x0000219C +_0224C5D8: .word 0x000003DA + + thumb_func_start MOD11_0224C5DC +MOD11_0224C5DC: ; 0x0224C5DC + push {r4, lr} + add r3, r0, #0 + add r3, #0x88 + str r1, [r3] + add r3, r0, #0 + ldr r1, _0224C640 ; =0x007FFFFF + add r4, r2, #0 + and r4, r1 + add r3, #0x8c + str r4, [r3] + lsl r1, r1, #0x17 + add r3, r2, #0 + and r3, r1 + add r1, r0, #0 + add r1, #0x90 + str r3, [r1] + mov r3, #1 + lsl r3, r3, #0x1e + add r1, r2, #0 + tst r1, r3 + beq _0224C60E + ldr r1, [r0, #0x64] + add r0, #0x94 + str r1, [r0] + b _0224C62E +_0224C60E: + lsl r1, r3, #1 + tst r1, r2 + beq _0224C61C + ldr r1, [r0, #0x6c] + add r0, #0x94 + str r1, [r0] + b _0224C62E +_0224C61C: + lsr r1, r3, #1 + tst r1, r2 + bne _0224C628 + lsr r1, r3, #2 + tst r1, r2 + beq _0224C62E +_0224C628: + mov r1, #0 + add r0, #0x94 + str r1, [r0] +_0224C62E: + cmp r4, #0x91 + blo _0224C636 + bl ErrorHandling +_0224C636: + ldr r0, _0224C644 ; =0x0225E4C8 + lsl r1, r4, #2 + ldr r0, [r0, r1] + pop {r4, pc} + nop +_0224C640: .word 0x007FFFFF +_0224C644: .word 0x0225E4C8 + + thumb_func_start MOD11_0224C648 +MOD11_0224C648: ; 0x0224C648 + push {r3, r4, r5, lr} + ldr r1, _0224C6D0 ; =0x0000213C + add r5, r2, #0 + ldr r2, [r0, r1] + mov r0, #2 + lsl r0, r0, #0xa + add r1, r2, #0 + ldr r4, [sp, #0x14] + tst r1, r0 + bne _0224C672 + lsl r0, r0, #4 + tst r0, r2 + bne _0224C672 + cmp r3, #0 + beq _0224C672 + add r0, r3, #0 + mul r0, r5 + mov r1, #0xa + bl MOD11_022476C0 + add r3, r0, #0 +_0224C672: + cmp r5, #0 + beq _0224C680 + cmp r5, #5 + beq _0224C692 + cmp r5, #0x14 + beq _0224C6B0 + b _0224C6CC +_0224C680: + ldr r1, [r4] + mov r0, #8 + orr r1, r0 + mov r0, #4 + bic r1, r0 + mov r0, #2 + bic r1, r0 + str r1, [r4] + b _0224C6CC +_0224C692: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224C6CC + ldr r1, [r4] + mov r0, #2 + tst r0, r1 + beq _0224C6A8 + mov r0, #2 + bic r1, r0 + str r1, [r4] + b _0224C6CC +_0224C6A8: + mov r0, #4 + orr r0, r1 + str r0, [r4] + b _0224C6CC +_0224C6B0: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224C6CC + ldr r1, [r4] + mov r0, #4 + tst r0, r1 + beq _0224C6C6 + mov r0, #4 + bic r1, r0 + str r1, [r4] + b _0224C6CC +_0224C6C6: + mov r0, #2 + orr r0, r1 + str r0, [r4] +_0224C6CC: + add r0, r3, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224C6D0: .word 0x0000213C + + thumb_func_start MOD11_0224C6D4 +MOD11_0224C6D4: ; 0x0224C6D4 + lsl r1, r1, #4 + add r2, r0, r1 + ldr r1, _0224C738 ; =0x000003DE + ldrh r3, [r2, r1] + cmp r3, #0x9b + bgt _0224C706 + cmp r3, #0x97 + blt _0224C6EC + beq _0224C726 + cmp r3, #0x9b + beq _0224C726 + b _0224C732 +_0224C6EC: + cmp r3, #0x27 + bgt _0224C6F8 + bge _0224C726 + cmp r3, #0x1a + beq _0224C726 + b _0224C732 +_0224C6F8: + cmp r3, #0x4b + bgt _0224C700 + beq _0224C726 + b _0224C732 +_0224C700: + cmp r3, #0x91 + beq _0224C726 + b _0224C732 +_0224C706: + mov r2, #1 + lsl r2, r2, #8 + cmp r3, r2 + bgt _0224C716 + bge _0224C726 + cmp r3, #0xff + beq _0224C726 + b _0224C732 +_0224C716: + add r1, r2, #7 + cmp r3, r1 + bgt _0224C720 + beq _0224C726 + b _0224C732 +_0224C720: + add r2, #0x11 + cmp r3, r2 + bne _0224C732 +_0224C726: + ldr r1, _0224C73C ; =0x0000213C + ldr r1, [r0, r1] + mov r0, #2 + lsl r0, r0, #8 + and r0, r1 + bx lr +_0224C732: + mov r0, #1 + bx lr + nop +_0224C738: .word 0x000003DE +_0224C73C: .word 0x0000213C + + thumb_func_start MOD11_0224C740 +MOD11_0224C740: ; 0x0224C740 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + cmp r2, #0x1b + bne _0224C756 + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + ldr r0, _0224C80C ; =0x00002D64 + ldrb r4, [r1, r0] + b _0224C76A +_0224C756: + cmp r2, #0x1c + bne _0224C766 + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + ldr r0, _0224C810 ; =0x00002D65 + ldrb r4, [r1, r0] + b _0224C76A +_0224C766: + bl ErrorHandling +_0224C76A: + mov r0, #0xc0 + mul r0, r6 + mov r2, #0xb5 + add r1, r5, r0 + lsl r2, r2, #6 + ldrh r3, [r1, r2] + ldr r0, _0224C814 ; =0x000001ED + cmp r3, r0 + bne _0224C806 + add r0, r2, #0 + add r0, #0x27 + ldrb r0, [r1, r0] + cmp r0, #0x79 + bne _0224C806 + add r2, #0x78 + ldrh r1, [r1, r2] + add r0, r5, #0 + mov r2, #1 + bl MOD11_0224C12C + sub r0, #0x7d + cmp r0, #0xf + bhi _0224C804 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224C7A4: ; jump table + .short _0224C7C4 - _0224C7A4 - 2 ; case 0 + .short _0224C7C8 - _0224C7A4 - 2 ; case 1 + .short _0224C7CC - _0224C7A4 - 2 ; case 2 + .short _0224C7D0 - _0224C7A4 - 2 ; case 3 + .short _0224C7D4 - _0224C7A4 - 2 ; case 4 + .short _0224C7D8 - _0224C7A4 - 2 ; case 5 + .short _0224C7DC - _0224C7A4 - 2 ; case 6 + .short _0224C7E0 - _0224C7A4 - 2 ; case 7 + .short _0224C7E4 - _0224C7A4 - 2 ; case 8 + .short _0224C7E8 - _0224C7A4 - 2 ; case 9 + .short _0224C7EC - _0224C7A4 - 2 ; case 10 + .short _0224C7F0 - _0224C7A4 - 2 ; case 11 + .short _0224C7F4 - _0224C7A4 - 2 ; case 12 + .short _0224C7F8 - _0224C7A4 - 2 ; case 13 + .short _0224C7FC - _0224C7A4 - 2 ; case 14 + .short _0224C800 - _0224C7A4 - 2 ; case 15 +_0224C7C4: + mov r4, #0xa + b _0224C806 +_0224C7C8: + mov r4, #0xb + b _0224C806 +_0224C7CC: + mov r4, #0xd + b _0224C806 +_0224C7D0: + mov r4, #0xc + b _0224C806 +_0224C7D4: + mov r4, #0xf + b _0224C806 +_0224C7D8: + mov r4, #1 + b _0224C806 +_0224C7DC: + mov r4, #3 + b _0224C806 +_0224C7E0: + mov r4, #4 + b _0224C806 +_0224C7E4: + mov r4, #2 + b _0224C806 +_0224C7E8: + mov r4, #0xe + b _0224C806 +_0224C7EC: + mov r4, #6 + b _0224C806 +_0224C7F0: + mov r4, #5 + b _0224C806 +_0224C7F4: + mov r4, #7 + b _0224C806 +_0224C7F8: + mov r4, #0x10 + b _0224C806 +_0224C7FC: + mov r4, #0x11 + b _0224C806 +_0224C800: + mov r4, #8 + b _0224C806 +_0224C804: + mov r4, #0 +_0224C806: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_0224C80C: .word 0x00002D64 +_0224C810: .word 0x00002D65 +_0224C814: .word 0x000001ED + + thumb_func_start MOD11_0224C818 +MOD11_0224C818: ; 0x0224C818 + lsl r1, r1, #3 + add r3, r0, r1 + mov r2, #0 + mov r0, #0x37 + add r1, r2, #0 + lsl r0, r0, #4 +_0224C824: + add r2, r2, #1 + strh r1, [r3, r0] + add r3, r3, #2 + cmp r2, #4 + blt _0224C824 + bx lr + + thumb_func_start MOD11_0224C830 +MOD11_0224C830: ; 0x0224C830 + add r1, r0, r1 + mov r0, #0x39 + mov r2, #0 + lsl r0, r0, #4 + strb r2, [r1, r0] + bx lr + + thumb_func_start MOD11_0224C83C +MOD11_0224C83C: ; 0x0224C83C + lsl r1, r1, #1 + add r1, r0, r1 + mov r0, #0xe5 + mov r2, #0 + lsl r0, r0, #2 + strh r2, [r1, r0] + bx lr + .align 2, 0 + + thumb_func_start MOD11_0224C84C +MOD11_0224C84C: ; 0x0224C84C + push {r4, r5, r6, lr} + add r4, r2, #0 + add r3, r0, #0 + mov r2, #0xc0 + add r5, r1, #0 + mul r1, r2 + ldr r6, _0224C8BC ; =0x00002D67 + add r1, r3, r1 + ldrb r1, [r1, r6] + mov r0, #0xff + cmp r1, #0x3b + beq _0224C890 + cmp r1, #0x24 + beq _0224C890 + cmp r1, #0x79 + beq _0224C890 + mul r2, r4 + add r2, r3, r2 + ldrb r2, [r2, r6] + cmp r2, #0x3b + beq _0224C890 + cmp r2, #0x24 + beq _0224C890 + cmp r2, #0x79 + beq _0224C890 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _0224C88C + add r0, r4, #0 + pop {r4, r5, r6, pc} +_0224C88C: + add r0, r5, #0 + pop {r4, r5, r6, pc} +_0224C890: + cmp r1, #0x3b + beq _0224C8A0 + cmp r1, #0x24 + beq _0224C8A0 + cmp r1, #0x79 + beq _0224C8A0 + add r0, r5, #0 + pop {r4, r5, r6, pc} +_0224C8A0: + mov r1, #0xc0 + mul r1, r4 + add r2, r3, r1 + ldr r1, _0224C8BC ; =0x00002D67 + ldrb r1, [r2, r1] + cmp r1, #0x3b + beq _0224C8B8 + cmp r1, #0x24 + beq _0224C8B8 + cmp r1, #0x79 + beq _0224C8B8 + add r0, r4, #0 +_0224C8B8: + pop {r4, r5, r6, pc} + nop +_0224C8BC: .word 0x00002D67 + + thumb_func_start MOD11_0224C8C0 +MOD11_0224C8C0: ; 0x0224C8C0 + lsl r1, r1, #4 + add r1, r0, r1 + ldr r0, _0224C8E4 ; =0x000003DE + ldr r3, _0224C8E8 ; =0x0225E260 + ldrh r1, [r1, r0] + mov r2, #0 +_0224C8CC: + ldrh r0, [r3] + cmp r0, r1 + bne _0224C8D6 + mov r0, #1 + bx lr +_0224C8D6: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #6 + blo _0224C8CC + mov r0, #0 + bx lr + nop +_0224C8E4: .word 0x000003DE +_0224C8E8: .word 0x0225E260 + + thumb_func_start MOD11_0224C8EC +MOD11_0224C8EC: ; 0x0224C8EC + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + ldr r2, _0224CA58 ; =0x00000137 + add r7, r0, #0 + add r4, r1, #0 + cmp r3, r2 + bgt _0224C904 + blt _0224C8FE + b _0224CA00 +_0224C8FE: + cmp r3, #0xed + beq _0224C9A6 + b _0224CA52 +_0224C904: + add r0, r2, #0 + add r0, #0x34 + cmp r3, r0 + bgt _0224C914 + add r2, #0x34 + cmp r3, r2 + beq _0224C91C + b _0224CA52 +_0224C914: + add r2, #0x8a + cmp r3, r2 + beq _0224C928 + b _0224CA52 +_0224C91C: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02249E04 + add r5, r0, #0 + b _0224CA54 +_0224C928: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02249D90 + sub r0, #0x7d + cmp r0, #0xf + bhi _0224C9A2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224C942: ; jump table + .short _0224C982 - _0224C942 - 2 ; case 0 + .short _0224C986 - _0224C942 - 2 ; case 1 + .short _0224C98E - _0224C942 - 2 ; case 2 + .short _0224C98A - _0224C942 - 2 ; case 3 + .short _0224C996 - _0224C942 - 2 ; case 4 + .short _0224C962 - _0224C942 - 2 ; case 5 + .short _0224C96A - _0224C942 - 2 ; case 6 + .short _0224C96E - _0224C942 - 2 ; case 7 + .short _0224C966 - _0224C942 - 2 ; case 8 + .short _0224C992 - _0224C942 - 2 ; case 9 + .short _0224C976 - _0224C942 - 2 ; case 10 + .short _0224C972 - _0224C942 - 2 ; case 11 + .short _0224C97A - _0224C942 - 2 ; case 12 + .short _0224C99A - _0224C942 - 2 ; case 13 + .short _0224C99E - _0224C942 - 2 ; case 14 + .short _0224C97E - _0224C942 - 2 ; case 15 +_0224C962: + mov r5, #1 + b _0224CA54 +_0224C966: + mov r5, #2 + b _0224CA54 +_0224C96A: + mov r5, #3 + b _0224CA54 +_0224C96E: + mov r5, #4 + b _0224CA54 +_0224C972: + mov r5, #5 + b _0224CA54 +_0224C976: + mov r5, #6 + b _0224CA54 +_0224C97A: + mov r5, #7 + b _0224CA54 +_0224C97E: + mov r5, #8 + b _0224CA54 +_0224C982: + mov r5, #0xa + b _0224CA54 +_0224C986: + mov r5, #0xb + b _0224CA54 +_0224C98A: + mov r5, #0xc + b _0224CA54 +_0224C98E: + mov r5, #0xd + b _0224CA54 +_0224C992: + mov r5, #0xe + b _0224CA54 +_0224C996: + mov r5, #0xf + b _0224CA54 +_0224C99A: + mov r5, #0x10 + b _0224CA54 +_0224C99E: + mov r5, #0x11 + b _0224CA54 +_0224C9A2: + mov r5, #0 + b _0224CA54 +_0224C9A6: + ldr r0, _0224CA5C ; =0x00002D54 + add r1, r4, r0 + mov r0, #0xc0 + mul r0, r6 + ldr r4, [r1, r0] + lsl r0, r4, #2 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r5, r0, #0x1a + lsl r0, r4, #7 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r3, r0, #0x1b + lsl r0, r4, #0xc + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r2, r0, #0x1c + lsl r0, r4, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r1, r0, #0x1d + lsl r0, r4, #0x1b + lsl r4, r4, #0x16 + lsr r4, r4, #0x1b + lsr r6, r0, #0x1b + mov r0, #1 + lsl r4, r4, #0x1f + and r0, r6 + lsr r4, r4, #0x1e + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + add r1, r5, #0 + orr r1, r0 + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + blx _s32_div_f + add r5, r0, #1 + cmp r5, #9 + blt _0224CA54 + add r5, r5, #1 + b _0224CA54 +_0224CA00: + mov r2, #0xd + str r2, [sp] + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224CA54 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _0224CA54 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, _0224CA60 ; =0x000080FF + tst r1, r0 + beq _0224CA54 + mov r1, #3 + tst r1, r0 + beq _0224CA38 + mov r5, #0xb +_0224CA38: + mov r1, #0xc + tst r1, r0 + beq _0224CA40 + mov r5, #5 +_0224CA40: + mov r1, #0x30 + tst r1, r0 + beq _0224CA48 + mov r5, #0xa +_0224CA48: + mov r1, #0xc0 + tst r0, r1 + beq _0224CA54 + mov r5, #0xf + b _0224CA54 +_0224CA52: + mov r5, #0 +_0224CA54: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224CA58: .word 0x00000137 +_0224CA5C: .word 0x00002D54 +_0224CA60: .word 0x000080FF + + thumb_func_start MOD11_0224CA64 +MOD11_0224CA64: ; 0x0224CA64 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x69 + mov r0, #5 + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + mov r2, #0x69 + mov r0, #0 + add r1, r4, #0 + lsl r2, r2, #2 + blx MIi_CpuClearFast + mov r0, #0x65 + ldrb r1, [r5] + lsl r0, r0, #2 + strb r1, [r4, r0] + ldrb r1, [r5, #1] + add r0, r0, #1 + strb r1, [r4, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CA94 +MOD11_0224CA94: ; 0x0224CA94 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _0224CB2C + sub r1, #0x8b + ldrb r1, [r4, r1] + mov r0, #1 + tst r0, r1 + beq _0224CAC0 + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + beq _0224CB2C +_0224CAC0: + ldr r0, _0224CB30 ; =0x00000195 + ldr r1, _0224CB34 ; =0x0225E818 + ldrb r2, [r4, r0] + sub r0, r0, #1 + ldrb r1, [r1, r2] + str r1, [sp] + mov r1, #5 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + ldrb r0, [r4, r0] + str r0, [sp, #0xc] + add r0, r5, #0 + str r6, [sp, #0x10] + bl MOD11_02230078 + str r0, [sp, #0x1c] + add r0, r5, #0 + bl MOD11_022300CC + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x18] + mov r0, #1 + str r0, [sp, #0x14] + add r0, sp, #0 + bl MOD08_02229918 + add r1, r4, #0 + add r1, #0x88 + str r0, [r1] + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x64 + bl MOD08_0222A00C + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #2 + bl MOD08_0222A018 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0 + bl MOD08_02229FE4 + add r4, #0x88 + ldr r0, [r4] + mov r1, #0 + bl MOD08_0222A008 +_0224CB2C: + add sp, #0x28 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224CB30: .word 0x00000195 +_0224CB34: .word 0x0225E818 + + thumb_func_start MOD11_0224CB38 +MOD11_0224CB38: ; 0x0224CB38 + push {r3, lr} + add r2, r1, #0 + add r2, #0x94 + ldrb r2, [r2] + cmp r2, #0 + beq _0224CB4C + lsl r3, r2, #2 + ldr r2, _0224CB50 ; =0x0225E70C + ldr r2, [r2, r3] + blx r2 +_0224CB4C: + pop {r3, pc} + nop +_0224CB50: .word 0x0225E70C + + thumb_func_start MOD11_0224CB54 +MOD11_0224CB54: ; 0x0224CB54 + push {r4, lr} + add r4, r1, #0 + cmp r2, #2 + beq _0224CB64 + add r0, r4, #0 + add r0, #0x28 + bl MOD11_02257030 +_0224CB64: + add r0, r4, #0 + bl MOD11_0225468C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CB74 +MOD11_0224CB74: ; 0x0224CB74 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0224CB78 +MOD11_0224CB78: ; 0x0224CB78 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_0224D550 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #1 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0224CB98 +MOD11_0224CB98: ; 0x0224CB98 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224D574 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CBAC +MOD11_0224CBAC: ; 0x0224CBAC + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224D738 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CBC0 +MOD11_0224CBC0: ; 0x0224CBC0 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224D87C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CBD4 +MOD11_0224CBD4: ; 0x0224CBD4 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224DA2C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CBE8 +MOD11_0224CBE8: ; 0x0224CBE8 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224DAE8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CBFC +MOD11_0224CBFC: ; 0x0224CBFC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_02007534 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #7 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CC20 +MOD11_0224CC20: ; 0x0224CC20 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224DB4C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CC34 +MOD11_0224CC34: ; 0x0224CC34 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224DCE4 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CC48 +MOD11_0224CC48: ; 0x0224CC48 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224DD44 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CC58 +MOD11_0224CC58: ; 0x0224CC58 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224DD8C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CC6C +MOD11_0224CC6C: ; 0x0224CC6C + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224DE50 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CC80 +MOD11_0224CC80: ; 0x0224CC80 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224DF18 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CC90 +MOD11_0224CC90: ; 0x0224CC90 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r4, #0 + add r6, #0x94 + add r1, r6, #0 + add r1, #0x29 + ldrb r1, [r1] + add r5, r0, #0 + bl MOD11_022312B8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0224DF60 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CCB8 +MOD11_0224CCB8: ; 0x0224CCB8 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E034 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CCCC +MOD11_0224CCCC: ; 0x0224CCCC + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E0A4 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CCE0 +MOD11_0224CCE0: ; 0x0224CCE0 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E130 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CCF4 +MOD11_0224CCF4: ; 0x0224CCF4 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E1DC + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CD08 +MOD11_0224CD08: ; 0x0224CD08 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E248 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CD1C +MOD11_0224CD1C: ; 0x0224CD1C + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E28C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CD30 +MOD11_0224CD30: ; 0x0224CD30 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E2F4 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CD44 +MOD11_0224CD44: ; 0x0224CD44 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E344 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CD58 +MOD11_0224CD58: ; 0x0224CD58 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x20] + mov r1, #6 + bl FUN_0200782C + cmp r0, #1 + bne _0224CD7A + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x17 + bl MOD11_022567B8 + b _0224CD82 +_0224CD7A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0224E3E0 +_0224CD82: + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CD8C +MOD11_0224CD8C: ; 0x0224CD8C + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E410 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CDA0 +MOD11_0224CDA0: ; 0x0224CDA0 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E49C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CDB4 +MOD11_0224CDB4: ; 0x0224CDB4 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E510 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CDC8 +MOD11_0224CDC8: ; 0x0224CDC8 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E5F8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CDDC +MOD11_0224CDDC: ; 0x0224CDDC + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224E628 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CDEC +MOD11_0224CDEC: ; 0x0224CDEC + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E65C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE00 +MOD11_0224CE00: ; 0x0224CE00 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E6FC + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE14 +MOD11_0224CE14: ; 0x0224CE14 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E734 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE28 +MOD11_0224CE28: ; 0x0224CE28 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E790 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE3C +MOD11_0224CE3C: ; 0x0224CE3C + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E7E8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE50 +MOD11_0224CE50: ; 0x0224CE50 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224E840 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE60 +MOD11_0224CE60: ; 0x0224CE60 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E894 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE74 +MOD11_0224CE74: ; 0x0224CE74 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224E8EC + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE84 +MOD11_0224CE84: ; 0x0224CE84 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E924 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CE98 +MOD11_0224CE98: ; 0x0224CE98 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224E9C0 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224CEAC +MOD11_0224CEAC: ; 0x0224CEAC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r2, #0x65 + add r6, #0x94 + lsl r2, r2, #2 + str r1, [sp, #4] + ldrb r1, [r1, r2] + ldrb r2, [r6, #1] + str r0, [sp] + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + bl MOD11_02230014 + add r7, r0, #0 + mov r0, #2 + ldr r1, [r6, #0x1c] + lsl r0, r0, #0x14 + tst r0, r1 + bne _0224CF14 + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #8] + add r0, #0x16 + mov r4, #0 + add r5, #0xe + str r0, [sp, #8] +_0224CEE2: + add r0, r4, #0 + bl FUN_0206A92C + ldrb r1, [r6, #1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + tst r0, r1 + bne _0224CF0C + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x36 + add r2, r5, #0 + bl FUN_02067830 + ldr r2, [sp, #8] + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x3a + add r2, r2, r4 + bl FUN_02067830 +_0224CF0C: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0224CEE2 +_0224CF14: + ldrb r0, [r6, #1] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bl FUN_0206A92C + ldr r1, [r6, #8] + tst r0, r1 + bne _0224CF30 + add r2, r6, #0 + add r0, r7, #0 + mov r1, #6 + add r2, #0xc + bl FUN_02067830 +_0224CF30: + add r0, r7, #0 + mov r1, #0xa2 + add r2, r6, #2 + bl FUN_02067830 + add r0, r7, #0 + mov r1, #0x9f + add r2, r6, #4 + bl FUN_02067830 + mov r2, #0x65 + ldr r1, [sp, #4] + lsl r2, r2, #2 + ldrb r1, [r1, r2] + ldrb r2, [r6] + ldr r0, [sp] + bl MOD11_022567B8 + ldr r0, [sp, #4] + bl MOD11_0224D548 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CF60 +MOD11_0224CF60: ; 0x0224CF60 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_0222FF74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_02230094 + ldr r2, _0224CFB0 ; =0x00000196 + ldrb r1, [r4, r2] + cmp r1, #0 + bne _0224CF94 + mov r1, #8 + and r1, r6 + bne _0224CF8C + cmp r1, #0 + bne _0224CF94 + sub r1, r2, #1 + ldrb r1, [r4, r1] + cmp r1, #4 + beq _0224CF94 +_0224CF8C: + ldr r1, _0224CFB4 ; =0xFFFFF300 + mov r2, #0 + bl MOD11_02259098 +_0224CF94: + mov r1, #0x65 + add r2, r4, #0 + lsl r1, r1, #2 + add r2, #0x94 + ldrb r1, [r4, r1] + ldrb r2, [r2] + add r0, r5, #0 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + nop +_0224CFB0: .word 0x00000196 +_0224CFB4: .word 0xFFFFF300 + + thumb_func_start MOD11_0224CFB8 +MOD11_0224CFB8: ; 0x0224CFB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x28 + bl MOD11_02257238 + add r0, r4, #0 + bl MOD11_0225468C + mov r1, #0x65 + add r2, r4, #0 + lsl r1, r1, #2 + add r2, #0x94 + ldrb r1, [r4, r1] + ldrb r2, [r2] + add r0, r5, #0 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0224CFE8 +MOD11_0224CFE8: ; 0x0224CFE8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + mov r1, #0 + str r1, [sp, #8] + mov r1, #0x65 + lsl r1, r1, #2 + add r4, r7, #0 + ldrb r1, [r7, r1] + str r0, [sp] + add r4, #0x94 + bl MOD11_0222FFC8 + mov r5, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _0224D04A +_0224D00A: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r7, r1] + ldr r0, [sp] + add r2, r5, #0 + bl MOD11_02230014 + ldrb r1, [r4, #1] + add r6, r0, #0 + cmp r1, #0x68 + bne _0224D024 + mov r0, #0 + b _0224D02C +_0224D024: + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC +_0224D02C: + ldrh r1, [r4, #2] + cmp r1, #0xd7 + bne _0224D038 + bne _0224D042 + cmp r0, #0x2b + beq _0224D042 +_0224D038: + add r0, r6, #0 + mov r1, #0x9f + add r2, sp, #8 + bl FUN_02067830 +_0224D042: + ldr r0, [sp, #4] + add r5, r5, #1 + cmp r5, r0 + blt _0224D00A +_0224D04A: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r7, r1] + ldrb r2, [r4] + ldr r0, [sp] + bl MOD11_022567B8 + add r0, r7, #0 + bl MOD11_0224D548 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224D064 +MOD11_0224D064: ; 0x0224D064 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EA74 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D078 +MOD11_0224D078: ; 0x0224D078 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EAAC + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D08C +MOD11_0224D08C: ; 0x0224D08C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + add r5, r1, #0 + ldr r0, _0224D180 ; =0x00000195 + add r4, r5, #0 + ldrb r1, [r5, r0] + mov r0, #1 + add r4, #0x94 + tst r0, r1 + beq _0224D0A6 + mov r6, #2 + b _0224D0A8 +_0224D0A6: + mov r6, #0 +_0224D0A8: + ldrb r0, [r4, #5] + lsl r3, r6, #0x18 + lsr r3, r3, #0x18 + str r0, [sp] + ldrb r0, [r4, #1] + str r0, [sp, #4] + ldr r0, [r4, #8] + str r0, [sp, #8] + ldrh r1, [r4, #2] + ldrb r2, [r4, #4] + add r0, sp, #0x14 + bl FUN_02068C00 + ldr r0, [r5, #0x20] + bl FUN_020081C0 + add r7, r0, #0 + add r3, sp, #0x14 + add r2, r7, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r5, #0x20] + bl FUN_020080D0 + ldr r0, [sp, #0x10] + bl MOD11_02230130 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + bl MOD11_022312DC + add r3, r0, #0 + ldr r0, [r4, #8] + mov r2, #5 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r6, [sp, #8] + ldrh r0, [r7, #6] + str r0, [sp, #0xc] + ldrh r0, [r7] + ldrh r1, [r7, #2] + bl FUN_02012560 + ldr r0, [sp, #0x10] + bl MOD11_02230130 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrh r2, [r7] + bl MOD11_022312F0 + ldr r0, [sp, #0x10] + bl MOD11_02230130 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrh r2, [r7, #4] + bl MOD11_02231308 + ldr r0, [r4, #8] + lsl r2, r6, #0x18 + str r0, [sp] + ldrh r0, [r4, #2] + ldrb r1, [r4, #4] + ldrb r3, [r4, #1] + lsr r2, r2, #0x18 + bl FUN_02068E88 + add r6, r0, #0 + ldr r0, [sp, #0x10] + bl MOD11_02230130 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + add r2, r6, #0 + bl MOD11_02231320 + ldr r0, _0224D180 ; =0x00000195 + mov r1, #1 + ldrb r0, [r5, r0] + bl MOD08_0222A6A4 + add r2, r0, #0 + ldr r0, [r5, #0x20] + mov r1, #1 + add r2, r6, r2 + bl FUN_02007558 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + ldr r0, [sp, #0x10] + bl MOD11_022567B8 + add r0, r5, #0 + bl MOD11_0224D548 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224D180: .word 0x00000195 + + thumb_func_start MOD11_0224D184 +MOD11_0224D184: ; 0x0224D184 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_02230FCC + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x2e + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0224D1A4 +MOD11_0224D1A4: ; 0x0224D1A4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, _0224D218 ; =0x00000196 + add r5, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _0224D200 + bl MOD11_02230094 + mov r1, #0 + add r6, r0, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD11_02258820 + add r0, r6, #0 + mov r1, #0 + bl MOD11_0225B77C + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + bl MOD11_022302BC + add r1, r0, #0 + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r1, r0 + beq _0224D1EC + add r0, r5, #0 + bl MOD11_02231380 + bl MOD11_02258184 +_0224D1EC: + add r0, r4, #0 + add r0, #0x28 + bl MOD11_02257238 + add r0, r6, #0 + bl MOD11_02258E30 + add r0, r4, #0 + bl MOD11_0225468C +_0224D200: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x2f + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + nop +_0224D218: .word 0x00000196 + + thumb_func_start MOD11_0224D21C +MOD11_0224D21C: ; 0x0224D21C + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EAEC + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D230 +MOD11_0224D230: ; 0x0224D230 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EB34 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D244 +MOD11_0224D244: ; 0x0224D244 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r6, r4, #0 + add r5, r0, #0 + add r6, #0x94 + bl MOD11_02230270 + cmp r0, #0 + beq _0224D268 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0224EB6C + b _0224D276 +_0224D268: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x32 + bl MOD11_022567B8 +_0224D276: + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224D280 +MOD11_0224D280: ; 0x0224D280 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r6, r4, #0 + add r5, r0, #0 + add r6, #0x94 + bl MOD11_02230270 + cmp r0, #0 + beq _0224D2A4 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD11_0224EBB8 + b _0224D2B2 +_0224D2A4: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x33 + bl MOD11_022567B8 +_0224D2B2: + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224D2BC +MOD11_0224D2BC: ; 0x0224D2BC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_02230078 + add r6, r0, #0 + add r0, r5, #0 + bl MOD11_02230080 + add r7, r0, #0 + add r0, r5, #0 + bl MOD11_022300CC + add r2, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_0225C91C + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x34 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224D2F8 +MOD11_0224D2F8: ; 0x0224D2F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_02230080 + bl MOD11_0225C9A0 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x35 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0224D31C +MOD11_0224D31C: ; 0x0224D31C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r5, #0 + add r4, #0x94 + ldrb r1, [r4, #1] + add r6, r0, #0 + cmp r1, #0 + ldr r1, _0224D360 ; =0x00000196 + bne _0224D33C + ldrb r1, [r5, r1] + cmp r1, #0 + bne _0224D348 + ldrh r1, [r4, #2] + bl MOD11_0223128C + b _0224D348 +_0224D33C: + ldrb r1, [r5, r1] + cmp r1, #0 + beq _0224D348 + ldrh r1, [r4, #2] + bl MOD11_0223128C +_0224D348: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + add r0, r6, #0 + bl MOD11_022567B8 + add r0, r5, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + nop +_0224D360: .word 0x00000196 + + thumb_func_start MOD11_0224D364 +MOD11_0224D364: ; 0x0224D364 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224EBF4 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D374 +MOD11_0224D374: ; 0x0224D374 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EC4C + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D388 +MOD11_0224D388: ; 0x0224D388 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224EC80 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D398 +MOD11_0224D398: ; 0x0224D398 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224ECB8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D3A8 +MOD11_0224D3A8: ; 0x0224D3A8 + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224ECF0 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D3B8 +MOD11_0224D3B8: ; 0x0224D3B8 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224ED44 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D3CC +MOD11_0224D3CC: ; 0x0224D3CC + push {r4, lr} + add r4, r1, #0 + bl MOD11_0224ED98 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D3DC +MOD11_0224D3DC: ; 0x0224D3DC + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EDEC + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D3F0 +MOD11_0224D3F0: ; 0x0224D3F0 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EE20 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D404 +MOD11_0224D404: ; 0x0224D404 + push {r4, lr} + add r4, r1, #0 + add r2, r4, #0 + add r2, #0x94 + bl MOD11_0224EE80 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, pc} + + thumb_func_start MOD11_0224D418 +MOD11_0224D418: ; 0x0224D418 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r7, #0 + str r1, [sp, #4] + str r1, [sp, #0x10] + add r1, #0x94 + str r0, [sp] + str r1, [sp, #0x10] + str r7, [sp, #8] + bl MOD11_0222FF74 + mov r1, #0x80 + tst r0, r1 + beq _0224D444 + ldr r1, [sp, #0x10] + ldr r0, [sp] + ldr r1, [r1, #4] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD11_02231468 + b _0224D4FC +_0224D444: + add r0, r7, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + bl MOD11_0222FF84 + cmp r0, #0 + ble _0224D4D2 +_0224D452: + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD11_0222FF88 + add r6, r0, #0 + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0224D4C0 +_0224D466: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0224D4B4 + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0224D4B4 + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD11_02230270 + cmp r0, #0 + beq _0224D4A8 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #8] + add r0, r1, r0 + str r0, [sp, #8] + b _0224D4B4 +_0224D4A8: + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r7, r7, r0 +_0224D4B4: + add r0, r6, #0 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0224D466 +_0224D4C0: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp] + bl MOD11_0222FF84 + ldr r1, [sp, #0xc] + cmp r1, r0 + blt _0224D452 +_0224D4D2: + cmp r7, #0 + bne _0224D4E6 + ldr r0, [sp, #8] + cmp r0, #0 + bne _0224D4E6 + ldr r0, [sp] + mov r1, #3 + bl MOD11_02231468 + b _0224D4FC +_0224D4E6: + cmp r7, #0 + bne _0224D4F4 + ldr r0, [sp] + mov r1, #2 + bl MOD11_02231468 + b _0224D4FC +_0224D4F4: + ldr r0, [sp] + mov r1, #1 + bl MOD11_02231468 +_0224D4FC: + mov r2, #0x65 + ldr r1, [sp, #4] + lsl r2, r2, #2 + ldrb r1, [r1, r2] + ldr r2, [sp, #0x10] + ldr r0, [sp] + ldrb r2, [r2] + bl MOD11_022567B8 + ldr r0, [sp, #4] + bl MOD11_0224D548 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0224D518 +MOD11_0224D518: ; 0x0224D518 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + bl MOD11_0222FF6C + add r6, r0, #0 + mov r1, #0xff + bl FUN_02019620 + add r0, r6, #0 + bl FUN_02019548 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x42 + bl MOD11_022567B8 + add r0, r4, #0 + bl MOD11_0224D548 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0224D548 +MOD11_0224D548: ; 0x0224D548 + mov r1, #0 + add r0, #0x94 + strb r1, [r0] + bx lr + + thumb_func_start MOD11_0224D550 +MOD11_0224D550: ; 0x0224D550 + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + mov r1, #0x18 + bl FUN_02016998 + add r1, r0, #0 + str r4, [r1] + mov r2, #0 + strb r2, [r1, #0x14] + ldr r0, _0224D570 ; =MOD11_022530A0 + strb r2, [r1, #0x15] + bl FUN_0200CA44 + pop {r4, pc} + nop +_0224D570: .word MOD11_022530A0 + + thumb_func_start MOD11_0224D574 +MOD11_0224D574: ; 0x0224D574 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp, #0x24] + add r6, r1, #0 + add r5, r2, #0 + bl MOD11_02230068 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + bl MOD11_0222FF74 + mov r0, #5 + mov r1, #0x2c + bl FUN_02016998 + add r4, r0, #0 + mov r2, #0 + ldr r0, _0224D720 ; =0x00000195 + strb r2, [r4, #0x12] + ldrb r0, [r6, r0] + mov r1, #1 + tst r0, r1 + beq _0224D5CA + mov r0, #2 + strb r0, [r4, #0x13] + ldr r0, [sp, #0x24] + bl MOD11_02230088 + str r0, [r4, #0xc] + ldr r1, _0224D720 ; =0x00000195 + ldr r0, [r0] + ldrb r2, [r6, r1] + mov r1, #1 + and r2, r1 + add r3, r2, #0 + mov r1, #6 + mul r3, r1 + ldr r1, _0224D724 ; =0x0222D550 + mov r2, #0x58 + ldrsh r1, [r1, r3] + bl FUN_0200C714 + b _0224D5F0 +_0224D5CA: + ldr r0, [sp, #0x24] + add r1, r2, #0 + strb r2, [r4, #0x13] + bl MOD11_02230088 + str r0, [r4, #0xc] + ldr r1, _0224D720 ; =0x00000195 + ldr r0, [r0] + ldrb r2, [r6, r1] + mov r1, #1 + and r2, r1 + add r3, r2, #0 + mov r1, #6 + mul r3, r1 + ldr r1, _0224D724 ; =0x0222D550 + mov r2, #0x88 + ldrsh r1, [r1, r3] + bl FUN_0200C714 +_0224D5F0: + ldrb r0, [r5, #1] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _0224D5FC + mov r0, #1 + b _0224D5FE +_0224D5FC: + mov r0, #0 +_0224D5FE: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r5, #1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1b + str r0, [sp, #4] + ldr r0, [r5, #4] + str r0, [sp, #8] + ldrb r2, [r5, #1] + ldrh r1, [r5, #2] + ldrb r3, [r4, #0x13] + lsl r2, r2, #0x1e + add r0, sp, #0x48 + lsr r2, r2, #0x1e + bl FUN_02068C00 + ldr r0, [r5, #4] + str r0, [sp] + ldrb r3, [r5, #1] + ldrh r0, [r5, #2] + ldrb r2, [r4, #0x13] + lsl r1, r3, #0x1e + lsl r3, r3, #0x18 + lsr r1, r1, #0x1e + lsr r3, r3, #0x1b + bl FUN_02068E88 + str r0, [sp, #0x2c] + mov r0, #1 + str r0, [sp] + add r0, sp, #0x30 + ldrh r3, [r5, #2] + add r0, #2 + mov r1, #0x8a + mov r2, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, sp, #0x30 + ldrh r3, [r5, #2] + add r0, #1 + mov r1, #0x90 + mov r2, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + ldrh r3, [r5, #2] + add r0, sp, #0x30 + mov r1, #0x8e + mov r2, #0 + bl FUN_02006548 + add r0, sp, #0x30 + ldrh r1, [r5, #2] + add r0, #3 + bl FUN_02069010 + ldr r1, _0224D720 ; =0x00000195 + mov r0, #6 + ldrb r2, [r6, r1] + ldr r3, _0224D724 ; =0x0222D550 + add r7, r2, #0 + mul r7, r0 + ldr r0, _0224D728 ; =0x0222D552 + mov r2, #2 + ldrsh r0, [r0, r7] + ldrsh r3, [r3, r7] + str r0, [sp] + ldr r0, _0224D72C ; =0x0222D554 + ldrsh r0, [r0, r7] + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + str r0, [sp, #8] + add r0, sp, #0x30 + ldrsb r2, [r0, r2] + str r2, [sp, #0xc] + mov r2, #1 + ldrsb r2, [r0, r2] + str r2, [sp, #0x10] + ldrb r0, [r0] + add r2, sp, #0x48 + str r0, [sp, #0x14] + sub r0, r1, #1 + ldrb r0, [r6, r0] + ldr r1, [sp, #0x28] + str r0, [sp, #0x18] + add r0, sp, #0x30 + add r0, #3 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + bl MOD11_02253A88 + str r0, [r6, #0x20] + str r0, [r4, #8] + ldrb r0, [r4, #0x13] + cmp r0, #2 + bne _0224D6D8 + mov r3, #0 + str r3, [sp] + mov r1, #8 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_02007E68 +_0224D6D8: + ldr r1, _0224D720 ; =0x00000195 + ldrb r0, [r6, r1] + lsl r2, r0, #2 + ldr r0, _0224D730 ; =0x0222D538 + ldrsh r0, [r0, r2] + strh r0, [r4, #0x14] + ldr r0, [sp, #0x24] + str r0, [r4] + str r6, [r4, #4] + ldrb r0, [r5] + strb r0, [r4, #0x10] + sub r0, r1, #1 + ldrb r0, [r6, r0] + strb r0, [r4, #0x11] + ldrh r0, [r5, #2] + strh r0, [r4, #0x16] + ldr r0, [r5, #8] + str r0, [r4, #0x18] + ldrb r0, [r6, r1] + str r0, [r4, #0x1c] + ldr r0, [r5, #4] + bl FUN_02068884 + str r0, [r4, #0x24] + ldrb r0, [r5, #1] + add r1, r4, #0 + mov r2, #0 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + str r0, [r4, #0x28] + ldr r0, _0224D734 ; =MOD11_0224EEA0 + bl FUN_0200CA44 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D720: .word 0x00000195 +_0224D724: .word 0x0222D550 +_0224D728: .word 0x0222D552 +_0224D72C: .word 0x0222D554 +_0224D730: .word 0x0222D538 +_0224D734: .word MOD11_0224EEA0 + + thumb_func_start MOD11_0224D738 +MOD11_0224D738: ; 0x0224D738 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r6, r1, #0 + add r5, r2, #0 + bl MOD11_0222FF74 + mov r0, #5 + mov r1, #0x9c + bl FUN_02016998 + add r4, r0, #0 + ldr r0, _0224D874 ; =0x00000195 + ldrb r1, [r6, r0] + mov r0, #1 + tst r0, r1 + beq _0224D75E + mov r1, #2 + b _0224D760 +_0224D75E: + mov r1, #0 +_0224D760: + add r0, r4, #0 + add r0, #0x84 + strb r1, [r0] + ldrb r0, [r5, #1] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _0224D772 + mov r0, #1 + b _0224D774 +_0224D772: + mov r0, #0 +_0224D774: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r5, #1] + add r3, r4, #0 + add r3, #0x84 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1b + str r0, [sp, #4] + ldr r0, [r5, #4] + str r0, [sp, #8] + ldrb r2, [r5, #1] + add r0, r4, #0 + ldrh r1, [r5, #2] + lsl r2, r2, #0x1e + ldrb r3, [r3] + add r0, #0x14 + lsr r2, r2, #0x1e + bl FUN_02068C00 + ldr r0, [r5, #4] + add r2, r4, #0 + str r0, [sp] + ldrb r3, [r5, #1] + add r2, #0x84 + ldrh r0, [r5, #2] + lsl r1, r3, #0x1e + lsl r3, r3, #0x18 + ldrb r2, [r2] + lsr r1, r1, #0x1e + lsr r3, r3, #0x1b + bl FUN_02068E88 + add r1, r4, #0 + add r1, #0x85 + strb r0, [r1] + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + ldrh r3, [r5, #2] + add r0, #0x90 + mov r1, #0x8a + mov r2, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + ldrh r3, [r5, #2] + add r0, #0x91 + mov r1, #0x90 + mov r2, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + ldrh r3, [r5, #2] + add r0, #0x93 + mov r1, #0x8e + mov r2, #0 + bl FUN_02006548 + add r0, r6, #0 + bl MOD11_02253A78 + str r7, [r4] + add r0, r4, #0 + str r6, [r4, #4] + mov r1, #0 + add r0, #0x83 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x96 + strb r1, [r0] + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x80 + strb r1, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r2, [r6, r0] + add r1, r4, #0 + add r1, #0x81 + strb r2, [r1] + add r1, r4, #0 + ldrh r2, [r5, #2] + add r1, #0x86 + add r0, r0, #1 + strh r2, [r1] + ldrb r1, [r6, r0] + add r0, r4, #0 + add r0, #0x82 + strb r1, [r0] + add r0, r4, #0 + ldr r1, [r5, #8] + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + ldr r1, [r5, #0xc] + add r0, #0x8c + strb r1, [r0] + ldr r0, [r5, #4] + bl FUN_02068884 + add r1, r4, #0 + add r1, #0x8d + strb r0, [r1] + add r0, r4, #0 + ldr r1, [r5, #0x10] + add r0, #0x8e + strh r1, [r0] + ldrb r0, [r5, #1] + lsl r0, r0, #0x1d + lsr r1, r0, #0x1f + add r0, r4, #0 + add r0, #0x92 + strb r1, [r0] + add r0, r4, #0 + mov r2, #0 + add r0, #0x94 + strh r2, [r0] + ldr r0, _0224D878 ; =MOD11_0224F2DC + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224D874: .word 0x00000195 +_0224D878: .word MOD11_0224F2DC + + thumb_func_start MOD11_0224D87C +MOD11_0224D87C: ; 0x0224D87C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD11_0222FF74 + mov r0, #5 + mov r1, #0x9c + bl FUN_02016998 + add r5, r0, #0 + add r1, r5, #0 + mov r0, #0 + add r1, #0x83 + strb r0, [r1] + ldr r1, _0224DA24 ; =0x00000195 + ldrb r2, [r6, r1] + mov r1, #1 + tst r1, r2 + beq _0224D8B0 + add r0, r5, #0 + mov r1, #2 + add r0, #0x84 + strb r1, [r0] + b _0224D8B6 +_0224D8B0: + add r1, r5, #0 + add r1, #0x84 + strb r0, [r1] +_0224D8B6: + ldrb r0, [r4, #1] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _0224D8C2 + mov r0, #1 + b _0224D8C4 +_0224D8C2: + mov r0, #0 +_0224D8C4: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r4, #1] + add r3, r5, #0 + add r3, #0x84 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1b + str r0, [sp, #4] + ldr r0, [r4, #4] + str r0, [sp, #8] + ldrb r2, [r4, #1] + add r0, r5, #0 + ldrh r1, [r4, #2] + lsl r2, r2, #0x1e + ldrb r3, [r3] + add r0, #0x14 + lsr r2, r2, #0x1e + bl FUN_02068C00 + ldr r0, [r4, #4] + add r2, r5, #0 + str r0, [sp] + ldrb r3, [r4, #1] + add r2, #0x84 + ldrh r0, [r4, #2] + lsl r1, r3, #0x1e + lsl r3, r3, #0x18 + ldrb r2, [r2] + lsr r1, r1, #0x1e + lsr r3, r3, #0x1b + bl FUN_02068E88 + add r1, r5, #0 + add r1, #0x85 + strb r0, [r1] + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + ldrh r3, [r4, #2] + add r0, #0x90 + mov r1, #0x8a + mov r2, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + ldrh r3, [r4, #2] + add r0, #0x91 + mov r1, #0x90 + mov r2, #0 + bl FUN_02006548 + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + ldrh r3, [r4, #2] + add r0, #0x93 + mov r1, #0x8e + mov r2, #0 + bl FUN_02006548 + add r0, r6, #0 + bl MOD11_02253A78 + str r7, [r5] + str r6, [r5, #4] + add r0, r5, #0 + ldrb r1, [r4] + add r0, #0x80 + strb r1, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r2, [r6, r0] + add r1, r5, #0 + add r1, #0x81 + strb r2, [r1] + add r1, r5, #0 + ldrh r2, [r4, #2] + add r1, #0x86 + add r0, r0, #1 + strh r2, [r1] + ldrb r1, [r6, r0] + add r0, r5, #0 + add r0, #0x82 + strb r1, [r0] + add r0, r5, #0 + ldr r1, [r4, #8] + add r0, #0x88 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r4, #0xc] + add r0, #0x8c + strb r1, [r0] + ldr r0, [r4, #4] + bl FUN_02068884 + add r1, r5, #0 + add r1, #0x8d + strb r0, [r1] + add r0, r5, #0 + ldr r1, [r4, #0x10] + add r0, #0x8e + strh r1, [r0] + ldrb r0, [r4, #1] + lsl r0, r0, #0x1d + lsr r1, r0, #0x1f + add r0, r5, #0 + add r0, #0x92 + strb r1, [r0] + add r0, r5, #0 + ldr r1, [r4, #0x14] + add r0, #0x94 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0x96 + strb r1, [r0] + add r0, r5, #0 + ldr r2, [r4, #0x4c] + add r0, #0x98 + str r2, [r0] + str r4, [sp, #0x18] + add r7, r5, #0 + add r2, r4, #0 + add r3, r5, #0 +_0224D9C2: + ldr r0, [sp, #0x18] + add r0, #0x50 + ldrh r6, [r0] + add r0, r7, #0 + add r0, #0x40 + strh r6, [r0] + add r0, r4, r1 + add r0, #0x58 + ldrb r6, [r0] + add r0, r5, r1 + str r0, [sp, #0x14] + add r0, #0x48 + str r0, [sp, #0x14] + strb r6, [r0] + add r0, r4, r1 + add r0, #0x5c + ldrb r6, [r0] + add r0, r5, r1 + str r0, [sp, #0x10] + add r0, #0x4c + str r0, [sp, #0x10] + strb r6, [r0] + add r0, r4, r1 + add r0, #0x60 + ldrb r6, [r0] + add r0, r5, r1 + str r0, [sp, #0xc] + add r0, #0x50 + str r0, [sp, #0xc] + strb r6, [r0] + ldr r0, [r2, #0x64] + add r1, r1, #1 + str r0, [r3, #0x54] + ldr r0, [sp, #0x18] + add r7, r7, #2 + add r0, r0, #2 + str r0, [sp, #0x18] + add r2, r2, #4 + add r3, r3, #4 + cmp r1, #4 + blt _0224D9C2 + ldr r0, _0224DA28 ; =MOD11_0224F7C4 + add r1, r5, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224DA24: .word 0x00000195 +_0224DA28: .word MOD11_0224F7C4 + + thumb_func_start MOD11_0224DA2C +MOD11_0224DA2C: ; 0x0224DA2C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x74 + str r2, [sp] + bl FUN_02016998 + add r2, r0, #0 + str r5, [r2] + str r4, [r2, #4] + ldr r0, [r4, #0x20] + add r7, r2, #0 + str r0, [r2, #8] + ldr r0, [sp] + add r5, r2, #0 + ldrb r1, [r0] + add r0, r2, #0 + add r0, #0x68 + strb r1, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + add r1, r2, #0 + add r1, #0x69 + add r0, r0, #1 + strb r3, [r1] + ldrb r1, [r4, r0] + add r0, r2, #0 + add r0, #0x6a + strb r1, [r0] + add r0, r2, #0 + mov r1, #0 + add r0, #0x6b + strb r1, [r0] + ldr r0, [sp] + ldrb r3, [r0, #1] + add r0, r2, #0 + add r0, #0x6c + strb r3, [r0] + ldr r0, [sp] + ldrh r3, [r0, #2] + add r0, r2, #0 + add r0, #0x6e + strh r3, [r0] + ldr r0, [sp] + ldr r3, [sp] + ldr r0, [r0, #4] + add r4, r3, #0 + str r0, [r2, #0x70] +_0224DA92: + ldrh r0, [r3, #8] + add r3, r3, #2 + strh r0, [r7, #0x28] + ldr r0, [sp] + add r7, r7, #2 + add r0, r0, r1 + str r0, [sp, #0x10] + ldrb r0, [r0, #0x10] + str r0, [sp, #8] + add r0, r2, r1 + ldr r6, [sp, #8] + add r0, #0x30 + strb r6, [r0] + ldr r0, [sp, #0x10] + add r6, r2, r1 + ldrb r0, [r0, #0x14] + str r6, [sp, #4] + add r6, #0x34 + str r0, [sp, #0xc] + strb r0, [r6] + ldr r0, [sp, #0x10] + str r6, [sp, #4] + add r6, r2, r1 + ldrb r0, [r0, #0x18] + add r6, #0x38 + add r1, r1, #1 + strb r0, [r6] + ldr r0, [r4, #0x1c] + add r4, r4, #4 + str r0, [r5, #0x3c] + add r5, r5, #4 + cmp r1, #4 + blt _0224DA92 + ldr r0, _0224DAE4 ; =MOD11_0224FD90 + add r1, r2, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224DAE4: .word MOD11_0224FD90 + + thumb_func_start MOD11_0224DAE8 +MOD11_0224DAE8: ; 0x0224DAE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r7, [r4] + ldr r0, [r5, #0x20] + str r0, [r4, #4] + ldrb r0, [r6] + strb r0, [r4, #8] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + add r0, r0, #1 + strb r1, [r4, #9] + ldrb r0, [r5, r0] + mov r1, #0 + add r3, r1, #0 + strb r0, [r4, #0xa] + strb r1, [r4, #0xb] + ldrb r0, [r6, #1] + strb r0, [r4, #0xc] + ldrh r0, [r6, #2] + lsl r2, r0, #1 + ldr r0, _0224DB44 ; =0x0225E84A + ldrh r0, [r0, r2] + mov r2, #0x10 + str r0, [sp] + ldr r0, [r4, #4] + bl FUN_02007E68 + ldr r0, [r4, #4] + mov r1, #0x2d + mov r2, #1 + bl FUN_02007558 + ldr r0, _0224DB48 ; =MOD11_0224FFF0 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224DB44: .word 0x0225E84A +_0224DB48: .word MOD11_0224FFF0 + + thumb_func_start MOD11_0224DB4C +MOD11_0224DB4C: ; 0x0224DB4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r0, #0 + add r5, r1, #0 + str r2, [sp, #0x24] + bl MOD11_02230068 + str r0, [sp, #0x2c] + mov r0, #5 + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0 + mov r2, #0 + ldr r0, _0224DCCC ; =0x00000195 + strb r2, [r4, #0x12] + ldrb r0, [r5, r0] + mov r1, #1 + tst r0, r1 + beq _0224DB9C + mov r0, #2 + strb r0, [r4, #0x13] + add r0, r6, #0 + bl MOD11_02230088 + str r0, [r4, #8] + ldr r1, _0224DCCC ; =0x00000195 + ldr r0, [r0] + ldrb r2, [r5, r1] + mov r1, #1 + and r2, r1 + add r3, r2, #0 + mov r1, #6 + mul r3, r1 + ldr r1, _0224DCD0 ; =0x0222D550 + mov r2, #0x58 + ldrsh r1, [r1, r3] + bl FUN_0200C714 + b _0224DBC2 +_0224DB9C: + add r0, r6, #0 + add r1, r2, #0 + strb r2, [r4, #0x13] + bl MOD11_02230088 + str r0, [r4, #8] + ldr r1, _0224DCCC ; =0x00000195 + ldr r0, [r0] + ldrb r2, [r5, r1] + mov r1, #1 + and r2, r1 + add r3, r2, #0 + mov r1, #6 + mul r3, r1 + ldr r1, _0224DCD0 ; =0x0222D550 + mov r2, #0x88 + ldrsh r1, [r1, r3] + bl FUN_0200C714 +_0224DBC2: + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _0224DBE4 + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #0x10 + tst r0, r1 + beq _0224DBEC + ldr r0, _0224DCCC ; =0x00000195 + ldrb r1, [r5, r0] + mov r0, #1 + tst r0, r1 + beq _0224DBEC +_0224DBE4: + ldr r0, _0224DCCC ; =0x00000195 + ldrb r0, [r5, r0] + str r0, [sp, #0x28] + b _0224DBF6 +_0224DBEC: + ldr r0, _0224DCCC ; =0x00000195 + ldrb r1, [r5, r0] + mov r0, #1 + and r0, r1 + str r0, [sp, #0x28] +_0224DBF6: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + add r0, r6, #0 + bl MOD11_0223021C + add r3, r0, #0 + ldr r1, [sp, #0x24] + lsl r3, r3, #0x18 + ldrh r1, [r1, #2] + ldrb r2, [r4, #0x13] + add r0, sp, #0x30 + lsr r3, r3, #0x18 + bl FUN_02068FE0 + ldr r0, [sp, #0x28] + mov r1, #6 + add r7, r0, #0 + mul r7, r1 + ldr r0, _0224DCD4 ; =0x0222D552 + mov r1, #0 + ldrsh r0, [r0, r7] + ldr r3, _0224DCD0 ; =0x0222D550 + add r2, sp, #0x30 + str r0, [sp] + ldr r0, _0224DCD8 ; =0x0222D554 + ldrsh r3, [r3, r7] + ldrsh r0, [r0, r7] + str r0, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, #0x65 + str r1, [sp, #0x14] + lsl r0, r0, #2 + ldrb r0, [r5, r0] + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + ldr r1, [sp, #0x2c] + add r0, r6, #0 + bl MOD11_02253A88 + str r0, [r5, #0x1c] + str r0, [r4, #4] + ldrb r0, [r4, #0x13] + cmp r0, #0 + bne _0224DC80 + add r0, r6, #0 + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _0224DC80 + ldr r0, [sp, #0x24] + ldrh r0, [r0, #2] + bl FUN_0206AA30 + ldr r3, _0224DCCC ; =0x00000195 + add r2, r0, #0 + ldrb r3, [r5, r3] + ldr r1, [sp, #0x28] + add r0, r6, #0 + asr r3, r3, #1 + bl MOD11_02254308 + str r0, [r5, #0x18] + str r0, [r4, #0xc] +_0224DC80: + ldr r0, [sp, #0x28] + lsl r1, r0, #2 + ldr r0, _0224DCDC ; =0x0222D538 + ldrsh r0, [r0, r1] + strh r0, [r4, #0x14] + ldr r0, [sp, #0x24] + str r6, [r4] + ldrb r0, [r0] + strb r0, [r4, #0x10] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + add r0, r0, #1 + strb r1, [r4, #0x11] + ldrb r0, [r5, r0] + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _0224DCAE + cmp r0, #2 + bne _0224DCBE +_0224DCAE: + add r0, r6, #0 + bl MOD11_0222FF68 + mov r1, #3 + mov r2, #2 + mov r3, #0x84 + bl FUN_020179E0 +_0224DCBE: + ldr r0, _0224DCE0 ; =MOD11_02250060 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224DCCC: .word 0x00000195 +_0224DCD0: .word 0x0222D550 +_0224DCD4: .word 0x0222D552 +_0224DCD8: .word 0x0222D554 +_0224DCDC: .word 0x0222D538 +_0224DCE0: .word MOD11_02250060 + + thumb_func_start MOD11_0224DCE4 +MOD11_0224DCE4: ; 0x0224DCE4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #5 + mov r1, #0x1c + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + strb r0, [r4, #0xa] + str r7, [r4] + ldrb r1, [r6] + strb r1, [r4, #8] + ldrb r1, [r6, #1] + str r1, [r4, #0x10] + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r2, [r5, r1] + strb r2, [r4, #9] + str r5, [r4, #4] + add r2, r1, #1 + ldrb r3, [r5, r2] + mov r2, #1 + tst r2, r3 + beq _0224DD1E + mov r1, #2 + strb r1, [r4, #0xb] + b _0224DD30 +_0224DD1E: + ldrb r1, [r5, r1] + add r0, r7, #0 + bl MOD11_02230188 + mov r1, #0 + strb r1, [r4, #0xb] + ldrb r0, [r0, #1] + bl FUN_0206AA30 +_0224DD30: + str r0, [r4, #0xc] + ldr r0, _0224DD40 ; =MOD11_02250338 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DD40: .word MOD11_02250338 + + thumb_func_start MOD11_0224DD44 +MOD11_0224DD44: ; 0x0224DD44 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x10 + bl FUN_02016998 + add r1, r0, #0 + mov r0, #0 + strb r0, [r1, #0xa] + add r2, r4, #0 + str r5, [r1] + add r2, #0x94 + ldrb r2, [r2] + strb r2, [r1, #8] + mov r2, #0x65 + lsl r2, r2, #2 + ldrb r3, [r4, r2] + add r2, r2, #1 + strb r3, [r1, #9] + str r4, [r1, #4] + ldrb r3, [r4, r2] + mov r2, #1 + tst r2, r3 + beq _0224DD7A + mov r0, #2 + b _0224DD7A +_0224DD7A: + strb r0, [r1, #0xb] + ldr r0, _0224DD88 ; =MOD11_022508A4 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_0224DD88: .word MOD11_022508A4 + + thumb_func_start MOD11_0224DD8C +MOD11_0224DD8C: ; 0x0224DD8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x10] + add r5, r1, #0 + add r7, r2, #0 + bl MOD11_02230068 + str r0, [sp, #0x14] + mov r0, #5 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + ldr r1, _0224DE38 ; =0x00000195 + strb r0, [r4, #0xa] + ldrb r2, [r5, r1] + mov r1, #1 + tst r1, r2 + beq _0224DDB8 + mov r0, #2 + b _0224DDB8 +_0224DDB8: + mov r1, #0x65 + strb r0, [r4, #0xb] + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldr r0, [sp, #0x10] + bl MOD11_0223021C + add r3, r0, #0 + lsl r3, r3, #0x18 + ldrh r1, [r7, #2] + ldrb r2, [r4, #0xb] + add r0, sp, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068FE0 + ldr r0, _0224DE38 ; =0x00000195 + mov r1, #6 + ldrb r2, [r5, r0] + sub r0, r0, #1 + ldr r3, _0224DE3C ; =0x0222D576 + add r6, r2, #0 + mul r6, r1 + ldr r1, _0224DE40 ; =0x0222D578 + ldr r2, _0224DE44 ; =0x0222D574 + ldrsh r1, [r1, r6] + ldrsh r2, [r2, r6] + ldrsh r3, [r3, r6] + str r1, [sp] + ldrb r0, [r5, r0] + add r1, sp, #0x18 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + bl FUN_020073A0 + str r0, [r5, #0x1c] + str r0, [r4, #4] + ldr r0, _0224DE38 ; =0x00000195 + ldr r2, _0224DE48 ; =0x0222D538 + ldrb r1, [r5, r0] + sub r0, r0, #1 + lsl r1, r1, #0x1f + lsr r3, r1, #0x1d + ldr r1, [r7, #4] + add r2, r2, r3 + lsl r1, r1, #1 + ldrsh r1, [r1, r2] + mov r2, #0 + strh r1, [r4, #0xc] + ldr r1, [sp, #0x10] + str r1, [r4] + ldrb r1, [r7] + strb r1, [r4, #8] + ldrb r0, [r5, r0] + add r1, r4, #0 + strb r0, [r4, #9] + ldr r0, _0224DE4C ; =MOD11_0225092C + bl FUN_0200CA44 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DE38: .word 0x00000195 +_0224DE3C: .word 0x0222D576 +_0224DE40: .word 0x0222D578 +_0224DE44: .word 0x0222D574 +_0224DE48: .word 0x0222D538 +_0224DE4C: .word MOD11_0225092C + + thumb_func_start MOD11_0224DE50 +MOD11_0224DE50: ; 0x0224DE50 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r6, #0 + add r4, #0x28 + add r7, r0, #0 + add r5, r2, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #1 + blx MIi_CpuClearFast + mov r0, #0x65 + str r7, [r4, #0xc] + lsl r0, r0, #2 + ldrb r1, [r6, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r7, #0 + bl MOD11_0222FF74 + add r1, r0, #0 + ldr r0, _0224DF10 ; =0x00000195 + ldrb r0, [r6, r0] + bl MOD11_02257F6C + add r1, r4, #0 + add r1, #0x25 + strb r0, [r1] + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x4c + strb r1, [r0] + mov r0, #2 + ldrsh r0, [r5, r0] + str r0, [r4, #0x28] + ldrh r0, [r5, #4] + str r0, [r4, #0x2c] + add r0, r4, #0 + ldrb r1, [r5, #1] + add r0, #0x48 + strb r1, [r0] + ldrb r0, [r5, #7] + lsl r0, r0, #0x19 + lsr r1, r0, #0x1e + add r0, r4, #0 + add r0, #0x49 + strb r1, [r0] + mov r1, #0 + str r1, [r4, #0x30] + ldr r0, [r5, #8] + str r0, [r4, #0x38] + ldr r0, [r5, #0xc] + str r0, [r4, #0x3c] + add r0, r4, #0 + ldrb r2, [r5, #6] + add r0, #0x26 + strb r2, [r0] + ldrb r0, [r5, #7] + lsl r0, r0, #0x1b + lsr r2, r0, #0x1b + add r0, r4, #0 + add r0, #0x4a + strb r2, [r0] + ldrb r0, [r5, #7] + lsl r0, r0, #0x18 + lsr r2, r0, #0x1f + add r0, r4, #0 + add r0, #0x4b + strb r2, [r0] + add r0, r4, #0 + ldrb r2, [r5, #0x14] + add r0, #0x4d + strb r2, [r0] + add r0, r4, #0 + ldr r2, [r5, #0x10] + add r0, #0x27 + strb r2, [r0] + add r0, r4, #0 + bl MOD11_022572AC + mov r2, #0 + ldr r1, [r4, #0x28] + add r0, r4, #0 + mvn r2, r2 + bl MOD11_02256D70 + mov r2, #0xfa + ldr r0, _0224DF14 ; =MOD11_022509B4 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DF10: .word 0x00000195 +_0224DF14: .word MOD11_022509B4 + + thumb_func_start MOD11_0224DF18 +MOD11_0224DF18: ; 0x0224DF18 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r5, #0 + add r4, #0x28 + add r6, r0, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #1 + blx MIi_CpuClearFast + mov r0, #0x65 + str r6, [r4, #0xc] + lsl r0, r0, #2 + ldrb r1, [r5, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r5, #0x94 + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x4c + strb r1, [r0] + add r0, r4, #0 + mov r1, #1 + bl MOD11_02257334 + mov r2, #0xfa + ldr r0, _0224DF5C ; =MOD11_02250A28 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_0224DF5C: .word MOD11_02250A28 + + thumb_func_start MOD11_0224DF60 +MOD11_0224DF60: ; 0x0224DF60 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + str r1, [sp] + mov r0, #5 + mov r1, #0x3c + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x3c + blx MIi_CpuClearFast + mov r7, #0 + strb r7, [r4, #0xa] + strb r7, [r4, #0xb] + str r6, [r4] + ldrb r0, [r5] + mov r1, #0x65 + lsl r1, r1, #2 + strb r0, [r4, #8] + ldr r0, [sp] + add r3, r5, #0 + ldrb r0, [r0, r1] + add r1, r1, #1 + add r6, r4, #0 + strb r0, [r4, #9] + ldr r0, [sp] + ldrb r1, [r0, r1] + add r0, r4, #0 + add r0, #0x34 + strb r1, [r0] + ldr r0, [sp] + add r0, #0x28 + str r0, [r4, #4] + add r0, r4, #0 + ldrb r1, [r5, #1] + add r0, #0x23 + strb r1, [r0] + mov r0, #0x24 + ldrsh r0, [r5, r0] + strh r0, [r4, #0x36] + ldrh r0, [r5, #0x26] + strh r0, [r4, #0x38] + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x3a + strb r1, [r0] +_0224DFC6: + mov r2, #0 +_0224DFC8: + add r0, r3, r2 + ldrb r1, [r0, #8] + add r0, r6, r2 + add r2, r2, #1 + strb r1, [r0, #0x10] + cmp r2, #6 + blt _0224DFC8 + add r7, r7, #1 + add r3, r3, #6 + add r6, r6, #6 + cmp r7, #2 + blt _0224DFC6 + mov r0, #0 + add r3, r0, #0 +_0224DFE4: + add r2, r5, r0 + ldrb r1, [r2, #8] + cmp r1, #2 + bne _0224DFF2 + add r1, r4, r0 + strb r3, [r1, #0x1c] + b _0224DFF8 +_0224DFF2: + ldrb r2, [r2, #2] + add r1, r4, r0 + strb r2, [r1, #0x1c] +_0224DFF8: + add r0, r0, #1 + cmp r0, #6 + blt _0224DFE4 + mov r2, #0 + add r3, r5, #0 + add r6, r4, #0 +_0224E004: + ldrh r0, [r3, #0x14] + add r7, r4, r2 + add r1, r5, r2 + strh r0, [r6, #0x24] + ldrb r0, [r1, #0x1c] + add r7, #0x2c + add r1, #0x20 + strb r0, [r7] + add r0, r4, r2 + ldrb r1, [r1] + add r0, #0x30 + add r2, r2, #1 + strb r1, [r0] + add r3, r3, #2 + add r6, r6, #2 + cmp r2, #4 + blt _0224E004 + ldr r0, [sp] + add r1, r4, #0 + ldr r0, [r0] + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0224E034 +MOD11_0224E034: ; 0x0224E034 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + mov r0, #5 + mov r1, #0x24 + add r7, r2, #0 + bl FUN_02016998 + add r3, r0, #0 + mov r1, #0x65 + mov r4, #0 + add r0, #0x20 + strb r4, [r0] + ldr r0, [sp] + str r5, [r3] + add r0, #0x94 + ldrb r0, [r0] + lsl r1, r1, #2 + add r5, r7, #0 + strb r0, [r3, #0x1c] + ldr r0, [sp] + add r6, r3, #0 + ldrb r0, [r0, r1] + add r1, r1, #1 + strb r0, [r3, #0x1d] + ldr r0, [sp] + ldrb r0, [r0, r1] + strb r0, [r3, #0x1e] + ldr r0, [sp] + add r0, #0x28 + str r0, [r3, #4] + ldrb r0, [r7, #1] + strb r0, [r3, #0x1f] +_0224E076: + ldrh r0, [r5, #4] + add r2, r7, r4 + add r1, r3, r4 + strh r0, [r6, #0xc] + ldrb r0, [r2, #0xc] + add r4, r4, #1 + add r5, r5, #2 + strb r0, [r1, #0x14] + ldrb r0, [r2, #0x10] + add r6, r6, #2 + cmp r4, #4 + strb r0, [r1, #0x18] + blt _0224E076 + ldrh r0, [r7, #2] + add r1, r3, #0 + mov r2, #0 + strh r0, [r3, #0x22] + ldr r0, [sp] + ldr r0, [r0, #4] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224E0A4 +MOD11_0224E0A4: ; 0x0224E0A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r7, r1, #0 + mov r0, #5 + mov r1, #0x34 + add r5, r2, #0 + bl FUN_02016998 + add r6, r0, #0 + mov r0, #0 + strb r0, [r6, #0xf] + ldr r0, [sp] + str r0, [r6] + add r0, r7, #0 + add r0, #0x94 + ldrb r0, [r0] + strb r0, [r6, #0xc] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r7, r0] + add r0, r0, #1 + strb r1, [r6, #0xd] + ldrb r0, [r7, r0] + strb r0, [r6, #0xe] + ldrh r0, [r5, #2] + strh r0, [r6, #0x30] + add r0, r7, #0 + add r0, #0x28 + str r0, [r6, #4] + add r0, r6, #0 + ldrb r1, [r5, #1] + add r0, #0x32 + strb r1, [r0] + ldr r0, [sp] + add r1, sp, #4 + bl MOD11_02231504 + ldr r0, [sp] + bl MOD11_0222FF84 + add r4, r0, #0 + ldr r0, [sp] + bl MOD11_0222FF74 + mov r0, #0 + cmp r4, #0 + ble _0224E120 + add r1, r6, #0 +_0224E106: + ldrh r2, [r5, #4] + add r0, r0, #1 + strh r2, [r1, #0x10] + ldrh r2, [r5, #6] + strh r2, [r1, #0x12] + ldrh r2, [r5, #8] + strh r2, [r1, #0x14] + ldrh r2, [r5, #0xa] + add r5, #8 + strh r2, [r1, #0x16] + add r1, #8 + cmp r0, r4 + blt _0224E106 +_0224E120: + ldr r0, [r7, #8] + add r1, r6, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224E130 +MOD11_0224E130: ; 0x0224E130 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + str r1, [sp] + mov r0, #5 + mov r1, #0x34 + str r2, [sp, #4] + bl FUN_02016998 + add r4, r0, #0 + mov r0, #5 + mov r1, #0x34 + bl FUN_02016998 + str r0, [r4, #8] + mov r0, #5 + mov r1, #0x38 + bl FUN_02016998 + ldr r1, [r4, #8] + str r0, [r1, #4] + mov r0, #5 + bl FUN_0206B8AC + ldr r1, [r4, #8] + mov r6, #0 + ldr r1, [r1, #4] + ldr r3, [sp, #4] + str r0, [r1] + strb r6, [r4, #0xe] + str r5, [r4] + ldr r0, [sp, #4] + mov r1, #0x65 + ldrb r0, [r0] + lsl r1, r1, #2 + add r5, r4, #0 + strb r0, [r4, #0xc] + ldr r0, [sp] + ldrb r0, [r0, r1] + add r1, r1, #1 + strb r0, [r4, #0xd] + ldr r0, [sp] + ldrb r0, [r0, r1] + strb r0, [r4, #0xf] + ldr r0, [sp, #4] + ldrb r0, [r0, #1] + strb r0, [r4, #0x14] + ldr r0, [sp, #4] + ldrb r0, [r0, #2] + strb r0, [r4, #0x15] + ldr r0, [sp, #4] + ldrb r0, [r0, #3] + strb r0, [r4, #0x16] +_0224E19A: + ldr r0, [sp, #4] + ldr r1, [r4, #8] + add r7, r0, r6 + ldrb r0, [r7, #4] + add r1, r1, r6 + mov r2, #0 + strb r0, [r1, #0xc] +_0224E1A8: + add r0, r3, r2 + ldrb r1, [r0, #8] + add r0, r5, r2 + add r2, r2, #1 + strb r1, [r0, #0x18] + cmp r2, #6 + blt _0224E1A8 + add r7, #0x20 + ldrb r1, [r7] + add r0, r4, r6 + add r0, #0x30 + add r6, r6, #1 + strb r1, [r0] + add r3, r3, #6 + add r5, r5, #6 + cmp r6, #4 + blt _0224E19A + ldr r0, [sp] + add r1, r4, #0 + ldr r0, [r0, #0xc] + mov r2, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224E1DC +MOD11_0224E1DC: ; 0x0224E1DC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + str r1, [sp] + mov r0, #5 + mov r1, #0x34 + add r7, r2, #0 + bl FUN_02016998 + add r2, r0, #0 + mov r3, #0 + strb r3, [r2, #0xa] + str r4, [r2] + ldrb r0, [r7] + add r5, r7, #0 + add r6, r2, #0 + strb r0, [r2, #8] + ldrb r0, [r7, #1] + strb r0, [r2, #9] + ldrb r0, [r7, #2] + strb r0, [r2, #0xb] + ldr r0, [r7, #0x20] + str r0, [r2, #0x10] + ldrb r0, [r7, #3] + strb r0, [r2, #0x16] + add r0, r7, #0 + strh r3, [r2, #0x14] + add r0, #0x24 + ldrb r0, [r0] + strb r0, [r2, #0x18] +_0224E216: + add r0, r7, r3 + ldrb r1, [r0, #4] + add r0, r2, r3 + mov r4, #0 + strb r1, [r0, #0xc] +_0224E220: + add r0, r5, r4 + ldrb r1, [r0, #8] + add r0, r6, r4 + add r4, r4, #1 + strb r1, [r0, #0x1c] + cmp r4, #6 + blt _0224E220 + add r3, r3, #1 + add r5, r5, #6 + add r6, r6, #6 + cmp r3, #4 + blt _0224E216 + ldr r0, [sp] + add r1, r2, #0 + ldr r0, [r0, #0x10] + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0224E248 +MOD11_0224E248: ; 0x0224E248 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #5 + mov r1, #0x1c + add r4, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #0xe] + str r6, [r1] + ldrb r0, [r4] + strb r0, [r1, #0xc] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + strb r0, [r1, #0xd] + add r0, r5, #0 + add r0, #0x28 + str r0, [r1, #4] + ldrh r0, [r4, #2] + str r0, [r1, #0x10] + ldrb r0, [r4, #1] + strb r0, [r1, #0xf] + ldr r0, [r4, #4] + strh r0, [r1, #0x18] + ldr r0, [r4, #8] + str r0, [r1, #0x14] + ldr r0, [r5, #0x14] + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224E28C +MOD11_0224E28C: ; 0x0224E28C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + bl MOD11_022300C8 + str r0, [sp] + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r6, [r4] + ldrb r0, [r5] + mov r1, #0x65 + lsl r1, r1, #2 + strb r0, [r4, #4] + ldrb r0, [r7, r1] + strb r0, [r4, #5] + ldrh r2, [r5, #2] + lsl r0, r2, #1 + add r2, r2, r0 + add r0, sp, #4 + strh r2, [r0, #2] + mov r2, #2 + strb r2, [r0, #1] + ldrb r0, [r5, #1] + ldrb r1, [r7, r1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [sp, #8] + add r0, r6, #0 + bl MOD11_02230E54 + add r3, r0, #0 + ldr r1, [sp] + add r0, r6, #0 + add r2, sp, #4 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224E2F0 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E2F0: .word MOD11_02253008 + + thumb_func_start MOD11_0224E2F4 +MOD11_0224E2F4: ; 0x0224E2F4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD11_022300C4 + str r0, [sp] + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + add r0, r6, #0 + str r5, [r4] + add r0, #0x94 + ldrb r0, [r0] + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + add r2, r7, #0 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224E340 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E340: .word MOD11_02253008 + + thumb_func_start MOD11_0224E344 +MOD11_0224E344: ; 0x0224E344 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + mov r0, #5 + mov r1, #0x70 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + add r0, #0x6a + strb r1, [r0] + str r7, [r4] + add r0, r6, #0 + str r6, [r4, #4] + add r0, #0x94 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x68 + strb r1, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r6, r0] + add r0, r4, #0 + add r0, #0x69 + strb r1, [r0] + add r0, r7, #0 + bl MOD11_02230070 + add r3, r4, #0 + str r0, [r4, #0xc] + add r7, r5, #0 + add r3, #0x10 + mov r2, #0xb +_0224E388: + ldmia r7!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224E388 + ldr r0, [r6, #0x20] + str r0, [r4, #8] + ldr r0, [r5, #0x4c] + cmp r0, #1 + bne _0224E3A8 + ldr r0, [r5, #0x50] + cmp r0, #0x19 + bne _0224E3A8 + mov r0, #0x1a + mov r1, #1 + lsl r0, r0, #4 + str r1, [r6, r0] +_0224E3A8: + ldr r0, [r5, #0x4c] + cmp r0, #1 + bne _0224E3BC + ldr r0, [r5, #0x50] + cmp r0, #0x1a + bne _0224E3BC + mov r0, #0x1a + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] +_0224E3BC: + ldrh r0, [r5, #2] + add r1, r4, #0 + add r1, #0x6c + str r0, [sp] + add r0, r4, #0 + ldr r2, [r5, #0x4c] + ldr r3, [r5, #0x50] + add r0, #0x6b + bl MOD11_022545B4 + ldr r0, _0224E3DC ; =MOD11_02252754 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E3DC: .word MOD11_02252754 + + thumb_func_start MOD11_0224E3E0 +MOD11_0224E3E0: ; 0x0224E3E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0xc + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #9] + str r5, [r1] + ldr r0, [r4, #0x20] + str r0, [r1, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + strb r0, [r1, #8] + ldr r0, _0224E40C ; =MOD11_022529C0 + strb r2, [r1, #0xa] + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224E40C: .word MOD11_022529C0 + + thumb_func_start MOD11_0224E410 +MOD11_0224E410: ; 0x0224E410 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + ldr r0, [r6, #0x2c] + add r5, r2, #0 + cmp r0, #0 + bne _0224E422 + bl ErrorHandling +_0224E422: + add r4, r6, #0 + add r4, #0x28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + blx MI_CpuFill8 + str r7, [r4, #0xc] + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x4c + strb r1, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r6, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r7, #0 + bl MOD11_0222FF74 + add r1, r0, #0 + ldr r0, _0224E490 ; =0x00000195 + ldrb r0, [r6, r0] + bl MOD11_02257F6C + add r1, r4, #0 + add r1, #0x25 + strb r0, [r1] + mov r0, #2 + ldrsh r0, [r5, r0] + str r0, [r4, #0x28] + ldrh r0, [r5, #4] + str r0, [r4, #0x2c] + ldr r0, [r5, #8] + str r0, [r4, #0x30] + add r0, r4, #0 + ldrb r1, [r5, #1] + add r0, #0x48 + strb r1, [r0] + ldr r1, [r5, #8] + ldr r0, _0224E494 ; =0x00007FFF + cmp r1, r0 + bne _0224E480 + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x30] +_0224E480: + mov r2, #0xfa + ldr r0, _0224E498 ; =MOD11_02252A1C + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E490: .word 0x00000195 +_0224E494: .word 0x00007FFF +_0224E498: .word MOD11_02252A1C + + thumb_func_start MOD11_0224E49C +MOD11_0224E49C: ; 0x0224E49C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + ldr r0, [r6, #0x2c] + add r5, r2, #0 + cmp r0, #0 + bne _0224E4AE + bl ErrorHandling +_0224E4AE: + add r4, r6, #0 + add r4, #0x28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + blx MI_CpuFill8 + str r7, [r4, #0xc] + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x4c + strb r1, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r2, [r6, r0] + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + ldr r1, [r5, #4] + add r0, r0, #1 + str r1, [r4, #0x38] + ldr r1, [r5, #0xc] + str r1, [r4, #0x3c] + ldr r2, [r5, #8] + ldr r1, [r4, #0x38] + sub r1, r2, r1 + str r1, [r4, #0x40] + ldrb r0, [r6, r0] + cmp r0, #0 + bne _0224E4FA + mov r2, #0xfa + ldr r0, _0224E50C ; =MOD11_02252A70 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0224E4FA: + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x24 + add r4, #0x4c + ldrb r1, [r1] + ldrb r2, [r4] + bl MOD11_022567B8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E50C: .word MOD11_02252A70 + + thumb_func_start MOD11_0224E510 +MOD11_0224E510: ; 0x0224E510 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x74 + str r2, [sp] + bl FUN_02016998 + add r1, r0, #0 + ldr r0, _0224E5F0 ; =0x00000195 + ldrb r2, [r4, r0] + mov r0, #1 + tst r0, r2 + beq _0224E532 + mov r2, #2 + b _0224E534 +_0224E532: + mov r2, #0 +_0224E534: + add r0, r1, #0 + add r0, #0x67 + strb r2, [r0] + add r0, r1, #0 + mov r2, #0 + add r0, #0x66 + strb r2, [r0] + str r5, [r1] + ldr r0, [sp] + str r4, [r1, #4] + ldrb r3, [r0] + add r0, r1, #0 + add r0, #0x64 + strb r3, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + add r0, r1, #0 + add r0, #0x65 + strb r3, [r0] + ldr r0, [r4, #0x20] + add r7, r1, #0 + str r0, [r1, #8] + ldr r0, [sp] + add r5, r1, #0 + ldrh r3, [r0, #2] + add r0, r1, #0 + add r0, #0x68 + strh r3, [r0] + ldr r0, [sp] + ldrb r3, [r0, #1] + add r0, r1, #0 + add r0, #0x6a + strb r3, [r0] + ldr r0, [sp] + ldrb r3, [r0, #8] + add r0, r1, #0 + add r0, #0x6b + strb r3, [r0] + ldr r0, [sp] + ldr r0, [r0, #4] + str r0, [r1, #0x6c] + ldr r0, [sp] + ldrb r3, [r0, #9] + add r0, r1, #0 + add r0, #0x70 + strh r3, [r0] + ldr r0, [sp] + ldrb r3, [r0, #0xa] + add r0, r1, #0 + add r0, #0x72 + strh r3, [r0] + ldr r3, [sp] + add r4, r3, #0 +_0224E5A0: + ldrh r0, [r3, #0xc] + add r3, r3, #2 + strh r0, [r7, #0x24] + ldr r0, [sp] + add r7, r7, #2 + add r0, r0, r2 + str r0, [sp, #0x10] + ldrb r0, [r0, #0x14] + str r0, [sp, #8] + add r0, r1, r2 + ldr r6, [sp, #8] + add r0, #0x2c + strb r6, [r0] + ldr r0, [sp, #0x10] + add r6, r1, r2 + ldrb r0, [r0, #0x18] + str r6, [sp, #4] + add r6, #0x30 + str r0, [sp, #0xc] + strb r0, [r6] + ldr r0, [sp, #0x10] + str r6, [sp, #4] + add r6, r1, r2 + ldrb r0, [r0, #0x1c] + add r6, #0x34 + add r2, r2, #1 + strb r0, [r6] + ldr r0, [r4, #0x20] + add r4, r4, #4 + str r0, [r5, #0x38] + add r5, r5, #4 + cmp r2, #4 + blt _0224E5A0 + ldr r0, _0224E5F4 ; =MOD11_02252B30 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224E5F0: .word 0x00000195 +_0224E5F4: .word MOD11_02252B30 + + thumb_func_start MOD11_0224E5F8 +MOD11_0224E5F8: ; 0x0224E5F8 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldr r2, _0224E624 ; =0x00000195 + mov r4, #1 + ldrb r2, [r1, r2] + tst r2, r4 + beq _0224E60A + mov r4, #0x75 + b _0224E60C +_0224E60A: + sub r4, #0x76 +_0224E60C: + mov r2, #0x65 + lsl r2, r2, #2 + ldrb r1, [r1, r2] + ldrb r2, [r5] + bl MOD11_022567B8 + ldrh r0, [r5, #2] + add r1, r4, #0 + bl FUN_020054A8 + pop {r3, r4, r5, pc} + nop +_0224E624: .word 0x00000195 + + thumb_func_start MOD11_0224E628 +MOD11_0224E628: ; 0x0224E628 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #6] + add r0, r4, #0 + str r5, [r1] + add r0, #0x94 + ldrb r0, [r0] + strb r0, [r1, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + strb r0, [r1, #5] + ldr r0, _0224E658 ; =MOD11_02252DB4 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_0224E658: .word MOD11_02252DB4 + + thumb_func_start MOD11_0224E65C +MOD11_0224E65C: ; 0x0224E65C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x68 + str r2, [sp] + bl FUN_02016998 + add r1, r0, #0 + str r5, [r1] + ldr r0, [sp] + str r4, [r1, #4] + ldrb r2, [r0] + add r0, r1, #0 + add r0, #0x60 + strb r2, [r0] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r2, [r4, r0] + add r0, r1, #0 + add r0, #0x61 + strb r2, [r0] + add r0, r1, #0 + mov r2, #0 + add r0, #0x62 + strb r2, [r0] + ldr r0, [sp] + add r7, r1, #0 + ldrb r3, [r0, #1] + add r0, r1, #0 + add r0, #0x63 + strb r3, [r0] + ldr r0, [sp] + ldr r3, [sp] + ldrb r0, [r0, #2] + add r4, r3, #0 + add r5, r1, #0 + str r0, [r1, #0x64] +_0224E6AA: + ldrh r0, [r3, #4] + add r3, r3, #2 + strh r0, [r7, #0x20] + ldr r0, [sp] + add r7, r7, #2 + add r0, r0, r2 + str r0, [sp, #0x10] + ldrb r0, [r0, #0xc] + str r0, [sp, #8] + add r0, r1, r2 + ldr r6, [sp, #8] + add r0, #0x28 + strb r6, [r0] + ldr r0, [sp, #0x10] + add r6, r1, r2 + ldrb r0, [r0, #0x10] + str r6, [sp, #4] + add r6, #0x2c + str r0, [sp, #0xc] + strb r0, [r6] + ldr r0, [sp, #0x10] + str r6, [sp, #4] + add r6, r1, r2 + ldrb r0, [r0, #0x14] + add r6, #0x30 + add r2, r2, #1 + strb r0, [r6] + ldr r0, [r4, #0x18] + add r4, r4, #4 + str r0, [r5, #0x34] + add r5, r5, #4 + cmp r2, #4 + blt _0224E6AA + ldr r0, _0224E6F8 ; =MOD11_02252E50 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224E6F8: .word MOD11_02252E50 + + thumb_func_start MOD11_0224E6FC +MOD11_0224E6FC: ; 0x0224E6FC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x2c] + add r4, r2, #0 + cmp r0, #0 + bne _0224E70E + bl ErrorHandling +_0224E70E: + ldrb r1, [r4, #1] + add r0, r5, #0 + add r0, #0x72 + strb r1, [r0] + add r0, r5, #0 + mov r2, #1 + ldr r1, [r5, #0x50] + add r0, #0x28 + lsl r2, r2, #8 + bl MOD11_02256D70 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + add r0, r6, #0 + bl MOD11_022567B8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0224E734 +MOD11_0224E734: ; 0x0224E734 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + add r6, r0, #0 + add r7, r2, #0 + bl MOD11_02230140 + str r0, [sp, #4] + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r6, [r4] + ldrb r0, [r7] + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + strb r0, [r4, #5] + add r0, r6, #0 + bl MOD11_02230E54 + str r0, [sp] + mov r2, #0x65 + lsl r2, r2, #2 + ldrb r2, [r5, r2] + ldrb r3, [r7, #1] + ldr r1, [sp, #4] + add r0, r6, #0 + bl MOD11_02231684 + strb r0, [r4, #6] + ldr r0, _0224E78C ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E78C: .word MOD11_02253008 + + thumb_func_start MOD11_0224E790 +MOD11_0224E790: ; 0x0224E790 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r3, sp, #4 + add r6, r1, #0 + add r7, r2, #0 + bl MOD11_02253B74 + add r0, r5, #0 + bl MOD11_022300C4 + str r0, [sp] + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + ldrb r0, [r7] + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + add r2, sp, #4 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224E7E4 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E7E4: .word MOD11_02253008 + + thumb_func_start MOD11_0224E7E8 +MOD11_0224E7E8: ; 0x0224E7E8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r3, sp, #4 + add r6, r1, #0 + add r7, r2, #0 + bl MOD11_02253C48 + add r0, r5, #0 + bl MOD11_022300C4 + str r0, [sp] + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + ldrb r0, [r7] + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + add r2, sp, #4 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224E83C ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E83C: .word MOD11_02253008 + + thumb_func_start MOD11_0224E840 +MOD11_0224E840: ; 0x0224E840 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r2, sp, #0 + add r6, r1, #0 + bl MOD11_02253D28 + add r0, r5, #0 + bl MOD11_022300C4 + add r7, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + mov r0, #0x22 + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, sp, #0 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224E890 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224E890: .word MOD11_02253008 + + thumb_func_start MOD11_0224E894 +MOD11_0224E894: ; 0x0224E894 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r3, sp, #4 + add r6, r1, #0 + add r7, r2, #0 + bl MOD11_02253DD4 + add r0, r5, #0 + bl MOD11_022300C4 + str r0, [sp] + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + ldrb r0, [r7] + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + ldr r1, [sp] + add r0, r5, #0 + add r2, sp, #4 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224E8E8 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E8E8: .word MOD11_02253008 + + thumb_func_start MOD11_0224E8EC +MOD11_0224E8EC: ; 0x0224E8EC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0xc + bl FUN_02016998 + add r1, r0, #0 + add r0, r4, #0 + str r5, [r1] + add r0, #0x94 + ldrb r0, [r0] + mov r2, #0 + strb r0, [r1, #8] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r4, #0x28 + strb r0, [r1, #9] + strb r2, [r1, #0xa] + ldr r0, _0224E920 ; =MOD11_02252FBC + str r4, [r1, #4] + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_0224E920: .word MOD11_02252FBC + + thumb_func_start MOD11_0224E924 +MOD11_0224E924: ; 0x0224E924 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, _0224E9B8 ; =0x00000196 + add r4, r2, #0 + ldrb r2, [r5, r1] + add r6, r0, #0 + cmp r2, #0 + bne _0224E976 + bl MOD11_022300C4 + str r0, [sp] + mov r0, #5 + mov r1, #0xc + bl FUN_02016998 + add r7, r0, #0 + str r6, [r7] + ldrb r0, [r4] + strb r0, [r7, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + strb r0, [r7, #5] + mov r0, #0 + strb r0, [r7, #7] + add r0, r6, #0 + bl MOD11_02230E54 + add r3, r0, #0 + ldr r1, [sp] + add r0, r6, #0 + add r2, r4, #4 + bl MOD11_0223178C + strb r0, [r7, #6] + ldr r0, _0224E9BC ; =MOD11_0225304C + add r1, r7, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_0224E976: + cmp r2, #1 + bne _0224E992 + sub r1, r1, #2 + ldrb r1, [r5, r1] + bl MOD11_02256004 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + add r0, r6, #0 + bl MOD11_022567B8 + pop {r3, r4, r5, r6, r7, pc} +_0224E992: + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + bne _0224E9A8 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + add r0, r6, #0 + bl MOD11_02256004 +_0224E9A8: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + add r0, r6, #0 + bl MOD11_022567B8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E9B8: .word 0x00000196 +_0224E9BC: .word MOD11_0225304C + + thumb_func_start MOD11_0224E9C0 +MOD11_0224E9C0: ; 0x0224E9C0 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r6, #0 + add r4, #0x28 + add r7, r0, #0 + add r5, r2, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #1 + blx MIi_CpuClearFast + mov r0, #0x65 + str r7, [r4, #0xc] + lsl r0, r0, #2 + ldrb r1, [r6, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r7, #0 + bl MOD11_0222FF74 + add r1, r0, #0 + ldr r0, _0224EA70 ; =0x00000195 + ldrb r0, [r6, r0] + bl MOD11_02257F6C + add r1, r4, #0 + add r1, #0x25 + strb r0, [r1] + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x4c + mov r2, #0 + strb r1, [r0] + mov r0, #2 + ldrsh r0, [r5, r0] + str r0, [r4, #0x28] + ldrh r0, [r5, #4] + str r0, [r4, #0x2c] + add r0, r4, #0 + ldrb r1, [r5, #1] + add r0, #0x48 + strb r1, [r0] + ldrb r0, [r5, #7] + lsl r0, r0, #0x19 + lsr r1, r0, #0x1e + add r0, r4, #0 + add r0, #0x49 + strb r1, [r0] + str r2, [r4, #0x30] + ldr r0, [r5, #8] + sub r2, #0x21 + str r0, [r4, #0x38] + ldr r0, [r5, #0xc] + str r0, [r4, #0x3c] + add r0, r4, #0 + ldrb r1, [r5, #6] + add r0, #0x26 + strb r1, [r0] + ldrb r0, [r5, #7] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1b + add r0, r4, #0 + add r0, #0x4a + strb r1, [r0] + ldrb r0, [r5, #7] + lsl r0, r0, #0x18 + lsr r1, r0, #0x1f + add r0, r4, #0 + add r0, #0x4b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [r5, #0x10] + add r0, #0x27 + strb r1, [r0] + ldr r1, [r4, #0x28] + add r0, r4, #0 + bl MOD11_02256D70 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x24 + add r4, #0x4c + ldrb r1, [r1] + ldrb r2, [r4] + bl MOD11_022567B8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224EA70: .word 0x00000195 + + thumb_func_start MOD11_0224EA74 +MOD11_0224EA74: ; 0x0224EA74 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r4, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #0xa] + str r5, [r1] + ldrb r0, [r4] + strb r0, [r1, #8] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r1, #9] + ldrh r0, [r4, #2] + strh r0, [r1, #0xc] + ldrb r0, [r4, #1] + strb r0, [r1, #0xe] + ldr r0, _0224EAA8 ; =MOD11_022533F4 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224EAA8: .word MOD11_022533F4 + + thumb_func_start MOD11_0224EAAC +MOD11_0224EAAC: ; 0x0224EAAC + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r4, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #0xa] + str r6, [r1] + ldr r0, [r5, #0x20] + str r0, [r1, #4] + ldrb r0, [r4] + strb r0, [r1, #8] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + strb r0, [r1, #9] + ldrb r0, [r4, #1] + strb r0, [r1, #0xb] + strb r2, [r1, #0xc] + ldrb r0, [r4, #2] + strb r0, [r1, #0xd] + ldr r0, _0224EAE8 ; =MOD11_0225352C + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_0224EAE8: .word MOD11_0225352C + + thumb_func_start MOD11_0224EAEC +MOD11_0224EAEC: ; 0x0224EAEC + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r4, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r0, #0 + strb r0, [r1, #7] + str r6, [r1] + ldrb r2, [r4] + strb r2, [r1, #4] + mov r2, #0x65 + lsl r2, r2, #2 + ldrb r3, [r5, r2] + add r2, r2, #1 + strb r3, [r1, #5] + ldrb r2, [r5, r2] + strb r2, [r1, #6] +_0224EB16: + add r2, r4, r0 + ldrb r3, [r2, #2] + add r2, r1, r0 + add r0, r0, #1 + strb r3, [r2, #8] + cmp r0, #6 + blt _0224EB16 + ldr r0, _0224EB30 ; =MOD11_0225359C + mov r2, #0 + strb r2, [r1, #0xe] + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224EB30: .word MOD11_0225359C + + thumb_func_start MOD11_0224EB34 +MOD11_0224EB34: ; 0x0224EB34 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r6, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #7] + str r5, [r1] + ldrb r0, [r6] + strb r0, [r1, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + add r0, r0, #1 + strb r3, [r1, #5] + ldrb r0, [r4, r0] + strb r0, [r1, #6] + ldr r0, _0224EB68 ; =MOD11_02253650 + strb r2, [r1, #0xe] + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224EB68: .word MOD11_02253650 + + thumb_func_start MOD11_0224EB6C +MOD11_0224EB6C: ; 0x0224EB6C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r4, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r0, #0 + strb r0, [r1, #7] + str r6, [r1] + ldrb r2, [r4] + strb r2, [r1, #4] + mov r2, #0x65 + lsl r2, r2, #2 + ldrb r3, [r5, r2] + add r2, r2, #1 + strb r3, [r1, #5] + ldrb r2, [r5, r2] + strb r2, [r1, #6] +_0224EB96: + add r2, r4, r0 + ldrb r3, [r2, #2] + add r2, r1, r0 + add r0, r0, #1 + strb r3, [r2, #8] + cmp r0, #6 + blt _0224EB96 + mov r0, #1 + strb r0, [r1, #0xe] + ldr r0, _0224EBB4 ; =MOD11_0225359C + mov r2, #0 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_0224EBB4: .word MOD11_0225359C + + thumb_func_start MOD11_0224EBB8 +MOD11_0224EBB8: ; 0x0224EBB8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x10 + add r6, r2, #0 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #7] + str r5, [r1] + ldrb r0, [r6] + strb r0, [r1, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + add r0, r0, #1 + strb r3, [r1, #5] + ldrb r0, [r4, r0] + strb r0, [r1, #6] + mov r0, #1 + strb r0, [r1, #0xe] + ldr r0, _0224EBF0 ; =MOD11_02253650 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_0224EBF0: .word MOD11_02253650 + + thumb_func_start MOD11_0224EBF4 +MOD11_0224EBF4: ; 0x0224EBF4 + push {r4, r5, lr} + sub sp, #0x24 + add r4, r1, #0 + ldr r1, _0224EC44 ; =0x00000196 + add r5, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _0224EC32 + bl MOD11_022300C4 + add r1, r0, #0 + ldr r2, _0224EC48 ; =0x0000039B + add r0, sp, #0 + strh r2, [r0, #2] + mov r3, #0 + strb r3, [r0, #1] + add r0, r5, #0 + add r2, sp, #0 + bl MOD11_0223178C + add r0, r5, #0 + mov r1, #0 + bl MOD11_0222FF6C + mov r1, #1 + bl FUN_0200D858 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_022312C8 +_0224EC32: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x37 + bl MOD11_022567B8 + add sp, #0x24 + pop {r4, r5, pc} + .align 2, 0 +_0224EC44: .word 0x00000196 +_0224EC48: .word 0x0000039B + + thumb_func_start MOD11_0224EC4C +MOD11_0224EC4C: ; 0x0224EC4C + push {r4, r5, r6, lr} + sub sp, #0x50 + mov r3, #0x65 + add r4, r1, #0 + lsl r3, r3, #2 + add r6, r2, #0 + ldrb r3, [r4, r3] + add r1, r6, #0 + add r2, sp, #0 + add r5, r0, #0 + bl MOD11_0225452C + add r0, sp, #0 + mov r1, #5 + bl MOD08_0222A494 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + ldrb r2, [r6] + add r0, r5, #0 + bl MOD11_022567B8 + add sp, #0x50 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224EC80 +MOD11_0224EC80: ; 0x0224EC80 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x10 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #0xe] + str r5, [r1] + add r0, r4, #0 + str r4, [r1, #4] + add r0, #0x94 + ldrb r0, [r0] + strb r0, [r1, #0xc] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + strb r0, [r1, #0xd] + ldr r0, [r4, #0x20] + str r0, [r1, #8] + ldr r0, _0224ECB4 ; =MOD11_022536D4 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224ECB4: .word MOD11_022536D4 + + thumb_func_start MOD11_0224ECB8 +MOD11_0224ECB8: ; 0x0224ECB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #5 + mov r1, #0x10 + bl FUN_02016998 + add r1, r0, #0 + mov r2, #0 + strb r2, [r1, #0xe] + str r5, [r1] + add r0, r4, #0 + str r4, [r1, #4] + add r0, #0x94 + ldrb r0, [r0] + strb r0, [r1, #0xc] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + strb r0, [r1, #0xd] + ldr r0, [r4, #0x20] + str r0, [r1, #8] + ldr r0, _0224ECEC ; =MOD11_02253720 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224ECEC: .word MOD11_02253720 + + thumb_func_start MOD11_0224ECF0 +MOD11_0224ECF0: ; 0x0224ECF0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r2, sp, #0 + add r6, r1, #0 + bl MOD11_02254108 + add r0, r5, #0 + bl MOD11_022300C4 + add r7, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + mov r0, #0x3b + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, sp, #0 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224ED40 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224ED40: .word MOD11_02253008 + + thumb_func_start MOD11_0224ED44 +MOD11_0224ED44: ; 0x0224ED44 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r3, sp, #0 + add r6, r1, #0 + bl MOD11_022541C4 + add r0, r5, #0 + bl MOD11_022300C4 + add r7, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + mov r0, #0x3c + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, sp, #0 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224ED94 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224ED94: .word MOD11_02253008 + + thumb_func_start MOD11_0224ED98 +MOD11_0224ED98: ; 0x0224ED98 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r2, sp, #0 + add r6, r1, #0 + bl MOD11_022542B4 + add r0, r5, #0 + bl MOD11_022300C4 + add r7, r0, #0 + mov r0, #5 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + str r5, [r4] + mov r0, #0x3d + strb r0, [r4, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + strb r0, [r4, #5] + add r0, r5, #0 + bl MOD11_02230E54 + add r3, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, sp, #0 + bl MOD11_0223178C + strb r0, [r4, #6] + ldr r0, _0224EDE8 ; =MOD11_02253008 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224EDE8: .word MOD11_02253008 + + thumb_func_start MOD11_0224EDEC +MOD11_0224EDEC: ; 0x0224EDEC + push {r4, r5, r6, lr} + sub sp, #0x50 + mov r3, #0x65 + add r4, r1, #0 + lsl r3, r3, #2 + add r6, r2, #0 + ldrb r3, [r4, r3] + add r1, r6, #0 + add r2, sp, #0 + add r5, r0, #0 + bl MOD11_0225452C + add r0, sp, #0 + mov r1, #5 + bl MOD08_0222A568 + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + ldrb r2, [r6] + add r0, r5, #0 + bl MOD11_022567B8 + add sp, #0x50 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224EE20 +MOD11_0224EE20: ; 0x0224EE20 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + ldr r0, _0224EE70 ; =0x00000195 + mov r1, #1 + ldrb r0, [r5, r0] + add r4, r2, #0 + tst r0, r1 + beq _0224EE36 + mov r1, #0x75 + b _0224EE38 +_0224EE36: + sub r1, #0x76 +_0224EE38: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0224EE48 + cmp r0, #1 + beq _0224EE58 + cmp r0, #2 + beq _0224EE50 + b _0224EE5E +_0224EE48: + ldr r0, _0224EE74 ; =0x000006FE + bl FUN_020054A8 + b _0224EE5E +_0224EE50: + ldr r0, _0224EE78 ; =0x000006FC + bl FUN_020054A8 + b _0224EE5E +_0224EE58: + ldr r0, _0224EE7C ; =0x000006FD + bl FUN_020054A8 +_0224EE5E: + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + add r0, r6, #0 + bl MOD11_022567B8 + pop {r4, r5, r6, pc} + nop +_0224EE70: .word 0x00000195 +_0224EE74: .word 0x000006FE +_0224EE78: .word 0x000006FC +_0224EE7C: .word 0x000006FD + + thumb_func_start MOD11_0224EE80 +MOD11_0224EE80: ; 0x0224EE80 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r6, r0, #0 + ldrh r0, [r4, #2] + add r5, r1, #0 + bl FUN_0200521C + mov r1, #0x65 + lsl r1, r1, #2 + ldrb r1, [r5, r1] + ldrb r2, [r4] + add r0, r6, #0 + bl MOD11_022567B8 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0224EEA0 +MOD11_0224EEA0: ; 0x0224EEA0 + push {r3, r4, r5, r6, lr} + sub sp, #0x6c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + ldrb r1, [r4, #0x12] + add r5, r0, #0 + cmp r1, #5 + bls _0224EEB8 + b _0224F2C2 +_0224EEB8: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224EEC4: ; jump table + .short _0224EED0 - _0224EEC4 - 2 ; case 0 + .short _0224EEDA - _0224EEC4 - 2 ; case 1 + .short _0224EEE8 - _0224EEC4 - 2 ; case 2 + .short _0224F15E - _0224EEC4 - 2 ; case 3 + .short _0224F1B2 - _0224EEC4 - 2 ; case 4 + .short _0224F1D0 - _0224EEC4 - 2 ; case 5 +_0224EED0: + mov r0, #0x1c + str r0, [r4, #0x20] + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_0224EEDA: + ldr r0, [r4, #0x20] + sub r0, r0, #1 + str r0, [r4, #0x20] + bne _0224EFAE + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_0224EEE8: + ldrb r0, [r4, #0x13] + add r1, sp, #0x10 + cmp r0, #2 + ldr r0, [r4, #0xc] + beq _0224EEF4 + b _0224F040 +_0224EEF4: + ldr r0, [r0] + add r1, #2 + add r2, sp, #0x10 + bl FUN_0200C7A0 + ldr r0, [r4, #0x1c] + cmp r0, #1 + beq _0224EF08 + cmp r0, #3 + bne _0224EF2A +_0224EF08: + add r1, sp, #0x10 + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, #0xc0 + ldr r0, [r4, #0xc] + bge _0224EF20 + ldr r0, [r0] + mov r1, #8 + mov r2, #0 + bl FUN_0200C82C + b _0224EF2A +_0224EF20: + ldr r0, [r0] + mov r1, #0xc0 + mov r2, #0x58 + bl FUN_0200C714 +_0224EF2A: + ldr r0, [r4, #0xc] + add r1, sp, #0x10 + ldr r0, [r0] + add r1, #2 + add r2, sp, #0x10 + bl FUN_0200C7A0 + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _0224EF4E + add r3, sp, #0x10 + mov r2, #2 + ldrsh r2, [r3, r2] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02007558 + b _0224EF9E +_0224EF4E: + cmp r0, #3 + bne _0224EF78 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0x10 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r0, r1 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x18 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #8] + neg r2, r2 + bl FUN_020079E0 + b _0224EF9E +_0224EF78: + cmp r0, #5 + bne _0224EF9E + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0x10 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r1, r0 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x10 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #8] + bl FUN_020079E0 +_0224EF9E: + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + mov r1, #0x14 + ldrsh r1, [r4, r1] + cmp r0, r1 + bge _0224EFB0 +_0224EFAE: + b _0224F2D8 +_0224EFB0: + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_02007314 + ldr r0, [r4, #8] + mov r1, #0x2c + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + mov r1, #0x2d + mov r2, #0 + bl FUN_02007558 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02007558 + ldr r0, [r4] + bl MOD11_02230E80 + ldr r1, [r4, #0x24] + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + ldrb r1, [r4, #0x11] + str r1, [sp, #8] + ldrh r2, [r4, #0x16] + ldrb r3, [r4, #0x13] + ldr r1, [r4, #8] + bl FUN_02069038 + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #5 + str r1, [sp, #8] + ldrh r2, [r4, #0x16] + ldr r1, [r4, #0x18] + mov r3, #0x75 + bl FUN_02069FB0 + ldr r0, [r4, #0x1c] + cmp r0, #1 + beq _0224F01C + cmp r0, #3 + bne _0224F028 +_0224F01C: + ldr r0, [r4, #0xc] + mov r1, #0xc0 + ldr r0, [r0] + mov r2, #0x58 + bl FUN_0200C714 +_0224F028: + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #8 + add r3, r2, #0 + bl FUN_02007E68 + ldrb r0, [r4, #0x12] + add sp, #0x6c + add r0, r0, #1 + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_0224F040: + ldr r0, [r0] + add r1, #2 + add r2, sp, #0x10 + bl FUN_0200C7A0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _0224F054 + cmp r0, #2 + bne _0224F076 +_0224F054: + add r0, sp, #0x10 + mov r1, #2 + ldrsh r0, [r0, r1] + cmp r0, #0x40 + ldr r0, [r4, #0xc] + ble _0224F06C + ldr r0, [r0] + sub r1, #0xa + mov r2, #0 + bl FUN_0200C82C + b _0224F076 +_0224F06C: + ldr r0, [r0] + mov r1, #0x40 + mov r2, #0x88 + bl FUN_0200C714 +_0224F076: + ldr r0, [r4, #0xc] + add r1, sp, #0x10 + ldr r0, [r0] + add r1, #2 + add r2, sp, #0x10 + bl FUN_0200C7A0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _0224F09A + add r3, sp, #0x10 + mov r2, #2 + ldrsh r2, [r3, r2] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02007558 + b _0224F0EA +_0224F09A: + cmp r0, #2 + bne _0224F0C2 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0x10 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r1, r0 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x18 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #8] + bl FUN_020079E0 + b _0224F0EA +_0224F0C2: + cmp r0, #4 + bne _0224F0EA + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0x10 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r0, r1 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x10 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #8] + neg r2, r2 + bl FUN_020079E0 +_0224F0EA: + mov r0, #0x14 + ldrsh r5, [r4, r0] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0200782C + cmp r0, r5 + bgt _0224F1C0 + ldr r0, [r4, #8] + mov r1, #0 + add r2, r5, #0 + bl FUN_02007558 + ldr r0, [r4] + bl MOD11_02230E80 + ldr r1, [r4, #0x24] + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + ldrb r1, [r4, #0x11] + str r1, [sp, #8] + ldrh r2, [r4, #0x16] + ldrb r3, [r4, #0x13] + ldr r1, [r4, #8] + bl FUN_02069038 + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #5 + str r3, [sp, #8] + ldrh r2, [r4, #0x16] + ldr r1, [r4, #0x18] + sub r3, #0x7a + bl FUN_02069FB0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _0224F148 + cmp r0, #2 + bne _0224F154 +_0224F148: + ldr r0, [r4, #0xc] + mov r1, #0x40 + ldr r0, [r0] + mov r2, #0x88 + bl FUN_0200C714 +_0224F154: + ldrb r0, [r4, #0x12] + add sp, #0x6c + add r0, r0, #1 + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_0224F15E: + ldr r0, [r4] + bl MOD11_02230E80 + ldrb r1, [r4, #0x11] + bl FUN_02014D7C + cmp r0, #1 + bne _0224F1C0 + ldr r0, [r4, #8] + bl FUN_02007390 + cmp r0, #0 + bne _0224F1C0 + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _0224F1AA + ldrb r1, [r4, #0x11] + mov r0, #0xb + add r2, sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x14 + bl MOD11_02254404 + mov r0, #4 + add sp, #0x6c + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_0224F1AA: + mov r0, #0xff + add sp, #0x6c + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_0224F1B2: + bl FUN_02212384 + add r0, r5, #0 + bl FUN_022123A0 + cmp r0, #0 + beq _0224F1C2 +_0224F1C0: + b _0224F2D8 +_0224F1C2: + add r0, r5, #0 + bl FUN_022123B0 + mov r0, #0xff + add sp, #0x6c + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_0224F1D0: + ldrb r5, [r4, #0x13] + cmp r5, #2 + bne _0224F25E + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_02007314 + ldr r0, [r4, #8] + mov r1, #0x2c + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + mov r1, #0x2d + mov r2, #0 + bl FUN_02007558 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02007558 + ldr r0, [r4] + bl MOD11_02230E80 + ldr r1, [r4, #0x24] + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + ldrb r1, [r4, #0x11] + str r1, [sp, #8] + ldrh r2, [r4, #0x16] + ldrb r3, [r4, #0x13] + ldr r1, [r4, #8] + bl FUN_02069038 + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #5 + str r1, [sp, #8] + ldrh r2, [r4, #0x16] + ldr r1, [r4, #0x18] + mov r3, #0x75 + bl FUN_02069FB0 + ldr r0, [r4, #0x1c] + cmp r0, #1 + beq _0224F242 + cmp r0, #3 + bne _0224F24E +_0224F242: + ldr r0, [r4, #0xc] + mov r1, #0xc0 + ldr r0, [r0] + mov r2, #0x58 + bl FUN_0200C714 +_0224F24E: + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #8 + add r3, r2, #0 + bl FUN_02007E68 + b _0224F2BA +_0224F25E: + ldr r0, [r4] + bl MOD11_02230E80 + ldr r1, [r4, #0x24] + add r3, r5, #0 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + ldrb r1, [r4, #0x11] + str r1, [sp, #8] + ldrh r2, [r4, #0x16] + ldr r1, [r4, #8] + bl FUN_02069038 + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #5 + str r3, [sp, #8] + ldrh r2, [r4, #0x16] + ldr r1, [r4, #0x18] + sub r3, #0x7a + bl FUN_02069FB0 + mov r2, #0x14 + ldrsh r2, [r4, r2] + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02007558 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _0224F2AE + cmp r0, #2 + bne _0224F2BA +_0224F2AE: + ldr r0, [r4, #0xc] + mov r1, #0x40 + ldr r0, [r0] + mov r2, #0x88 + bl FUN_0200C714 +_0224F2BA: + mov r0, #3 + add sp, #0x6c + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_0224F2C2: + ldrb r1, [r4, #0x11] + ldrb r2, [r4, #0x10] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0224F2D8: + add sp, #0x6c + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD11_0224F2DC +MOD11_0224F2DC: ; 0x0224F2DC + push {r4, r5, lr} + sub sp, #0x9c + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + cmp r0, #7 + bls _0224F2F0 + b _0224F7A2 +_0224F2F0: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F2FC: ; jump table + .short _0224F30C - _0224F2FC - 2 ; case 0 + .short _0224F322 - _0224F2FC - 2 ; case 1 + .short _0224F366 - _0224F2FC - 2 ; case 2 + .short _0224F4B0 - _0224F2FC - 2 ; case 3 + .short _0224F4CC - _0224F2FC - 2 ; case 4 + .short _0224F6E2 - _0224F2FC - 2 ; case 5 + .short _0224F6F6 - _0224F2FC - 2 ; case 6 + .short _0224F77C - _0224F2FC - 2 ; case 7 +_0224F30C: + add r0, r4, #0 + mov r1, #0 + add r0, #0x96 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x83 + strb r1, [r0] +_0224F322: + add r1, sp, #0x38 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r4, #0 + add r0, #0x82 + ldrb r0, [r0] + add r1, r4, #0 + add r2, r4, #0 + str r0, [sp, #0x38] + add r1, #0x81 + add r2, #0x8c + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_02230014 + str r0, [sp, #0x40] + mov r0, #5 + add r1, sp, #0x38 + bl MOD08_02228218 + str r0, [r4, #8] + bl MOD08_02228524 + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x9c + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, pc} +_0224F366: + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A80 + cmp r0, #0 + bne _0224F3AE + ldr r0, [r4, #8] + bl MOD08_02228570 + cmp r0, #1 + bne _0224F3AE + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A00 + cmp r0, #1 + bne _0224F3AE + add r0, r4, #0 + add r0, #0x82 + ldrb r0, [r0] + cmp r0, #4 + bne _0224F3B8 + add r0, r4, #0 + add r0, #0x96 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x96 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x96 + ldrb r0, [r0] + cmp r0, #0xc + bhs _0224F3B0 +_0224F3AE: + b _0224F7C0 +_0224F3B0: + add r0, r4, #0 + mov r1, #0 + add r0, #0x96 + strb r1, [r0] +_0224F3B8: + ldr r0, [r4] + bl MOD11_02230068 + add r1, r4, #0 + add r1, #0x86 + add r5, r0, #0 + ldrh r1, [r1] + add r0, sp, #0x24 + bl FUN_02069010 + add r0, r4, #0 + add r0, #0x82 + ldrb r3, [r0] + mov r0, #6 + add r2, r4, #0 + add r1, r3, #0 + mul r1, r0 + ldr r0, _0224F690 ; =0x0222D552 + add r2, #0x14 + ldrsh r0, [r0, r1] + str r0, [sp] + ldr r0, _0224F694 ; =0x0222D554 + ldrsh r0, [r0, r1] + add r1, r5, #0 + lsl r5, r3, #2 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x85 + ldrb r0, [r0] + ldr r3, _0224F698 ; =0x0222D538 + str r0, [sp, #8] + mov r0, #0x90 + ldrsb r0, [r4, r0] + ldrsh r3, [r3, r5] + str r0, [sp, #0xc] + mov r0, #0x91 + ldrsb r0, [r4, r0] + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x93 + ldrb r0, [r0] + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0x81 + ldrb r0, [r0] + str r0, [sp, #0x18] + add r0, sp, #0x24 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [r4] + bl MOD11_02253A88 + ldr r1, [r4, #4] + mov r2, #0 + str r0, [r1, #0x20] + ldr r0, [r4, #4] + mov r1, #0xc + ldr r0, [r0, #0x20] + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #0xd + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #0x2c + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #6 + ldr r0, [r0, #0x20] + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + mov r3, #0 + lsl r1, r0, #1 + ldr r0, _0224F69C ; =0x0225E84A + ldrh r0, [r0, r1] + mov r1, #0x10 + add r2, r1, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007E68 + ldr r0, [r4, #4] + mov r1, #6 + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + bl MOD08_022285A4 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + cmp r0, #2 + ldr r0, _0224F6A0 ; =0x00000706 + bne _0224F498 + mov r1, #0x75 + bl FUN_020054A8 + b _0224F4A0 +_0224F498: + mov r1, #0x74 + mvn r1, r1 + bl FUN_020054A8 +_0224F4A0: + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x9c + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, pc} +_0224F4B0: + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_022299E8 + cmp r0, #1 + beq _0224F4CC + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x83 + strb r1, [r0] +_0224F4CC: + ldr r0, [r4, #4] + mov r1, #0xc + ldr r0, [r0, #0x20] + bl FUN_0200782C + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _0224F5B2 + ldr r0, [r4, #8] + bl MOD08_022285B4 + cmp r0, #0 + bne _0224F5B2 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + cmp r0, #2 + bne _0224F534 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0, #0x20] + bl FUN_02007314 + ldr r0, [r4, #4] + mov r1, #0x2d + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #5 + add r2, r4, #0 + str r1, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + mov r3, #0x75 + bl FUN_02069FB0 + b _0224F55E +_0224F534: + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #5 + add r2, r4, #0 + str r3, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + sub r3, #0x7a + bl FUN_02069FB0 +_0224F55E: + ldr r0, [r4] + bl MOD11_02230E80 + add r1, r4, #0 + add r1, #0x8d + ldrb r1, [r1] + add r2, r4, #0 + add r3, r4, #0 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + add r2, #0x86 + add r3, #0x84 + str r1, [sp, #8] + ldr r1, [r4, #4] + ldrh r2, [r2] + ldrb r3, [r3] + ldr r1, [r1, #0x20] + bl FUN_02069038 + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + mov r2, #0 + add r3, r2, #0 + lsl r1, r0, #1 + ldr r0, _0224F69C ; =0x0225E84A + ldrh r0, [r0, r1] + mov r1, #0x10 + str r0, [sp] + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007E68 + mov r0, #5 + add r4, #0x83 + add sp, #0x9c + strb r0, [r4] + pop {r4, r5, pc} +_0224F5B2: + ldr r0, [r4, #4] + mov r1, #0xc + ldr r0, [r0, #0x20] + bl FUN_0200782C + mov r2, #1 + lsl r2, r2, #8 + cmp r0, r2 + ldr r0, [r4, #4] + blt _0224F6BC + ldr r0, [r0, #0x20] + mov r1, #0xc + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r0, #0x20] + add r2, #0xf3 + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + cmp r0, #2 + bne _0224F628 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0, #0x20] + bl FUN_02007314 + ldr r0, [r4, #4] + mov r1, #0x2d + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #5 + add r2, r4, #0 + str r1, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + mov r3, #0x75 + bl FUN_02069FB0 + b _0224F652 +_0224F628: + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #5 + add r2, r4, #0 + str r3, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + sub r3, #0x7a + bl FUN_02069FB0 +_0224F652: + ldr r0, [r4] + bl MOD11_02230E80 + add r1, r4, #0 + add r1, #0x8d + ldrb r1, [r1] + add r2, r4, #0 + add r3, r4, #0 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + add r2, #0x86 + add r3, #0x84 + str r1, [sp, #8] + ldr r1, [r4, #4] + ldrh r2, [r2] + ldrb r3, [r3] + ldr r1, [r1, #0x20] + bl FUN_02069038 + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + mov r2, #0 + mov r3, #1 + lsl r1, r0, #1 + ldr r0, _0224F69C ; =0x0225E84A + b _0224F6A4 + .align 2, 0 +_0224F690: .word 0x0222D552 +_0224F694: .word 0x0222D554 +_0224F698: .word 0x0222D538 +_0224F69C: .word 0x0225E84A +_0224F6A0: .word 0x00000706 +_0224F6A4: + ldrh r0, [r0, r1] + mov r1, #0x10 + str r0, [sp] + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007E68 + mov r0, #5 + add r4, #0x83 + add sp, #0x9c + strb r0, [r4] + pop {r4, r5, pc} +_0224F6BC: + ldr r0, [r0, #0x20] + mov r1, #0xc + mov r2, #0x20 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0xd + ldr r0, [r0, #0x20] + mov r2, #0x20 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0x90 + ldrsb r1, [r4, r1] + ldr r0, [r0, #0x20] + bl FUN_02007F34 + add sp, #0x9c + pop {r4, r5, pc} +_0224F6E2: + ldr r0, [r4, #8] + bl MOD08_022285B4 + cmp r0, #0 + bne _0224F7C0 + mov r0, #6 + add r4, #0x83 + add sp, #0x9c + strb r0, [r4] + pop {r4, r5, pc} +_0224F6F6: + ldr r0, [r4] + bl MOD11_02230E80 + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + bl FUN_02014D7C + cmp r0, #1 + bne _0224F7C0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007390 + cmp r0, #0 + bne _0224F7C0 + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A2C + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x88 + str r1, [r0] + ldr r0, [r4, #8] + bl MOD08_02228618 + add r0, r4, #0 + add r0, #0x92 + ldrb r0, [r0] + cmp r0, #0 + beq _0224F772 + mov r0, #5 + bl FUN_02211F5C + str r0, [r4, #0x24] + add r0, r4, #0 + add r0, #0x81 + ldrb r1, [r0] + mov r0, #0xb + add r2, sp, #0x44 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #0x24] + add r3, sp, #0x44 + bl MOD11_02254404 + mov r0, #7 + add r4, #0x83 + add sp, #0x9c + strb r0, [r4] + pop {r4, r5, pc} +_0224F772: + mov r0, #0xff + add r4, #0x83 + add sp, #0x9c + strb r0, [r4] + pop {r4, r5, pc} +_0224F77C: + ldr r0, [r4, #0x24] + bl FUN_02212384 + ldr r0, [r4, #0x24] + bl FUN_022123A0 + cmp r0, #0 + bne _0224F7C0 + ldr r0, [r4, #0x24] + bl FUN_022123B0 + ldr r0, [r4, #0x24] + bl FUN_02212024 + mov r0, #0xff + add r4, #0x83 + add sp, #0x9c + strb r0, [r4] + pop {r4, r5, pc} +_0224F7A2: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x81 + add r2, #0x80 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224F7C0: + add sp, #0x9c + pop {r4, r5, pc} + + thumb_func_start MOD11_0224F7C4 +MOD11_0224F7C4: ; 0x0224F7C4 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c4 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r1, r4, #0 + add r1, #0x83 + ldrb r1, [r1] + add r5, r0, #0 + cmp r1, #0xb + bls _0224F7E0 + b _0224FD68 +_0224F7E0: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224F7EC: ; jump table + .short _0224F804 - _0224F7EC - 2 ; case 0 + .short _0224F90C - _0224F7EC - 2 ; case 1 + .short _0224F958 - _0224F7EC - 2 ; case 2 + .short _0224F9E2 - _0224F7EC - 2 ; case 3 + .short _0224F9FA - _0224F7EC - 2 ; case 4 + .short _0224FC14 - _0224F7EC - 2 ; case 5 + .short _0224FC28 - _0224F7EC - 2 ; case 6 + .short _0224FC9C - _0224F7EC - 2 ; case 7 + .short _0224FCC0 - _0224F7EC - 2 ; case 8 + .short _0224FC9C - _0224F7EC - 2 ; case 9 + .short _0224FD0C - _0224F7EC - 2 ; case 10 + .short _0224FC9C - _0224F7EC - 2 ; case 11 +_0224F804: + add r0, r4, #0 + add r0, #0x82 + ldrb r1, [r0] + ldr r0, _0224FB58 ; =0x0225E818 + ldrb r0, [r0, r1] + str r0, [sp, #0x44] + mov r0, #5 + str r0, [sp, #0x48] + add r0, r4, #0 + add r0, #0x81 + ldrb r0, [r0] + str r0, [sp, #0x50] + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + str r0, [sp, #0x54] + ldr r0, [r4] + bl MOD11_02230078 + str r0, [sp, #0x60] + ldr r0, [r4] + bl MOD11_022300CC + str r0, [sp, #0x64] + mov r2, #1 + mov r1, #0 + add r0, r4, #0 + str r2, [sp, #0x58] + str r1, [sp, #0x5c] + add r0, #0x94 + ldrh r0, [r0] + cmp r0, #1 + bne _0224F84A + str r2, [sp, #0x4c] + b _0224F84C +_0224F84A: + str r1, [sp, #0x4c] +_0224F84C: + add r0, sp, #0x44 + bl MOD08_02229918 + str r0, [r4, #0xc] + ldr r0, [r4] + bl MOD11_02230068 + add r1, r4, #0 + add r1, #0x86 + add r5, r0, #0 + ldrh r1, [r1] + add r0, sp, #0x30 + bl FUN_02069010 + add r0, r4, #0 + add r0, #0x82 + ldrb r3, [r0] + mov r0, #6 + add r2, r4, #0 + add r1, r3, #0 + mul r1, r0 + ldr r0, _0224FB5C ; =0x0222D552 + add r2, #0x14 + ldrsh r0, [r0, r1] + str r0, [sp] + ldr r0, _0224FB60 ; =0x0222D554 + ldrsh r0, [r0, r1] + add r1, r5, #0 + lsl r5, r3, #2 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x85 + ldrb r0, [r0] + ldr r3, _0224FB64 ; =0x0222D538 + str r0, [sp, #8] + mov r0, #0x90 + ldrsb r0, [r4, r0] + ldrsh r3, [r3, r5] + str r0, [sp, #0xc] + mov r0, #0x91 + ldrsb r0, [r4, r0] + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x93 + ldrb r0, [r0] + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0x81 + ldrb r0, [r0] + str r0, [sp, #0x18] + add r0, sp, #0x30 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [r4] + bl MOD11_02253A88 + ldr r1, [r4, #4] + mov r2, #0 + str r0, [r1, #0x20] + ldr r0, [r4, #4] + mov r1, #0xc + ldr r0, [r0, #0x20] + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #0xd + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #0x2c + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #6 + ldr r0, [r0, #0x20] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #5 + bl FUN_0221590C + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x1c4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224F90C: + add r1, sp, #0x24 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r4, #0 + add r0, #0x82 + ldrb r0, [r0] + add r1, r4, #0 + add r2, r4, #0 + str r0, [sp, #0x24] + add r1, #0x81 + add r2, #0x8c + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_02230014 + str r0, [sp, #0x2c] + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + add r1, sp, #0x24 + str r0, [sp, #0x28] + mov r0, #5 + bl MOD08_02228218 + str r0, [r4, #8] + bl MOD08_02228524 + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x1c4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224F958: + ldr r0, [r4, #0xc] + bl MOD08_02229A80 + cmp r0, #0 + beq _0224F96C + add r0, r4, #0 + add r0, #0x94 + ldrh r0, [r0] + cmp r0, #0 + beq _0224F980 +_0224F96C: + ldr r0, [r4, #8] + bl MOD08_02228570 + cmp r0, #1 + bne _0224F980 + ldr r0, [r4, #0xc] + bl MOD08_02229A00 + cmp r0, #1 + beq _0224F982 +_0224F980: + b _0224FD86 +_0224F982: + ldr r0, [r4, #0x10] + bl FUN_02215918 + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + mov r3, #0 + lsl r1, r0, #1 + ldr r0, _0224FB68 ; =0x0225E84A + ldrh r0, [r0, r1] + mov r1, #0x10 + add r2, r1, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007E68 + ldr r0, [r4, #4] + mov r1, #6 + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #8] + bl MOD08_022285A4 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + cmp r0, #2 + ldr r0, _0224FB6C ; =0x00000706 + bne _0224F9CA + mov r1, #0x75 + bl FUN_020054A8 + b _0224F9D2 +_0224F9CA: + mov r1, #0x74 + mvn r1, r1 + bl FUN_020054A8 +_0224F9D2: + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x1c4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224F9E2: + ldr r0, [r4, #0xc] + bl MOD08_022299E8 + cmp r0, #1 + beq _0224F9FA + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x83 + strb r1, [r0] +_0224F9FA: + ldr r0, [r4, #4] + mov r1, #0xc + ldr r0, [r0, #0x20] + bl FUN_0200782C + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _0224FAE0 + ldr r0, [r4, #8] + bl MOD08_022285B4 + cmp r0, #0 + bne _0224FAE0 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + cmp r0, #2 + bne _0224FA62 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0, #0x20] + bl FUN_02007314 + ldr r0, [r4, #4] + mov r1, #0x2d + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #5 + add r2, r4, #0 + str r1, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + mov r3, #0x75 + bl FUN_02069FB0 + b _0224FA8C +_0224FA62: + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #5 + add r2, r4, #0 + str r3, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + sub r3, #0x7a + bl FUN_02069FB0 +_0224FA8C: + ldr r0, [r4] + bl MOD11_02230E80 + add r1, r4, #0 + add r1, #0x8d + ldrb r1, [r1] + add r2, r4, #0 + add r3, r4, #0 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + add r2, #0x86 + add r3, #0x84 + str r1, [sp, #8] + ldr r1, [r4, #4] + ldrh r2, [r2] + ldrb r3, [r3] + ldr r1, [r1, #0x20] + bl FUN_02069038 + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + mov r2, #0 + add r3, r2, #0 + lsl r1, r0, #1 + ldr r0, _0224FB68 ; =0x0225E84A + ldrh r0, [r0, r1] + mov r1, #0x10 + str r0, [sp] + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007E68 + mov r0, #5 + add r4, #0x83 + add sp, #0x1c4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FAE0: + ldr r0, [r4, #4] + mov r1, #0xc + ldr r0, [r0, #0x20] + bl FUN_0200782C + mov r2, #1 + lsl r2, r2, #8 + cmp r0, r2 + ldr r0, [r4, #4] + blt _0224FBEE + ldr r0, [r0, #0x20] + mov r1, #0xc + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r0, #0x20] + add r2, #0xf3 + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x84 + ldrb r0, [r0] + cmp r0, #2 + bne _0224FB70 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0, #0x20] + bl FUN_02007314 + ldr r0, [r4, #4] + mov r1, #0x2d + ldr r0, [r0, #0x20] + mov r2, #0 + bl FUN_02007558 + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r1, #5 + add r2, r4, #0 + str r1, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + mov r3, #0x75 + bl FUN_02069FB0 + b _0224FB9A + nop +_0224FB58: .word 0x0225E818 +_0224FB5C: .word 0x0222D552 +_0224FB60: .word 0x0222D554 +_0224FB64: .word 0x0222D538 +_0224FB68: .word 0x0225E84A +_0224FB6C: .word 0x00000706 +_0224FB70: + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #5 + add r2, r4, #0 + str r3, [sp, #8] + add r1, r4, #0 + add r2, #0x86 + add r1, #0x88 + ldrh r2, [r2] + ldr r1, [r1] + sub r3, #0x7a + bl FUN_02069FB0 +_0224FB9A: + ldr r0, [r4] + bl MOD11_02230E80 + add r1, r4, #0 + add r1, #0x8d + ldrb r1, [r1] + add r2, r4, #0 + add r3, r4, #0 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + add r2, #0x86 + add r3, #0x84 + str r1, [sp, #8] + ldr r1, [r4, #4] + ldrh r2, [r2] + ldrb r3, [r3] + ldr r1, [r1, #0x20] + bl FUN_02069038 + add r0, r4, #0 + add r0, #0x8e + ldrh r0, [r0] + mov r2, #0 + mov r3, #1 + lsl r1, r0, #1 + ldr r0, _0224FD8C ; =0x0225E84A + ldrh r0, [r0, r1] + mov r1, #0x10 + str r0, [sp] + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007E68 + mov r0, #5 + add r4, #0x83 + add sp, #0x1c4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FBEE: + ldr r0, [r0, #0x20] + mov r1, #0xc + mov r2, #0x20 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0xd + ldr r0, [r0, #0x20] + mov r2, #0x20 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0x90 + ldrsb r1, [r4, r1] + ldr r0, [r0, #0x20] + bl FUN_02007F34 + add sp, #0x1c4 + pop {r3, r4, r5, r6, pc} +_0224FC14: + ldr r0, [r4, #8] + bl MOD08_022285B4 + cmp r0, #0 + bne _0224FC48 + mov r0, #6 + add r4, #0x83 + add sp, #0x1c4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FC28: + ldr r0, [r4] + bl MOD11_02230E80 + add r1, r4, #0 + add r1, #0x81 + ldrb r1, [r1] + bl FUN_02014D7C + cmp r0, #1 + bne _0224FC48 + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl FUN_02007390 + cmp r0, #0 + beq _0224FC4A +_0224FC48: + b _0224FD86 +_0224FC4A: + ldr r0, [r4, #0xc] + bl MOD08_02229A2C + ldr r0, [r4, #8] + bl MOD08_02228618 + add r0, r4, #0 + add r0, #0x92 + ldrb r0, [r0] + cmp r0, #0 + beq _0224FC92 + add r0, r4, #0 + add r0, #0x81 + ldrb r1, [r0] + mov r0, #0xb + add r2, sp, #0x16c + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x16c + bl MOD11_02254404 + mov r0, #7 + add r4, #0x83 + add sp, #0x1c4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FC92: + mov r0, #8 + add r4, #0x83 + add sp, #0x1c4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FC9C: + bl FUN_02212384 + add r0, r5, #0 + bl FUN_022123A0 + cmp r0, #0 + bne _0224FD86 + add r0, r5, #0 + bl FUN_022123B0 + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x1c4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FCC0: + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _0224FD02 + add r0, r4, #0 + add r0, #0x81 + ldrb r1, [r0] + mov r0, #0xf + add r2, sp, #0x114 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x114 + bl MOD11_02254404 + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x1c4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FD02: + mov r0, #0xff + add r4, #0x83 + add sp, #0x1c4 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FD0C: + add r3, r4, #0 + add r3, #0x81 + ldrb r3, [r3] + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + add r2, sp, #0xc4 + bl MOD11_0225452C + add r0, sp, #0xc4 + mov r1, #5 + bl MOD08_0222A568 + add r0, r4, #0 + add r0, #0x81 + ldrb r1, [r0] + mov r0, #0x10 + add r2, sp, #0x6c + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x6c + bl MOD11_02254404 + mov r0, #0x1a + ldr r1, [r4, #4] + mov r2, #1 + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + add r0, #0x83 + ldrb r0, [r0] + add r4, #0x83 + add sp, #0x1c4 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224FD68: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x81 + add r2, #0x80 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0224FD86: + add sp, #0x1c4 + pop {r3, r4, r5, r6, pc} + nop +_0224FD8C: .word 0x0225E84A + + thumb_func_start MOD11_0224FD90 +MOD11_0224FD90: ; 0x0224FD90 + push {r4, r5, r6, lr} + sub sp, #0x138 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r1, r4, #0 + add r1, #0x6b + ldrb r1, [r1] + add r5, r0, #0 + cmp r1, #8 + bhi _0224FE7A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224FDB6: ; jump table + .short _0224FDC8 - _0224FDB6 - 2 ; case 0 + .short _0224FE6C - _0224FDB6 - 2 ; case 1 + .short _0224FE10 - _0224FDB6 - 2 ; case 2 + .short _0224FE6C - _0224FDB6 - 2 ; case 3 + .short _0224FE92 - _0224FDB6 - 2 ; case 4 + .short _0224FF36 - _0224FDB6 - 2 ; case 5 + .short _0224FF50 - _0224FDB6 - 2 ; case 6 + .short _0224FFA6 - _0224FDB6 - 2 ; case 7 + .short _0224FFC0 - _0224FDB6 - 2 ; case 8 +_0224FDC8: + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _0224FE06 + add r0, r4, #0 + add r0, #0x69 + ldrb r1, [r0] + mov r0, #0xf + add r2, sp, #0xe0 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0xe0 + bl MOD11_02254404 + add r0, r4, #0 + add r0, #0x6b + ldrb r0, [r0] + add r4, #0x6b + add sp, #0x138 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FE06: + mov r0, #4 + add r4, #0x6b + add sp, #0x138 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FE10: + add r3, r4, #0 + add r3, #0x69 + ldrb r3, [r3] + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x10 + add r2, sp, #0x90 + bl MOD11_0225452C + add r0, sp, #0x90 + mov r1, #5 + bl MOD08_0222A494 + add r0, r4, #0 + add r0, #0x69 + ldrb r1, [r0] + mov r0, #0x10 + add r2, sp, #0x38 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x38 + bl MOD11_02254404 + mov r0, #0x1a + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + add r0, #0x6b + ldrb r0, [r0] + add r4, #0x6b + add sp, #0x138 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FE6C: + bl FUN_02212384 + add r0, r5, #0 + bl FUN_022123A0 + cmp r0, #0 + beq _0224FE7C +_0224FE7A: + b _0224FFDE +_0224FE7C: + add r0, r5, #0 + bl FUN_022123B0 + add r0, r4, #0 + add r0, #0x6b + ldrb r0, [r0] + add r4, #0x6b + add sp, #0x138 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FE92: + add r0, r4, #0 + add r0, #0x6a + ldrb r1, [r0] + mov r0, #1 + tst r0, r1 + beq _0224FEDA + ldr r0, _0224FFE4 ; =0x0225E818 + ldrb r0, [r0, r1] + str r0, [sp, #0x10] + mov r0, #5 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + add r0, r4, #0 + add r0, #0x69 + ldrb r0, [r0] + str r0, [sp, #0x1c] + add r0, r4, #0 + add r0, #0x6e + ldrh r0, [r0] + str r0, [sp, #0x20] + ldr r0, [r4] + bl MOD11_02230078 + str r0, [sp, #0x2c] + ldr r0, [r4] + bl MOD11_022300CC + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x28] + add r0, sp, #0x10 + bl MOD08_02229918 + str r0, [r4, #0xc] +_0224FEDA: + add r0, r4, #0 + mov r1, #5 + add r0, #0x6b + strb r1, [r0] + add r0, r4, #0 + add r0, #0x6e + ldrh r0, [r0] + mov r2, #0x10 + lsl r1, r0, #1 + ldr r0, _0224FFE8 ; =0x0225E84A + ldrh r0, [r0, r1] + mov r1, #0 + add r3, r1, #0 + str r0, [sp] + ldr r0, [r4, #8] + bl FUN_02007E68 + add r4, #0x6a + ldrb r0, [r4] + cmp r0, #5 + bhi _0224FFDE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224FF10: ; jump table + .short _0224FF1C - _0224FF10 - 2 ; case 0 + .short _0224FF2A - _0224FF10 - 2 ; case 1 + .short _0224FF1C - _0224FF10 - 2 ; case 2 + .short _0224FF2A - _0224FF10 - 2 ; case 3 + .short _0224FF1C - _0224FF10 - 2 ; case 4 + .short _0224FF2A - _0224FF10 - 2 ; case 5 +_0224FF1C: + mov r1, #0x74 + ldr r0, _0224FFEC ; =0x00000706 + mvn r1, r1 + bl FUN_020054A8 + add sp, #0x138 + pop {r4, r5, r6, pc} +_0224FF2A: + ldr r0, _0224FFEC ; =0x00000706 + mov r1, #0x75 + bl FUN_020054A8 + add sp, #0x138 + pop {r4, r5, r6, pc} +_0224FF36: + ldr r0, [r4, #8] + bl FUN_02007F20 + cmp r0, #0 + bne _0224FFDE + add r0, r4, #0 + add r0, #0x6b + ldrb r0, [r0] + add r4, #0x6b + add sp, #0x138 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FF50: + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #8] + sub r2, #0x2c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #8] + sub r2, #0x2d + bl FUN_020079E0 + add r1, r4, #0 + add r1, #0x6c + ldrb r1, [r1] + ldr r0, [r4, #8] + bl FUN_02007F34 + ldr r0, [r4, #8] + mov r1, #0xc + bl FUN_0200782C + cmp r0, #0 + bgt _0224FFDE + ldr r0, [r4, #8] + bl FUN_02007534 + add r0, r4, #0 + add r0, #0x6a + ldrb r1, [r0] + mov r0, #1 + tst r0, r1 + beq _0224FF9C + mov r0, #7 + add r4, #0x6b + add sp, #0x138 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FF9C: + mov r0, #8 + add r4, #0x6b + add sp, #0x138 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FFA6: + ldr r0, [r4, #0xc] + bl MOD08_022299E8 + cmp r0, #0 + bne _0224FFDE + ldr r0, [r4, #0xc] + bl MOD08_02229A2C + mov r0, #8 + add r4, #0x6b + add sp, #0x138 + strb r0, [r4] + pop {r4, r5, r6, pc} +_0224FFC0: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x69 + add r2, #0x68 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0224FFDE: + add sp, #0x138 + pop {r4, r5, r6, pc} + nop +_0224FFE4: .word 0x0225E818 +_0224FFE8: .word 0x0225E84A +_0224FFEC: .word 0x00000706 + + thumb_func_start MOD11_0224FFF0 +MOD11_0224FFF0: ; 0x0224FFF0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _02250002 + cmp r0, #1 + beq _02250048 + pop {r3, r4, r5, pc} +_02250002: + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, #4] + sub r2, #0x2c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, #4] + sub r2, #0x2d + bl FUN_020079E0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0225002E + sub r0, r0, #1 + strb r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r4, #4] + sub r2, r1, #2 + bl FUN_020079E0 +_0225002E: + ldr r0, [r4, #4] + mov r1, #0xc + bl FUN_0200782C + cmp r0, #0 + bgt _0225005E + ldr r0, [r4, #4] + bl FUN_02007534 + ldrb r0, [r4, #0xb] + add r0, r0, #1 + strb r0, [r4, #0xb] + pop {r3, r4, r5, pc} +_02250048: + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0225005E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02250060 +MOD11_02250060: ; 0x02250060 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF74 + add r5, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0x21 + bge _0225009C + ldrb r0, [r4, #0x12] + cmp r0, #2 + blo _0225009C + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _02250086 + cmp r0, #2 + bne _0225009C +_02250086: + ldr r0, [r4] + bl MOD11_0222FF68 + mov r1, #3 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + ldr r0, [r4, #0x20] + add r0, r0, #1 + str r0, [r4, #0x20] +_0225009C: + ldrb r0, [r4, #0x12] + cmp r0, #4 + bls _022500A4 + b _02250332 +_022500A4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022500B0: ; jump table + .short _022500BA - _022500B0 - 2 ; case 0 + .short _022500C4 - _022500B0 - 2 ; case 1 + .short _022500D2 - _022500B0 - 2 ; case 2 + .short _022502CA - _022500B0 - 2 ; case 3 + .short _022502E4 - _022500B0 - 2 ; case 4 +_022500BA: + mov r0, #0x1c + str r0, [r4, #0x1c] + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_022500C4: + ldr r0, [r4, #0x1c] + sub r0, r0, #1 + str r0, [r4, #0x1c] + bne _022501A6 + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_022500D2: + ldrb r0, [r4, #0x13] + add r1, sp, #0 + cmp r0, #2 + ldr r0, [r4, #8] + bne _022501D2 + ldr r0, [r0] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + ldr r0, [r4, #0x18] + cmp r0, #1 + beq _022500F0 + cmp r0, #3 + bne _02250112 +_022500F0: + add r1, sp, #0 + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, #0xc0 + ldr r0, [r4, #8] + bge _02250108 + ldr r0, [r0] + mov r1, #8 + mov r2, #0 + bl FUN_0200C82C + b _02250112 +_02250108: + ldr r0, [r0] + mov r1, #0xc0 + mov r2, #0x58 + bl FUN_0200C714 +_02250112: + ldr r0, [r4, #8] + add r1, sp, #0 + ldr r0, [r0] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + ldr r0, [r4, #0x18] + cmp r0, #1 + beq _02250136 + cmp r0, #3 + bne _02250146 + cmp r5, #3 + beq _02250136 + cmp r5, #0x83 + beq _02250136 + cmp r5, #7 + bne _02250146 +_02250136: + add r3, sp, #0 + mov r2, #2 + ldrsh r2, [r3, r2] + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02007558 + b _02250196 +_02250146: + cmp r0, #3 + bne _02250170 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r0, r1 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x18 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #4] + neg r2, r2 + bl FUN_020079E0 + b _02250196 +_02250170: + cmp r0, #5 + bne _02250196 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r1, r0 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x10 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #4] + bl FUN_020079E0 +_02250196: + mov r0, #0x14 + ldrsh r5, [r4, r0] + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + cmp r0, r5 + bge _022501A8 +_022501A6: + b _02250332 +_022501A8: + ldr r0, [r4, #4] + mov r1, #0 + add r2, r5, #0 + bl FUN_02007558 + ldr r0, [r4, #0x18] + cmp r0, #1 + beq _022501BC + cmp r0, #3 + bne _022501C8 +_022501BC: + ldr r0, [r4, #8] + mov r1, #0xc0 + ldr r0, [r0] + mov r2, #0x58 + bl FUN_0200C714 +_022501C8: + ldrb r0, [r4, #0x12] + add sp, #4 + add r0, r0, #1 + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_022501D2: + ldr r0, [r0] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _022501E6 + cmp r0, #2 + bne _02250208 +_022501E6: + add r0, sp, #0 + mov r1, #2 + ldrsh r0, [r0, r1] + cmp r0, #0x40 + ldr r0, [r4, #8] + ble _022501FE + ldr r0, [r0] + sub r1, #0xa + mov r2, #0 + bl FUN_0200C82C + b _02250208 +_022501FE: + ldr r0, [r0] + mov r1, #0x40 + mov r2, #0x88 + bl FUN_0200C714 +_02250208: + ldr r0, [r4, #8] + add r1, sp, #0 + ldr r0, [r0] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _02250230 + cmp r0, #2 + bne _02250240 + cmp r5, #3 + beq _02250230 + cmp r5, #0x83 + beq _02250230 + cmp r5, #0x13 + beq _02250230 + cmp r5, #7 + bne _02250240 +_02250230: + add r3, sp, #0 + mov r2, #2 + ldrsh r2, [r3, r2] + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02007558 + b _02250290 +_02250240: + cmp r0, #2 + bne _02250268 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r1, r0 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x18 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #4] + bl FUN_020079E0 + b _02250290 +_02250268: + cmp r0, #4 + bne _02250290 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + add r3, sp, #0 + mov r2, #2 + ldrsh r1, [r3, r2] + sub r0, r0, r1 + strh r0, [r3, #2] + ldrsh r0, [r3, r2] + mov r1, #0 + sub r0, #0x10 + strh r0, [r3, #2] + ldrsh r2, [r3, r2] + ldr r0, [r4, #4] + neg r2, r2 + bl FUN_020079E0 +_02250290: + mov r0, #0x14 + ldrsh r5, [r4, r0] + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + cmp r0, r5 + bgt _02250332 + ldr r0, [r4, #4] + mov r1, #0 + add r2, r5, #0 + bl FUN_02007558 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _022502B4 + cmp r0, #2 + bne _022502C0 +_022502B4: + ldr r0, [r4, #8] + mov r1, #0x40 + ldr r0, [r0] + mov r2, #0x88 + bl FUN_0200C714 +_022502C0: + ldrb r0, [r4, #0x12] + add sp, #4 + add r0, r0, #1 + strb r0, [r4, #0x12] + pop {r3, r4, r5, r6, pc} +_022502CA: + ldrb r1, [r4, #0x11] + ldrb r2, [r4, #0x10] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_022502E4: + ldrb r0, [r4, #0x13] + cmp r0, #2 + ldr r0, [r4, #4] + bne _0225030E + mov r2, #0x14 + ldrsh r2, [r4, r2] + mov r1, #0 + bl FUN_02007558 + ldr r0, [r4, #0x18] + cmp r0, #1 + beq _02250300 + cmp r0, #3 + bne _0225032E +_02250300: + ldr r0, [r4, #8] + mov r1, #0xc0 + ldr r0, [r0] + mov r2, #0x58 + bl FUN_0200C714 + b _0225032E +_0225030E: + mov r2, #0x14 + ldrsh r2, [r4, r2] + mov r1, #0 + bl FUN_02007558 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _02250322 + cmp r0, #2 + bne _0225032E +_02250322: + ldr r0, [r4, #8] + mov r1, #0x40 + ldr r0, [r0] + mov r2, #0x88 + bl FUN_0200C714 +_0225032E: + mov r0, #3 + strb r0, [r4, #0x12] +_02250332: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02250338 +MOD11_02250338: ; 0x02250338 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xd0 + ldr r3, _022505EC ; =0x0225E8D0 + add r4, r1, #0 + add r5, r0, #0 + add r2, sp, #0x30 + mov r1, #0x50 +_02250346: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _02250346 + ldr r0, [r4] + bl MOD11_0222FF74 + add r6, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #6 + bls _02250362 + b _0225088A +_02250362: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225036E: ; jump table + .short _0225037C - _0225036E - 2 ; case 0 + .short _02250494 - _0225036E - 2 ; case 1 + .short _0225059E - _0225036E - 2 ; case 2 + .short _0225073C - _0225036E - 2 ; case 3 + .short _022507F2 - _0225036E - 2 ; case 4 + .short _0225084C - _0225036E - 2 ; case 5 + .short _02250874 - _0225036E - 2 ; case 6 +_0225037C: + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _0225038A + mov r0, #1 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_0225038A: + cmp r0, #4 + bhi _022503A4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225039A: ; jump table + .short _022503A4 - _0225039A - 2 ; case 0 + .short _022503A4 - _0225039A - 2 ; case 1 + .short _022503B2 - _0225039A - 2 ; case 2 + .short _022503C0 - _0225039A - 2 ; case 3 + .short _022503CE - _0225039A - 2 ; case 4 +_022503A4: + mov r0, #0xf + str r0, [sp, #8] + mov r0, #3 + str r0, [r4, #0x18] + mov r0, #5 + str r0, [sp, #0x18] + b _022503DC +_022503B2: + mov r0, #0xc + str r0, [sp, #8] + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, _022505F0 ; =0x00000111 + str r0, [sp, #0x18] + b _022503DC +_022503C0: + mov r0, #0xd + str r0, [sp, #8] + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, _022505F4 ; =0x00000112 + str r0, [sp, #0x18] + b _022503DC +_022503CE: + mov r0, #0xf + str r0, [sp, #8] + mov r0, #3 + str r0, [r4, #0x18] + mov r0, #0x11 + lsl r0, r0, #4 + str r0, [sp, #0x18] +_022503DC: + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + ldrb r0, [r4, #9] + str r0, [sp, #0x14] + ldr r0, [r4] + bl MOD11_02230078 + str r0, [sp, #0x24] + ldr r0, [r4] + bl MOD11_022300CC + str r0, [sp, #0x28] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [r4] + str r0, [sp, #0x2c] + add r0, sp, #8 + bl MOD08_02229918 + ldr r1, [r4, #4] + add r1, #0x88 + str r0, [r1] + ldr r0, [r4, #4] + mov r1, #0x64 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_0222A00C + ldr r0, [r4, #4] + mov r1, #2 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_0222A018 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_0222A008 + mov r1, #0 + ldr r0, [r4] + ldr r2, [r4, #0xc] + add r3, r1, #0 + bl MOD11_02254308 + ldr r1, [r4, #4] + str r0, [r1, #0x18] + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + add r1, sp, #4 + strh r0, [r1, #2] + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + add r3, sp, #4 + strh r0, [r3] + ldr r0, [r4, #4] + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r0, #0x18] + bl FUN_0200C714 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0200C61C + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0200C5C0 + ldr r0, [r4, #4] + mov r1, #6 + ldr r0, [r0, #0x1c] + mov r2, #1 + bl FUN_02007558 + mov r0, #3 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_02250494: + ldrb r0, [r4, #0xb] + cmp r0, #2 + ldr r0, [r4, #4] + bne _0225054A + ldr r0, [r0, #0x1c] + mov r1, #0 + mov r2, #5 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + mov r1, #0x45 + lsl r1, r1, #2 + cmp r0, r1 + blt _02250520 + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A80 + cmp r0, #0 + beq _02250520 + ldr r0, [r4, #4] + mov r1, #1 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229FE4 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A5C + mov r0, #2 + tst r0, r6 + beq _02250532 + mov r0, #8 + tst r0, r6 + bne _02250532 + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_022302BC + add r1, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF7C + add r4, r0, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #1 + bl MOD08_02229FE4 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0 + bl MOD08_02229A5C + add r4, #0x88 + ldr r0, [r4] + mov r1, #0xc + bl MOD08_0222A024 + add sp, #0xd0 + pop {r3, r4, r5, r6, r7, pc} +_02250520: + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + mov r1, #0x4a + lsl r1, r1, #2 + cmp r0, r1 + bge _02250534 +_02250532: + b _0225088A +_02250534: + ldr r0, [r4, #4] + ldr r0, [r0, #0x1c] + bl FUN_02007534 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x1c] + mov r0, #6 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_0225054A: + ldr r0, [r0, #0x1c] + mov r1, #0 + bl FUN_0200782C + add r1, sp, #4 + strh r0, [r1, #2] + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + add r3, sp, #4 + strh r0, [r3] + ldr r0, [r4, #4] + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r0, #0x18] + bl FUN_0200C714 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0200C61C + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0200C5C0 + mov r0, #2 + strb r0, [r4, #0xa] + ldr r0, [r4, #4] + ldr r0, [r0, #0x1c] + bl FUN_02007534 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x1c] + add sp, #0xd0 + pop {r3, r4, r5, r6, r7, pc} +_0225059E: + ldr r0, [r4, #4] + ldr r0, [r0, #0x18] + bl FUN_0200C5A8 + ldr r0, [r4, #4] + mov r1, #4 + ldr r0, [r0, #0x18] + mvn r1, r1 + mov r2, #0 + bl FUN_0200C82C + ldr r0, [r4, #4] + add r1, sp, #4 + ldr r0, [r0, #0x18] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + ldr r1, [r4, #4] + add r0, r1, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0 + bne _022505D0 + b _022506E4 +_022505D0: + ldr r0, [r1, #0x18] + bl FUN_0200C630 + ldr r1, [r4, #0xc] + str r0, [sp] + lsl r5, r0, #2 + mov r0, #0x14 + add r2, r1, #0 + mul r2, r0 + add r0, sp, #0x30 + add r0, r0, r2 + ldrsh r1, [r5, r0] + ldr r0, _022505F8 ; =0x00007FFF + b _022505FC + .align 2, 0 +_022505EC: .word 0x0225E8D0 +_022505F0: .word 0x00000111 +_022505F4: .word 0x00000112 +_022505F8: .word 0x00007FFF +_022505FC: + cmp r1, r0 + beq _022506E4 + ldr r0, [r4, #4] + mov r1, #1 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229FE4 + ldr r1, [r4, #0xc] + mov r0, #0x14 + add r3, r1, #0 + mul r3, r0 + add r2, sp, #0x30 + add r2, r2, r3 + add r7, sp, #4 + mov r1, #2 + ldrsh r1, [r7, r1] + ldrsh r2, [r5, r2] + ldr r0, [r4, #4] + add r1, r1, r2 + mov r2, #0 + ldrsh r7, [r7, r2] + add r2, sp, #0x30 + add r2, #2 + add r2, r2, r3 + ldrsh r2, [r5, r2] + add r0, #0x88 + lsl r1, r1, #0x10 + add r2, r7, r2 + lsl r2, r2, #0x10 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD08_02229FF0 + ldr r0, [sp] + cmp r0, #3 + bne _022506E4 + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A80 + cmp r0, #0 + beq _022506E4 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A5C + ldr r0, [r4, #4] + mov r1, #1 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_0222A008 + mov r0, #2 + tst r0, r6 + beq _022506E4 + mov r0, #8 + tst r0, r6 + bne _022506E4 + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_022302BC + add r1, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF7C + ldr r1, [r4, #0xc] + add r6, r0, #0 + add r3, r1, #0 + mov r0, #0x14 + mul r3, r0 + add r2, sp, #0x30 + add r2, r2, r3 + add r0, r6, #0 + add r0, #0x88 + add r7, sp, #4 + mov r1, #2 + ldrsh r1, [r7, r1] + ldrsh r2, [r5, r2] + ldr r0, [r0] + add r1, r1, r2 + mov r2, #0 + ldrsh r7, [r7, r2] + add r2, sp, #0x30 + add r2, #2 + add r2, r2, r3 + ldrsh r2, [r5, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r7, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl MOD08_02229FF0 + add r0, r6, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #1 + bl MOD08_02229FE4 + add r0, r6, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0 + bl MOD08_02229A5C + add r6, #0x88 + ldr r0, [r6] + mov r1, #1 + bl MOD08_0222A008 +_022506E4: + add r1, sp, #4 + mov r0, #2 + ldrsh r1, [r1, r0] + sub r0, #0x2a + cmp r1, r0 + ble _022506F2 + b _0225088A +_022506F2: + ldr r0, [r4] + bl MOD11_02230080 + add r6, r0, #0 + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02230260 + asr r5, r0, #1 + ldr r0, [r4, #4] + ldr r0, [r0, #0x18] + bl FUN_0200C3DC + ldr r1, _02250890 ; =0x00004E2F + add r0, r6, #0 + add r1, r5, r1 + bl FUN_0200C358 + ldr r1, _02250894 ; =0x00004E2A + add r0, r6, #0 + add r1, r5, r1 + bl FUN_0200C368 + ldr r1, _02250898 ; =0x00004E27 + add r0, r6, #0 + add r1, r5, r1 + bl FUN_0200C378 + ldr r1, _02250898 ; =0x00004E27 + add r0, r6, #0 + add r1, r5, r1 + bl FUN_0200C388 + mov r0, #6 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_0225073C: + ldr r0, [r4, #4] + ldr r0, [r0, #0x18] + bl FUN_0200C5A8 + ldr r0, [r4, #4] + add r1, sp, #4 + ldr r0, [r0, #0x18] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x18] + bl FUN_0200C630 + add r5, r0, #0 + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0 + beq _022507E2 + ldr r2, [r4, #0xc] + mov r1, #0x14 + add r3, r2, #0 + mul r3, r1 + add r1, sp, #0x30 + lsl r6, r5, #2 + add r1, r1, r3 + ldrsh r1, [r6, r1] + ldr r2, _0225089C ; =0x00007FFF + cmp r1, r2 + beq _022507E2 + add r7, sp, #4 + mov r2, #2 + ldrsh r2, [r7, r2] + add r1, r2, r1 + mov r2, #0 + ldrsh r7, [r7, r2] + add r2, sp, #0x30 + add r2, #2 + add r2, r2, r3 + ldrsh r2, [r6, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r7, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl MOD08_02229FF0 + cmp r5, #3 + bne _022507E2 + ldr r0, [r4, #4] + ldr r6, [r4, #0x18] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A80 + cmp r6, r0 + beq _022507E2 + ldr r0, [r4, #4] + add r1, r6, #0 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A5C + ldr r0, [r4, #4] + mov r1, #1 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_0222A018 + ldr r0, [r4, #4] + mov r1, #1 + add r0, #0x88 + ldr r0, [r0] + bl MOD08_0222A008 + ldr r0, [r4, #0x18] + cmp r0, #3 + beq _022507E2 + ldr r0, _022508A0 ; =0x0000070A + bl FUN_020054C8 +_022507E2: + cmp r5, #4 + bne _0225088A + mov r0, #8 + str r0, [r4, #0x14] + mov r0, #4 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_022507F2: + ldr r0, [r4, #0x14] + sub r0, r0, #1 + str r0, [r4, #0x14] + bne _0225088A + ldr r0, [r4] + bl MOD11_02230080 + add r5, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x18] + bl FUN_0200C3DC + ldr r1, _02250890 ; =0x00004E2F + add r0, r5, #0 + bl FUN_0200C358 + ldr r1, _02250894 ; =0x00004E2A + add r0, r5, #0 + bl FUN_0200C368 + ldr r1, _02250898 ; =0x00004E27 + add r0, r5, #0 + bl FUN_0200C378 + ldr r1, _02250898 ; =0x00004E27 + add r0, r5, #0 + bl FUN_0200C388 + ldr r0, [r4, #4] + mov r1, #6 + ldr r0, [r0, #0x1c] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4, #0x18] + cmp r0, #3 + bne _02250844 + mov r0, #6 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_02250844: + mov r0, #5 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_0225084C: + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_022299E8 + cmp r0, #1 + beq _0225088A + ldr r0, [r4, #4] + add r0, #0x88 + ldr r0, [r0] + bl MOD08_02229A2C + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x88 + str r1, [r0] + mov r0, #6 + add sp, #0xd0 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, r7, pc} +_02250874: + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0225088A: + add sp, #0xd0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02250890: .word 0x00004E2F +_02250894: .word 0x00004E2A +_02250898: .word 0x00004E27 +_0225089C: .word 0x00007FFF +_022508A0: .word 0x0000070A + + thumb_func_start MOD11_022508A4 +MOD11_022508A4: ; 0x022508A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _022508B6 + cmp r0, #1 + beq _02250906 + pop {r3, r4, r5, pc} +_022508B6: + ldrb r0, [r4, #0xb] + cmp r0, #2 + ldr r0, [r4, #4] + bne _022508E2 + ldr r0, [r0, #0x1c] + mov r1, #0 + mov r2, #5 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + mov r1, #0x4a + lsl r1, r1, #2 + cmp r0, r1 + blt _0225092A + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_022508E2: + mov r1, #0 + ldr r0, [r0, #0x1c] + sub r2, r1, #5 + bl FUN_020079E0 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0, #0x1c] + bl FUN_0200782C + mov r1, #0x27 + mvn r1, r1 + cmp r0, r1 + bgt _0225092A + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_02250906: + ldr r0, [r4, #4] + ldr r0, [r0, #0x1c] + bl FUN_02007534 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x1c] + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0225092A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0225092C +MOD11_0225092C: ; 0x0225092C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0225093E + cmp r0, #1 + beq _0225099A + pop {r3, r4, r5, pc} +_0225093E: + ldrb r0, [r4, #0xb] + cmp r0, #0 + ldr r0, [r4, #4] + bne _02250970 + mov r1, #0 + mov r2, #5 + bl FUN_020079E0 + mov r0, #0xc + ldrsh r5, [r4, r0] + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + cmp r0, r5 + blt _022509B0 + ldr r0, [r4, #4] + mov r1, #0 + add r2, r5, #0 + bl FUN_02007558 + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_02250970: + mov r1, #0 + sub r2, r1, #5 + bl FUN_020079E0 + mov r0, #0xc + ldrsh r5, [r4, r0] + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200782C + cmp r0, r5 + bgt _022509B0 + ldr r0, [r4, #4] + mov r1, #0 + add r2, r5, #0 + bl FUN_02007558 + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_0225099A: + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022509B0: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022509B4 +MOD11_022509B4: ; 0x022509B4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _022509C6 + cmp r1, #1 + beq _022509F6 + b _02250A0A +_022509C6: + add r0, r4, #0 + add r0, #0x4d + ldrb r0, [r0] + cmp r0, #0 + beq _022509DE + add r0, r4, #0 + add r0, #0x4d + ldrb r0, [r0] + add r4, #0x4d + sub r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022509DE: + add r0, r4, #0 + mov r1, #0 + bl MOD11_02257334 + add r0, r4, #0 + mov r1, #1 + bl MOD11_022572AC + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022509F6: + add r0, r4, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02250A26 + add r0, r1, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02250A0A: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x24 + add r2, #0x4c + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4, #0xc] + bl MOD11_022567B8 + mov r0, #0 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0200CAB4 +_02250A26: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02250A28 +MOD11_02250A28: ; 0x02250A28 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #0 + bne _02250A48 + add r0, r4, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02250A6C + add r0, r1, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02250A48: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x24 + add r2, #0x4c + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4, #0xc] + bl MOD11_022567B8 + mov r0, #0 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + mov r1, #0 + bl MOD11_022572AC +_02250A6C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02250A70 +MOD11_02250A70: ; 0x02250A70 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r4, r1, #0 + str r0, [sp] + ldr r0, [r4] + bl MOD11_0222FF68 + ldr r0, [r4] + bl MOD11_02230094 + add r6, r0, #0 + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_0222FF7C + str r0, [sp, #4] + ldr r0, [r4] + bl MOD11_0222FF74 + add r7, r0, #0 + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_022302BC + add r1, r0, #0 + ldrb r0, [r4, #9] + cmp r1, r0 + beq _02250AB2 + ldr r0, [r4] + bl MOD11_02231380 + add r5, r0, #0 + b _02250AB4 +_02250AB2: + mov r5, #0 +_02250AB4: + ldrb r0, [r4, #0xa] + cmp r0, #8 + bls _02250ABC + b _02250F3E +_02250ABC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02250AC8: ; jump table + .short _02250ADA - _02250AC8 - 2 ; case 0 + .short _02250B16 - _02250AC8 - 2 ; case 1 + .short _02250C04 - _02250AC8 - 2 ; case 2 + .short _02250C1A - _02250AC8 - 2 ; case 3 + .short _02250C2C - _02250AC8 - 2 ; case 4 + .short _02250DA0 - _02250AC8 - 2 ; case 5 + .short _02250DF2 - _02250AC8 - 2 ; case 6 + .short _02250ED6 - _02250AC8 - 2 ; case 7 + .short _02250F14 - _02250AC8 - 2 ; case 8 +_02250ADA: + mov r0, #0 + add r1, r4, #0 + add r2, sp, #0x34 +_02250AE0: + ldrh r3, [r1, #0x24] + add r1, r1, #2 + strh r3, [r2] + add r3, r4, r0 + add r3, #0x2c + ldrb r3, [r3] + strh r3, [r2, #8] + add r3, r4, r0 + add r3, #0x30 + ldrb r3, [r3] + add r0, r0, #1 + strh r3, [r2, #0x10] + add r2, r2, #2 + cmp r0, #4 + blt _02250AE0 + ldr r0, [r4] + bl MOD11_02230094 + add r1, r4, #0 + add r1, #0x34 + ldrb r1, [r1] + add r2, sp, #0x34 + bl MOD11_0225A760 + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] +_02250B16: + ldr r0, [r4] + bl MOD11_022300C4 + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #0xa + add r1, r7, #0 + tst r1, r0 + beq _02250B9A + ldr r0, [r4] + bl MOD11_02231268 + cmp r0, #0 + beq _02250B3A + cmp r0, #1 + beq _02250B66 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_02250B3A: + mov r0, #2 + add r1, sp, #8 + strb r0, [r1, #9] + add r0, r4, #0 + add r0, #0x23 + ldrb r0, [r0] + ldrb r2, [r4, #9] + mov r3, #0 + lsl r0, r0, #8 + orr r0, r2 + str r0, [sp, #0x14] + ldr r0, _02250E84 ; =0x00000399 + add r2, sp, #0x10 + strh r0, [r1, #0xa] + ldr r0, [r4] + add r1, r5, #0 + bl MOD11_0223178C + mov r0, #3 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250B66: + mov r1, #0 + add r0, sp, #8 + strb r1, [r0, #9] + ldr r0, [r4] + bl MOD11_0223021C + ldr r1, _02250E88 ; =0x000004CA + add r1, r0, r1 + add r0, sp, #8 + strh r1, [r0, #0xa] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #0x10 + bl MOD11_0223178C + add r1, r4, #0 + add r1, #0x35 + strb r0, [r1] + mov r0, #2 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250B9A: + mov r1, #0x20 + add r2, r7, #0 + tst r2, r1 + beq _02250BBA + mov r1, #8 + add r0, sp, #8 + strb r1, [r0, #9] + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02230140 + str r0, [sp, #0x14] + ldr r1, _02250E8C ; =0x0000039A + add r0, sp, #8 + strh r1, [r0, #0xa] + b _02250BF0 +_02250BBA: + lsl r1, r1, #4 + tst r1, r7 + beq _02250BD8 + mov r1, #8 + add r0, sp, #8 + strb r1, [r0, #9] + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02230140 + str r0, [sp, #0x14] + ldr r1, _02250E90 ; =0x000004C6 + add r0, sp, #8 + strh r1, [r0, #0xa] + b _02250BF0 +_02250BD8: + add r2, r4, #0 + mov r1, #2 + add r3, sp, #8 + strb r1, [r3, #9] + add r2, #0x23 + ldrb r2, [r2] + ldrb r1, [r4, #9] + sub r0, #0x67 + lsl r2, r2, #8 + orr r1, r2 + str r1, [sp, #0x14] + strh r0, [r3, #0xa] +_02250BF0: + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #0x10 + mov r3, #0 + bl MOD11_0223178C + mov r0, #3 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250C04: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + bl FUN_0201BD70 + cmp r0, #0 + bne _02250C36 + mov r0, #3 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250C1A: + ldr r0, [r4, #4] + bl MOD11_02257208 + ldr r0, [sp, #4] + ldr r1, [r4] + bl MOD11_0225464C + mov r0, #4 + strb r0, [r4, #0xa] +_02250C2C: + add r0, r6, #0 + bl MOD11_02258F5C + cmp r0, #0 + bne _02250C38 +_02250C36: + b _02250F3E +_02250C38: + ldrb r1, [r4, #9] + add r0, sp, #8 + strb r1, [r0, #1] + add r1, r4, #0 + add r1, #0x34 + ldrb r1, [r1] + strb r1, [r0] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + strb r1, [r0, #2] + mov r1, #0x36 + ldrsh r1, [r4, r1] + strh r1, [r0, #4] + ldrh r1, [r4, #0x38] + strh r1, [r0, #6] + add r1, r4, #0 + add r1, #0x3a + ldrb r1, [r1] + strb r1, [r0, #3] + ldr r1, _02250E94 ; =0x00000197 + ldr r0, [sp, #4] + ldrb r0, [r0, r1] + cmp r0, #0 + beq _02250CFA + add r0, r6, #0 + mov r1, #1 + bl MOD11_0225B77C + ldr r0, [r4] + bl MOD11_02230C50 + mov r1, #1 + tst r0, r1 + beq _02250C8C + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 + b _02250CF0 +_02250C8C: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + lsl r1, r1, #8 + tst r0, r1 + beq _02250CA8 + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 + b _02250CF0 +_02250CA8: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #0x20 + tst r0, r1 + beq _02250CC2 + add r0, r6, #0 + mov r1, #8 + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 + b _02250CF0 +_02250CC2: + add r0, sp, #8 + ldrb r0, [r0] + cmp r0, #4 + bne _02250CE4 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _02250CE4 + add r0, r6, #0 + mov r1, #4 + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 + b _02250CF0 +_02250CE4: + add r0, r6, #0 + mov r1, #3 + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 +_02250CF0: + ldr r0, [r4] + mov r1, #1 + bl MOD11_022312AC + b _02250D70 +_02250CFA: + ldr r0, [r4] + bl MOD11_02230C50 + mov r1, #1 + tst r0, r1 + beq _02250D14 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 + b _02250D68 +_02250D14: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + lsl r1, r1, #8 + tst r0, r1 + beq _02250D30 + add r0, r6, #0 + mov r1, #9 + mov r2, #0 + add r3, sp, #8 + bl MOD11_02258820 + b _02250D68 +_02250D30: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #0x20 + tst r0, r1 + add r3, sp, #8 + beq _02250D4A + add r0, r6, #0 + mov r1, #7 + mov r2, #0 + bl MOD11_02258820 + b _02250D68 +_02250D4A: + add r0, sp, #8 + ldrb r0, [r0] + cmp r0, #4 + beq _02250D5E + add r0, r6, #0 + mov r1, #1 + mov r2, #0 + bl MOD11_02258820 + b _02250D68 +_02250D5E: + add r0, r6, #0 + mov r1, #2 + mov r2, #0 + bl MOD11_02258820 +_02250D68: + ldr r1, _02250E94 ; =0x00000197 + ldr r0, [sp, #4] + mov r2, #1 + strb r2, [r0, r1] +_02250D70: + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x1c + bl MOD11_02258D60 + add r1, r4, #0 + add r2, r4, #0 + add r0, r6, #0 + add r1, #0x10 + add r2, #0x16 + bl MOD11_02258D7C + add r0, r6, #0 + bl MOD11_02258DD0 + cmp r5, #0 + beq _02250D98 + add r0, r5, #0 + bl MOD11_02258180 +_02250D98: + mov r0, #5 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250DA0: + ldr r0, _02250E98 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #8 + tst r0, r1 + beq _02250DD0 + ldr r0, [r4] + mov r5, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _02250DD0 +_02250DB6: + ldr r0, [r4] + add r1, r5, #0 + bl MOD11_0222FF7C + add r0, #0x28 + bl MOD11_0225704C + ldr r0, [r4] + add r5, r5, #1 + bl MOD11_0222FF84 + cmp r5, r0 + blt _02250DB6 +_02250DD0: + add r0, r6, #0 + bl MOD11_02258E74 + mov r1, #0 + mvn r1, r1 + str r0, [r4, #0xc] + cmp r0, r1 + beq _02250E02 + mov r0, #0xa + strb r0, [r4, #0xb] + ldr r0, _02250E9C ; =0x000005DD + bl FUN_020054C8 + mov r0, #6 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250DF2: + add r0, r6, #0 + bl MOD11_02258F5C + cmp r0, #1 + beq _02250E04 + ldr r0, [r4, #0xc] + cmp r0, #1 + beq _02250E04 +_02250E02: + b _02250F3E +_02250E04: + ldr r0, [r4, #0xc] + cmp r0, #4 + bhi _02250EC4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02250E16: ; jump table + .short _02250EC4 - _02250E16 - 2 ; case 0 + .short _02250E20 - _02250E16 - 2 ; case 1 + .short _02250E34 - _02250E16 - 2 ; case 2 + .short _02250E5C - _02250E16 - 2 ; case 3 + .short _02250EA0 - _02250E16 - 2 ; case 4 +_02250E20: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + beq _02250EC8 + mov r0, #7 + strb r0, [r4, #0xa] + b _02250EC8 +_02250E34: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD11_02258820 + add r0, r6, #0 + mov r1, #0 + bl MOD11_0225B77C + add r0, r5, #0 + bl MOD11_02258184 + ldr r0, [r4, #4] + bl MOD11_02257238 + ldr r0, [sp, #4] + bl MOD11_0225468C + b _02250EC8 +_02250E5C: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD11_02258820 + add r0, r6, #0 + mov r1, #0 + bl MOD11_0225B77C + add r0, r5, #0 + bl MOD11_02258184 + ldr r0, [r4, #4] + bl MOD11_02257238 + ldr r0, [sp, #4] + bl MOD11_0225468C + b _02250EC8 + .align 2, 0 +_02250E84: .word 0x00000399 +_02250E88: .word 0x000004CA +_02250E8C: .word 0x0000039A +_02250E90: .word 0x000004C6 +_02250E94: .word 0x00000197 +_02250E98: .word 0x021C48B8 +_02250E9C: .word 0x000005DD +_02250EA0: + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02230CB8 + cmp r0, #1 + bne _02250EB6 + add r0, r5, #0 + bl MOD11_02258184 + mov r0, #0xff + str r0, [r4, #0xc] +_02250EB6: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD11_02258820 + b _02250EC8 +_02250EC4: + bl ErrorHandling +_02250EC8: + add r0, r6, #0 + bl MOD11_02258E30 + mov r0, #8 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250ED6: + add r0, r6, #0 + bl MOD11_02258F5C + cmp r0, #1 + bne _02250F3E + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD11_02258820 + add r0, r6, #0 + mov r1, #0 + bl MOD11_0225B77C + add r0, r5, #0 + bl MOD11_02258184 + ldr r0, [r4, #4] + bl MOD11_02257238 + ldr r0, [sp, #4] + bl MOD11_0225468C + add r0, r6, #0 + bl MOD11_02258E30 + mov r0, #8 + add sp, #0x4c + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_02250F14: + add r0, r6, #0 + bl MOD11_0225B780 + cmp r0, #1 + bne _02250F3E + ldrb r1, [r4, #9] + ldr r0, [r4] + ldr r2, [r4, #0xc] + bl MOD11_02255528 + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp] + bl FUN_0200CAB4 +_02250F3E: + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02250F44 +MOD11_02250F44: ; 0x02250F44 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #9] + add r5, r0, #0 + ldr r0, [r4] + bl FUN_021F45A4 + add r2, r0, #0 + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02255528 + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02250F74 +MOD11_02250F74: ; 0x02250F74 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #9] + add r5, r0, #0 + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02250F94 +MOD11_02250F94: ; 0x02250F94 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02230DE0 + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF78 + mov r2, #0 + ldrb r1, [r4, #9] + add r3, r2, #0 + bl MOD11_02243420 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1a + bl FUN_02068678 + ldr r2, _0225100C ; =0x0225E830 + lsl r1, r5, #1 + ldrb r2, [r2, r1] + mul r2, r0 + add r0, r2, #0 + ldr r2, _02251010 ; =0x0225E831 + ldrb r1, [r2, r1] + blx _s32_div_f + add r5, r0, #0 + bl FUN_0201B9EC + mov r1, #0xff + blx _s32_div_f + cmp r1, r5 + ldr r0, [r4] + bgt _02250FEA + ldrb r1, [r4, #9] + mov r2, #4 + bl MOD11_02255528 + b _02250FF2 +_02250FEA: + ldrb r1, [r4, #9] + mov r2, #5 + bl MOD11_02255528 +_02250FF2: + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + nop +_0225100C: .word 0x0225E830 +_02251010: .word 0x0225E831 + + thumb_func_start MOD11_02251014 +MOD11_02251014: ; 0x02251014 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #9] + add r5, r0, #0 + ldr r0, [r4] + mov r2, #4 + bl MOD11_02255528 + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0225103C +MOD11_0225103C: ; 0x0225103C + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF68 + ldr r0, [r4] + bl MOD11_02230094 + add r7, r0, #0 + ldrb r1, [r4, #0x1d] + ldr r0, [r4] + bl MOD11_0222FF7C + str r0, [sp] + ldrb r1, [r4, #0x1d] + ldr r0, [r4] + bl MOD11_022302BC + add r1, r0, #0 + ldrb r0, [r4, #0x1d] + cmp r1, r0 + beq _02251076 + ldr r0, [r4] + bl MOD11_02231380 + add r5, r0, #0 + b _02251078 +_02251076: + mov r5, #0 +_02251078: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #3 + bls _02251084 + b _0225118E +_02251084: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02251090: ; jump table + .short _02251098 - _02251090 - 2 ; case 0 + .short _02251114 - _02251090 - 2 ; case 1 + .short _0225113A - _02251090 - 2 ; case 2 + .short _02251180 - _02251090 - 2 ; case 3 +_02251098: + add r0, r7, #0 + bl MOD11_02258F5C + cmp r0, #0 + bne _022510A4 + b _022511B6 +_022510A4: + ldr r0, [r4] + bl MOD11_022300C4 + add r1, r0, #0 + mov r2, #2 + add r0, sp, #4 + strb r2, [r0, #0x15] + ldrb r2, [r4, #0x1f] + ldrb r3, [r4, #0x1d] + lsl r2, r2, #8 + orr r2, r3 + str r2, [sp, #0x1c] + ldr r2, _022511BC ; =0x00000399 + mov r3, #0 + strh r2, [r0, #0x16] + ldr r0, [r4] + add r2, sp, #0x18 + bl MOD11_0223178C + add r0, r7, #0 + bl MOD11_02258E30 + add r5, sp, #4 + mov r2, #0 + add r3, r4, #0 + add r6, r5, #0 +_022510D8: + ldrh r0, [r3, #0xc] + add r1, r4, r2 + add r2, r2, #1 + strh r0, [r5] + ldrb r0, [r1, #0x14] + add r3, r3, #2 + add r5, r5, #2 + strb r0, [r6, #8] + ldrb r0, [r1, #0x18] + strb r0, [r6, #0xc] + add r6, r6, #1 + cmp r2, #4 + blt _022510D8 + ldrb r1, [r4, #0x1e] + add r0, sp, #4 + mov r2, #0 + strb r1, [r0, #0x10] + add r0, r7, #0 + mov r1, #0xb + add r3, sp, #4 + bl MOD11_02258820 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #0x3c + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, r7, pc} +_02251114: + add r0, r7, #0 + bl MOD11_02258E74 + mov r1, #0 + mvn r1, r1 + str r0, [r4, #8] + cmp r0, r1 + beq _022511B6 + ldr r0, _022511C0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #0x3c + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, r7, pc} +_0225113A: + ldr r0, [r4, #8] + cmp r0, #0xff + beq _02251166 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02251166 + add r0, r7, #0 + mov r1, #0 + bl MOD11_0225B77C + add r0, r5, #0 + bl MOD11_02258184 + ldr r0, [r4, #4] + bl MOD11_02257238 + ldr r0, [sp] + bl MOD11_0225468C +_02251166: + ldrb r1, [r4, #0x1d] + ldr r0, [r4] + ldr r2, [r4, #8] + bl MOD11_022555E4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #0x3c + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, r7, pc} +_02251180: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] +_0225118E: + add r0, r7, #0 + bl MOD11_0225B780 + cmp r0, #1 + bne _022511B6 + ldr r0, [r4] + mov r1, #1 + bl MOD11_02231274 + ldrb r1, [r4, #0x1d] + ldrb r2, [r4, #0x1c] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_022511B6: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_022511BC: .word 0x00000399 +_022511C0: .word 0x000005DD + + thumb_func_start MOD11_022511C4 +MOD11_022511C4: ; 0x022511C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [r6] + bl MOD11_0222FF74 + add r4, r0, #0 + ldr r0, [r6] + bl MOD11_0222FF78 + str r0, [sp, #0xc] + ldr r0, _02251290 ; =0x00000101 + tst r0, r4 + bne _022511FA + ldr r0, [r6] + bl MOD11_02230C50 + mov r1, #1 + tst r0, r1 + bne _022511FA + ldrb r1, [r6, #0x1d] + ldr r0, [r6] + bl MOD11_02230270 + cmp r0, #0 + bne _02251216 +_022511FA: + bl FUN_02033590 + cmp r0, #0 + beq _02251206 + bl ErrorHandling +_02251206: + ldrb r1, [r6, #0x1d] + ldr r0, [r6] + bl FUN_021EFD8C + cmp r0, #0xff + beq _0225128C + add r4, r0, #1 + b _0225126C +_02251216: + mov r7, #0 + add r4, r7, #0 + add r5, sp, #0x10 +_0225121C: + add r0, r4, #0 + bl FUN_0206A92C + ldrh r1, [r6, #0x22] + tst r0, r1 + bne _0225122E + add r0, r4, #1 + stmia r5!, {r0} + add r7, r7, #1 +_0225122E: + add r4, r4, #1 + cmp r4, #4 + blt _0225121C + bl FUN_0201B9EC + add r1, r7, #0 + blx _s32_div_f + lsl r1, r1, #2 + add r0, sp, #0x10 + ldr r4, [r0, r1] + mov r0, #1 + sub r3, r4, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + lsl r3, r3, #1 + add r3, r6, r3 + ldrb r2, [r6, #0x1d] + ldrh r3, [r3, #0xc] + ldr r0, [r6] + ldr r1, [sp, #0xc] + bl MOD11_02244C28 + str r0, [sp] + ldrb r3, [r6, #0x1d] + ldr r0, [r6] + ldr r1, [sp, #0xc] + mov r2, #0xb + bl MOD11_0224C54C +_0225126C: + ldrb r1, [r6, #0x1d] + ldr r0, [r6] + add r2, r4, #0 + bl MOD11_022555E4 + ldrb r1, [r6, #0x1d] + ldrb r2, [r6, #0x1c] + ldr r0, [r6] + bl MOD11_022567B8 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [sp, #8] + bl FUN_0200CAB4 +_0225128C: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02251290: .word 0x00000101 + + thumb_func_start MOD11_02251294 +MOD11_02251294: ; 0x02251294 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0x1d] + add r5, r0, #0 + ldrb r2, [r4, #0x1c] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022512B4 +MOD11_022512B4: ; 0x022512B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r1, #0 + str r0, [sp] + ldr r0, [r4] + bl MOD11_0222FF68 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF7C + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_02230094 + add r5, r0, #0 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_022302BC + add r1, r0, #0 + ldrb r0, [r4, #0xd] + cmp r1, r0 + beq _022512EE + ldr r0, [r4] + bl MOD11_02231380 + add r6, r0, #0 + b _022512F0 +_022512EE: + mov r6, #0 +_022512F0: + ldrb r0, [r4, #0xf] + cmp r0, #3 + bhi _022513BE + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02251302: ; jump table + .short _0225130A - _02251302 - 2 ; case 0 + .short _02251366 - _02251302 - 2 ; case 1 + .short _02251386 - _02251302 - 2 ; case 2 + .short _022513BA - _02251302 - 2 ; case 3 +_0225130A: + add r0, r5, #0 + bl MOD11_02258F5C + cmp r0, #0 + bne _02251316 + b _02251418 +_02251316: + add r2, sp, #8 + mov r0, #0 + add r1, r4, #0 + add r2, #2 +_0225131E: + ldrh r3, [r1, #0x10] + add r0, r0, #1 + strh r3, [r2] + ldrh r3, [r1, #0x12] + strh r3, [r2, #2] + ldrh r3, [r1, #0x14] + strh r3, [r2, #4] + ldrh r3, [r1, #0x16] + add r1, #8 + strh r3, [r2, #6] + add r2, #8 + cmp r0, #4 + blt _0225131E + ldrb r1, [r4, #0xe] + add r0, sp, #0x28 + add r0, #2 + strb r1, [r0] + ldrh r0, [r4, #0x30] + ldrb r1, [r4, #0xe] + bl MOD11_02258F88 + add r1, sp, #0x28 + add r1, #2 + strb r0, [r1, #1] + add r3, sp, #8 + add r0, r5, #0 + mov r1, #0xc + mov r2, #0 + add r3, #2 + bl MOD11_02258820 + ldrb r0, [r4, #0xf] + add sp, #0x2c + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r4, r5, r6, r7, pc} +_02251366: + add r0, r5, #0 + bl MOD11_02258E74 + mov r1, #0 + mvn r1, r1 + str r0, [r4, #8] + cmp r0, r1 + beq _02251418 + ldr r0, _0225141C ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xf] + add sp, #0x2c + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r4, r5, r6, r7, pc} +_02251386: + ldr r0, [r4, #8] + cmp r0, #0xff + beq _022513B0 + ldr r0, [r4, #4] + bl MOD11_02257238 + add r0, r7, #0 + bl MOD11_0225468C + add r0, r6, #0 + bl MOD11_02258184 + add r0, r4, #0 + add r0, #0x32 + ldrb r0, [r0] + cmp r0, #1 + bne _022513B0 + add r0, r5, #0 + mov r1, #0 + bl MOD11_0225B77C +_022513B0: + ldrb r0, [r4, #0xf] + add sp, #0x2c + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r4, r5, r6, r7, pc} +_022513BA: + add r0, r0, #1 + strb r0, [r4, #0xf] +_022513BE: + add r0, r5, #0 + bl MOD11_0225B780 + cmp r0, #1 + bne _02251418 + ldr r0, [r4] + ldr r5, [r4, #8] + bl MOD11_0222FF74 + add r6, r0, #0 + cmp r5, #0xff + beq _022513F8 + ldr r0, [r4] + add r1, sp, #4 + bl MOD11_022314E0 + mov r0, #2 + tst r0, r6 + ldr r0, [r4, #8] + beq _022513F0 + add r1, r0, #1 + add r0, sp, #4 + ldrb r0, [r0, r1] + add r5, r0, #1 + b _022513F8 +_022513F0: + sub r1, r0, #1 + add r0, sp, #4 + ldrb r0, [r0, r1] + add r5, r0, #1 +_022513F8: + ldrb r1, [r4, #0xd] + ldr r0, [r4] + add r2, r5, #0 + bl MOD11_02255720 + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp] + bl FUN_0200CAB4 +_02251418: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0225141C: .word 0x000005DD + + thumb_func_start MOD11_02251420 +MOD11_02251420: ; 0x02251420 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_0222FF78 + add r1, r0, #0 + ldrb r3, [r5, #0xd] + ldr r0, [r5] + mov r2, #0xb + bl MOD11_0224C474 + add r4, r0, #1 + cmp r4, #5 + blt _02251442 + bl ErrorHandling +_02251442: + ldrb r1, [r5, #0xd] + ldr r0, [r5] + add r2, r4, #0 + bl MOD11_02255720 + ldrb r1, [r5, #0xd] + ldrb r2, [r5, #0xc] + ldr r0, [r5] + bl MOD11_022567B8 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02251464 +MOD11_02251464: ; 0x02251464 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02251484 +MOD11_02251484: ; 0x02251484 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x14 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_022300CC + ldrb r1, [r4, #0xe] + add r5, r0, #0 + cmp r1, #0x1e + bls _022514A0 + bl _02251FEA +_022514A0: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022514AC: ; jump table + .short _022514EA - _022514AC - 2 ; case 0 + .short _02251540 - _022514AC - 2 ; case 1 + .short _022515C2 - _022514AC - 2 ; case 2 + .short _022515D6 - _022514AC - 2 ; case 3 + .short _02251634 - _022514AC - 2 ; case 4 + .short _0225177C - _022514AC - 2 ; case 5 + .short _022517B8 - _022514AC - 2 ; case 6 + .short _02251808 - _022514AC - 2 ; case 7 + .short _022519DC - _022514AC - 2 ; case 8 + .short _02251A5A - _022514AC - 2 ; case 9 + .short _02251A96 - _022514AC - 2 ; case 10 + .short _02251AB8 - _022514AC - 2 ; case 11 + .short _02251FA2 - _022514AC - 2 ; case 12 + .short _02251B3E - _022514AC - 2 ; case 13 + .short _02251FA2 - _022514AC - 2 ; case 14 + .short _02251BF2 - _022514AC - 2 ; case 15 + .short _02251FD0 - _022514AC - 2 ; case 16 + .short _02251AF8 - _022514AC - 2 ; case 17 + .short _02251FA2 - _022514AC - 2 ; case 18 + .short _02251CA6 - _022514AC - 2 ; case 19 + .short _02251FA2 - _022514AC - 2 ; case 20 + .short _02251CEC - _022514AC - 2 ; case 21 + .short _02251D86 - _022514AC - 2 ; case 22 + .short _02251DBC - _022514AC - 2 ; case 23 + .short _02251FD0 - _022514AC - 2 ; case 24 + .short _02251AF8 - _022514AC - 2 ; case 25 + .short _02251FA2 - _022514AC - 2 ; case 26 + .short _02251CA6 - _022514AC - 2 ; case 27 + .short _02251FA2 - _022514AC - 2 ; case 28 + .short _02251E2E - _022514AC - 2 ; case 29 + .short _02251FD0 - _022514AC - 2 ; case 30 +_022514EA: + ldr r0, [r4] + bl MOD11_02230094 + bl MOD11_0225C76C + strb r0, [r4, #0x10] + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + mov r2, #3 + str r1, [sp] + mov r0, #7 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #5 + add r3, r1, #0 + add r0, r5, #0 + lsl r2, r2, #0xa + sub r3, #0xd + bl FUN_02003210 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0xa + add r3, r1, #0 + ldr r2, _02251850 ; =0x0000FFFF + add r0, r5, #0 + sub r3, #0x12 + bl FUN_02003210 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251540: + bl FUN_020038E4 + cmp r0, #0 + bne _022515FE + ldr r0, [r4] + bl MOD11_0222D7F8 + mov r0, #5 + mov r1, #0x34 + bl FUN_02016998 + str r0, [r4, #4] + ldr r1, [r4] + str r1, [r0] + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_022301D4 + ldr r1, [r4, #4] + str r0, [r1, #4] + ldr r0, [r4, #4] + mov r1, #5 + str r1, [r0, #0xc] + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x26 + strb r1, [r0] + ldr r0, [r4] + bl MOD11_02230214 + ldr r1, [r4, #4] + str r0, [r1, #8] + ldrb r1, [r4, #0xd] + ldr r0, [r4, #4] + str r1, [r0, #0x10] + ldr r0, [r4, #4] + ldrb r1, [r4, #0x10] + add r0, #0x25 + strb r1, [r0] + ldr r0, [r4, #4] + ldrb r1, [r4, #0x14] + add r0, #0x22 + strb r1, [r0] + ldr r0, [r4, #4] + ldrb r1, [r4, #0x15] + add r0, #0x23 + strb r1, [r0] + ldr r0, [r4, #4] + ldrb r1, [r4, #0x16] + add r0, #0x24 + strb r1, [r0] + ldrb r0, [r4, #0xd] + add r0, r4, r0 + add r0, #0x30 + ldrb r1, [r0] + ldr r0, [r4, #4] + str r1, [r0, #0x18] + ldr r0, [r4, #4] + bl FUN_022186F0 + add sp, #0x1fc + mov r0, #3 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_022515C2: + ldr r0, [r4, #4] + ldrb r1, [r4, #0x10] + add r0, #0x25 + strb r1, [r0] + ldr r0, [r4, #4] + bl FUN_022186F0 + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] +_022515D6: + ldr r1, [r4, #4] + add r0, r1, #0 + add r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _022515FE + mov r0, #0 + add r1, #0x26 + strb r0, [r1] + ldr r0, [r4, #4] + add r0, #0x25 + ldrb r0, [r0] + strb r0, [r4, #0x10] + ldr r1, [r4, #4] + ldrh r0, [r1, #0x1c] + cmp r0, #0 + beq _0225162A + ldrb r0, [r1, #0x1e] + cmp r0, #3 + bls _02251602 +_022515FE: + bl _02251FEA +_02251602: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225160E: ; jump table + .short _02251616 - _0225160E - 2 ; case 0 + .short _02251616 - _0225160E - 2 ; case 1 + .short _02251620 - _0225160E - 2 ; case 2 + .short _02251620 - _0225160E - 2 ; case 3 +_02251616: + add sp, #0x1fc + mov r0, #4 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251620: + add sp, #0x1fc + mov r0, #6 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_0225162A: + add sp, #0x1fc + mov r0, #6 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251634: + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF88 + str r0, [sp, #0x14] + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02251660 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _02251660 + ldrb r1, [r4, #0xd] + mov r0, #1 + add r7, r1, #0 + and r7, r0 + b _02251662 +_02251660: + ldrb r7, [r4, #0xd] +_02251662: + ldr r0, [r4, #8] + mov r1, #6 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_0206B8CC + ldr r0, [sp, #0x14] + mov r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _022516B0 + mov r0, #6 + mul r0, r7 + add r5, r4, r0 +_02251680: + ldrb r2, [r5, #0x18] + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_02230014 + add r1, r0, #0 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_0206B900 + ldr r1, [r4, #8] + ldrb r0, [r5, #0x18] + ldr r1, [r1, #4] + add r5, r5, #1 + add r1, r1, r6 + add r1, #0x2c + strb r0, [r1] + ldr r0, [sp, #0x14] + add r6, r6, #1 + bl FUN_0206B9AC + cmp r6, r0 + blt _02251680 +_022516B0: + ldr r0, [r4, #8] + ldr r1, [r4] + ldr r0, [r0, #4] + str r1, [r0, #8] + ldr r0, [r4, #8] + mov r1, #5 + ldr r0, [r0, #4] + str r1, [r0, #0xc] + ldr r1, [r4, #8] + mov r0, #0 + ldr r1, [r1, #4] + strb r0, [r1, #0x11] + ldr r1, [r4, #8] + ldr r1, [r1, #4] + add r1, #0x36 + strb r0, [r1] + ldr r1, [r4, #8] + ldr r1, [r1, #4] + strh r0, [r1, #0x24] + ldr r0, [r4, #8] + mov r1, #2 + ldr r0, [r0, #4] + add r0, #0x35 + strb r1, [r0] + ldr r0, [r4, #4] + ldrh r1, [r0, #0x1c] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + strh r1, [r0, #0x22] + ldr r0, [r4, #4] + ldrb r1, [r0, #0x1e] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + add r0, #0x33 + strb r1, [r0] + ldr r0, [r4, #4] + ldr r1, [r0, #0x10] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r1, [r0, #0x28] + ldr r0, [r4, #8] + ldrb r1, [r4, #0x10] + ldr r0, [r0, #4] + add r0, #0x32 + strb r1, [r0] + ldrb r0, [r4, #0xd] + ldr r2, [r4, #8] + add r0, r2, r0 + ldrb r1, [r0, #0xc] + ldr r0, [r2, #4] + strb r1, [r0, #0x14] + ldrb r1, [r4, #0xd] + ldr r5, [r4, #8] + ldr r0, [r4] + bl MOD11_022302BC + add r0, r5, r0 + ldrb r1, [r0, #0xc] + ldr r0, [r5, #4] + strb r1, [r0, #0x15] + ldrb r0, [r4, #0xf] + cmp r0, #4 + bne _02251746 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_022302BC + add r0, r4, r0 + add r0, #0x30 + ldrb r1, [r0] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r1, [r0, #0x18] + ldrb r0, [r4, #0xd] + b _0225175C +_02251746: + ldrb r0, [r4, #0xd] + add r0, r4, r0 + add r0, #0x30 + ldrb r1, [r0] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r1, [r0, #0x18] + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_022302BC +_0225175C: + add r0, r4, r0 + add r0, #0x30 + ldrb r1, [r0] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r1, [r0, #0x1c] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + bl FUN_02211E60 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_0225177C: + ldr r0, [r4, #8] + ldr r1, [r0, #4] + add r0, r1, #0 + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _02251832 + add r1, #0x32 + ldrb r0, [r1] + mov r1, #0 + strb r0, [r4, #0x10] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + add r0, #0x36 + strb r1, [r0] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x11] + cmp r0, #6 + bne _022517AE + add sp, #0x1fc + mov r0, #2 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_022517AE: + add sp, #0x1fc + mov r0, #6 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_022517B8: + ldr r0, [r4] + bl MOD11_0222D88C + ldr r0, [r4] + bl MOD11_02230094 + ldrb r1, [r4, #0x10] + bl MOD11_0225C778 + mov r0, #7 + str r0, [sp] + mov r0, #0 + mov r1, #5 + str r0, [sp, #4] + mov r2, #3 + add r3, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + lsl r2, r2, #0xa + sub r3, #0xd + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + mov r1, #0xa + str r0, [sp, #4] + add r3, r1, #0 + str r0, [sp, #8] + ldr r2, _02251850 ; =0x0000FFFF + add r0, r5, #0 + sub r3, #0x12 + bl FUN_02003210 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251808: + bl FUN_020038E4 + cmp r0, #0 + bne _02251832 + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #0 + bl FUN_020143A8 + ldr r0, [r4, #4] + ldrh r0, [r0, #0x1c] + cmp r0, #0 + bne _02251826 + b _022519D2 +_02251826: + mov r0, #9 + strb r0, [r4, #0xe] + ldr r0, [r4, #4] + ldrb r1, [r0, #0x1e] + cmp r1, #3 + bls _02251834 +_02251832: + b _02251FEA +_02251834: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02251840: ; jump table + .short _022518F4 - _02251840 - 2 ; case 0 + .short _02251848 - _02251840 - 2 ; case 1 + .short _022519C8 - _02251840 - 2 ; case 2 + .short _0225195E - _02251840 - 2 ; case 3 +_02251848: + ldrh r1, [r0, #0x1c] + ldr r0, _02251854 ; =0x0000FFE4 + b _02251858 + nop +_02251850: .word 0x0000FFFF +_02251854: .word 0x0000FFE4 +_02251858: + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _0225186C + add sp, #0x1fc + mov r0, #8 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_0225186C: + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x11] + cmp r0, #2 + bhs _0225188A + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #3 + beq _02251894 + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #0x13 + beq _02251894 +_0225188A: + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x11] + cmp r0, #1 + bhs _022518EA +_02251894: + ldr r0, [r4, #4] + ldrh r0, [r0, #0x1c] + cmp r0, #0x17 + ldr r0, [r4] + bne _022518C4 + bl MOD11_02230E20 + cmp r0, #1 + bne _022518B0 + add sp, #0x1fc + mov r0, #0x11 + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022518B0: + mov r1, #0x74 + ldr r0, _02251BF8 ; =0x000005EC + mvn r1, r1 + bl FUN_020054A8 + add sp, #0x1fc + mov r0, #0x15 + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022518C4: + bl MOD11_02230E20 + cmp r0, #1 + bne _022518D6 + add sp, #0x1fc + mov r0, #0x19 + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022518D6: + mov r1, #0x74 + ldr r0, _02251BF8 ; =0x000005EC + mvn r1, r1 + bl FUN_020054A8 + add sp, #0x1fc + mov r0, #0x1d + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022518EA: + add sp, #0x1fc + mov r0, #8 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_022518F4: + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x11] + cmp r0, #2 + bhs _02251912 + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #3 + beq _0225191C + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #0x13 + beq _0225191C +_02251912: + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x11] + cmp r0, #1 + bhs _02251954 +_0225191C: + ldr r0, [r4, #4] + mov r1, #0x26 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251954 + ldr r0, [r4] + bl MOD11_02230E20 + cmp r0, #1 + bne _02251940 + add sp, #0x1fc + mov r0, #0x11 + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_02251940: + mov r1, #0x74 + ldr r0, _02251BF8 ; =0x000005EC + mvn r1, r1 + bl FUN_020054A8 + add sp, #0x1fc + mov r0, #0x15 + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_02251954: + add sp, #0x1fc + mov r0, #8 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_0225195E: + ldrh r1, [r0, #0x1c] + ldr r0, _02251BFC ; =0x0000FFC1 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _02251976 + add sp, #0x1fc + mov r0, #8 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251976: + cmp r1, #0x37 + ldr r0, [r4] + bne _022519A2 + bl MOD11_02230E20 + cmp r0, #1 + bne _0225198E + add sp, #0x1fc + mov r0, #0xd + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_0225198E: + mov r1, #0x74 + ldr r0, _02251BF8 ; =0x000005EC + mvn r1, r1 + bl FUN_020054A8 + add sp, #0x1fc + mov r0, #0xf + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022519A2: + bl MOD11_02230E20 + cmp r0, #1 + bne _022519B4 + add sp, #0x1fc + mov r0, #0xb + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022519B4: + mov r1, #0x74 + ldr r0, _02251BF8 ; =0x000005EC + mvn r1, r1 + bl FUN_020054A8 + add sp, #0x1fc + mov r0, #0xf + add sp, #0x14 + strh r0, [r4, #0x12] + pop {r3, r4, r5, r6, r7, pc} +_022519C8: + add sp, #0x1fc + mov r0, #8 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_022519D2: + add sp, #0x1fc + mov r0, #8 + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_022519DC: + ldr r2, [r4, #4] + ldrh r0, [r2, #0x1c] + cmp r0, #0 + bne _022519EC + mov r1, #0xff + add r0, sp, #0x1c + strh r1, [r0] + b _02251A08 +_022519EC: + add r1, sp, #0x1c + strh r0, [r1] + ldrb r0, [r2, #0x1e] + strb r0, [r1, #2] + cmp r0, #1 + bhi _02251A08 + ldr r0, [r4, #8] + ldr r2, [r0, #4] + ldrb r0, [r2, #0x11] + add r0, r2, r0 + add r0, #0x2c + ldrb r0, [r0] + add r0, r0, #1 + strb r0, [r1, #3] +_02251A08: + add r3, sp, #0x1c + ldrb r1, [r4, #0xd] + mov r2, sp + ldrh r5, [r3] + ldr r0, [r4] + sub r2, r2, #4 + strh r5, [r2] + ldrh r3, [r3, #2] + strh r3, [r2, #2] + ldr r2, [r2] + bl MOD11_022558C4 + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 + add sp, #0x1fc + add sp, #0x14 + pop {r3, r4, r5, r6, r7, pc} +_02251A5A: + ldr r1, _02251C00 ; =0x000004B6 + add r0, sp, #0x8c + strh r1, [r0, #2] + mov r1, #5 + strb r1, [r0, #1] + ldr r0, [r4, #4] + ldrh r0, [r0, #0x1c] + str r0, [sp, #0x90] + ldr r0, [r4] + bl MOD11_022300C4 + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #0x8c + bl MOD11_0223178C + strb r0, [r4, #0x11] + mov r0, #0x14 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251A96: + ldrb r0, [r4, #0x11] + bl FUN_0201BD70 + cmp r0, #0 + bne _02251AAC + ldrb r0, [r4, #0x17] + sub r0, r0, #1 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0x17] + cmp r0, #0 + beq _02251AAE +_02251AAC: + b _02251FEA +_02251AAE: + ldrh r0, [r4, #0x12] + add sp, #0x1fc + add sp, #0x14 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251AB8: + ldrb r1, [r4, #0xd] + mov r0, #9 + add r2, sp, #0x1b8 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF7C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r3, sp, #0x1b8 + bl MOD11_02254404 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251AF8: + ldr r0, [r4, #8] + mov r1, #0 + ldr r0, [r0, #4] + add r2, sp, #0x160 + ldrb r0, [r0, #0x11] + mov r3, #1 + lsl r5, r0, #1 + mov r0, #9 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4] + bl MOD11_02256854 + ldr r0, [r4] + add r1, r5, #0 + bl MOD11_0222FF7C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r3, sp, #0x160 + bl MOD11_02254404 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251B3E: + ldr r0, [r4, #4] + add r2, sp, #0x108 + ldrh r0, [r0, #0x1c] + cmp r0, #0x37 + bne _02251B7C + ldrb r0, [r4, #0xd] + mov r1, #0 + add r3, r1, #0 + str r1, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + ldr r0, [r4] + bl MOD11_02256854 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF7C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r3, sp, #0x108 + bl MOD11_02254404 + b _02251BE6 +_02251B7C: + cmp r0, #0x38 + bne _02251BB4 + ldrb r0, [r4, #0xd] + mov r1, #0 + add r3, r1, #0 + str r1, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x74 + str r0, [sp, #0xc] + ldr r0, [r4] + bl MOD11_02256854 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF7C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r3, sp, #0x108 + bl MOD11_02254404 + b _02251BE6 +_02251BB4: + ldrb r1, [r4, #0xd] + mov r0, #0xc + mov r3, #1 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + bl MOD11_02256854 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF7C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r3, sp, #0x108 + bl MOD11_02254404 +_02251BE6: + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251BF2: + ldr r2, _02251C04 ; =0x000004B3 + b _02251C08 + nop +_02251BF8: .word 0x000005EC +_02251BFC: .word 0x0000FFC1 +_02251C00: .word 0x000004B6 +_02251C04: .word 0x000004B3 +_02251C08: + add r0, sp, #0x68 + strh r2, [r0, #2] + mov r1, #0xc + strb r1, [r0, #1] + ldrb r1, [r4, #0xd] + ldr r3, [r4, #8] + add r3, r3, r1 + ldrb r3, [r3, #0xc] + lsl r3, r3, #8 + orr r1, r3 + str r1, [sp, #0x6c] + ldr r1, [r4, #4] + ldrh r1, [r1, #0x1c] + sub r1, #0x37 + cmp r1, #7 + bhi _02251C7A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02251C34: ; jump table + .short _02251C68 - _02251C34 - 2 ; case 0 + .short _02251C72 - _02251C34 - 2 ; case 1 + .short _02251C44 - _02251C34 - 2 ; case 2 + .short _02251C4A - _02251C34 - 2 ; case 3 + .short _02251C50 - _02251C34 - 2 ; case 4 + .short _02251C56 - _02251C34 - 2 ; case 5 + .short _02251C5C - _02251C34 - 2 ; case 6 + .short _02251C62 - _02251C34 - 2 ; case 7 +_02251C44: + mov r0, #1 + str r0, [sp, #0x70] + b _02251C7A +_02251C4A: + mov r0, #2 + str r0, [sp, #0x70] + b _02251C7A +_02251C50: + mov r0, #3 + str r0, [sp, #0x70] + b _02251C7A +_02251C56: + mov r0, #6 + str r0, [sp, #0x70] + b _02251C7A +_02251C5C: + mov r0, #4 + str r0, [sp, #0x70] + b _02251C7A +_02251C62: + mov r0, #5 + str r0, [sp, #0x70] + b _02251C7A +_02251C68: + add r1, r2, #1 + strh r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + b _02251C7A +_02251C72: + add r1, r2, #2 + strh r1, [r0, #2] + mov r1, #2 + strb r1, [r0, #1] +_02251C7A: + ldr r0, [r4] + bl MOD11_022300C4 + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #0x68 + bl MOD11_0223178C + strb r0, [r4, #0x11] + mov r0, #0x14 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251CA6: + ldr r0, [r4, #8] + mov r1, #0 + ldr r0, [r0, #4] + add r2, sp, #0xb0 + ldrb r0, [r0, #0x11] + mov r3, #1 + lsl r5, r0, #1 + mov r0, #0xe + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4] + bl MOD11_02256854 + ldr r0, [r4] + add r1, r5, #0 + bl MOD11_0222FF7C + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r3, sp, #0xb0 + bl MOD11_02254404 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251CEC: + ldr r0, [r4, #8] + ldr r1, [r0, #4] + ldrb r0, [r1, #0x11] + lsl r6, r0, #1 + add r0, r1, r0 + add r0, #0x2c + ldrb r7, [r0] + ldr r0, [r4] + add r1, r6, #0 + bl MOD11_02231380 + mov r1, #0 + mov r2, #1 + add r5, r0, #0 + blx MI_CpuFill8 + ldr r0, [r4] + add r1, r6, #0 + bl MOD11_02230260 + str r0, [sp, #0x18] + ldr r0, [r4] + bl MOD11_0222FF74 + add r1, r0, #0 + ldr r0, [sp, #0x18] + bl MOD11_02257F6C + add r1, r5, #0 + add r1, #0x25 + strb r0, [r1] + ldr r0, [r4] + add r1, r6, #0 + add r2, r7, #0 + bl MOD11_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + ldr r1, [r4, #8] + mov r2, #0 + ldr r1, [r1, #4] + ldrh r1, [r1, #0x20] + sub r0, r0, r1 + str r0, [r5, #0x28] + add r0, r6, #0 + mov r1, #0xa3 + bl FUN_020671BC + str r0, [r5, #0x2c] + ldr r0, [r4, #8] + mov r1, #0x9f + ldr r0, [r0, #4] + mov r2, #0 + ldrh r0, [r0, #0x20] + str r0, [r5, #0x30] + add r0, r6, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02251D72 + add r0, r5, #0 + mov r1, #0 + add r0, #0x4a + strb r1, [r0] +_02251D72: + ldr r1, [r5, #0x30] + add r0, r5, #0 + bl MOD11_02257150 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251D86: + ldr r1, [r4, #8] + ldr r0, [r4] + ldr r1, [r1, #4] + ldrb r1, [r1, #0x11] + lsl r1, r1, #1 + bl MOD11_02231380 + add r5, r0, #0 + bl MOD11_02257184 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02251DA4 + b _02251FEA +_02251DA4: + mov r2, #1 + add r0, r5, #0 + mov r1, #0 + lsl r2, r2, #8 + bl MOD11_02256D70 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251DBC: + ldr r0, [r4] + bl MOD11_022300C4 + add r5, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r0, #4] + ldrb r0, [r1, #0x11] + ldrh r1, [r1, #0x20] + lsl r0, r0, #1 + cmp r1, #0 + add r1, sp, #0x1c + beq _02251DF4 + ldr r2, _02251FF0 ; =0x000004BE + strh r2, [r1, #0x2a] + mov r2, #0x11 + add r1, sp, #0x44 + strb r2, [r1, #1] + ldr r1, [r4, #8] + add r1, r1, r0 + ldrb r1, [r1, #0xc] + lsl r1, r1, #8 + orr r0, r1 + str r0, [sp, #0x48] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldrh r0, [r0, #0x20] + str r0, [sp, #0x4c] + b _02251E0A +_02251DF4: + ldr r2, _02251FF4 ; =0x000004E2 + strh r2, [r1, #0x2a] + mov r2, #2 + add r1, sp, #0x44 + strb r2, [r1, #1] + ldr r1, [r4, #8] + add r1, r1, r0 + ldrb r1, [r1, #0xc] + lsl r1, r1, #8 + orr r0, r1 + str r0, [sp, #0x48] +_02251E0A: + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #0x44 + bl MOD11_0223178C + strb r0, [r4, #0x11] + mov r0, #0x14 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251E2E: + ldr r0, [r4, #8] + mov r5, #0 + ldr r0, [r0, #4] + ldrb r0, [r0, #0x11] + lsl r7, r0, #1 + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_02231380 + str r0, [sp, #0x10] + ldr r0, [r4, #8] + add r1, r7, #0 + ldr r3, [r0, #4] + ldr r0, [r4] + ldrb r2, [r3, #0x11] + add r2, r3, r2 + add r2, #0x2c + ldrb r2, [r2] + bl MOD11_02230014 + mov r1, #0x9f + add r2, r5, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02251E6A + ldr r0, [sp, #0x10] + add r1, r5, #0 + add r0, #0x4a + strb r1, [r0] +_02251E6A: + ldr r0, [sp, #0x10] + mov r2, #1 + add r1, r0, #0 + ldr r1, [r1, #0x28] + lsl r2, r2, #8 + bl MOD11_02256D70 + mov r1, #2 + add r0, sp, #0x1c + strb r1, [r0, #5] + ldr r0, [r4, #8] + mov r1, #0xf + add r0, r0, r7 + ldrb r0, [r0, #0xc] + mov r2, #5 + lsl r0, r0, #8 + orr r0, r7 + str r0, [sp, #0x24] + ldr r0, [r4, #4] + ldrh r0, [r0, #0x1c] + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251E9E + mov r6, #0 + add r5, r5, #1 +_02251E9E: + ldr r0, [r4, #4] + mov r1, #0x10 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251EB2 + mov r6, #1 + add r5, r5, #1 +_02251EB2: + ldr r0, [r4, #4] + mov r1, #0x11 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251EC6 + mov r6, #2 + add r5, r5, #1 +_02251EC6: + ldr r0, [r4, #4] + mov r1, #0x12 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251EDA + mov r6, #3 + add r5, r5, #1 +_02251EDA: + ldr r0, [r4, #4] + mov r1, #0x13 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251EEE + mov r6, #4 + add r5, r5, #1 +_02251EEE: + ldr r0, [r4, #4] + mov r1, #0x14 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251F02 + mov r6, #5 + add r5, r5, #1 +_02251F02: + ldr r0, [r4, #4] + mov r1, #0x15 + ldrh r0, [r0, #0x1c] + mov r2, #5 + bl FUN_0206E7B8 + cmp r0, #0 + beq _02251F16 + mov r6, #6 + add r5, r5, #1 +_02251F16: + cmp r5, #1 + beq _02251F22 + ldr r1, _02251FF8 ; =0x000004CD + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F22: + cmp r6, #6 + bhi _02251F76 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02251F32: ; jump table + .short _02251F40 - _02251F32 - 2 ; case 0 + .short _02251F48 - _02251F32 - 2 ; case 1 + .short _02251F50 - _02251F32 - 2 ; case 2 + .short _02251F58 - _02251F32 - 2 ; case 3 + .short _02251F60 - _02251F32 - 2 ; case 4 + .short _02251F68 - _02251F32 - 2 ; case 5 + .short _02251F70 - _02251F32 - 2 ; case 6 +_02251F40: + ldr r1, _02251FFC ; =0x000004BA + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F48: + ldr r1, _02252000 ; =0x000004B7 + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F50: + ldr r1, _02252004 ; =0x000004B9 + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F58: + ldr r1, _02252008 ; =0x000004BB + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F60: + ldr r1, _0225200C ; =0x000004B8 + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F68: + ldr r1, _02252010 ; =0x000004BC + add r0, sp, #0x1c + strh r1, [r0, #6] + b _02251F76 +_02251F70: + ldr r1, _02252014 ; =0x000004BD + add r0, sp, #0x1c + strh r1, [r0, #6] +_02251F76: + ldr r0, [r4] + bl MOD11_022300C4 + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #0x20 + bl MOD11_0223178C + strb r0, [r4, #0x11] + mov r0, #0x14 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251FA2: + ldr r0, [r4] + bl MOD11_02230070 + bl FUN_02212384 + ldr r0, [r4] + bl MOD11_02230070 + bl FUN_022123A0 + cmp r0, #0 + bne _02251FEA + ldr r0, [r4] + bl MOD11_02230070 + bl FUN_022123B0 + ldrb r0, [r4, #0xe] + add sp, #0x1fc + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02251FD0: + ldrb r0, [r4, #0x11] + bl FUN_0201BD70 + cmp r0, #0 + bne _02251FEA + ldrb r0, [r4, #0x17] + sub r0, r0, #1 + strb r0, [r4, #0x17] + ldrb r0, [r4, #0x17] + cmp r0, #0 + bne _02251FEA + mov r0, #8 + strb r0, [r4, #0xe] +_02251FEA: + add sp, #0x1fc + add sp, #0x14 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02251FF0: .word 0x000004BE +_02251FF4: .word 0x000004E2 +_02251FF8: .word 0x000004CD +_02251FFC: .word 0x000004BA +_02252000: .word 0x000004B7 +_02252004: .word 0x000004B9 +_02252008: .word 0x000004BB +_0225200C: .word 0x000004B8 +_02252010: .word 0x000004BC +_02252014: .word 0x000004BD + + thumb_func_start MOD11_02252018 +MOD11_02252018: ; 0x02252018 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #1 + add r3, sp, #0 + strh r0, [r3] + add r4, r1, #0 + mov r2, sp + ldrb r1, [r4, #0xd] + ldrh r6, [r3] + ldr r0, [r4] + sub r2, r2, #4 + strh r6, [r2] + ldrh r3, [r3, #2] + strh r3, [r2, #2] + ldr r2, [r2] + bl MOD11_022558C4 + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02252070 +MOD11_02252070: ; 0x02252070 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [r4, #8] + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022520A8 +MOD11_022520A8: ; 0x022520A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_022300CC + ldrb r1, [r4, #0xa] + add r5, r0, #0 + cmp r1, #3 + bhi _02252144 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022520CA: ; jump table + .short _022520D2 - _022520CA - 2 ; case 0 + .short _0225213C - _022520CA - 2 ; case 1 + .short _022523B2 - _022520CA - 2 ; case 2 + .short _0225240E - _022520CA - 2 ; case 3 +_022520D2: + ldr r0, [r4] + mov r1, #0 + bl MOD11_0222FF6C + add r6, r0, #0 + mov r1, #0xff + bl FUN_02019620 + add r0, r6, #0 + bl FUN_02019548 + ldr r0, [r4] + bl MOD11_02230094 + bl MOD11_0225C76C + strb r0, [r4, #0x17] + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + mov r2, #3 + str r1, [sp] + mov r0, #7 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #5 + add r3, r1, #0 + add r0, r5, #0 + lsl r2, r2, #0xa + sub r3, #0xd + bl FUN_02003210 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0xa + add r3, r1, #0 + ldr r2, _0225246C ; =0x0000FFFF + add r0, r5, #0 + sub r3, #0x12 + bl FUN_02003210 + ldrb r0, [r4, #0xa] + add sp, #0x24 + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_0225213C: + bl FUN_020038E4 + cmp r0, #0 + beq _02252146 +_02252144: + b _02252468 +_02252146: + ldr r0, [r4] + bl MOD11_0222D7F8 + mov r0, #5 + mov r1, #0x38 + bl FUN_02016998 + str r0, [r4, #4] + mov r0, #5 + bl FUN_0206B8AC + ldr r1, [r4, #4] + str r0, [r1] + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #0xc + and r0, r1 + cmp r0, #0xc + beq _0225217A + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #0xcb + beq _0225217A + b _0225228E +_0225217A: + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02230260 + cmp r0, #2 + bne _02252196 + ldrb r0, [r4, #9] + str r0, [sp, #0x18] + ldr r0, [r4] + ldr r1, [sp, #0x18] + bl MOD11_022302BC + str r0, [sp, #0x14] + b _022521A4 +_02252196: + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_022302BC + str r0, [sp, #0x18] + ldrb r0, [r4, #9] + str r0, [sp, #0x14] +_022521A4: + mov r0, #5 + bl FUN_020669C0 + add r6, r0, #0 + mov r5, #0 +_022521AE: + ldr r0, [r4, #4] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_0206B900 + add r5, r5, #1 + cmp r5, #6 + blt _022521AE + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + ldr r1, [sp, #0x18] + mov r7, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _02252216 + ldr r0, [sp, #0x18] + mov r1, #6 + mul r1, r0 + add r5, r4, r1 + add r6, r7, #0 +_022521DC: + ldrb r2, [r5, #0x1c] + ldr r0, [r4] + ldr r1, [sp, #0x18] + bl MOD11_02230014 + str r0, [sp, #0x1c] + ldr r0, [r4, #4] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_0206B9B0 + add r1, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_02069B88 + ldr r0, [r4, #4] + ldrb r1, [r5, #0x1c] + add r0, r0, r6 + add r0, #0x2c + strb r1, [r0] + ldr r0, [r4] + ldr r1, [sp, #0x18] + add r5, r5, #1 + add r6, r6, #2 + add r7, r7, #1 + bl MOD11_0222FFC8 + cmp r7, r0 + blt _022521DC +_02252216: + ldr r0, [r4] + ldr r1, [sp, #0x14] + mov r6, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _02252272 + ldr r0, [sp, #0x14] + mov r1, #6 + mul r1, r0 + mov r0, #1 + add r5, r4, r1 + str r0, [sp, #0xc] + add r7, r6, #0 +_02252232: + ldrb r2, [r5, #0x1c] + ldr r0, [r4] + ldr r1, [sp, #0x14] + bl MOD11_02230014 + str r0, [sp, #0x20] + ldr r0, [r4, #4] + ldr r1, [sp, #0xc] + ldr r0, [r0] + bl FUN_0206B9B0 + add r1, r0, #0 + ldr r0, [sp, #0x20] + bl FUN_02069B88 + ldr r0, [r4, #4] + ldrb r1, [r5, #0x1c] + add r0, r0, r7 + add r0, #0x2d + strb r1, [r0] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x14] + add r0, r0, #2 + str r0, [sp, #0xc] + ldr r0, [r4] + add r5, r5, #1 + add r7, r7, #2 + add r6, r6, #1 + bl MOD11_0222FFC8 + cmp r6, r0 + blt _02252232 +_02252272: + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_02230260 + cmp r0, #4 + bne _02252286 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0, #0x11] + b _0225230E +_02252286: + ldr r0, [r4, #4] + mov r1, #0 + strb r1, [r0, #0x11] + b _0225230E +_0225228E: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _022522B0 + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + bne _022522B0 + ldrb r1, [r4, #9] + mov r0, #1 + add r7, r1, #0 + and r7, r0 + b _022522B4 +_022522B0: + ldrb r1, [r4, #9] + add r7, r1, #0 +_022522B4: + ldr r0, [r4] + bl MOD11_02230260 + cmp r0, #4 + bne _022522C2 + mov r1, #1 + b _022522C4 +_022522C2: + mov r1, #0 +_022522C4: + ldr r0, [r4, #4] + strb r1, [r0, #0x11] + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_0222FF88 + str r0, [sp, #0x10] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0225230E + mov r0, #6 + mul r0, r7 + add r6, r4, r0 +_022522E2: + ldrb r2, [r6, #0x1c] + ldr r0, [r4] + add r1, r7, #0 + bl MOD11_02230014 + add r1, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_0206B900 + ldr r0, [r4, #4] + ldrb r1, [r6, #0x1c] + add r0, r0, r5 + add r0, #0x2c + strb r1, [r0] + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _022522E2 +_0225230E: + ldr r1, [r4] + ldr r0, [r4, #4] + str r1, [r0, #8] + ldr r0, [r4, #4] + mov r1, #5 + str r1, [r0, #0xc] + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x36 + strb r1, [r0] + ldr r1, [r4, #0x10] + ldr r0, [r4, #4] + strh r1, [r0, #0x24] + ldrb r1, [r4, #0x16] + ldr r0, [r4, #4] + strb r1, [r0, #0x12] + ldr r0, [r4, #4] + ldrb r1, [r4, #0xb] + add r0, #0x35 + strb r1, [r0] + ldrh r1, [r4, #0x14] + ldr r0, [r4, #4] + strh r1, [r0, #0x22] + ldrb r1, [r4, #9] + ldr r0, [r4, #4] + str r1, [r0, #0x28] + ldr r0, [r4, #4] + ldrb r1, [r4, #0x17] + add r0, #0x32 + strb r1, [r0] + ldrb r0, [r4, #9] + bl FUN_0206A92C + ldrb r1, [r4, #0x18] + tst r0, r1 + bne _0225235E + ldrb r0, [r4, #9] + add r0, r4, r0 + ldrb r1, [r0, #0xc] + b _02252360 +_0225235E: + mov r1, #6 +_02252360: + ldr r0, [r4, #4] + strb r1, [r0, #0x14] + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + beq _02252378 + ldr r0, [r4, #4] + mov r1, #6 + strb r1, [r0, #0x15] + b _022523A2 +_02252378: + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_022302BC + bl FUN_0206A92C + ldrb r1, [r4, #0x18] + tst r0, r1 + bne _0225239C + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_022302BC + add r0, r4, r0 + ldrb r1, [r0, #0xc] + ldr r0, [r4, #4] + strb r1, [r0, #0x15] + b _022523A2 +_0225239C: + ldr r0, [r4, #4] + mov r1, #6 + strb r1, [r0, #0x15] +_022523A2: + ldr r0, [r4, #4] + bl FUN_02211E60 + ldrb r0, [r4, #0xa] + add sp, #0x24 + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_022523B2: + ldr r0, [r4, #4] + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _02252468 + ldr r0, [r4] + bl MOD11_0222D88C + ldr r0, [r4] + bl MOD11_02230094 + ldr r1, [r4, #4] + add r1, #0x32 + ldrb r1, [r1] + bl MOD11_0225C778 + mov r0, #7 + str r0, [sp] + mov r0, #0 + mov r1, #5 + str r0, [sp, #4] + mov r2, #3 + add r3, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + lsl r2, r2, #0xa + sub r3, #0xd + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + mov r1, #0xa + str r0, [sp, #4] + add r3, r1, #0 + str r0, [sp, #8] + ldr r2, _0225246C ; =0x0000FFFF + add r0, r5, #0 + sub r3, #0x12 + bl FUN_02003210 + ldrb r0, [r4, #0xa] + add sp, #0x24 + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r4, r5, r6, r7, pc} +_0225240E: + bl FUN_020038E4 + cmp r0, #0 + bne _02252468 + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #0 + bl FUN_020143A8 + ldr r3, [r4, #4] + ldr r0, [r4] + ldrb r2, [r3, #0x11] + cmp r2, #6 + bne _02252436 + ldrb r1, [r4, #9] + mov r2, #0xff + bl MOD11_02255964 + b _02252444 +_02252436: + add r2, r3, r2 + add r2, #0x2c + ldrb r2, [r2] + ldrb r1, [r4, #9] + add r2, r2, #1 + bl MOD11_02255964 +_02252444: + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02252468: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0225246C: .word 0x0000FFFF + + thumb_func_start MOD11_02252470 +MOD11_02252470: ; 0x02252470 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp] + ldr r0, [r5] + bl MOD11_0222FF74 + mov r1, #0x10 + ldrb r6, [r5, #9] + tst r1, r0 + bne _0225248C + mov r1, #8 + tst r0, r1 + beq _02252490 +_0225248C: + str r6, [sp, #4] + b _0225249A +_02252490: + ldr r0, [r5] + add r1, r6, #0 + bl MOD11_022302BC + str r0, [sp, #4] +_0225249A: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_021F4A30 + add r4, r0, #0 + cmp r4, #6 + bne _022524FE + ldr r0, [r5] + add r1, r6, #0 + bl FUN_021F4698 + add r4, r0, #0 + cmp r4, #6 + bne _022524FE + ldrb r1, [r5, #9] + ldr r0, [r5] + bl MOD11_0222FF88 + str r0, [sp, #8] + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _022524FE + ldr r0, [sp, #4] + add r7, r5, r6 + add r6, r5, r0 +_022524D0: + ldrb r1, [r5, #9] + ldr r0, [r5] + add r2, r4, #0 + bl MOD11_02230014 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022524F2 + ldrb r0, [r7, #0xc] + cmp r4, r0 + beq _022524F2 + ldrb r0, [r6, #0xc] + cmp r4, r0 + bne _022524FE +_022524F2: + ldr r0, [sp, #8] + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _022524D0 +_022524FE: + ldrb r1, [r5, #9] + ldr r0, [r5] + add r2, r4, #1 + bl MOD11_02255964 + ldrb r1, [r5, #9] + ldrb r2, [r5, #8] + ldr r0, [r5] + bl MOD11_022567B8 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [sp] + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02252524 +MOD11_02252524: ; 0x02252524 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #9] + add r5, r0, #0 + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02252544 +MOD11_02252544: ; 0x02252544 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_0222FF68 + ldr r0, [r4] + bl MOD11_02230094 + add r5, r0, #0 + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_0222FF7C + str r0, [sp] + ldrb r1, [r4, #0xd] + ldr r0, [r4] + bl MOD11_022302BC + add r1, r0, #0 + ldrb r0, [r4, #0xd] + cmp r1, r0 + beq _0225257E + ldr r0, [r4] + bl MOD11_02231380 + add r6, r0, #0 + b _02252580 +_0225257E: + mov r6, #0 +_02252580: + ldrb r0, [r4, #0xe] + cmp r0, #4 + bhi _02252600 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02252592: ; jump table + .short _0225259C - _02252592 - 2 ; case 0 + .short _022525EC - _02252592 - 2 ; case 1 + .short _0225267E - _02252592 - 2 ; case 2 + .short _0225269C - _02252592 - 2 ; case 3 + .short _022526E0 - _02252592 - 2 ; case 4 +_0225259C: + add r0, r5, #0 + bl MOD11_02258F5C + cmp r0, #0 + beq _02252600 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022525E4 + ldr r0, [r4] + bl MOD11_022300C4 + add r5, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #5 + add r0, sp, #4 + bne _022525C6 + mov r1, #0x82 + strb r1, [r0, #5] + ldr r0, [r4, #0x14] + str r0, [sp, #0xc] + b _022525CA +_022525C6: + mov r1, #0 + strb r1, [r0, #5] +_022525CA: + ldr r1, [r4, #0x10] + add r0, sp, #4 + strh r1, [r0, #6] + ldr r0, [r4] + bl MOD11_02230E54 + add r3, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + add r2, sp, #8 + bl MOD11_0223178C + strh r0, [r4, #0x1a] +_022525E4: + mov r0, #1 + add sp, #0x2c + strb r0, [r4, #0xe] + pop {r4, r5, r6, r7, pc} +_022525EC: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02252602 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02252602 +_02252600: + b _0225270A +_02252602: + add r0, r5, #0 + bl MOD11_02258E30 + ldrh r1, [r4, #0x18] + add r0, sp, #4 + strh r1, [r0] + ldrb r0, [r4, #0xf] + cmp r0, #5 + bhi _02252672 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02252620: ; jump table + .short _0225262C - _02252620 - 2 ; case 0 + .short _0225263A - _02252620 - 2 ; case 1 + .short _02252648 - _02252620 - 2 ; case 2 + .short _02252656 - _02252620 - 2 ; case 3 + .short _02252664 - _02252620 - 2 ; case 4 + .short _0225262C - _02252620 - 2 ; case 5 +_0225262C: + add r0, r5, #0 + mov r1, #0xd + mov r2, #0 + add r3, sp, #4 + bl MOD11_02258820 + b _02252676 +_0225263A: + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + add r3, sp, #4 + bl MOD11_02258820 + b _02252676 +_02252648: + add r0, r5, #0 + mov r1, #0xf + mov r2, #0 + add r3, sp, #4 + bl MOD11_02258820 + b _02252676 +_02252656: + add r0, r5, #0 + mov r1, #0x10 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02258820 + b _02252676 +_02252664: + add r0, r5, #0 + mov r1, #0x11 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02258820 + b _02252676 +_02252672: + bl ErrorHandling +_02252676: + mov r0, #2 + add sp, #0x2c + strb r0, [r4, #0xe] + pop {r4, r5, r6, r7, pc} +_0225267E: + add r0, r5, #0 + bl MOD11_02258E74 + mov r1, #0 + mvn r1, r1 + str r0, [r4, #8] + cmp r0, r1 + beq _0225270A + ldr r0, _02252710 ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + add sp, #0x2c + strb r0, [r4, #0xe] + pop {r4, r5, r6, r7, pc} +_0225269C: + add r0, r5, #0 + bl MOD11_02258F5C + cmp r0, #1 + bne _0225270A + ldr r0, [r4, #4] + bl MOD11_02257238 + ldr r0, [sp] + bl MOD11_0225468C + add r0, r6, #0 + bl MOD11_02258184 + add r0, r5, #0 + bl MOD11_02258E30 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD11_02258820 + ldr r0, [r4, #8] + cmp r0, #1 + bne _022526D8 + add r0, r5, #0 + mov r1, #0 + bl MOD11_0225B77C +_022526D8: + mov r0, #4 + add sp, #0x2c + strb r0, [r4, #0xe] + pop {r4, r5, r6, r7, pc} +_022526E0: + add r0, r5, #0 + bl MOD11_0225B780 + cmp r0, #1 + bne _0225270A + ldrb r1, [r4, #0xd] + ldr r0, [r4] + ldr r2, [r4, #8] + bl MOD11_02255528 + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 +_0225270A: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_02252710: .word 0x000005DD + + thumb_func_start MOD11_02252714 +MOD11_02252714: ; 0x02252714 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02252734 +MOD11_02252734: ; 0x02252734 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02252754 +MOD11_02252754: ; 0x02252754 + push {r3, r4, r5, lr} + sub sp, #0x1fc + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x6a + ldrb r0, [r0] + cmp r0, #0xa + bls _0225276A + b _022529B8 +_0225276A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02252776: ; jump table + .short _0225278C - _02252776 - 2 ; case 0 + .short _02252996 - _02252776 - 2 ; case 1 + .short _022527E6 - _02252776 - 2 ; case 2 + .short _02252996 - _02252776 - 2 ; case 3 + .short _02252842 - _02252776 - 2 ; case 4 + .short _02252996 - _02252776 - 2 ; case 5 + .short _02252890 - _02252776 - 2 ; case 6 + .short _02252996 - _02252776 - 2 ; case 7 + .short _02252918 - _02252776 - 2 ; case 8 + .short _02252996 - _02252776 - 2 ; case 9 + .short _02252974 - _02252776 - 2 ; case 10 +_0225278C: + ldrh r0, [r4, #0x1e] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _022527DA + ldr r0, [r4, #0x5c] + cmp r0, #0 + bne _022527DA + ldr r0, [r4, #8] + mov r1, #6 + bl FUN_0200782C + cmp r0, #0 + bne _022527DA + add r0, r4, #0 + add r0, #0x69 + ldrb r1, [r0] + mov r0, #0xf + add r2, sp, #0x1b8 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + add r3, sp, #0x1b8 + bl MOD11_02254404 + add sp, #0x1fc + mov r0, #1 + add r4, #0x6a + add sp, #0x14 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022527DA: + add sp, #0x1fc + mov r0, #4 + add r4, #0x6a + add sp, #0x14 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022527E6: + add r3, r4, #0 + add r3, #0x69 + ldrb r3, [r3] + ldr r0, [r4] + add r1, #0x10 + add r2, sp, #0x168 + bl MOD11_0225452C + add r0, sp, #0x168 + mov r1, #5 + bl MOD08_0222A494 + add r0, r4, #0 + add r0, #0x69 + ldrb r1, [r0] + mov r0, #0x10 + add r2, sp, #0x110 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + add r3, sp, #0x110 + bl MOD11_02254404 + mov r0, #0x1a + add sp, #0x1fc + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + add r0, #0x6a + ldrb r0, [r0] + add r4, #0x6a + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252842: + ldr r0, [r4] + mov r1, #2 + bl MOD11_02231484 + add r0, r4, #0 + add r0, #0x6b + ldrb r0, [r0] + cmp r0, #0 + beq _0225285A + ldr r0, [r4] + bl MOD11_02231410 +_0225285A: + add r0, r4, #0 + add r0, #0x6c + ldrb r0, [r0] + cmp r0, #0 + beq _02252870 + ldr r0, [r4] + bl MOD11_02230068 + mov r1, #1 + bl FUN_02008284 +_02252870: + add r3, r4, #0 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + add r3, #0x10 + bl MOD11_02254404 + add r0, r4, #0 + add r0, #0x6a + ldrb r0, [r0] + add sp, #0x1fc + add r4, #0x6a + add r0, r0, #1 + add sp, #0x14 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252890: + ldr r0, [r4] + mov r1, #0 + bl MOD11_02231484 + add r0, r4, #0 + add r0, #0x6b + ldrb r0, [r0] + cmp r0, #0 + beq _022528A8 + ldr r0, [r4] + bl MOD11_022313E0 +_022528A8: + add r0, r4, #0 + add r0, #0x6c + ldrb r0, [r0] + cmp r0, #0 + beq _022528BE + ldr r0, [r4] + bl MOD11_02230068 + mov r1, #1 + bl FUN_02008290 +_022528BE: + ldrh r0, [r4, #0x1e] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0225290C + ldr r0, [r4, #0x5c] + cmp r0, #0 + bne _0225290C + ldr r0, [r4, #8] + mov r1, #6 + bl FUN_0200782C + cmp r0, #0 + bne _0225290C + add r0, r4, #0 + add r0, #0x69 + ldrb r1, [r0] + mov r0, #0xf + add r2, sp, #0xb8 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + add r3, sp, #0xb8 + bl MOD11_02254404 + add sp, #0x1fc + mov r0, #7 + add r4, #0x6a + add sp, #0x14 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0225290C: + add sp, #0x1fc + mov r0, #0xa + add r4, #0x6a + add sp, #0x14 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252918: + add r3, r4, #0 + add r3, #0x69 + ldrb r3, [r3] + ldr r0, [r4] + add r1, #0x10 + add r2, sp, #0x68 + bl MOD11_0225452C + add r0, sp, #0x68 + mov r1, #5 + bl MOD08_0222A568 + add r0, r4, #0 + add r0, #0x69 + ldrb r1, [r0] + mov r0, #0x10 + add r2, sp, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + add r3, sp, #0x10 + bl MOD11_02254404 + mov r0, #0x1a + add sp, #0x1fc + ldr r1, [r4, #4] + mov r2, #1 + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + add r0, #0x6a + ldrb r0, [r0] + add r4, #0x6a + add sp, #0x14 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252974: + add r2, r4, #0 + add r1, #0x69 + add r2, #0x68 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x1fc + add sp, #0x14 + pop {r3, r4, r5, pc} +_02252996: + ldr r0, [r4, #0xc] + bl FUN_02212384 + ldr r0, [r4, #0xc] + bl FUN_022123A0 + cmp r0, #0 + bne _022529B8 + ldr r0, [r4, #0xc] + bl FUN_022123B0 + add r0, r4, #0 + add r0, #0x6a + ldrb r0, [r0] + add r4, #0x6a + add r0, r0, #1 + strb r0, [r4] +_022529B8: + add sp, #0x1fc + add sp, #0x14 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022529C0 +MOD11_022529C0: ; 0x022529C0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #9] + cmp r0, #6 + bhs _022529FA + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _022529F4 + mov r0, #2 + strb r0, [r4, #0xa] + ldrb r0, [r4, #9] + mov r1, #6 + add r0, r0, #1 + strb r0, [r4, #9] + ldr r0, [r4, #4] + bl FUN_0200782C + add r3, r0, #0 + mov r2, #1 + ldr r0, [r4, #4] + mov r1, #6 + eor r2, r3 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_022529F4: + sub r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_022529FA: + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldrb r1, [r4, #8] + ldr r0, [r4] + mov r2, #0x17 + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02252A1C +MOD11_02252A1C: ; 0x02252A1C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _02252A2E + cmp r0, #1 + beq _02252A3C + b _02252A52 +_02252A2E: + ldr r1, [r4, #0x30] + add r0, r4, #0 + bl MOD11_02257150 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_02252A3C: + add r0, r4, #0 + bl MOD11_02257184 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02252A6C + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252A52: + add r2, r4, #0 + add r1, #0x24 + add r2, #0x4c + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4, #0xc] + bl MOD11_022567B8 + mov r0, #0 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0200CAB4 +_02252A6C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02252A70 +MOD11_02252A70: ; 0x02252A70 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _02252A86 + cmp r0, #1 + beq _02252AA2 + cmp r0, #2 + beq _02252AE8 + b _02252B0E +_02252A86: + add r0, r4, #0 + mov r1, #0 + add r0, #0x4e + strb r1, [r0] + ldr r0, _02252B2C ; =0x0000070B + bl FUN_020054C8 + ldr r1, [r4, #0x40] + add r0, r4, #0 + bl MOD11_022571B8 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_02252AA2: + add r0, r4, #0 + add r0, #0x4e + ldrb r0, [r0] + cmp r0, #8 + bhs _02252ABA + add r0, r4, #0 + add r0, #0x4e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x4e + strb r1, [r0] +_02252ABA: + add r0, r4, #0 + bl MOD11_022571EC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02252B28 + add r0, r4, #0 + add r0, #0x4e + ldrb r0, [r0] + cmp r0, #8 + blo _02252AE0 + ldr r0, _02252B2C ; =0x0000070B + mov r1, #0 + bl FUN_020054F0 + mov r0, #0x64 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252AE0: + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252AE8: + add r0, r4, #0 + add r0, #0x4e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x4e + strb r1, [r0] + add r0, r4, #0 + add r0, #0x4e + ldrb r0, [r0] + cmp r0, #8 + blo _02252B28 + ldr r0, _02252B2C ; =0x0000070B + mov r1, #0 + bl FUN_020054F0 + mov r0, #0x64 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02252B0E: + add r2, r4, #0 + add r1, #0x24 + add r2, #0x4c + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4, #0xc] + bl MOD11_022567B8 + mov r0, #0 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0200CAB4 +_02252B28: + pop {r3, r4, r5, pc} + nop +_02252B2C: .word 0x0000070B + + thumb_func_start MOD11_02252B30 +MOD11_02252B30: ; 0x02252B30 + push {r4, r5, r6, lr} + sub sp, #0x110 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r1, r4, #0 + add r1, #0x66 + ldrb r1, [r1] + add r5, r0, #0 + cmp r1, #0xa + bls _02252B4C + b _02252DAA +_02252B4C: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02252B58: ; jump table + .short _02252B6E - _02252B58 - 2 ; case 0 + .short _02252C16 - _02252B58 - 2 ; case 1 + .short _02252BBA - _02252B58 - 2 ; case 2 + .short _02252C16 - _02252B58 - 2 ; case 3 + .short _02252C3A - _02252B58 - 2 ; case 4 + .short _02252C82 - _02252B58 - 2 ; case 5 + .short _02252C9C - _02252B58 - 2 ; case 6 + .short _02252CD8 - _02252B58 - 2 ; case 7 + .short _02252D04 - _02252B58 - 2 ; case 8 + .short _02252D44 - _02252B58 - 2 ; case 9 + .short _02252D8C - _02252B58 - 2 ; case 10 +_02252B6E: + add r0, r4, #0 + add r0, #0x70 + ldrh r0, [r0] + cmp r0, #0 + beq _02252BB0 + add r0, r4, #0 + add r0, #0x65 + ldrb r1, [r0] + mov r0, #0xf + add r2, sp, #0xb8 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0xb8 + bl MOD11_02254404 + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r4, #0x66 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252BB0: + mov r0, #4 + add r4, #0x66 + add sp, #0x110 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252BBA: + add r3, r4, #0 + add r3, #0x65 + ldrb r3, [r3] + add r1, r4, #0 + ldr r0, [r4] + add r1, #0xc + add r2, sp, #0x68 + bl MOD11_0225452C + add r0, sp, #0x68 + mov r1, #5 + bl MOD08_0222A494 + add r0, r4, #0 + add r0, #0x65 + ldrb r1, [r0] + mov r0, #0x10 + add r2, sp, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x10 + bl MOD11_02254404 + mov r0, #0x1a + ldr r1, [r4, #4] + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r4, #0x66 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252C16: + bl FUN_02212384 + add r0, r5, #0 + bl FUN_022123A0 + cmp r0, #0 + bne _02252C8A + add r0, r5, #0 + bl FUN_022123B0 + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r4, #0x66 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252C3A: + add r0, r4, #0 + add r0, #0x67 + ldrb r0, [r0] + cmp r0, #2 + bne _02252C48 + mov r5, #0x75 + b _02252C4C +_02252C48: + mov r5, #0x74 + mvn r5, r5 +_02252C4C: + add r1, r4, #0 + add r1, #0x65 + ldrb r1, [r1] + ldr r0, [r4] + bl MOD11_02230E88 + mov r1, #0x7f + str r1, [sp] + add r1, r4, #0 + add r1, #0x72 + ldrh r1, [r1] + add r2, r4, #0 + add r2, #0x68 + str r1, [sp, #4] + mov r1, #5 + str r1, [sp, #8] + ldrh r2, [r2] + add r3, r5, #0 + bl FUN_02069FB0 + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x66 + strb r1, [r0] +_02252C82: + bl FUN_02005670 + cmp r0, #0 + beq _02252C8C +_02252C8A: + b _02252DAA +_02252C8C: + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r4, #0x66 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252C9C: + add r0, r4, #0 + add r0, #0x67 + ldrb r0, [r0] + cmp r0, #2 + ldr r0, _02252DB0 ; =0x00000703 + bne _02252CB0 + mov r1, #0x75 + bl FUN_020054A8 + b _02252CB8 +_02252CB0: + mov r1, #0x74 + mvn r1, r1 + bl FUN_020054A8 +_02252CB8: + ldr r0, [r4, #8] + mov r1, #0x29 + bl FUN_0200782C + cmp r0, #0 + ble _02252CCE + mov r0, #7 + add r4, #0x66 + add sp, #0x110 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252CCE: + mov r0, #8 + add r4, #0x66 + add sp, #0x110 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252CD8: + ldr r0, [r4, #8] + mov r1, #0x29 + bl FUN_0200782C + add r5, r0, #0 + sub r5, #8 + bpl _02252CE8 + mov r5, #0 +_02252CE8: + ldr r0, [r4, #8] + mov r1, #0x29 + add r2, r5, #0 + bl FUN_02007558 + cmp r5, #0 + bne _02252DAA + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x66 + strb r1, [r0] +_02252D04: + ldr r0, [r4, #0x6c] + add r1, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r2, r4, #0 + add r3, r4, #0 + add r0, #0x68 + add r1, #0x6a + add r2, #0x67 + add r3, #0x6b + ldrh r0, [r0] + ldrb r1, [r1] + ldrb r2, [r2] + ldrb r3, [r3] + bl FUN_02068E88 + mov r3, #0x50 + sub r0, r3, r0 + str r0, [sp] + mov r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_02007E40 + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r4, #0x66 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252D44: + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200782C + add r2, r0, #0 + ldr r0, [r4, #8] + mov r1, #1 + add r2, #8 + bl FUN_02007558 + ldr r0, [r4, #8] + mov r1, #0x12 + bl FUN_0200782C + add r5, r0, #0 + sub r5, #8 + bpl _02252D68 + mov r5, #0 +_02252D68: + ldr r0, [r4, #8] + mov r1, #0x12 + add r2, r5, #0 + bl FUN_02007558 + cmp r5, #0 + bne _02252DAA + ldr r0, [r4, #8] + bl FUN_02007534 + add r0, r4, #0 + add r0, #0x66 + ldrb r0, [r0] + add r4, #0x66 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252D8C: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x65 + add r2, #0x64 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02252DAA: + add sp, #0x110 + pop {r4, r5, r6, pc} + nop +_02252DB0: .word 0x00000703 + + thumb_func_start MOD11_02252DB4 +MOD11_02252DB4: ; 0x02252DB4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_022300CC + add r4, r0, #0 + ldr r0, [r5] + bl MOD11_02230068 + add r7, r0, #0 + ldrb r0, [r5, #6] + cmp r0, #0 + beq _02252DDE + cmp r0, #1 + beq _02252E1C + cmp r0, #2 + beq _02252E30 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02252DDE: + ldr r0, [r5] + bl MOD11_02230288 + mov r1, #1 + bl FUN_020143A8 + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r2, _02252E4C ; =0x0000FFFF + add r0, r4, #0 + mov r1, #0xf + mov r3, #1 + bl FUN_02003210 + mov r1, #0 + add r0, r7, #0 + mov r2, #0x10 + add r3, r1, #0 + str r1, [sp] + bl FUN_02007E98 + mov r0, #0 + mov r1, #0x10 + bl FUN_020053CC + ldrb r0, [r5, #6] + add r0, r0, #1 + strb r0, [r5, #6] +_02252E1C: + add r0, r4, #0 + bl FUN_020038E4 + cmp r0, #0 + bne _02252E46 + ldrb r0, [r5, #6] + add sp, #0xc + add r0, r0, #1 + strb r0, [r5, #6] + pop {r4, r5, r6, r7, pc} +_02252E30: + ldrb r1, [r5, #5] + ldrb r2, [r5, #4] + ldr r0, [r5] + bl MOD11_022567B8 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02252E46: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02252E4C: .word 0x0000FFFF + + thumb_func_start MOD11_02252E50 +MOD11_02252E50: ; 0x02252E50 + push {r4, r5, r6, lr} + sub sp, #0x110 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02230070 + add r1, r4, #0 + add r1, #0x62 + ldrb r1, [r1] + add r5, r0, #0 + cmp r1, #4 + bls _02252E6C + b _02252F98 +_02252E6C: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02252E78: ; jump table + .short _02252E82 - _02252E78 - 2 ; case 0 + .short _02252EC4 - _02252E78 - 2 ; case 1 + .short _02252F74 - _02252E78 - 2 ; case 2 + .short _02252F18 - _02252E78 - 2 ; case 3 + .short _02252F74 - _02252E78 - 2 ; case 4 +_02252E82: + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _02252EBA + add r2, r4, #0 + add r2, #0x63 + ldrb r2, [r2] + mov r1, #6 + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x63 + ldrb r0, [r0] + cmp r0, #1 + bne _02252EAA + mov r0, #0xff + add r4, #0x62 + add sp, #0x110 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252EAA: + add r0, r4, #0 + add r0, #0x62 + ldrb r0, [r0] + add r4, #0x62 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252EBA: + mov r0, #0xff + add r4, #0x62 + add sp, #0x110 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252EC4: + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _02252F0E + mov r0, #0x1a + ldr r1, [r4, #4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02252F0E + add r0, r4, #0 + add r0, #0x61 + ldrb r1, [r0] + mov r0, #0xf + add r2, sp, #0xb8 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0xb8 + bl MOD11_02254404 + add r0, r4, #0 + add r0, #0x62 + ldrb r0, [r0] + add r4, #0x62 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252F0E: + mov r0, #0xff + add r4, #0x62 + add sp, #0x110 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252F18: + add r3, r4, #0 + add r3, #0x61 + ldrb r3, [r3] + add r1, r4, #0 + ldr r0, [r4] + add r1, #8 + add r2, sp, #0x68 + bl MOD11_0225452C + add r0, sp, #0x68 + mov r1, #5 + bl MOD08_0222A568 + add r0, r4, #0 + add r0, #0x61 + ldrb r1, [r0] + mov r0, #0x10 + add r2, sp, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r0, [r4] + mov r3, #1 + bl MOD11_02256854 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, r5, #0 + add r3, sp, #0x10 + bl MOD11_02254404 + mov r0, #0x1a + ldr r1, [r4, #4] + mov r2, #1 + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + add r0, #0x62 + ldrb r0, [r0] + add r4, #0x62 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252F74: + bl FUN_02212384 + add r0, r5, #0 + bl FUN_022123A0 + cmp r0, #0 + bne _02252FB6 + add r0, r5, #0 + bl FUN_022123B0 + add r0, r4, #0 + add r0, #0x62 + ldrb r0, [r0] + add r4, #0x62 + add sp, #0x110 + add r0, r0, #1 + strb r0, [r4] + pop {r4, r5, r6, pc} +_02252F98: + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x61 + add r2, #0x60 + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02252FB6: + add sp, #0x110 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02252FBC +MOD11_02252FBC: ; 0x02252FBC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _02252FCE + cmp r0, #1 + beq _02252FE4 + pop {r3, r4, r5, pc} +_02252FCE: + ldr r0, [r4, #4] + add r1, #0xb + bl MOD11_0225805C + ldr r0, _02253004 ; =0x0000070C + bl FUN_020054C8 + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_02252FE4: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _02253000 + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02253000: + pop {r3, r4, r5, pc} + nop +_02253004: .word 0x0000070C + + thumb_func_start MOD11_02253008 +MOD11_02253008: ; 0x02253008 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_022312C0 + cmp r0, #0 + beq _0225302A + ldr r0, [r4] + bl MOD11_022312C0 + bl FUN_0200DBFC + ldr r0, [r4] + mov r1, #0 + bl MOD11_022312C8 +_0225302A: + ldrb r0, [r4, #6] + bl FUN_0201BD70 + cmp r0, #0 + bne _0225304A + ldrb r1, [r4, #5] + ldrb r2, [r4, #4] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0225304A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0225304C +MOD11_0225304C: ; 0x0225304C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0225305E + cmp r0, #1 + beq _02253074 + pop {r3, r4, r5, pc} +_0225305E: + ldrb r0, [r4, #6] + bl FUN_0201BD70 + cmp r0, #0 + bne _0225309E + ldrb r0, [r4, #7] + add r0, r0, #1 + strb r0, [r4, #7] + mov r0, #0 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_02253074: + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] + ldrb r0, [r4, #8] + cmp r0, #0x28 + bne _0225309E + ldrb r1, [r4, #5] + ldr r0, [r4] + bl MOD11_02256004 + ldrb r1, [r4, #5] + ldrb r2, [r4, #4] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0225309E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022530A0 +MOD11_022530A0: ; 0x022530A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + str r0, [sp, #0xc] + ldr r0, [r4] + bl MOD11_0222FF68 + ldr r0, [r4] + bl MOD11_022300CC + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_02230294 + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_022302A8 + lsl r1, r0, #2 + ldr r0, _022533D8 ; =0x0225E86C + ldr r6, [r0, r1] + ldrb r0, [r4, #0x15] + add r0, r0, #1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x14] + cmp r0, #6 + bhi _02253102 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022530E2: ; jump table + .short _022530F0 - _022530E2 - 2 ; case 0 + .short _022530F8 - _022530E2 - 2 ; case 1 + .short _0225314A - _022530E2 - 2 ; case 2 + .short _022532AC - _022530E2 - 2 ; case 3 + .short _022532C8 - _022530E2 - 2 ; case 4 + .short _022532E4 - _022530E2 - 2 ; case 5 + .short _022532F6 - _022530E2 - 2 ; case 6 +_022530F0: + add r0, r0, #1 + add sp, #0x18 + strb r0, [r4, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_022530F8: + add r0, r5, #0 + bl FUN_020038E4 + cmp r0, #0 + beq _02253104 +_02253102: + b _022533D4 +_02253104: + mov r0, #5 + mov r1, #0 + bl MOD08_0222A0D4 + str r0, [r4, #4] + ldr r0, _022533DC ; =0x0225E820 + add r1, sp, #0x10 + ldrb r5, [r0, r7] + mov r0, #1 + str r0, [sp, #0x14] + str r5, [sp, #0x10] + ldr r0, [r4, #4] + bl MOD08_0222A110 + str r0, [r4, #8] + add r0, r5, #1 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + add r1, sp, #0x10 + bl MOD08_0222A110 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + bl MOD08_0222A1DC + ldr r0, _022533E0 ; =0x0000084F + bl FUN_020054C8 + ldrb r0, [r4, #0x14] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_0225314A: + ldrb r0, [r4, #0x15] + cmp r0, #0xa + bne _02253180 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _022533E4 ; =0x0000F3FF + add r0, r5, #0 + mov r1, #1 + bl FUN_02003210 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _022533E8 ; =0x00003FFF + add r0, r5, #0 + mov r1, #4 + bl FUN_02003210 +_02253180: + ldrb r0, [r4, #0x15] + cmp r0, #0x14 + bne _0225318C + ldr r0, [r4, #0xc] + bl MOD08_0222A1DC +_0225318C: + ldrb r0, [r4, #0x15] + cmp r0, #0x17 + bne _0225319A + mov r0, #0x85 + lsl r0, r0, #4 + bl FUN_020054C8 +_0225319A: + ldrb r0, [r4, #0x15] + cmp r0, #0x1c + bne _02253286 + add r0, r5, #0 + mov r1, #0 + bl FUN_020031FC + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_02231244 + add r1, r7, #0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #0x4a + bne _022531DC + add r0, r5, #0 + mov r1, #2 + bl FUN_020031FC + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r7, #0 + mov r2, #0xa0 + blx MIi_CpuCopy16 + b _0225323E +_022531DC: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02253200 + add r0, r5, #0 + bl FUN_020031FC + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r7, #0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + b _0225323E +_02253200: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + beq _02253226 + add r0, r5, #0 + mov r1, #2 + bl FUN_020031FC + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r7, #0 + mov r2, #0xa0 + blx MIi_CpuCopy16 + b _0225323E +_02253226: + add r0, r5, #0 + mov r1, #2 + bl FUN_020031FC + add r7, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r7, #0 + mov r2, #0x80 + blx MIi_CpuCopy16 +_0225323E: + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + lsl r0, r6, #0x10 + str r3, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _022533E4 ; =0x0000F3FF + add r0, r5, #0 + mov r1, #1 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + lsl r0, r6, #0x10 + str r3, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _022533E8 ; =0x00003FFF + add r0, r5, #0 + mov r1, #4 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + lsl r0, r6, #0x10 + str r3, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _022533EC ; =0x0000FFFF + add r0, r5, #0 + mov r1, #0xa + bl FUN_02003210 +_02253286: + ldrb r0, [r4, #0x15] + cmp r0, #0x32 + bne _022532B6 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + mov r2, #3 + str r3, [sp, #8] + add r0, r5, #0 + mov r1, #1 + lsl r2, r2, #0xa + bl FUN_02003210 + ldrb r0, [r4, #0x14] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_022532AC: + ldr r0, [r4, #0xc] + bl MOD08_0222A204 + cmp r0, #0 + beq _022532B8 +_022532B6: + b _022533D4 +_022532B8: + ldr r0, [r4, #4] + bl MOD08_0222A14C + ldrb r0, [r4, #0x14] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_022532C8: + ldr r0, [r4] + bl MOD11_02230288 + mov r1, #0 + bl FUN_020143A8 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0xc] + bl FUN_0200CAB4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_022532E4: + ldr r0, [r4, #4] + bl MOD08_0222A170 + ldr r0, [r4, #4] + bl MOD08_0222A14C + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_022532F6: + add r0, r5, #0 + mov r1, #0 + bl FUN_020031FC + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02231244 + add r1, r6, #0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + ldr r0, [r4] + bl MOD11_0222FF74 + cmp r0, #0x4a + bne _02253332 + add r0, r5, #0 + mov r1, #2 + bl FUN_020031FC + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r6, #0 + mov r2, #0xa0 + blx MIi_CpuCopy16 + b _02253394 +_02253332: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + beq _02253356 + add r0, r5, #0 + bl FUN_020031FC + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r6, #0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + b _02253394 +_02253356: + ldr r0, [r4] + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + beq _0225337C + add r0, r5, #0 + mov r1, #2 + bl FUN_020031FC + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r6, #0 + mov r2, #0xa0 + blx MIi_CpuCopy16 + b _02253394 +_0225337C: + add r0, r5, #0 + mov r1, #2 + bl FUN_020031FC + add r6, r0, #0 + ldr r0, [r4] + bl MOD11_02231250 + add r1, r6, #0 + mov r2, #0x80 + blx MIi_CpuCopy16 +_02253394: + mov r3, #0 + str r3, [sp] + ldr r0, _022533F0 ; =0x00007FFF + str r3, [sp, #4] + str r0, [sp, #8] + ldr r2, _022533EC ; =0x0000FFFF + add r0, r5, #0 + mov r1, #1 + bl FUN_02003210 + mov r3, #0 + str r3, [sp] + ldr r2, _022533EC ; =0x0000FFFF + str r3, [sp, #4] + str r2, [sp, #8] + add r0, r5, #0 + mov r1, #4 + lsr r2, r2, #2 + bl FUN_02003210 + mov r3, #0 + str r3, [sp] + ldr r0, _022533F0 ; =0x00007FFF + str r3, [sp, #4] + str r0, [sp, #8] + ldr r2, _022533EC ; =0x0000FFFF + add r0, r5, #0 + mov r1, #0xa + bl FUN_02003210 + mov r0, #4 + strb r0, [r4, #0x14] +_022533D4: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022533D8: .word 0x0225E86C +_022533DC: .word 0x0225E820 +_022533E0: .word 0x0000084F +_022533E4: .word 0x0000F3FF +_022533E8: .word 0x00003FFF +_022533EC: .word 0x0000FFFF +_022533F0: .word 0x00007FFF + + thumb_func_start MOD11_022533F4 +MOD11_022533F4: ; 0x022533F4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl MOD11_022300CC + ldrb r1, [r4, #0xa] + add r6, r0, #0 + cmp r1, #3 + bls _0225340C + b _02253524 +_0225340C: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02253418: ; jump table + .short _02253420 - _02253418 - 2 ; case 0 + .short _02253440 - _02253418 - 2 ; case 1 + .short _022534B0 - _02253418 - 2 ; case 2 + .short _022534E2 - _02253418 - 2 ; case 3 +_02253420: + mov r2, #0 + str r2, [sp] + mov r1, #0x10 + str r1, [sp, #4] + mov r1, #0xa + str r2, [sp, #8] + add r3, r1, #0 + ldr r2, _02253528 ; =0x0000FFFF + sub r3, #0x12 + bl FUN_02003210 + ldrb r0, [r4, #0xa] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, pc} +_02253440: + bl FUN_020038E4 + cmp r0, #0 + bne _02253524 + ldr r0, [r4] + bl MOD11_0222D7F8 + mov r0, #5 + mov r1, #0x38 + bl FUN_02016998 + str r0, [r4, #4] + ldrb r1, [r4, #9] + ldr r0, [r4] + bl MOD11_0222FF88 + ldr r1, [r4, #4] + mov r2, #3 + str r0, [r1] + ldr r1, [r4] + ldr r0, [r4, #4] + str r1, [r0, #8] + ldr r0, [r4, #4] + mov r1, #5 + str r1, [r0, #0xc] + ldrb r1, [r4, #0xe] + ldr r0, [r4, #4] + strb r1, [r0, #0x11] + ldrh r1, [r4, #0xc] + ldr r0, [r4, #4] + strh r1, [r0, #0x24] + ldr r1, [r4, #4] + mov r0, #0 + add r1, #0x36 + strb r0, [r1] + ldr r1, [r4, #4] + strb r0, [r1, #0x12] + ldr r1, [r4, #4] + add r1, #0x35 + strb r2, [r1] + ldr r1, [r4, #4] + strh r0, [r1, #0x22] + ldrb r2, [r4, #9] + ldr r1, [r4, #4] + str r2, [r1, #0x28] + ldr r1, [r4, #4] + add r1, #0x32 + strb r0, [r1] + ldr r0, [r4, #4] + bl FUN_02211E60 + ldrb r0, [r4, #0xa] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, pc} +_022534B0: + ldr r0, [r4, #4] + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _02253524 + ldr r0, [r4] + bl MOD11_0222D88C + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + mov r1, #0xa + str r0, [sp, #4] + add r3, r1, #0 + str r0, [sp, #8] + ldr r2, _02253528 ; =0x0000FFFF + add r0, r6, #0 + sub r3, #0x12 + bl FUN_02003210 + ldrb r0, [r4, #0xa] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xa] + pop {r3, r4, r5, r6, pc} +_022534E2: + bl FUN_020038E4 + cmp r0, #0 + bne _02253524 + ldr r0, [r4, #4] + add r0, #0x34 + ldrb r2, [r0] + ldr r0, [r4] + cmp r2, #4 + bne _02253500 + ldrb r1, [r4, #9] + mov r2, #0xff + bl MOD11_02255964 + b _02253508 +_02253500: + ldrb r1, [r4, #9] + add r2, r2, #1 + bl MOD11_02255964 +_02253508: + ldrb r1, [r4, #9] + ldrb r2, [r4, #8] + ldr r0, [r4] + bl MOD11_022567B8 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02253524: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02253528: .word 0x0000FFFF + + thumb_func_start MOD11_0225352C +MOD11_0225352C: ; 0x0225352C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _0225353E + cmp r0, #1 + beq _02253582 + pop {r3, r4, r5, pc} +_0225353E: + ldrb r1, [r5, #0xc] + ldrb r0, [r5, #0xd] + cmp r1, r0 + bne _0225357C + mov r0, #0 + strb r0, [r5, #0xc] + ldr r0, [r5, #4] + mov r1, #0x28 + bl FUN_0200782C + add r4, r0, #0 + ldrb r0, [r5, #0xb] + cmp r4, r0 + ble _0225355E + sub r4, r4, #1 + b _02253564 +_0225355E: + cmp r4, r0 + bge _02253564 + add r4, r4, #1 +_02253564: + ldr r0, [r5, #4] + mov r1, #0x28 + add r2, r4, #0 + bl FUN_02007558 + ldrb r0, [r5, #0xb] + cmp r4, r0 + bne _02253598 + ldrb r0, [r5, #0xa] + add r0, r0, #1 + strb r0, [r5, #0xa] + pop {r3, r4, r5, pc} +_0225357C: + add r0, r1, #1 + strb r0, [r5, #0xc] + pop {r3, r4, r5, pc} +_02253582: + ldrb r1, [r5, #9] + ldrb r2, [r5, #8] + ldr r0, [r5] + bl MOD11_022567B8 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02253598: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0225359C +MOD11_0225359C: ; 0x0225359C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + ldrb r1, [r5, #5] + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_02230270 + cmp r0, #0 + bne _022535B4 + mov r4, #0 + b _022535B6 +_022535B4: + mov r4, #1 +_022535B6: + ldrb r0, [r5, #7] + cmp r0, #0 + beq _022535C2 + cmp r0, #1 + beq _0225361C + b _02253636 +_022535C2: + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _022535CE + mov r7, #0 + mov r6, #1 + b _022535E6 +_022535CE: + ldrb r0, [r5, #6] + mov r7, #1 + cmp r0, #3 + beq _022535DC + cmp r0, #5 + beq _022535E0 + b _022535E4 +_022535DC: + mov r6, #0 + b _022535E6 +_022535E0: + mov r6, #2 + b _022535E6 +_022535E4: + add r6, r7, #0 +_022535E6: + ldr r0, [r5] + bl MOD11_02230078 + str r0, [sp, #8] + ldr r0, [r5] + bl MOD11_02230080 + ldr r1, [sp, #8] + add r2, r7, #0 + str r1, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #8 + add r1, r4, #0 + add r3, r6, #0 + bl MOD11_0225CA08 + add r2, r0, #0 + ldr r0, [r5] + add r1, r4, #0 + bl MOD11_022300A8 + ldrb r0, [r5, #7] + add sp, #0xc + add r0, r0, #1 + strb r0, [r5, #7] + pop {r4, r5, r6, r7, pc} +_0225361C: + ldr r0, [r5] + add r1, r4, #0 + bl MOD11_0223009C + bl MOD11_0225CA6C + cmp r0, #1 + bne _0225364C + ldrb r0, [r5, #7] + add sp, #0xc + add r0, r0, #1 + strb r0, [r5, #7] + pop {r4, r5, r6, r7, pc} +_02253636: + ldrb r1, [r5, #5] + ldrb r2, [r5, #4] + ldr r0, [r5] + bl MOD11_022567B8 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0225364C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02253650 +MOD11_02253650: ; 0x02253650 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldrb r1, [r5, #5] + add r7, r0, #0 + ldr r0, [r5] + bl MOD11_02230270 + cmp r0, #0 + bne _02253666 + mov r4, #0 + b _02253668 +_02253666: + mov r4, #1 +_02253668: + ldr r0, [r5] + add r1, r4, #0 + bl MOD11_0223009C + ldrb r1, [r5, #7] + add r6, r0, #0 + cmp r1, #0 + beq _0225367E + cmp r1, #1 + beq _0225369A + b _022536BA +_0225367E: + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _02253688 + mov r1, #0 + b _0225368A +_02253688: + mov r1, #1 +_0225368A: + add r0, r6, #0 + add r2, r1, #0 + bl MOD11_0225CA90 + ldrb r0, [r5, #7] + add r0, r0, #1 + strb r0, [r5, #7] + pop {r3, r4, r5, r6, r7, pc} +_0225369A: + bl MOD11_0225CAC8 + cmp r0, #1 + bne _022536D0 + add r0, r6, #0 + bl MOD11_0225CAEC + ldr r0, [r5] + add r1, r4, #0 + mov r2, #0 + bl MOD11_022300A8 + ldrb r0, [r5, #7] + add r0, r0, #1 + strb r0, [r5, #7] + pop {r3, r4, r5, r6, r7, pc} +_022536BA: + ldrb r1, [r5, #5] + ldrb r2, [r5, #4] + ldr r0, [r5] + bl MOD11_022567B8 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 +_022536D0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022536D4 +MOD11_022536D4: ; 0x022536D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _02253706 + ldr r0, [r4, #4] + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + beq _022536EE + bl ErrorHandling +_022536EE: + ldrb r2, [r4, #0xd] + ldr r0, [r4] + mov r1, #5 + bl FUN_022156C0 + ldr r1, [r4, #4] + add r1, #0x8c + str r0, [r1] + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, pc} +_02253706: + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02253720 +MOD11_02253720: ; 0x02253720 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _02253734 + bl ErrorHandling +_02253734: + ldr r0, [r4, #4] + add r0, #0x8c + ldr r0, [r0] + bl FUN_02215988 + cmp r0, #3 + bne _0225374E + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhs _0225374E + add r0, r0, #1 + strb r0, [r4, #0xe] + pop {r3, r4, r5, pc} +_0225374E: + ldr r0, [r4, #4] + ldrb r1, [r4, #0xd] + add r0, #0x8c + ldr r0, [r0] + bl FUN_0221594C + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x8c + str r1, [r0] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xc] + ldr r0, [r4] + bl MOD11_022567B8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0225377C +MOD11_0225377C: ; 0x0225377C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD11_0222FF74 + mov r1, #0x40 + tst r1, r0 + beq _022537D6 + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _022537B6 + ldr r1, _022539F4 ; =MOD11_02250F44 + add r0, r0, #2 + str r1, [r4] + ldr r1, _022539F8 ; =MOD11_022511C4 + str r1, [r4, #4] + ldr r1, _022539FC ; =MOD11_02251420 + str r1, [r4, #8] + ldr r1, _02253A00 ; =MOD11_02252018 + str r1, [r4, #0xc] + ldr r1, _02253A04 ; =MOD11_02252470 + str r1, [r4, #0x10] + ldr r1, _02253A08 ; =MOD11_02252714 + str r1, [r4, #0x14] + mov r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_022537B6: + ldr r1, _02253A0C ; =MOD11_02250A70 + add r0, r0, #2 + str r1, [r4] + ldr r1, _02253A10 ; =MOD11_0225103C + str r1, [r4, #4] + ldr r1, _02253A14 ; =MOD11_022512B4 + str r1, [r4, #8] + ldr r1, _02253A18 ; =MOD11_02251484 + str r1, [r4, #0xc] + ldr r1, _02253A1C ; =MOD11_022520A8 + str r1, [r4, #0x10] + ldr r1, _02253A20 ; =MOD11_02252544 + str r1, [r4, #0x14] + mov r1, #0 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_022537D6: + mov r1, #0x88 + and r1, r0 + cmp r1, #0x88 + bne _02253888 + ldr r0, _02253A24 ; =0x00000195 + ldrb r1, [r4, r0] + mov r0, #1 + tst r0, r1 + beq _02253832 + add r0, r5, #0 + bl MOD11_02230DD4 + cmp r0, #0 + beq _02253812 + ldr r0, _022539F4 ; =MOD11_02250F44 + mov r1, #1 + str r0, [r4] + ldr r0, _022539F8 ; =MOD11_022511C4 + str r0, [r4, #4] + ldr r0, _022539FC ; =MOD11_02251420 + str r0, [r4, #8] + ldr r0, _02253A00 ; =MOD11_02252018 + str r0, [r4, #0xc] + ldr r0, _02253A04 ; =MOD11_02252470 + str r0, [r4, #0x10] + ldr r0, _02253A08 ; =MOD11_02252714 + str r0, [r4, #0x14] + ldr r0, _02253A28 ; =0x00000196 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02253812: + ldr r0, _02253A2C ; =MOD11_02250F74 + mov r1, #2 + str r0, [r4] + ldr r0, _02253A30 ; =MOD11_02251294 + str r0, [r4, #4] + ldr r0, _02253A34 ; =MOD11_02251464 + str r0, [r4, #8] + ldr r0, _02253A38 ; =MOD11_02252070 + str r0, [r4, #0xc] + ldr r0, _02253A3C ; =MOD11_02252524 + str r0, [r4, #0x10] + ldr r0, _02253A40 ; =MOD11_02252734 + str r0, [r4, #0x14] + ldr r0, _02253A28 ; =0x00000196 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02253832: + bl FUN_02031190 + add r1, r0, #0 + add r0, r5, #0 + lsl r1, r1, #1 + bl MOD11_02230260 + ldr r1, _02253A24 ; =0x00000195 + ldrb r2, [r4, r1] + cmp r2, r0 + beq _02253868 + ldr r0, _02253A2C ; =MOD11_02250F74 + mov r2, #2 + str r0, [r4] + ldr r0, _02253A30 ; =MOD11_02251294 + str r0, [r4, #4] + ldr r0, _02253A34 ; =MOD11_02251464 + str r0, [r4, #8] + ldr r0, _02253A38 ; =MOD11_02252070 + str r0, [r4, #0xc] + ldr r0, _02253A3C ; =MOD11_02252524 + str r0, [r4, #0x10] + ldr r0, _02253A40 ; =MOD11_02252734 + str r0, [r4, #0x14] + add r0, r1, #1 + strb r2, [r4, r0] + pop {r3, r4, r5, pc} +_02253868: + ldr r0, _02253A0C ; =MOD11_02250A70 + mov r2, #0 + str r0, [r4] + ldr r0, _02253A10 ; =MOD11_0225103C + str r0, [r4, #4] + ldr r0, _02253A14 ; =MOD11_022512B4 + str r0, [r4, #8] + ldr r0, _02253A18 ; =MOD11_02251484 + str r0, [r4, #0xc] + ldr r0, _02253A1C ; =MOD11_022520A8 + str r0, [r4, #0x10] + ldr r0, _02253A20 ; =MOD11_02252544 + str r0, [r4, #0x14] + add r0, r1, #1 + strb r2, [r4, r0] + pop {r3, r4, r5, pc} +_02253888: + mov r1, #8 + tst r1, r0 + beq _022538E2 + bl FUN_02031190 + add r1, r0, #0 + add r0, r5, #0 + bl MOD11_02230260 + ldr r1, _02253A24 ; =0x00000195 + ldrb r2, [r4, r1] + cmp r2, r0 + beq _022538C2 + ldr r0, _02253A2C ; =MOD11_02250F74 + mov r2, #2 + str r0, [r4] + ldr r0, _02253A30 ; =MOD11_02251294 + str r0, [r4, #4] + ldr r0, _02253A34 ; =MOD11_02251464 + str r0, [r4, #8] + ldr r0, _02253A38 ; =MOD11_02252070 + str r0, [r4, #0xc] + ldr r0, _02253A3C ; =MOD11_02252524 + str r0, [r4, #0x10] + ldr r0, _02253A40 ; =MOD11_02252734 + str r0, [r4, #0x14] + add r0, r1, #1 + strb r2, [r4, r0] + pop {r3, r4, r5, pc} +_022538C2: + ldr r0, _02253A0C ; =MOD11_02250A70 + mov r2, #0 + str r0, [r4] + ldr r0, _02253A10 ; =MOD11_0225103C + str r0, [r4, #4] + ldr r0, _02253A14 ; =MOD11_022512B4 + str r0, [r4, #8] + ldr r0, _02253A18 ; =MOD11_02251484 + str r0, [r4, #0xc] + ldr r0, _02253A1C ; =MOD11_022520A8 + str r0, [r4, #0x10] + ldr r0, _02253A20 ; =MOD11_02252544 + str r0, [r4, #0x14] + add r0, r1, #1 + strb r2, [r4, r0] + pop {r3, r4, r5, pc} +_022538E2: + mov r1, #4 + add r2, r0, #0 + tst r2, r1 + beq _02253934 + ldr r0, _02253A24 ; =0x00000195 + mov r1, #1 + ldrb r2, [r4, r0] + tst r1, r2 + beq _02253914 + ldr r1, _02253A2C ; =MOD11_02250F74 + add r0, r0, #1 + str r1, [r4] + ldr r1, _02253A30 ; =MOD11_02251294 + str r1, [r4, #4] + ldr r1, _02253A34 ; =MOD11_02251464 + str r1, [r4, #8] + ldr r1, _02253A38 ; =MOD11_02252070 + str r1, [r4, #0xc] + ldr r1, _02253A3C ; =MOD11_02252524 + str r1, [r4, #0x10] + ldr r1, _02253A40 ; =MOD11_02252734 + str r1, [r4, #0x14] + mov r1, #2 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02253914: + ldr r1, _02253A0C ; =MOD11_02250A70 + add r0, r0, #1 + str r1, [r4] + ldr r1, _02253A10 ; =MOD11_0225103C + str r1, [r4, #4] + ldr r1, _02253A14 ; =MOD11_022512B4 + str r1, [r4, #8] + ldr r1, _02253A18 ; =MOD11_02251484 + str r1, [r4, #0xc] + ldr r1, _02253A1C ; =MOD11_022520A8 + str r1, [r4, #0x10] + ldr r1, _02253A20 ; =MOD11_02252544 + str r1, [r4, #0x14] + mov r1, #0 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02253934: + lsl r1, r1, #7 + tst r1, r0 + beq _02253970 + ldr r0, _02253A24 ; =0x00000195 + mov r1, #1 + ldrb r2, [r4, r0] + tst r2, r1 + beq _0225395A + ldr r2, _02253A44 ; =MOD11_02251014 + add r0, r0, #1 + str r2, [r4] + mov r2, #0 + str r2, [r4, #4] + str r2, [r4, #8] + str r2, [r4, #0xc] + str r2, [r4, #0x10] + str r2, [r4, #0x14] + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_0225395A: + ldr r1, _02253A0C ; =MOD11_02250A70 + add r0, r0, #1 + str r1, [r4] + mov r1, #0 + str r1, [r4, #4] + str r1, [r4, #8] + str r1, [r4, #0xc] + str r1, [r4, #0x10] + str r1, [r4, #0x14] + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02253970: + mov r1, #0x20 + tst r0, r1 + ldr r0, _02253A24 ; =0x00000195 + beq _022539AE + ldrb r2, [r4, r0] + mov r1, #1 + tst r2, r1 + beq _02253996 + ldr r2, _02253A48 ; =MOD11_02250F94 + add r0, r0, #1 + str r2, [r4] + mov r2, #0 + str r2, [r4, #4] + str r2, [r4, #8] + str r2, [r4, #0xc] + str r2, [r4, #0x10] + str r2, [r4, #0x14] + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02253996: + ldr r1, _02253A0C ; =MOD11_02250A70 + mov r2, #0 + str r1, [r4] + str r2, [r4, #4] + str r2, [r4, #8] + str r2, [r4, #0xc] + ldr r1, _02253A20 ; =MOD11_02252544 + str r2, [r4, #0x10] + str r1, [r4, #0x14] + add r0, r0, #1 + strb r2, [r4, r0] + pop {r3, r4, r5, pc} +_022539AE: + ldrb r2, [r4, r0] + mov r1, #1 + tst r2, r1 + beq _022539D4 + ldr r2, _022539F4 ; =MOD11_02250F44 + add r0, r0, #1 + str r2, [r4] + ldr r2, _022539F8 ; =MOD11_022511C4 + str r2, [r4, #4] + ldr r2, _022539FC ; =MOD11_02251420 + str r2, [r4, #8] + ldr r2, _02253A00 ; =MOD11_02252018 + str r2, [r4, #0xc] + ldr r2, _02253A04 ; =MOD11_02252470 + str r2, [r4, #0x10] + ldr r2, _02253A08 ; =MOD11_02252714 + str r2, [r4, #0x14] + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_022539D4: + ldr r1, _02253A0C ; =MOD11_02250A70 + add r0, r0, #1 + str r1, [r4] + ldr r1, _02253A10 ; =MOD11_0225103C + str r1, [r4, #4] + ldr r1, _02253A14 ; =MOD11_022512B4 + str r1, [r4, #8] + ldr r1, _02253A18 ; =MOD11_02251484 + str r1, [r4, #0xc] + ldr r1, _02253A1C ; =MOD11_022520A8 + str r1, [r4, #0x10] + ldr r1, _02253A20 ; =MOD11_02252544 + str r1, [r4, #0x14] + mov r1, #0 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_022539F4: .word MOD11_02250F44 +_022539F8: .word MOD11_022511C4 +_022539FC: .word MOD11_02251420 +_02253A00: .word MOD11_02252018 +_02253A04: .word MOD11_02252470 +_02253A08: .word MOD11_02252714 +_02253A0C: .word MOD11_02250A70 +_02253A10: .word MOD11_0225103C +_02253A14: .word MOD11_022512B4 +_02253A18: .word MOD11_02251484 +_02253A1C: .word MOD11_022520A8 +_02253A20: .word MOD11_02252544 +_02253A24: .word 0x00000195 +_02253A28: .word 0x00000196 +_02253A2C: .word MOD11_02250F74 +_02253A30: .word MOD11_02251294 +_02253A34: .word MOD11_02251464 +_02253A38: .word MOD11_02252070 +_02253A3C: .word MOD11_02252524 +_02253A40: .word MOD11_02252734 +_02253A44: .word MOD11_02251014 +_02253A48: .word MOD11_02250F94 + + thumb_func_start MOD11_02253A4C +MOD11_02253A4C: ; 0x02253A4C + ldr r1, _02253A54 ; =0x00000195 + ldrb r0, [r0, r1] + bx lr + nop +_02253A54: .word 0x00000195 + + thumb_func_start MOD11_02253A58 +MOD11_02253A58: ; 0x02253A58 + ldr r1, _02253A60 ; =0x00000196 + ldrb r0, [r0, r1] + bx lr + nop +_02253A60: .word 0x00000196 + + thumb_func_start MOD11_02253A64 +MOD11_02253A64: ; 0x02253A64 + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _02253A6C + ldr r1, [r0, #0x1c] +_02253A6C: + add r0, r1, #0 + bx lr + + thumb_func_start MOD11_02253A70 +MOD11_02253A70: ; 0x02253A70 + add r0, #0x28 + bx lr + + thumb_func_start MOD11_02253A74 +MOD11_02253A74: ; 0x02253A74 + add r0, #0x80 + bx lr + + thumb_func_start MOD11_02253A78 +MOD11_02253A78: ; 0x02253A78 + ldr r3, _02253A84 ; =0x020CE34C + add r0, #0x80 + mov r1, #0 + mov r2, #8 + bx r3 + nop +_02253A84: .word 0x020CE34C + + thumb_func_start MOD11_02253A88 +MOD11_02253A88: ; 0x02253A88 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r4, [sp, #0x50] + add r7, r0, #0 + str r1, [sp, #0x14] + add r5, r2, #0 + str r3, [sp, #0x18] + bl MOD11_02230130 + add r1, r4, #0 + bl MOD11_022312DC + str r0, [sp, #0x20] + add r0, r7, #0 + add r1, r4, #0 + bl MOD11_02230260 + add r6, r0, #0 + mov r0, #1 + and r0, r6 + str r0, [sp, #0x1c] + beq _02253AB8 + mov r1, #2 + b _02253ABA +_02253AB8: + mov r1, #0 +_02253ABA: + ldr r0, [r5, #0xc] + ldr r3, [sp, #0x20] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + ldrh r0, [r5, #6] + mov r2, #5 + str r0, [sp, #0xc] + ldrh r0, [r5] + ldrh r1, [r5, #2] + bl FUN_02012560 + add r0, r7, #0 + bl MOD11_02230130 + ldrh r2, [r5] + add r1, r4, #0 + bl MOD11_022312F0 + add r0, r7, #0 + bl MOD11_02230130 + ldrh r2, [r5, #4] + add r1, r4, #0 + bl MOD11_02231308 + add r0, r7, #0 + bl MOD11_02230130 + ldr r2, [sp, #0x40] + add r1, r4, #0 + bl MOD11_02231320 + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x40] + str r0, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + ldr r0, [sp, #0x54] + ldr r4, [sp, #0x38] + str r0, [sp, #0xc] + ldr r0, [sp, #0x58] + ldr r2, [sp, #0x18] + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r3, r4, r3 + bl FUN_020073E8 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _02253B6E + cmp r6, #1 + ble _02253B2C + asr r6, r6, #1 +_02253B2C: + add r0, r4, #0 + mov r1, #0x2a + add r2, r6, #0 + bl FUN_02007558 + ldr r2, [sp, #0x4c] + add r0, r4, #0 + mov r1, #0x2e + bl FUN_02007558 + ldr r2, [sp, #0x38] + add r0, r4, #0 + mov r1, #0x14 + add r2, #0x24 + bl FUN_02007558 + ldr r2, [sp, #0x48] + add r0, r4, #0 + mov r1, #0x15 + bl FUN_02007558 + ldr r3, [sp, #0x40] + mov r2, #0x24 + add r0, r4, #0 + mov r1, #0x16 + sub r2, r2, r3 + bl FUN_02007558 + ldr r2, [sp, #0x44] + add r0, r4, #0 + mov r1, #0x29 + bl FUN_02007558 +_02253B6E: + add r0, r4, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02253B74 +MOD11_02253B74: ; 0x02253B74 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, _02253C30 ; =0x00000195 + add r6, r2, #0 + ldrb r2, [r5, r1] + mov r1, #1 + add r7, r0, #0 + add r4, r3, #0 + tst r1, r2 + beq _02253BCE + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + beq _02253BAE + ldr r0, _02253C34 ; =0x000003DE + strh r0, [r4, #2] + mov r0, #0x1b + strb r0, [r4, #1] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + str r1, [r4, #4] + ldrb r1, [r5, r0] + ldrb r0, [r6, #1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02253BAE: + ldr r0, _02253C38 ; =0x000003DD + strh r0, [r4, #2] + mov r0, #0x32 + strb r0, [r4, #1] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + str r1, [r4, #4] + ldrb r1, [r5, r0] + str r1, [r4, #8] + ldrb r1, [r5, r0] + ldrb r0, [r6, #1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02253BCE: + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02253C18 + add r0, r7, #0 + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + bne _02253C18 + ldrh r0, [r6, #2] + cmp r0, #0 + bne _02253BF2 + mov r0, #0xf6 + lsl r0, r0, #2 + strh r0, [r4, #2] + b _02253C1C +_02253BF2: + cmp r0, #0x19 + bhs _02253BFC + ldr r0, _02253C3C ; =0x000003D9 + strh r0, [r4, #2] + b _02253C1C +_02253BFC: + cmp r0, #0x32 + bhs _02253C08 + mov r0, #0xf7 + lsl r0, r0, #2 + strh r0, [r4, #2] + b _02253C1C +_02253C08: + cmp r0, #0x4b + bhs _02253C12 + ldr r0, _02253C40 ; =0x000003DA + strh r0, [r4, #2] + b _02253C1C +_02253C12: + ldr r0, _02253C44 ; =0x000003DB + strh r0, [r4, #2] + b _02253C1C +_02253C18: + ldr r0, _02253C3C ; =0x000003D9 + strh r0, [r4, #2] +_02253C1C: + mov r0, #2 + strb r0, [r4, #1] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + ldrb r0, [r6, #1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02253C30: .word 0x00000195 +_02253C34: .word 0x000003DE +_02253C38: .word 0x000003DD +_02253C3C: .word 0x000003D9 +_02253C40: .word 0x000003DA +_02253C44: .word 0x000003DB + + thumb_func_start MOD11_02253C48 +MOD11_02253C48: ; 0x02253C48 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r1, _02253D08 ; =0x00000195 + add r6, r2, #0 + ldrb r2, [r5, r1] + mov r1, #1 + add r7, r0, #0 + add r4, r3, #0 + tst r1, r2 + beq _02253CA4 + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + bne _02253C88 + mov r0, #0xf3 + lsl r0, r0, #2 + strh r0, [r4, #2] + mov r0, #0x32 + strb r0, [r4, #1] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + str r1, [r4, #4] + ldrb r1, [r5, r0] + str r1, [r4, #8] + ldrb r1, [r5, r0] + ldrb r0, [r6, #1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02253C88: + ldr r0, _02253D0C ; =0x000003CE + strh r0, [r4, #2] + mov r0, #0x1b + strb r0, [r4, #1] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + str r1, [r4, #4] + ldrb r1, [r5, r0] + ldrb r0, [r6, #1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02253CA4: + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + bne _02253CF0 + add r0, r7, #0 + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + bne _02253CF0 + ldrh r1, [r6, #2] + cmp r1, #0x64 + bhs _02253CC6 + ldr r0, _02253D10 ; =0x000003D6 + strh r0, [r4, #2] + b _02253CF4 +_02253CC6: + ldr r0, _02253D14 ; =0x00000145 + cmp r1, r0 + bhs _02253CD2 + ldr r0, _02253D18 ; =0x000003D7 + strh r0, [r4, #2] + b _02253CF4 +_02253CD2: + add r0, #0xe1 + cmp r1, r0 + bhs _02253CDE + ldr r0, _02253D1C ; =0x000003D5 + strh r0, [r4, #2] + b _02253CF4 +_02253CDE: + ldr r0, _02253D20 ; =0x00000307 + cmp r1, r0 + bhs _02253CEA + add r0, #0xcd + strh r0, [r4, #2] + b _02253CF4 +_02253CEA: + add r0, #0xcc + strh r0, [r4, #2] + b _02253CF4 +_02253CF0: + ldr r0, _02253D24 ; =0x000003D3 + strh r0, [r4, #2] +_02253CF4: + mov r0, #2 + strb r0, [r4, #1] + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + ldrb r0, [r6, #1] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02253D08: .word 0x00000195 +_02253D0C: .word 0x000003CE +_02253D10: .word 0x000003D6 +_02253D14: .word 0x00000145 +_02253D18: .word 0x000003D7 +_02253D1C: .word 0x000003D5 +_02253D20: .word 0x00000307 +_02253D24: .word 0x000003D3 + + thumb_func_start MOD11_02253D28 +MOD11_02253D28: ; 0x02253D28 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r2, #0 + bl MOD11_0222FF74 + add r4, r0, #0 + mov r0, #2 + tst r0, r4 + beq _02253D4E + add r0, r7, #0 + mov r1, #3 + bl MOD11_0223022C + add r6, r0, #0 + add r0, r7, #0 + mov r1, #5 + bl MOD11_0223022C + b _02253D58 +_02253D4E: + add r0, r7, #0 + mov r1, #1 + bl MOD11_0223022C + add r6, r0, #0 +_02253D58: + mov r1, #4 + tst r1, r4 + beq _02253D98 + mov r1, #0x80 + tst r1, r4 + beq _02253D78 + mov r1, #0x3e + lsl r1, r1, #4 + strh r1, [r5, #2] + mov r1, #0x3b + strb r1, [r5, #1] + str r6, [r5, #4] + str r6, [r5, #8] + str r0, [r5, #0xc] + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02253D78: + mov r1, #8 + add r2, r4, #0 + tst r2, r1 + beq _02253D8E + ldr r1, _02253DC8 ; =0x000003CB + strh r1, [r5, #2] + mov r1, #0x1a + strb r1, [r5, #1] + str r6, [r5, #4] + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_02253D8E: + ldr r0, _02253DCC ; =0x000003CA + strh r0, [r5, #2] + strb r1, [r5, #1] + str r6, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_02253D98: + mov r1, #0x10 + tst r1, r4 + bne _02253DA4 + mov r1, #8 + tst r1, r4 + beq _02253DB8 +_02253DA4: + mov r1, #0x3e + lsl r1, r1, #4 + strh r1, [r5, #2] + mov r1, #0x3b + strb r1, [r5, #1] + str r6, [r5, #4] + str r6, [r5, #8] + str r0, [r5, #0xc] + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02253DB8: + ldr r0, _02253DD0 ; =0x000003C9 + strh r0, [r5, #2] + mov r0, #0x1e + strb r0, [r5, #1] + str r6, [r5, #4] + str r6, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} + nop +_02253DC8: .word 0x000003CB +_02253DCC: .word 0x000003CA +_02253DD0: .word 0x000003C9 + + thumb_func_start MOD11_02253DD4 +MOD11_02253DD4: ; 0x02253DD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #4] + str r0, [sp] + add r6, r2, #0 + add r4, r3, #0 + bl MOD11_0222FF74 + str r0, [sp, #0x14] + ldr r2, _022540E4 ; =0x00000195 + ldr r0, [sp, #4] + ldrb r1, [r0, r2] + mov r0, #1 + tst r0, r1 + bne _02253DF4 + b _02253F3C +_02253DF4: + ldr r0, [sp, #0x14] + mov r1, #2 + and r0, r1 + str r0, [sp, #0x10] + beq _02253E10 + ldr r0, [sp, #4] + sub r1, r2, #1 + ldrb r5, [r0, r1] + ldr r0, [sp] + add r1, r5, #0 + bl MOD11_022302BC + add r7, r0, #0 + b _02253E18 +_02253E10: + ldr r0, [sp, #4] + sub r1, r2, #1 + ldrb r5, [r0, r1] + add r7, r5, #0 +_02253E18: + ldr r0, [sp, #0x14] + mov r1, #4 + tst r0, r1 + beq _02253EBE + ldr r0, [sp, #0x14] + mov r1, #0x80 + tst r0, r1 + beq _02253E50 + ldr r0, _022540E8 ; =0x000003DF + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x3c + strb r0, [r4, #1] + str r5, [r4, #4] + str r5, [r4, #8] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #0xc] + str r7, [r4, #0x10] + str r7, [r4, #0x14] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_02253E50: + ldr r0, [sp, #0x14] + mov r1, #8 + tst r0, r1 + beq _02253E7E + mov r0, #0x3d + lsl r0, r0, #4 + strh r0, [r4, #2] + mov r0, #0x38 + strb r0, [r4, #1] + str r5, [r4, #4] + add r0, r6, r5 + ldrb r0, [r0, #4] + add sp, #0x18 + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #8] + str r7, [r4, #0xc] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02253E7E: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _02253EA6 + ldr r0, _022540EC ; =0x000003CF + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x31 + strb r0, [r4, #1] + str r5, [r4, #4] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #8] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02253EA6: + ldr r0, _022540F0 ; =0x000003CE + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x1b + strb r0, [r4, #1] + str r5, [r4, #4] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02253EBE: + ldr r0, [sp, #0x14] + mov r1, #0x10 + tst r0, r1 + bne _02253ECE + ldr r0, [sp, #0x14] + mov r1, #8 + tst r0, r1 + beq _02253EF6 +_02253ECE: + ldr r0, _022540E8 ; =0x000003DF + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x3c + strb r0, [r4, #1] + str r5, [r4, #4] + str r5, [r4, #8] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #0xc] + str r7, [r4, #0x10] + str r7, [r4, #0x14] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0x18] + pop {r3, r4, r5, r6, r7, pc} +_02253EF6: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _02253F20 + ldr r0, _022540F4 ; =0x000003CD + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x39 + strb r0, [r4, #1] + str r5, [r4, #4] + str r5, [r4, #8] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #0xc] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02253F20: + mov r0, #0xf3 + lsl r0, r0, #2 + strh r0, [r4, #2] + mov r0, #0x32 + strb r0, [r4, #1] + str r5, [r4, #4] + str r5, [r4, #8] + add r0, r6, r5 + ldrb r0, [r0, #4] + add sp, #0x18 + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02253F3C: + ldr r0, [sp, #0x14] + mov r1, #4 + and r0, r1 + str r0, [sp, #0xc] + beq _02253FCC + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + ldr r0, [sp, #0x14] + mov r1, #8 + and r0, r1 + str r0, [sp, #8] + beq _02253FA2 + add r0, r2, #0 + bl FUN_020313CC + cmp r0, #3 + bhi _02254012 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02253F6E: ; jump table + .short _02253F76 - _02253F6E - 2 ; case 0 + .short _02253F8C - _02253F6E - 2 ; case 1 + .short _02253F8C - _02253F6E - 2 ; case 2 + .short _02253F76 - _02253F6E - 2 ; case 3 +_02253F76: + ldr r0, [sp] + mov r1, #4 + bl MOD11_0223022C + add r5, r0, #0 + ldr r0, [sp] + mov r1, #2 + bl MOD11_0223022C + add r7, r0, #0 + b _02254012 +_02253F8C: + ldr r0, [sp] + mov r1, #2 + bl MOD11_0223022C + add r5, r0, #0 + ldr r0, [sp] + mov r1, #4 + bl MOD11_0223022C + add r7, r0, #0 + b _02254012 +_02253FA2: + ldr r0, [sp, #0x14] + mov r1, #2 + tst r0, r1 + beq _02253FBE + ldr r0, [sp] + bl MOD11_0223022C + add r5, r0, #0 + ldr r0, [sp] + mov r1, #4 + bl MOD11_0223022C + add r7, r0, #0 + b _02254012 +_02253FBE: + ldr r0, [sp] + mov r1, #0 + bl MOD11_0223022C + add r5, r0, #0 + add r7, r5, #0 + b _02254012 +_02253FCC: + ldr r0, [sp, #0x14] + mov r1, #8 + and r0, r1 + str r0, [sp, #8] + beq _02253FEE + ldr r1, [sp, #4] + sub r2, r2, #1 + ldrb r1, [r1, r2] + ldr r0, [sp] + bl MOD11_022302BC + add r5, r0, #0 + mov r1, #0x65 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldrb r7, [r0, r1] + b _02254012 +_02253FEE: + ldr r0, [sp, #0x14] + mov r1, #2 + tst r0, r1 + beq _0225400A + ldr r0, [sp] + bl MOD11_0223022C + add r5, r0, #0 + ldr r0, [sp] + mov r1, #4 + bl MOD11_0223022C + add r7, r0, #0 + b _02254012 +_0225400A: + ldr r0, [sp, #4] + sub r1, r2, #1 + ldrb r5, [r0, r1] + add r7, r5, #0 +_02254012: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0225407C + ldr r0, [sp, #8] + cmp r0, #0 + beq _02254040 + ldr r0, _022540F8 ; =0x000003D1 + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x31 + strb r0, [r4, #1] + str r5, [r4, #4] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #8] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02254040: + ldr r0, [sp, #0x14] + mov r1, #2 + tst r0, r1 + beq _02254068 + ldr r0, _022540FC ; =0x000003D2 + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #9 + strb r0, [r4, #1] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #4] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02254068: + ldr r0, _02254100 ; =0x000003D3 + add sp, #0x18 + strh r0, [r4, #2] + strb r1, [r4, #1] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_0225407C: + ldr r0, [sp, #8] + cmp r0, #0 + beq _022540A6 + ldr r0, _02254104 ; =0x000003E1 + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #0x39 + strb r0, [r4, #1] + str r5, [r4, #4] + str r5, [r4, #8] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #0xc] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022540A6: + ldr r0, [sp, #0x14] + mov r1, #2 + tst r0, r1 + beq _022540CE + ldr r0, _022540FC ; =0x000003D2 + add sp, #0x18 + strh r0, [r4, #2] + mov r0, #9 + strb r0, [r4, #1] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #4] + add r0, r6, r7 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r7 + str r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_022540CE: + ldr r0, _02254100 ; =0x000003D3 + strh r0, [r4, #2] + strb r1, [r4, #1] + add r0, r6, r5 + ldrb r0, [r0, #4] + lsl r0, r0, #8 + orr r0, r5 + str r0, [r4, #4] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022540E4: .word 0x00000195 +_022540E8: .word 0x000003DF +_022540EC: .word 0x000003CF +_022540F0: .word 0x000003CE +_022540F4: .word 0x000003CD +_022540F8: .word 0x000003D1 +_022540FC: .word 0x000003D2 +_02254100: .word 0x000003D3 +_02254104: .word 0x000003E1 + + thumb_func_start MOD11_02254108 +MOD11_02254108: ; 0x02254108 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r2, #0 + bl MOD11_0222FF74 + add r6, r0, #0 + ldr r0, [sp] + bl MOD11_0223145C + add r7, r0, #0 + mov r0, #2 + tst r0, r6 + beq _02254136 + ldr r0, [sp] + mov r1, #3 + bl MOD11_0223022C + add r4, r0, #0 + ldr r0, [sp] + mov r1, #5 + bl MOD11_0223022C + b _02254140 +_02254136: + ldr r0, [sp] + mov r1, #1 + bl MOD11_0223022C + add r4, r0, #0 +_02254140: + cmp r7, #1 + beq _0225414E + cmp r7, #2 + beq _0225416E + cmp r7, #3 + beq _02254190 + pop {r3, r4, r5, r6, r7, pc} +_0225414E: + mov r1, #8 + add r2, r6, #0 + tst r2, r1 + beq _02254164 + ldr r1, _022541B0 ; =0x00000312 + strh r1, [r5, #2] + mov r1, #0x1a + strb r1, [r5, #1] + str r4, [r5, #4] + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_02254164: + ldr r0, _022541B4 ; =0x00000311 + strh r0, [r5, #2] + strb r1, [r5, #1] + str r4, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0225416E: + mov r1, #8 + add r2, r6, #0 + tst r2, r1 + beq _02254186 + mov r1, #0xc5 + lsl r1, r1, #2 + strh r1, [r5, #2] + mov r1, #0x1a + strb r1, [r5, #1] + str r4, [r5, #4] + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_02254186: + ldr r0, _022541B8 ; =0x00000313 + strh r0, [r5, #2] + strb r1, [r5, #1] + str r4, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_02254190: + mov r1, #8 + add r2, r6, #0 + tst r2, r1 + beq _022541A6 + ldr r1, _022541BC ; =0x00000316 + strh r1, [r5, #2] + mov r1, #0x1a + strb r1, [r5, #1] + str r4, [r5, #4] + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_022541A6: + ldr r0, _022541C0 ; =0x00000315 + strh r0, [r5, #2] + strb r1, [r5, #1] + str r4, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022541B0: .word 0x00000312 +_022541B4: .word 0x00000311 +_022541B8: .word 0x00000313 +_022541BC: .word 0x00000316 +_022541C0: .word 0x00000315 + + thumb_func_start MOD11_022541C4 +MOD11_022541C4: ; 0x022541C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r6, #0 + add r5, r0, #0 + str r2, [sp] + add r7, r3, #0 + str r6, [sp, #4] + add r4, r6, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _0225420C +_022541DC: + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, [sp] + ldrb r1, [r1, #1] + tst r0, r1 + beq _02254200 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02230270 + cmp r0, #0 + beq _022541FE + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + b _02254200 +_022541FE: + add r6, r6, #1 +_02254200: + add r0, r5, #0 + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _022541DC +_0225420C: + cmp r6, #0 + beq _0225422A + ldr r0, [sp, #4] + cmp r0, #0 + beq _0225422A + ldr r0, _022542AC ; =0x0000030D + mov r1, #0xc3 + strh r0, [r7, #2] + mov r0, #0 + strb r0, [r7, #1] + add r0, r5, #0 + bl MOD11_02231468 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0225422A: + cmp r6, #0 + beq _02254242 + ldr r0, _022542AC ; =0x0000030D + mov r1, #0xc2 + strh r0, [r7, #2] + mov r0, #0 + strb r0, [r7, #1] + add r0, r5, #0 + bl MOD11_02231468 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02254242: + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #8 + tst r0, r1 + beq _0225426E + mov r0, #0xc6 + lsl r0, r0, #2 + strh r0, [r7, #2] + mov r0, #0x1a + strb r0, [r7, #1] + add r0, r5, #0 + mov r1, #3 + bl MOD11_0223022C + str r0, [r7, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD11_0223022C + str r0, [r7, #8] + b _0225429E +_0225426E: + add r0, r5, #0 + bl MOD11_0222FF74 + mov r1, #2 + tst r0, r1 + ldr r0, _022542B0 ; =0x00000317 + beq _0225428E + strh r0, [r7, #2] + mov r0, #8 + strb r0, [r7, #1] + add r0, r5, #0 + mov r1, #3 + bl MOD11_0223022C + str r0, [r7, #4] + b _0225429E +_0225428E: + strh r0, [r7, #2] + mov r0, #8 + strb r0, [r7, #1] + add r0, r5, #0 + mov r1, #1 + bl MOD11_0223022C + str r0, [r7, #4] +_0225429E: + add r0, r5, #0 + mov r1, #0xc1 + bl MOD11_02231468 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022542AC: .word 0x0000030D +_022542B0: .word 0x00000317 + + thumb_func_start MOD11_022542B4 +MOD11_022542B4: ; 0x022542B4 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0xef + add r4, r2, #0 + lsl r1, r1, #2 + strh r1, [r4, #2] + mov r1, #8 + add r5, r0, #0 + strb r1, [r4, #1] + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + beq _022542F4 + bl FUN_02031190 + bl FUN_020313CC + cmp r0, #0 + beq _022542E8 + add r0, r5, #0 + mov r1, #4 + bl MOD11_0223022C + str r0, [r4, #4] + b _022542FC +_022542E8: + add r0, r5, #0 + mov r1, #2 + bl MOD11_0223022C + str r0, [r4, #4] + b _022542FC +_022542F4: + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + str r0, [r4, #4] +_022542FC: + add r0, r5, #0 + mov r1, #0xc2 + bl MOD11_02231468 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02254308 +MOD11_02254308: ; 0x02254308 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r5, r2, #0 + add r4, r3, #0 + bl MOD11_02230078 + add r7, r0, #0 + ldr r0, [sp, #0x18] + bl MOD11_02230080 + add r6, r0, #0 + ldr r0, [sp, #0x18] + bl MOD11_022300CC + str r0, [sp, #0x20] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _022543EC ; =0x00004E2F + add r3, r5, #0 + add r0, r4, r0 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r6, #0 + mov r2, #0x1b + add r3, #0xc3 + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + add r0, r5, #0 + add r0, #0x2f + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _022543F0 ; =0x00004E2A + mov r1, #2 + add r0, r4, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r2, r7, #0 + add r3, r6, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r0, _022543F4 ; =0x00004E27 + add r3, r5, #0 + add r0, r4, r0 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r6, #0 + mov r2, #0x1b + add r3, #0xcb + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022543F4 ; =0x00004E27 + add r5, #0xd3 + add r0, r4, r0 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r6, #0 + mov r2, #0x1b + add r3, r5, #0 + bl FUN_0200C13C + ldr r5, _022543F8 ; =0x0225E89C + add r3, sp, #0x24 + mov r2, #6 +_022543A0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022543A0 + ldr r0, [r5] + ldr r1, _022543EC ; =0x00004E2F + str r0, [r3] + add r0, r4, r1 + str r0, [sp, #0x38] + sub r0, r1, #5 + add r0, r4, r0 + sub r1, #8 + str r0, [sp, #0x3c] + add r0, r4, r1 + str r0, [sp, #0x40] + str r0, [sp, #0x44] + add r0, r7, #0 + add r1, r6, #0 + add r2, sp, #0x24 + bl FUN_0200C154 + ldr r1, [sp, #0x1c] + mov r2, #6 + add r3, r1, #0 + mul r3, r2 + ldr r1, _022543FC ; =0x0222D550 + ldr r2, _02254400 ; =0x0222D552 + ldrsh r1, [r1, r3] + ldrsh r2, [r2, r3] + add r4, r0, #0 + bl FUN_0200C714 + add r0, r4, #0 + bl FUN_0200C5A8 + add r0, r4, #0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022543EC: .word 0x00004E2F +_022543F0: .word 0x00004E2A +_022543F4: .word 0x00004E27 +_022543F8: .word 0x0225E89C +_022543FC: .word 0x0222D550 +_02254400: .word 0x0222D552 + + thumb_func_start MOD11_02254404 +MOD11_02254404: ; 0x02254404 + push {r4, r5, r6, r7, lr} + sub sp, #0xac + str r0, [sp] + ldr r0, [r3, #0x4c] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02254422 + mov r0, #8 + str r0, [sp, #0x84] + add r0, r3, #0 + ldrh r0, [r0, #2] + str r0, [sp, #0x18] + b _0225442C +_02254422: + mov r0, #0x3f + str r0, [sp, #0x84] + add r0, r3, #0 + ldr r0, [r0, #0x50] + str r0, [sp, #0x18] +_0225442C: + ldr r0, [sp] + bl MOD11_0222FF68 + str r0, [sp, #0x20] + ldr r0, [sp] + bl MOD11_022300CC + str r0, [sp, #0x24] + ldr r0, [sp] + bl MOD11_02230078 + add r5, sp, #0x1c + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + mov r4, #0 + str r0, [sp, #0x14] + str r5, [sp, #0x10] + add r6, r5, #0 + add r7, r0, #0 +_02254452: + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_022312D0 + str r0, [r5, #0xc] + ldr r0, [sp, #0x14] + ldrh r1, [r0, #0x18] + ldr r0, [sp, #0x10] + strh r1, [r0, #0x34] + ldr r0, [sp, #0xc] + add r0, r0, r4 + add r0, #0x20 + ldrb r1, [r0] + add r0, r6, #0 + add r0, #0x3c + strb r1, [r0] + ldr r0, [sp, #0xc] + add r0, r0, r4 + add r0, #0x24 + ldrb r1, [r0] + add r0, r6, #0 + add r0, #0x40 + strb r1, [r0] + ldr r0, [sp, #0xc] + add r0, r0, r4 + add r0, #0x28 + ldrb r1, [r0] + add r0, r6, #0 + add r0, #0x44 + strb r1, [r0] + ldr r0, [r7, #0x2c] + add r4, r4, #1 + str r0, [r5, #0x48] + ldr r0, [r7, #0x3c] + add r6, r6, #1 + str r0, [r5, #0x58] + ldr r0, [sp, #0x14] + add r5, r5, #4 + add r0, r0, #2 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r7, r7, #4 + add r0, r0, #2 + str r0, [sp, #0x10] + cmp r4, #4 + blt _02254452 + ldr r0, [sp] + add r1, sp, #0x38 + bl MOD11_02231504 + ldr r0, [sp] + add r1, sp, #0x3c + bl MOD11_02231534 + ldr r0, [sp] + bl MOD11_0222FF74 + mov r2, #0x65 + str r0, [sp, #0x4c] + ldr r1, [sp, #4] + lsl r2, r2, #2 + ldrb r1, [r1, r2] + ldr r0, [sp] + bl MOD11_02230E88 + str r0, [sp, #0xa0] + ldr r0, [sp] + bl MOD11_02231228 + str r0, [sp, #0xa4] + ldr r0, [sp] + bl MOD11_02231230 + str r0, [sp, #0xa8] + mov r0, #7 + str r0, [sp, #0x88] + ldr r0, [sp] + bl MOD11_022302A8 + add r0, r0, #3 + str r0, [sp, #0x8c] + ldr r0, [sp] + bl MOD11_02230C68 + add r4, r0, #0 + ldr r0, [sp] + bl MOD11_022302A8 + lsl r1, r0, #1 + add r0, r0, r1 + add r0, #0x9e + add r0, r4, r0 + str r0, [sp, #0x90] + mov r0, #2 + str r0, [sp, #0x94] + mov r0, #0 + ldr r2, [sp, #0x18] + str r0, [sp, #0x98] + mov r0, #8 + str r0, [sp, #0x9c] + lsl r2, r2, #0x10 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + lsr r2, r2, #0x10 + add r3, sp, #0x1c + bl FUN_02212048 + add sp, #0xac + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0225452C +MOD11_0225452C: ; 0x0225452C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r2, #0 + add r7, r1, #0 + str r3, [r6] + str r0, [sp] + str r3, [r6, #4] + mov r4, #0 + add r5, r6, #0 + str r7, [sp, #0xc] + str r6, [sp, #8] + str r7, [sp, #4] +_02254544: + ldr r0, [sp] + add r1, r4, #0 + bl MOD11_022312D0 + str r0, [r5, #8] + ldr r0, [sp, #0xc] + ldrh r1, [r0, #0x18] + ldr r0, [sp, #8] + strh r1, [r0, #0x28] + add r0, r7, r4 + add r0, #0x20 + ldrb r1, [r0] + add r0, r6, r4 + add r0, #0x30 + strb r1, [r0] + add r0, r7, r4 + add r0, #0x24 + ldrb r1, [r0] + add r0, r6, r4 + add r0, #0x34 + strb r1, [r0] + add r0, r7, r4 + add r0, #0x28 + ldrb r1, [r0] + add r0, r6, r4 + add r0, #0x38 + strb r1, [r0] + ldr r0, [sp, #4] + add r4, r4, #1 + ldr r0, [r0, #0x2c] + str r0, [r5, #0x3c] + ldr r0, [sp, #0xc] + add r5, r5, #4 + add r0, r0, #2 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, r0, #2 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #4 + str r0, [sp, #4] + cmp r4, #4 + blt _02254544 + add r1, r6, #0 + ldr r0, [sp] + add r1, #0x4c + bl MOD11_02231504 + add r6, #0x18 + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_02231534 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022545B4 +MOD11_022545B4: ; 0x022545B4 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r2, #0 + bne _022545F2 + add r0, sp, #0 + ldrh r6, [r0, #0x10] + mov r1, #9 + add r0, r6, #0 + bl FUN_0206AB18 + mov r1, #0x40 + tst r0, r1 + bne _022545D4 + mov r0, #1 + b _022545D6 +_022545D4: + mov r0, #0 +_022545D6: + strb r0, [r4] + add r0, r6, #0 + mov r1, #9 + bl FUN_0206AB18 + mov r1, #0x80 + tst r0, r1 + beq _022545EC + mov r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} +_022545EC: + mov r0, #0 + strb r0, [r5] + pop {r4, r5, r6, pc} +_022545F2: + sub r3, #0x12 + cmp r3, #0x15 + bhi _02254642 + add r0, r3, r3 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254604: ; jump table + .short _02254630 - _02254604 - 2 ; case 0 + .short _02254630 - _02254604 - 2 ; case 1 + .short _02254630 - _02254604 - 2 ; case 2 + .short _02254630 - _02254604 - 2 ; case 3 + .short _02254630 - _02254604 - 2 ; case 4 + .short _02254642 - _02254604 - 2 ; case 5 + .short _02254642 - _02254604 - 2 ; case 6 + .short _02254642 - _02254604 - 2 ; case 7 + .short _02254642 - _02254604 - 2 ; case 8 + .short _02254642 - _02254604 - 2 ; case 9 + .short _02254642 - _02254604 - 2 ; case 10 + .short _02254642 - _02254604 - 2 ; case 11 + .short _02254642 - _02254604 - 2 ; case 12 + .short _02254630 - _02254604 - 2 ; case 13 + .short _02254630 - _02254604 - 2 ; case 14 + .short _02254642 - _02254604 - 2 ; case 15 + .short _02254630 - _02254604 - 2 ; case 16 + .short _02254630 - _02254604 - 2 ; case 17 + .short _0225463A - _02254604 - 2 ; case 18 + .short _02254630 - _02254604 - 2 ; case 19 + .short _0225463A - _02254604 - 2 ; case 20 + .short _02254630 - _02254604 - 2 ; case 21 +_02254630: + mov r0, #1 + strb r0, [r4] + mov r0, #0 + strb r0, [r5] + pop {r4, r5, r6, pc} +_0225463A: + mov r0, #1 + strb r0, [r4] + strb r0, [r5] + pop {r4, r5, r6, pc} +_02254642: + mov r0, #0 + strb r0, [r4] + strb r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0225464C +MOD11_0225464C: ; 0x0225464C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02254680 + add r0, r1, #0 + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _02254680 + mov r1, #0xb4 + add r0, r1, #0 + add r0, #0xe8 + strh r1, [r4, r0] + ldr r0, _02254684 ; =MOD11_022546B4 + ldr r2, _02254688 ; =0x000003F2 + add r1, r4, #0 + bl FUN_0200CA44 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r4, r1] +_02254680: + pop {r4, pc} + nop +_02254684: .word MOD11_022546B4 +_02254688: .word 0x000003F2 + + thumb_func_start MOD11_0225468C +MOD11_0225468C: ; 0x0225468C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022546B2 + bl FUN_0200CAB4 + mov r0, #0x66 + mov r2, #0 + lsl r0, r0, #2 + str r2, [r4, r0] + add r0, r0, #4 + strh r2, [r4, r0] + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_02007558 +_022546B2: + pop {r4, pc} + + thumb_func_start MOD11_022546B4 +MOD11_022546B4: ; 0x022546B4 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x67 + lsl r1, r1, #2 + ldrh r0, [r4, r1] + add r0, #0x14 + strh r0, [r4, r1] + add r0, r1, #0 + ldrh r2, [r4, r1] + sub r0, #0x34 + cmp r2, r0 + blo _022546D4 + add r0, r1, #0 + sub r0, #0x34 + sub r0, r2, r0 + strh r0, [r4, r1] +_022546D4: + mov r0, #0x67 + lsl r0, r0, #2 + ldrh r0, [r4, r0] + bl FUN_0201B93C + mov r2, #6 + asr r1, r0, #0x1f + lsl r2, r2, #0xa + mov r3, #0 + blx _ll_mul + add r2, r1, #0 + mov r1, #4 + add r5, r0, #0 + ldr r0, [r4, #0x20] + mov r4, #0 + lsl r3, r1, #9 + add r3, r5, r3 + adc r2, r4 + lsl r2, r2, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + asr r2, r3, #0xb + lsr r2, r2, #0x14 + add r2, r3, r2 + asr r2, r2, #0xc + bl FUN_02007558 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02254710 +MOD11_02254710: ; 0x02254710 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + str r1, [sp] + str r2, [sp, #4] + add r6, r3, #0 + bl MOD11_022300DC + add r4, r0, #0 + add r0, r7, #0 + bl MOD11_02230118 + add r5, r0, #0 + add r0, r7, #0 + bl MOD11_02230124 + add r7, r0, #0 + add r0, sp, #0x10 + ldrh r2, [r5] + ldrb r3, [r0, #0x10] + add r0, r2, #5 + add r1, r0, r3 + mov r0, #1 + lsl r0, r0, #0xc + cmp r1, r0 + bls _0225474A + strh r2, [r7] + mov r0, #0 + strh r0, [r5] +_0225474A: + ldr r1, [sp] + add r0, sp, #8 + strb r1, [r0] + ldr r1, [sp, #4] + strb r1, [r0, #1] + add r1, sp, #0x10 + ldrb r1, [r1, #0x10] + strh r1, [r0, #2] + add r1, sp, #8 + mov r0, #0 +_0225475E: + ldrb r7, [r1, r0] + ldrh r2, [r5] + add r0, r0, #1 + strb r7, [r4, r2] + ldrh r2, [r5] + add r2, r2, #1 + strh r2, [r5] + cmp r0, #4 + blo _0225475E + mov r0, #0 + cmp r3, #0 + ble _02254788 +_02254776: + ldrb r2, [r6, r0] + ldrh r1, [r5] + add r0, r0, #1 + strb r2, [r4, r1] + ldrh r1, [r5] + add r1, r1, #1 + strh r1, [r5] + cmp r0, r3 + blt _02254776 +_02254788: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0225478C +MOD11_0225478C: ; 0x0225478C + push {r3, r4, r5, r6, r7, lr} + add r3, r1, #0 + ldrb r6, [r3, #3] + ldrb r1, [r3] + ldrb r7, [r3, #2] + lsl r6, r6, #8 + add r5, r0, #0 + mov r2, #0 + orr r6, r7 + ldrb r4, [r3, #1] + cmp r1, #0 + bne _022547D2 + ldr r0, [r5, #0x30] + lsl r1, r4, #8 + add r4, r0, r1 + mov r0, #0x23 + lsl r0, r0, #8 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0225481C + cmp r6, #0 + ble _022547CE + mov r4, #0x23 + lsl r4, r4, #8 +_022547BC: + add r0, r3, r2 + ldr r7, [r5, #0x30] + ldrb r0, [r0, #4] + add r7, r1, r7 + add r7, r2, r7 + add r2, r2, #1 + strb r0, [r7, r4] + cmp r2, r6 + blt _022547BC +_022547CE: + mov r2, #1 + b _0225481C +_022547D2: + cmp r1, #1 + bne _022547FE + lsl r0, r4, #2 + add r0, r5, r0 + ldr r1, [r0, #0x34] + add r1, #0x94 + ldrb r1, [r1] + cmp r1, #0 + bne _0225481C + cmp r6, #0 + ble _022547FA +_022547E8: + add r1, r3, r2 + ldrb r4, [r1, #4] + ldr r1, [r0, #0x34] + add r1, r1, r2 + add r1, #0x94 + add r2, r2, #1 + strb r4, [r1] + cmp r2, r6 + blt _022547E8 +_022547FA: + mov r2, #1 + b _0225481C +_022547FE: + cmp r1, #2 + bne _0225481C + ldrb r7, [r3, #4] + ldrb r6, [r3, #5] + bl MOD11_02230DD4 + cmp r0, #0 + beq _0225481A + ldr r0, [r5, #0x30] + add r1, r6, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD11_02243340 +_0225481A: + mov r2, #1 +_0225481C: + add r0, r2, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02254820 +MOD11_02254820: ; 0x02254820 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl MOD11_022300DC + add r4, r0, #0 + add r0, r6, #0 + bl MOD11_0223010C + add r5, r0, #0 + add r0, r6, #0 + bl MOD11_02230118 + add r7, r0, #0 + add r0, r6, #0 + bl MOD11_02230124 + ldrh r1, [r5] + ldrh r2, [r7] + cmp r1, r2 + beq _02254876 + ldrh r2, [r0] + cmp r1, r2 + bne _02254854 + mov r1, #0 + strh r1, [r5] + strh r1, [r0] +_02254854: + ldrh r1, [r5] + add r0, r6, #0 + add r1, r4, r1 + bl MOD11_0225478C + cmp r0, #1 + bne _02254876 + ldrh r0, [r5] + add r1, r0, #2 + ldrb r2, [r4, r1] + add r1, r0, #3 + ldrb r1, [r4, r1] + lsl r1, r1, #8 + orr r1, r2 + add r1, r1, #4 + add r0, r0, r1 + strh r0, [r5] +_02254876: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02254878 +MOD11_02254878: ; 0x02254878 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + str r1, [sp, #4] + ldr r1, [r5, #0x2c] + mov r0, #4 + add r7, r2, #0 + add r6, r3, #0 + tst r0, r1 + beq _022548C8 + ldr r0, [sp, #4] + cmp r0, #1 + bne _022548B2 + mov r4, #0 + bl FUN_02030F20 + cmp r0, #0 + ble _022548B2 +_0225489C: + ldrb r3, [r6] + ldr r0, [r5, #0x30] + add r1, r4, #0 + add r2, r7, #0 + bl MOD11_02243304 + add r4, r4, #1 + bl FUN_02030F20 + cmp r4, r0 + blt _0225489C +_022548B2: + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + ldr r1, [sp, #4] + add r2, r7, #0 + str r0, [sp] + add r0, r5, #0 + add r3, r6, #0 + bl FUN_0206C0C8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022548C8: + ldr r0, [sp, #4] + cmp r0, #1 + bne _022548D8 + ldrb r3, [r6] + ldr r0, [r5, #0x30] + mov r1, #0 + bl MOD11_02243304 +_022548D8: + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + ldr r1, [sp, #4] + add r2, r7, #0 + str r0, [sp] + add r0, r5, #0 + add r3, r6, #0 + bl MOD11_02254710 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_022548F0 +MOD11_022548F0: ; 0x022548F0 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #1 + str r1, [sp, #4] + mov r3, #4 + str r3, [sp] + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD11_02254908 +MOD11_02254908: ; 0x02254908 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + add r7, r1, #0 + mov r3, #2 + add r2, sp, #0xc + strb r3, [r2] + mov r2, #0xc0 + add r4, r7, #0 + mul r4, r2 + add r2, sp, #0xc + ldrb r2, [r2, #1] + mov r3, #3 + add r6, r0, #0 + str r2, [sp, #4] + bic r2, r3 + str r2, [sp, #4] + ldr r2, [r6, #0x30] + add r3, r2, r4 + ldr r2, _02254A04 ; =0x00002DBE + str r2, [sp, #8] + ldrb r2, [r3, r2] + lsl r2, r2, #0x1c + lsr r3, r2, #0x1c + mov r2, #3 + and r3, r2 + ldr r2, [sp, #4] + orr r3, r2 + add r2, sp, #0xc + strb r3, [r2, #1] + ldrb r3, [r2, #1] + mov r2, #4 + bic r3, r2 + ldr r2, [r6, #0x30] + add r5, r2, r4 + ldr r2, [sp, #8] + sub r2, #0x58 + ldrb r2, [r5, r2] + lsl r2, r2, #0x1a + lsr r2, r2, #0x1f + lsl r2, r2, #0x1f + lsr r2, r2, #0x1d + orr r3, r2 + add r2, sp, #0xc + strb r3, [r2, #1] + ldr r2, [r6, #0x30] + add r3, r2, r4 + ldr r2, [sp, #8] + sub r2, #0x7e + ldrh r3, [r3, r2] + add r2, sp, #0xc + strh r3, [r2, #2] + ldr r2, [r6, #0x30] + add r3, r2, r4 + ldr r2, [sp, #8] + sub r2, #0x16 + str r2, [sp, #8] + ldr r2, [r3, r2] + str r2, [sp, #0x10] + bl MOD11_02230260 + add r2, r0, #0 + ldr r0, [r6, #0x30] + add r1, r7, #0 + mov r3, #1 + bl MOD11_0224ACAC + add r2, sp, #0xc + str r0, [sp, #0x14] + ldrb r0, [r2, #1] + mov r1, #0xf8 + add r5, sp, #0xc + bic r0, r1 + ldr r1, [r6, #0x30] + add r3, r1, r4 + ldr r1, _02254A08 ; =0x00002D66 + mov r4, #0 + ldrb r1, [r3, r1] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1b + lsl r1, r1, #0x1b + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r2, #1] +_022549AE: + ldr r0, [r6, #0x30] + add r1, r7, #0 + add r2, r4, #6 + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0xc] + add r2, r4, #0 + ldr r0, [r6, #0x30] + add r1, r7, #0 + add r2, #0x1f + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x14] + add r2, r4, #0 + ldr r0, [r6, #0x30] + add r1, r7, #0 + add r2, #0x27 + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x1c] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _022549AE + ldr r0, [r6, #0x30] + add r1, r7, #0 + mov r2, #0x2d + add r3, sp, #0x30 + bl MOD11_02243420 + mov r0, #0x3c + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + add r2, r7, #0 + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254A04: .word 0x00002DBE +_02254A08: .word 0x00002D66 + + thumb_func_start MOD11_02254A0C +MOD11_02254A0C: ; 0x02254A0C + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r7, r1, #0 + mov r3, #3 + add r2, sp, #8 + strb r3, [r2] + mov r2, #0xc0 + add r4, r7, #0 + mul r4, r2 + add r2, sp, #8 + ldrb r5, [r2, #1] + mov r2, #3 + add r6, r0, #0 + bic r5, r2 + ldr r2, [r6, #0x30] + add r3, r2, r4 + ldr r2, _02254B34 ; =0x00002DBE + str r2, [sp, #4] + ldrb r2, [r3, r2] + lsl r2, r2, #0x1c + lsr r3, r2, #0x1c + mov r2, #3 + and r2, r3 + add r3, r5, #0 + orr r3, r2 + add r2, sp, #8 + strb r3, [r2, #1] + ldrb r3, [r2, #1] + mov r2, #4 + bic r3, r2 + ldr r2, [r6, #0x30] + add r5, r2, r4 + ldr r2, [sp, #4] + sub r2, #0x58 + ldrb r2, [r5, r2] + lsl r2, r2, #0x1a + lsr r2, r2, #0x1f + lsl r2, r2, #0x1f + lsr r2, r2, #0x1d + orr r3, r2 + add r2, sp, #8 + strb r3, [r2, #1] + ldr r2, [r6, #0x30] + add r3, r2, r4 + ldr r2, [sp, #4] + sub r2, #0x7e + ldrh r3, [r3, r2] + add r2, sp, #8 + strh r3, [r2, #2] + ldr r2, [r6, #0x30] + add r3, r2, r4 + ldr r2, [sp, #4] + sub r2, #0x16 + str r2, [sp, #4] + ldr r2, [r3, r2] + str r2, [sp, #0xc] + bl MOD11_02230260 + add r2, r0, #0 + ldr r0, [r6, #0x30] + add r1, r7, #0 + mov r3, #1 + bl MOD11_0224ACAC + str r0, [sp, #0x10] + ldr r0, [r6, #0x30] + add r2, sp, #8 + add r1, r0, r7 + ldr r0, _02254B38 ; =0x0000219C + ldrb r0, [r1, r0] + mov r1, #0xf8 + str r0, [sp, #0x14] + ldrb r0, [r2, #1] + bic r0, r1 + ldr r1, [r6, #0x30] + add r3, r1, r4 + ldr r1, _02254B3C ; =0x00002D66 + ldrb r3, [r3, r1] + add r1, #0x59 + lsl r3, r3, #0x1b + lsr r3, r3, #0x1b + lsl r3, r3, #0x1b + lsr r3, r3, #0x18 + orr r0, r3 + strb r0, [r2, #1] + ldr r0, [r6, #0x30] + add r0, r0, r4 + ldrb r0, [r0, r1] + add r1, r7, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + bl MOD11_022302BC + ldr r1, [r6, #0x30] + ldr r2, [sp, #0x14] + add r1, r1, r0 + ldr r0, _02254B38 ; =0x0000219C + ldrb r0, [r1, r0] + add r1, r7, #0 + str r0, [sp, #0x50] + add r0, r6, #0 + bl MOD11_02230F6C + mov r4, #0 + add r5, sp, #8 +_02254ADE: + ldr r0, [r6, #0x30] + add r1, r7, #0 + add r2, r4, #6 + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x18] + add r2, r4, #0 + ldr r0, [r6, #0x30] + add r1, r7, #0 + add r2, #0x1f + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x20] + add r2, r4, #0 + ldr r0, [r6, #0x30] + add r1, r7, #0 + add r2, #0x27 + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x28] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02254ADE + ldr r0, [r6, #0x30] + add r1, r7, #0 + mov r2, #0x2d + add r3, sp, #0x38 + bl MOD11_02243420 + mov r0, #0x74 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + add r2, r7, #0 + add r3, sp, #8 + bl MOD11_02254878 + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254B34: .word 0x00002DBE +_02254B38: .word 0x0000219C +_02254B3C: .word 0x00002D66 + + thumb_func_start MOD11_02254B40 +MOD11_02254B40: ; 0x02254B40 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r7, r1, #0 + add r4, r0, #0 + mov r1, #4 + add r6, sp, #0x10 + strb r1, [r6] + mov r0, #0xc0 + add r5, r7, #0 + mul r5, r0 + ldr r0, [r4, #0x30] + str r2, [sp, #4] + add r2, r0, r5 + ldr r0, _02254D34 ; =0x00002DB0 + str r3, [sp, #8] + ldr r3, [r2, r0] + lsl r1, r1, #0x13 + tst r1, r3 + ldrb r1, [r6, #1] + beq _02254B8A + mov r3, #3 + bic r1, r3 + add r3, r0, #0 + add r3, #0x4a + ldrh r2, [r2, r3] + add r0, #0x34 + lsl r2, r2, #0x18 + lsr r3, r2, #0x18 + mov r2, #3 + and r2, r3 + orr r1, r2 + strb r1, [r6, #1] + ldr r1, [r4, #0x30] + add r1, r1, r5 + ldr r0, [r1, r0] + str r0, [sp, #0x14] + b _02254BAA +_02254B8A: + mov r3, #3 + bic r1, r3 + add r3, r0, #0 + add r3, #0xe + ldrb r2, [r2, r3] + sub r0, #8 + lsl r2, r2, #0x1c + lsr r3, r2, #0x1c + mov r2, #3 + and r2, r3 + orr r1, r2 + strb r1, [r6, #1] + ldr r1, [r4, #0x30] + add r1, r1, r5 + ldr r0, [r1, r0] + str r0, [sp, #0x14] +_02254BAA: + mov r0, #0xc0 + add r6, r7, #0 + add r3, sp, #0x10 + mul r6, r0 + ldrb r0, [r3, #1] + mov r1, #4 + bic r0, r1 + ldr r1, [r4, #0x30] + add r2, r1, r6 + ldr r1, _02254D38 ; =0x00002D66 + ldrb r2, [r2, r1] + sub r1, #0x26 + lsl r2, r2, #0x1a + lsr r2, r2, #0x1f + lsl r2, r2, #0x1f + lsr r2, r2, #0x1d + orr r0, r2 + strb r0, [r3, #1] + ldr r0, [r4, #0x30] + add r0, r0, r6 + ldrh r0, [r0, r1] + add r1, r7, #0 + strh r0, [r3, #2] + add r0, r4, #0 + bl MOD11_02230260 + add r2, r0, #0 + ldr r0, [r4, #0x30] + add r1, r7, #0 + mov r3, #0 + bl MOD11_0224ACAC + str r0, [sp, #0x18] + ldr r0, [r4, #0x30] + mov r2, #0xf8 + add r1, r0, r7 + ldr r0, _02254D3C ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #0x1c] + add r0, sp, #0x10 + ldrb r1, [r0, #1] + bic r1, r2 + ldr r2, [r4, #0x30] + add r3, r2, r6 + ldr r2, _02254D38 ; =0x00002D66 + ldrb r3, [r3, r2] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1b + lsl r3, r3, #0x1b + lsr r3, r3, #0x18 + orr r1, r3 + strb r1, [r0, #1] + ldr r0, [sp, #4] + cmp r0, #0 + beq _02254C1C + str r0, [sp, #0x20] + b _02254C26 +_02254C1C: + ldr r0, [r4, #0x30] + add r2, #0x59 + add r0, r0, r5 + ldrb r0, [r0, r2] + str r0, [sp, #0x20] +_02254C26: + ldr r0, [sp, #8] + str r0, [sp, #0x24] + ldr r0, [r4, #0x30] + add r1, r0, r5 + ldr r0, _02254D34 ; =0x00002DB0 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x18 + tst r0, r1 + beq _02254C3E + mov r0, #1 + b _02254C40 +_02254C3E: + mov r0, #0 +_02254C40: + ldr r2, [sp, #0x1c] + str r0, [sp, #0x5c] + add r0, r4, #0 + add r1, r7, #0 + bl MOD11_02230F6C + mov r6, #0 + add r5, sp, #0x10 +_02254C50: + ldr r0, [r4, #0x30] + add r1, r7, #0 + add r2, r6, #6 + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x18] + add r2, r6, #0 + ldr r0, [r4, #0x30] + add r1, r7, #0 + add r2, #0x1f + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x20] + add r2, r6, #0 + ldr r0, [r4, #0x30] + add r1, r7, #0 + add r2, #0x27 + mov r3, #0 + bl MOD11_02243420 + strh r0, [r5, #0x28] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _02254C50 + ldr r0, [r4, #0x30] + add r1, r7, #0 + mov r2, #0x2d + add r3, sp, #0x40 + bl MOD11_02243420 + add r3, sp, #0x10 + mov r2, #0 + mov ip, r2 + str r3, [sp, #0xc] + add r5, r3, #0 +_02254C9C: + ldr r0, [r4, #0x30] + add r1, r0, r2 + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r1, [r1, r0] + ldr r0, [sp, #0xc] + add r0, #0x50 + strh r1, [r0] + ldr r0, [r4, #0x30] + add r1, r0, r2 + ldr r0, _02254D38 ; =0x00002D66 + ldrb r0, [r1, r0] + lsl r0, r0, #0x1a + lsr r1, r0, #0x1f + add r0, r3, #0 + add r0, #0x5c + strb r1, [r0] + ldr r0, [r4, #0x30] + add r1, r0, r2 + ldr r0, _02254D38 ; =0x00002D66 + ldrb r0, [r1, r0] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1b + add r0, r3, #0 + add r0, #0x60 + strb r1, [r0] + ldr r0, [r4, #0x30] + add r6, r0, r2 + ldr r0, _02254D34 ; =0x00002DB0 + ldr r1, [r6, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r1 + beq _02254CF2 + ldr r0, _02254D40 ; =0x00002DFA + ldrh r1, [r6, r0] + add r0, r3, #0 + add r0, #0x58 + strb r1, [r0] + ldr r0, [r4, #0x30] + add r1, r0, r2 + ldr r0, _02254D44 ; =0x00002DE4 + b _02254D06 +_02254CF2: + ldr r0, _02254D48 ; =0x00002DBE + ldrb r0, [r6, r0] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + add r0, r3, #0 + add r0, #0x58 + strb r1, [r0] + ldr r0, [r4, #0x30] + add r1, r0, r2 + ldr r0, _02254D4C ; =0x00002DA8 +_02254D06: + ldr r0, [r1, r0] + add r2, #0xc0 + str r0, [r5, #0x64] + ldr r0, [sp, #0xc] + add r3, r3, #1 + add r0, r0, #2 + str r0, [sp, #0xc] + mov r0, ip + add r0, r0, #1 + add r5, r5, #4 + mov ip, r0 + cmp r0, #4 + blt _02254C9C + mov r0, #0x74 + str r0, [sp] + add r0, r4, #0 + mov r1, #1 + add r2, r7, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254D34: .word 0x00002DB0 +_02254D38: .word 0x00002D66 +_02254D3C: .word 0x0000219C +_02254D40: .word 0x00002DFA +_02254D44: .word 0x00002DE4 +_02254D48: .word 0x00002DBE +_02254D4C: .word 0x00002DA8 + + thumb_func_start MOD11_02254D50 +MOD11_02254D50: ; 0x02254D50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r4, r1, #0 + lsl r1, r2, #2 + str r0, [sp, #4] + add r0, r0, r1 + ldr r1, [r0, #0x34] + ldr r0, _02254E8C ; =0x00000195 + str r2, [sp, #8] + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02254D6E + mov r2, #2 + b _02254D70 +_02254D6E: + mov r2, #0 +_02254D70: + ldr r0, [sp, #8] + mov r1, #0xc0 + add r5, r0, #0 + ldr r0, [sp, #4] + mul r5, r1 + ldr r0, [r0, #0x30] + ldr r3, _02254E90 ; =0x00002D66 + add r0, r0, r5 + ldrb r0, [r0, r3] + mov r1, #5 + lsl r0, r0, #0x1b + lsr r7, r0, #0x1b + add r0, sp, #0xc + strb r1, [r0] + ldr r0, [sp, #4] + ldr r0, [r0, #0x30] + add r1, r0, r5 + add r0, r3, #0 + add r0, #0x4a + ldr r6, [r1, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r6 + beq _02254DC4 + add r0, r3, #0 + add r0, #0x7e + ldr r0, [r1, r0] + lsl r2, r2, #0x18 + str r0, [sp] + add r0, r3, #0 + sub r0, #0x26 + add r3, #0x94 + ldrh r0, [r1, r0] + ldrh r1, [r1, r3] + lsl r3, r7, #0x18 + lsr r2, r2, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068E88 + b _02254DE6 +_02254DC4: + add r0, r3, #0 + add r0, #0x42 + ldr r0, [r1, r0] + lsl r2, r2, #0x18 + str r0, [sp] + add r0, r3, #0 + sub r0, #0x26 + add r3, #0x58 + ldrh r0, [r1, r0] + ldrb r1, [r1, r3] + lsl r3, r7, #0x18 + lsr r2, r2, #0x18 + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + lsr r3, r3, #0x18 + bl FUN_02068E88 +_02254DE6: + add r1, sp, #0xc + strb r0, [r1, #1] + ldr r0, [sp, #4] + ldr r1, _02254E94 ; =0x00002DBF + ldr r0, [r0, #0x30] + add r0, r0, r5 + ldrb r2, [r0, r1] + add r0, sp, #0xc + sub r1, #0xf + strh r2, [r0, #2] + ldr r0, [sp, #4] + ldr r0, [r0, #0x30] + add r0, r0, r5 + ldr r1, [r0, r1] + mov r0, #1 + lsl r0, r0, #0x18 + tst r0, r1 + beq _02254E0E + mov r0, #1 + b _02254E10 +_02254E0E: + mov r0, #0 +_02254E10: + str r0, [sp, #0x10] + mov r0, #0 + mov ip, r0 + add r7, sp, #0xc + ldr r0, _02254E90 ; =0x00002D66 + add r3, r7, #0 + add r2, r4, r0 + add r0, #0x58 + add r5, r7, #0 + add r6, r4, r0 +_02254E24: + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r4, r0] + strh r0, [r7, #8] + ldrb r0, [r2] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + strb r0, [r3, #0x14] + ldrb r0, [r2] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1b + strb r0, [r3, #0x18] + ldr r0, _02254E98 ; =0x00002DB0 + ldr r1, [r4, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r1 + beq _02254E52 + ldr r0, _02254E9C ; =0x00002DFA + ldrh r0, [r4, r0] + strb r0, [r3, #0x10] + ldr r0, _02254EA0 ; =0x00002DE4 + b _02254E5C +_02254E52: + ldrb r0, [r6] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + strb r0, [r3, #0x10] + ldr r0, _02254EA4 ; =0x00002DA8 +_02254E5C: + ldr r0, [r4, r0] + add r4, #0xc0 + str r0, [r5, #0x1c] + mov r0, ip + add r0, r0, #1 + add r7, r7, #2 + add r2, #0xc0 + add r3, r3, #1 + add r5, r5, #4 + add r6, #0xc0 + mov ip, r0 + cmp r0, #4 + blt _02254E24 + mov r0, #0x2c + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + mov r1, #1 + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254E8C: .word 0x00000195 +_02254E90: .word 0x00002D66 +_02254E94: .word 0x00002DBF +_02254E98: .word 0x00002DB0 +_02254E9C: .word 0x00002DFA +_02254EA0: .word 0x00002DE4 +_02254EA4: .word 0x00002DA8 + + thumb_func_start MOD11_02254EA8 +MOD11_02254EA8: ; 0x02254EA8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + add r4, r0, #0 + lsl r0, r7, #2 + add r0, r4, r0 + ldr r1, [r0, #0x34] + ldr r0, _02254F58 ; =0x00000195 + str r2, [sp, #4] + ldrb r1, [r1, r0] + mov r0, #1 + tst r0, r1 + beq _02254EC6 + mov r2, #2 + b _02254EC8 +_02254EC6: + mov r2, #0 +_02254EC8: + mov r0, #0xc0 + add r6, r7, #0 + mul r6, r0 + ldr r0, [r4, #0x30] + ldr r5, _02254F5C ; =0x00002D66 + add r0, r0, r6 + ldrb r0, [r0, r5] + mov r1, #6 + lsl r0, r0, #0x1b + lsr r3, r0, #0x1b + add r0, sp, #8 + strb r1, [r0] + ldr r0, [r4, #0x30] + add r1, r0, r6 + add r0, r5, #0 + add r0, #0x4a + ldr r6, [r1, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r6 + beq _02254F16 + add r0, r5, #0 + add r0, #0x7e + ldr r0, [r1, r0] + lsl r2, r2, #0x18 + str r0, [sp] + add r0, r5, #0 + sub r0, #0x26 + add r5, #0x94 + ldrh r0, [r1, r0] + ldrh r1, [r1, r5] + lsl r3, r3, #0x18 + lsr r2, r2, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068E88 + b _02254F38 +_02254F16: + add r0, r5, #0 + add r0, #0x42 + ldr r0, [r1, r0] + lsl r2, r2, #0x18 + str r0, [sp] + add r0, r5, #0 + sub r0, #0x26 + add r5, #0x58 + ldrh r0, [r1, r0] + ldrb r1, [r1, r5] + lsl r3, r3, #0x18 + lsr r2, r2, #0x18 + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + lsr r3, r3, #0x18 + bl FUN_02068E88 +_02254F38: + add r1, sp, #8 + strb r0, [r1, #1] + ldr r0, [sp, #4] + add r1, sp, #8 + strh r0, [r1, #2] + mov r0, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #1 + add r2, r7, #0 + add r3, sp, #8 + bl MOD11_02254878 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02254F58: .word 0x00000195 +_02254F5C: .word 0x00002D66 + + thumb_func_start MOD11_02254F60 +MOD11_02254F60: ; 0x02254F60 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #7 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02254F7C +MOD11_02254F7C: ; 0x02254F7C + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #8 + add r3, sp, #4 + strb r1, [r3] + mov r1, #0x34 + mul r1, r2 + add r1, r0, r1 + add r1, #0xad + ldrb r1, [r1] + strh r1, [r3, #2] + add r1, r0, r2 + add r1, #0xa8 + ldrb r1, [r1] + strb r1, [r3, #1] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD11_02254FAC +MOD11_02254FAC: ; 0x02254FAC + push {r4, r5, r6, lr} + sub sp, #8 + mov r6, #9 + add r3, sp, #4 + strb r6, [r3] + add r5, r0, #0 + strb r2, [r3, #1] + add r4, r1, #0 + bl MOD11_022302BC + ldr r1, [r5, #0x30] + add r2, r4, #0 + add r1, r1, r0 + ldr r0, _02254FE0 ; =0x0000219C + add r3, sp, #4 + ldrb r1, [r1, r0] + add r0, sp, #4 + strh r1, [r0, #2] + mov r0, #4 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + bl MOD11_02254878 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254FE0: .word 0x0000219C + + thumb_func_start MOD11_02254FE4 +MOD11_02254FE4: ; 0x02254FE4 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0xa + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02255000 +MOD11_02255000: ; 0x02255000 + push {r3, r4, lr} + sub sp, #0xc + add r3, r1, #0 + mov r1, #0xb + add r4, sp, #4 + strb r1, [r4] + mov r1, #0x34 + mul r1, r3 + add r1, r0, r1 + add r1, #0xad + ldrb r1, [r1] + strh r1, [r4, #2] + add r1, r0, r3 + add r1, #0xa8 + ldrb r1, [r1] + strb r1, [r4, #1] + str r2, [sp, #8] + mov r1, #8 + str r1, [sp] + add r2, r3, #0 + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD11_02255034 +MOD11_02255034: ; 0x02255034 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r1, #0 + ldr r1, _02255158 ; =0x0000219C + add r4, r2, #0 + add r7, r5, r1 + ldrb r2, [r7, r4] + add r1, r4, #0 + str r0, [sp, #4] + str r3, [sp, #8] + bl MOD11_02230014 + add r6, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x10] + add r0, r6, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + mov r0, #0xc + add r2, sp, #0x14 + strb r0, [r2] + mov r0, #0xc0 + add r6, r4, #0 + mul r6, r0 + ldr r1, _0225515C ; =0x00002D74 + add r0, r5, r6 + ldrb r3, [r0, r1] + strb r3, [r2, #1] + add r3, r1, #0 + add r3, #0x18 + ldr r3, [r0, r3] + add r1, #0x1c + strh r3, [r2, #2] + ldr r0, [r0, r1] + add r1, r4, #0 + strh r0, [r2, #4] + ldrb r0, [r7, r4] + strb r0, [r2, #6] + add r0, r5, #0 + bl MOD11_0224524C + add r1, sp, #0x14 + ldrb r2, [r1, #7] + mov r3, #0x1f + lsl r0, r0, #0x18 + bic r2, r3 + lsr r3, r0, #0x18 + mov r0, #0x1f + and r0, r3 + orr r0, r2 + strb r0, [r1, #7] + mov r0, #0xb5 + lsl r0, r0, #6 + add r7, r5, r0 + ldrh r0, [r7, r6] + cmp r0, #0x1d + beq _022550B6 + cmp r0, #0x20 + bne _022550D0 +_022550B6: + ldr r0, _02255160 ; =0x00002D54 + add r1, r5, r6 + ldr r0, [r1, r0] + lsr r0, r0, #0x1f + bne _022550D0 + add r0, sp, #0x14 + ldrb r1, [r0, #7] + mov r2, #0x60 + bic r1, r2 + mov r2, #0x40 + orr r1, r2 + strb r1, [r0, #7] + b _022550EA +_022550D0: + add r3, sp, #0x14 + ldrb r2, [r3, #7] + mov r0, #0x60 + add r1, r5, r6 + bic r2, r0 + ldr r0, _02255164 ; =0x00002DBE + ldrb r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + lsl r0, r0, #0x1e + lsr r0, r0, #0x19 + orr r0, r2 + strb r0, [r3, #7] +_022550EA: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + bl FUN_02068758 + mov r1, #0xc0 + mul r1, r4 + add r2, r5, r1 + ldr r1, _02255168 ; =0x00002DA4 + ldr r1, [r2, r1] + sub r0, r1, r0 + ldr r1, [sp, #0xc] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + add r1, r1, #1 + bl FUN_02068758 + add r5, r0, #0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + bl FUN_02068758 + sub r0, r5, r0 + str r0, [sp, #0x20] + ldrh r1, [r7, r6] + ldr r0, [sp, #4] + bl MOD11_02231668 + add r3, sp, #0x14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + ldrb r1, [r3, #7] + mov r2, #0x80 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r3, #7] + ldr r0, [sp, #4] + bl MOD11_02230E00 + str r0, [sp, #0x24] + ldr r0, [sp, #8] + add r1, sp, #0x14 + strb r0, [r1, #0x14] + mov r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #0x14 + bl MOD11_02254878 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_02255158: .word 0x0000219C +_0225515C: .word 0x00002D74 +_02255160: .word 0x00002D54 +_02255164: .word 0x00002DBE +_02255168: .word 0x00002DA4 + + thumb_func_start MOD11_0225516C +MOD11_0225516C: ; 0x0225516C + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0xd + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02255188 +MOD11_02255188: ; 0x02255188 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + str r0, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + mov r0, #0 + add r1, sp, #0x28 + mov r2, #0x2c + add r6, r3, #0 + blx MIi_CpuClearFast + ldr r0, [sp, #4] + bl MOD11_0222FF78 + ldr r1, [sp, #0xc] + bl MOD11_02243400 + mov r5, #0 + ldr r0, [sp, #4] + add r4, r5, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _022551D8 +_022551B8: + ldr r0, [sp, #8] + add r1, r4, #0 + bl MOD11_0224AD04 + cmp r0, #0 + bne _022551CC + add r0, r4, #0 + bl FUN_0206A92C + orr r5, r0 +_022551CC: + ldr r0, [sp, #4] + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _022551B8 +_022551D8: + mov r1, #0xe + add r0, sp, #0x28 + strb r1, [r0] + strb r6, [r0, #1] + ldr r1, _022554F8 ; =0x00003108 + ldr r0, [sp, #8] + ldrb r0, [r0, r1] + add r1, r0, #0 + orr r1, r5 + add r0, sp, #0x48 + strb r1, [r0, #9] + ldr r0, [sp, #4] + bl MOD11_0222FF74 + mov r1, #2 + str r0, [sp, #0x20] + tst r0, r1 + beq _0225520E + ldr r0, [sp, #0x20] + mov r1, #8 + tst r0, r1 + bne _0225520E + ldr r0, [sp, #0xc] + mov r1, #1 + add r4, r0, #0 + and r4, r1 + b _02255210 +_0225520E: + ldr r4, [sp, #0xc] +_02255210: + ldr r0, [sp, #4] + add r1, r4, #0 + bl MOD11_0222FF88 + str r0, [sp, #0x24] + mov r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _022552A6 + mov r0, #6 + add r1, r4, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r5, sp, #0x28 + add r7, r0, r1 + mov r1, #0xa9 + ldr r0, [sp, #0x20] + lsl r1, r1, #2 + and r0, r1 + str r0, [sp, #0x1c] +_0225523A: + ldr r1, _022554FC ; =0x0000312C + ldr r0, [sp, #0x24] + ldrb r1, [r7, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02255298 + ldr r1, _02255500 ; =0x000001EE + cmp r0, r1 + beq _02255298 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02255280 + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0225527A + mov r0, #3 + strb r0, [r5, #8] + b _02255284 +_0225527A: + mov r0, #1 + strb r0, [r5, #8] + b _02255284 +_02255280: + mov r0, #2 + strb r0, [r5, #8] +_02255284: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0225528E + mov r0, #0 + b _02255294 +_0225528E: + add r0, r4, #0 + bl FUN_02068698 +_02255294: + strb r0, [r5, #2] + add r5, r5, #1 +_02255298: + ldr r0, [sp, #0x24] + add r7, r7, #1 + add r6, r6, #1 + bl FUN_0206B9AC + cmp r6, r0 + blt _0225523A +_022552A6: + ldr r0, [sp, #0x20] + mov r1, #0xc + and r0, r1 + cmp r0, #0xc + beq _022552C4 + ldr r0, [sp, #0x20] + mov r1, #0x10 + tst r0, r1 + bne _022552C4 + ldr r0, [sp, #0x20] + cmp r0, #0x4b + beq _022552C4 + cmp r0, #0xcb + beq _022552C4 + b _022553FC +_022552C4: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + bl MOD11_02230270 + cmp r0, #0 + beq _022552DA + ldr r0, [sp, #4] + mov r1, #2 + bl MOD11_0223022C + b _022552E2 +_022552DA: + ldr r0, [sp, #4] + mov r1, #3 + bl MOD11_0223022C +_022552E2: + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, r4, #0 + bl MOD11_0222FF88 + str r0, [sp, #0x10] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0225535E + add r1, r4, #0 + mov r0, #6 + mul r1, r0 + ldr r0, [sp, #8] + add r4, sp, #0x28 + add r6, r0, r1 +_02255304: + ldr r1, _022554FC ; =0x0000312C + ldr r0, [sp, #0x10] + ldrb r1, [r6, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02255350 + ldr r1, _02255500 ; =0x000001EE + cmp r0, r1 + beq _02255350 + add r0, r7, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0225534A + add r0, r7, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02255344 + mov r0, #3 + strb r0, [r4, #0xe] + b _0225534E +_02255344: + mov r0, #1 + strb r0, [r4, #0xe] + b _0225534E +_0225534A: + mov r0, #2 + strb r0, [r4, #0xe] +_0225534E: + add r4, r4, #1 +_02255350: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _02255304 +_0225535E: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + bl MOD11_02230270 + cmp r0, #0 + beq _02255374 + ldr r0, [sp, #4] + mov r1, #4 + bl MOD11_0223022C + b _0225537C +_02255374: + ldr r0, [sp, #4] + mov r1, #5 + bl MOD11_0223022C +_0225537C: + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, r4, #0 + bl MOD11_0222FF88 + str r0, [sp, #0x14] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02255482 + add r1, r4, #0 + mov r0, #6 + mul r1, r0 + ldr r0, [sp, #8] + add r4, sp, #0x28 + add r6, r0, r1 + add r4, #3 +_022553A0: + ldr r1, _022554FC ; =0x0000312C + ldr r0, [sp, #0x14] + ldrb r1, [r6, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022553EC + ldr r1, _02255500 ; =0x000001EE + cmp r0, r1 + beq _022553EC + add r0, r7, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022553E6 + add r0, r7, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _022553E0 + mov r0, #3 + strb r0, [r4, #0xe] + b _022553EA +_022553E0: + mov r0, #1 + strb r0, [r4, #0xe] + b _022553EA +_022553E6: + mov r0, #2 + strb r0, [r4, #0xe] +_022553EA: + add r4, r4, #1 +_022553EC: + ldr r0, [sp, #0x14] + add r6, r6, #1 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _022553A0 + b _02255482 +_022553FC: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + mov r2, #2 + bl MOD11_02230308 + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, r4, #0 + bl MOD11_0222FF88 + str r0, [sp, #0x18] + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02255482 + add r1, r4, #0 + mov r0, #6 + mul r1, r0 + ldr r0, [sp, #8] + add r4, sp, #0x28 + add r6, r0, r1 +_02255428: + ldr r1, _022554FC ; =0x0000312C + ldr r0, [sp, #0x18] + ldrb r1, [r6, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02255474 + ldr r1, _02255500 ; =0x000001EE + cmp r0, r1 + beq _02255474 + add r0, r7, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _0225546E + add r0, r7, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02255468 + mov r0, #3 + strb r0, [r4, #0xe] + b _02255472 +_02255468: + mov r0, #1 + strb r0, [r4, #0xe] + b _02255472 +_0225546E: + mov r0, #2 + strb r0, [r4, #0xe] +_02255472: + add r4, r4, #1 +_02255474: + ldr r0, [sp, #0x18] + add r6, r6, #1 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _02255428 +_02255482: + mov r5, #0 + add r6, sp, #0x28 + add r4, r6, #0 + add r7, r5, #0 +_0225548A: + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, r5, #6 + add r3, r7, #0 + bl MOD11_02243420 + strh r0, [r6, #0x14] + add r2, r5, #0 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, #0x1f + mov r3, #0 + bl MOD11_02243420 + strb r0, [r4, #0x1c] + add r2, r5, #0 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, #0x27 + mov r3, #0 + bl MOD11_02243420 + add r1, r4, #0 + add r1, #0x20 + add r5, r5, #1 + strb r0, [r1] + add r6, r6, #2 + add r4, r4, #1 + cmp r5, #4 + blt _0225548A + ldr r0, [sp, #0xc] + mov r1, #0xc0 + mul r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0x28 + add r0, r0, r1 + ldr r1, _02255504 ; =0x00002D8C + ldr r2, [r0, r1] + strh r2, [r3, #0x24] + add r2, r1, #4 + ldr r2, [r0, r2] + strh r2, [r3, #0x26] + mov r2, #0x24 + ldrsh r2, [r3, r2] + cmp r2, #0 + beq _0225550E + add r1, #0x20 + ldr r0, [r0, r1] + cmp r0, #0 + add r0, sp, #0x48 + beq _02255508 + mov r1, #3 + strb r1, [r0, #8] + b _02255514 + nop +_022554F8: .word 0x00003108 +_022554FC: .word 0x0000312C +_02255500: .word 0x000001EE +_02255504: .word 0x00002D8C +_02255508: + mov r1, #1 + strb r1, [r0, #8] + b _02255514 +_0225550E: + mov r1, #2 + add r0, sp, #0x48 + strb r1, [r0, #8] +_02255514: + mov r0, #0x2c + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + mov r1, #1 + add r3, sp, #0x28 + bl MOD11_02254878 + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02255528 +MOD11_02255528: ; 0x02255528 + push {r0, r1, r2, r3} + push {r3, lr} + add r2, r1, #0 + mov r1, #4 + str r1, [sp] + mov r1, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + + thumb_func_start MOD11_02255544 +MOD11_02255544: ; 0x02255544 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r2, [sp, #0xc] + str r0, [sp, #4] + str r1, [sp, #8] + bl MOD11_0222FF78 + ldr r1, [sp, #0xc] + bl MOD11_02243400 + mov r0, #0xf + add r2, sp, #0x14 + strb r0, [r2] + add r7, sp, #0x14 + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + add r5, r7, #0 + add r1, r1, r0 + ldr r0, _022555D4 ; =0x0000219C + ldrb r0, [r1, r0] + mov r1, #0xc0 + strb r0, [r2, #1] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + mul r1, r0 + ldr r0, [sp, #8] + add r6, r0, r1 + add r4, r6, #0 +_0225557E: + ldr r0, _022555D8 ; =0x00002D4C + ldr r1, _022555DC ; =0x00002D70 + ldrh r0, [r6, r0] + strh r0, [r7, #4] + ldr r0, _022555E0 ; =0x00002D6C + ldrb r0, [r4, r0] + strb r0, [r5, #0xc] + ldr r0, _022555D8 ; =0x00002D4C + ldrb r1, [r4, r1] + ldrh r0, [r6, r0] + bl FUN_0206AB30 + strb r0, [r5, #0x10] + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, r0, #1 + add r7, r7, #2 + add r4, r4, #1 + add r5, r5, #1 + str r0, [sp, #0x10] + cmp r0, #4 + blt _0225557E + mov r0, #0 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + mov r3, #0 + bl MOD11_02245D38 + add r1, sp, #0x14 + strh r0, [r1, #2] + mov r0, #0x14 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + mov r1, #1 + add r3, sp, #0x14 + bl MOD11_02254878 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022555D4: .word 0x0000219C +_022555D8: .word 0x00002D4C +_022555DC: .word 0x00002D70 +_022555E0: .word 0x00002D6C + + thumb_func_start MOD11_022555E4 +MOD11_022555E4: ; 0x022555E4 + push {r0, r1, r2, r3} + push {r3, lr} + add r2, r1, #0 + mov r1, #4 + str r1, [sp] + mov r1, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + + thumb_func_start MOD11_02255600 +MOD11_02255600: ; 0x02255600 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + add r4, r2, #0 + str r3, [sp, #0xc] + bl MOD11_02243400 + ldr r0, [sp, #4] + bl MOD11_0222FF74 + mov r2, #0x10 + add r1, sp, #0x1c + strb r2, [r1] + strh r4, [r1, #2] + mov r1, #2 + add r2, r0, #0 + and r2, r1 + beq _0225563A + mov r1, #8 + tst r0, r1 + bne _0225563A + cmp r2, #0 + beq _02255642 + ldr r0, [sp, #0xc] + cmp r0, #2 + blt _02255642 +_0225563A: + mov r1, #1 + add r0, sp, #0x1c + strb r1, [r0, #1] + b _02255648 +_02255642: + mov r1, #0 + add r0, sp, #0x1c + strb r1, [r0, #1] +_02255648: + ldr r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0x18] + ldr r1, _0225570C ; =0x00002D54 + add r0, r2, #0 + add r7, r0, r1 + add r1, #0x6a + add r5, r0, r1 + mov r0, #3 + add r4, sp, #0x20 + str r0, [sp, #0x14] + str r0, [sp, #0x10] + mov r0, #4 + add r3, sp, #0x1c + add r4, #1 + mov ip, r0 +_02255668: + ldr r0, _02255710 ; =0x00002D8C + ldr r0, [r2, r0] + cmp r0, #0 + beq _022556D6 + strh r0, [r3, #8] + ldr r0, _02255714 ; =0x00002D90 + ldr r0, [r2, r0] + strh r0, [r3, #0xa] + ldrb r1, [r4] + mov r0, #4 + orr r0, r1 + strb r0, [r4] + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r0, [r2, r0] + cmp r0, #0x1d + beq _0225568E + cmp r0, #0x20 + bne _022556A2 +_0225568E: + ldr r0, [r7] + lsr r0, r0, #0x1f + bne _022556A2 + ldrb r0, [r4] + ldr r1, [sp, #0x10] + bic r0, r1 + mov r1, #2 + orr r0, r1 + strb r0, [r4] + b _022556B6 +_022556A2: + ldrb r6, [r4] + ldr r0, [sp, #0x14] + bic r6, r0 + ldrb r0, [r5] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + mov r0, #3 + and r0, r1 + orr r0, r6 + strb r0, [r4] +_022556B6: + ldr r1, [sp, #8] + ldr r0, [sp, #0x18] + add r1, r1, r0 + ldr r0, _02255718 ; =0x0000219C + ldrb r0, [r1, r0] + strb r0, [r3, #4] + ldr r0, _0225571C ; =0x00002DAC + ldr r0, [r2, r0] + cmp r0, #0 + beq _022556D0 + mov r0, #3 + strb r0, [r3, #6] + b _022556E2 +_022556D0: + mov r0, #1 + strb r0, [r3, #6] + b _022556E2 +_022556D6: + ldrb r1, [r4] + mov r0, ip + bic r1, r0 + strb r1, [r4] + mov r0, #2 + strb r0, [r3, #6] +_022556E2: + ldr r0, [sp, #0x18] + add r2, #0xc0 + add r0, r0, #1 + add r3, #8 + add r4, #8 + add r7, #0xc0 + add r5, #0xc0 + str r0, [sp, #0x18] + cmp r0, #4 + blt _02255668 + mov r0, #0x24 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + mov r1, #1 + add r3, sp, #0x1c + bl MOD11_02254878 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225570C: .word 0x00002D54 +_02255710: .word 0x00002D8C +_02255714: .word 0x00002D90 +_02255718: .word 0x0000219C +_0225571C: .word 0x00002DAC + + thumb_func_start MOD11_02255720 +MOD11_02255720: ; 0x02255720 + push {r0, r1, r2, r3} + push {r3, lr} + add r2, r1, #0 + mov r1, #4 + str r1, [sp] + mov r1, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + + thumb_func_start MOD11_0225573C +MOD11_0225573C: ; 0x0225573C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + str r2, [sp, #0xc] + bl MOD11_02243400 + add r6, sp, #0x10 + mov r1, #0x11 + add r0, sp, #0x10 + strb r1, [r0] + mov r0, #0 + ldr r4, [sp, #8] + mov ip, r0 + ldr r1, _022558B0 ; =0x00002DCC + add r0, r4, #0 + add r7, r0, r1 + ldr r0, _022558B4 ; =0x0000312C + add r5, r6, #0 +_02255766: + ldr r2, [sp, #8] + mov r1, ip + add r2, r2, r1 + ldr r1, _022558B8 ; =0x0000219C + mov r3, #0 + ldrb r1, [r2, r1] + strb r1, [r6, #4] +_02255774: + add r1, r4, r3 + ldrb r2, [r1, r0] + add r1, r5, r3 + add r3, r3, #1 + strb r2, [r1, #8] + cmp r3, #6 + blt _02255774 + ldr r1, [r7] + add r2, r6, #0 + lsl r1, r1, #0xa + lsr r1, r1, #0x1d + add r2, #0x20 + strb r1, [r2] + mov r1, ip + add r1, r1, #1 + add r6, r6, #1 + add r4, r4, #6 + add r5, r5, #6 + add r7, #0xc0 + mov ip, r1 + cmp r1, #4 + blt _02255766 + ldr r0, [sp, #4] + bl MOD11_0222FF74 + cmp r0, #0x4a + bne _02255852 + mov r0, #1 + bl FUN_0206A92C + ldr r2, _022558BC ; =0x00003108 + ldr r1, [sp, #8] + ldrb r1, [r1, r2] + tst r0, r1 + bne _022557D8 + mov r0, #3 + bl FUN_0206A92C + ldr r2, _022558BC ; =0x00003108 + ldr r1, [sp, #8] + ldrb r1, [r1, r2] + tst r0, r1 + bne _022557D8 + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0, #1] + mov r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + b _0225589C +_022557D8: + mov r0, #1 + bl FUN_0206A92C + ldr r2, _022558BC ; =0x00003108 + ldr r1, [sp, #8] + add r3, sp, #0x10 + ldrb r1, [r1, r2] + tst r0, r1 + bne _0225581E + mov r0, #0 + mov r2, #0xba + ldr r1, [sp, #8] + strb r0, [r3, #1] + lsl r2, r2, #6 + ldr r4, [r1, r2] + ldr r1, _022558C0 ; =0x200400C0 + tst r1, r4 + beq _02255804 + mov r1, #1 + strb r1, [r3, #2] + strb r0, [r3, #3] + b _0225589C +_02255804: + ldr r1, [sp, #8] + sub r2, #0x10 + ldr r2, [r1, r2] + mov r1, #1 + lsl r1, r1, #0x18 + tst r1, r2 + strb r0, [r3, #2] + beq _0225581A + mov r0, #1 + strb r0, [r3, #3] + b _0225589C +_0225581A: + strb r0, [r3, #3] + b _0225589C +_0225581E: + mov r0, #0 + mov r2, #3 + ldr r1, [sp, #8] + strb r0, [r3, #1] + lsl r2, r2, #0xc + ldr r4, [r1, r2] + ldr r1, _022558C0 ; =0x200400C0 + tst r1, r4 + beq _02255838 + mov r1, #1 + strb r1, [r3, #2] + strb r0, [r3, #3] + b _0225589C +_02255838: + ldr r1, [sp, #8] + sub r2, #0x10 + ldr r2, [r1, r2] + mov r1, #1 + lsl r1, r1, #0x18 + tst r1, r2 + strb r0, [r3, #2] + beq _0225584E + mov r0, #1 + strb r0, [r3, #3] + b _0225589C +_0225584E: + strb r0, [r3, #3] + b _0225589C +_02255852: + ldr r0, [sp, #4] + bl MOD11_0222FF74 + cmp r0, #0 + bne _02255892 + mov r2, #0xba + mov r0, #0 + add r3, sp, #0x10 + ldr r1, [sp, #8] + strb r0, [r3, #1] + lsl r2, r2, #6 + ldr r4, [r1, r2] + ldr r1, _022558C0 ; =0x200400C0 + tst r1, r4 + beq _02255878 + mov r1, #1 + strb r1, [r3, #2] + strb r0, [r3, #3] + b _0225589C +_02255878: + ldr r1, [sp, #8] + sub r2, #0x10 + ldr r2, [r1, r2] + mov r1, #1 + lsl r1, r1, #0x18 + tst r1, r2 + strb r0, [r3, #2] + beq _0225588E + mov r0, #1 + strb r0, [r3, #3] + b _0225589C +_0225588E: + strb r0, [r3, #3] + b _0225589C +_02255892: + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0, #1] + strb r1, [r0, #2] + strb r1, [r0, #3] +_0225589C: + mov r0, #0x24 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + mov r1, #1 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022558B0: .word 0x00002DCC +_022558B4: .word 0x0000312C +_022558B8: .word 0x0000219C +_022558BC: .word 0x00003108 +_022558C0: .word 0x200400C0 + + thumb_func_start MOD11_022558C4 +MOD11_022558C4: ; 0x022558C4 + push {r0, r1, r2, r3} + push {r3, lr} + add r2, r1, #0 + mov r1, #4 + str r1, [sp] + mov r1, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + + thumb_func_start MOD11_022558E0 +MOD11_022558E0: ; 0x022558E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + str r2, [sp, #0xc] + add r4, r3, #0 + bl MOD11_02243400 + mov r0, #0x12 + add r1, sp, #0x10 + strb r0, [r1] + ldr r0, [sp, #0xc] + add r7, sp, #0x10 + strb r0, [r1, #1] + ldr r0, [sp, #0x50] + strb r4, [r1, #2] + str r0, [sp, #0x30] + ldr r0, [sp, #0x54] + ldr r5, [sp, #8] + strb r0, [r1, #3] + ldr r1, _02255958 ; =0x00003108 + ldr r0, [sp, #8] + mov r3, #0 + ldrb r1, [r0, r1] + add r0, sp, #0x30 + add r6, r7, #0 + strb r1, [r0, #4] + ldr r0, _0225595C ; =0x0000312C +_0225591C: + ldr r1, [sp, #8] + mov r4, #0 + add r2, r1, r3 + ldr r1, _02255960 ; =0x0000219C + ldrb r1, [r2, r1] + strb r1, [r7, #4] +_02255928: + add r1, r5, r4 + ldrb r2, [r1, r0] + add r1, r6, r4 + add r4, r4, #1 + strb r2, [r1, #8] + cmp r4, #6 + blt _02255928 + add r3, r3, #1 + add r7, r7, #1 + add r5, r5, #6 + add r6, r6, #6 + cmp r3, #4 + blt _0225591C + mov r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + mov r1, #1 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255958: .word 0x00003108 +_0225595C: .word 0x0000312C +_02255960: .word 0x0000219C + + thumb_func_start MOD11_02255964 +MOD11_02255964: ; 0x02255964 + push {r0, r1, r2, r3} + push {r3, lr} + add r2, r1, #0 + mov r1, #4 + str r1, [sp] + mov r1, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + + thumb_func_start MOD11_02255980 +MOD11_02255980: ; 0x02255980 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r2, #0 + add r6, r0, #0 + add r0, r1, #0 + add r1, r5, #0 + add r4, r3, #0 + bl MOD11_02243400 + mov r1, #0x13 + add r0, sp, #4 + strb r1, [r0] + ldr r1, [sp, #0x20] + strh r4, [r0, #2] + strb r1, [r0, #1] + ldr r0, [sp, #0x24] + mov r1, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x28] + add r2, r5, #0 + str r0, [sp, #0xc] + mov r0, #0xc + str r0, [sp] + add r0, r6, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_022559BC +MOD11_022559BC: ; 0x022559BC + push {r4, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x14 + add r3, sp, #4 + strb r1, [r3] + ldr r1, [r2, #0x64] + add r4, r2, r1 + ldr r1, _022559EC ; =0x0000219C + ldrb r1, [r4, r1] + strb r1, [r3, #1] + ldr r1, _022559F0 ; =0x00003044 + ldr r1, [r2, r1] + strh r1, [r3, #2] + mov r1, #4 + str r1, [sp] + ldr r2, [r2, #0x64] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r4, pc} + nop +_022559EC: .word 0x0000219C +_022559F0: .word 0x00003044 + + thumb_func_start MOD11_022559F4 +MOD11_022559F4: ; 0x022559F4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r3, r2, #0 + mov r1, #0x15 + strb r1, [r3] + mov r1, #0x24 + str r1, [sp] + ldr r2, [r4, #0x64] + mov r1, #1 + bl MOD11_02254878 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD11_02255A10 +MOD11_02255A10: ; 0x02255A10 + push {r4, r5, r6, lr} + sub sp, #0x68 + mov r3, #0 + add r4, r1, #0 + str r3, [sp] + ldr r6, [r4, #0x64] + add r5, r0, #0 + str r6, [sp, #4] + ldr r6, [r4, #0x6c] + str r6, [sp, #8] + str r2, [sp, #0xc] + add r2, sp, #0x10 + bl MOD11_02256854 + mov r0, #0x58 + str r0, [sp] + ldr r2, [r4, #0x64] + add r0, r5, #0 + mov r1, #1 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x68 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02255A40 +MOD11_02255A40: ; 0x02255A40 + push {r4, r5, r6, lr} + sub sp, #0x68 + add r4, r3, #0 + mov r3, #0 + str r3, [sp] + ldr r6, [sp, #0x78] + str r4, [sp, #4] + str r6, [sp, #8] + str r2, [sp, #0xc] + add r2, sp, #0x10 + add r5, r0, #0 + bl MOD11_02256854 + mov r0, #0x58 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x68 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_02255A70 +MOD11_02255A70: ; 0x02255A70 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x17 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02255A8C +MOD11_02255A8C: ; 0x02255A8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + str r2, [sp, #8] + add r1, r2, #0 + add r3, r5, r2 + ldr r2, _02255B50 ; =0x0000219C + str r0, [sp, #4] + ldrb r2, [r3, r2] + bl MOD11_02230014 + add r4, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + mov r0, #0x18 + add r2, sp, #0xc + strb r0, [r2] + ldr r0, [sp, #8] + mov r1, #0xc0 + add r4, r0, #0 + mul r4, r1 + ldr r1, _02255B54 ; =0x00002D74 + add r0, r5, r4 + ldrb r3, [r0, r1] + strb r3, [r2, #1] + add r3, r1, #0 + add r3, #0x18 + ldr r3, [r0, r3] + strh r3, [r2, #2] + add r3, r1, #0 + add r3, #0x1c + ldr r3, [r0, r3] + sub r1, #0x34 + strh r3, [r2, #4] + ldr r2, _02255B58 ; =0x0000215C + ldr r2, [r5, r2] + str r2, [sp, #0x14] + ldrh r0, [r0, r1] + cmp r0, #0x1d + beq _02255AF2 + cmp r0, #0x20 + bne _02255B04 +_02255AF2: + ldr r0, _02255B5C ; =0x00002D54 + add r1, r5, r4 + ldr r0, [r1, r0] + lsr r0, r0, #0x1f + bne _02255B04 + mov r1, #2 + add r0, sp, #0xc + strb r1, [r0, #7] + b _02255B12 +_02255B04: + ldr r0, _02255B60 ; =0x00002DBE + add r1, r5, r4 + ldrb r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + add r0, sp, #0xc + strb r1, [r0, #7] +_02255B12: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02068758 + ldr r1, _02255B64 ; =0x00002DA4 + add r2, r5, r4 + ldr r1, [r2, r1] + sub r0, r1, r0 + str r0, [sp, #0x18] + add r0, r7, #0 + add r1, r6, #1 + bl FUN_02068758 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02068758 + sub r0, r4, r0 + str r0, [sp, #0x1c] + mov r0, #0x14 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + mov r1, #1 + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255B50: .word 0x0000219C +_02255B54: .word 0x00002D74 +_02255B58: .word 0x0000215C +_02255B5C: .word 0x00002D54 +_02255B60: .word 0x00002DBE +_02255B64: .word 0x00002DA4 + + thumb_func_start MOD11_02255B68 +MOD11_02255B68: ; 0x02255B68 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r2, #0 + add r5, r1, #0 + str r3, [sp, #8] + ldr r2, _02255BE4 ; =0x0000219C + add r3, r5, r4 + ldrb r2, [r3, r2] + add r1, r4, #0 + str r0, [sp, #4] + bl MOD11_02230014 + add r6, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + mov r1, #0x19 + add r0, sp, #0xc + strb r1, [r0] + ldr r0, [sp, #8] + add r1, r6, #0 + str r0, [sp, #0x10] + add r0, r7, #0 + bl FUN_02068758 + mov r1, #0xc0 + mul r1, r4 + add r2, r5, r1 + ldr r1, _02255BE8 ; =0x00002DA4 + ldr r1, [r2, r1] + sub r0, r1, r0 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r6, #1 + bl FUN_02068758 + add r5, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02068758 + sub r0, r5, r0 + str r0, [sp, #0x18] + mov r0, #0x10 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02255BE4: .word 0x0000219C +_02255BE8: .word 0x00002DA4 + + thumb_func_start MOD11_02255BEC +MOD11_02255BEC: ; 0x02255BEC + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r0, [sp, #4] + add r0, r1, #0 + mov ip, r2 + mov r5, #0xb5 + mov r2, #0x1a + add r1, sp, #0xc + strb r2, [r1] + mov r3, #0xc0 + mov r2, ip + mul r3, r2 + add r2, r0, r3 + lsl r5, r5, #6 + ldrh r4, [r2, r5] + strh r4, [r1, #2] + add r4, r5, #0 + add r4, #0x26 + ldrb r2, [r2, r4] + add r5, #0x70 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1b + strb r2, [r1, #8] + add r2, r0, r5 + mov r1, #1 + ldr r4, [r2, r3] + lsl r1, r1, #0x18 + tst r1, r4 + beq _02255C2A + mov r4, #1 + b _02255C2C +_02255C2A: + mov r4, #0 +_02255C2C: + add r1, sp, #0xc + strb r4, [r1, #9] + mov r1, #2 + ldr r4, [r2, r3] + lsl r1, r1, #0x14 + tst r1, r4 + beq _02255C3E + mov r4, #1 + b _02255C40 +_02255C3E: + mov r4, #0 +_02255C40: + add r1, sp, #0xc + strb r4, [r1, #0xa] + ldr r4, [r2, r3] + mov r2, #2 + lsl r2, r2, #0x14 + tst r2, r4 + beq _02255C5E + ldr r2, _02255CE8 ; =0x00002DFA + add r4, r0, r3 + ldrh r3, [r4, r2] + sub r2, #0x16 + strb r3, [r1, #1] + ldr r1, [r4, r2] + str r1, [sp, #0x10] + b _02255C70 +_02255C5E: + ldr r2, _02255CEC ; =0x00002DBE + add r4, r0, r3 + ldrb r3, [r4, r2] + sub r2, #0x16 + lsl r3, r3, #0x1c + lsr r3, r3, #0x1c + strb r3, [r1, #1] + ldr r1, [r4, r2] + str r1, [sp, #0x10] +_02255C70: + mov r1, #0 + str r1, [sp, #8] + ldr r1, _02255CF0 ; =0x00002D66 + add r7, sp, #0xc + add r3, r0, r1 + add r1, #0x58 + add r4, r7, #0 + add r5, r7, #0 + add r6, r0, r1 +_02255C82: + mov r1, #0xb5 + lsl r1, r1, #6 + ldrh r1, [r0, r1] + strh r1, [r7, #0xc] + ldrb r1, [r3] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1f + strb r1, [r4, #0x18] + ldrb r1, [r3] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1b + strb r1, [r4, #0x1c] + ldr r1, _02255CF4 ; =0x00002DB0 + ldr r2, [r0, r1] + mov r1, #2 + lsl r1, r1, #0x14 + tst r1, r2 + beq _02255CB0 + ldr r1, _02255CE8 ; =0x00002DFA + ldrh r1, [r0, r1] + strb r1, [r4, #0x14] + ldr r1, _02255CF8 ; =0x00002DE4 + b _02255CBA +_02255CB0: + ldrb r1, [r6] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + strb r1, [r4, #0x14] + ldr r1, _02255CFC ; =0x00002DA8 +_02255CBA: + ldr r1, [r0, r1] + add r0, #0xc0 + str r1, [r5, #0x20] + ldr r1, [sp, #8] + add r7, r7, #2 + add r1, r1, #1 + add r3, #0xc0 + add r4, r4, #1 + add r5, r5, #4 + add r6, #0xc0 + str r1, [sp, #8] + cmp r1, #4 + blt _02255C82 + mov r0, #0x30 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #1 + mov r2, ip + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02255CE8: .word 0x00002DFA +_02255CEC: .word 0x00002DBE +_02255CF0: .word 0x00002D66 +_02255CF4: .word 0x00002DB0 +_02255CF8: .word 0x00002DE4 +_02255CFC: .word 0x00002DA8 + + thumb_func_start MOD11_02255D00 +MOD11_02255D00: ; 0x02255D00 + push {r4, lr} + sub sp, #8 + mov r4, #0x1b + add r1, sp, #4 + strb r4, [r1] + strh r2, [r1, #2] + mov r1, #4 + str r1, [sp] + add r2, r3, #0 + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02255D20 +MOD11_02255D20: ; 0x02255D20 + push {r3, lr} + sub sp, #8 + mov r1, #0x1c + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02255D3C +MOD11_02255D3C: ; 0x02255D3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + mov ip, r1 + mov r3, #0x1d + add r1, sp, #8 + strb r3, [r1] + strb r2, [r1, #1] + ldr r3, [r0, #0x30] + mov r2, #0xc0 + mov r1, ip + mul r2, r1 + ldr r1, _02255DF4 ; =0x00002DB0 + add r2, r3, r2 + ldr r2, [r2, r1] + mov r1, #1 + lsl r1, r1, #0x18 + tst r1, r2 + beq _02255D64 + mov r2, #1 + b _02255D66 +_02255D64: + mov r2, #0 +_02255D66: + add r7, sp, #8 + add r1, sp, #8 + mov r3, #0 + strb r2, [r1, #2] + str r3, [sp, #4] + add r4, r7, #0 + add r5, r7, #0 +_02255D74: + ldr r1, [r0, #0x30] + add r2, r1, r3 + mov r1, #0xb5 + lsl r1, r1, #6 + ldrh r1, [r2, r1] + strh r1, [r7, #4] + ldr r1, [r0, #0x30] + add r2, r1, r3 + ldr r1, _02255DF8 ; =0x00002D66 + ldrb r1, [r2, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1f + strb r1, [r4, #0x10] + ldr r1, [r0, #0x30] + add r2, r1, r3 + ldr r1, _02255DF8 ; =0x00002D66 + ldrb r1, [r2, r1] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1b + strb r1, [r4, #0x14] + ldr r1, [r0, #0x30] + add r6, r1, r3 + ldr r1, _02255DF4 ; =0x00002DB0 + ldr r2, [r6, r1] + mov r1, #2 + lsl r1, r1, #0x14 + tst r1, r2 + beq _02255DBA + ldr r1, _02255DFC ; =0x00002DFA + ldrh r1, [r6, r1] + strb r1, [r4, #0xc] + ldr r1, [r0, #0x30] + add r2, r1, r3 + ldr r1, _02255E00 ; =0x00002DE4 + b _02255DCA +_02255DBA: + ldr r1, _02255E04 ; =0x00002DBE + ldrb r1, [r6, r1] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + strb r1, [r4, #0xc] + ldr r1, [r0, #0x30] + add r2, r1, r3 + ldr r1, _02255E08 ; =0x00002DA8 +_02255DCA: + ldr r1, [r2, r1] + add r3, #0xc0 + str r1, [r5, #0x18] + ldr r1, [sp, #4] + add r7, r7, #2 + add r1, r1, #1 + add r4, r4, #1 + add r5, r5, #4 + str r1, [sp, #4] + cmp r1, #4 + blt _02255D74 + mov r1, #0x28 + str r1, [sp] + mov r1, #1 + mov r2, ip + add r3, sp, #8 + bl MOD11_02254878 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255DF4: .word 0x00002DB0 +_02255DF8: .word 0x00002D66 +_02255DFC: .word 0x00002DFA +_02255E00: .word 0x00002DE4 +_02255E04: .word 0x00002DBE +_02255E08: .word 0x00002DA8 + + thumb_func_start MOD11_02255E0C +MOD11_02255E0C: ; 0x02255E0C + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + mov r3, #0x1e + add r1, sp, #4 + strb r3, [r1] + strb r2, [r1, #1] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD11_02255E2C +MOD11_02255E2C: ; 0x02255E2C + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + mov r3, #0x1f + add r1, sp, #4 + strb r3, [r1] + strb r2, [r1, #1] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD11_02255E4C +MOD11_02255E4C: ; 0x02255E4C + push {r3, r4, r5, lr} + sub sp, #0x68 + add r4, r2, #0 + str r3, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + add r2, sp, #0x10 + mov r3, #1 + add r5, r0, #0 + bl MOD11_02256854 + mov r0, #0x58 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x68 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02255E7C +MOD11_02255E7C: ; 0x02255E7C + push {r3, r4, r5, lr} + sub sp, #0x68 + add r4, r2, #0 + ldr r2, [sp, #0x78] + add r5, r0, #0 + str r2, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + add r2, sp, #0x10 + mov r3, #1 + bl MOD11_02256854 + mov r0, #0x58 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x68 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02255EAC +MOD11_02255EAC: ; 0x02255EAC + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r2, #0 + mov r2, #0x20 + add r0, sp, #4 + strb r2, [r0] + strb r3, [r0, #1] + ldr r0, _02255EE8 ; =0x00003122 + ldrsh r2, [r1, r0] + ldr r0, _02255EEC ; =0x00002E4C + ldr r0, [r1, r0] + sub r1, r2, r0 + mov r0, #0x64 + mul r0, r1 + add r1, r2, #0 + blx _s32_div_f + add r1, sp, #4 + strh r0, [r1, #2] + mov r0, #4 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02255EE8: .word 0x00003122 +_02255EEC: .word 0x00002E4C + + thumb_func_start MOD11_02255EF0 +MOD11_02255EF0: ; 0x02255EF0 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + mov r1, #0x21 + add r0, sp, #4 + strb r1, [r0] + ldr r2, _02255F38 ; =0x00002E4C + strb r3, [r0, #1] + ldr r1, [r6, r2] + cmp r1, #0 + bne _02255F12 + mov r1, #0xfa + lsl r1, r1, #2 + strh r1, [r0, #2] + b _02255F24 +_02255F12: + mov r0, #0xfa + lsl r0, r0, #2 + mul r0, r1 + add r1, r2, #4 + ldr r1, [r6, r1] + blx _u32_div_f + add r1, sp, #4 + strh r0, [r1, #2] +_02255F24: + mov r0, #4 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02255F38: .word 0x00002E4C + + thumb_func_start MOD11_02255F3C +MOD11_02255F3C: ; 0x02255F3C + push {r3, lr} + sub sp, #8 + mov r1, #0x22 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD11_02255F54 +MOD11_02255F54: ; 0x02255F54 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r2, [sp, #4] + mov r2, #0x23 + add r1, sp, #8 + add r6, r0, #0 + strb r2, [r1] + mov r4, #0 + bl MOD11_0222FF84 + cmp r0, #0 + ble _02255F86 + add r5, sp, #8 +_02255F70: + ldr r0, _02255F9C ; =0x0000219C + add r1, r7, r4 + ldrb r0, [r1, r0] + add r4, r4, #1 + strb r0, [r5, #4] + add r0, r6, #0 + add r5, r5, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _02255F70 +_02255F86: + mov r0, #8 + str r0, [sp] + ldr r2, [sp, #4] + add r0, r6, #0 + mov r1, #1 + add r3, sp, #8 + bl MOD11_02254878 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255F9C: .word 0x0000219C + + thumb_func_start MOD11_02255FA0 +MOD11_02255FA0: ; 0x02255FA0 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x24 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02255FBC +MOD11_02255FBC: ; 0x02255FBC + push {r0, r1, r2, r3} + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r4, r1, #0 + add r5, r0, #0 + bl MOD11_0222FF78 + add r1, r4, #0 + bl MOD11_02243400 + mov r1, #0x25 + add r0, sp, #4 + strb r1, [r0] + add r6, sp, #0x48 + add r3, sp, #8 + mov r2, #4 +_02255FDC: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02255FDC + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + mov r0, #0x28 + str r0, [sp] + add r0, r5, #0 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0x2c + pop {r3, r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + + thumb_func_start MOD11_02256004 +MOD11_02256004: ; 0x02256004 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02256020 +MOD11_02256020: ; 0x02256020 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + ldr r1, _0225613C ; =0x0000219C + add r4, r2, #0 + add r7, r5, r1 + ldrb r2, [r7, r4] + add r1, r4, #0 + str r0, [sp, #4] + bl MOD11_02230014 + add r6, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + add r0, r6, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + mov r0, #0x26 + add r2, sp, #0x10 + strb r0, [r2] + mov r0, #0xc0 + add r6, r4, #0 + mul r6, r0 + ldr r1, _02256140 ; =0x00002D74 + add r0, r5, r6 + ldrb r3, [r0, r1] + strb r3, [r2, #1] + add r3, r1, #0 + add r3, #0x18 + ldr r3, [r0, r3] + add r1, #0x1c + strh r3, [r2, #2] + ldr r0, [r0, r1] + add r1, r4, #0 + strh r0, [r2, #4] + ldrb r0, [r7, r4] + strb r0, [r2, #6] + add r0, r5, #0 + bl MOD11_0224524C + add r1, sp, #0x10 + ldrb r2, [r1, #7] + mov r3, #0x1f + lsl r0, r0, #0x18 + bic r2, r3 + lsr r3, r0, #0x18 + mov r0, #0x1f + and r0, r3 + orr r0, r2 + strb r0, [r1, #7] + mov r0, #0xb5 + lsl r0, r0, #6 + add r7, r5, r0 + ldrh r0, [r7, r6] + cmp r0, #0x1d + beq _022560A0 + cmp r0, #0x20 + bne _022560BA +_022560A0: + ldr r0, _02256144 ; =0x00002D54 + add r1, r5, r6 + ldr r0, [r1, r0] + lsr r0, r0, #0x1f + bne _022560BA + add r0, sp, #0x10 + ldrb r1, [r0, #7] + mov r2, #0x60 + bic r1, r2 + mov r2, #0x40 + orr r1, r2 + strb r1, [r0, #7] + b _022560D4 +_022560BA: + add r3, sp, #0x10 + ldrb r2, [r3, #7] + mov r0, #0x60 + add r1, r5, r6 + bic r2, r0 + ldr r0, _02256148 ; =0x00002DBE + ldrb r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + lsl r0, r0, #0x1e + lsr r0, r0, #0x19 + orr r0, r2 + strb r0, [r3, #7] +_022560D4: + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl FUN_02068758 + mov r1, #0xc0 + mul r1, r4 + add r2, r5, r1 + ldr r1, _0225614C ; =0x00002DA4 + ldr r1, [r2, r1] + sub r0, r1, r0 + ldr r1, [sp, #8] + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r1, r1, #1 + bl FUN_02068758 + add r5, r0, #0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl FUN_02068758 + sub r0, r5, r0 + str r0, [sp, #0x1c] + ldrh r1, [r7, r6] + ldr r0, [sp, #4] + bl MOD11_02231668 + add r3, sp, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + ldrb r1, [r3, #7] + mov r2, #0x80 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r3, #7] + ldr r0, [sp, #4] + bl MOD11_02230E00 + str r0, [sp, #0x20] + mov r0, #0x14 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0225613C: .word 0x0000219C +_02256140: .word 0x00002D74 +_02256144: .word 0x00002D54 +_02256148: .word 0x00002DBE +_0225614C: .word 0x00002DA4 + + thumb_func_start MOD11_02256150 +MOD11_02256150: ; 0x02256150 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r6, r1, #0 + str r2, [sp, #8] + mov r1, #0x27 + add r2, sp, #0x10 + strb r1, [r2] + ldrb r1, [r2, #1] + mov r3, #0xf + str r0, [sp, #4] + bic r1, r3 + ldr r3, [sp, #8] + add r4, r6, r3 + ldr r3, _02256230 ; =0x0000219C + ldrb r4, [r4, r3] + mov r3, #0xf + and r3, r4 + orr r1, r3 + strb r1, [r2, #1] + ldr r1, [sp, #8] + mov r3, #0xc0 + mul r3, r1 + ldrb r4, [r2, #1] + mov r1, #0xf0 + str r3, [sp, #0xc] + bic r4, r1 + add r1, r3, #0 + add r3, r6, r1 + ldr r1, _02256234 ; =0x00002DCC + ldr r5, [r3, r1] + lsl r5, r5, #0x1a + lsr r5, r5, #0x1c + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + lsl r5, r5, #0x1c + lsr r5, r5, #0x18 + orr r4, r5 + strb r4, [r2, #1] + add r4, r1, #0 + sub r4, #0x40 + ldr r4, [r3, r4] + sub r1, #0x14 + strh r4, [r2, #2] + ldrh r1, [r3, r1] + strh r1, [r2, #0xc] + ldr r1, [sp, #8] + bl MOD11_02230270 + lsl r0, r0, #3 + add r1, r6, r0 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp, #8] + mov r2, #0xc0 + mul r2, r1 + lsl r0, r0, #3 + lsr r0, r0, #0x1a + add r1, r6, r2 + mov ip, r2 + add r2, sp, #0x10 + str r0, [sp, #0x18] + ldr r7, _02256238 ; =0x00002D6C + mov r0, #0 + add r3, r1, #0 + add r4, r2, #0 +_022561D4: + ldr r5, _0225623C ; =0x00002D4C + add r0, r0, #1 + ldrh r5, [r1, r5] + add r1, r1, #2 + strh r5, [r2, #0xe] + ldrb r5, [r3, r7] + add r2, r2, #2 + add r3, r3, #1 + strb r5, [r4, #0x16] + add r4, r4, #1 + cmp r0, #4 + blt _022561D4 + add r1, sp, #0x10 + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, #0 + beq _0225620C + mov r0, ip + add r3, r6, r0 + ldr r0, _02256240 ; =0x00002DAC + ldr r1, _02256244 ; =0xFFFFF0FF + ldr r2, [r3, r0] + add r0, r0, #4 + and r1, r2 + str r1, [sp, #0x14] + ldr r0, [r3, r0] + str r0, [sp, #0x2c] + b _0225621A +_0225620C: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + add r1, r6, r0 + ldr r0, _02256248 ; =0x00002DB0 + ldr r0, [r1, r0] + str r0, [sp, #0x2c] +_0225621A: + mov r0, #0x20 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + mov r1, #1 + add r3, sp, #0x10 + bl MOD11_02254878 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02256230: .word 0x0000219C +_02256234: .word 0x00002DCC +_02256238: .word 0x00002D6C +_0225623C: .word 0x00002D4C +_02256240: .word 0x00002DAC +_02256244: .word 0xFFFFF0FF +_02256248: .word 0x00002DB0 + + thumb_func_start MOD11_0225624C +MOD11_0225624C: ; 0x0225624C + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x28 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02256268 +MOD11_02256268: ; 0x02256268 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x29 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02256284 +MOD11_02256284: ; 0x02256284 + push {r3, r4, r5, lr} + sub sp, #8 + mov r5, #0x2a + add r4, sp, #4 + strb r5, [r4] + strh r3, [r4, #2] + mov r3, #0xc0 + mul r3, r2 + add r3, r1, r3 + ldr r1, _022562AC ; =0x00002D67 + ldrb r1, [r3, r1] + add r3, sp, #4 + strb r1, [r4, #1] + mov r1, #4 + str r1, [sp] + mov r1, #1 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_022562AC: .word 0x00002D67 + + thumb_func_start MOD11_022562B0 +MOD11_022562B0: ; 0x022562B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD11_0222FF78 + add r1, r5, #0 + bl MOD11_02243400 + mov r1, #0x2b + add r0, sp, #4 + strb r1, [r0] + strh r4, [r0, #2] + strb r6, [r0, #1] + mov r0, #4 + str r0, [sp] + add r0, r7, #0 + mov r1, #1 + add r2, r5, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_022562E4 +MOD11_022562E4: ; 0x022562E4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r5, #0x2c + add r1, sp, #4 + strb r5, [r1] + strb r2, [r1, #1] + strb r3, [r1, #2] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02256308 +MOD11_02256308: ; 0x02256308 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + mov r1, #0x2d + add r3, sp, #4 + strb r1, [r3] + mov r1, #0xc0 + add r6, r7, #0 + mul r6, r1 + ldr r1, [r0, #0x30] + add r2, r1, r6 + mov r1, #0xb5 + lsl r1, r1, #6 + ldrh r2, [r2, r1] + strh r2, [r3, #2] + ldr r2, [r0, #0x30] + add r4, r2, r6 + add r2, r1, #0 + add r2, #0x26 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1a + lsr r2, r2, #0x1f + strb r2, [r3, #5] + ldr r2, [r0, #0x30] + add r5, r2, r6 + add r2, r1, #0 + add r2, #0x70 + ldr r4, [r5, r2] + mov r2, #2 + lsl r2, r2, #0x14 + tst r2, r4 + beq _0225635C + add r2, r1, #0 + add r2, #0xba + ldrh r2, [r5, r2] + add r1, #0xa4 + strb r2, [r3, #4] + ldr r2, [r0, #0x30] + add r2, r2, r6 + ldr r1, [r2, r1] + str r1, [sp, #0xc] + b _02256372 +_0225635C: + add r2, r1, #0 + add r2, #0x7e + ldrb r2, [r5, r2] + add r1, #0x68 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + strb r2, [r3, #4] + ldr r2, [r0, #0x30] + add r2, r2, r6 + ldr r1, [r2, r1] + str r1, [sp, #0xc] +_02256372: + ldr r1, [r0, #0x30] + add r3, sp, #4 + add r2, r1, r6 + ldr r1, _02256394 ; =0x00002D66 + ldrb r1, [r2, r1] + lsl r1, r1, #0x1b + lsr r2, r1, #0x1b + add r1, sp, #4 + strb r2, [r1, #1] + mov r1, #0xc + str r1, [sp] + mov r1, #1 + add r2, r7, #0 + bl MOD11_02254878 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02256394: .word 0x00002D66 + + thumb_func_start MOD11_02256398 +MOD11_02256398: ; 0x02256398 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x2e + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022563B4 +MOD11_022563B4: ; 0x022563B4 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x2f + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022563D0 +MOD11_022563D0: ; 0x022563D0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + str r4, [sp] + ldr r1, [r5, #0x30] + add r2, sp, #4 + mov r3, #0x30 + bl MOD11_022569DC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD11_022563F8 +MOD11_022563F8: ; 0x022563F8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + str r4, [sp] + ldr r1, [r5, #0x30] + add r2, sp, #4 + mov r3, #0x31 + bl MOD11_022569DC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD11_02256420 +MOD11_02256420: ; 0x02256420 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + str r4, [sp] + ldr r1, [r5, #0x30] + add r2, sp, #4 + mov r3, #0x32 + bl MOD11_022569DC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD11_02256448 +MOD11_02256448: ; 0x02256448 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + str r4, [sp] + ldr r1, [r5, #0x30] + add r2, sp, #4 + mov r3, #0x33 + bl MOD11_022569DC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD11_02256470 +MOD11_02256470: ; 0x02256470 + push {r3, lr} + sub sp, #8 + mov r1, #0x34 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_0225648C +MOD11_0225648C: ; 0x0225648C + push {r3, lr} + sub sp, #8 + mov r1, #0x35 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022564A8 +MOD11_022564A8: ; 0x022564A8 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r5, #0x36 + add r1, sp, #4 + strb r5, [r1] + strb r2, [r1, #1] + strh r3, [r1, #2] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022564CC +MOD11_022564CC: ; 0x022564CC + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0x37 + add r5, r0, #0 + str r1, [sp, #4] + bl MOD11_0222FF74 + mov r1, #4 + tst r0, r1 + beq _022564F0 + str r1, [sp] + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 +_022564F0: + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022564F4 +MOD11_022564F4: ; 0x022564F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + str r0, [sp, #4] + add r0, r1, #0 + str r2, [sp, #8] + mov r2, #0x38 + add r7, sp, #0xc + add r1, sp, #0xc + strb r2, [r1] + mov r1, #0 + mov ip, r1 + ldr r1, _0225658C ; =0x00002D66 + add r4, r7, #0 + add r3, r0, r1 + add r1, #0x58 + add r5, r7, #0 + add r6, r0, r1 +_02256516: + mov r1, #0xb5 + lsl r1, r1, #6 + ldrh r1, [r0, r1] + add r2, r4, #0 + add r2, #0x24 + strh r1, [r7, #0x18] + ldrb r1, [r3] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1f + strb r1, [r2] + ldrb r1, [r3] + add r2, r4, #0 + add r2, #0x28 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1b + strb r1, [r2] + ldr r1, _02256590 ; =0x00002DB0 + ldr r2, [r0, r1] + mov r1, #2 + lsl r1, r1, #0x14 + tst r1, r2 + beq _02256550 + ldr r1, _02256594 ; =0x00002DFA + add r2, r4, #0 + ldrh r1, [r0, r1] + add r2, #0x20 + strb r1, [r2] + ldr r1, _02256598 ; =0x00002DE4 + b _0225655E +_02256550: + ldrb r1, [r6] + add r2, r4, #0 + add r2, #0x20 + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + strb r1, [r2] + ldr r1, _0225659C ; =0x00002DA8 +_0225655E: + ldr r1, [r0, r1] + add r0, #0xc0 + str r1, [r5, #0x2c] + mov r1, ip + add r1, r1, #1 + add r7, r7, #2 + add r3, #0xc0 + add r4, r4, #1 + add r5, r5, #4 + add r6, #0xc0 + mov ip, r1 + cmp r1, #4 + blt _02256516 + mov r0, #0x58 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + mov r1, #1 + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0225658C: .word 0x00002D66 +_02256590: .word 0x00002DB0 +_02256594: .word 0x00002DFA +_02256598: .word 0x00002DE4 +_0225659C: .word 0x00002DA8 + + thumb_func_start MOD11_022565A0 +MOD11_022565A0: ; 0x022565A0 + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x39 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022565BC +MOD11_022565BC: ; 0x022565BC + push {r3, lr} + sub sp, #8 + add r2, r1, #0 + mov r1, #0x3a + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022565D8 +MOD11_022565D8: ; 0x022565D8 + push {r3, lr} + sub sp, #8 + mov r1, #0x3b + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022565F4 +MOD11_022565F4: ; 0x022565F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + mov r2, #0x3c + add r1, sp, #4 + strb r2, [r1] + mov r4, #0 + add r6, r0, #0 + strb r4, [r1, #1] + bl MOD11_0222FF84 + cmp r0, #0 + ble _02256632 + add r7, sp, #4 +_02256610: + ldr r0, _02256648 ; =0x000021A8 + ldr r0, [r5, r0] + cmp r0, #0x10 + bne _02256624 + add r0, r4, #0 + bl FUN_0206A92C + ldrb r1, [r7, #1] + orr r0, r1 + strb r0, [r7, #1] +_02256624: + add r0, r6, #0 + add r5, #0x10 + add r4, r4, #1 + bl MOD11_0222FF84 + cmp r4, r0 + blt _02256610 +_02256632: + mov r0, #4 + str r0, [sp] + add r0, r6, #0 + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02256648: .word 0x000021A8 + + thumb_func_start MOD11_0225664C +MOD11_0225664C: ; 0x0225664C + push {r3, lr} + sub sp, #8 + mov r1, #0x3d + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_02256668 +MOD11_02256668: ; 0x02256668 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + str r0, [sp, #4] + add r0, r1, #0 + str r2, [sp, #8] + mov r2, #0x3e + add r7, sp, #0xc + add r1, sp, #0xc + strb r2, [r1] + mov r1, #0 + mov ip, r1 + ldr r1, _02256700 ; =0x00002D66 + add r4, r7, #0 + add r3, r0, r1 + add r1, #0x58 + add r5, r7, #0 + add r6, r0, r1 +_0225668A: + mov r1, #0xb5 + lsl r1, r1, #6 + ldrh r1, [r0, r1] + add r2, r4, #0 + add r2, #0x24 + strh r1, [r7, #0x18] + ldrb r1, [r3] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1f + strb r1, [r2] + ldrb r1, [r3] + add r2, r4, #0 + add r2, #0x28 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1b + strb r1, [r2] + ldr r1, _02256704 ; =0x00002DB0 + ldr r2, [r0, r1] + mov r1, #2 + lsl r1, r1, #0x14 + tst r1, r2 + beq _022566C4 + ldr r1, _02256708 ; =0x00002DFA + add r2, r4, #0 + ldrh r1, [r0, r1] + add r2, #0x20 + strb r1, [r2] + ldr r1, _0225670C ; =0x00002DE4 + b _022566D2 +_022566C4: + ldrb r1, [r6] + add r2, r4, #0 + add r2, #0x20 + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + strb r1, [r2] + ldr r1, _02256710 ; =0x00002DA8 +_022566D2: + ldr r1, [r0, r1] + add r0, #0xc0 + str r1, [r5, #0x2c] + mov r1, ip + add r1, r1, #1 + add r7, r7, #2 + add r3, #0xc0 + add r4, r4, #1 + add r5, r5, #4 + add r6, #0xc0 + mov ip, r1 + cmp r1, #4 + blt _0225668A + mov r0, #0x58 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + mov r1, #1 + add r3, sp, #0xc + bl MOD11_02254878 + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02256700: .word 0x00002D66 +_02256704: .word 0x00002DB0 +_02256708: .word 0x00002DFA +_0225670C: .word 0x00002DE4 +_02256710: .word 0x00002DA8 + + thumb_func_start MOD11_02256714 +MOD11_02256714: ; 0x02256714 + push {r3, r4, r5, lr} + sub sp, #8 + mov r3, #0x3f + add r4, sp, #4 + strb r3, [r4] + ldr r3, _02256750 ; =0x0000216C + ldr r5, [r1, r3] + mov r1, #2 + add r3, r5, #0 + tst r3, r1 + beq _0225672E + strb r1, [r4, #1] + b _0225673E +_0225672E: + mov r1, #4 + tst r1, r5 + beq _0225673A + mov r1, #1 + strb r1, [r4, #1] + b _0225673E +_0225673A: + mov r1, #0 + strb r1, [r4, #1] +_0225673E: + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02256750: .word 0x0000216C + + thumb_func_start MOD11_02256754 +MOD11_02256754: ; 0x02256754 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + mov r3, #0x40 + add r1, sp, #4 + strb r3, [r1] + strh r2, [r1, #2] + mov r1, #4 + str r1, [sp] + mov r1, #1 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD11_02256774 +MOD11_02256774: ; 0x02256774 + push {r3, r4, lr} + sub sp, #0xc + mov r2, #0x41 + add r1, sp, #4 + strb r2, [r1] + add r4, r0, #0 + bl MOD11_0223145C + str r0, [sp, #8] + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225679C +MOD11_0225679C: ; 0x0225679C + push {r3, lr} + sub sp, #8 + mov r1, #0x42 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp] + mov r1, #1 + mov r2, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022567B8 +MOD11_022567B8: ; 0x022567B8 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + add r0, sp, #4 + add r4, r1, #0 + strb r2, [r0] + bl FUN_02031190 + add r1, sp, #4 + strb r0, [r1, #1] + mov r0, #4 + str r0, [sp] + add r0, r5, #0 + mov r1, #2 + add r2, r4, #0 + add r3, sp, #4 + bl MOD11_02254878 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022567E0 +MOD11_022567E0: ; 0x022567E0 + push {r3, r4, r5, r6, r7, lr} + ldrb r6, [r1, #3] + ldrb r3, [r1] + ldrb r2, [r1, #2] + lsl r6, r6, #8 + add r5, r0, #0 + orr r2, r6 + ldrb r4, [r1, #1] + cmp r3, #0 + bne _02256814 + mov r3, #0 + cmp r2, #0 + ble _02256852 + mov r6, #0x23 + lsl r4, r4, #8 + lsl r6, r6, #8 +_02256800: + add r0, r1, r3 + ldr r7, [r5, #0x30] + ldrb r0, [r0, #4] + add r7, r4, r7 + add r7, r3, r7 + add r3, r3, #1 + strb r0, [r7, r6] + cmp r3, r2 + blt _02256800 + pop {r3, r4, r5, r6, r7, pc} +_02256814: + cmp r3, #1 + bne _02256836 + mov r0, #0 + cmp r2, #0 + ble _02256852 + lsl r3, r4, #2 + add r5, r5, r3 +_02256822: + add r3, r1, r0 + ldrb r4, [r3, #4] + ldr r3, [r5, #0x34] + add r3, r3, r0 + add r3, #0x94 + add r0, r0, #1 + strb r4, [r3] + cmp r0, r2 + blt _02256822 + pop {r3, r4, r5, r6, r7, pc} +_02256836: + cmp r3, #2 + bne _02256852 + ldrb r7, [r1, #4] + ldrb r6, [r1, #5] + bl MOD11_02230DD4 + cmp r0, #0 + beq _02256852 + ldr r0, [r5, #0x30] + add r1, r6, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD11_02243340 +_02256852: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_02256854 +MOD11_02256854: ; 0x02256854 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r2, #0 + mov r1, #0x16 + strb r1, [r5] + add r1, sp, #0x18 + ldrh r1, [r1, #0x1c] + add r7, r0, #0 + strh r1, [r5, #2] + ldr r1, [sp, #0x2c] + strh r1, [r5, #0x14] + ldr r1, [sp, #0x30] + strh r1, [r5, #0x16] + ldr r1, [sp, #0x28] + str r3, [r5, #0x4c] + str r1, [r5, #0x50] + bl MOD11_02230294 + str r0, [r5, #0x54] + cmp r4, #0 + bne _02256882 + b _022569B2 +_02256882: + ldr r0, _022569B8 ; =0x00002144 + ldr r1, [r4, r0] + add r0, #0x10 + str r1, [r5, #4] + ldr r0, [r4, r0] + cmp r0, #0 + beq _02256892 + b _0225689E +_02256892: + add r0, sp, #0x18 + ldrh r0, [r0, #0x1c] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _022569BC ; =0x000003E1 + ldrb r0, [r1, r0] +_0225689E: + ldr r1, [sp, #0x2c] + strh r0, [r5, #8] + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + ldr r0, _022569C0 ; =0x00002D75 + add r1, r4, r6 + ldrb r0, [r1, r0] + add r1, r4, #0 + mov r2, #8 + strh r0, [r5, #0xc] + mov r0, #0xd + str r0, [sp] + add r0, r7, #0 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022568E2 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _022568E2 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + str r0, [r5, #0x10] + b _022568E6 +_022568E2: + mov r0, #0 + str r0, [r5, #0x10] +_022568E6: + ldr r0, _022569C4 ; =0x00002164 + ldr r0, [r4, r0] + strh r0, [r5, #0xa] + ldr r0, _022569C8 ; =0x00002DB0 + add r1, r4, r0 + mov r0, #1 + ldr r2, [r1, r6] + lsl r0, r0, #0x18 + tst r0, r2 + beq _022568FE + mov r3, #1 + b _02256900 +_022568FE: + mov r3, #0 +_02256900: + ldrh r0, [r5, #0xe] + mov r2, #1 + bic r0, r2 + lsl r2, r3, #0x10 + lsr r3, r2, #0x10 + mov r2, #1 + and r3, r2 + orr r0, r3 + strh r0, [r5, #0xe] + ldr r1, [r1, r6] + lsl r0, r2, #0x15 + tst r0, r1 + bne _0225691C + mov r2, #0 +_0225691C: + ldrh r0, [r5, #0xe] + mov r1, #2 + str r5, [sp, #0x10] + bic r0, r1 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1e + orr r0, r1 + strh r0, [r5, #0xe] + ldr r0, _022569CC ; =0x00002D66 + mov r1, #0 + add r2, r4, r0 + add r0, #0x58 + add r3, r5, #0 + add r7, r4, r0 +_0225693C: + mov r0, #0xb5 + lsl r0, r0, #6 + ldrh r6, [r4, r0] + ldr r0, [sp, #0x10] + strh r6, [r0, #0x18] + ldrb r0, [r2] + lsl r0, r0, #0x1a + lsr r6, r0, #0x1f + add r0, r5, r1 + str r0, [sp, #8] + add r0, #0x24 + str r0, [sp, #8] + strb r6, [r0] + ldrb r0, [r2] + lsl r0, r0, #0x1b + lsr r6, r0, #0x1b + add r0, r5, r1 + str r0, [sp, #4] + add r0, #0x28 + str r0, [sp, #4] + strb r6, [r0] + mov r0, #0xb7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + str r0, [r3, #0x3c] + ldr r0, _022569C8 ; =0x00002DB0 + ldr r6, [r4, r0] + mov r0, #2 + lsl r0, r0, #0x14 + tst r0, r6 + beq _0225698C + ldr r0, _022569D0 ; =0x00002DFA + ldrh r6, [r4, r0] + add r0, r5, r1 + str r0, [sp, #0xc] + add r0, #0x20 + str r0, [sp, #0xc] + strb r6, [r0] + ldr r0, _022569D4 ; =0x00002DE4 + b _0225699A +_0225698C: + ldrb r0, [r7] + lsl r0, r0, #0x1c + lsr r6, r0, #0x1c + add r0, r5, r1 + add r0, #0x20 + strb r6, [r0] + ldr r0, _022569D8 ; =0x00002DA8 +_0225699A: + ldr r0, [r4, r0] + add r1, r1, #1 + str r0, [r3, #0x2c] + ldr r0, [sp, #0x10] + add r4, #0xc0 + add r0, r0, #2 + str r0, [sp, #0x10] + add r2, #0xc0 + add r3, r3, #4 + add r7, #0xc0 + cmp r1, #4 + blt _0225693C +_022569B2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022569B8: .word 0x00002144 +_022569BC: .word 0x000003E1 +_022569C0: .word 0x00002D75 +_022569C4: .word 0x00002164 +_022569C8: .word 0x00002DB0 +_022569CC: .word 0x00002D66 +_022569D0: .word 0x00002DFA +_022569D4: .word 0x00002DE4 +_022569D8: .word 0x00002DA8 + + thumb_func_start MOD11_022569DC +MOD11_022569DC: ; 0x022569DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp] + ldr r0, [sp, #0x38] + add r5, r2, #0 + str r1, [sp, #4] + str r0, [sp, #0x38] + mov r0, #0 + add r1, r5, #0 + mov r2, #8 + add r6, r3, #0 + blx MIi_CpuClearFast + ldr r0, [sp] + bl MOD11_0222FF74 + add r4, r0, #0 + mov r0, #0xc + and r0, r4 + strb r6, [r5] + cmp r0, #0xc + beq _02256A30 + mov r0, #0x10 + tst r0, r4 + beq _02256A1A + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_02230270 + cmp r0, #0 + bne _02256A30 +_02256A1A: + cmp r4, #0x4b + bne _02256A2A + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_02230270 + cmp r0, #0 + bne _02256A30 +_02256A2A: + cmp r4, #0xcb + beq _02256A30 + b _02256B66 +_02256A30: + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_02230260 + cmp r0, #2 + beq _02256A48 + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_02230260 + cmp r0, #3 + bne _02256A56 +_02256A48: + ldr r6, [sp, #0x38] + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_022302BC + str r0, [sp, #0x38] + b _02256A60 +_02256A56: + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_022302BC + add r6, r0, #0 +_02256A60: + ldr r0, [sp] + add r1, r6, #0 + bl MOD11_0222FF88 + mov r4, #0 + str r0, [sp, #0x10] + add r7, r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02256AE0 + mov r0, #6 + add r1, r6, #0 + mul r1, r0 + ldr r0, [sp, #4] + add r6, r0, r1 +_02256A80: + ldr r1, _02256C00 ; =0x0000312C + ldr r0, [sp, #0x10] + ldrb r1, [r6, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x14] + bl FUN_020671BC + cmp r0, #0 + beq _02256AD2 + ldr r1, _02256C04 ; =0x000001EE + cmp r0, r1 + beq _02256AD2 + ldr r0, [sp, #0x14] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02256ACA + ldr r0, [sp, #0x14] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02256AC2 + add r1, r5, r4 + mov r0, #3 + strb r0, [r1, #2] + b _02256AD0 +_02256AC2: + add r1, r5, r4 + mov r0, #1 + strb r0, [r1, #2] + b _02256AD0 +_02256ACA: + add r1, r5, r4 + mov r0, #2 + strb r0, [r1, #2] +_02256AD0: + add r4, r4, #1 +_02256AD2: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r7, r7, #1 + bl FUN_0206B9AC + cmp r7, r0 + blt _02256A80 +_02256AE0: + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_0222FF88 + str r0, [sp, #8] + mov r4, #3 + mov r6, #0 + bl FUN_0206B9AC + cmp r0, #0 + bgt _02256AF8 + b _02256BFA +_02256AF8: + ldr r0, [sp, #0x38] + mov r1, #6 + mul r1, r0 + ldr r0, [sp, #4] + add r7, r0, r1 +_02256B02: + ldr r1, _02256C00 ; =0x0000312C + ldr r0, [sp, #8] + ldrb r1, [r7, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x18] + bl FUN_020671BC + cmp r0, #0 + beq _02256B54 + ldr r1, _02256C04 ; =0x000001EE + cmp r0, r1 + beq _02256B54 + ldr r0, [sp, #0x18] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02256B4C + ldr r0, [sp, #0x18] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02256B44 + add r1, r5, r4 + mov r0, #3 + strb r0, [r1, #2] + b _02256B52 +_02256B44: + add r1, r5, r4 + mov r0, #1 + strb r0, [r1, #2] + b _02256B52 +_02256B4C: + add r1, r5, r4 + mov r0, #2 + strb r0, [r1, #2] +_02256B52: + add r4, r4, #1 +_02256B54: + ldr r0, [sp, #8] + add r7, r7, #1 + add r6, r6, #1 + bl FUN_0206B9AC + cmp r6, r0 + blt _02256B02 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_02256B66: + mov r0, #2 + tst r0, r4 + beq _02256B7A + mov r0, #8 + tst r0, r4 + bne _02256B7A + ldr r0, [sp, #0x38] + mov r1, #1 + and r0, r1 + str r0, [sp, #0x38] +_02256B7A: + ldr r0, [sp] + ldr r1, [sp, #0x38] + bl MOD11_0222FF88 + mov r4, #0 + str r0, [sp, #0xc] + add r7, r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _02256BFA + ldr r0, [sp, #0x38] + mov r1, #6 + mul r1, r0 + ldr r0, [sp, #4] + add r6, r0, r1 +_02256B9A: + ldr r1, _02256C00 ; =0x0000312C + ldr r0, [sp, #0xc] + ldrb r1, [r6, r1] + bl FUN_0206B9B0 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x1c] + bl FUN_020671BC + cmp r0, #0 + beq _02256BEC + ldr r1, _02256C04 ; =0x000001EE + cmp r0, r1 + beq _02256BEC + ldr r0, [sp, #0x1c] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02256BE4 + ldr r0, [sp, #0x1c] + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02256BDC + add r1, r5, r4 + mov r0, #3 + strb r0, [r1, #2] + b _02256BEA +_02256BDC: + add r1, r5, r4 + mov r0, #1 + strb r0, [r1, #2] + b _02256BEA +_02256BE4: + add r1, r5, r4 + mov r0, #2 + strb r0, [r1, #2] +_02256BEA: + add r4, r4, #1 +_02256BEC: + ldr r0, [sp, #0xc] + add r6, r6, #1 + add r7, r7, #1 + bl FUN_0206B9AC + cmp r7, r0 + blt _02256B9A +_02256BFA: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02256C00: .word 0x0000312C +_02256C04: .word 0x000001EE + + thumb_func_start MOD11_02256C08 +MOD11_02256C08: ; 0x02256C08 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp, #0x18] + bl MOD11_02257FC0 + add r6, r0, #0 + ldr r3, [r6, #0x14] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + str r3, [sp, #8] + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + mov r0, #0x23 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02256CC8 ; =0x00004E26 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + ldr r3, [r6, #0x1c] + mov r0, #1 + str r0, [sp] + str r3, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + bl FUN_0200C124 + ldr r3, [r6, #0x20] + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + str r3, [sp, #4] + bl FUN_0200C13C + mov r0, #0x1b + str r0, [sp] + mov r0, #0x23 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02256CCC ; =0x00004E27 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + ldr r0, [sp, #0x18] + sub r0, r0, #6 + cmp r0, #1 + bhi _02256CC4 + mov r0, #0x1b + str r0, [sp] + mov r0, #0x2d + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02256CD0 ; =0x00004E28 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC +_02256CC4: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02256CC8: .word 0x00004E26 +_02256CCC: .word 0x00004E27 +_02256CD0: .word 0x00004E28 + + thumb_func_start MOD11_02256CD4 +MOD11_02256CD4: ; 0x02256CD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + add r6, r1, #0 + add r7, r2, #0 + bl MOD11_02258024 + add r4, r0, #0 + beq _02256D44 + ldr r3, [r4, #0x14] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + str r3, [sp, #8] + bl FUN_0200C00C + mov r0, #0x1b + str r0, [sp] + mov r0, #0x23 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02256D48 ; =0x00004E26 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r5, #0 + add r3, r6, #0 + bl FUN_0200C0DC + ldr r3, [r4, #0x1c] + mov r0, #1 + str r0, [sp] + str r3, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + bl FUN_0200C124 + ldr r3, [r4, #0x20] + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + str r3, [sp, #4] + bl FUN_0200C13C +_02256D44: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02256D48: .word 0x00004E26 + + thumb_func_start MOD11_02256D4C +MOD11_02256D4C: ; 0x02256D4C + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r2, #0x18 + add r4, r1, #0 + lsr r0, r0, #0x18 + bl MOD11_02257FC0 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02256D70 +MOD11_02256D70: ; 0x02256D70 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + add r4, r2, #0 + cmp r0, #0 + bne _02256D82 + bl ErrorHandling +_02256D82: + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + cmp r0, #6 + bne _02256D94 + mov r1, #3 + lsl r1, r1, #0xa + and r4, r1 + b _02256DA4 +_02256D94: + cmp r0, #7 + bne _02256DA0 + mov r1, #3 + lsl r1, r1, #0xc + and r4, r1 + b _02256DA4 +_02256DA0: + ldr r1, _02256F00 ; =0xFFFFC3FF + and r4, r1 +_02256DA4: + cmp r0, #7 + bhi _02256DEA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02256DB4: ; jump table + .short _02256DE6 - _02256DB4 - 2 ; case 0 + .short _02256DC4 - _02256DB4 - 2 ; case 1 + .short _02256DCA - _02256DB4 - 2 ; case 2 + .short _02256DC4 - _02256DB4 - 2 ; case 3 + .short _02256DCA - _02256DB4 - 2 ; case 4 + .short _02256DC4 - _02256DB4 - 2 ; case 5 + .short _02256DEA - _02256DB4 - 2 ; case 6 + .short _02256DEA - _02256DB4 - 2 ; case 7 +_02256DC4: + mov r0, #0x26 + bic r4, r0 + b _02256DEA +_02256DCA: + ldr r0, _02256F04 ; =0xFFFFFDDF + and r4, r0 + add r0, r5, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bne _02256DE0 + mov r0, #6 + bic r4, r0 + b _02256DEA +_02256DE0: + mov r0, #1 + bic r4, r0 + b _02256DEA +_02256DE6: + ldr r0, _02256F08 ; =0xFFFFFDFF + and r4, r0 +_02256DEA: + ldr r0, [r5, #0xc] + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + beq _02256DFA + ldr r0, _02256F08 ; =0xFFFFFDFF + and r4, r0 +_02256DFA: + mov r0, #1 + tst r0, r4 + beq _02256E10 + add r0, r5, #0 + mov r1, #0 + bl MOD11_02257150 + add r0, r5, #0 + mov r1, #0 + bl MOD11_02257BEC +_02256E10: + mov r0, #2 + tst r0, r4 + beq _02256E1E + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_0225787C +_02256E1E: + mov r0, #4 + tst r0, r4 + beq _02256E2A + add r0, r5, #0 + bl MOD11_02257908 +_02256E2A: + mov r0, #0x80 + tst r0, r4 + bne _02256E36 + mov r0, #0x40 + tst r0, r4 + beq _02256E3C +_02256E36: + add r0, r5, #0 + bl MOD11_02257654 +_02256E3C: + mov r0, #8 + tst r0, r4 + beq _02256E48 + add r0, r5, #0 + bl MOD11_0225775C +_02256E48: + mov r0, #0x10 + tst r0, r4 + beq _02256E54 + add r0, r5, #0 + bl MOD11_022574F0 +_02256E54: + mov r0, #0x20 + tst r0, r4 + beq _02256E6A + add r0, r5, #0 + mov r1, #0 + bl MOD11_022571B8 + add r0, r5, #0 + mov r1, #1 + bl MOD11_02257BEC +_02256E6A: + mov r0, #2 + lsl r0, r0, #8 + tst r0, r4 + beq _02256E78 + add r0, r5, #0 + bl MOD11_02257968 +_02256E78: + mov r0, #1 + lsl r0, r0, #8 + tst r0, r4 + beq _02256EDC + add r0, r5, #0 + add r0, #0x4a + ldrb r0, [r0] + cmp r0, #5 + bhi _02256EA2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02256E96: ; jump table + .short _02256EA2 - _02256E96 - 2 ; case 0 + .short _02256EAC - _02256E96 - 2 ; case 1 + .short _02256EB6 - _02256E96 - 2 ; case 2 + .short _02256EC0 - _02256E96 - 2 ; case 3 + .short _02256ECA - _02256E96 - 2 ; case 4 + .short _02256ED4 - _02256E96 - 2 ; case 5 +_02256EA2: + add r0, r5, #0 + mov r1, #0x38 + bl MOD11_022579B8 + b _02256EDC +_02256EAC: + add r0, r5, #0 + mov r1, #0x2f + bl MOD11_022579B8 + b _02256EDC +_02256EB6: + add r0, r5, #0 + mov r1, #0x32 + bl MOD11_022579B8 + b _02256EDC +_02256EC0: + add r0, r5, #0 + mov r1, #0x35 + bl MOD11_022579B8 + b _02256EDC +_02256ECA: + add r0, r5, #0 + mov r1, #0x2c + bl MOD11_022579B8 + b _02256EDC +_02256ED4: + add r0, r5, #0 + mov r1, #0x29 + bl MOD11_022579B8 +_02256EDC: + mov r0, #5 + lsl r0, r0, #0xa + tst r0, r4 + beq _02256EEC + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_022579F8 +_02256EEC: + mov r0, #0xa + lsl r0, r0, #0xa + tst r0, r4 + beq _02256EFC + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02257AD4 +_02256EFC: + pop {r4, r5, r6, pc} + nop +_02256F00: .word 0xFFFFC3FF +_02256F04: .word 0xFFFFFDDF +_02256F08: .word 0xFFFFFDFF + + thumb_func_start MOD11_02256F0C +MOD11_02256F0C: ; 0x02256F0C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _02256F1E + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x50] +_02256F1E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02256F2C + bl FUN_0200C3DC + mov r0, #0 + str r0, [r4, #4] +_02256F2C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02256F30 +MOD11_02256F30: ; 0x02256F30 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02256F42 + bl FUN_0200C3DC + mov r0, #0 + str r0, [r4, #8] +_02256F42: + pop {r4, pc} + + thumb_func_start MOD11_02256F44 +MOD11_02256F44: ; 0x02256F44 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x25 + ldrb r0, [r0] + bl MOD11_02257FC0 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_02230078 + ldr r0, [r5, #0xc] + bl MOD11_02230080 + ldr r1, [r4, #0x14] + add r5, r0, #0 + bl FUN_0200C358 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + bl FUN_0200C378 + ldr r1, [r4, #0x20] + add r0, r5, #0 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02256F78 +MOD11_02256F78: ; 0x02256F78 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x25 + ldrb r0, [r0] + bl MOD11_02258024 + add r4, r0, #0 + beq _02256FAC + ldr r0, [r5, #0xc] + bl MOD11_02230078 + ldr r0, [r5, #0xc] + bl MOD11_02230080 + ldr r1, [r4, #0x14] + add r5, r0, #0 + bl FUN_0200C358 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + bl FUN_0200C378 + ldr r1, [r4, #0x20] + add r0, r5, #0 + bl FUN_0200C388 +_02256FAC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02256FB0 +MOD11_02256FB0: ; 0x02256FB0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_02230078 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_02230080 + add r7, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_022300CC + str r0, [sp] + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + bl MOD11_02257FC0 + add r3, r5, #0 + add r3, #0x25 + add r4, r0, #0 + ldrb r3, [r3] + ldr r2, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_02256C08 + add r2, r5, #0 + add r2, #0x25 + ldrb r2, [r2] + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_02256D4C + add r3, r5, #0 + str r0, [r5, #4] + add r3, #0x25 + ldrb r3, [r3] + ldr r2, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_02256CD4 + ldr r0, [r5, #8] + cmp r0, #0 + beq _0225702A + add r5, #0x25 + mov r1, #0 + ldrsh r3, [r4, r1] + ldrb r2, [r5] + ldr r1, _0225702C ; =0x0225E970 + ldr r0, [r0] + ldrsb r1, [r1, r2] + mov r2, #2 + ldrsh r2, [r4, r2] + sub r1, r3, r1 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + bl FUN_0200C6E4 +_0225702A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225702C: .word 0x0225E970 + + thumb_func_start MOD11_02257030 +MOD11_02257030: ; 0x02257030 + push {r4, lr} + add r4, r0, #0 + bl MOD11_02256F0C + add r0, r4, #0 + bl MOD11_02256F44 + add r0, r4, #0 + bl MOD11_02256F30 + add r0, r4, #0 + bl MOD11_02256F78 + pop {r4, pc} + + thumb_func_start MOD11_0225704C +MOD11_0225704C: ; 0x0225704C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x25 + ldrb r0, [r0] + cmp r0, #2 + beq _0225705C + cmp r0, #4 + bne _02257136 +_0225705C: + add r0, r5, #0 + add r0, #0x4f + ldrb r2, [r0] + mov r1, #8 + add r0, r2, #0 + bic r0, r1 + lsl r1, r2, #0x1c + lsr r2, r1, #0x1f + mov r1, #1 + eor r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1c + orr r1, r0 + add r0, r5, #0 + add r0, #0x4f + strb r1, [r0] + ldr r0, [r5, #4] + ldr r0, [r0] + bl FUN_02020350 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + bne _022570E8 + mov r0, #0x38 + bl MOD11_02257F60 + add r1, r5, #0 + add r1, #0x25 + ldrb r1, [r1] + mov r6, #0x19 + ldr r3, _02257138 ; =0x0225E9B0 + lsl r2, r1, #2 + ldrh r3, [r3, r2] + lsl r6, r6, #0x16 + ldr r1, [r4, #4] + add r3, r6, r3 + add r1, r1, r3 + ldr r3, _0225713C ; =0x0225E9B2 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + mov r0, #0x45 + bl MOD11_02257F60 + add r1, r5, #0 + add r1, #0x25 + ldrb r1, [r1] + ldr r3, _02257140 ; =0x0225EA10 + lsl r2, r1, #2 + ldrh r3, [r3, r2] + ldr r1, [r4, #4] + add r3, r6, r3 + add r1, r1, r3 + ldr r3, _02257144 ; =0x0225EA12 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + ldr r1, [r5, #0x28] + add r0, r5, #0 + mov r2, #6 + bl MOD11_02256D70 + pop {r4, r5, r6, pc} +_022570E8: + mov r0, #0x42 + bl MOD11_02257F60 + add r1, r5, #0 + add r1, #0x25 + ldrb r1, [r1] + mov r6, #0x19 + ldr r3, _02257138 ; =0x0225E9B0 + lsl r2, r1, #2 + ldrh r3, [r3, r2] + lsl r6, r6, #0x16 + ldr r1, [r4, #4] + add r3, r6, r3 + add r1, r1, r3 + ldr r3, _0225713C ; =0x0225E9B2 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + mov r0, #0x44 + bl MOD11_02257F60 + add r1, r5, #0 + add r1, #0x25 + ldrb r1, [r1] + ldr r3, _02257148 ; =0x0225E9E0 + lsl r2, r1, #2 + ldrh r3, [r3, r2] + ldr r1, [r4, #4] + add r3, r6, r3 + add r1, r1, r3 + ldr r3, _0225714C ; =0x0225E9E2 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + ldr r1, [r5, #0x28] + add r0, r5, #0 + mov r2, #1 + bl MOD11_02256D70 +_02257136: + pop {r4, r5, r6, pc} + .align 2, 0 +_02257138: .word 0x0225E9B0 +_0225713C: .word 0x0225E9B2 +_02257140: .word 0x0225EA10 +_02257144: .word 0x0225EA12 +_02257148: .word 0x0225E9E0 +_0225714C: .word 0x0225E9E2 + + thumb_func_start MOD11_02257150 +MOD11_02257150: ; 0x02257150 + mov r2, #2 + lsl r2, r2, #0x1e + str r2, [r0, #0x34] + ldr r3, [r0, #0x28] + add r2, r3, r1 + bpl _0225715E + sub r1, r1, r2 +_0225715E: + ldr r2, [r0, #0x2c] + add r3, r3, r1 + cmp r3, r2 + ble _0225716A + sub r2, r3, r2 + sub r1, r1, r2 +_0225716A: + neg r1, r1 + str r1, [r0, #0x30] + ldr r1, [r0, #0x28] + cmp r1, #0 + bge _02257178 + mov r1, #0 + str r1, [r0, #0x28] +_02257178: + ldr r2, [r0, #0x2c] + ldr r1, [r0, #0x28] + cmp r1, r2 + ble _02257182 + str r2, [r0, #0x28] +_02257182: + bx lr + + thumb_func_start MOD11_02257184 +MOD11_02257184: ; 0x02257184 + push {r3, r4, r5, lr} + mov r1, #0 + add r5, r0, #0 + bl MOD11_02257BEC + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _022571AA + ldr r1, [r5, #0x28] + ldr r0, [r5, #0x30] + mov r2, #2 + sub r1, r1, r0 + add r0, r5, #0 + str r1, [r5, #0x28] + bl MOD11_02256D70 + b _022571B4 +_022571AA: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD11_02256D70 +_022571B4: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022571B8 +MOD11_022571B8: ; 0x022571B8 + mov r2, #2 + lsl r2, r2, #0x1e + str r2, [r0, #0x44] + ldr r3, [r0, #0x38] + add r2, r3, r1 + bpl _022571C6 + sub r1, r1, r2 +_022571C6: + ldr r2, [r0, #0x3c] + add r3, r3, r1 + cmp r3, r2 + ble _022571D2 + sub r2, r3, r2 + sub r1, r1, r2 +_022571D2: + neg r1, r1 + str r1, [r0, #0x40] + ldr r1, [r0, #0x38] + cmp r1, #0 + bge _022571E0 + mov r1, #0 + str r1, [r0, #0x38] +_022571E0: + ldr r2, [r0, #0x3c] + ldr r1, [r0, #0x38] + cmp r1, r2 + ble _022571EA + str r2, [r0, #0x38] +_022571EA: + bx lr + + thumb_func_start MOD11_022571EC +MOD11_022571EC: ; 0x022571EC + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl MOD11_02257BEC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02257206 + ldr r2, [r4, #0x38] + ldr r1, [r4, #0x40] + sub r1, r2, r1 + str r1, [r4, #0x38] +_02257206: + pop {r4, pc} + + thumb_func_start MOD11_02257208 +MOD11_02257208: ; 0x02257208 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02257222 + ldr r0, [r0] + mov r1, #1 + bl FUN_020200BC + add r0, r4, #0 + mov r1, #1 + bl MOD11_02257284 +_02257222: + ldr r0, [r4, #0xc] + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _02257236 + add r0, r4, #0 + bl MOD11_02258188 +_02257236: + pop {r4, pc} + + thumb_func_start MOD11_02257238 +MOD11_02257238: ; 0x02257238 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0225725C + ldr r0, [r0] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4, #8] + mov r1, #0 + ldr r0, [r0] + bl FUN_02020208 + add r0, r4, #0 + mov r1, #0 + bl MOD11_02257284 +_0225725C: + add r0, r4, #0 + bl MOD11_022581B0 + pop {r4, pc} + + thumb_func_start MOD11_02257264 +MOD11_02257264: ; 0x02257264 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + cmp r0, #0 + beq _02257280 + bl FUN_0200C6B0 + ldr r0, [r5, #8] + cmp r0, #0 + beq _02257280 + add r1, r4, #0 + bl FUN_0200C6B0 +_02257280: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02257284 +MOD11_02257284: ; 0x02257284 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + add r4, r1, #0 + cmp r0, #0 + beq _022572AA + ldr r0, [r5, #0xc] + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + beq _022572A2 + cmp r4, #1 + beq _022572AA +_022572A2: + ldr r0, [r5, #8] + add r1, r4, #0 + bl FUN_0200C644 +_022572AA: + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022572AC +MOD11_022572AC: ; 0x022572AC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + cmp r0, #0 + beq _022572C4 + bl FUN_0200C644 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02257284 +_022572C4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_022572C8 +MOD11_022572C8: ; 0x022572C8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + add r7, r2, #0 + cmp r0, #0 + bne _022572DA + bl ErrorHandling +_022572DA: + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + bl MOD11_02257FC0 + add r4, r0, #0 + mov r1, #0 + mov r2, #2 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r5, #4] + add r1, r1, r6 + add r2, r2, r7 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + ldr r0, [r5, #8] + cmp r0, #0 + beq _0225732C + add r5, #0x25 + ldrb r3, [r5] + mov r1, #0 + ldr r2, _02257330 ; =0x0225E970 + ldrsh r1, [r4, r1] + ldrsb r2, [r2, r3] + ldr r0, [r0] + add r1, r1, r6 + sub r1, r1, r2 + mov r2, #2 + ldrsh r2, [r4, r2] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r2, r7 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 +_0225732C: + pop {r3, r4, r5, r6, r7, pc} + nop +_02257330: .word 0x0225E970 + + thumb_func_start MOD11_02257334 +MOD11_02257334: ; 0x02257334 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r4, #0 + bne _02257342 + bl ErrorHandling +_02257342: + ldr r0, [r4, #4] + cmp r0, #0 + bne _0225734C + bl ErrorHandling +_0225734C: + add r0, r4, #0 + add r0, #0x4f + ldrb r1, [r0] + mov r0, #2 + bic r1, r0 + add r0, r4, #0 + add r0, #0x4f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x4f + ldrb r0, [r0] + mov r1, #1 + bic r0, r1 + lsl r1, r5, #0x18 + lsr r2, r1, #0x18 + mov r1, #1 + and r1, r2 + orr r1, r0 + add r0, r4, #0 + add r0, #0x4f + strb r1, [r0] + cmp r5, #0 + bne _022573BA + add r0, r4, #0 + add r0, #0x25 + ldrb r0, [r0] + cmp r0, #7 + bhi _022573AC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02257390: ; jump table + .short _022573A0 - _02257390 - 2 ; case 0 + .short _022573AC - _02257390 - 2 ; case 1 + .short _022573A0 - _02257390 - 2 ; case 2 + .short _022573AC - _02257390 - 2 ; case 3 + .short _022573A0 - _02257390 - 2 ; case 4 + .short _022573AC - _02257390 - 2 ; case 5 + .short _022573A0 - _02257390 - 2 ; case 6 + .short _022573A0 - _02257390 - 2 ; case 7 +_022573A0: + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl MOD11_022572C8 + b _022573C4 +_022573AC: + mov r1, #0x9f + add r0, r4, #0 + mvn r1, r1 + mov r2, #0 + bl MOD11_022572C8 + b _022573C4 +_022573BA: + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_022572C8 +_022573C4: + ldr r0, _022573D0 ; =MOD11_022573D8 + ldr r2, _022573D4 ; =0x000003DE + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_022573D0: .word MOD11_022573D8 +_022573D4: .word 0x000003DE + + thumb_func_start MOD11_022573D8 +MOD11_022573D8: ; 0x022573D8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + mov r4, #0 + bl MOD11_02257FC0 + add r6, r0, #0 + add r1, sp, #0 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + cmp r0, #7 + bhi _0225745E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225740E: ; jump table + .short _0225741E - _0225740E - 2 ; case 0 + .short _0225745E - _0225740E - 2 ; case 1 + .short _0225741E - _0225740E - 2 ; case 2 + .short _0225745E - _0225740E - 2 ; case 3 + .short _0225741E - _0225740E - 2 ; case 4 + .short _0225745E - _0225740E - 2 ; case 5 + .short _0225741E - _0225740E - 2 ; case 6 + .short _0225741E - _0225740E - 2 ; case 7 +_0225741E: + add r0, r5, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + add r0, sp, #0 + bne _02257444 + mov r1, #2 + ldrsh r2, [r0, r1] + sub r2, #0x18 + strh r2, [r0, #2] + add r2, r4, #0 + ldrsh r1, [r0, r1] + ldrsh r2, [r6, r2] + cmp r1, r2 + bge _0225749C + strh r2, [r0, #2] + add r4, r4, #1 + b _0225749C +_02257444: + mov r1, #2 + ldrsh r2, [r0, r1] + add r2, #0x18 + strh r2, [r0, #2] + add r2, r4, #0 + ldrsh r2, [r6, r2] + ldrsh r1, [r0, r1] + add r2, #0xa0 + cmp r1, r2 + ble _0225749C + strh r2, [r0, #2] + add r4, r4, #1 + b _0225749C +_0225745E: + add r0, r5, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + add r0, sp, #0 + bne _02257484 + mov r1, #2 + ldrsh r2, [r0, r1] + add r2, #0x18 + strh r2, [r0, #2] + mov r2, #0 + ldrsh r1, [r0, r1] + ldrsh r2, [r6, r2] + cmp r1, r2 + ble _0225749C + strh r2, [r0, #2] + add r4, r4, #1 + b _0225749C +_02257484: + mov r1, #2 + ldrsh r2, [r0, r1] + sub r2, #0x18 + strh r2, [r0, #2] + mov r2, #0 + ldrsh r2, [r6, r2] + ldrsh r1, [r0, r1] + sub r2, #0x18 + cmp r1, r2 + bge _0225749C + strh r2, [r0, #2] + add r4, r4, #1 +_0225749C: + add r2, sp, #0 + mov r1, #2 + mov r3, #0 + ldrsh r1, [r2, r1] + ldrsh r2, [r2, r3] + ldr r0, [r5, #4] + bl FUN_0200C714 + ldr r0, [r5, #8] + cmp r0, #0 + beq _022574D0 + add r6, sp, #0 + mov r1, #2 + ldrsh r3, [r6, r1] + add r1, r5, #0 + add r1, #0x25 + ldrb r2, [r1] + ldr r1, _022574EC ; =0x0225E970 + ldrsb r1, [r1, r2] + mov r2, #0 + ldrsh r2, [r6, r2] + sub r1, r3, r1 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + bl FUN_0200C714 +_022574D0: + cmp r4, #0 + ble _022574E8 + add r0, r5, #0 + add r0, #0x4f + ldrb r1, [r0] + mov r0, #2 + add r5, #0x4f + orr r0, r1 + strb r0, [r5] + add r0, r7, #0 + bl FUN_0200CAB4 +_022574E8: + pop {r3, r4, r5, r6, r7, pc} + nop +_022574EC: .word 0x0225E970 + + thumb_func_start MOD11_022574F0 +MOD11_022574F0: ; 0x022574F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_0222FF68 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_022300C4 + add r7, r0, #0 + ldr r0, [r5, #0xc] + bl MOD11_02230138 + add r4, r0, #0 + mov r0, #0x16 + mov r1, #5 + bl FUN_020219F4 + mov r1, #0xf1 + str r0, [sp, #0x18] + add r0, r7, #0 + lsl r1, r1, #2 + bl FUN_0200A914 + add r1, r5, #0 + add r2, r5, #0 + add r1, #0x24 + add r2, #0x26 + str r0, [sp, #0x1c] + ldrb r1, [r1] + ldrb r2, [r2] + ldr r0, [r5, #0xc] + bl MOD11_02230014 + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0 + bl FUN_0200ACF8 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + add r0, r4, #0 + bl FUN_0200B7B8 + mov r0, #0 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + add r0, r6, #0 + add r1, sp, #0x24 + mov r2, #8 + mov r3, #2 + bl FUN_020190EC + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02257630 ; =0x000E020F + ldr r2, [sp, #0x18] + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + add r0, sp, #0x24 + add r3, r1, #0 + bl FUN_0201BE3C + ldr r0, [r5, #4] + ldr r6, [sp, #0x30] + ldr r0, [r0] + bl FUN_02020350 + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + add r0, r6, r0 + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + ldr r1, _02257634 ; =0x0225EC88 + ldr r3, [r4, #4] + lsl r7, r0, #4 + ldrh r2, [r1, r7] + mov r1, #0x19 + lsl r1, r1, #0x16 + add r1, r1, r2 + ldr r2, _02257638 ; =0x0225EC8A + add r0, r6, #0 + ldrh r2, [r2, r7] + add r1, r3, r1 + blx MIi_CpuCopy16 + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + ldr r1, _0225763C ; =0x0225EC8C + ldr r3, [r4, #4] + lsl r7, r0, #4 + ldrh r2, [r1, r7] + mov r1, #0x19 + lsl r1, r1, #0x16 + add r1, r1, r2 + ldr r2, _02257640 ; =0x0225EC8E + ldr r0, [sp, #0x20] + ldrh r2, [r2, r7] + add r1, r3, r1 + blx MIi_CpuCopy16 + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + ldr r3, _02257644 ; =0x0225EC90 + ldr r1, [r4, #4] + lsl r2, r0, #4 + ldr r0, _02257638 ; =0x0225EC8A + ldrh r0, [r0, r2] + add r0, r6, r0 + ldrh r6, [r3, r2] + mov r3, #0x19 + lsl r3, r3, #0x16 + add r3, r3, r6 + add r1, r1, r3 + ldr r3, _02257648 ; =0x0225EC92 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + add r5, #0x25 + ldrb r0, [r5] + ldr r4, [r4, #4] + lsl r2, r0, #4 + ldr r0, _02257640 ; =0x0225EC8E + ldrh r1, [r0, r2] + ldr r0, [sp, #0x20] + add r0, r0, r1 + ldr r1, _0225764C ; =0x0225EC94 + ldrh r3, [r1, r2] + mov r1, #0x19 + lsl r1, r1, #0x16 + add r1, r1, r3 + ldr r3, _02257650 ; =0x0225EC96 + add r1, r4, r1 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + add r0, sp, #0x24 + bl FUN_02019178 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02257630: .word 0x000E020F +_02257634: .word 0x0225EC88 +_02257638: .word 0x0225EC8A +_0225763C: .word 0x0225EC8C +_02257640: .word 0x0225EC8E +_02257644: .word 0x0225EC90 +_02257648: .word 0x0225EC92 +_0225764C: .word 0x0225EC94 +_02257650: .word 0x0225EC96 + + thumb_func_start MOD11_02257654 +MOD11_02257654: ; 0x02257654 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r0, #0x49 + ldrb r0, [r0] + cmp r0, #0 + bne _02257666 + mov r0, #0x3e + b _02257670 +_02257666: + cmp r0, #1 + bne _0225766E + mov r0, #0x3c + b _02257670 +_0225766E: + mov r0, #0x40 +_02257670: + bl MOD11_02257F60 + add r4, r0, #0 + mov r0, #5 + mov r1, #0x80 + bl FUN_02016998 + add r7, r0, #0 + ldr r0, [sp] + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_02020350 + str r0, [sp, #4] + ldr r0, [sp] + ldr r1, _0225774C ; =0x0225EAB8 + add r0, #0x25 + ldrb r0, [r0] + lsl r2, r0, #3 + ldrh r3, [r1, r2] + mov r1, #0x19 + lsl r1, r1, #0x16 + ldr r0, [sp, #4] + add r1, r1, r3 + ldr r3, _02257750 ; =0x0225EABA + ldr r0, [r0, #4] + ldrh r2, [r3, r2] + add r0, r0, r1 + add r1, r7, #0 + blx MIi_CpuCopy16 + ldr r0, [sp] + ldr r1, _02257754 ; =0x0225EABC + add r0, #0x25 + ldrb r0, [r0] + lsl r2, r0, #3 + ldrh r3, [r1, r2] + mov r1, #0x19 + ldr r0, [sp, #4] + lsl r1, r1, #0x16 + add r1, r1, r3 + ldr r3, _02257758 ; =0x0225EABE + ldr r0, [r0, #4] + ldrh r2, [r3, r2] + add r0, r0, r1 + add r1, r7, #0 + add r1, #0x40 + blx MIi_CpuCopy16 + mov r2, #0 + add r1, r2, #0 +_022576D6: + mov r0, #0 + add r3, r7, r1 +_022576DA: + ldrb r5, [r4, r2] + add r6, r4, r2 + add r0, r0, #1 + strb r5, [r3, #0x10] + ldrb r6, [r6, #0x10] + add r5, r3, #0 + add r5, #0x40 + strb r6, [r5] + add r2, r2, #1 + add r3, r3, #1 + cmp r0, #0x10 + blt _022576DA + add r1, #0x20 + add r2, #0x10 + cmp r1, #0x40 + blt _022576D6 + ldr r0, [sp] + ldr r1, [sp, #4] + add r0, #0x25 + ldrb r0, [r0] + ldr r3, _0225774C ; =0x0225EAB8 + ldr r1, [r1, #4] + lsl r2, r0, #3 + ldrh r4, [r3, r2] + mov r3, #0x19 + lsl r3, r3, #0x16 + add r3, r3, r4 + add r1, r1, r3 + ldr r3, _02257750 ; =0x0225EABA + add r0, r7, #0 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + ldr r0, [sp] + ldr r3, _02257754 ; =0x0225EABC + add r0, #0x25 + str r0, [sp] + ldrb r0, [r0] + ldr r1, [sp, #4] + lsl r2, r0, #3 + ldrh r4, [r3, r2] + mov r3, #0x19 + lsl r3, r3, #0x16 + add r0, r7, #0 + ldr r1, [r1, #4] + add r3, r3, r4 + add r1, r1, r3 + ldr r3, _02257758 ; =0x0225EABE + add r0, #0x40 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + add r0, r7, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225774C: .word 0x0225EAB8 +_02257750: .word 0x0225EABA +_02257754: .word 0x0225EABC +_02257758: .word 0x0225EABE + + thumb_func_start MOD11_0225775C +MOD11_0225775C: ; 0x0225775C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #4] + mov r0, #5 + mov r1, #0x60 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #5 + mov r1, #0xc0 + bl FUN_02016998 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0xff + mov r2, #0x60 + blx MI_CpuFill8 + ldr r0, [sp, #4] + ldr r0, [r0, #0xc] + bl MOD11_022300BC + ldr r1, [sp, #4] + str r4, [sp] + add r1, #0x48 + ldrb r1, [r1] + mov r2, #3 + mov r3, #0 + bl FUN_0200BAAC + ldr r0, [sp, #4] + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_02020350 + str r0, [sp, #8] + ldr r0, [sp, #4] + ldr r1, _0225786C ; =0x0225EA28 + add r0, #0x25 + ldrb r0, [r0] + lsl r2, r0, #3 + ldrh r3, [r1, r2] + mov r1, #0x19 + lsl r1, r1, #0x16 + ldr r0, [sp, #8] + add r1, r1, r3 + ldr r3, _02257870 ; =0x0225EA2A + ldr r0, [r0, #4] + ldrh r2, [r3, r2] + add r0, r0, r1 + add r1, r7, #0 + blx MIi_CpuCopy16 + ldr r0, [sp, #4] + ldr r1, _02257874 ; =0x0225EA2C + add r0, #0x25 + ldrb r0, [r0] + lsl r2, r0, #3 + ldrh r3, [r1, r2] + mov r1, #0x19 + ldr r0, [sp, #8] + lsl r1, r1, #0x16 + add r1, r1, r3 + ldr r3, _02257878 ; =0x0225EA2E + ldr r0, [r0, #4] + ldrh r2, [r3, r2] + add r0, r0, r1 + add r1, r7, #0 + add r1, #0x60 + blx MIi_CpuCopy16 + mov r2, #0 + add r1, r2, #0 +_022577EE: + mov r0, #0 + add r3, r7, r1 +_022577F2: + ldrb r5, [r4, r2] + add r6, r4, r2 + add r0, r0, #1 + strb r5, [r3, #0x10] + ldrb r6, [r6, #0x10] + add r5, r3, #0 + add r5, #0x60 + strb r6, [r5] + add r2, r2, #1 + add r3, r3, #1 + cmp r0, #0x10 + blt _022577F2 + add r1, #0x20 + add r2, #0x10 + cmp r1, #0x60 + blt _022577EE + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r0, #0x25 + ldrb r0, [r0] + ldr r3, _0225786C ; =0x0225EA28 + ldr r1, [r1, #4] + lsl r2, r0, #3 + ldrh r5, [r3, r2] + mov r3, #0x19 + lsl r3, r3, #0x16 + add r3, r3, r5 + add r1, r1, r3 + ldr r3, _02257870 ; =0x0225EA2A + add r0, r7, #0 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + ldr r0, [sp, #4] + ldr r3, _02257874 ; =0x0225EA2C + add r0, #0x25 + str r0, [sp, #4] + ldrb r0, [r0] + ldr r1, [sp, #8] + lsl r2, r0, #3 + ldrh r5, [r3, r2] + mov r3, #0x19 + lsl r3, r3, #0x16 + add r0, r7, #0 + ldr r1, [r1, #4] + add r3, r3, r5 + add r1, r1, r3 + ldr r3, _02257878 ; =0x0225EA2E + add r0, #0x60 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0225786C: .word 0x0225EA28 +_02257870: .word 0x0225EA2A +_02257874: .word 0x0225EA2C +_02257878: .word 0x0225EA2E + + thumb_func_start MOD11_0225787C +MOD11_0225787C: ; 0x0225787C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #5 + mov r1, #0x60 + bl FUN_02016998 + mov r1, #0xff + mov r2, #0x60 + add r4, r0, #0 + blx MI_CpuFill8 + ldr r0, [r5, #0xc] + bl MOD11_022300B4 + str r4, [sp] + add r1, r6, #0 + mov r2, #3 + mov r3, #1 + bl FUN_0200BAAC + ldr r0, [r5, #4] + ldr r0, [r0] + bl FUN_02020350 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x25 + ldrb r0, [r0] + mov r7, #0x19 + ldr r3, _022578F8 ; =0x0225EA58 + lsl r2, r0, #3 + ldrh r3, [r3, r2] + lsl r7, r7, #0x16 + ldr r1, [r6, #4] + add r3, r7, r3 + add r1, r1, r3 + ldr r3, _022578FC ; =0x0225EA5A + add r0, r4, #0 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + add r5, #0x25 + ldrb r0, [r5] + ldr r3, _02257900 ; =0x0225EA5C + ldr r1, [r6, #4] + lsl r2, r0, #3 + ldrh r3, [r3, r2] + ldr r0, _022578FC ; =0x0225EA5A + add r3, r7, r3 + add r1, r1, r3 + ldrh r0, [r0, r2] + ldr r3, _02257904 ; =0x0225EA5E + ldrh r2, [r3, r2] + add r0, r4, r0 + blx MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022578F8: .word 0x0225EA58 +_022578FC: .word 0x0225EA5A +_02257900: .word 0x0225EA5C +_02257904: .word 0x0225EA5E + + thumb_func_start MOD11_02257908 +MOD11_02257908: ; 0x02257908 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #5 + mov r1, #0x60 + bl FUN_02016998 + mov r1, #0xff + mov r2, #0x60 + add r4, r0, #0 + blx MI_CpuFill8 + ldr r0, [r5, #0xc] + bl MOD11_022300B4 + str r4, [sp] + ldr r1, [r5, #0x2c] + mov r2, #3 + mov r3, #0 + bl FUN_0200BAAC + ldr r0, [r5, #4] + ldr r0, [r0] + bl FUN_02020350 + add r1, r0, #0 + add r5, #0x25 + ldrb r0, [r5] + ldr r3, _02257960 ; =0x0225E9F8 + ldr r1, [r1, #4] + lsl r2, r0, #2 + ldrh r5, [r3, r2] + mov r3, #0x19 + lsl r3, r3, #0x16 + add r3, r5, r3 + add r1, r1, r3 + ldr r3, _02257964 ; =0x0225E9FA + add r0, r4, #0 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 +_02257960: .word 0x0225E9F8 +_02257964: .word 0x0225E9FA + + thumb_func_start MOD11_02257968 +MOD11_02257968: ; 0x02257968 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x4b + ldrb r0, [r0] + cmp r0, #1 + bne _0225797C + mov r0, #0x3b + bl MOD11_02257F60 + b _02257982 +_0225797C: + mov r0, #0x38 + bl MOD11_02257F60 +_02257982: + add r4, r0, #0 + ldr r0, [r5, #4] + ldr r0, [r0] + bl FUN_02020350 + add r5, #0x25 + add r1, r0, #0 + ldrb r0, [r5] + lsl r2, r0, #2 + add r0, r4, #0 + ldr r4, [r1, #4] + ldr r1, _022579B0 ; =0x0225E9C8 + ldrh r3, [r1, r2] + mov r1, #0x19 + lsl r1, r1, #0x16 + add r1, r3, r1 + ldr r3, _022579B4 ; =0x0225E9CA + add r1, r4, r1 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + pop {r3, r4, r5, pc} + nop +_022579B0: .word 0x0225E9C8 +_022579B4: .word 0x0225E9CA + + thumb_func_start MOD11_022579B8 +MOD11_022579B8: ; 0x022579B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD11_02257F60 + add r4, r0, #0 + ldr r0, [r5, #4] + ldr r0, [r0] + bl FUN_02020350 + add r5, #0x25 + add r1, r0, #0 + ldrb r0, [r5] + lsl r2, r0, #2 + add r0, r4, #0 + ldr r4, [r1, #4] + ldr r1, _022579F0 ; =0x0225E998 + ldrh r3, [r1, r2] + mov r1, #0x19 + lsl r1, r1, #0x16 + add r1, r3, r1 + ldr r3, _022579F4 ; =0x0225E99A + add r1, r4, r1 + ldrh r2, [r3, r2] + blx MIi_CpuCopy16 + pop {r3, r4, r5, pc} + nop +_022579F0: .word 0x0225E998 +_022579F4: .word 0x0225E99A + + thumb_func_start MOD11_022579F8 +MOD11_022579F8: ; 0x022579F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl MOD11_0222FF68 + add r6, r0, #0 + ldr r0, [r4, #0xc] + bl MOD11_022300C4 + mov r1, #1 + lsl r1, r1, #0xa + add r2, r5, #0 + tst r2, r1 + beq _02257A20 + sub r1, #0x4a + bl FUN_0200A914 + b _02257A26 +_02257A20: + add r1, #0xc4 + bl FUN_0200A914 +_02257A26: + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + add r0, r6, #0 + add r1, sp, #0x18 + mov r2, #0xd + mov r3, #2 + bl FUN_020190EC + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02257AD0 ; =0x000E020F + add r2, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + add r0, sp, #0x18 + add r3, r1, #0 + bl FUN_0201BE3C + ldr r0, [r4, #4] + ldr r5, [sp, #0x24] + ldr r0, [r0] + bl FUN_02020350 + add r4, r0, #0 + mov r2, #0x1a + mov r6, #0x19 + lsl r2, r2, #4 + lsl r6, r6, #0x16 + add r2, #0xa0 + ldr r1, [r4, #4] + add r2, r6, r2 + add r1, r1, r2 + add r0, r5, #0 + mov r2, #0xc0 + blx MIi_CpuCopy16 + mov r2, #0xd + mov r0, #0x1a + lsl r2, r2, #6 + lsl r0, r0, #4 + ldr r1, [r4, #4] + add r2, r6, r2 + add r1, r1, r2 + add r0, r5, r0 + mov r2, #0xc0 + blx MIi_CpuCopy16 + mov r2, #0xa + lsl r2, r2, #8 + add r0, r5, #0 + ldr r1, [r4, #4] + add r2, r6, r2 + add r1, r1, r2 + add r0, #0xc0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + mov r0, #0x1a + mov r1, #0xb + lsl r0, r0, #4 + lsl r1, r1, #8 + add r0, r5, r0 + ldr r2, [r4, #4] + add r1, r6, r1 + add r1, r2, r1 + add r0, #0xc0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + add r0, sp, #0x18 + bl FUN_02019178 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02257AD0: .word 0x000E020F + + thumb_func_start MOD11_02257AD4 +MOD11_02257AD4: ; 0x02257AD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl MOD11_0222FF68 + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + bl MOD11_022300C4 + str r0, [sp, #0x20] + ldr r0, [r4, #0xc] + bl MOD11_02230138 + add r7, r0, #0 + mov r0, #0x1e + mov r1, #5 + bl FUN_020219F4 + mov r1, #1 + add r6, r0, #0 + lsl r1, r1, #0xa + add r0, r5, #0 + tst r0, r1 + beq _02257B14 + ldr r0, [sp, #0x20] + sub r1, #0x49 + bl FUN_0200A914 + str r0, [sp, #0x18] + b _02257B1E +_02257B14: + ldr r0, [sp, #0x20] + add r1, #0xc5 + bl FUN_0200A914 + str r0, [sp, #0x18] +_02257B1E: + mov r0, #1 + str r0, [sp] + add r2, r4, #0 + str r0, [sp, #4] + add r2, #0x27 + ldrb r2, [r2] + add r0, r7, #0 + mov r1, #0 + mov r3, #2 + bl FUN_0200AD38 + ldr r2, [sp, #0x18] + add r0, r7, #0 + add r1, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r1, sp, #0x24 + mov r2, #0xd + mov r3, #2 + bl FUN_020190EC + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02257BE8 ; =0x000E020F + add r2, r6, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + add r0, sp, #0x24 + add r3, r1, #0 + bl FUN_0201BE3C + ldr r0, [r4, #4] + ldr r5, [sp, #0x30] + ldr r0, [r0] + bl FUN_02020350 + add r4, r0, #0 + mov r7, #0x19 + mov r2, #0x11 + lsl r7, r7, #0x16 + lsl r2, r2, #6 + ldr r1, [r4, #4] + add r2, r7, r2 + add r1, r1, r2 + add r0, r5, #0 + mov r2, #0xc0 + blx MIi_CpuCopy16 + mov r2, #0x15 + mov r0, #0x1a + lsl r2, r2, #6 + lsl r0, r0, #4 + ldr r1, [r4, #4] + add r2, r7, r2 + add r1, r1, r2 + add r0, r5, r0 + mov r2, #0xc0 + blx MIi_CpuCopy16 + mov r2, #3 + lsl r2, r2, #0xa + add r0, r5, #0 + ldr r1, [r4, #4] + add r2, r7, r2 + add r1, r1, r2 + add r0, #0xc0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + mov r0, #0x1a + mov r1, #0xd + lsl r0, r0, #4 + lsl r1, r1, #8 + add r0, r5, r0 + ldr r2, [r4, #4] + add r1, r7, r1 + add r1, r2, r1 + add r0, #0xc0 + mov r2, #0xe0 + blx MIi_CpuCopy16 + add r0, sp, #0x24 + bl FUN_02019178 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02257BE8: .word 0x000E020F + + thumb_func_start MOD11_02257BEC +MOD11_02257BEC: ; 0x02257BEC + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + bne _02257C10 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r3, r5, #0 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x28] + ldr r2, [r5, #0x30] + add r3, #0x34 + bl MOD11_02257DE8 + add r6, r0, #0 + b _02257C48 +_02257C10: + ldr r0, [r5, #0x38] + ldr r1, [r5, #0x40] + ldr r2, [r5, #0x3c] + mov r3, #0xb + bl MOD11_02257F20 + add r1, r0, #0 + bne _02257C22 + mov r1, #1 +_02257C22: + ldr r6, [r5, #0x40] + add r0, r6, #0 + blx _s32_div_f + blx abs + mov r1, #0xb + lsl r0, r0, #0x10 + add r3, r5, #0 + str r1, [sp] + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + ldr r1, [r5, #0x38] + add r2, r6, #0 + add r3, #0x44 + bl MOD11_02257DE8 + add r6, r0, #0 +_02257C48: + cmp r4, #0 + bne _02257C5A + add r0, r5, #0 + add r0, #0x4f + ldrb r0, [r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + beq _02257C64 +_02257C5A: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD11_02257C80 +_02257C64: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + bne _02257C7A + cmp r4, #0 + bne _02257C76 + mov r0, #0 + str r0, [r5, #0x34] + b _02257C7A +_02257C76: + mov r0, #0 + str r0, [r5, #0x44] +_02257C7A: + add r0, r6, #0 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02257C80 +MOD11_02257C80: ; 0x02257C80 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + ldr r0, [r6, #4] + add r4, r1, #0 + ldr r0, [r0] + bl FUN_02020350 + add r5, r0, #0 + cmp r4, #0 + beq _02257C9E + cmp r4, #1 + beq _02257D50 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_02257C9E: + add r0, sp, #0x10 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + add r3, r6, #0 + ldr r0, [r6, #0x2c] + ldr r1, [r6, #0x28] + ldr r2, [r6, #0x30] + add r3, #0x34 + bl MOD11_02257EA4 + mov r1, #0x30 + bl FUN_02079A24 + cmp r0, #1 + beq _02257CCE + cmp r0, #2 + beq _02257CCA + cmp r0, #3 + bne _02257CCE + mov r0, #2 + b _02257CD0 +_02257CCA: + mov r0, #0xb + b _02257CD0 +_02257CCE: + mov r0, #0x14 +_02257CD0: + bl MOD11_02257F60 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0x25 + ldrb r0, [r0] + mov r4, #0 + lsl r1, r0, #3 + ldr r0, _02257DE0 ; =0x0225EA8A + ldrh r0, [r0, r1] + lsr r7, r0, #5 +_02257CE6: + cmp r4, r7 + add r0, sp, #0x10 + bge _02257D16 + add r2, r6, #0 + add r2, #0x25 + ldrb r2, [r2] + ldrb r0, [r0, r4] + lsl r3, r2, #3 + ldr r2, _02257DE4 ; =0x0225EA88 + lsl r1, r0, #5 + ldrh r3, [r2, r3] + ldr r0, [sp, #0xc] + mov r2, #0x19 + lsl r2, r2, #0x16 + add r0, r0, r1 + add r3, r2, r3 + lsl r2, r4, #5 + ldr r1, [r5, #4] + add r2, r3, r2 + add r1, r1, r2 + mov r2, #0x20 + blx MIi_CpuCopy16 + b _02257D42 +_02257D16: + ldrb r0, [r0, r4] + ldr r2, [r5, #4] + lsl r1, r0, #5 + ldr r0, [sp, #0xc] + add r0, r0, r1 + add r1, r6, #0 + add r1, #0x25 + ldrb r1, [r1] + lsl r3, r1, #3 + ldr r1, _02257DE4 ; =0x0225EA88 + add r1, r1, r3 + ldrh r3, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #0x16 + add r1, r1, r3 + sub r3, r4, r7 + lsl r3, r3, #5 + add r1, r1, r3 + add r1, r2, r1 + mov r2, #0x20 + blx MIi_CpuCopy16 +_02257D42: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _02257CE6 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_02257D50: + add r0, sp, #0x10 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + add r3, r6, #0 + ldr r0, [r6, #0x3c] + ldr r1, [r6, #0x38] + ldr r2, [r6, #0x40] + add r3, #0x44 + bl MOD11_02257EA4 + add r6, #0x48 + ldrb r0, [r6] + cmp r0, #0x64 + bne _02257D80 + mov r0, #0 + add r2, r0, #0 + add r1, sp, #0x10 +_02257D74: + strb r2, [r1, r0] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xb + blo _02257D74 +_02257D80: + mov r0, #0x1d + bl MOD11_02257F60 + add r6, r0, #0 + mov r1, #0x19 + mov r0, #0x1a + lsl r1, r1, #0x16 + lsl r0, r0, #6 + add r0, r1, r0 + str r0, [sp, #8] + mov r0, #0xe + lsl r0, r0, #8 + mov r4, #0 + add r7, r1, r0 +_02257D9C: + cmp r4, #4 + add r0, sp, #0x10 + bhs _02257DBA + ldrb r0, [r0, r4] + ldr r1, [sp, #8] + lsl r2, r4, #5 + lsl r0, r0, #5 + add r1, r1, r2 + ldr r3, [r5, #4] + add r0, r6, r0 + add r1, r3, r1 + mov r2, #0x20 + blx MIi_CpuCopy16 + b _02257DD0 +_02257DBA: + ldrb r0, [r0, r4] + sub r2, r4, #4 + lsl r2, r2, #5 + lsl r0, r0, #5 + ldr r1, [r5, #4] + add r2, r7, r2 + add r1, r1, r2 + add r0, r6, r0 + mov r2, #0x20 + blx MIi_CpuCopy16 +_02257DD0: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0xb + blo _02257D9C + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02257DE0: .word 0x0225EA8A +_02257DE4: .word 0x0225EA88 + + thumb_func_start MOD11_02257DE8 +MOD11_02257DE8: ; 0x02257DE8 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r2, sp, #0 + add r5, r3, #0 + ldrb r2, [r2, #0x10] + mov r3, #2 + ldr r4, [r5] + lsl r2, r2, #0x1b + lsl r3, r3, #0x1e + lsr r2, r2, #0x18 + cmp r4, r3 + bne _02257E0C + cmp r0, r2 + bge _02257E0A + lsl r3, r1, #8 + str r3, [r5] + b _02257E0C +_02257E0A: + str r1, [r5] +_02257E0C: + sub r4, r1, r6 + bpl _02257E14 + mov r4, #0 + b _02257E1A +_02257E14: + cmp r4, r0 + ble _02257E1A + add r4, r0, #0 +_02257E1A: + cmp r0, r2 + bge _02257E32 + ldr r3, [r5] + asr r1, r3, #8 + cmp r4, r1 + bne _02257E3E + lsl r1, r3, #0x18 + lsr r1, r1, #0x18 + bne _02257E3E + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02257E32: + ldr r1, [r5] + cmp r4, r1 + bne _02257E3E + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02257E3E: + cmp r0, r2 + bge _02257E7E + lsl r0, r0, #8 + add r1, r2, #0 + blx _s32_div_f + cmp r6, #0 + ldr r1, [r5] + bge _02257E62 + add r0, r1, r0 + str r0, [r5] + asr r0, r0, #8 + cmp r0, r4 + blt _02257EA2 + lsl r0, r4, #8 + str r0, [r5] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02257E62: + sub r1, r1, r0 + str r1, [r5] + asr r0, r1, #8 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0 + ble _02257E72 + add r0, r0, #1 +_02257E72: + cmp r0, r4 + bgt _02257EA2 + lsl r0, r4, #8 + str r0, [r5] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02257E7E: + cmp r6, #0 + ldr r1, [r5] + add r0, sp, #0 + bge _02257E94 + ldrh r0, [r0, #0x14] + add r0, r1, r0 + str r0, [r5] + cmp r0, r4 + ble _02257EA0 + str r4, [r5] + b _02257EA0 +_02257E94: + ldrh r0, [r0, #0x14] + sub r0, r1, r0 + str r0, [r5] + cmp r0, r4 + bge _02257EA0 + str r4, [r5] +_02257EA0: + ldr r0, [r5] +_02257EA2: + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_02257EA4 +MOD11_02257EA4: ; 0x02257EA4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r5, [sp, #0x18] + sub r7, r1, r2 + bpl _02257EB2 + mov r7, #0 + b _02257EB8 +_02257EB2: + cmp r7, r6 + ble _02257EB8 + add r7, r6, #0 +_02257EB8: + add r0, sp, #8 + ldrb r4, [r0, #0x14] + mov r1, #0 + lsl r2, r4, #3 + cmp r4, #0 + ble _02257ECE + add r0, r1, #0 +_02257EC6: + strb r0, [r5, r1] + add r1, r1, #1 + cmp r1, r4 + blt _02257EC6 +_02257ECE: + cmp r6, r2 + ldr r1, [r3] + bhs _02257EE2 + add r0, r1, #0 + mul r0, r2 + add r1, r6, #0 + blx _u32_div_f + lsr r0, r0, #8 + b _02257EEC +_02257EE2: + add r0, r1, #0 + mul r0, r2 + add r1, r6, #0 + blx _u32_div_f +_02257EEC: + add r2, r0, #0 + cmp r0, #0 + bne _02257EFC + cmp r7, #0 + ble _02257EFC + mov r2, #1 + strb r2, [r5] + b _02257F18 +_02257EFC: + mov r3, #0 + cmp r4, #0 + ble _02257F18 + mov r1, #8 +_02257F04: + cmp r0, #8 + blo _02257F0E + strb r1, [r5, r3] + sub r0, #8 + b _02257F12 +_02257F0E: + strb r0, [r5, r3] + b _02257F18 +_02257F12: + add r3, r3, #1 + cmp r3, r4 + blt _02257F04 +_02257F18: + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02257F20 +MOD11_02257F20: ; 0x02257F20 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + lsl r0, r3, #0x1b + add r5, r2, #0 + lsr r6, r0, #0x18 + sub r4, r7, r1 + bpl _02257F32 + mov r4, #0 + b _02257F38 +_02257F32: + cmp r4, r5 + ble _02257F38 + add r4, r5, #0 +_02257F38: + add r0, r7, #0 + mul r0, r6 + add r1, r5, #0 + blx _s32_div_f + add r7, r0, #0 + add r0, r4, #0 + mul r0, r6 + add r1, r5, #0 + blx _s32_div_f + lsl r1, r7, #0x18 + lsl r0, r0, #0x18 + asr r1, r1, #0x18 + asr r0, r0, #0x18 + sub r0, r1, r0 + blx abs + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_02257F60 +MOD11_02257F60: ; 0x02257F60 + ldr r1, _02257F68 ; =0x0225ECE8 + lsl r0, r0, #5 + add r0, r1, r0 + bx lr + .align 2, 0 +_02257F68: .word 0x0225ECE8 + + thumb_func_start MOD11_02257F6C +MOD11_02257F6C: ; 0x02257F6C + push {r3, lr} + cmp r0, #5 + bhi _02257FB8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02257F7E: ; jump table + .short _02257F8A - _02257F7E - 2 ; case 0 + .short _02257FA4 - _02257F7E - 2 ; case 1 + .short _02257FA8 - _02257F7E - 2 ; case 2 + .short _02257FAC - _02257F7E - 2 ; case 3 + .short _02257FB0 - _02257F7E - 2 ; case 4 + .short _02257FB4 - _02257F7E - 2 ; case 5 +_02257F8A: + mov r0, #2 + lsl r0, r0, #8 + tst r0, r1 + beq _02257F96 + mov r0, #7 + pop {r3, pc} +_02257F96: + mov r0, #0x20 + tst r0, r1 + beq _02257FA0 + mov r0, #6 + pop {r3, pc} +_02257FA0: + mov r0, #0 + pop {r3, pc} +_02257FA4: + mov r0, #1 + pop {r3, pc} +_02257FA8: + mov r0, #2 + pop {r3, pc} +_02257FAC: + mov r0, #3 + pop {r3, pc} +_02257FB0: + mov r0, #4 + pop {r3, pc} +_02257FB4: + mov r0, #5 + pop {r3, pc} +_02257FB8: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD11_02257FC0 +MOD11_02257FC0: ; 0x02257FC0 + push {r3, lr} + cmp r0, #7 + bhi _02257FFE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02257FD2: ; jump table + .short _02257FE2 - _02257FD2 - 2 ; case 0 + .short _02257FE6 - _02257FD2 - 2 ; case 1 + .short _02257FEA - _02257FD2 - 2 ; case 2 + .short _02257FEE - _02257FD2 - 2 ; case 3 + .short _02257FF2 - _02257FD2 - 2 ; case 4 + .short _02257FF6 - _02257FD2 - 2 ; case 5 + .short _02257FFA - _02257FD2 - 2 ; case 6 + .short _02257FFA - _02257FD2 - 2 ; case 7 +_02257FE2: + ldr r0, _02258008 ; =0x0225EBEC + pop {r3, pc} +_02257FE6: + ldr r0, _0225800C ; =0x0225EC20 + pop {r3, pc} +_02257FEA: + ldr r0, _02258010 ; =0x0225EAE8 + pop {r3, pc} +_02257FEE: + ldr r0, _02258014 ; =0x0225EB1C + pop {r3, pc} +_02257FF2: + ldr r0, _02258018 ; =0x0225EB84 + pop {r3, pc} +_02257FF6: + ldr r0, _0225801C ; =0x0225EC54 + pop {r3, pc} +_02257FFA: + ldr r0, _02258020 ; =0x0225EBB8 + pop {r3, pc} +_02257FFE: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + nop +_02258008: .word 0x0225EBEC +_0225800C: .word 0x0225EC20 +_02258010: .word 0x0225EAE8 +_02258014: .word 0x0225EB1C +_02258018: .word 0x0225EB84 +_0225801C: .word 0x0225EC54 +_02258020: .word 0x0225EBB8 + + thumb_func_start MOD11_02258024 +MOD11_02258024: ; 0x02258024 + push {r3, lr} + cmp r0, #7 + bhi _0225804E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02258036: ; jump table + .short _02258046 - _02258036 - 2 ; case 0 + .short _0225804A - _02258036 - 2 ; case 1 + .short _02258046 - _02258036 - 2 ; case 2 + .short _0225804A - _02258036 - 2 ; case 3 + .short _02258046 - _02258036 - 2 ; case 4 + .short _0225804A - _02258036 - 2 ; case 5 + .short _02258046 - _02258036 - 2 ; case 6 + .short _02258046 - _02258036 - 2 ; case 7 +_02258046: + ldr r0, _02258058 ; =0x0225EB50 + pop {r3, pc} +_0225804A: + mov r0, #0 + pop {r3, pc} +_0225804E: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + nop +_02258058: .word 0x0225EB50 + + thumb_func_start MOD11_0225805C +MOD11_0225805C: ; 0x0225805C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0 + strb r0, [r6] + mov r0, #5 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + blx MI_CpuFill8 + mov r2, #0xfa + str r5, [r4] + ldr r0, _0225808C ; =MOD11_02258090 + add r1, r4, #0 + lsl r2, r2, #2 + str r6, [r4, #4] + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_0225808C: .word MOD11_02258090 + + thumb_func_start MOD11_02258090 +MOD11_02258090: ; 0x02258090 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl MOD11_02230080 + add r5, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl MOD11_022300CC + add r6, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _022580BC + cmp r0, #1 + beq _022580DA + cmp r0, #2 + beq _02258112 + b _0225814A +_022580BC: + ldr r1, _02258174 ; =0x00004E27 + add r0, r5, #0 + mov r2, #1 + bl FUN_0200C344 + add r5, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + ldr r0, [r0, #4] + bl FUN_0200C66C + strb r5, [r4, #9] + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] +_022580DA: + mov r0, #0xa + ldrsb r1, [r4, r0] + add r1, r1, #4 + strb r1, [r4, #0xa] + ldrsb r0, [r4, r0] + cmp r0, #0x10 + blt _022580F2 + mov r0, #0x10 + strb r0, [r4, #0xa] + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] +_022580F2: + ldrb r0, [r4, #0xa] + mov r1, #2 + mov r3, #1 + str r0, [sp] + ldr r0, _02258178 ; =0x000073A5 + str r0, [sp, #4] + ldrb r2, [r4, #9] + add r0, r6, #0 + lsl r2, r2, #4 + add r2, #0xf + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02258112: + mov r0, #0xa + ldrsb r1, [r4, r0] + sub r1, r1, #4 + strb r1, [r4, #0xa] + ldrsb r0, [r4, r0] + cmp r0, #0 + bgt _0225812A + mov r0, #0 + strb r0, [r4, #0xa] + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] +_0225812A: + ldrb r0, [r4, #0xa] + mov r1, #2 + mov r3, #1 + str r0, [sp] + ldr r0, _02258178 ; =0x000073A5 + str r0, [sp, #4] + ldrb r2, [r4, #9] + add r0, r6, #0 + lsl r2, r2, #4 + add r2, #0xf + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0225814A: + ldr r1, _0225817C ; =0x00004E26 + add r0, r5, #0 + mov r2, #1 + bl FUN_0200C344 + add r1, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #4] + bl FUN_0200C66C + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02258174: .word 0x00004E27 +_02258178: .word 0x000073A5 +_0225817C: .word 0x00004E26 + + thumb_func_start MOD11_02258180 +MOD11_02258180: ; 0x02258180 + bx lr + .align 2, 0 + + thumb_func_start MOD11_02258184 +MOD11_02258184: ; 0x02258184 + bx lr + .align 2, 0 + + thumb_func_start MOD11_02258188 +MOD11_02258188: ; 0x02258188 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + bne _022581A6 + add r0, r4, #0 + mov r1, #0 + add r0, #0x54 + strh r1, [r0] + ldr r0, _022581A8 ; =MOD11_022581D4 + ldr r2, _022581AC ; =0x000003F2 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x50] +_022581A6: + pop {r4, pc} + .align 2, 0 +_022581A8: .word MOD11_022581D4 +_022581AC: .word 0x000003F2 + + thumb_func_start MOD11_022581B0 +MOD11_022581B0: ; 0x022581B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _022581C2 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x50] +_022581C2: + add r0, r4, #0 + mov r1, #0 + add r0, #0x54 + strh r1, [r0] + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_022572C8 + pop {r4, pc} + + thumb_func_start MOD11_022581D4 +MOD11_022581D4: ; 0x022581D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r1, #0x54 + ldrh r2, [r1] + add r1, r4, #0 + add r1, #0x54 + add r2, #0x14 + strh r2, [r1] + add r1, r4, #0 + add r1, #0x54 + ldrh r2, [r1] + mov r1, #0x5a + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x54 + cmp r2, r1 + blo _022581FC + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_022581FC: + add r0, r4, #0 + add r0, #0x54 + ldrh r0, [r0] + bl FUN_0201B93C + mov r2, #6 + asr r1, r0, #0x1f + lsl r2, r2, #0xa + mov r3, #0 + blx _ll_mul + mov r2, #2 + add r3, r0, #0 + add r5, r1, #0 + mov r1, #0 + lsl r2, r2, #0xa + add r0, r4, #0 + add r3, r3, r2 + adc r5, r1 + lsl r2, r5, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + asr r2, r3, #0xb + lsr r2, r2, #0x14 + add r2, r3, r2 + asr r2, r2, #0xc + bl MOD11_022572C8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_02258238 +MOD11_02258238: ; 0x02258238 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, [r5, #4] + bl MOD11_02230078 + str r0, [sp, #0x20] + ldr r0, [r5, #4] + bl MOD11_02230080 + add r7, r0, #0 + ldr r0, [r5, #4] + bl MOD11_02230C68 + add r6, r0, #0 + ldrb r0, [r5, #8] + cmp r0, #0 + ldrb r0, [r5, #9] + bne _02258274 + lsl r1, r0, #1 + ldr r0, _02258320 ; =0x0225F5C0 + ldrh r3, [r0, r1] + ldr r0, _02258324 ; =0x00004E2D + mov r1, #0x58 + str r1, [sp, #0x1c] + add r4, r0, #0 + mov r1, #0x59 + sub r4, #8 + str r1, [sp, #0x18] + b _02258288 +_02258274: + lsl r1, r0, #1 + ldr r0, _02258328 ; =0x0225F5A8 + ldrh r3, [r0, r1] + ldr r0, _0225832C ; =0x00004E2E + mov r1, #0x5b + str r1, [sp, #0x1c] + add r4, r0, #0 + mov r1, #0x5c + sub r4, #8 + str r1, [sp, #0x18] +_02258288: + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x20] + add r1, r7, #0 + mov r2, #0x1b + bl FUN_0200C00C + ldr r0, [r5, #4] + bl MOD11_022300CC + mov r1, #0x1b + str r1, [sp] + ldrb r1, [r5, #9] + mov r2, #6 + add r3, r1, #0 + mul r3, r2 + ldr r2, _02258330 ; =0x0225F5D8 + lsl r1, r6, #1 + add r2, r2, r3 + ldrh r1, [r1, r2] + ldr r2, [sp, #0x20] + add r3, r7, #0 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldr r1, _02258334 ; =0x00004E29 + str r1, [sp, #0x14] + mov r1, #2 + bl FUN_0200C0DC + ldr r0, [r5, #4] + bl MOD11_022300CC + mov r1, #0 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + mov r1, #0x70 + str r1, [sp, #8] + ldrb r2, [r5, #9] + mov r3, #6 + lsl r5, r6, #1 + mul r3, r2 + ldr r2, _02258330 ; =0x0225F5D8 + mov r1, #0x1b + add r2, r2, r3 + ldrh r2, [r5, r2] + mov r3, #5 + bl FUN_020030E8 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x1c] + add r1, r7, #0 + mov r2, #0x1b + str r4, [sp, #4] + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + add r1, r7, #0 + mov r2, #0x1b + str r4, [sp, #4] + bl FUN_0200C13C + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02258320: .word 0x0225F5C0 +_02258324: .word 0x00004E2D +_02258328: .word 0x0225F5A8 +_0225832C: .word 0x00004E2E +_02258330: .word 0x0225F5D8 +_02258334: .word 0x00004E29 + + thumb_func_start MOD11_02258338 +MOD11_02258338: ; 0x02258338 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD11_02230078 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD11_02230080 + add r1, r0, #0 + add r0, r5, #0 + ldrb r3, [r4, #8] + mov r2, #0x34 + ldr r5, _02258368 ; =0x0225F61C + mul r2, r3 + add r2, r5, r2 + bl FUN_0200C154 + str r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, pc} + nop +_02258368: .word 0x0225F61C + + thumb_func_start MOD11_0225836C +MOD11_0225836C: ; 0x0225836C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0225837E + bl FUN_0200C3DC + mov r0, #0 + str r0, [r4] +_0225837E: + pop {r4, pc} + + thumb_func_start MOD11_02258380 +MOD11_02258380: ; 0x02258380 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + bl MOD11_02230080 + add r4, r0, #0 + ldrb r0, [r5, #8] + cmp r0, #0 + bne _02258396 + ldr r1, _022583BC ; =0x00004E2D + b _02258398 +_02258396: + ldr r1, _022583C0 ; =0x00004E2E +_02258398: + add r5, r1, #0 + add r0, r4, #0 + sub r5, #8 + bl FUN_0200C358 + ldr r1, _022583C4 ; =0x00004E29 + add r0, r4, #0 + bl FUN_0200C368 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200C378 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + .align 2, 0 +_022583BC: .word 0x00004E2D +_022583C0: .word 0x00004E2E +_022583C4: .word 0x00004E29 + + thumb_func_start MOD11_022583C8 +MOD11_022583C8: ; 0x022583C8 + push {r3, lr} + ldr r0, [r0] + cmp r0, #0 + beq _022583D4 + bl FUN_0200C644 +_022583D4: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD11_022583D8 +MOD11_022583D8: ; 0x022583D8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + mov r0, #0 + add r1, r5, #0 + mov r2, #0x10 + add r7, r3, #0 + blx MIi_CpuClearFast + str r4, [r5, #4] + strb r6, [r5, #8] + strb r7, [r5, #9] + cmp r7, #0xc + blt _022583FE + bl ErrorHandling + mov r0, #0 + strb r0, [r5, #9] +_022583FE: + add r0, r5, #0 + bl MOD11_02258238 + add r0, r5, #0 + bl MOD11_02258338 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0225840C +MOD11_0225840C: ; 0x0225840C + push {r4, lr} + add r4, r0, #0 + bl MOD11_0225836C + add r0, r4, #0 + bl MOD11_02258380 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x10 + blx MIi_CpuClearFast + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_02258428 +MOD11_02258428: ; 0x02258428 + push {r4, lr} + mov r1, #7 + mov r0, #5 + lsl r1, r1, #8 + bl FUN_02016998 + mov r2, #7 + mov r1, #0 + lsl r2, r2, #8 + add r4, r0, #0 + blx MI_CpuFill8 + mov r1, #0 + ldr r0, _0225844C ; =0x0000069F + mvn r1, r1 + strb r1, [r4, r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0225844C: .word 0x0000069F + + thumb_func_start MOD11_02258450 +MOD11_02258450: ; 0x02258450 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _022584A4 ; =0x0225F97C + add r5, r0, #0 + add r7, r4, #0 +_0225845A: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + ldr r2, _022584A8 ; =0x000002FF + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _0225845A + pop {r3, r4, r5, r6, r7, pc} + nop +_022584A4: .word 0x0225F97C +_022584A8: .word 0x000002FF + + thumb_func_start MOD11_022584AC +MOD11_022584AC: ; 0x022584AC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_022584B4: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _022584B4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_022584D4 +MOD11_022584D4: ; 0x022584D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + add r5, r1, #0 + bl MOD11_02258428 + add r6, r0, #0 + ldr r0, _0225863C ; =0x000006A1 + str r4, [r6] + strb r5, [r6, r0] + add r0, r4, #0 + bl MOD11_022300CC + str r0, [sp, #0x10] + mov r0, #0xd + mov r1, #5 + bl FUN_02011744 + ldr r2, _02258640 ; =0x000004C8 + add r1, r6, #0 + str r0, [r6, r2] + ldr r0, _02258644 ; =MOD11_0225B794 + add r2, #0x56 + bl FUN_0200CA44 + ldr r1, _02258648 ; =0x000006AC + mov r7, #2 + str r0, [r6, r1] + mov r4, #0 + lsl r7, r7, #0xa + b _0225854E +_02258512: + mov r0, #5 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r4, #2 + add r1, r6, r1 + str r0, [r1, #0x3c] + mov r0, #5 + str r0, [sp] + ldr r1, _0225864C ; =0x0225F6FC + lsl r2, r4, #1 + ldrh r1, [r1, r2] + mov r0, #7 + mov r2, #1 + add r3, sp, #0x18 + bl FUN_02006BDC + add r5, r0, #0 + lsl r0, r4, #2 + add r0, r6, r0 + ldr r1, [r0, #0x3c] + ldr r0, [sp, #0x18] + add r2, r7, #0 + add r0, #0xc + blx MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + add r4, r4, #1 +_0225854E: + cmp r4, #7 + blt _02258512 + mov r1, #2 + mov r0, #5 + lsl r1, r1, #8 + bl FUN_02016998 + str r0, [r6, #0x58] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x10] + mov r1, #7 + mov r2, #0xc3 + mov r3, #5 + bl FUN_020030E8 + ldr r0, [sp, #0x10] + mov r1, #1 + bl FUN_020031FC + mov r2, #2 + ldr r1, [r6, #0x58] + lsl r2, r2, #8 + blx MIi_CpuCopy16 + add r5, r6, #0 + mov r7, #0x46 + mov r4, #0 + add r5, #0x68 + lsl r7, r7, #2 + b _022585A2 +_02258592: + add r0, r4, #0 + mul r0, r7 + add r0, r5, r0 + mov r1, #0xff + mov r2, #0x18 + blx MI_CpuFill8 + add r4, r4, #1 +_022585A2: + cmp r4, #4 + blt _02258592 + mov r0, #0 + str r0, [sp, #0xc] + mov r7, #6 + b _022585DE +_022585AE: + mov r0, #0x46 + ldr r1, [sp, #0xc] + lsl r0, r0, #2 + mul r0, r1 + mov r5, #0 + add r4, r6, r0 + b _022585D4 +_022585BC: + add r0, r7, #0 + bl FUN_020799E8 + add r1, r0, #0 + mov r0, #5 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + add r1, #0x80 + str r0, [r1] + add r5, r5, #1 +_022585D4: + cmp r5, #4 + blt _022585BC + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] +_022585DE: + ldr r0, [sp, #0xc] + cmp r0, #4 + blt _022585AE + mov r0, #5 + mov r1, #0x20 + bl FUN_02016998 + str r0, [r6, #0x5c] + mov r0, #5 + mov r1, #0x20 + bl FUN_02016998 + str r0, [r6, #0x60] + ldr r1, [r6, #0x5c] + ldr r0, [r6, #0x58] + mov r2, #0x20 + blx MIi_CpuCopy16 + mov r0, #7 + mov r1, #0xca + add r2, sp, #0x14 + mov r3, #5 + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + ldr r1, [r6, #0x60] + ldr r0, [r0, #0xc] + mov r2, #0x20 + blx MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_02002BE4 + bl FUN_02002C04 + ldr r0, _02258650 ; =MOD11_0225B824 + ldr r2, _02258654 ; =0x0000D6D8 + add r1, r6, #0 + bl FUN_0200CA44 + str r0, [r6, #0x64] + add r0, r6, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0225863C: .word 0x000006A1 +_02258640: .word 0x000004C8 +_02258644: .word MOD11_0225B794 +_02258648: .word 0x000006AC +_0225864C: .word 0x0225F6FC +_02258650: .word MOD11_0225B824 +_02258654: .word 0x0000D6D8 + + thumb_func_start MOD11_02258658 +MOD11_02258658: ; 0x02258658 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD11_0225ACB0 + add r0, r6, #0 + bl MOD11_02258B10 + add r0, r6, #0 + bl MOD11_022587A8 + ldr r0, _022586B4 ; =0x000004C8 + ldr r0, [r6, r0] + bl FUN_020117BC + ldr r0, _022586B8 ; =0x000006AC + ldr r0, [r6, r0] + bl FUN_0200CAB4 + mov r4, #0 + add r5, r6, #0 +_02258680: + ldr r0, [r5, #0x3c] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _02258680 + ldr r0, [r6, #0x58] + bl FUN_02016A18 + add r0, r6, #0 + bl MOD11_0225A6B0 + ldr r0, [r6, #0x5c] + bl FUN_02016A18 + ldr r0, [r6, #0x60] + bl FUN_02016A18 + ldr r0, [r6, #0x64] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .align 2, 0 +_022586B4: .word 0x000004C8 +_022586B8: .word 0x000006AC + + thumb_func_start MOD11_022586BC +MOD11_022586BC: ; 0x022586BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + ldr r0, [r7] + bl MOD11_02230078 + add r6, r0, #0 + ldr r0, [r7] + bl MOD11_02230080 + add r4, r0, #0 + ldr r0, [r7] + bl MOD11_0222FF68 + add r5, r0, #0 + ldr r0, [r7] + bl MOD11_022300CC + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #7 + mov r1, #0x11 + add r2, r5, #0 + mov r3, #4 + bl FUN_0200687C + ldr r2, _02258790 ; =0x00004E2D + add r0, r6, #0 + add r1, r4, #0 + add r3, r2, #0 + bl FUN_0206E1D4 + ldr r0, [r7] + bl MOD11_022300CC + mov r1, #2 + str r1, [sp] + ldr r1, _02258794 ; =0x00004E30 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #3 + add r3, r4, #0 + bl FUN_0206E198 + mov r5, #0 +_02258726: + ldr r0, _02258798 ; =0x00004E35 + add r1, r4, #0 + add r0, r5, r0 + str r0, [sp] + add r0, r6, #0 + mov r2, #2 + mov r3, #0 + bl FUN_0206E130 + add r5, r5, #1 + cmp r5, #4 + blt _02258726 + ldr r0, [r7] + bl MOD11_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + beq _0225878C + ldr r0, _0225879C ; =0x00004E40 + ldr r3, _022587A0 ; =0x00004FB2 + str r0, [sp] + add r0, r3, #0 + str r3, [sp, #4] + sub r0, #0xb + str r0, [sp, #8] + ldr r2, [sp, #0x14] + add r0, r6, #0 + add r1, r4, #0 + add r3, r3, #6 + bl MOD11_0225D6A4 + ldr r0, _0225879C ; =0x00004E40 + ldr r3, _022587A0 ; =0x00004FB2 + str r0, [sp] + add r0, r3, #0 + str r3, [sp, #4] + sub r0, #0xb + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, r4, #0 + mov r2, #5 + add r3, r3, #6 + bl MOD11_0225D73C + ldr r1, _022587A4 ; =0x000006F8 + str r0, [r7, r1] +_0225878C: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02258790: .word 0x00004E2D +_02258794: .word 0x00004E30 +_02258798: .word 0x00004E35 +_0225879C: .word 0x00004E40 +_022587A0: .word 0x00004FB2 +_022587A4: .word 0x000006F8 + + thumb_func_start MOD11_022587A8 +MOD11_022587A8: ; 0x022587A8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7] + bl MOD11_02230078 + ldr r0, [r7] + bl MOD11_02230080 + ldr r6, _02258808 ; =0x00004E35 + add r5, r0, #0 + mov r4, #0 +_022587BE: + add r0, r5, #0 + add r1, r4, r6 + bl FUN_0206E21C + add r4, r4, #1 + cmp r4, #4 + blt _022587BE + ldr r1, _0225880C ; =0x00004E30 + add r0, r5, #0 + bl FUN_0206E224 + ldr r1, _02258810 ; =0x00004E2D + add r0, r5, #0 + add r2, r1, #0 + bl FUN_0206E22C + ldr r0, [r7] + bl MOD11_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + beq _02258806 + ldr r0, _02258814 ; =0x000006F8 + ldr r0, [r7, r0] + bl MOD11_0225D7B8 + ldr r3, _02258818 ; =0x00004FA7 + ldr r2, _0225881C ; =0x00004E40 + add r1, r3, #0 + str r3, [sp] + add r0, r5, #0 + add r1, #0x11 + add r3, #0xb + bl MOD11_0225D714 +_02258806: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02258808: .word 0x00004E35 +_0225880C: .word 0x00004E30 +_02258810: .word 0x00004E2D +_02258814: .word 0x000006F8 +_02258818: .word 0x00004FA7 +_0225881C: .word 0x00004E40 + + thumb_func_start MOD11_02258820 +MOD11_02258820: ; 0x02258820 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r7, r0, #0 + str r1, [sp, #0x18] + str r2, [sp, #0x1c] + cmp r3, #0 + beq _0225883A + add r1, r7, #0 + add r0, r3, #0 + add r1, #0x18 + mov r2, #0x22 + blx MI_CpuCopy8 +_0225883A: + ldr r0, _0225893C ; =0x000006A2 + mov r1, #0 + strb r1, [r7, r0] + ldr r0, [r7] + bl MOD11_0222FF68 + str r0, [sp, #0x28] + ldr r0, [r7] + bl MOD11_02230078 + str r0, [sp, #0x24] + ldr r0, [r7] + bl MOD11_02230080 + str r0, [sp, #0x20] + ldr r0, _02258940 ; =0x0000069F + ldrsb r2, [r7, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _0225886C + mov r0, #1 + str r0, [sp, #0x1c] + mov r5, #0 + b _02258874 +_0225886C: + mov r0, #0x30 + ldr r1, _02258944 ; =0x0225FAAC + mul r0, r2 + add r5, r1, r0 +_02258874: + ldr r0, [sp, #0x18] + mov r1, #0x30 + ldr r2, _02258944 ; =0x0225FAAC + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x2c] + ldr r0, [r7] + bl MOD11_022300CC + mov r1, #2 + lsl r1, r1, #8 + str r1, [sp] + ldr r1, [r7, #0x58] + mov r2, #1 + mov r3, #0 + bl FUN_02003054 + ldr r6, [sp, #0x2c] + mov r4, #0 +_0225889A: + ldrh r2, [r6, #4] + ldr r0, _02258948 ; =0x0000FFFF + cmp r2, r0 + beq _022588D0 + ldr r0, [sp, #0x1c] + cmp r0, #1 + beq _022588AE + ldrh r0, [r5, #4] + cmp r2, r0 + beq _022588D0 +_022588AE: + lsl r2, r2, #2 + add r1, r4, #4 + add r2, r7, r2 + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0x28] + ldr r2, [r2, #0x3c] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r4, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0x28] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_022588D0: + add r4, r4, #1 + add r6, r6, #2 + add r5, r5, #2 + cmp r4, #4 + blt _0225889A + ldr r0, [r7] + bl MOD11_022300CC + mov r1, #0x1b + str r1, [sp] + mov r1, #0x24 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #7 + str r1, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + ldr r1, _0225894C ; =0x00004E33 + ldr r2, [sp, #0x24] + str r1, [sp, #0x14] + ldr r3, [sp, #0x20] + mov r1, #3 + bl FUN_0200C0DC + ldr r1, _02258940 ; =0x0000069F + ldr r0, [sp, #0x18] + mov r2, #0xf + strb r0, [r7, r1] + mov r0, #4 + str r0, [sp] + ldr r0, _02258950 ; =0x04001050 + mov r1, #2 + mov r3, #0x1b + blx G2x_SetBlendAlpha_ + add r0, r7, #0 + bl MOD11_0225ACB0 + ldr r0, [sp, #0x2c] + ldr r3, [r0, #0x28] + cmp r3, #0 + beq _0225892E + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + add r0, r7, #0 + blx r3 +_0225892E: + ldr r0, _02258954 ; =MOD11_0225B700 + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225893C: .word 0x000006A2 +_02258940: .word 0x0000069F +_02258944: .word 0x0225FAAC +_02258948: .word 0x0000FFFF +_0225894C: .word 0x00004E33 +_02258950: .word 0x04001050 +_02258954: .word MOD11_0225B700 + + thumb_func_start MOD11_02258958 +MOD11_02258958: ; 0x02258958 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r1, _02258ADC ; =0x000005D4 + str r0, [sp, #0x14] + ldr r0, [r0, r1] + cmp r0, #0 + bne _02258970 + ldr r0, [sp, #0x14] + add r1, #0x18 + ldr r0, [r0, r1] + cmp r0, #0 + beq _02258974 +_02258970: + bl ErrorHandling +_02258974: + ldr r0, [sp, #0x14] + ldr r0, [r0] + bl MOD11_02230078 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + ldr r0, [r0] + bl MOD11_02230080 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02258AE0 ; =0x00004E33 + add r1, r7, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + mov r2, #0x1b + mov r3, #0x90 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02258AE4 ; =0x00004E2B + add r1, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + mov r2, #0x1b + mov r3, #0x8f + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02258AE4 ; =0x00004E2B + add r1, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + mov r2, #0x1b + mov r3, #0x91 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _02258AE8 ; =0x00004E34 + add r1, r7, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + mov r2, #0x1b + mov r3, #0x8d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02258AEC ; =0x00004E2C + add r1, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + mov r2, #0x1b + mov r3, #0x8c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02258AEC ; =0x00004E2C + add r1, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + mov r2, #0x1b + mov r3, #0x8e + bl FUN_0200C13C + mov r0, #0 + ldr r4, [sp, #0x14] + str r0, [sp, #0x1c] + mov r6, #0xc + mov r5, #0xf6 +_02258A12: + ldr r0, [sp, #0x18] + ldr r2, _02258AF0 ; =0x0225F8AC + add r1, r7, #0 + bl FUN_0200C154 + ldr r1, _02258ADC ; =0x000005D4 + mov r3, #0x11 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + lsl r1, r6, #0x10 + ldr r0, [r0] + asr r1, r1, #0x10 + mov r2, #0xd + lsl r3, r3, #0x10 + bl FUN_0200C720 + ldr r0, _02258ADC ; =0x000005D4 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_0200C840 + ldr r0, [sp, #0x18] + ldr r2, _02258AF4 ; =0x0225F8E0 + add r1, r7, #0 + bl FUN_0200C154 + ldr r1, _02258AF8 ; =0x000005EC + mov r3, #0x11 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + lsl r1, r5, #0x10 + ldr r0, [r0] + asr r1, r1, #0x10 + mov r2, #9 + lsl r3, r3, #0x10 + bl FUN_0200C720 + ldr r0, [sp, #0x1c] + add r4, r4, #4 + add r0, r0, #1 + add r6, #0x13 + sub r5, #0xc + str r0, [sp, #0x1c] + cmp r0, #6 + blt _02258A12 + ldr r0, [sp, #0x14] + bl MOD11_02258E30 + ldr r0, [sp, #0x14] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02258A82 + bl ErrorHandling +_02258A82: + ldr r0, _02258AFC ; =MOD11_02258BE0 + ldr r1, [sp, #0x14] + ldr r2, _02258B00 ; =0x00000514 + bl FUN_0200CA44 + ldr r1, [sp, #0x14] + str r0, [r1, #4] + add r0, r1, #0 + ldr r0, [r0] + bl MOD11_022300CC + add r2, r0, #0 + ldr r0, _02258B04 ; =0x00004E3F + ldr r3, _02258B08 ; =0x00004FB1 + str r0, [sp] + add r0, r3, #0 + str r3, [sp, #4] + sub r0, #0xb + str r0, [sp, #8] + ldr r0, [sp, #0x18] + add r1, r7, #0 + add r3, r3, #6 + bl MOD11_0225D3EC + ldr r0, _02258B04 ; =0x00004E3F + ldr r3, _02258B08 ; =0x00004FB1 + str r0, [sp] + add r0, r3, #0 + str r3, [sp, #4] + sub r0, #0xb + str r0, [sp, #8] + mov r2, #5 + str r2, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + add r1, r7, #0 + add r3, r3, #6 + bl MOD11_0225D484 + ldr r2, _02258B0C ; =0x000006EC + ldr r1, [sp, #0x14] + str r0, [r1, r2] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02258ADC: .word 0x000005D4 +_02258AE0: .word 0x00004E33 +_02258AE4: .word 0x00004E2B +_02258AE8: .word 0x00004E34 +_02258AEC: .word 0x00004E2C +_02258AF0: .word 0x0225F8AC +_02258AF4: .word 0x0225F8E0 +_02258AF8: .word 0x000005EC +_02258AFC: .word MOD11_02258BE0 +_02258B00: .word 0x00000514 +_02258B04: .word 0x00004E3F +_02258B08: .word 0x00004FB1 +_02258B0C: .word 0x000006EC + + thumb_func_start MOD11_02258B10 +MOD11_02258B10: ; 0x02258B10 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _02258BBC ; =0x000005D4 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02258B24 + add r0, #0x18 + ldr r0, [r6, r0] + cmp r0, #0 + bne _02258B28 +_02258B24: + bl ErrorHandling +_02258B28: + ldr r0, [r6] + bl MOD11_02230078 + ldr r0, [r6] + bl MOD11_02230080 + ldr r1, _02258BC0 ; =0x00004E33 + add r7, r0, #0 + bl FUN_0200C358 + ldr r1, _02258BC4 ; =0x00004E2B + add r0, r7, #0 + bl FUN_0200C378 + ldr r1, _02258BC4 ; =0x00004E2B + add r0, r7, #0 + bl FUN_0200C388 + ldr r1, _02258BC8 ; =0x00004E34 + add r0, r7, #0 + bl FUN_0200C358 + ldr r1, _02258BCC ; =0x00004E2C + add r0, r7, #0 + bl FUN_0200C378 + ldr r1, _02258BCC ; =0x00004E2C + add r0, r7, #0 + bl FUN_0200C388 + ldr r1, _02258BC0 ; =0x00004E33 + add r0, r7, #0 + bl FUN_0200C368 + mov r4, #0 + add r5, r6, #0 +_02258B70: + ldr r0, _02258BBC ; =0x000005D4 + ldr r0, [r5, r0] + bl FUN_0200C3DC + ldr r0, _02258BBC ; =0x000005D4 + mov r1, #0 + str r1, [r5, r0] + add r0, #0x18 + ldr r0, [r5, r0] + bl FUN_0200C3DC + ldr r0, _02258BD0 ; =0x000005EC + mov r1, #0 + str r1, [r5, r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02258B70 + ldr r0, [r6, #4] + bl FUN_0200CAB4 + ldr r3, _02258BD4 ; =0x00004FA6 + mov r0, #0 + str r0, [r6, #4] + add r1, r3, #0 + str r3, [sp] + ldr r2, _02258BD8 ; =0x00004E3F + add r0, r7, #0 + add r1, #0x11 + add r3, #0xb + bl MOD11_0225D45C + ldr r0, _02258BDC ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D508 + pop {r3, r4, r5, r6, r7, pc} + nop +_02258BBC: .word 0x000005D4 +_02258BC0: .word 0x00004E33 +_02258BC4: .word 0x00004E2B +_02258BC8: .word 0x00004E34 +_02258BCC: .word 0x00004E2C +_02258BD0: .word 0x000005EC +_02258BD4: .word 0x00004FA6 +_02258BD8: .word 0x00004E3F +_02258BDC: .word 0x000006EC + + thumb_func_start MOD11_02258BE0 +MOD11_02258BE0: ; 0x02258BE0 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02258D54 ; =0x00000644 + add r5, r1, #0 + mov r7, #0 + add r4, r5, r0 + mov r6, #0xc +_02258BEC: + ldrb r0, [r4, #3] + cmp r0, #4 + bhi _02258C08 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02258BFE: ; jump table + .short _02258C08 - _02258BFE - 2 ; case 0 + .short _02258C48 - _02258BFE - 2 ; case 1 + .short _02258C5A - _02258BFE - 2 ; case 2 + .short _02258CF2 - _02258BFE - 2 ; case 3 + .short _02258C5A - _02258BFE - 2 ; case 4 +_02258C08: + ldr r0, _02258D58 ; =0x000005D4 + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_0200C650 + cmp r0, #0 + beq _02258C1C + ldrb r0, [r4, #2] + cmp r0, #0x57 + bhs _02258C1E +_02258C1C: + b _02258D42 +_02258C1E: + mov r0, #0 + strb r0, [r4, #4] + mov r0, #0xa + strb r0, [r4, #5] + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r3, r0, #0x1d + ldrb r2, [r4, #5] + sub r3, r3, r1 + mov r0, #0x1d + ror r3, r0 + add r0, r1, r3 + add r0, r2, r0 + strb r0, [r4, #5] + mov r0, #2 + strb r0, [r4, #7] + ldrb r0, [r4, #3] + add r0, r0, #1 + strb r0, [r4, #3] + b _02258D42 +_02258C48: + ldrb r1, [r4, #5] + cmp r1, #0 + beq _02258C54 + sub r0, r1, #1 + strb r0, [r4, #5] + b _02258D42 +_02258C54: + add r0, r0, #1 + strb r0, [r4, #3] + b _02258D42 +_02258C5A: + ldr r0, _02258D58 ; =0x000005D4 + mov r1, #2 + ldr r0, [r5, r0] + lsl r1, r1, #0xa + bl FUN_0200C8BC + mov r0, #0 + ldrsh r1, [r4, r0] + mov r0, #6 + lsl r0, r0, #6 + add r0, r1, r0 + strh r0, [r4] + mov r1, #0 + ldrsh r1, [r4, r1] + ldr r0, _02258D58 ; =0x000005D4 + mov r3, #0x11 + asr r2, r1, #7 + lsr r2, r2, #0x18 + add r2, r1, r2 + asr r1, r2, #8 + add r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + mov r2, #0xd + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldrb r0, [r4, #6] + add r0, r0, #1 + strb r0, [r4, #6] + ldrb r1, [r4, #6] + ldrb r0, [r4, #7] + cmp r1, r0 + blo _02258D42 + mov r0, #0 + strb r0, [r4, #6] + ldrb r0, [r4, #3] + cmp r0, #2 + bne _02258CB0 + add r0, r0, #1 + strb r0, [r4, #3] + b _02258D42 +_02258CB0: + ldr r0, _02258D58 ; =0x000005D4 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200C898 + ldr r0, _02258D58 ; =0x000005D4 + lsl r1, r6, #0x10 + mov r3, #0x11 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + mov r2, #0xd + lsl r3, r3, #0x10 + bl FUN_0200C750 + mov r0, #0 + strh r0, [r4] + ldrb r0, [r4, #8] + cmp r0, #1 + bhs _02258CEA + add r0, r0, #1 + strb r0, [r4, #8] + ldrb r0, [r4, #7] + cmp r0, #1 + bls _02258CE4 + sub r0, r0, #1 + strb r0, [r4, #7] +_02258CE4: + mov r0, #2 + strb r0, [r4, #3] + b _02258D42 +_02258CEA: + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #3] + b _02258D42 +_02258CF2: + ldr r0, _02258D58 ; =0x000005D4 + ldr r1, _02258D5C ; =0xFFFFF800 + ldr r0, [r5, r0] + bl FUN_0200C8BC + mov r0, #0 + ldrsh r1, [r4, r0] + mov r0, #6 + lsl r0, r0, #6 + sub r0, r1, r0 + strh r0, [r4] + mov r1, #0 + ldrsh r1, [r4, r1] + ldr r0, _02258D58 ; =0x000005D4 + mov r3, #0x11 + asr r2, r1, #7 + lsr r2, r2, #0x18 + add r2, r1, r2 + asr r1, r2, #8 + add r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + mov r2, #0xd + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldrb r0, [r4, #6] + add r0, r0, #1 + strb r0, [r4, #6] + ldrb r1, [r4, #7] + ldrb r0, [r4, #6] + lsl r1, r1, #1 + cmp r0, r1 + blt _02258D42 + mov r0, #0 + strb r0, [r4, #6] + ldrb r0, [r4, #3] + add r0, r0, #1 + strb r0, [r4, #3] +_02258D42: + add r7, r7, #1 + add r4, #0xa + add r5, r5, #4 + add r6, #0x13 + cmp r7, #6 + bge _02258D50 + b _02258BEC +_02258D50: + pop {r3, r4, r5, r6, r7, pc} + nop +_02258D54: .word 0x00000644 +_02258D58: .word 0x000005D4 +_02258D5C: .word 0xFFFFF800 + + thumb_func_start MOD11_02258D60 +MOD11_02258D60: ; 0x02258D60 + push {r3, r4} + ldr r2, _02258D78 ; =0x00000646 + mov r4, #0 +_02258D66: + ldrb r3, [r1, r4] + add r4, r4, #1 + strb r3, [r0, r2] + add r0, #0xa + cmp r4, #6 + blt _02258D66 + pop {r3, r4} + bx lr + nop +_02258D78: .word 0x00000646 + + thumb_func_start MOD11_02258D7C +MOD11_02258D7C: ; 0x02258D7C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 +_02258D86: + ldrb r0, [r6, r4] + bl MOD11_0225A400 + add r1, r0, #0 + ldr r0, _02258DC8 ; =0x000005D4 + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_02020130 + ldr r0, _02258DC8 ; =0x000005D4 + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_0200C59C + ldrb r0, [r7, r4] + bl MOD11_0225A400 + add r1, r0, #0 + ldr r0, _02258DCC ; =0x000005EC + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_02020130 + ldr r0, _02258DCC ; =0x000005EC + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_0200C59C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02258D86 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02258DC8: .word 0x000005D4 +_02258DCC: .word 0x000005EC + + thumb_func_start MOD11_02258DD0 +MOD11_02258DD0: ; 0x02258DD0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _02258E28 ; =0x000005D4 + ldr r1, [r5, r0] + cmp r1, #0 + beq _02258DE4 + add r0, #0x18 + ldr r0, [r5, r0] + cmp r0, #0 + bne _02258DE8 +_02258DE4: + bl ErrorHandling +_02258DE8: + ldr r7, _02258E28 ; =0x000005D4 + mov r6, #0 + add r4, r5, #0 +_02258DEE: + ldr r0, [r4, r7] + mov r1, #1 + ldr r0, [r0] + bl FUN_0200C63C + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _02258DEE + ldr r0, [r5] + bl MOD11_0222FF74 + mov r1, #1 + tst r0, r1 + beq _02258E24 + ldr r6, _02258E2C ; =0x000005EC + mov r4, #0 + add r7, r1, #0 +_02258E12: + ldr r0, [r5, r6] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_0200C63C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02258E12 +_02258E24: + pop {r3, r4, r5, r6, r7, pc} + nop +_02258E28: .word 0x000005D4 +_02258E2C: .word 0x000005EC + + thumb_func_start MOD11_02258E30 +MOD11_02258E30: ; 0x02258E30 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _02258E70 ; =0x000005D4 + ldr r1, [r5, r0] + cmp r1, #0 + beq _02258E44 + add r0, #0x18 + ldr r0, [r5, r0] + cmp r0, #0 + bne _02258E48 +_02258E44: + bl ErrorHandling +_02258E48: + ldr r7, _02258E70 ; =0x000005D4 + mov r4, #0 + add r6, r7, #0 + add r6, #0x18 +_02258E50: + ldr r0, [r5, r7] + mov r1, #0 + ldr r0, [r0] + bl FUN_0200C63C + ldr r0, [r5, r6] + mov r1, #0 + ldr r0, [r0] + bl FUN_0200C63C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02258E50 + pop {r3, r4, r5, r6, r7, pc} + nop +_02258E70: .word 0x000005D4 + + thumb_func_start MOD11_02258E74 +MOD11_02258E74: ; 0x02258E74 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _02258F4C ; =0x0000069F + mov r6, #0 + ldrsb r1, [r5, r0] + sub r0, r6, #1 + cmp r1, r0 + bne _02258E88 + bl ErrorHandling +_02258E88: + ldr r0, _02258F4C ; =0x0000069F + ldr r3, _02258F50 ; =0x0225FAAC + ldrsb r2, [r5, r0] + mov r1, #0x30 + mul r1, r2 + add r4, r3, r1 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _02258EA2 + add r0, r0, #3 + ldrb r0, [r5, r0] + cmp r0, #1 + bne _02258EA8 +_02258EA2: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_02258EA8: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02258EB2 + bl ErrorHandling +_02258EB2: + ldr r0, [r5] + bl MOD11_0222FF74 + mov r1, #1 + lsl r1, r1, #0xa + tst r0, r1 + beq _02258ECA + add r0, r5, #0 + bl MOD11_0225C784 + add r7, r0, #0 + b _02258EE4 +_02258ECA: + ldr r0, [r4, #0x14] + bl FUN_02020988 + add r7, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r7, r0 + bne _02258EE4 + add r0, r5, #0 + bl MOD11_0225B8B0 + add r7, r0, #0 + add r6, r6, #1 +_02258EE4: + mov r0, #0 + mvn r0, r0 + str r0, [sp] + cmp r7, r0 + bne _02258EF2 + mov r2, #0xff + b _02258EFE +_02258EF2: + ldr r1, [r4, #0x18] + lsl r0, r7, #2 + ldr r0, [r1, r0] + str r0, [sp] + ldr r0, [r4, #0x1c] + ldrb r2, [r0, r7] +_02258EFE: + ldr r3, [r4, #0x2c] + cmp r3, #0 + beq _02258F46 + ldr r1, [sp] + add r0, r5, #0 + blx r3 + mov r1, #0 + mvn r1, r1 + str r0, [sp] + cmp r0, r1 + beq _02258F46 + ldr r2, [r4, #0x24] + cmp r2, #0 + beq _02258F20 + add r0, r5, #0 + add r1, r7, #0 + blx r2 +_02258F20: + mov r0, #0x6f + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0 + mov r2, #4 + blx MI_CpuFill8 + ldr r0, _02258F54 ; =0x000006EC + ldr r0, [r5, r0] + bl MOD11_0225D648 + cmp r6, #0 + ldr r0, _02258F58 ; =0x000006F4 + ble _02258F42 + mov r1, #1 + strb r1, [r5, r0] + b _02258F46 +_02258F42: + mov r1, #0 + strb r1, [r5, r0] +_02258F46: + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + nop +_02258F4C: .word 0x0000069F +_02258F50: .word 0x0225FAAC +_02258F54: .word 0x000006EC +_02258F58: .word 0x000006F4 + + thumb_func_start MOD11_02258F5C +MOD11_02258F5C: ; 0x02258F5C + push {r3, lr} + ldr r1, [r0, #8] + cmp r1, #0 + bne _02258F7E + ldr r1, [r0, #0xc] + cmp r1, #0 + bne _02258F7E + ldr r1, _02258F84 ; =0x00000684 + ldr r1, [r0, r1] + cmp r1, #0 + bne _02258F7E + bl MOD11_0225B780 + cmp r0, #1 + bne _02258F7E + mov r0, #1 + pop {r3, pc} +_02258F7E: + mov r0, #0 + pop {r3, pc} + nop +_02258F84: .word 0x00000684 + + thumb_func_start MOD11_02258F88 +MOD11_02258F88: ; 0x02258F88 + push {r3, lr} + cmp r0, #0x40 + bgt _02258FBE + bge _02259014 + cmp r0, #0x10 + bgt _02258FB8 + bge _02258FEC + cmp r0, #8 + bhi _02259024 + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02258FA6: ; jump table + .short _02258FE0 - _02258FA6 - 2 ; case 0 + .short _02258FEC - _02258FA6 - 2 ; case 1 + .short _02258FEC - _02258FA6 - 2 ; case 2 + .short _02259024 - _02258FA6 - 2 ; case 3 + .short _02258FF8 - _02258FA6 - 2 ; case 4 + .short _02259024 - _02258FA6 - 2 ; case 5 + .short _02259024 - _02258FA6 - 2 ; case 6 + .short _02259024 - _02258FA6 - 2 ; case 7 + .short _02258FFC - _02258FA6 - 2 ; case 8 +_02258FB8: + cmp r0, #0x20 + beq _0225901C + b _02259024 +_02258FBE: + mov r2, #1 + lsl r2, r2, #8 + cmp r0, r2 + bgt _02258FCE + bge _02259008 + cmp r0, #0x80 + beq _02258FF8 + b _02259024 +_02258FCE: + lsl r1, r2, #1 + cmp r0, r1 + bgt _02258FD8 + beq _02259018 + b _02259024 +_02258FD8: + lsl r1, r2, #2 + cmp r0, r1 + beq _02259020 + b _02259024 +_02258FE0: + cmp r1, #4 + bne _02258FE8 + mov r0, #9 + pop {r3, pc} +_02258FE8: + mov r0, #8 + pop {r3, pc} +_02258FEC: + cmp r1, #4 + bne _02258FF4 + mov r0, #6 + pop {r3, pc} +_02258FF4: + mov r0, #4 + pop {r3, pc} +_02258FF8: + mov r0, #1 + pop {r3, pc} +_02258FFC: + cmp r1, #4 + bne _02259004 + mov r0, #7 + pop {r3, pc} +_02259004: + mov r0, #2 + pop {r3, pc} +_02259008: + cmp r1, #4 + bne _02259010 + mov r0, #4 + pop {r3, pc} +_02259010: + mov r0, #6 + pop {r3, pc} +_02259014: + mov r0, #3 + pop {r3, pc} +_02259018: + mov r0, #0xa + pop {r3, pc} +_0225901C: + mov r0, #5 + pop {r3, pc} +_02259020: + mov r0, #0xb + pop {r3, pc} +_02259024: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD11_0225902C +MOD11_0225902C: ; 0x0225902C + push {r4, r5} + ldr r1, _0225908C ; =0x04001000 + ldr r2, _02259090 ; =0xFFFF1FFF + ldr r3, [r1] + add r5, r1, #0 + and r3, r2 + lsr r2, r1, #0xd + orr r2, r3 + str r2, [r1] + add r5, #0x4a + ldrh r4, [r5] + mov r3, #0x3f + mov r2, #0x1f + bic r4, r3 + orr r2, r4 + mov r4, #0x20 + orr r2, r4 + strh r2, [r5] + add r1, #0x48 + ldrh r5, [r1] + mov r2, #0x1b + bic r5, r3 + orr r2, r5 + orr r2, r4 + strh r2, [r1] + mov r1, #0x6e + lsl r1, r1, #4 + ldr r1, [r0, r1] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + mov r0, #0xff + sub r0, r0, r1 + bpl _02259074 + mov r0, #0 +_02259074: + lsl r1, r0, #8 + mov r0, #0xff + lsl r0, r0, #8 + and r1, r0 + mov r0, #0xff + orr r0, r1 + ldr r1, _02259094 ; =0x04001040 + strh r0, [r1] + mov r0, #0xc0 + strh r0, [r1, #4] + pop {r4, r5} + bx lr + .align 2, 0 +_0225908C: .word 0x04001000 +_02259090: .word 0xFFFF1FFF +_02259094: .word 0x04001040 + + thumb_func_start MOD11_02259098 +MOD11_02259098: ; 0x02259098 + push {r4, lr} + lsl r4, r2, #8 + mov r2, #0x6e + add r3, r0, #0 + lsl r2, r2, #4 + ldr r0, [r3, r2] + cmp r0, r4 + beq _022590BC + add r0, r2, #4 + str r1, [r3, r0] + add r2, #8 + str r4, [r3, r2] + mov r2, #0x4b + ldr r0, _022590C0 ; =MOD11_022590C4 + add r1, r3, #0 + lsl r2, r2, #4 + bl FUN_0200CA44 +_022590BC: + pop {r4, pc} + nop +_022590C0: .word MOD11_022590C4 + + thumb_func_start MOD11_022590C4 +MOD11_022590C4: ; 0x022590C4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + str r0, [sp] + ldr r0, [r5] + mov r4, #0 + bl MOD11_0222FF68 + add r7, r0, #0 + mov r0, #0x6e + lsl r0, r0, #4 + add r1, r0, #4 + ldr r2, [r5, r0] + ldr r1, [r5, r1] + add r1, r2, r1 + str r1, [r5, r0] + add r1, r0, #4 + ldr r1, [r5, r1] + cmp r1, #0 + bgt _022590F6 + add r2, r0, #0 + add r2, #8 + ldr r2, [r5, r2] + ldr r0, [r5, r0] + cmp r0, r2 + ble _02259106 +_022590F6: + cmp r1, #0 + ble _0225910E + ldr r0, _0225915C ; =0x000006E8 + ldr r2, [r5, r0] + sub r0, #8 + ldr r0, [r5, r0] + cmp r0, r2 + blt _0225910E +_02259106: + mov r0, #0x6e + lsl r0, r0, #4 + str r2, [r5, r0] + mov r4, #1 +_0225910E: + mov r3, #0x6e + lsl r3, r3, #4 + ldr r3, [r5, r3] + add r0, r7, #0 + asr r6, r3, #7 + lsr r6, r6, #0x18 + add r6, r3, r6 + mov r1, #6 + mov r2, #0 + asr r3, r6, #8 + bl FUN_020179E0 + add r0, r5, #0 + bl MOD11_0225902C + cmp r4, #1 + bne _0225915A + ldr r2, _02259160 ; =0x000002FF + add r0, r7, #0 + mov r1, #7 + bl FUN_02018768 + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_020178BC + ldr r2, _02259164 ; =0x04001000 + ldr r0, _02259168 ; =0xFFFF1FFF + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, [sp] + bl FUN_0200CAB4 +_0225915A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225915C: .word 0x000006E8 +_02259160: .word 0x000002FF +_02259164: .word 0x04001000 +_02259168: .word 0xFFFF1FFF + + thumb_func_start MOD11_0225916C +MOD11_0225916C: ; 0x0225916C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + ldr r0, _02259240 ; =0x000006A2 + mov r1, #1 + strb r1, [r5, r0] + ldr r1, _02259244 ; =0x0400104A + mov r4, #0x3f + ldrh r2, [r1] + mov r0, #0xf + mov r7, #0xc + bic r2, r4 + orr r0, r2 + mov r2, #0x20 + orr r0, r2 + strh r0, [r1] + sub r0, r1, #2 + ldrh r3, [r0] + bic r3, r4 + orr r3, r7 + orr r3, r2 + strh r3, [r0] + ldrh r4, [r0] + ldr r3, _02259248 ; =0xFFFFC0FF + lsl r2, r2, #8 + and r4, r3 + lsl r3, r7, #8 + orr r3, r4 + orr r2, r3 + strh r2, [r0] + add r2, r1, #0 + mov r0, #0xff + sub r2, #0xa + strh r0, [r2] + mov r3, #0x90 + sub r2, r1, #6 + strh r3, [r2] + add r2, r1, #0 + sub r2, #8 + strh r0, [r2] + sub r0, r1, #4 + ldr r2, _0225924C ; =0x000090C0 + sub r1, #0x4a + strh r2, [r0] + ldr r2, [r1] + ldr r0, _02259250 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r7, #0xb + orr r0, r2 + str r0, [r1] + mov r0, #5 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + blx MI_CpuFill8 + str r5, [r4] + ldr r0, _02259254 ; =0xFFFF9C64 + strb r6, [r4, #0x12] + strh r0, [r4, #8] + mov r0, #0xfa + lsl r0, r0, #4 + strh r0, [r4, #0xa] + mov r0, #8 + ldrsh r1, [r4, r0] + ldr r0, _02259258 ; =0x0000639C + sub r0, r0, r1 + mov r1, #0x64 + blx _s32_div_f + strh r0, [r4, #0xc] + mov r0, #0xa + ldrsh r1, [r4, r0] + mov r0, #0xfa + lsl r0, r0, #4 + sub r0, r0, r1 + mov r1, #0x64 + blx _s32_div_f + strh r0, [r4, #0xe] + ldr r0, _0225925C ; =0x0000070E + bl FUN_020054C8 + ldr r0, _02259260 ; =MOD11_0225B438 + ldr r2, _02259264 ; =0x000004BA + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _02259268 ; =MOD11_0225B644 + add r1, r4, #0 + bl FUN_02015F34 + cmp r0, #1 + beq _02259232 + bl ErrorHandling +_02259232: + ldr r0, _0225926C ; =MOD11_0225B538 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA60 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02259240: .word 0x000006A2 +_02259244: .word 0x0400104A +_02259248: .word 0xFFFFC0FF +_0225924C: .word 0x000090C0 +_02259250: .word 0xFFFF1FFF +_02259254: .word 0xFFFF9C64 +_02259258: .word 0x0000639C +_0225925C: .word 0x0000070E +_02259260: .word MOD11_0225B438 +_02259264: .word 0x000004BA +_02259268: .word MOD11_0225B644 +_0225926C: .word MOD11_0225B538 + + thumb_func_start MOD11_02259270 +MOD11_02259270: ; 0x02259270 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r4, [r5, #0x18] + bl MOD11_02259284 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0225916C + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02259284 +MOD11_02259284: ; 0x02259284 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r5, #0 + ldrb r7, [r5, #0x18] + add r6, #0x18 + bl MOD11_022300C4 + add r4, r0, #0 + ldr r0, _02259484 ; =0x0000069E + strb r7, [r5, r0] + ldr r0, [r5] + bl MOD11_0222FF74 + mov r1, #0x20 + tst r0, r1 + beq _022592CA + ldr r1, _02259488 ; =0x000003A3 + add r0, r4, #0 + bl FUN_0200A914 + mov r1, #0xe9 + str r0, [sp, #0x24] + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_0200A914 + str r0, [sp, #0x20] + ldr r1, _0225948C ; =0x000003A5 + add r0, r4, #0 + bl FUN_0200A914 + str r0, [sp, #0x1c] + b _0225931A +_022592CA: + ldr r0, [r5] + bl MOD11_0222FF74 + mov r1, #2 + lsl r1, r1, #8 + tst r0, r1 + beq _022592FA + ldr r1, _02259490 ; =0x000004C7 + add r0, r4, #0 + bl FUN_0200A914 + mov r1, #0xe9 + str r0, [sp, #0x24] + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_0200A914 + str r0, [sp, #0x20] + ldr r1, _0225948C ; =0x000003A5 + add r0, r4, #0 + bl FUN_0200A914 + str r0, [sp, #0x1c] + b _0225931A +_022592FA: + mov r1, #0xe7 + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_0200A914 + str r0, [sp, #0x24] + ldr r1, _02259494 ; =0x0000039D + add r0, r4, #0 + bl FUN_0200A914 + str r0, [sp, #0x20] + ldr r1, _02259498 ; =0x0000039E + add r0, r4, #0 + bl FUN_0200A914 + str r0, [sp, #0x1c] +_0225931A: + ldr r0, [r5] + add r1, r7, #0 + bl MOD11_0223022C + add r1, r0, #0 + ldr r0, [r5] + bl MOD11_02230CB8 + cmp r0, #1 + bne _0225933E + mov r1, #0x3a + add r0, r4, #0 + lsl r1, r1, #4 + bl FUN_0200A914 + add r4, r0, #0 + mov r1, #1 + b _0225934A +_0225933E: + ldr r1, _0225949C ; =0x0000039F + add r0, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + mov r1, #0 +_0225934A: + ldr r0, _022594A0 ; =0x000006A3 + mov r3, #2 + strb r1, [r5, r0] + ldr r0, _022594A4 ; =0x00010203 + ldr r1, _022594A8 ; =0x000004CC + str r0, [sp] + ldr r0, _022594AC ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x54 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r1, r5, r1 + bl MOD11_0225A458 + ldr r0, _022594B0 ; =0x00040506 + mov r1, #0x4e + str r0, [sp] + mov r3, #2 + lsl r1, r1, #4 + ldr r0, _022594AC ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x28 + str r0, [sp, #0xc] + mov r0, #0xaa + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + ldr r2, [sp, #0x20] + add r0, r5, #0 + add r1, r5, r1 + bl MOD11_0225A458 + ldr r0, _022594B4 ; =0x00070809 + ldr r1, _022594B8 ; =0x000004F4 + str r0, [sp] + mov r3, #2 + ldr r0, _022594AC ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd8 + str r0, [sp, #0xc] + mov r0, #0xaa + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + ldr r2, [sp, #0x1c] + add r0, r5, #0 + add r1, r5, r1 + bl MOD11_0225A458 + ldr r0, _022594BC ; =0x000A0B0C + ldr r1, _022594C0 ; =0x00000508 + str r0, [sp] + mov r3, #2 + ldr r0, _022594AC ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0xb2 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r4, #0 + bl MOD11_0225A458 + ldr r0, [sp, #0x24] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [r5] + bl MOD11_0222FF74 + mov r1, #0x22 + lsl r1, r1, #4 + tst r0, r1 + bne _0225947E + ldrb r1, [r6, #1] + ldrb r2, [r6, #2] + ldr r0, [r5] + bl MOD11_02230014 + add r4, r0, #0 + add r0, r5, #0 + bl MOD11_0225A164 + ldrh r0, [r6, #6] + mov r3, #4 + add r1, r4, #0 + str r0, [sp] + ldrb r0, [r6, #3] + add r2, r7, #0 + str r0, [sp, #4] + ldrsh r3, [r6, r3] + add r0, r5, #0 + bl MOD11_0225A270 + add r4, r0, #0 + ldr r0, _022594A8 ; =0x000004CC + add r1, sp, #0x2c + ldr r0, [r5, r0] + add r2, sp, #0x28 + bl FUN_020119A4 + cmp r7, #4 + bne _0225945E + ldr r0, _022594C4 ; =0x000004DC + ldr r1, [sp, #0x2c] + ldrh r0, [r5, r0] + add r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x2c] + b _02259464 +_0225945E: + ldr r0, [sp, #0x2c] + sub r0, #0x10 + str r0, [sp, #0x2c] +_02259464: + mov r3, #0x11 + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x28] + lsl r3, r3, #4 + sub r2, r2, r3 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0xc + bl FUN_0200C750 +_0225947E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02259484: .word 0x0000069E +_02259488: .word 0x000003A3 +_0225948C: .word 0x000003A5 +_02259490: .word 0x000004C7 +_02259494: .word 0x0000039D +_02259498: .word 0x0000039E +_0225949C: .word 0x0000039F +_022594A0: .word 0x000006A3 +_022594A4: .word 0x00010203 +_022594A8: .word 0x000004CC +_022594AC: .word 0x00004E33 +_022594B0: .word 0x00040506 +_022594B4: .word 0x00070809 +_022594B8: .word 0x000004F4 +_022594BC: .word 0x000A0B0C +_022594C0: .word 0x00000508 +_022594C4: .word 0x000004DC + + thumb_func_start MOD11_022594C8 +MOD11_022594C8: ; 0x022594C8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r4, [r5, #0x18] + bl MOD11_022594DC + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0225916C + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_022594DC +MOD11_022594DC: ; 0x022594DC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + bl MOD11_02259284 + ldr r0, [r5] + bl MOD11_0222FF68 + mov r1, #0x10 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + mov r1, #8 + str r1, [sp, #8] + mov r1, #0x11 + str r1, [sp, #0xc] + ldr r2, _02259534 ; =0x000002FF + add r4, r0, #0 + mov r1, #4 + mov r3, #0 + bl FUN_02018540 + add r0, r4, #0 + mov r1, #5 + bl FUN_0201AC68 + mov r0, #0x4e + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, _02259538 ; =0x000004F4 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + ldr r0, _0225953C ; =0x00000508 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02259534: .word 0x000002FF +_02259538: .word 0x000004F4 +_0225953C: .word 0x00000508 + + thumb_func_start MOD11_02259540 +MOD11_02259540: ; 0x02259540 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r4, [r5, #0x18] + bl MOD11_02259554 + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0225916C + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_02259554 +MOD11_02259554: ; 0x02259554 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + bl MOD11_02259284 + ldr r0, [r5] + bl MOD11_0222FF68 + mov r1, #0x10 + str r1, [sp] + mov r1, #0xa + str r1, [sp, #4] + mov r1, #8 + str r1, [sp, #8] + mov r1, #0x11 + str r1, [sp, #0xc] + ldr r2, _022595C0 ; =0x000002FF + mov r1, #4 + mov r3, #0 + add r4, r0, #0 + bl FUN_02018540 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r2, _022595C0 ; =0x000002FF + add r0, r4, #0 + mov r1, #4 + mov r3, #0x16 + bl FUN_02018540 + add r0, r4, #0 + mov r1, #5 + bl FUN_0201AC68 + mov r0, #0x4e + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, _022595C4 ; =0x000004F4 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_022595C0: .word 0x000002FF +_022595C4: .word 0x000004F4 + + thumb_func_start MOD11_022595C8 +MOD11_022595C8: ; 0x022595C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r6, r5, #0 + add r6, #0x18 + bne _022595D8 + bl ErrorHandling +_022595D8: + ldrb r1, [r6, #0x10] + ldr r0, _02259854 ; =0x0000069E + strb r1, [r5, r0] + ldr r0, [r5] + bl MOD11_022300C4 + str r0, [sp, #0x1c] + ldrb r1, [r6, #0x10] + add r0, r5, #0 + bl MOD11_0225A69C + str r0, [sp, #0x20] + add r0, r5, #0 + bl MOD11_0225A9D4 + ldr r0, _02259858 ; =0x00070809 + ldr r1, _0225985C ; =0x000004CC + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r0, _02259860 ; =0x00004E33 + add r1, r5, r1 + str r0, [sp, #8] + mov r0, #0x40 + str r0, [sp, #0xc] + mov r0, #0x2e + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + mov r2, #0 + add r0, #0x28 + str r0, [sp, #0x18] + add r0, r5, #0 + mov r3, #2 + bl MOD11_0225A458 + ldr r0, _02259858 ; =0x00070809 + mov r1, #0x4e + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r0, _02259860 ; =0x00004E33 + lsl r1, r1, #4 + str r0, [sp, #8] + mov r0, #0xc0 + str r0, [sp, #0xc] + mov r0, #0x2e + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r1, r5, r1 + add r0, #0x3c + str r0, [sp, #0x18] + add r0, r5, #0 + mov r2, #0 + mov r3, #2 + bl MOD11_0225A458 + ldr r0, _02259858 ; =0x00070809 + ldr r1, _02259864 ; =0x000004F4 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r0, _02259860 ; =0x00004E33 + add r1, r5, r1 + str r0, [sp, #8] + mov r0, #0x40 + str r0, [sp, #0xc] + mov r0, #0x6e + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + mov r2, #0 + add r0, #0x50 + str r0, [sp, #0x18] + add r0, r5, #0 + mov r3, #2 + bl MOD11_0225A458 + ldr r0, _02259858 ; =0x00070809 + ldr r1, _02259868 ; =0x00000508 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r0, _02259860 ; =0x00004E33 + add r1, r5, r1 + str r0, [sp, #8] + mov r0, #0xc0 + str r0, [sp, #0xc] + mov r0, #0x6e + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + mov r2, #0 + add r0, #0x64 + str r0, [sp, #0x18] + add r0, r5, #0 + mov r3, #2 + bl MOD11_0225A458 + ldr r0, [sp, #0x20] + mov r4, #0 + str r0, [sp, #0x28] + add r0, #0x78 + str r0, [sp, #0x28] + ldr r0, _0225985C ; =0x000004CC + add r7, r5, r0 + ldr r0, [sp, #0x20] + add r0, #0xc8 + str r0, [sp, #0x20] + b _02259748 +_022596BE: + add r1, r6, r4 + ldrb r0, [r1, #8] + ldrb r1, [r1, #0xc] + bl MOD11_0225B3D4 + str r0, [sp, #0x24] + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02259860 ; =0x00004E33 + ldr r1, _0225986C ; =0x0225F73C + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + add r2, r4, #0 + add r2, #9 + str r1, [sp, #0xc] + ldr r1, _0225986C ; =0x0225F73C + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x28] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD11_0225A458 + ldr r0, [sp, #0x24] + ldr r1, _02259870 ; =0x0225F78C + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02259860 ; =0x00004E33 + add r2, r4, #5 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + str r1, [sp, #0xc] + ldr r1, _02259870 ; =0x0225F78C + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x20] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD11_0225A458 + add r4, r4, #1 +_02259748: + cmp r4, #4 + blt _022596BE + ldr r0, [sp, #0x1c] + ldr r1, _02259874 ; =0x000003A1 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, _02259878 ; =0x000A0B0C + ldr r1, _0225987C ; =0x0000051C + str r0, [sp] + mov r3, #2 + ldr r0, _02259860 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0xb2 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r4, #0 + bl MOD11_0225A458 + add r0, r4, #0 + bl FUN_02021A20 + mov r4, #0 + mov r7, #3 + b _022597B0 +_0225978A: + lsl r0, r4, #1 + ldrh r0, [r6, r0] + cmp r0, #0 + beq _022597A4 + add r1, r7, #0 + bl FUN_0206AB18 + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl MOD11_0225AB34 + b _022597AE +_022597A4: + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0225AB50 + b _022597B4 +_022597AE: + add r4, r4, #1 +_022597B0: + cmp r4, #4 + blt _0225978A +_022597B4: + ldr r0, [r5] + bl MOD11_0222FF68 + ldrh r0, [r6] + cmp r0, #0 + bne _022597E2 + ldr r0, _0225985C ; =0x000004CC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + mov r0, #0x53 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020119D0 + mov r0, #0x16 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020119D0 +_022597E2: + ldrh r0, [r6, #2] + cmp r0, #0 + bne _02259808 + mov r0, #0x4e + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, _02259880 ; =0x00000544 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + ldr r0, _02259884 ; =0x00000594 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 +_02259808: + ldrh r0, [r6, #4] + cmp r0, #0 + bne _0225982C + ldr r0, _02259864 ; =0x000004F4 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + ldr r0, _02259888 ; =0x00000558 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + ldr r0, _0225988C ; =0x000005A8 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 +_0225982C: + ldrh r0, [r6, #6] + cmp r0, #0 + bne _02259850 + ldr r0, _02259868 ; =0x00000508 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + ldr r0, _02259890 ; =0x0000056C + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 + ldr r0, _02259894 ; =0x000005BC + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020119D0 +_02259850: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02259854: .word 0x0000069E +_02259858: .word 0x00070809 +_0225985C: .word 0x000004CC +_02259860: .word 0x00004E33 +_02259864: .word 0x000004F4 +_02259868: .word 0x00000508 +_0225986C: .word 0x0225F73C +_02259870: .word 0x0225F78C +_02259874: .word 0x000003A1 +_02259878: .word 0x000A0B0C +_0225987C: .word 0x0000051C +_02259880: .word 0x00000544 +_02259884: .word 0x00000594 +_02259888: .word 0x00000558 +_0225988C: .word 0x000005A8 +_02259890: .word 0x0000056C +_02259894: .word 0x000005BC + + thumb_func_start MOD11_02259898 +MOD11_02259898: ; 0x02259898 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_022300C4 + mov r1, #0xeb + lsl r1, r1, #2 + add r6, r0, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r1, _0225991C ; =0x000003AD + add r0, r6, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _02259920 ; =0x00010203 + ldr r1, _02259924 ; =0x000004CC + str r0, [sp] + mov r3, #2 + ldr r0, _02259928 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x44 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r4, #0 + bl MOD11_0225A458 + ldr r0, _0225992C ; =0x000A0B0C + mov r1, #0x4e + str r0, [sp] + mov r3, #2 + lsl r1, r1, #4 + ldr r0, _02259928 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x8c + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r6, #0 + bl MOD11_0225A458 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0225991C: .word 0x000003AD +_02259920: .word 0x00010203 +_02259924: .word 0x000004CC +_02259928: .word 0x00004E33 +_0225992C: .word 0x000A0B0C + + thumb_func_start MOD11_02259930 +MOD11_02259930: ; 0x02259930 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_022300C4 + ldr r1, _022599B4 ; =0x0000049D + add r6, r0, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r1, _022599B8 ; =0x0000049E + add r0, r6, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _022599BC ; =0x00010203 + ldr r1, _022599C0 ; =0x000004CC + str r0, [sp] + mov r3, #2 + ldr r0, _022599C4 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x44 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r4, #0 + bl MOD11_0225A458 + ldr r0, _022599C8 ; =0x000A0B0C + mov r1, #0x4e + str r0, [sp] + mov r3, #2 + lsl r1, r1, #4 + ldr r0, _022599C4 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x8c + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r6, #0 + bl MOD11_0225A458 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_022599B4: .word 0x0000049D +_022599B8: .word 0x0000049E +_022599BC: .word 0x00010203 +_022599C0: .word 0x000004CC +_022599C4: .word 0x00004E33 +_022599C8: .word 0x000A0B0C + + thumb_func_start MOD11_022599CC +MOD11_022599CC: ; 0x022599CC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_022300C4 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_02230138 + add r4, r0, #0 + ldr r1, _02259A98 ; =0x000004A2 + add r0, r6, #0 + bl FUN_0200A914 + str r0, [sp, #0x1c] + ldr r1, _02259A9C ; =0x000004A3 + add r0, r6, #0 + bl FUN_0200A914 + str r0, [sp, #0x20] + mov r0, #0x64 + mov r1, #5 + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #0x64 + mov r1, #5 + bl FUN_020219F4 + add r7, r0, #0 + ldrh r2, [r5, #0x18] + add r0, r4, #0 + mov r1, #0 + bl FUN_0200AD5C + ldr r2, [sp, #0x1c] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200B7B8 + ldr r2, [sp, #0x20] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_0200B7B8 + ldr r0, _02259AA0 ; =0x00010203 + ldr r1, _02259AA4 ; =0x000004CC + str r0, [sp] + mov r3, #2 + ldr r0, _02259AA8 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x44 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r6, #0 + bl MOD11_0225A458 + ldr r0, _02259AAC ; =0x000A0B0C + mov r1, #0x4e + str r0, [sp] + mov r3, #2 + lsl r1, r1, #4 + ldr r0, _02259AA8 ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x8c + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r7, #0 + bl MOD11_0225A458 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02259A98: .word 0x000004A2 +_02259A9C: .word 0x000004A3 +_02259AA0: .word 0x00010203 +_02259AA4: .word 0x000004CC +_02259AA8: .word 0x00004E33 +_02259AAC: .word 0x000A0B0C + + thumb_func_start MOD11_02259AB0 +MOD11_02259AB0: ; 0x02259AB0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_022300C4 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_02230138 + add r4, r0, #0 + ldr r1, _02259B7C ; =0x000004C1 + add r0, r6, #0 + bl FUN_0200A914 + str r0, [sp, #0x1c] + ldr r1, _02259B80 ; =0x000004C2 + add r0, r6, #0 + bl FUN_0200A914 + str r0, [sp, #0x20] + mov r0, #0x64 + mov r1, #5 + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #0x64 + mov r1, #5 + bl FUN_020219F4 + add r7, r0, #0 + ldrh r2, [r5, #0x18] + add r0, r4, #0 + mov r1, #0 + bl FUN_0200AD5C + ldr r2, [sp, #0x1c] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200B7B8 + ldr r2, [sp, #0x20] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_0200B7B8 + ldr r0, _02259B84 ; =0x00010203 + ldr r1, _02259B88 ; =0x000004CC + str r0, [sp] + mov r3, #2 + ldr r0, _02259B8C ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x44 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r6, #0 + bl MOD11_0225A458 + ldr r0, _02259B90 ; =0x000A0B0C + mov r1, #0x4e + str r0, [sp] + mov r3, #2 + lsl r1, r1, #4 + ldr r0, _02259B8C ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x8c + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r7, #0 + bl MOD11_0225A458 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02259B7C: .word 0x000004C1 +_02259B80: .word 0x000004C2 +_02259B84: .word 0x00010203 +_02259B88: .word 0x000004CC +_02259B8C: .word 0x00004E33 +_02259B90: .word 0x000A0B0C + + thumb_func_start MOD11_02259B94 +MOD11_02259B94: ; 0x02259B94 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_022300C4 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_02230138 + add r4, r0, #0 + ldr r1, _02259C60 ; =0x000004BF + add r0, r6, #0 + bl FUN_0200A914 + mov r1, #0x13 + str r0, [sp, #0x1c] + add r0, r6, #0 + lsl r1, r1, #6 + bl FUN_0200A914 + str r0, [sp, #0x20] + mov r0, #0x64 + mov r1, #5 + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #0x64 + mov r1, #5 + bl FUN_020219F4 + add r7, r0, #0 + ldrh r2, [r5, #0x18] + add r0, r4, #0 + mov r1, #0 + bl FUN_0200AD5C + ldr r2, [sp, #0x1c] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200B7B8 + ldr r2, [sp, #0x20] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_0200B7B8 + ldr r0, _02259C64 ; =0x00010203 + ldr r1, _02259C68 ; =0x000004CC + str r0, [sp] + mov r3, #2 + ldr r0, _02259C6C ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x44 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r6, #0 + bl MOD11_0225A458 + ldr r0, _02259C70 ; =0x000A0B0C + mov r1, #0x4e + str r0, [sp] + mov r3, #2 + lsl r1, r1, #4 + ldr r0, _02259C6C ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x8c + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + add r2, r7, #0 + bl MOD11_0225A458 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02259C60: .word 0x000004BF +_02259C64: .word 0x00010203 +_02259C68: .word 0x000004CC +_02259C6C: .word 0x00004E33 +_02259C70: .word 0x000A0B0C + + thumb_func_start MOD11_02259C74 +MOD11_02259C74: ; 0x02259C74 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r0, #0 + add r7, r5, #0 + add r7, #0x18 + add r0, r7, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #0x6a + lsl r0, r0, #4 + strb r1, [r5, r0] + add r1, r7, #0 + add r1, #0x20 + ldrb r1, [r1] + sub r0, r0, #2 + strb r1, [r5, r0] + ldr r0, [r5] + bl MOD11_022300C4 + str r0, [sp, #0x2c] + ldr r0, [r5] + bl MOD11_02230138 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x40 + mov r2, #0 + bl MOD11_0225ACD4 + add r0, r5, #0 + bl MOD11_0225A164 + add r0, r5, #0 + bl MOD11_0225A5C0 + add r1, sp, #0x38 + ldr r0, [r5] + add r1, #2 + bl MOD11_02231504 + ldr r0, [r5] + add r1, sp, #0x34 + bl MOD11_022314E0 + mov r0, #0x18 + mov r1, #5 + bl FUN_020219F4 + str r0, [sp, #0x28] + ldr r0, _02259E38 ; =0x000004CC + mov r4, #0 + add r0, r5, r0 + str r0, [sp, #0x30] + b _02259DEC +_02259CE0: + add r1, r4, #2 + add r0, sp, #0x34 + ldrb r6, [r0, r1] + lsl r0, r6, #3 + add r0, r7, r0 + ldrb r1, [r0, #1] + lsl r0, r1, #0x1d + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02259DDA + add r0, sp, #0x40 + ldrb r0, [r0, r4] + cmp r0, #1 + bne _02259DDA + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + bne _02259D0E + ldr r0, [sp, #0x2c] + ldr r1, _02259E3C ; =0x000003C2 + bl FUN_0200A914 + str r0, [sp, #0x24] + b _02259D2A +_02259D0E: + cmp r0, #1 + bne _02259D1E + ldr r0, [sp, #0x2c] + ldr r1, _02259E40 ; =0x000003C3 + bl FUN_0200A914 + str r0, [sp, #0x24] + b _02259D2A +_02259D1E: + mov r1, #0xf1 + ldr r0, [sp, #0x2c] + lsl r1, r1, #2 + bl FUN_0200A914 + str r0, [sp, #0x24] +_02259D2A: + lsl r2, r6, #3 + ldrb r2, [r7, r2] + ldr r0, [r5] + add r1, r6, #0 + bl MOD11_02230014 + str r0, [sp, #0x20] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [sp, #0x1c] + mov r1, #0 + bl FUN_0200ACF8 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x24] + bl FUN_0200B7B8 + mov r0, #1 + tst r0, r4 + beq _02259D5A + ldr r0, _02259E44 ; =0x00010203 + b _02259D5C +_02259D5A: + ldr r0, _02259E48 ; =0x00040506 +_02259D5C: + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + ldr r0, _02259E4C ; =0x00004E33 + ldr r1, _02259E50 ; =0x0225F7D4 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _02259E50 ; =0x0225F7D4 + add r0, r1, r0 + ldrh r0, [r0, #2] + mov r1, #0x14 + mul r2, r1 + ldr r1, [sp, #0x30] + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + add r1, r1, r2 + str r0, [sp, #0x18] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD11_0225A458 + ldr r0, [sp, #0x24] + bl FUN_02021A20 + cmp r4, #1 + beq _02259DA2 + cmp r4, #3 + beq _02259DBE + b _02259DEA +_02259DA2: + lsl r0, r6, #3 + add r6, r7, r0 + ldrh r0, [r6, #6] + mov r3, #4 + ldr r1, [sp, #0x20] + str r0, [sp] + ldrb r0, [r6, #2] + mov r2, #3 + str r0, [sp, #4] + ldrsh r3, [r6, r3] + add r0, r5, #0 + bl MOD11_0225A270 + b _02259DEA +_02259DBE: + lsl r0, r6, #3 + add r6, r7, r0 + ldrh r0, [r6, #6] + mov r3, #4 + ldr r1, [sp, #0x20] + str r0, [sp] + ldrb r0, [r6, #2] + mov r2, #5 + str r0, [sp, #4] + ldrsh r3, [r6, r3] + add r0, r5, #0 + bl MOD11_0225A270 + b _02259DEA +_02259DDA: + add r0, sp, #0x40 + ldrb r0, [r0, r4] + cmp r0, #0 + bne _02259DEA + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_0225ABA4 +_02259DEA: + add r4, r4, #1 +_02259DEC: + cmp r4, #4 + bge _02259DF2 + b _02259CE0 +_02259DF2: + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x2c] + ldr r1, _02259E54 ; =0x000003A2 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, _02259E58 ; =0x000A0B0C + mov r3, #2 + str r0, [sp] + ldr r0, _02259E4C ; =0x00004E33 + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, _02259E5C ; =0x0225F7C4 + add r2, r4, #0 + ldrh r1, [r0, #0x20] + str r1, [sp, #0xc] + ldrh r0, [r0, #0x22] + ldr r1, _02259E60 ; =0x0000051C + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r5, r1 + bl MOD11_0225A458 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_02259E38: .word 0x000004CC +_02259E3C: .word 0x000003C2 +_02259E40: .word 0x000003C3 +_02259E44: .word 0x00010203 +_02259E48: .word 0x00040506 +_02259E4C: .word 0x00004E33 +_02259E50: .word 0x0225F7D4 +_02259E54: .word 0x000003A2 +_02259E58: .word 0x000A0B0C +_02259E5C: .word 0x0225F7C4 +_02259E60: .word 0x0000051C + + thumb_func_start MOD11_02259E64 +MOD11_02259E64: ; 0x02259E64 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + mov r0, #0xff + add r5, r1, #0 + str r0, [sp] + add r0, r5, #1 + cmp r0, #5 + bhi _02259E8C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02259E80: ; jump table + .short _02259E8C - _02259E80 - 2 ; case 0 + .short _02259E8C - _02259E80 - 2 ; case 1 + .short _02259E90 - _02259E80 - 2 ; case 2 + .short _02259EB4 - _02259E80 - 2 ; case 3 + .short _02259EBA - _02259E80 - 2 ; case 4 + .short _02259EC0 - _02259E80 - 2 ; case 5 +_02259E8C: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02259E90: + ldr r0, _02259F24 ; =0x0000069E + mov r7, #0 + ldrb r0, [r4, r0] + add r6, r7, #0 + cmp r0, #0 + beq _02259EA6 + cmp r0, #2 + beq _02259EAA + cmp r0, #4 + beq _02259EAA + b _02259EC4 +_02259EA6: + str r0, [sp] + b _02259EC4 +_02259EAA: + ldr r0, _02259F24 ; =0x0000069E + ldrb r0, [r4, r0] + sub r0, r0, #2 + str r0, [sp] + b _02259EC4 +_02259EB4: + mov r7, #1 + add r6, r7, #0 + b _02259EC4 +_02259EBA: + mov r7, #2 + mov r6, #1 + b _02259EC4 +_02259EC0: + mov r7, #3 + mov r6, #1 +_02259EC4: + add r0, r4, #0 + add r1, r2, #0 + bl MOD11_0225ADD4 + ldr r0, _02259F28 ; =MOD11_0225AE4C + add r1, r4, #0 + bl MOD11_0225AD80 + ldr r0, _02259F2C ; =0x0225F854 + sub r2, r5, #1 + mov r1, #6 + mul r1, r2 + add r0, r0, r1 + ldr r1, _02259F30 ; =0x000006B4 + lsl r2, r2, #2 + str r0, [r4, r1] + ldr r0, _02259F34 ; =0x0225F70C + add r3, r0, r2 + add r0, r1, #4 + str r3, [r4, r0] + add r0, r1, #0 + mov r3, #1 + add r0, #0xc + strb r3, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r5, [r4, r0] + add r0, r1, #0 + add r0, #0xd + strb r7, [r4, r0] + add r3, r1, #0 + ldr r0, [sp] + add r3, #0xe + strb r0, [r4, r3] + add r0, r1, #0 + add r0, #0xf + strb r6, [r4, r0] + ldr r0, _02259F38 ; =0x0225F79C + add r3, r0, r2 + ldrh r2, [r0, r2] + add r0, r1, #0 + add r0, #0x10 + strh r2, [r4, r0] + ldrh r0, [r3, #2] + add r1, #0x12 + strh r0, [r4, r1] + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02259F24: .word 0x0000069E +_02259F28: .word MOD11_0225AE4C +_02259F2C: .word 0x0225F854 +_02259F30: .word 0x000006B4 +_02259F34: .word 0x0225F70C +_02259F38: .word 0x0225F79C + + thumb_func_start MOD11_02259F3C +MOD11_02259F3C: ; 0x02259F3C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + add r1, r2, #0 + cmp r4, r0 + bne _02259F50 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_02259F50: + add r2, r5, #0 + add r2, #0x18 + cmp r4, #1 + blt _02259F66 + cmp r4, #4 + bgt _02259F66 + sub r3, r4, #1 + lsl r3, r3, #1 + ldrh r2, [r2, r3] + cmp r2, #0 + beq _02259FCA +_02259F66: + sub r0, r4, #1 + cmp r4, #4 + bgt _02259F88 + add r2, r4, #1 + bmi _02259F8C + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02259F7C: ; jump table + .short _02259F8C - _02259F7C - 2 ; case 0 + .short _02259F8C - _02259F7C - 2 ; case 1 + .short _02259F92 - _02259F7C - 2 ; case 2 + .short _02259F92 - _02259F7C - 2 ; case 3 + .short _02259F92 - _02259F7C - 2 ; case 4 + .short _02259F92 - _02259F7C - 2 ; case 5 +_02259F88: + cmp r4, #0xff + beq _02259FA2 +_02259F8C: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_02259F92: + mov r2, #6 + mul r2, r0 + ldr r3, _02259FCC ; =0x0225F86C + lsl r0, r0, #2 + add r7, r3, r2 + ldr r2, _02259FD0 ; =0x0225F7AC + add r6, r2, r0 + b _02259FA6 +_02259FA2: + ldr r7, _02259FD4 ; =0x0225F884 + ldr r6, _02259FD8 ; =0x0225F7BC +_02259FA6: + add r0, r5, #0 + bl MOD11_0225ADD4 + ldr r0, _02259FDC ; =MOD11_0225AF9C + add r1, r5, #0 + bl MOD11_0225AD80 + ldr r1, _02259FE0 ; =0x000006B4 + mov r2, #3 + str r7, [r5, r1] + add r0, r1, #4 + str r6, [r5, r0] + add r0, r1, #0 + add r0, #0xc + strb r2, [r5, r0] + add r1, #8 + str r4, [r5, r1] + add r0, r4, #0 +_02259FCA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02259FCC: .word 0x0225F86C +_02259FD0: .word 0x0225F7AC +_02259FD4: .word 0x0225F884 +_02259FD8: .word 0x0225F7BC +_02259FDC: .word MOD11_0225AF9C +_02259FE0: .word 0x000006B4 + + thumb_func_start MOD11_02259FE4 +MOD11_02259FE4: ; 0x02259FE4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + beq _02259FFA + cmp r4, #1 + beq _02259FFE + cmp r4, #0xff + beq _0225A002 +_02259FFA: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02259FFE: + mov r6, #0 + b _0225A004 +_0225A002: + mov r6, #1 +_0225A004: + add r0, r5, #0 + add r1, r2, #0 + bl MOD11_0225ADD4 + ldr r0, _0225A048 ; =MOD11_0225AE4C + add r1, r5, #0 + bl MOD11_0225AD80 + cmp r4, #1 + ldr r0, _0225A04C ; =0x000006B4 + bne _0225A022 + ldr r1, _0225A050 ; =0x0225F6F6 + str r1, [r5, r0] + ldr r1, _0225A054 ; =0x0225F6CC + b _0225A028 +_0225A022: + ldr r1, _0225A058 ; =0x0225F6F0 + str r1, [r5, r0] + ldr r1, _0225A05C ; =0x0225F6C8 +_0225A028: + add r0, r0, #4 + str r1, [r5, r0] + mov r0, #0x1b + mov r1, #6 + lsl r0, r0, #6 + strb r1, [r5, r0] + sub r1, r0, #4 + str r4, [r5, r1] + add r1, r0, #1 + strb r6, [r5, r1] + mov r1, #3 + add r0, r0, #3 + strb r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_0225A048: .word MOD11_0225AE4C +_0225A04C: .word 0x000006B4 +_0225A050: .word 0x0225F6F6 +_0225A054: .word 0x0225F6CC +_0225A058: .word 0x0225F6F0 +_0225A05C: .word 0x0225F6C8 + + thumb_func_start MOD11_0225A060 +MOD11_0225A060: ; 0x0225A060 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r1, sp, #0 + mov r2, #1 + add r4, r0, #0 + bl MOD11_0225ACD4 + cmp r5, #4 + bgt _0225A090 + add r0, r5, #1 + bmi _0225A094 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225A084: ; jump table + .short _0225A094 - _0225A084 - 2 ; case 0 + .short _0225A094 - _0225A084 - 2 ; case 1 + .short _0225A09A - _0225A084 - 2 ; case 2 + .short _0225A0AA - _0225A084 - 2 ; case 3 + .short _0225A0BA - _0225A084 - 2 ; case 4 + .short _0225A0CA - _0225A084 - 2 ; case 5 +_0225A090: + cmp r5, #0xff + beq _0225A0DA +_0225A094: + add sp, #4 + add r0, r5, #0 + pop {r3, r4, r5, r6, pc} +_0225A09A: + add r0, sp, #0 + ldrb r0, [r0] + cmp r0, #0 + bne _0225A116 + mov r0, #0 + add sp, #4 + mvn r0, r0 + pop {r3, r4, r5, r6, pc} +_0225A0AA: + add r0, sp, #0 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0225A116 + mov r0, #0 + add sp, #4 + mvn r0, r0 + pop {r3, r4, r5, r6, pc} +_0225A0BA: + add r0, sp, #0 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _0225A116 + mov r0, #0 + add sp, #4 + mvn r0, r0 + pop {r3, r4, r5, r6, pc} +_0225A0CA: + add r0, sp, #0 + ldrb r0, [r0, #3] + cmp r0, #0 + bne _0225A116 + mov r0, #0 + add sp, #4 + mvn r0, r0 + pop {r3, r4, r5, r6, pc} +_0225A0DA: + add r0, r4, #0 + mov r1, #4 + bl MOD11_0225ADD4 + ldr r0, _0225A14C ; =MOD11_0225AE4C + add r1, r4, #0 + bl MOD11_0225AD80 + ldr r0, _0225A150 ; =0x0225F8A4 + ldr r1, _0225A154 ; =0x000006B4 + ldr r2, _0225A158 ; =0x0225F80C + str r0, [r4, r1] + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #4 + add r0, #0xc + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r5, [r4, r0] + add r0, r1, #0 + add r0, #0xd + strb r2, [r4, r0] + mov r0, #3 + add r1, #0xf + strb r0, [r4, r1] + add sp, #4 + add r0, r5, #0 + pop {r3, r4, r5, r6, pc} +_0225A116: + ldr r0, [r4] + bl MOD11_0222FF68 + ldr r2, _0225A15C ; =0x000002FF + add r6, r0, #0 + mov r1, #5 + bl FUN_02018768 + add r0, r6, #0 + mov r1, #5 + bl FUN_0201AC68 + add r0, r4, #0 + add r1, r5, #0 + bl MOD11_0225ADD0 + ldr r0, _0225A160 ; =MOD11_0225B234 + add r1, r4, #0 + bl MOD11_0225AD80 + mov r0, #0x6d + lsl r0, r0, #4 + str r5, [r4, r0] + add r0, r5, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0225A14C: .word MOD11_0225AE4C +_0225A150: .word 0x0225F8A4 +_0225A154: .word 0x000006B4 +_0225A158: .word 0x0225F80C +_0225A15C: .word 0x000002FF +_0225A160: .word MOD11_0225B234 + + thumb_func_start MOD11_0225A164 +MOD11_0225A164: ; 0x0225A164 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_02230078 + add r4, r0, #0 + ldr r0, [r5] + bl MOD11_02230080 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_022300CC + add r5, r0, #0 + bl FUN_0206B888 + mov r1, #0x13 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r1, #3 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0225A1DC ; =0x00004E32 + add r2, r4, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r3, r6, #0 + bl FUN_0200C0DC + bl FUN_0206B890 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0225A1E0 ; =0x00004E31 + add r1, r6, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B89C + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0225A1E0 ; =0x00004E31 + add r1, r6, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x13 + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + nop +_0225A1DC: .word 0x00004E32 +_0225A1E0: .word 0x00004E31 + + thumb_func_start MOD11_0225A1E4 +MOD11_0225A1E4: ; 0x0225A1E4 + push {r4, lr} + ldr r0, [r0] + bl MOD11_02230080 + ldr r1, _0225A220 ; =0x00004E40 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0225A224 ; =0x00004E41 + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0225A228 ; =0x00004E42 + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0225A22C ; =0x00004E31 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0225A22C ; =0x00004E31 + add r0, r4, #0 + bl FUN_0200C388 + ldr r1, _0225A230 ; =0x00004E32 + add r0, r4, #0 + bl FUN_0200C368 + pop {r4, pc} + nop +_0225A220: .word 0x00004E40 +_0225A224: .word 0x00004E41 +_0225A228: .word 0x00004E42 +_0225A22C: .word 0x00004E31 +_0225A230: .word 0x00004E32 + + thumb_func_start MOD11_0225A234 +MOD11_0225A234: ; 0x0225A234 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 + add r7, r4, #0 +_0225A23E: + ldr r0, _0225A268 ; =0x00000624 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0225A24E + bl FUN_0200C3DC + ldr r0, _0225A268 ; =0x00000624 + str r6, [r5, r0] +_0225A24E: + ldr r0, _0225A26C ; =0x00000634 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0225A25E + bl FUN_0200CAB4 + ldr r0, _0225A26C ; =0x00000634 + str r7, [r5, r0] +_0225A25E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0225A23E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225A268: .word 0x00000624 +_0225A26C: .word 0x00000634 + + thumb_func_start MOD11_0225A270 +MOD11_0225A270: ; 0x0225A270 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + add r6, r2, #0 + add r4, r0, #0 + str r1, [sp, #0xc] + str r3, [sp, #0x10] + cmp r6, #2 + blt _0225A284 + sub r5, r6, #2 + b _0225A286 +_0225A284: + add r5, r6, #0 +_0225A286: + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _0225A3D0 ; =0x00000624 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225A296 + bl ErrorHandling +_0225A296: + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _0225A3D4 ; =0x00000634 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225A2A6 + bl ErrorHandling +_0225A2A6: + cmp r6, #5 + bhi _0225A2CE + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225A2B6: ; jump table + .short _0225A2C2 - _0225A2B6 - 2 ; case 0 + .short _0225A2CE - _0225A2B6 - 2 ; case 1 + .short _0225A2C2 - _0225A2B6 - 2 ; case 2 + .short _0225A2C6 - _0225A2B6 - 2 ; case 3 + .short _0225A2C2 - _0225A2B6 - 2 ; case 4 + .short _0225A2CA - _0225A2B6 - 2 ; case 5 +_0225A2C2: + ldr r6, _0225A3D8 ; =0x00004E40 + b _0225A2D8 +_0225A2C6: + ldr r6, _0225A3DC ; =0x00004E41 + b _0225A2D8 +_0225A2CA: + ldr r6, _0225A3E0 ; =0x00004E42 + b _0225A2D8 +_0225A2CE: + bl ErrorHandling + add sp, #0x50 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225A2D8: + ldr r0, [r4] + bl MOD11_02230078 + str r0, [sp, #0x18] + ldr r0, [r4] + bl MOD11_02230080 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + mov r2, #0x13 + str r6, [sp, #8] + bl FUN_0200C00C + ldr r3, _0225A3E4 ; =0x0225F948 + add r2, sp, #0x1c + mov r7, #6 +_0225A30A: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r7, r7, #1 + bne _0225A30A + ldr r0, [r3] + lsl r3, r5, #2 + str r0, [r2] + ldr r2, _0225A3E8 ; =0x0225F76C + str r6, [sp, #0x30] + ldrh r1, [r2, r3] + add r0, sp, #0x1c + strh r1, [r0] + add r1, r2, r3 + ldrh r1, [r1, #2] + add r2, sp, #0x1c + strh r1, [r0, #2] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + bl FUN_0200C154 + add r3, sp, #0x1c + mov r1, #0 + mov r2, #2 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + mov r3, #0x11 + lsl r3, r3, #0x10 + add r6, r0, #0 + bl FUN_0200C750 + ldr r0, [sp, #0xc] + bl FUN_0206B87C + add r1, r0, #0 + ldr r0, [r6] + bl FUN_020202DC + ldr r0, [sp, #0x10] + mov r7, #0 + cmp r0, #0 + beq _0225A3A8 + ldr r0, [sp, #0x6c] + cmp r0, #2 + beq _0225A3A8 + cmp r0, #3 + beq _0225A3A8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x68] + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #4 + bhi _0225A3A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225A388: ; jump table + .short _0225A3A0 - _0225A388 - 2 ; case 0 + .short _0225A39E - _0225A388 - 2 ; case 1 + .short _0225A39A - _0225A388 - 2 ; case 2 + .short _0225A396 - _0225A388 - 2 ; case 3 + .short _0225A392 - _0225A388 - 2 ; case 4 +_0225A392: + mov r7, #1 + b _0225A3A0 +_0225A396: + mov r7, #2 + b _0225A3A0 +_0225A39A: + mov r7, #3 + b _0225A3A0 +_0225A39E: + mov r7, #4 +_0225A3A0: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200C5C0 +_0225A3A8: + add r0, r6, #0 + bl FUN_0200C5A8 + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _0225A3D0 ; =0x00000624 + ldr r2, _0225A3EC ; =0x00000514 + str r6, [r1, r0] + ldr r0, _0225A3F0 ; =MOD11_0225A3F4 + add r1, r6, #0 + bl FUN_0200CA44 + lsl r1, r5, #2 + add r2, r4, r1 + ldr r1, _0225A3D4 ; =0x00000634 + str r0, [r2, r1] + add r0, r6, #0 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225A3D0: .word 0x00000624 +_0225A3D4: .word 0x00000634 +_0225A3D8: .word 0x00004E40 +_0225A3DC: .word 0x00004E41 +_0225A3E0: .word 0x00004E42 +_0225A3E4: .word 0x0225F948 +_0225A3E8: .word 0x0225F76C +_0225A3EC: .word 0x00000514 +_0225A3F0: .word MOD11_0225A3F4 + + thumb_func_start MOD11_0225A3F4 +MOD11_0225A3F4: ; 0x0225A3F4 + ldr r3, _0225A3FC ; =0x0200C5A9 + add r0, r1, #0 + bx r3 + nop +_0225A3FC: .word 0x0200C5A9 + + thumb_func_start MOD11_0225A400 +MOD11_0225A400: ; 0x0225A400 + cmp r0, #3 + bhi _0225A418 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225A410: ; jump table + .short _0225A418 - _0225A410 - 2 ; case 0 + .short _0225A41C - _0225A410 - 2 ; case 1 + .short _0225A420 - _0225A410 - 2 ; case 2 + .short _0225A424 - _0225A410 - 2 ; case 3 +_0225A418: + mov r0, #0 + bx lr +_0225A41C: + mov r0, #1 + bx lr +_0225A420: + mov r0, #3 + bx lr +_0225A424: + mov r0, #2 + bx lr + + thumb_func_start MOD11_0225A428 +MOD11_0225A428: ; 0x0225A428 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r6, r2, #0 + add r0, r1, #0 + add r1, r4, #0 + mov r2, #0 + add r7, r3, #0 + bl FUN_02002E14 + add r4, r0, #0 + asr r1, r4, #2 + lsr r1, r1, #0x1d + add r1, r4, r1 + asr r5, r1, #3 + mov r1, #8 + blx FX_ModS32 + cmp r0, #0 + beq _0225A450 + add r5, r5, #1 +_0225A450: + str r4, [r6] + str r5, [r7] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0225A458 +MOD11_0225A458: ; 0x0225A458 + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r6, [sp, #0x9c] + ldr r4, [sp, #0xa8] + cmp r0, #0 + beq _0225A472 + bl ErrorHandling +_0225A472: + ldr r0, [r7] + bl MOD11_02230080 + str r0, [sp, #0x20] + ldr r0, [r7] + bl MOD11_0222FF68 + str r0, [sp, #0x24] + cmp r4, #0 + bne _0225A494 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD11_0225A428 + b _0225A49C +_0225A494: + ldrh r0, [r4, #0x12] + str r0, [sp, #0x2c] + ldrh r0, [r4, #0x10] + str r0, [sp, #0x28] +_0225A49C: + cmp r4, #0 + bne _0225A4DA + add r0, sp, #0x3c + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + lsl r2, r2, #0x18 + add r1, sp, #0x3c + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x1c] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x18] + add r0, sp, #0x3c + str r3, [sp, #0x14] + bl FUN_0201BE3C + b _0225A4E6 +_0225A4DA: + add r3, r4, #0 + add r2, sp, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} +_0225A4E6: + add r0, sp, #0x3c + mov r1, #2 + mov r2, #5 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x30 + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0225A50A + ldr r1, [sp, #0x2c] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + sub r6, r6, r0 +_0225A50A: + ldr r0, _0225A588 ; =0x000004C8 + ldr r0, [r7, r0] + str r0, [sp, #0x4c] + add r0, sp, #0x3c + str r0, [sp, #0x50] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x54] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + str r0, [sp, #0x58] + mov r0, #0 + ldr r1, [sp, #0x34] + str r0, [sp, #0x5c] + str r0, [sp, #0x6c] + mov r0, #0x64 + str r1, [sp, #0x60] + mov r1, #0x42 + str r0, [sp, #0x70] + mov r0, #2 + str r0, [sp, #0x74] + mov r0, #5 + str r0, [sp, #0x78] + ldr r2, [sp, #0xa0] + lsl r1, r1, #2 + add r1, r2, r1 + add r0, sp, #0x4c + str r6, [sp, #0x64] + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r7, r0, #0 + bl FUN_02011AC0 + mov r2, #0x42 + ldr r3, [sp, #0xa0] + lsl r2, r2, #2 + add r0, r7, #0 + add r1, r6, #0 + add r2, r3, r2 + bl FUN_020118C4 + cmp r4, #0 + bne _0225A570 + add r0, sp, #0x3c + bl FUN_02019178 +_0225A570: + str r7, [r5] + add r3, sp, #0x30 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x2c] + strh r0, [r5, #0x10] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + nop +_0225A588: .word 0x000004C8 + + thumb_func_start MOD11_0225A58C +MOD11_0225A58C: ; 0x0225A58C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x4d + mov r6, #0 + lsl r0, r0, #4 + add r4, r5, r0 + add r7, r6, #0 +_0225A59A: + ldr r0, _0225A5BC ; =0x000004CC + ldr r0, [r5, r0] + cmp r0, #0 + beq _0225A5B0 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + ldr r0, _0225A5BC ; =0x000004CC + str r7, [r5, r0] +_0225A5B0: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #0xd + blt _0225A59A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225A5BC: .word 0x000004CC + + thumb_func_start MOD11_0225A5C0 +MOD11_0225A5C0: ; 0x0225A5C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r0, [r7] + bl MOD11_0222FF68 + mov r1, #5 + bl FUN_0201886C + add r4, r0, #0 + add r0, r7, #0 + add r1, sp, #4 + mov r2, #0 + bl MOD11_0225ACD4 + add r0, sp, #0 + ldrb r0, [r0, #4] + cmp r0, #1 + bne _0225A63A + add r0, r7, #0 + mov r1, #1 + add r2, sp, #0 + mov r3, #0 + bl MOD11_0225AD2C + add r0, sp, #0 + ldrb r0, [r0, #2] + cmp r0, #1 + bne _0225A61E + mov r5, #0xc + mov r0, #0xa9 + lsl r6, r5, #5 + lsl r0, r0, #2 + mov r2, #0xf +_0225A604: + lsl r1, r6, #1 + add r1, r4, r1 + add r3, r2, #0 + add r1, #0x1e +_0225A60C: + add r3, r3, #1 + strh r0, [r1] + add r1, r1, #2 + cmp r3, #0x10 + ble _0225A60C + add r5, r5, #1 + add r6, #0x20 + cmp r5, #0x10 + ble _0225A604 +_0225A61E: + add r0, sp, #0 + ldrb r0, [r0, #3] + cmp r0, #1 + bne _0225A63A + mov r0, #0xa1 + lsl r0, r0, #2 + add r1, r4, r0 + mov r2, #2 + add r0, #0x20 +_0225A630: + add r2, r2, #1 + strh r0, [r1] + add r1, r1, #2 + cmp r2, #0xc + ble _0225A630 +_0225A63A: + add r0, sp, #0 + ldrb r0, [r0, #5] + cmp r0, #1 + bne _0225A694 + add r0, r7, #0 + mov r1, #2 + add r2, sp, #0 + mov r3, #0 + bl MOD11_0225AD2C + add r0, sp, #0 + ldrb r0, [r0, #2] + cmp r0, #1 + bne _0225A668 + ldr r0, _0225A698 ; =0x000002A6 + mov r2, #0x13 + add r1, r4, r0 + sub r0, r0, #2 +_0225A65E: + add r2, r2, #1 + strh r0, [r1] + add r1, r1, #2 + cmp r2, #0x1d + ble _0225A65E +_0225A668: + add r0, sp, #0 + ldrb r0, [r0, #3] + cmp r0, #1 + bne _0225A694 + mov r0, #0xa9 + mov r5, #3 + mov r3, #0x60 + lsl r0, r0, #2 + mov r2, #0xf +_0225A67A: + lsl r1, r3, #1 + add r1, r4, r1 + add r6, r2, #0 + add r1, #0x1e +_0225A682: + add r6, r6, #1 + strh r0, [r1] + add r1, r1, #2 + cmp r6, #0x10 + ble _0225A682 + add r5, r5, #1 + add r3, #0x20 + cmp r5, #7 + ble _0225A67A +_0225A694: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225A698: .word 0x000002A6 + + thumb_func_start MOD11_0225A69C +MOD11_0225A69C: ; 0x0225A69C + cmp r1, #2 + blt _0225A6A2 + sub r1, r1, #2 +_0225A6A2: + mov r2, #0x46 + lsl r2, r2, #2 + add r0, #0x68 + mul r2, r1 + add r0, r0, r2 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0225A6B0 +MOD11_0225A6B0: ; 0x0225A6B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp] + mov r1, #0x13 + str r0, [sp, #0x10] + add r0, #0x90 + str r0, [sp, #0x10] + ldr r0, [sp] + lsl r1, r1, #4 + str r0, [sp, #0xc] + add r0, #0xe0 + str r0, [sp, #0xc] + ldr r0, [sp] + add r0, r0, r1 + str r0, [sp, #8] +_0225A6D4: + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [sp] + ldr r7, [sp, #0x10] + ldr r6, [sp, #0xc] + ldr r5, [sp, #8] + str r0, [sp, #4] + add r4, r0, #0 +_0225A6E4: + ldr r0, [sp, #4] + add r0, #0x80 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + cmp r0, #0 + beq _0225A6FE + add r0, r7, #0 + bl FUN_02019178 +_0225A6FE: + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0225A70E + add r0, r6, #0 + bl FUN_02019178 +_0225A70E: + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0225A71E + add r0, r5, #0 + bl FUN_02019178 +_0225A71E: + ldr r0, [sp, #4] + add r4, #0x14 + add r0, r0, #4 + str r0, [sp, #4] + ldr r0, [sp, #0x18] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + add r5, #0x14 + str r0, [sp, #0x18] + cmp r0, #4 + blt _0225A6E4 + mov r0, #0x46 + ldr r1, [sp] + lsl r0, r0, #2 + add r1, r1, r0 + str r1, [sp] + ldr r1, [sp, #0x10] + add r1, r1, r0 + str r1, [sp, #0x10] + ldr r1, [sp, #0xc] + add r1, r1, r0 + str r1, [sp, #0xc] + ldr r1, [sp, #8] + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #4 + blt _0225A6D4 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0225A760 +MOD11_0225A760: ; 0x0225A760 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + add r7, r0, #0 + ldr r0, [r7] + add r5, r1, #0 + str r2, [sp, #8] + bl MOD11_022300C4 + add r4, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_0225A69C + str r0, [sp, #0x38] + mov r0, #6 + bl FUN_020799E8 + str r0, [sp, #0xc] + ldr r1, _0225A95C ; =0x000003AA + add r0, r4, #0 + bl FUN_0200A914 + str r0, [sp, #0x28] + ldr r0, [r7] + bl MOD11_02230138 + str r0, [sp, #0x24] + mov r0, #0x10 + mov r1, #5 + bl FUN_020219F4 + str r0, [sp, #0x30] + ldr r1, _0225A960 ; =0x000003A9 + add r0, r4, #0 + bl FUN_0200A914 + ldr r4, [sp, #0x38] + str r0, [sp, #0x2c] + mov r0, #0 + str r0, [sp, #0x34] + add r0, r4, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x18] + add r0, #0x28 + str r0, [sp, #0x18] + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x78 + str r0, [sp, #0x14] + add r0, r4, #0 + str r0, [sp, #0x10] + add r0, #0xc8 + ldr r5, [sp, #8] + add r6, r4, #0 + str r0, [sp, #0x10] +_0225A7CE: + ldrh r0, [r5] + ldrh r1, [r4] + cmp r0, r1 + beq _0225A814 + cmp r0, #0 + beq _0225A814 + mov r1, #3 + bl FUN_0206AB18 + str r0, [sp, #0x3c] + bl FUN_0206E12C + str r0, [sp, #0x40] + ldr r0, [sp, #0x3c] + bl FUN_0206E0F0 + add r1, r0, #0 + mov r0, #5 + str r0, [sp] + ldr r0, [sp, #0x40] + mov r2, #1 + add r3, sp, #0x4c + bl FUN_02006BB0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x4c] + ldr r1, [sp, #0x1c] + ldr r0, [r0, #0x14] + ldr r1, [r1, #0x18] + ldr r2, [sp, #0xc] + blx MIi_CpuCopy32 + ldr r0, [sp, #0x44] + bl FUN_02016A18 +_0225A814: + ldr r0, [r6, #0x34] + cmp r0, #0 + beq _0225A826 + ldrh r1, [r5] + ldrh r0, [r4] + cmp r1, r0 + beq _0225A846 + cmp r1, #0 + beq _0225A846 +_0225A826: + ldrh r0, [r5] + mov r1, #5 + bl FUN_0200AA14 + str r0, [sp, #0x48] + ldr r0, _0225A964 ; =0x00070809 + ldr r1, [sp, #0x48] + str r0, [sp] + ldr r3, [sp, #0x18] + add r0, r7, #0 + mov r2, #2 + bl MOD11_0225A968 + ldr r0, [sp, #0x48] + bl FUN_02021A20 +_0225A846: + add r0, r6, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _0225A876 + add r0, r6, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #0 + beq _0225A876 + ldrh r1, [r5] + cmp r1, #0 + bne _0225A876 + ldrh r0, [r4] + cmp r1, r0 + bne _0225A876 + ldrh r1, [r5, #8] + ldrh r0, [r4, #8] + cmp r1, r0 + bne _0225A876 + ldrh r1, [r5, #0x10] + ldrh r0, [r4, #0x10] + cmp r1, r0 + beq _0225A906 +_0225A876: + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldrh r2, [r5, #8] + ldr r0, [sp, #0x24] + mov r1, #0 + mov r3, #2 + bl FUN_0200AD38 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldrh r2, [r5, #0x10] + ldr r0, [sp, #0x24] + mov r1, #1 + mov r3, #2 + bl FUN_0200AD38 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x2c] + bl FUN_0200B7B8 + ldrh r0, [r5, #8] + ldrh r1, [r5, #0x10] + bl MOD11_0225B3D4 + str r0, [sp, #0x20] + add r0, r6, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _0225A8CC + ldrh r1, [r5] + ldrh r0, [r4] + cmp r1, r0 + bne _0225A8CC + ldrh r1, [r5, #8] + ldrh r0, [r4, #8] + cmp r1, r0 + beq _0225A8DC +_0225A8CC: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x30] + str r0, [sp] + ldr r3, [sp, #0x14] + add r0, r7, #0 + mov r2, #0 + bl MOD11_0225A968 +_0225A8DC: + add r0, r6, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #0 + beq _0225A8F6 + ldrh r1, [r5] + ldrh r0, [r4] + cmp r1, r0 + bne _0225A8F6 + ldrh r1, [r5, #8] + ldrh r0, [r4, #8] + cmp r1, r0 + beq _0225A906 +_0225A8F6: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x28] + str r0, [sp] + ldr r3, [sp, #0x10] + add r0, r7, #0 + mov r2, #0 + bl MOD11_0225A968 +_0225A906: + ldr r0, [sp, #0x1c] + add r4, r4, #2 + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r5, r5, #2 + add r0, #0x14 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r6, #0x14 + add r0, #0x14 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r0, #0x14 + str r0, [sp, #0x10] + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, #4 + bge _0225A930 + b _0225A7CE +_0225A930: + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + mov r0, #0xc +_0225A944: + ldr r1, [sp, #8] + ldrh r2, [r1] + add r1, r1, #2 + str r1, [sp, #8] + ldr r1, [sp, #0x38] + strh r2, [r1] + add r1, r1, #2 + str r1, [sp, #0x38] + sub r0, r0, #1 + bne _0225A944 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225A95C: .word 0x000003AA +_0225A960: .word 0x000003A9 +_0225A964: .word 0x00070809 + + thumb_func_start MOD11_0225A968 +MOD11_0225A968: ; 0x0225A968 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r2, #0 + add r6, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x1c + add r3, sp, #0x18 + bl MOD11_0225A428 + ldr r0, [sp, #0x1c] + strh r0, [r4, #0x12] + ldr r0, [sp, #0x18] + strh r0, [r4, #0x10] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0225A994 + add r0, r4, #0 + bl FUN_02019178 +_0225A994: + add r0, r4, #0 + bl FUN_0201901C + ldr r0, [r5] + bl MOD11_0222FF68 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r2, [sp, #0x18] + add r1, r4, #0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x38] + add r1, r7, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + add r0, r4, #0 + add r2, r6, #0 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0225A9D4 +MOD11_0225A9D4: ; 0x0225A9D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r0, #0 + str r0, [sp, #4] + add r0, #0x18 + str r0, [sp, #4] + ldr r0, [r5] + bl MOD11_02230078 + str r0, [sp, #0xc] + ldr r0, [r5] + bl MOD11_02230080 + ldr r1, _0225AAA8 ; =0x0000069E + str r0, [sp, #8] + ldrb r1, [r5, r1] + add r0, r5, #0 + bl MOD11_0225A69C + ldr r4, _0225AAAC ; =0x0225F914 + str r0, [sp] + add r3, sp, #0x10 + mov r2, #6 +_0225AA02: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0225AA02 + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r6, sp, #0x10 + b _0225AAA0 +_0225AA14: + lsl r0, r4, #2 + add r1, r5, r0 + ldr r0, _0225AAB0 ; =0x00000604 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225AA24 + bl ErrorHandling +_0225AA24: + ldr r0, [sp, #4] + lsl r1, r4, #1 + ldrh r0, [r0, r1] + cmp r0, #0 + beq _0225AA9E + mov r1, #3 + bl FUN_0206AB18 + add r2, r0, #0 + ldr r0, _0225AAB4 ; =0x00004E35 + ldr r1, _0225AAB8 ; =0x0225F72C + add r0, r4, r0 + str r0, [sp, #0x24] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + add r3, sp, #0x10 + strh r1, [r6] + ldr r1, _0225AAB8 ; =0x0225F72C + add r0, r1, r0 + ldrh r0, [r0, #2] + ldr r1, [sp, #8] + strh r0, [r6, #2] + ldr r0, [sp, #0xc] + bl FUN_0206E240 + lsl r1, r4, #2 + add r2, r5, r1 + ldr r1, _0225AAB0 ; =0x00000604 + mov r3, #0x11 + str r0, [r2, r1] + add r0, r1, #0 + ldr r0, [r2, r0] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + lsl r3, r3, #0x10 + bl FUN_0200C750 + lsl r0, r4, #2 + add r1, r5, r0 + ldr r0, _0225AAB0 ; =0x00000604 + ldr r0, [r1, r0] + ldr r0, [r0] + bl FUN_02020350 + add r7, r0, #0 + mov r0, #6 + bl FUN_020799E8 + add r2, r0, #0 + ldr r0, [sp] + lsl r3, r4, #2 + add r0, r0, r3 + mov r3, #0x66 + ldr r1, [r7, #8] + lsl r3, r3, #0x14 + ldr r0, [r0, #0x18] + add r1, r3, r1 + blx MIi_CpuCopy16 +_0225AA9E: + add r4, r4, #1 +_0225AAA0: + cmp r4, #4 + blt _0225AA14 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0225AAA8: .word 0x0000069E +_0225AAAC: .word 0x0225F914 +_0225AAB0: .word 0x00000604 +_0225AAB4: .word 0x00004E35 +_0225AAB8: .word 0x0225F72C + + thumb_func_start MOD11_0225AABC +MOD11_0225AABC: ; 0x0225AABC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_02230078 + ldr r0, [r5] + bl MOD11_02230080 + mov r4, #0 + ldr r7, _0225AAEC ; =0x00000604 + add r6, r4, #0 +_0225AAD2: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0225AAE0 + bl FUN_0206E270 + ldr r0, _0225AAEC ; =0x00000604 + str r6, [r5, r0] +_0225AAE0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0225AAD2 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225AAEC: .word 0x00000604 + + thumb_func_start MOD11_0225AAF0 +MOD11_0225AAF0: ; 0x0225AAF0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + bl MOD11_02230078 + ldr r0, [r5] + bl MOD11_02230080 + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_0225AB06: + ldr r0, _0225AB2C ; =0x00000614 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0225AB20 + bl FUN_0206E2E8 + ldr r1, _0225AB30 ; =0x00004E39 + add r0, r6, #0 + add r1, r4, r1 + bl FUN_0206E2E0 + ldr r0, _0225AB2C ; =0x00000614 + str r7, [r5, r0] +_0225AB20: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0225AB06 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225AB2C: .word 0x00000614 +_0225AB30: .word 0x00004E39 + + thumb_func_start MOD11_0225AB34 +MOD11_0225AB34: ; 0x0225AB34 + push {r3, r4, r5, lr} + ldr r0, [r0] + add r5, r1, #0 + add r4, r2, #0 + bl MOD11_022300CC + add r4, #8 + add r1, r5, #0 + mov r2, #5 + mov r3, #1 + str r4, [sp] + bl FUN_02211E7C + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0225AB50 +MOD11_0225AB50: ; 0x0225AB50 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD11_022300CC + add r6, r0, #0 + mov r7, #0 + b _0225AB96 +_0225AB62: + ldr r1, _0225AB9C ; =0x0225F6A8 + lsl r2, r4, #1 + add r1, r1, r2 + ldr r2, _0225ABA0 ; =0x0225F74C + lsl r3, r4, #2 + add r2, r2, r3 + add r0, r5, #0 + mov r3, #3 + str r7, [sp] + bl MOD11_0225ADD8 + mov r0, #0x20 + str r0, [sp] + add r3, r4, #0 + mov r1, #7 + add r3, #8 + lsl r3, r3, #0x14 + ldr r2, [r5, #0x58] + lsl r1, r1, #6 + add r1, r2, r1 + add r0, r6, #0 + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add r4, r4, #1 +_0225AB96: + cmp r4, #4 + blt _0225AB62 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225AB9C: .word 0x0225F6A8 +_0225ABA0: .word 0x0225F74C + + thumb_func_start MOD11_0225ABA4 +MOD11_0225ABA4: ; 0x0225ABA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + ldr r1, _0225AC50 ; =0x0225F684 + add r5, r0, #0 + ldrb r2, [r1, #6] + add r0, sp, #0x10 + strb r2, [r0] + ldrb r2, [r1, #7] + strb r2, [r0, #1] + ldrb r2, [r1, #8] + ldrb r1, [r1, #9] + strb r2, [r0, #2] + strb r1, [r0, #3] + ldr r0, [r5] + bl MOD11_0222FF68 + add r6, r0, #0 + ldr r0, [r5] + bl MOD11_022300CC + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r2, _0225AC54 ; =0x0225F6C0 + lsl r1, r4, #1 + add r1, r2, r1 + ldr r3, _0225AC58 ; =0x0225F71C + lsl r2, r4, #2 + add r2, r3, r2 + add r0, r5, #0 + mov r3, #4 + bl MOD11_0225ADD8 + mov r0, #0x20 + str r0, [sp] + add r3, sp, #0x10 + ldrb r3, [r3, r4] + mov r1, #7 + ldr r2, [r5, #0x58] + lsl r1, r1, #6 + lsl r3, r3, #0x14 + add r1, r2, r1 + add r0, r7, #0 + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add r0, r6, #0 + mov r1, #4 + bl FUN_0201AC68 + ldr r0, _0225AC58 ; =0x0225F71C + lsl r1, r4, #2 + ldrb r2, [r0, r1] + add r3, r0, r1 + str r2, [sp] + ldrb r4, [r3, #3] + ldrb r2, [r3, #2] + sub r2, r4, r2 + add r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldrb r0, [r0, r1] + ldrb r2, [r3, #1] + mov r1, #5 + sub r0, r2, r0 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldrb r3, [r3, #2] + ldr r2, _0225AC5C ; =0x000002FF + add r0, r6, #0 + bl FUN_02018540 + add r0, r6, #0 + mov r1, #5 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0225AC50: .word 0x0225F684 +_0225AC54: .word 0x0225F6C0 +_0225AC58: .word 0x0225F71C +_0225AC5C: .word 0x000002FF + + thumb_func_start MOD11_0225AC60 +MOD11_0225AC60: ; 0x0225AC60 + push {r4, r5, r6, lr} + mov r5, #0 + mov r6, #1 + add r4, r5, #0 +_0225AC68: + add r0, r5, #4 + cmp r0, #6 + beq _0225AC7A + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r4, #0 + bl FUN_0201797C + b _0225AC84 +_0225AC7A: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C +_0225AC84: + add r5, r5, #1 + cmp r5, #4 + blt _0225AC68 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0225AC8C +MOD11_0225AC8C: ; 0x0225AC8C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #1 + bne _0225AC9A + bl MOD11_0225ACB0 +_0225AC9A: + cmp r4, #1 + bne _0225ACA8 + ldr r0, _0225ACAC ; =MOD11_0225B76C + add r1, r5, #0 + mov r2, #0xa + bl FUN_0200CA98 +_0225ACA8: + pop {r3, r4, r5, pc} + nop +_0225ACAC: .word MOD11_0225B76C + + thumb_func_start MOD11_0225ACB0 +MOD11_0225ACB0: ; 0x0225ACB0 + push {r4, lr} + add r4, r0, #0 + bl MOD11_0225AABC + add r0, r4, #0 + bl MOD11_0225AAF0 + add r0, r4, #0 + bl MOD11_0225A58C + add r0, r4, #0 + bl MOD11_0225A1E4 + add r0, r4, #0 + bl MOD11_0225A234 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225ACD4 +MOD11_0225ACD4: ; 0x0225ACD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r6, r5, #0 + add r1, sp, #0 + add r7, r2, #0 + add r6, #0x18 + bl MOD11_022314E0 + mov r0, #0 + b _0225AD1E +_0225ACEE: + add r2, r0, #2 + add r1, sp, #0 + ldrb r1, [r1, r2] + cmp r7, #1 + bne _0225AD0A + lsl r1, r1, #3 + add r1, r6, r1 + ldrb r1, [r1, #1] + lsl r1, r1, #0x1d + lsr r1, r1, #0x1f + bne _0225AD0A + mov r1, #0 + strb r1, [r4, r0] + b _0225AD1C +_0225AD0A: + mov r1, #0x6a + lsl r1, r1, #4 + ldrb r1, [r5, r1] + lsl r2, r0, #2 + lsl r3, r1, #4 + ldr r1, _0225AD28 ; =0x0225F9EC + add r1, r1, r3 + ldr r1, [r2, r1] + strb r1, [r4, r0] +_0225AD1C: + add r0, r0, #1 +_0225AD1E: + cmp r0, #4 + blt _0225ACEE + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225AD28: .word 0x0225F9EC + + thumb_func_start MOD11_0225AD2C +MOD11_0225AD2C: ; 0x0225AD2C + push {r4, lr} + mov r4, #0x6a + lsl r4, r4, #4 + ldrb r4, [r0, r4] + cmp r4, #0xb + bhi _0225AD76 + add r4, r4, r4 + add r4, pc + ldrh r4, [r4, #6] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add pc, r4 +_0225AD44: ; jump table + .short _0225AD5C - _0225AD44 - 2 ; case 0 + .short _0225AD76 - _0225AD44 - 2 ; case 1 + .short _0225AD76 - _0225AD44 - 2 ; case 2 + .short _0225AD76 - _0225AD44 - 2 ; case 3 + .short _0225AD76 - _0225AD44 - 2 ; case 4 + .short _0225AD76 - _0225AD44 - 2 ; case 5 + .short _0225AD76 - _0225AD44 - 2 ; case 6 + .short _0225AD76 - _0225AD44 - 2 ; case 7 + .short _0225AD5C - _0225AD44 - 2 ; case 8 + .short _0225AD5C - _0225AD44 - 2 ; case 9 + .short _0225AD5C - _0225AD44 - 2 ; case 10 + .short _0225AD5C - _0225AD44 - 2 ; case 11 +_0225AD5C: + mov r4, #0 + add r0, r4, #0 + mov r3, #1 + sub r1, r1, #1 +_0225AD64: + cmp r4, r1 + bne _0225AD6C + strb r3, [r2, r4] + b _0225AD6E +_0225AD6C: + strb r0, [r2, r4] +_0225AD6E: + add r4, r4, #1 + cmp r4, #4 + blt _0225AD64 + pop {r4, pc} +_0225AD76: + add r1, r2, #0 + add r2, r3, #0 + bl MOD11_0225ACD4 + pop {r4, pc} + + thumb_func_start MOD11_0225AD80 +MOD11_0225AD80: ; 0x0225AD80 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0225AD90 + bl ErrorHandling +_0225AD90: + mov r0, #0x6b + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x24 + blx MI_CpuFill8 + ldr r2, _0225ADAC ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #8] + pop {r3, r4, r5, pc} + .align 2, 0 +_0225ADAC: .word 0x00000514 + + thumb_func_start MOD11_0225ADB0 +MOD11_0225ADB0: ; 0x0225ADB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0225ADCE + bl FUN_0200CAB4 + mov r0, #0x6b + lsl r0, r0, #4 + mov r1, #0 + add r0, r4, r0 + mov r2, #0x24 + str r1, [r4, #8] + blx MI_CpuFill8 +_0225ADCE: + pop {r4, pc} + + thumb_func_start MOD11_0225ADD0 +MOD11_0225ADD0: ; 0x0225ADD0 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0225ADD4 +MOD11_0225ADD4: ; 0x0225ADD4 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0225ADD8 +MOD11_0225ADD8: ; 0x0225ADD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl MOD11_0222FF68 + mov r1, #4 + str r0, [sp, #4] + bl FUN_0201886C + mov ip, r0 + lsl r0, r7, #2 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + ldrb r7, [r4] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r0, r0, #1 + ldrsh r1, [r6, r0] + ldrb r0, [r4, #1] + cmp r7, r0 + bgt _0225AE40 + lsl r6, r7, #5 +_0225AE0C: + lsl r2, r6, #1 + mov r0, ip + add r5, r0, r2 + ldr r0, [sp] + ldrb r3, [r4, #3] + add r2, r0, r2 + ldrb r0, [r4, #2] + cmp r0, r3 + bgt _0225AE36 + lsl r3, r0, #1 + add r2, r2, r3 + add r3, r5, r3 +_0225AE24: + ldrh r5, [r2] + add r0, r0, #1 + add r2, r2, #2 + add r5, r1, r5 + strh r5, [r3] + ldrb r5, [r4, #3] + add r3, r3, #2 + cmp r0, r5 + ble _0225AE24 +_0225AE36: + ldrb r0, [r4, #1] + add r7, r7, #1 + add r6, #0x20 + cmp r7, r0 + ble _0225AE0C +_0225AE40: + ldr r0, [sp, #4] + mov r1, #4 + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD11_0225AE4C +MOD11_0225AE4C: ; 0x0225AE4C + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r0, [r4] + bl MOD11_0222FF68 + mov r3, #0x6b + lsl r3, r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0225AE6C + cmp r0, #1 + beq _0225AEDC + cmp r0, #2 + beq _0225AEF8 + b _0225AF66 +_0225AE6C: + mov r0, #2 + str r0, [sp] + add r1, r3, #4 + add r2, r3, #0 + add r3, #0x10 + add r2, #8 + ldrb r3, [r4, r3] + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD11_0225ADD8 + ldr r0, _0225AF8C ; =0x000006C1 + add r2, sp, #4 + ldrb r1, [r4, r0] + mov r0, #0x14 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0225AF90 ; =0x000004CC + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _0225AF8C ; =0x000006C1 + ldr r2, [sp, #4] + ldrb r1, [r4, r0] + mov r0, #0x14 + sub r2, r2, #2 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0225AF90 ; =0x000004CC + ldr r0, [r1, r0] + ldr r1, [sp, #8] + bl FUN_020118C4 + ldr r0, _0225AF94 ; =0x000006C2 + ldrb r1, [r4, r0] + cmp r1, #0xff + beq _0225AECE + lsl r1, r1, #2 + add r1, r4, r1 + sub r0, #0x9e + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225AECE + mov r1, #0 + sub r2, r1, #2 + bl FUN_0200C82C +_0225AECE: + mov r0, #0x6b + lsl r0, r0, #4 + ldrsh r1, [r4, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, pc} +_0225AEDC: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225AF86 + mov r1, #0 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r3] + add r0, r0, #1 + strh r0, [r4, r3] +_0225AEF8: + mov r0, #1 + ldr r3, _0225AF98 ; =0x000006B4 + str r0, [sp] + add r2, r3, #4 + ldr r1, [r4, r3] + add r3, #0xc + ldrb r3, [r4, r3] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD11_0225ADD8 + ldr r0, _0225AF8C ; =0x000006C1 + add r2, sp, #4 + ldrb r1, [r4, r0] + mov r0, #0x14 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0225AF90 ; =0x000004CC + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _0225AF8C ; =0x000006C1 + ldr r2, [sp, #4] + ldrb r1, [r4, r0] + mov r0, #0x14 + add r2, r2, #1 + mul r0, r1 + add r1, r4, r0 + ldr r0, _0225AF90 ; =0x000004CC + ldr r0, [r1, r0] + ldr r1, [sp, #8] + bl FUN_020118C4 + ldr r0, _0225AF94 ; =0x000006C2 + ldrb r1, [r4, r0] + cmp r1, #0xff + beq _0225AF58 + lsl r1, r1, #2 + add r1, r4, r1 + sub r0, #0x9e + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225AF58 + mov r1, #0 + mov r2, #1 + bl FUN_0200C82C +_0225AF58: + mov r0, #0x6b + lsl r0, r0, #4 + ldrsh r1, [r4, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, pc} +_0225AF66: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225AF86 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD11_0225AC8C + add r0, r4, #0 + bl MOD11_0225ADB0 +_0225AF86: + add sp, #0xc + pop {r3, r4, pc} + nop +_0225AF8C: .word 0x000006C1 +_0225AF90: .word 0x000004CC +_0225AF94: .word 0x000006C2 +_0225AF98: .word 0x000006B4 + + thumb_func_start MOD11_0225AF9C +MOD11_0225AF9C: ; 0x0225AF9C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r1, #0 + ldr r0, [r4] + bl MOD11_0222FF68 + ldr r0, _0225B21C ; =0x000006BC + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0x18 + cmp r0, #4 + bgt _0225AFCE + cmp r0, #0 + blt _0225B00A + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0225AFC4: ; jump table + .short _0225B00A - _0225AFC4 - 2 ; case 0 + .short _0225AFD2 - _0225AFC4 - 2 ; case 1 + .short _0225AFE0 - _0225AFC4 - 2 ; case 2 + .short _0225AFEE - _0225AFC4 - 2 ; case 3 + .short _0225AFFC - _0225AFC4 - 2 ; case 4 +_0225AFCE: + cmp r0, #0xff + b _0225B00A +_0225AFD2: + mov r0, #5 + str r0, [sp, #8] + ldrh r0, [r1] + mov r5, #0 + mov r6, #9 + str r0, [sp, #4] + b _0225B012 +_0225AFE0: + mov r0, #6 + str r0, [sp, #8] + ldrh r0, [r1, #2] + mov r5, #1 + mov r6, #0xa + str r0, [sp, #4] + b _0225B012 +_0225AFEE: + mov r0, #7 + str r0, [sp, #8] + ldrh r0, [r1, #4] + mov r5, #2 + mov r6, #0xb + str r0, [sp, #4] + b _0225B012 +_0225AFFC: + mov r0, #8 + str r0, [sp, #8] + ldrh r0, [r1, #6] + mov r5, #3 + mov r6, #0xc + str r0, [sp, #4] + b _0225B012 +_0225B00A: + mov r5, #0 + add r6, r5, #0 + str r5, [sp, #8] + str r5, [sp, #4] +_0225B012: + mov r3, #0x6b + lsl r3, r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0225B026 + cmp r0, #1 + beq _0225B100 + cmp r0, #2 + beq _0225B11E + b _0225B1F6 +_0225B026: + mov r0, #2 + str r0, [sp] + add r1, r3, #4 + add r2, r3, #0 + add r3, #0x10 + add r2, #8 + ldrb r3, [r4, r3] + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD11_0225ADD8 + ldr r0, _0225B21C ; =0x000006BC + add r1, sp, #0x20 + ldr r0, [r4, r0] + cmp r0, #0xff + beq _0225B0DA + ldr r0, _0225B220 ; =0x000004CC + add r2, sp, #0x1c + add r7, r4, r0 + mov r0, #0x14 + mul r0, r5 + str r0, [sp, #0xc] + ldr r0, [r7, r0] + bl FUN_020119A4 + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x1c] + ldr r0, [r7, r0] + ldr r1, [sp, #0x20] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, _0225B220 ; =0x000004CC + add r1, sp, #0x20 + add r7, r4, r0 + mov r0, #0x14 + mul r0, r6 + str r0, [sp, #0x10] + ldr r0, [r7, r0] + add r2, sp, #0x1c + bl FUN_020119A4 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x1c] + ldr r0, [r7, r0] + ldr r1, [sp, #0x20] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, _0225B220 ; =0x000004CC + mov r1, #0x14 + add r6, r4, r0 + ldr r0, [sp, #8] + add r2, sp, #0x1c + add r7, r0, #0 + mul r7, r1 + ldr r0, [r6, r7] + add r1, sp, #0x20 + bl FUN_020119A4 + ldr r2, [sp, #0x1c] + ldr r0, [r6, r7] + ldr r1, [sp, #0x20] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0225B0F2 + lsl r5, r5, #2 + ldr r0, _0225B224 ; =0x00000604 + add r1, r4, r5 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC + ldr r0, _0225B228 ; =0x00000614 + add r1, r4, r5 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225B0F2 + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC + b _0225B0F2 +_0225B0DA: + ldr r0, _0225B22C ; =0x0000051C + add r2, sp, #0x1c + ldr r0, [r4, r0] + bl FUN_020119A4 + ldr r0, _0225B22C ; =0x0000051C + ldr r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r1, [sp, #0x20] + sub r2, r2, #2 + bl FUN_020118C4 +_0225B0F2: + mov r0, #0x6b + lsl r0, r0, #4 + ldrsh r1, [r4, r0] + add sp, #0x24 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r4, r5, r6, r7, pc} +_0225B100: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + bgt _0225B112 + b _0225B216 +_0225B112: + mov r1, #0 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r3] + add r0, r0, #1 + strh r0, [r4, r3] +_0225B11E: + mov r0, #1 + ldr r3, _0225B230 ; =0x000006B4 + str r0, [sp] + add r2, r3, #4 + ldr r1, [r4, r3] + add r3, #0xc + ldrb r3, [r4, r3] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD11_0225ADD8 + ldr r0, _0225B21C ; =0x000006BC + add r1, sp, #0x20 + ldr r0, [r4, r0] + cmp r0, #0xff + beq _0225B1D0 + ldr r0, _0225B220 ; =0x000004CC + add r2, sp, #0x1c + add r7, r4, r0 + mov r0, #0x14 + mul r0, r5 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + bl FUN_020119A4 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x1c] + ldr r0, [r7, r0] + ldr r1, [sp, #0x20] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, _0225B220 ; =0x000004CC + add r1, sp, #0x20 + add r7, r4, r0 + mov r0, #0x14 + mul r0, r6 + str r0, [sp, #0x18] + ldr r0, [r7, r0] + add r2, sp, #0x1c + bl FUN_020119A4 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r0, [r7, r0] + ldr r1, [sp, #0x20] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, _0225B220 ; =0x000004CC + mov r1, #0x14 + add r6, r4, r0 + ldr r0, [sp, #8] + add r2, sp, #0x1c + add r7, r0, #0 + mul r7, r1 + ldr r0, [r6, r7] + add r1, sp, #0x20 + bl FUN_020119A4 + ldr r2, [sp, #0x1c] + ldr r0, [r6, r7] + ldr r1, [sp, #0x20] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0225B1E8 + lsl r5, r5, #2 + ldr r0, _0225B224 ; =0x00000604 + add r1, r4, r5 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + mov r2, #1 + bl FUN_0200C7FC + ldr r0, _0225B228 ; =0x00000614 + add r1, r4, r5 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225B1E8 + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC + b _0225B1E8 +_0225B1D0: + ldr r0, _0225B22C ; =0x0000051C + add r2, sp, #0x1c + ldr r0, [r4, r0] + bl FUN_020119A4 + ldr r0, _0225B22C ; =0x0000051C + ldr r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r1, [sp, #0x20] + add r2, r2, #1 + bl FUN_020118C4 +_0225B1E8: + mov r0, #0x6b + lsl r0, r0, #4 + ldrsh r1, [r4, r0] + add sp, #0x24 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r4, r5, r6, r7, pc} +_0225B1F6: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225B216 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_0225AC8C + add r0, r4, #0 + bl MOD11_0225ADB0 +_0225B216: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0225B21C: .word 0x000006BC +_0225B220: .word 0x000004CC +_0225B224: .word 0x00000604 +_0225B228: .word 0x00000614 +_0225B22C: .word 0x0000051C +_0225B230: .word 0x000006B4 + + thumb_func_start MOD11_0225B234 +MOD11_0225B234: ; 0x0225B234 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + bl MOD11_0222FF68 + mov r1, #0x6b + lsl r1, r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #3 + bls _0225B24C + b _0225B3AE +_0225B24C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225B258: ; jump table + .short _0225B260 - _0225B258 - 2 ; case 0 + .short _0225B2E8 - _0225B258 - 2 ; case 1 + .short _0225B304 - _0225B258 - 2 ; case 2 + .short _0225B38E - _0225B258 - 2 ; case 3 +_0225B260: + add r1, #0x20 + ldr r1, [r4, r1] + add r0, r4, #0 + add r2, sp, #4 + mov r3, #1 + bl MOD11_0225AD2C + mov r5, #0 + mov r7, #2 + add r6, sp, #4 + b _0225B2D6 +_0225B276: + ldrb r0, [r6, r5] + cmp r0, #1 + bne _0225B2D4 + mov r1, #6 + add r2, r5, #0 + mul r2, r1 + ldr r1, _0225B3C4 ; =0x0225F88C + lsl r3, r5, #2 + add r1, r1, r2 + ldr r2, _0225B3C8 ; =0x0225F7FC + add r0, r4, #0 + add r2, r2, r3 + mov r3, #4 + str r7, [sp] + bl MOD11_0225ADD8 + mov r0, #0x14 + mul r0, r5 + add r1, r4, r0 + ldr r0, _0225B3CC ; =0x000004CC + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225B2C0 + add r1, sp, #0xc + add r2, sp, #8 + bl FUN_020119A4 + mov r0, #0x14 + mul r0, r5 + add r1, r4, r0 + ldr r0, _0225B3CC ; =0x000004CC + ldr r2, [sp, #8] + ldr r0, [r1, r0] + ldr r1, [sp, #0xc] + sub r2, r2, #2 + bl FUN_020118C4 +_0225B2C0: + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _0225B3D0 ; =0x00000624 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225B2D4 + mov r1, #0 + sub r2, r1, #2 + bl FUN_0200C82C +_0225B2D4: + add r5, r5, #1 +_0225B2D6: + cmp r5, #4 + blt _0225B276 + mov r0, #0x6b + lsl r0, r0, #4 + ldrsh r1, [r4, r0] + add sp, #0x10 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0225B2E8: + add r0, r1, #2 + ldrsh r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #2 + strh r2, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225B3BE + mov r2, #0 + add r0, r1, #2 + strh r2, [r4, r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, r1] +_0225B304: + mov r1, #0x6d + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + add r2, sp, #4 + mov r3, #1 + bl MOD11_0225AD2C + mov r5, #0 + mov r7, #1 + add r6, sp, #4 + b _0225B37C +_0225B31C: + ldrb r0, [r6, r5] + cmp r0, #1 + bne _0225B37A + mov r1, #6 + add r2, r5, #0 + mul r2, r1 + ldr r1, _0225B3C4 ; =0x0225F88C + lsl r3, r5, #2 + add r1, r1, r2 + ldr r2, _0225B3C8 ; =0x0225F7FC + add r0, r4, #0 + add r2, r2, r3 + mov r3, #4 + str r7, [sp] + bl MOD11_0225ADD8 + mov r0, #0x14 + mul r0, r5 + add r1, r4, r0 + ldr r0, _0225B3CC ; =0x000004CC + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225B366 + add r1, sp, #0xc + add r2, sp, #8 + bl FUN_020119A4 + mov r0, #0x14 + mul r0, r5 + add r1, r4, r0 + ldr r0, _0225B3CC ; =0x000004CC + ldr r2, [sp, #8] + ldr r0, [r1, r0] + ldr r1, [sp, #0xc] + add r2, r2, #1 + bl FUN_020118C4 +_0225B366: + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _0225B3D0 ; =0x00000624 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0225B37A + mov r1, #0 + mov r2, #1 + bl FUN_0200C82C +_0225B37A: + add r5, r5, #1 +_0225B37C: + cmp r5, #4 + blt _0225B31C + mov r0, #0x6b + lsl r0, r0, #4 + ldrsh r1, [r4, r0] + add sp, #0x10 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0225B38E: + add r0, r1, #2 + ldrsh r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #2 + strh r2, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225B3BE + mov r2, #0 + add r0, r1, #2 + strh r2, [r4, r0] + ldrsh r0, [r4, r1] + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_0225B3AE: + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_0225AC8C + add r0, r4, #0 + bl MOD11_0225ADB0 +_0225B3BE: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225B3C4: .word 0x0225F88C +_0225B3C8: .word 0x0225F7FC +_0225B3CC: .word 0x000004CC +_0225B3D0: .word 0x00000624 + + thumb_func_start MOD11_0225B3D4 +MOD11_0225B3D4: ; 0x0225B3D4 + cmp r0, #0 + bne _0225B3DC + ldr r0, _0225B42C ; =0x00070800 + bx lr +_0225B3DC: + cmp r1, r0 + bne _0225B3E4 + ldr r0, _0225B430 ; =0x00010200 + bx lr +_0225B3E4: + cmp r1, #2 + bgt _0225B3F0 + cmp r0, #1 + bne _0225B428 + ldr r0, _0225B434 ; =0x00050600 + bx lr +_0225B3F0: + cmp r1, #7 + bgt _0225B408 + cmp r0, #1 + beq _0225B3FE + cmp r0, #2 + beq _0225B402 + b _0225B428 +_0225B3FE: + ldr r0, _0225B434 ; =0x00050600 + bx lr +_0225B402: + mov r0, #0xc1 + lsl r0, r0, #0xa + bx lr +_0225B408: + asr r2, r1, #1 + lsr r2, r2, #0x1e + add r2, r1, r2 + asr r2, r2, #2 + cmp r0, r2 + bgt _0225B418 + ldr r0, _0225B434 ; =0x00050600 + bx lr +_0225B418: + lsr r2, r1, #0x1f + add r2, r1, r2 + asr r1, r2, #1 + cmp r0, r1 + bgt _0225B428 + mov r0, #0xc1 + lsl r0, r0, #0xa + bx lr +_0225B428: + ldr r0, _0225B430 ; =0x00010200 + bx lr + .align 2, 0 +_0225B42C: .word 0x00070800 +_0225B430: .word 0x00010200 +_0225B434: .word 0x00050600 + + thumb_func_start MOD11_0225B438 +MOD11_0225B438: ; 0x0225B438 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r0, [r0] + bl MOD11_0222FF68 + add r4, r0, #0 + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _0225B454 + cmp r0, #1 + beq _0225B4AA + b _0225B4D6 +_0225B454: + mov r2, #8 + ldrsh r1, [r5, r2] + ldr r0, _0225B528 ; =0x000018E7 + add r1, r1, r0 + strh r1, [r5, #8] + mov r1, #0xa + ldrsh r3, [r5, r1] + mov r1, #0xfa + lsl r1, r1, #2 + sub r1, r3, r1 + strh r1, [r5, #0xa] + ldrsh r1, [r5, r2] + lsl r0, r0, #2 + sub r0, r0, r1 + mov r1, #0x64 + blx _s32_div_f + strh r0, [r5, #0xc] + mov r0, #0xa + ldrsh r0, [r5, r0] + mov r1, #0x64 + neg r0, r0 + blx _s32_div_f + strh r0, [r5, #0xe] + mov r0, #8 + ldrsh r0, [r5, r0] + cmp r0, #0 + bge _0225B496 + mov r0, #0xa + ldrsh r0, [r5, r0] + cmp r0, #0 + bgt _0225B526 +_0225B496: + mov r1, #0 + strh r1, [r5, #8] + mov r0, #0x90 + strh r0, [r5, #0xa] + strh r1, [r5, #0xc] + strh r1, [r5, #0xe] + ldrb r0, [r5, #0x13] + add r0, r0, #1 + strb r0, [r5, #0x13] + pop {r4, r5, r6, pc} +_0225B4AA: + ldr r1, [r5] + ldr r0, _0225B52C ; =0x000006A2 + mov r2, #0 + strb r2, [r1, r0] + ldr r0, [r5, #4] + bl FUN_0200CAB4 + bl FUN_02015F1C + ldr r2, _0225B530 ; =0x04001000 + ldr r0, _0225B534 ; =0xFFFF1FFF + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, [r5] + mov r1, #1 + bl MOD11_0225B77C + ldrb r0, [r5, #0x13] + add r0, r0, #1 + strb r0, [r5, #0x13] + pop {r4, r5, r6, pc} +_0225B4D6: + ldr r0, [r5] + bl MOD11_0225B780 + cmp r0, #0 + beq _0225B526 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r2, #0 + add r0, r4, #0 + mov r1, #5 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #5 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl MOD11_022312AC + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0225B526: + pop {r4, r5, r6, pc} + .align 2, 0 +_0225B528: .word 0x000018E7 +_0225B52C: .word 0x000006A2 +_0225B530: .word 0x04001000 +_0225B534: .word 0xFFFF1FFF + + thumb_func_start MOD11_0225B538 +MOD11_0225B538: ; 0x0225B538 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5] + ldr r0, [r0] + bl MOD11_0222FF68 + add r6, r0, #0 + ldrb r0, [r5, #0x12] + cmp r0, #4 + bne _0225B586 + mov r0, #0xc + ldrsh r1, [r5, r0] + mov r0, #0xff + sub r3, r0, r1 + cmp r3, #0 + ble _0225B55A + mov r3, #0 +_0225B55A: + add r0, r6, #0 + mov r1, #4 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r4, [r5, r3] + mov r3, #0xff + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + sub r3, r3, r4 + bl FUN_020179E0 + mov r0, #8 + ldrsh r0, [r5, r0] + mov r1, #0x64 + neg r0, r0 + blx _s32_div_f + add r4, r0, #0 + b _0225B5B6 +_0225B586: + mov r0, #0xc + ldrsh r3, [r5, r0] + cmp r3, #0 + bge _0225B590 + mov r3, #0 +_0225B590: + add r0, r6, #0 + mov r1, #4 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r3, [r5, r3] + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #8 + ldrsh r0, [r5, r0] + mov r1, #0x64 + blx _s32_div_f + add r4, r0, #0 + add r4, #0xff +_0225B5B6: + add r0, r6, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r6, #0 + mov r1, #5 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r0, #0xa + ldrsh r0, [r5, r0] + mov r1, #0x64 + blx _s32_div_f + add r0, #0x90 + cmp r4, #0 + bge _0225B5E2 + mov r4, #0 + b _0225B5E8 +_0225B5E2: + cmp r4, #0xff + ble _0225B5E8 + mov r4, #0xff +_0225B5E8: + cmp r0, #0xc0 + ble _0225B5F0 + mov r0, #0xc0 + b _0225B5F6 +_0225B5F0: + cmp r0, #0 + bge _0225B5F6 + mov r0, #0 +_0225B5F6: + ldrb r1, [r5, #0x12] + cmp r1, #4 + bne _0225B60A + lsl r1, r4, #0x18 + ldr r2, _0225B63C ; =0x04001040 + lsr r1, r1, #0x18 + strh r1, [r2] + mov r1, #0x90 + strh r1, [r2, #4] + b _0225B620 +_0225B60A: + cmp r4, #0 + bne _0225B610 + mov r4, #1 +_0225B610: + mov r1, #0xff + lsl r2, r4, #8 + lsl r1, r1, #8 + and r1, r2 + ldr r2, _0225B63C ; =0x04001040 + strh r1, [r2] + mov r1, #0x90 + strh r1, [r2, #4] +_0225B620: + ldr r2, _0225B640 ; =0x04001042 + mov r1, #0xff + lsl r0, r0, #0x18 + strh r1, [r2] + lsr r1, r0, #0x18 + mov r0, #9 + lsl r0, r0, #0xc + orr r0, r1 + strh r0, [r2, #4] + mov r0, #0xe + ldrsh r0, [r5, r0] + strh r0, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_0225B63C: .word 0x04001040 +_0225B640: .word 0x04001042 + + thumb_func_start MOD11_0225B644 +MOD11_0225B644: ; 0x0225B644 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, _0225B6FC ; =0x04000006 + ldrh r0, [r0] + cmp r0, #0x90 + bne _0225B68E + ldr r0, [r4] + ldr r0, [r0] + bl MOD11_0222FF68 + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_020179E0 + mov r3, #0x10 + ldrsh r3, [r4, r3] + add r0, r5, #0 + mov r1, #4 + mov r2, #3 + bl FUN_020179E0 + mov r2, #0 + add r0, r5, #0 + mov r1, #5 + add r3, r2, #0 + bl FUN_020179E0 + mov r3, #0x10 + ldrsh r3, [r4, r3] + add r0, r5, #0 + mov r1, #5 + mov r2, #3 + bl FUN_020179E0 + pop {r4, r5, r6, pc} +_0225B68E: + cmp r0, #0xc0 + ble _0225B6F8 + ldr r0, [r4] + ldr r0, [r0] + bl MOD11_0222FF68 + ldrb r1, [r4, #0x12] + add r5, r0, #0 + cmp r1, #4 + bne _0225B6C6 + mov r3, #0xc + ldrsh r6, [r4, r3] + mov r3, #0xff + mov r1, #4 + mov r2, #0 + sub r3, r3, r6 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r4, [r4, r3] + mov r3, #0xff + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + sub r3, r3, r4 + bl FUN_020179E0 + b _0225B6E0 +_0225B6C6: + mov r3, #0xc + ldrsh r3, [r4, r3] + mov r1, #4 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0xc + ldrsh r3, [r4, r3] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 +_0225B6E0: + add r0, r5, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r5, #0 + mov r1, #5 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 +_0225B6F8: + pop {r4, r5, r6, pc} + nop +_0225B6FC: .word 0x04000006 + + thumb_func_start MOD11_0225B700 +MOD11_0225B700: ; 0x0225B700 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, _0225B760 ; =0x0000069F + ldr r2, _0225B764 ; =0x0225FAAC + ldrsb r1, [r1, r0] + mov r0, #0x30 + ldr r7, _0225B768 ; =0x0000FFFF + mul r0, r1 + add r6, r2, r0 + mov r4, #0 + add r5, r6, #0 +_0225B716: + ldrh r0, [r5, #4] + cmp r0, r7 + bne _0225B72A + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0 + bl FUN_0201797C + b _0225B736 +_0225B72A: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_0225B736: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0225B716 + mov r4, #0 +_0225B740: + ldrh r1, [r6, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r6, r6, #2 + cmp r4, #4 + blt _0225B740 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225B760: .word 0x0000069F +_0225B764: .word 0x0225FAAC +_0225B768: .word 0x0000FFFF + + thumb_func_start MOD11_0225B76C +MOD11_0225B76C: ; 0x0225B76C + push {r4, lr} + add r4, r0, #0 + bl MOD11_0225AC60 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD11_0225B77C +MOD11_0225B77C: ; 0x0225B77C + bx lr + .align 2, 0 + + thumb_func_start MOD11_0225B780 +MOD11_0225B780: ; 0x0225B780 + ldr r1, _0225B790 ; =0x00000698 + ldr r0, [r0, r1] + cmp r0, #0 + bne _0225B78C + mov r0, #1 + bx lr +_0225B78C: + mov r0, #0 + bx lr + .align 2, 0 +_0225B790: .word 0x00000698 + + thumb_func_start MOD11_0225B794 +MOD11_0225B794: ; 0x0225B794 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + ldr r0, [r5] + bl MOD11_022300CC + add r4, r0, #0 + bl FUN_020038E4 + cmp r0, #0 + bne _0225B814 + ldr r0, _0225B818 ; =0x000006AA + mov r1, #1 + ldrsh r0, [r5, r0] + add r2, r1, #0 + add r3, r1, #0 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _0225B81C ; =0x00007FFF + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_020039E8 + ldr r1, _0225B820 ; =0x000006A8 +_0225B7C8: + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0225B7DA + add r0, r1, #2 + ldrsh r2, [r5, r0] + mov r0, #2 + lsl r0, r0, #8 + add r2, r2, r0 + b _0225B7E4 +_0225B7DA: + add r0, r1, #2 + ldrsh r2, [r5, r0] + mov r0, #2 + lsl r0, r0, #8 + sub r2, r2, r0 +_0225B7E4: + add r0, r1, #2 + strh r2, [r5, r0] + ldr r0, _0225B818 ; =0x000006AA + mov r1, #0x11 + ldrsh r2, [r5, r0] + lsl r1, r1, #8 + cmp r2, r1 + blt _0225B804 + mov r1, #0xf + lsl r1, r1, #8 + strh r1, [r5, r0] + mov r1, #1 + sub r0, r0, #2 + add sp, #8 + strb r1, [r5, r0] + pop {r3, r4, r5, pc} +_0225B804: + cmp r2, #0 + bgt _0225B814 + mov r1, #1 + lsl r1, r1, #8 + strh r1, [r5, r0] + mov r1, #0 + sub r0, r0, #2 + strb r1, [r5, r0] +_0225B814: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0225B818: .word 0x000006AA +_0225B81C: .word 0x00007FFF +_0225B820: .word 0x000006A8 + + thumb_func_start MOD11_0225B824 +MOD11_0225B824: ; 0x0225B824 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + bl FUN_02002BD4 + add r6, r0, #0 + bl FUN_02002BF4 + add r7, r0, #0 + bl FUN_02002BE4 + bl FUN_02002C04 + ldr r0, [r5] + bl MOD11_022300CC + add r4, r0, #0 + bl FUN_020038E4 + cmp r0, #0 + bne _0225B8A8 + add r0, r4, #0 + mov r1, #1 + bl FUN_02003204 + add r4, r0, #0 + ldr r0, _0225B8AC ; =0x021C48F8 + ldrh r0, [r0, #0x22] + cmp r0, #0 + beq _0225B888 + cmp r6, #1 + beq _0225B866 + cmp r7, #1 + bne _0225B888 +_0225B866: + ldr r1, [r5, #0x5c] + add r0, r4, #0 + add r0, #0x16 + add r1, #0x16 + mov r2, #0xa + blx memcmp + cmp r0, #0 + bne _0225B8A8 + ldr r0, [r5, #0x60] + add r4, #0x16 + add r0, #0x16 + add r1, r4, #0 + mov r2, #0xa + blx MIi_CpuCopy16 + pop {r3, r4, r5, r6, r7, pc} +_0225B888: + ldr r1, [r5, #0x60] + add r0, r4, #0 + add r0, #0x16 + add r1, #0x16 + mov r2, #0xa + blx memcmp + cmp r0, #0 + bne _0225B8A8 + ldr r0, [r5, #0x5c] + add r4, #0x16 + add r0, #0x16 + add r1, r4, #0 + mov r2, #0xa + blx MIi_CpuCopy16 +_0225B8A8: + pop {r3, r4, r5, r6, r7, pc} + nop +_0225B8AC: .word 0x021C48F8 + + thumb_func_start MOD11_0225B8B0 +MOD11_0225B8B0: ; 0x0225B8B0 + push {r4, r5, r6, lr} + mov r6, #0x6f + lsl r6, r6, #4 + add r2, r6, #0 + add r5, r0, #0 + sub r2, #0x51 + ldrsb r2, [r5, r2] + ldr r1, _0225B914 ; =0x0225FAAC + mov r3, #0x30 + add r4, r2, #0 + mul r4, r3 + add r4, r1, r4 + ldr r2, [r4, #0x20] + cmp r2, #0 + bne _0225B8D4 + sub r3, #0x31 + add r0, r3, #0 + pop {r4, r5, r6, pc} +_0225B8D4: + ldrb r1, [r5, r6] + cmp r1, #0 + bne _0225B90C + add r0, r6, #4 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _0225B8EC + ldr r1, _0225B918 ; =0x021C48B8 + ldr r2, [r1, #0x48] + ldr r1, _0225B91C ; =0x00000CF3 + tst r1, r2 + beq _0225B906 +_0225B8EC: + cmp r0, #0 + bne _0225B8F6 + ldr r0, _0225B920 ; =0x000005DC + bl FUN_020054C8 +_0225B8F6: + mov r1, #1 + ldr r0, _0225B924 ; =0x000006F4 + strb r1, [r5, r6] + mov r2, #0 + strb r2, [r5, r0] + ldr r2, [r4, #0x20] + add r0, r5, #0 + blx r2 +_0225B906: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_0225B90C: + mov r1, #0 + blx r2 + pop {r4, r5, r6, pc} + nop +_0225B914: .word 0x0225FAAC +_0225B918: .word 0x021C48B8 +_0225B91C: .word 0x00000CF3 +_0225B920: .word 0x000005DC +_0225B924: .word 0x000006F4 + + thumb_func_start MOD11_0225B928 +MOD11_0225B928: ; 0x0225B928 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp, #8] + mov r1, #0x6f + lsl r1, r1, #4 + add r6, r0, #0 + add r2, r1, #0 + sub r2, #0x51 + ldrsb r3, [r6, r2] + add r4, r6, r1 + mov r2, #0x30 + sub r1, #0x52 + ldr r0, _0225BAE8 ; =0x0225FAAC + mul r2, r3 + add r7, r0, r2 + ldrb r1, [r6, r1] + ldr r0, [r6] + bl MOD11_0223022C + add r1, r0, #0 + ldr r0, [r6] + bl MOD11_0222FF7C + bl MOD11_02253A74 + ldr r1, [sp, #8] + cmp r1, #1 + bne _0225B9AE + mov r1, #0 + ldrsb r1, [r0, r1] + ldr r2, _0225BAEC ; =0x0225F698 + strb r1, [r4, #2] + mov r1, #1 + ldrsb r0, [r0, r1] + strb r0, [r4, #1] + ldrsb r1, [r4, r1] + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r7, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + ldr r0, _0225BAF0 ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0225B9AE: + ldr r0, _0225BAF4 ; =0x0000069F + ldrsb r0, [r6, r0] + cmp r0, #5 + beq _0225B9BA + cmp r0, #6 + bne _0225B9CA +_0225B9BA: + mov r1, #1 + ldr r3, _0225BAEC ; =0x0225F698 + add r0, r4, #0 + add r2, r1, #0 + bl MOD11_0225C574 + add r5, r0, #0 + b _0225BA34 +_0225B9CA: + mov r0, #1 + ldrsb r1, [r4, r0] + lsl r0, r1, #1 + add r2, r1, r0 + mov r0, #2 + ldr r1, _0225BAEC ; =0x0225F698 + ldrsb r0, [r4, r0] + add r1, r1, r2 + ldrb r0, [r0, r1] + str r0, [sp, #0xc] + cmp r0, #3 + bne _0225B9EC + ldr r0, _0225BAF8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x40 + tst r0, r1 + bne _0225BA34 +_0225B9EC: + ldr r3, _0225BAEC ; =0x0225F698 + add r0, r4, #0 + mov r1, #3 + mov r2, #2 + bl MOD11_0225C574 + add r5, r0, #0 + bne _0225BA34 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0225BA34 + ldr r0, _0225BAF8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _0225BA1E + mov r0, #0 + strb r0, [r4, #2] + mov r0, #1 + strb r0, [r4, #1] + ldr r0, _0225BAFC ; =0x000005DC + bl FUN_020054C8 + mov r5, #0x20 + b _0225BA34 +_0225BA1E: + mov r0, #0x10 + tst r0, r1 + beq _0225BA34 + mov r0, #2 + strb r0, [r4, #2] + mov r0, #1 + strb r0, [r4, #1] + ldr r0, _0225BAFC ; =0x000005DC + bl FUN_020054C8 + mov r5, #0x10 +_0225BA34: + cmp r5, #0x20 + bhi _0225BA50 + bhs _0225BA5C + cmp r5, #2 + bhi _0225BA4A + cmp r5, #1 + blo _0225BAE0 + beq _0225BA9A + cmp r5, #2 + beq _0225BAB0 + b _0225BAE0 +_0225BA4A: + cmp r5, #0x10 + beq _0225BA5C + b _0225BAE0 +_0225BA50: + cmp r5, #0x40 + bhi _0225BA58 + beq _0225BA5C + b _0225BAE0 +_0225BA58: + cmp r5, #0x80 + bne _0225BAE0 +_0225BA5C: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _0225BAEC ; =0x0225F698 + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r7, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + ldr r0, _0225BAF0 ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + b _0225BAE0 +_0225BA9A: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _0225BAEC ; =0x0225F698 + add sp, #0x10 + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_0225BAB0: + ldr r0, _0225BB00 ; =0x000006A3 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _0225BAE0 + mov r0, #0 + add r2, r0, #0 + mov r3, #1 + ldr r1, [r7, #0x18] + ldr r5, [r7, #0x14] + b _0225BACE +_0225BAC4: + lsl r4, r0, #2 + ldr r4, [r1, r4] + cmp r4, #4 + beq _0225BAE4 + add r0, r0, #1 +_0225BACE: + lsl r4, r0, #2 + ldrb r4, [r5, r4] + cmp r0, r4 + bge _0225BADA + add r4, r3, #0 + b _0225BADC +_0225BADA: + add r4, r2, #0 +_0225BADC: + cmp r4, #0xff + bne _0225BAC4 +_0225BAE0: + mov r0, #0 + mvn r0, r0 +_0225BAE4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225BAE8: .word 0x0225FAAC +_0225BAEC: .word 0x0225F698 +_0225BAF0: .word 0x000006EC +_0225BAF4: .word 0x0000069F +_0225BAF8: .word 0x021C48B8 +_0225BAFC: .word 0x000005DC +_0225BB00: .word 0x000006A3 + + thumb_func_start MOD11_0225BB04 +MOD11_0225BB04: ; 0x0225BB04 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, _0225BB60 ; =0x0000069E + ldr r0, [r5] + ldrb r1, [r5, r1] + bl MOD11_0223022C + add r6, r0, #0 + cmp r4, #3 + bne _0225BB26 + ldr r0, [r5] + add r1, r6, #0 + bl MOD11_02230CB8 + cmp r0, #0 + bne _0225BB5C +_0225BB26: + ldr r0, [r5] + add r1, r6, #0 + bl MOD11_0222FF7C + bl MOD11_02253A74 + mov r5, #0 + ldr r1, _0225BB64 ; =0x0225F698 + add r2, r5, #0 + b _0225BB58 +_0225BB3A: + lsl r6, r5, #1 + add r6, r5, r6 + add r3, r2, #0 + add r7, r1, r6 + b _0225BB52 +_0225BB44: + ldrb r6, [r3, r7] + cmp r4, r6 + bne _0225BB50 + strb r3, [r0] + strb r5, [r0, #1] + pop {r3, r4, r5, r6, r7, pc} +_0225BB50: + add r3, r3, #1 +_0225BB52: + cmp r3, #3 + blt _0225BB44 + add r5, r5, #1 +_0225BB58: + cmp r5, #2 + blt _0225BB3A +_0225BB5C: + pop {r3, r4, r5, r6, r7, pc} + nop +_0225BB60: .word 0x0000069E +_0225BB64: .word 0x0225F698 + + thumb_func_start MOD11_0225BB68 +MOD11_0225BB68: ; 0x0225BB68 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0x6f + lsl r0, r0, #4 + add r3, r0, #0 + sub r3, #0x51 + ldrsb r5, [r6, r3] + mov r3, #0x30 + ldr r2, _0225BC54 ; =0x0225FAAC + mul r3, r5 + add r4, r6, r0 + add r5, r2, r3 + cmp r1, #1 + bne _0225BBCC + mov r1, #0 + strb r1, [r4, #2] + strb r1, [r4, #1] + mov r1, #1 + ldrsb r2, [r4, r1] + mov r3, #2 + ldr r1, _0225BC58 ; =0x0225F688 + ldrsb r3, [r4, r3] + add r1, r1, r2 + sub r0, r0, #4 + ldrb r2, [r3, r1] + ldr r1, [r5, #0x14] + lsl r3, r2, #2 + add r1, r1, r3 + ldrb r1, [r1, #1] + sub r1, #8 + str r1, [sp] + mov r1, #0x11 + lsl r1, r1, #0x10 + str r1, [sp, #4] + ldr r4, [r5, #0x14] + ldr r0, [r6, r0] + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, r5, r6, pc} +_0225BBCC: + ldr r3, _0225BC58 ; =0x0225F688 + add r0, r4, #0 + mov r1, #1 + mov r2, #2 + bl MOD11_0225C574 + cmp r0, #0x20 + bhi _0225BBF2 + bhs _0225BBFE + cmp r0, #2 + bhi _0225BBEC + cmp r0, #1 + blo _0225BC4A + beq _0225BC38 + cmp r0, #2 + b _0225BC4A +_0225BBEC: + cmp r0, #0x10 + beq _0225BBFE + b _0225BC4A +_0225BBF2: + cmp r0, #0x40 + bhi _0225BBFA + beq _0225BBFE + b _0225BC4A +_0225BBFA: + cmp r0, #0x80 + bne _0225BC4A +_0225BBFE: + mov r0, #1 + ldrsb r3, [r4, r0] + mov r0, #2 + ldr r2, _0225BC58 ; =0x0225F688 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r5, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r5, #0x14] + ldr r0, _0225BC5C ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + b _0225BC4A +_0225BC38: + mov r0, #1 + ldrsb r3, [r4, r0] + mov r0, #2 + ldr r2, _0225BC58 ; =0x0225F688 + ldrsb r1, [r4, r0] + add r0, r2, r3 + add sp, #8 + ldrb r0, [r1, r0] + pop {r4, r5, r6, pc} +_0225BC4A: + mov r0, #0 + mvn r0, r0 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_0225BC54: .word 0x0225FAAC +_0225BC58: .word 0x0225F688 +_0225BC5C: .word 0x000006EC + + thumb_func_start MOD11_0225BC60 +MOD11_0225BC60: ; 0x0225BC60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + add r5, r0, #0 + ldr r1, _0225BDD0 ; =0x0000069E + ldr r0, [r5] + ldrb r1, [r5, r1] + bl MOD11_0223022C + add r1, r0, #0 + ldr r0, [r5] + bl MOD11_0222FF7C + bl MOD11_02253A74 + mov r1, #0x6f + lsl r1, r1, #4 + add r4, r5, r1 + sub r1, #0x51 + ldrsb r2, [r5, r1] + add r3, r0, #0 + mov r1, #0x30 + mul r1, r2 + ldr r0, _0225BDD4 ; =0x0225FAAC + add r2, r5, #0 + add r6, r0, r1 + add r2, #0x18 + cmp r7, #1 + bne _0225BD10 + mov r0, #2 + ldrsb r0, [r3, r0] + strb r0, [r4, #2] + mov r0, #3 + ldrsb r0, [r3, r0] + strb r0, [r4, #1] + mov r0, #1 + ldrsb r0, [r4, r0] + lsl r1, r0, #1 + mov r0, #2 + ldrsb r7, [r4, r0] + ldr r0, _0225BDD8 ; =0x0225F6A0 + add r0, r0, r1 + ldrb r0, [r7, r0] + cmp r0, #0 + beq _0225BCDE + sub r1, r0, #1 + lsl r1, r1, #1 + ldrh r1, [r2, r1] + cmp r1, #0 + bne _0225BCDE + mov r0, #0 + strb r0, [r3, #2] + strb r0, [r3, #3] + strb r0, [r4, #2] + strb r0, [r4, #1] + mov r0, #1 + ldrsb r0, [r4, r0] + lsl r2, r0, #1 + mov r0, #2 + ldrsb r1, [r4, r0] + ldr r0, _0225BDD8 ; =0x0225F6A0 + add r0, r0, r2 + ldrb r0, [r1, r0] +_0225BCDE: + ldr r1, [r6, #0x14] + lsl r3, r0, #2 + add r0, r1, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + ldr r0, _0225BDDC ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0225BD10: + ldr r0, _0225BDD8 ; =0x0225F6A0 + add r1, sp, #8 + mov r2, #6 + blx MI_CpuCopy8 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + add r3, sp, #8 + bl MOD11_0225C574 + cmp r0, #0x20 + bhi _0225BD42 + bhs _0225BD4E + cmp r0, #2 + bhi _0225BD3C + cmp r0, #1 + blo _0225BDC6 + beq _0225BD8A + cmp r0, #2 + beq _0225BD9E + b _0225BDC6 +_0225BD3C: + cmp r0, #0x10 + beq _0225BD4E + b _0225BDC6 +_0225BD42: + cmp r0, #0x40 + bhi _0225BD4A + beq _0225BD4E + b _0225BDC6 +_0225BD4A: + cmp r0, #0x80 + bne _0225BDC6 +_0225BD4E: + mov r0, #1 + ldrsb r0, [r4, r0] + ldr r2, _0225BDD8 ; =0x0225F6A0 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + ldr r0, _0225BDDC ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + b _0225BDC6 +_0225BD8A: + mov r0, #1 + ldrsb r0, [r4, r0] + ldr r2, _0225BDD8 ; =0x0225F6A0 + add sp, #0x10 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_0225BD9E: + mov r0, #0 + add r2, r0, #0 + mov r3, #1 + ldr r1, [r6, #0x18] + ldr r5, [r6, #0x14] + b _0225BDB4 +_0225BDAA: + lsl r4, r0, #2 + ldr r4, [r1, r4] + cmp r4, #0xff + beq _0225BDCA + add r0, r0, #1 +_0225BDB4: + lsl r4, r0, #2 + ldrb r4, [r5, r4] + cmp r0, r4 + bge _0225BDC0 + add r4, r3, #0 + b _0225BDC2 +_0225BDC0: + add r4, r2, #0 +_0225BDC2: + cmp r4, #0xff + bne _0225BDAA +_0225BDC6: + mov r0, #0 + mvn r0, r0 +_0225BDCA: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225BDD0: .word 0x0000069E +_0225BDD4: .word 0x0225FAAC +_0225BDD8: .word 0x0225F6A0 +_0225BDDC: .word 0x000006EC + + thumb_func_start MOD11_0225BDE0 +MOD11_0225BDE0: ; 0x0225BDE0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + beq _0225BE26 + ldr r1, _0225BE28 ; =0x0000069E + ldr r0, [r5] + ldrb r1, [r5, r1] + bl MOD11_0223022C + add r1, r0, #0 + ldr r0, [r5] + bl MOD11_0222FF7C + bl MOD11_02253A74 + mov r3, #0 + ldr r7, _0225BE2C ; =0x0225F6A0 + add r1, r3, #0 + b _0225BE22 +_0225BE06: + lsl r5, r3, #1 + add r2, r1, #0 + add r6, r7, r5 + b _0225BE1C +_0225BE0E: + ldrb r5, [r2, r6] + cmp r4, r5 + bne _0225BE1A + strb r2, [r0, #2] + strb r3, [r0, #3] + pop {r3, r4, r5, r6, r7, pc} +_0225BE1A: + add r2, r2, #1 +_0225BE1C: + cmp r2, #2 + blt _0225BE0E + add r3, r3, #1 +_0225BE22: + cmp r3, #3 + blt _0225BE06 +_0225BE26: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225BE28: .word 0x0000069E +_0225BE2C: .word 0x0225F6A0 + + thumb_func_start MOD11_0225BE30 +MOD11_0225BE30: ; 0x0225BE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + str r1, [sp, #0x18] + add r6, r0, #0 + ldr r1, _0225C134 ; =0x0000069E + mov r0, #0 + str r0, [sp, #0x44] + ldrb r1, [r6, r1] + ldr r0, [r6] + bl MOD11_0223022C + add r1, r0, #0 + ldr r0, [r6] + bl MOD11_0222FF7C + bl MOD11_02253A74 + mov r1, #0x6f + lsl r1, r1, #4 + add r7, r6, r1 + sub r1, #0x51 + ldrsb r2, [r6, r1] + str r0, [sp, #0x1c] + mov r1, #0x30 + mul r1, r2 + ldr r0, _0225C138 ; =0x0225FAAC + mov r2, #6 + add r0, r0, r1 + str r0, [sp, #0x48] + ldr r0, _0225C13C ; =0x0225F690 + add r1, sp, #0x50 + blx MI_CpuCopy8 + add r1, sp, #0x58 + add r0, r6, #0 + add r1, #2 + mov r2, #1 + bl MOD11_0225ACD4 + add r1, sp, #0x54 + add r0, r6, #0 + add r1, #2 + mov r2, #0 + bl MOD11_0225ACD4 + add r0, sp, #0x54 + mov r2, #0 + mov r4, #0xff + add r0, #2 + b _0225BEB0 +_0225BE94: + lsl r5, r2, #1 + add r1, sp, #0x50 + mov r3, #0 + add r1, r1, r5 + b _0225BEAA +_0225BE9E: + ldrb r5, [r3, r1] + ldrb r5, [r0, r5] + cmp r5, #0 + bne _0225BEA8 + strb r4, [r3, r1] +_0225BEA8: + add r3, r3, #1 +_0225BEAA: + cmp r3, #2 + blt _0225BE9E + add r2, r2, #1 +_0225BEB0: + cmp r2, #2 + blt _0225BE94 + mov r0, #0x6a + lsl r0, r0, #4 + ldrb r0, [r6, r0] + cmp r0, #0xb + bhi _0225BEE2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225BECA: ; jump table + .short _0225BEE2 - _0225BECA - 2 ; case 0 + .short _0225BEEC - _0225BECA - 2 ; case 1 + .short _0225BEEC - _0225BECA - 2 ; case 2 + .short _0225BEEC - _0225BECA - 2 ; case 3 + .short _0225BEE2 - _0225BECA - 2 ; case 4 + .short _0225BEEC - _0225BECA - 2 ; case 5 + .short _0225BEE2 - _0225BECA - 2 ; case 6 + .short _0225BEEC - _0225BECA - 2 ; case 7 + .short _0225BEE2 - _0225BECA - 2 ; case 8 + .short _0225BEE2 - _0225BECA - 2 ; case 9 + .short _0225BEE2 - _0225BECA - 2 ; case 10 + .short _0225BEE2 - _0225BECA - 2 ; case 11 +_0225BEE2: + mov r0, #2 + mov ip, r0 + mov r0, #3 + str r0, [sp, #0x4c] + b _0225C0C6 +_0225BEEC: + mov r0, #1 + str r0, [sp, #0x44] + mov ip, r0 + mov r0, #2 + str r0, [sp, #0x4c] + add r0, sp, #0x50 + ldrb r1, [r0, #9] + cmp r1, #1 + bne _0225BF26 + ldrb r0, [r0, #7] + cmp r0, #1 + bne _0225BF26 + ldr r0, [sp, #0x48] + ldr r1, [r0, #0x14] + ldrb r0, [r1, #0xe] + ldrb r2, [r1, #0xd] + str r0, [sp, #0x34] + add r0, #8 + str r0, [sp, #0x34] + ldrb r0, [r1, #7] + sub r2, #8 + str r0, [sp, #0x30] + sub r0, #8 + str r0, [sp, #0x30] + ldrb r0, [r1, #0xc] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] + b _0225BF92 +_0225BF26: + add r0, sp, #0x50 + ldrb r1, [r0, #9] + cmp r1, #1 + bne _0225BF56 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _0225BF56 + ldr r0, [sp, #0x48] + ldr r1, [r0, #0x14] + ldrb r0, [r1, #0xe] + ldrb r2, [r1, #0xd] + str r0, [sp, #0x34] + add r0, #8 + str r0, [sp, #0x34] + ldrb r0, [r1, #0xf] + sub r2, #8 + str r0, [sp, #0x30] + sub r0, #8 + str r0, [sp, #0x30] + ldrb r0, [r1, #0xc] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] + b _0225BF92 +_0225BF56: + add r0, sp, #0x50 + ldrb r1, [r0, #9] + cmp r1, #0 + bne _0225BF86 + ldrb r0, [r0, #7] + cmp r0, #1 + bne _0225BF86 + ldr r0, [sp, #0x48] + ldr r1, [r0, #0x14] + ldrb r0, [r1, #6] + ldrb r2, [r1, #5] + str r0, [sp, #0x34] + add r0, #8 + str r0, [sp, #0x34] + ldrb r0, [r1, #7] + sub r2, #8 + str r0, [sp, #0x30] + sub r0, #8 + str r0, [sp, #0x30] + ldrb r0, [r1, #4] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] + b _0225BF92 +_0225BF86: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x38] + add r2, r0, #0 +_0225BF92: + add r0, sp, #0x50 + ldrb r1, [r0, #6] + cmp r1, #1 + bne _0225BFBA + ldrb r0, [r0, #8] + cmp r0, #1 + bne _0225BFBA + ldr r0, [sp, #0x48] + ldr r0, [r0, #0x14] + ldrb r3, [r0, #2] + ldrb r4, [r0, #0xb] + ldrb r5, [r0] + ldrb r0, [r0, #1] + add r3, #8 + sub r4, #8 + str r0, [sp, #0x2c] + sub r0, #8 + add r5, #8 + str r0, [sp, #0x2c] + b _0225C014 +_0225BFBA: + add r0, sp, #0x50 + ldrb r1, [r0, #6] + cmp r1, #1 + bne _0225BFE2 + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0225BFE2 + ldr r0, [sp, #0x48] + ldr r0, [r0, #0x14] + ldrb r3, [r0, #2] + ldrb r4, [r0, #3] + ldrb r5, [r0] + ldrb r0, [r0, #1] + add r3, #8 + sub r4, #8 + str r0, [sp, #0x2c] + sub r0, #8 + add r5, #8 + str r0, [sp, #0x2c] + b _0225C014 +_0225BFE2: + add r0, sp, #0x50 + ldrb r1, [r0, #6] + cmp r1, #0 + bne _0225C00A + ldrb r0, [r0, #8] + cmp r0, #1 + bne _0225C00A + ldr r0, [sp, #0x48] + ldr r0, [r0, #0x14] + ldrb r3, [r0, #0xa] + ldrb r4, [r0, #0xb] + ldrb r5, [r0, #8] + ldrb r0, [r0, #9] + add r3, #8 + sub r4, #8 + str r0, [sp, #0x2c] + sub r0, #8 + add r5, #8 + str r0, [sp, #0x2c] + b _0225C014 +_0225C00A: + mov r3, #0 + mvn r3, r3 + add r4, r3, #0 + add r5, r3, #0 + str r3, [sp, #0x2c] +_0225C014: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x40] + str r0, [sp, #0x3c] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + ldr r0, [sp, #0x34] + cmp r0, r3 + beq _0225C04A + add r1, r0, #0 + ldr r0, [sp, #0x40] + cmp r1, r0 + beq _0225C032 + cmp r3, r0 + beq _0225C04A +_0225C032: + mov r1, #0 + ldr r0, [sp, #0x34] + mvn r1, r1 + cmp r0, r1 + bne _0225C044 + cmp r3, r1 + beq _0225C044 + str r3, [sp, #0x34] + b _0225C04A +_0225C044: + mov r0, #2 + str r3, [sp, #0x40] + str r0, [sp, #0x20] +_0225C04A: + ldr r0, [sp, #0x30] + cmp r0, r4 + beq _0225C074 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0225C05C + cmp r4, r1 + beq _0225C074 +_0225C05C: + mov r1, #0 + ldr r0, [sp, #0x30] + mvn r1, r1 + cmp r0, r1 + bne _0225C06E + cmp r4, r1 + beq _0225C06E + str r4, [sp, #0x30] + b _0225C074 +_0225C06E: + mov r0, #3 + str r4, [sp, #0x40] + str r0, [sp, #0x20] +_0225C074: + mov r1, #0 + ldr r0, [sp, #0x38] + mvn r1, r1 + cmp r0, r1 + beq _0225C082 + cmp r5, r1 + beq _0225C096 +_0225C082: + mov r1, #0 + ldr r0, [sp, #0x38] + mvn r1, r1 + cmp r0, r1 + bne _0225C094 + cmp r5, r1 + beq _0225C094 + str r5, [sp, #0x38] + b _0225C096 +_0225C094: + str r2, [sp, #0x3c] +_0225C096: + mov r1, #0 + mvn r1, r1 + cmp r2, r1 + beq _0225C0A8 + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _0225C0A8 + str r2, [sp, #0x2c] + b _0225C0C6 +_0225C0A8: + mov r1, #0 + mvn r1, r1 + cmp r2, r1 + bne _0225C0B6 + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _0225C0C6 +_0225C0B6: + ldr r0, [sp, #0x2c] + str r0, [sp, #0x3c] + ldr r0, [sp, #0x20] + cmp r0, #2 + bne _0225C0C4 + str r2, [sp, #0x24] + b _0225C0C6 +_0225C0C4: + str r2, [sp, #0x28] +_0225C0C6: + ldr r0, [sp, #0x18] + cmp r0, #1 + beq _0225C0CE + b _0225C236 +_0225C0CE: + ldr r0, [sp, #0x44] + cmp r0, #0 + bne _0225C17A + ldr r0, [sp, #0x1c] + mov r1, #6 + ldrsb r1, [r0, r1] + mov r0, #0x6a + lsl r0, r0, #4 + ldrb r0, [r6, r0] + cmp r1, r0 + bne _0225C0F6 + ldr r0, [sp, #0x1c] + mov r1, #4 + ldrsb r0, [r0, r1] + mov r1, #5 + strb r0, [r7, #2] + ldr r0, [sp, #0x1c] + ldrsb r0, [r0, r1] + strb r0, [r7, #1] + b _0225C12C +_0225C0F6: + add r0, sp, #0x50 + ldrb r1, [r0, #0xd] + cmp r1, #1 + bne _0225C106 + mov r0, #0 + strb r0, [r7, #2] + strb r0, [r7, #1] + b _0225C12C +_0225C106: + ldrb r1, [r0, #0xb] + cmp r1, #1 + bne _0225C116 + mov r0, #1 + strb r0, [r7, #2] + mov r0, #0 + strb r0, [r7, #1] + b _0225C12C +_0225C116: + ldrb r0, [r0, #0xa] + cmp r0, #1 + bne _0225C126 + mov r0, #0 + strb r0, [r7, #2] + mov r0, #1 + strb r0, [r7, #1] + b _0225C12C +_0225C126: + mov r0, #1 + strb r0, [r7, #2] + strb r0, [r7, #1] +_0225C12C: + mov r0, #1 + ldrsb r0, [r7, r0] + ldr r2, _0225C13C ; =0x0225F690 + b _0225C140 + .align 2, 0 +_0225C134: .word 0x0000069E +_0225C138: .word 0x0225FAAC +_0225C13C: .word 0x0225F690 +_0225C140: + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r7, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x48] + lsl r3, r1, #2 + ldr r0, [r0, #0x14] + ldr r1, [sp, #0x48] + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r1, #0x14] + ldr r0, _0225C418 ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + b _0225C22E +_0225C17A: + mov r2, #0 + strb r2, [r7, #2] + ldr r0, [sp, #0x24] + sub r1, r2, #1 + strb r2, [r7, #1] + cmp r0, r1 + bne _0225C18E + ldr r0, [sp, #0x28] + cmp r0, r1 + beq _0225C198 +_0225C18E: + mov r1, #0 + ldr r0, [sp, #0x40] + mvn r1, r1 + cmp r0, r1 + bne _0225C1B2 +_0225C198: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x34] + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, _0225C418 ; =0x000006EC + ldr r2, [sp, #0x30] + ldr r0, [r6, r0] + ldr r3, [sp, #0x38] + bl MOD11_0225D5FC + b _0225C210 +_0225C1B2: + ldr r0, [sp, #0x24] + cmp r0, r1 + beq _0225C1E8 + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _0225C1E8 + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x38] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x30] + str r0, [sp, #8] + ldr r0, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x10] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, _0225C418 ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D52C + b _0225C210 +_0225C1E8: + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x38] + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + ldr r3, [sp, #0x30] + str r0, [sp, #8] + ldr r0, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, [sp, #0x28] + str r0, [sp, #0x10] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, _0225C418 ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D52C +_0225C210: + mov r1, #0 + ldr r0, [sp, #0x40] + mvn r1, r1 + cmp r0, r1 + beq _0225C22E + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, _0225C418 ; =0x000006EC + ldr r1, [sp, #0x40] + ldr r0, [r6, r0] + ldr r2, [sp, #0x3c] + ldr r3, [sp, #0x20] + bl MOD11_0225D620 +_0225C22E: + mov r0, #0 + add sp, #0x60 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0225C236: + ldr r0, [sp, #0x44] + cmp r0, #0 + bne _0225C24A + ldr r2, [sp, #0x4c] + add r0, r7, #0 + mov r1, ip + add r3, sp, #0x50 + bl MOD11_0225C574 + b _0225C256 +_0225C24A: + ldr r2, [sp, #0x4c] + add r0, r7, #0 + mov r1, ip + mov r3, #0 + bl MOD11_0225C574 +_0225C256: + cmp r0, #0x20 + bhi _0225C276 + bhs _0225C284 + cmp r0, #2 + bhi _0225C270 + cmp r0, #1 + blo _0225C26E + bne _0225C268 + b _0225C3BE +_0225C268: + cmp r0, #2 + bne _0225C26E + b _0225C40A +_0225C26E: + b _0225C410 +_0225C270: + cmp r0, #0x10 + beq _0225C284 + b _0225C410 +_0225C276: + cmp r0, #0x40 + bhi _0225C27E + beq _0225C284 + b _0225C410 +_0225C27E: + cmp r0, #0x80 + beq _0225C284 + b _0225C410 +_0225C284: + ldr r0, [sp, #0x44] + cmp r0, #0 + bne _0225C2CA + mov r0, #1 + ldrsb r0, [r7, r0] + ldr r2, _0225C41C ; =0x0225F690 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r7, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x48] + lsl r3, r1, #2 + ldr r0, [r0, #0x14] + ldr r1, [sp, #0x48] + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r1, #0x14] + ldr r0, _0225C418 ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + b _0225C410 +_0225C2CA: + mov r2, #1 + ldrsb r0, [r7, r2] + cmp r0, #0 + bne _0225C38C + ldr r0, [sp, #0x28] + sub r1, r2, #2 + cmp r0, r1 + bne _0225C2E0 + ldr r0, [sp, #0x24] + cmp r0, r1 + beq _0225C2EA +_0225C2E0: + mov r1, #0 + ldr r0, [sp, #0x40] + mvn r1, r1 + cmp r0, r1 + bne _0225C304 +_0225C2EA: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x34] + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, _0225C418 ; =0x000006EC + ldr r2, [sp, #0x30] + ldr r0, [r6, r0] + ldr r3, [sp, #0x38] + bl MOD11_0225D5FC + b _0225C362 +_0225C304: + ldr r0, [sp, #0x24] + cmp r0, r1 + beq _0225C33A + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _0225C33A + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x38] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x30] + str r0, [sp, #8] + ldr r0, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x10] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, _0225C418 ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D52C + b _0225C362 +_0225C33A: + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x38] + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + ldr r3, [sp, #0x30] + str r0, [sp, #8] + ldr r0, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, [sp, #0x28] + str r0, [sp, #0x10] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, _0225C418 ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D52C +_0225C362: + mov r1, #0 + ldr r0, [sp, #0x40] + mvn r1, r1 + cmp r0, r1 + beq _0225C382 + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, _0225C418 ; =0x000006EC + ldr r1, [sp, #0x40] + ldr r0, [r6, r0] + ldr r2, [sp, #0x3c] + ldr r3, [sp, #0x20] + bl MOD11_0225D620 + b _0225C410 +_0225C382: + ldr r0, _0225C418 ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D664 + b _0225C410 +_0225C38C: + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x48] + ldr r0, [r0, #0x14] + ldrb r0, [r0, #0x11] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r3, [r1, #0x14] + ldr r0, _0225C418 ; =0x000006EC + ldrb r1, [r3, #0x12] + ldrb r2, [r3, #0x13] + ldrb r3, [r3, #0x10] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + ldr r0, _0225C418 ; =0x000006EC + ldr r0, [r6, r0] + bl MOD11_0225D664 + b _0225C410 +_0225C3BE: + ldr r0, [sp, #0x44] + cmp r0, #1 + bne _0225C3E8 + mov r0, #1 + ldrsb r0, [r7, r0] + cmp r0, #0 + ble _0225C3D2 + add sp, #0x60 + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_0225C3D2: + add r2, sp, #0x58 + mov r0, #0 + add r2, #2 + b _0225C3E2 +_0225C3DA: + ldrb r1, [r2, r0] + cmp r1, #1 + beq _0225C414 + add r0, r0, #1 +_0225C3E2: + cmp r0, #4 + blt _0225C3DA + b _0225C410 +_0225C3E8: + mov r0, #1 + ldrsb r0, [r7, r0] + ldr r2, _0225C41C ; =0x0225F690 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r7, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + cmp r0, #4 + beq _0225C414 + add r1, sp, #0x58 + add r1, #2 + ldrb r1, [r1, r0] + cmp r1, #1 + bne _0225C410 + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} +_0225C40A: + add sp, #0x60 + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_0225C410: + mov r0, #0 + mvn r0, r0 +_0225C414: + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225C418: .word 0x000006EC +_0225C41C: .word 0x0225F690 + + thumb_func_start MOD11_0225C420 +MOD11_0225C420: ; 0x0225C420 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #4 + beq _0225C470 + ldr r1, _0225C474 ; =0x0000069E + ldr r0, [r5] + ldrb r1, [r5, r1] + bl MOD11_0223022C + add r1, r0, #0 + ldr r0, [r5] + bl MOD11_0222FF7C + bl MOD11_02253A74 + mov r1, #0x6a + lsl r1, r1, #4 + ldrb r1, [r5, r1] + mov r3, #0 + ldr r7, _0225C478 ; =0x0225F690 + strb r1, [r0, #6] + add r1, r3, #0 + b _0225C46C +_0225C450: + lsl r5, r3, #1 + add r2, r1, #0 + add r6, r7, r5 + b _0225C466 +_0225C458: + ldrb r5, [r2, r6] + cmp r4, r5 + bne _0225C464 + strb r2, [r0, #4] + strb r3, [r0, #5] + pop {r3, r4, r5, r6, r7, pc} +_0225C464: + add r2, r2, #1 +_0225C466: + cmp r2, #2 + blt _0225C458 + add r3, r3, #1 +_0225C46C: + cmp r3, #3 + blt _0225C450 +_0225C470: + pop {r3, r4, r5, r6, r7, pc} + nop +_0225C474: .word 0x0000069E +_0225C478: .word 0x0225F690 + + thumb_func_start MOD11_0225C47C +MOD11_0225C47C: ; 0x0225C47C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0x6f + lsl r0, r0, #4 + add r3, r0, #0 + sub r3, #0x51 + ldrsb r5, [r6, r3] + mov r3, #0x30 + ldr r2, _0225C568 ; =0x0225FAAC + mul r3, r5 + add r4, r6, r0 + add r5, r2, r3 + cmp r1, #1 + bne _0225C4DA + mov r1, #1 + ldrsb r2, [r4, r1] + mov r3, #2 + ldr r1, _0225C56C ; =0x0225F684 + ldrsb r3, [r4, r3] + add r1, r1, r2 + sub r0, r0, #4 + ldrb r2, [r3, r1] + ldr r1, [r5, #0x14] + lsl r3, r2, #2 + add r1, r1, r3 + ldrb r1, [r1, #1] + sub r1, #8 + str r1, [sp] + mov r1, #0x11 + lsl r1, r1, #0x10 + str r1, [sp, #4] + ldr r4, [r5, #0x14] + ldr r0, [r6, r0] + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, r5, r6, pc} +_0225C4DA: + ldr r3, _0225C56C ; =0x0225F684 + add r0, r4, #0 + mov r1, #1 + mov r2, #2 + bl MOD11_0225C574 + cmp r0, #0x20 + bhi _0225C502 + bhs _0225C50E + cmp r0, #2 + bhi _0225C4FC + cmp r0, #1 + blo _0225C560 + beq _0225C548 + cmp r0, #2 + beq _0225C55A + b _0225C560 +_0225C4FC: + cmp r0, #0x10 + beq _0225C50E + b _0225C560 +_0225C502: + cmp r0, #0x40 + bhi _0225C50A + beq _0225C50E + b _0225C560 +_0225C50A: + cmp r0, #0x80 + bne _0225C560 +_0225C50E: + mov r0, #1 + ldrsb r3, [r4, r0] + mov r0, #2 + ldr r2, _0225C56C ; =0x0225F684 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r5, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r5, #0x14] + ldr r0, _0225C570 ; =0x000006EC + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r6, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD11_0225D5FC + b _0225C560 +_0225C548: + mov r0, #1 + ldrsb r3, [r4, r0] + mov r0, #2 + ldr r2, _0225C56C ; =0x0225F684 + ldrsb r1, [r4, r0] + add r0, r2, r3 + add sp, #8 + ldrb r0, [r1, r0] + pop {r4, r5, r6, pc} +_0225C55A: + add sp, #8 + mov r0, #1 + pop {r4, r5, r6, pc} +_0225C560: + mov r0, #0 + mvn r0, r0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0225C568: .word 0x0225FAAC +_0225C56C: .word 0x0225F684 +_0225C570: .word 0x000006EC + + thumb_func_start MOD11_0225C574 +MOD11_0225C574: ; 0x0225C574 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #2 + ldrsb r1, [r0, r1] + add r6, r2, #0 + add r2, r3, #0 + cmp r1, r4 + blt _0225C588 + sub r1, r4, #1 + strb r1, [r0, #2] +_0225C588: + mov r1, #1 + ldrsb r1, [r0, r1] + cmp r1, r6 + blt _0225C594 + sub r1, r6, #1 + strb r1, [r0, #1] +_0225C594: + mov r7, #2 + ldrsb r1, [r0, r7] + mov r5, #1 + mov r3, #0x40 + str r1, [sp] + ldrsb r1, [r0, r5] + mov ip, r1 + ldr r1, _0225C764 ; =0x021C48B8 + ldr r1, [r1, #0x48] + tst r3, r1 + beq _0225C5FA + mov r1, ip + sub r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, #0 + bge _0225C5BA + mov r1, #0 + strb r1, [r0, #1] +_0225C5BA: + cmp r2, #0 + beq _0225C5F6 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0225C5F6 + add r1, r0, #1 + mov r7, #0 + mov r6, #1 +_0225C5D6: + ldrsb r3, [r1, r7] + sub r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _0225C5E8 + mov r1, ip + strb r1, [r0, #1] + b _0225C5F6 +_0225C5E8: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _0225C5D6 +_0225C5F6: + mov r5, #0x40 + b _0225C70E +_0225C5FA: + mov r3, #0x80 + tst r3, r1 + beq _0225C650 + mov r1, ip + add r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, r6 + blt _0225C610 + sub r1, r6, #1 + strb r1, [r0, #1] +_0225C610: + cmp r2, #0 + beq _0225C64C + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0225C64C + add r1, r0, #1 + mov r7, #1 +_0225C62A: + mov r3, #0 + ldrsb r3, [r1, r3] + add r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r7] + cmp r3, r6 + blt _0225C63E + mov r1, ip + strb r1, [r0, #1] + b _0225C64C +_0225C63E: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _0225C62A +_0225C64C: + mov r5, #0x80 + b _0225C70E +_0225C650: + mov r3, #0x20 + tst r3, r1 + beq _0225C6A6 + ldr r1, [sp] + sub r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, #0 + bge _0225C666 + mov r1, #0 + strb r1, [r0, #2] +_0225C666: + cmp r2, #0 + beq _0225C6A2 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0225C6A2 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_0225C682: + ldrsb r1, [r5, r7] + sub r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _0225C694 + ldr r1, [sp] + strb r1, [r0, #2] + b _0225C6A2 +_0225C694: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _0225C682 +_0225C6A2: + mov r5, #0x20 + b _0225C70E +_0225C6A6: + mov r3, #0x10 + tst r3, r1 + beq _0225C6FC + ldr r1, [sp] + add r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, r4 + blt _0225C6BC + sub r1, r4, #1 + strb r1, [r0, #2] +_0225C6BC: + cmp r2, #0 + beq _0225C6F8 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0225C6F8 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_0225C6D8: + ldrsb r1, [r5, r7] + add r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, r4 + blt _0225C6EA + ldr r1, [sp] + strb r1, [r0, #2] + b _0225C6F8 +_0225C6EA: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _0225C6D8 +_0225C6F8: + mov r5, #0x10 + b _0225C70E +_0225C6FC: + add r3, r1, #0 + tst r3, r5 + bne _0225C70E + tst r1, r7 + beq _0225C70A + add r5, r7, #0 + b _0225C70E +_0225C70A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225C70E: + cmp r2, #0 + beq _0225C738 + mov r1, ip + add r3, r4, #0 + mul r3, r1 + ldr r1, [sp] + add r1, r1, r3 + mov r3, #2 + ldrsb r6, [r0, r3] + mov r3, #1 + ldrsb r3, [r0, r3] + ldrb r1, [r2, r1] + mul r3, r4 + add r3, r6, r3 + ldrb r2, [r2, r3] + cmp r1, r2 + bne _0225C738 + ldr r1, [sp] + strb r1, [r0, #2] + mov r1, ip + strb r1, [r0, #1] +_0225C738: + mov r1, #2 + ldrsb r2, [r0, r1] + ldr r1, [sp] + cmp r2, r1 + bne _0225C74C + mov r1, #1 + ldrsb r1, [r0, r1] + mov r0, ip + cmp r1, r0 + beq _0225C754 +_0225C74C: + ldr r0, _0225C768 ; =0x000005DC + bl FUN_020054C8 + b _0225C75E +_0225C754: + mov r0, #0xf0 + tst r0, r5 + beq _0225C75E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225C75E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225C764: .word 0x021C48B8 +_0225C768: .word 0x000005DC + + thumb_func_start MOD11_0225C76C +MOD11_0225C76C: ; 0x0225C76C + ldr r1, _0225C774 ; =0x000006F4 + ldrb r0, [r0, r1] + bx lr + nop +_0225C774: .word 0x000006F4 + + thumb_func_start MOD11_0225C778 +MOD11_0225C778: ; 0x0225C778 + ldr r2, _0225C780 ; =0x000006F4 + strb r1, [r0, r2] + bx lr + nop +_0225C780: .word 0x000006F4 + + thumb_func_start MOD11_0225C784 +MOD11_0225C784: ; 0x0225C784 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD11_02230078 + ldr r0, [r4] + bl MOD11_02230080 + ldr r0, [r4] + bl MOD11_022300CC + ldr r0, [r4] + bl MOD11_02231268 + cmp r0, #0 + bne _0225C7C0 + ldr r0, _0225C7E4 ; =0x000006FC + ldrb r0, [r4, r0] + cmp r0, #2 + blo _0225C7B0 + bl ErrorHandling +_0225C7B0: + ldr r1, _0225C7E4 ; =0x000006FC + add r0, r4, #0 + ldrb r1, [r4, r1] + lsl r2, r1, #2 + ldr r1, _0225C7E8 ; =0x0225F6B8 + ldr r1, [r1, r2] + blx r1 + b _0225C7C6 +_0225C7C0: + add r0, r4, #0 + bl MOD11_0225C8A0 +_0225C7C6: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0225C7E2 + ldr r1, _0225C7EC ; =0x000006FD + mov r3, #0 + strb r3, [r4, r1] + add r2, r1, #1 + strb r3, [r4, r2] + sub r2, r1, #1 + ldrb r2, [r4, r2] + sub r1, r1, #1 + add r2, r2, #1 + strb r2, [r4, r1] +_0225C7E2: + pop {r4, pc} + .align 2, 0 +_0225C7E4: .word 0x000006FC +_0225C7E8: .word 0x0225F6B8 +_0225C7EC: .word 0x000006FD + + thumb_func_start MOD11_0225C7F0 +MOD11_0225C7F0: ; 0x0225C7F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0225C840 ; =0x000006FD + ldrb r1, [r4, r0] + cmp r1, #0 + bne _0225C820 + sub r0, r0, #5 + mov r3, #0x11 + ldr r0, [r4, r0] + mov r1, #0x80 + mov r2, #0x3c + lsl r3, r3, #0x10 + bl MOD11_0225D7D0 + ldr r0, _0225C844 ; =0x000006F8 + mov r1, #0x3c + ldr r0, [r4, r0] + bl MOD11_0225D820 + ldr r0, _0225C840 ; =0x000006FD + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0225C838 +_0225C820: + sub r0, r0, #5 + ldr r0, [r4, r0] + bl MOD11_0225D824 + cmp r0, #1 + bne _0225C838 + ldr r0, _0225C840 ; =0x000006FD + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r4, pc} +_0225C838: + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + nop +_0225C840: .word 0x000006FD +_0225C844: .word 0x000006F8 + + thumb_func_start MOD11_0225C848 +MOD11_0225C848: ; 0x0225C848 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0225C898 ; =0x000006FD + ldrb r1, [r4, r0] + cmp r1, #0 + bne _0225C878 + sub r0, r0, #5 + mov r3, #0x11 + ldr r0, [r4, r0] + mov r1, #0x40 + mov r2, #0x16 + lsl r3, r3, #0x10 + bl MOD11_0225D7D0 + ldr r0, _0225C89C ; =0x000006F8 + mov r1, #0x3c + ldr r0, [r4, r0] + bl MOD11_0225D820 + ldr r0, _0225C898 ; =0x000006FD + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0225C890 +_0225C878: + sub r0, r0, #5 + ldr r0, [r4, r0] + bl MOD11_0225D824 + cmp r0, #1 + bne _0225C890 + ldr r0, _0225C898 ; =0x000006FD + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_0225C890: + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + nop +_0225C898: .word 0x000006FD +_0225C89C: .word 0x000006F8 + + thumb_func_start MOD11_0225C8A0 +MOD11_0225C8A0: ; 0x0225C8A0 + push {r4, lr} + ldr r1, _0225C914 ; =0x000006FD + add r4, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _0225C8B2 + cmp r0, #1 + beq _0225C8D0 + b _0225C8F4 +_0225C8B2: + add r0, r1, #1 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #1 + strb r2, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0x3c + bls _0225C90C + mov r2, #0 + add r0, r1, #1 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + add r0, r0, #1 + strb r0, [r4, r1] + b _0225C90C +_0225C8D0: + sub r0, r1, #5 + mov r3, #0x11 + ldr r0, [r4, r0] + mov r1, #0x28 + mov r2, #0x92 + lsl r3, r3, #0x10 + bl MOD11_0225D7D0 + ldr r0, _0225C918 ; =0x000006F8 + mov r1, #0x3c + ldr r0, [r4, r0] + bl MOD11_0225D820 + ldr r0, _0225C914 ; =0x000006FD + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0225C90C +_0225C8F4: + sub r0, r1, #5 + ldr r0, [r4, r0] + bl MOD11_0225D824 + cmp r0, #1 + bne _0225C90C + ldr r0, _0225C914 ; =0x000006FD + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_0225C90C: + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + nop +_0225C914: .word 0x000006FD +_0225C918: .word 0x000006F8 + + thumb_func_start MOD11_0225C91C +MOD11_0225C91C: ; 0x0225C91C + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r0, #0x4a + str r0, [sp, #4] + mov r0, #0 + add r4, r1, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0225C990 ; =0x00004E41 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r2, #0 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0225C994 ; =0x00004FB9 + mov r2, #0x1b + add r3, r2, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r3, #0xf9 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0225C998 ; =0x00004FB3 + mov r2, #0x1b + add r3, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, #0xfa + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0225C99C ; =0x00004FA8 + mov r2, #0x1b + add r3, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, #0xfb + bl FUN_0200C13C + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_0225C990: .word 0x00004E41 +_0225C994: .word 0x00004FB9 +_0225C998: .word 0x00004FB3 +_0225C99C: .word 0x00004FA8 + + thumb_func_start MOD11_0225C9A0 +MOD11_0225C9A0: ; 0x0225C9A0 + push {r4, lr} + ldr r1, _0225C9C4 ; =0x00004FB9 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0225C9C8 ; =0x00004E41 + add r0, r4, #0 + bl FUN_0200C368 + ldr r1, _0225C9CC ; =0x00004FB3 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0225C9D0 ; =0x00004FA8 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0225C9C4: .word 0x00004FB9 +_0225C9C8: .word 0x00004E41 +_0225C9CC: .word 0x00004FB3 +_0225C9D0: .word 0x00004FA8 + + thumb_func_start MOD11_0225C9D4 +MOD11_0225C9D4: ; 0x0225C9D4 + push {r4, lr} + mov r0, #5 + lsl r1, r0, #6 + bl FUN_02016998 + mov r2, #5 + mov r1, #0 + lsl r2, r2, #6 + add r4, r0, #0 + blx MI_CpuFill8 + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225C9F0 +MOD11_0225C9F0: ; 0x0225C9F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0225C9FE + bl ErrorHandling +_0225C9FE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225CA08 +MOD11_0225CA08: ; 0x0225CA08 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x14] + ldr r0, [sp, #0x38] + str r3, [sp, #0x1c] + str r0, [sp, #0x38] + add r6, r1, #0 + str r2, [sp, #0x18] + ldr r7, [sp, #0x3c] + bl MOD11_0225C9D4 + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x38] + add r1, r6, #0 + str r0, [sp, #0x20] + str r7, [sp] + bl MOD11_0225CB10 + ldr r5, [sp, #0x20] + mov r4, #0 + add r5, #0x1c +_0225CA32: + ldr r0, [sp, #0x14] + add r1, r6, #0 + ldrb r0, [r0, r4] + bl MOD11_0225D374 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + str r1, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x38] + mov r1, #0x4f + str r0, [sp, #0xc] + lsl r1, r1, #2 + add r1, r2, r1 + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r2, r6, #0 + str r7, [sp, #0x10] + bl MOD11_0225CDB0 + add r4, r4, #1 + add r5, #0x30 + cmp r4, #6 + blt _0225CA32 + ldr r0, [sp, #0x20] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0225CA6C +MOD11_0225CA6C: ; 0x0225CA6C + ldr r1, [r0, #4] + cmp r1, #0 + bne _0225CA8A + mov r2, #0 +_0225CA74: + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _0225CA82 + add r2, r2, #1 + add r0, #0x30 + cmp r2, #6 + blt _0225CA74 +_0225CA82: + cmp r2, #6 + bne _0225CA8A + mov r0, #1 + bx lr +_0225CA8A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0225CA90 +MOD11_0225CA90: ; 0x0225CA90 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r4, r1, #0 + add r7, r2, #0 + cmp r6, #0 + bne _0225CAA0 + bl ErrorHandling +_0225CAA0: + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_0225CC68 + add r5, r6, #0 + mov r4, #0 + add r5, #0x1c + add r6, #0x18 +_0225CAB0: + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD11_0225D1A8 + add r4, r4, #1 + add r5, #0x30 + cmp r4, #6 + blt _0225CAB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0225CAC8 +MOD11_0225CAC8: ; 0x0225CAC8 + ldr r1, [r0, #4] + cmp r1, #0 + bne _0225CAE6 + mov r2, #0 +_0225CAD0: + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _0225CADE + add r2, r2, #1 + add r0, #0x30 + cmp r2, #6 + blt _0225CAD0 +_0225CADE: + cmp r2, #6 + bne _0225CAE6 + mov r0, #1 + bx lr +_0225CAE6: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD11_0225CAEC +MOD11_0225CAEC: ; 0x0225CAEC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C3DC + mov r4, #0 + add r5, r6, #0 +_0225CAFA: + ldr r0, [r5, #0x1c] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, #0x30 + cmp r4, #6 + blt _0225CAFA + add r0, r6, #0 + bl MOD11_0225C9F0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0225CB10 +MOD11_0225CB10: ; 0x0225CB10 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + mov r1, #0 + cmp r0, #0 + bne _0225CB2A + ldr r0, [r5, #4] + cmp r0, #0 + bne _0225CB2A + mov r1, #1 +_0225CB2A: + cmp r1, #0 + bne _0225CB32 + bl ErrorHandling +_0225CB32: + add r0, r5, #0 + mov r1, #0 + mov r2, #0x1c + blx MI_CpuFill8 + ldr r1, [sp, #0x18] + ldr r2, _0225CBA8 ; =0x0225FE48 + add r0, r7, #0 + bl FUN_0200C154 + str r0, [r5] + cmp r6, #0 + ldr r0, [r5] + bne _0225CB68 + ldr r2, _0225CBAC ; =0x0225FE38 + lsl r3, r4, #1 + ldrsh r2, [r2, r3] + mov r1, #0x16 + lsl r1, r1, #4 + bl FUN_0200C714 + ldr r0, [r5] + mov r1, #8 + ldr r0, [r0] + bl FUN_02020130 + b _0225CB80 +_0225CB68: + ldr r2, _0225CBB0 ; =0x0225FE30 + lsl r3, r4, #1 + ldrsh r2, [r2, r3] + mov r1, #0x5f + mvn r1, r1 + bl FUN_0200C714 + ldr r0, [r5] + mov r1, #7 + ldr r0, [r0] + bl FUN_02020130 +_0225CB80: + ldr r0, [r5] + ldr r0, [r0] + bl FUN_0200C59C + str r6, [r5, #0xc] + mov r2, #0x7d + str r4, [r5, #0x10] + mov r0, #0 + strb r0, [r5, #0x1a] + ldr r0, _0225CBB4 ; =MOD11_0225CBBC + add r1, r5, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _0225CBB8 ; =0x00000711 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225CBA8: .word 0x0225FE48 +_0225CBAC: .word 0x0225FE38 +_0225CBB0: .word 0x0225FE30 +_0225CBB4: .word MOD11_0225CBBC +_0225CBB8: .word 0x00000711 + + thumb_func_start MOD11_0225CBBC +MOD11_0225CBBC: ; 0x0225CBBC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _0225CBCE + cmp r1, #1 + beq _0225CBEA + b _0225CC52 +_0225CBCE: + add r1, sp, #0 + ldr r0, [r4] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r1, sp, #0 + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x1a] + add r0, r0, #1 + strb r0, [r4, #0x1a] +_0225CBEA: + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + cmp r0, #0 + bne _0225CC22 + mov r0, #0xe + lsl r0, r0, #8 + sub r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #0x14] + cmp r2, r1 + bgt _0225CC0A + lsl r0, r0, #4 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x1a] + add r0, r0, #1 + strb r0, [r4, #0x1a] +_0225CC0A: + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x14] + lsl r3, r2, #1 + ldr r2, _0225CC60 ; =0x0225FE38 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 + add sp, #4 + pop {r3, r4, pc} +_0225CC22: + mov r0, #0xe + lsl r0, r0, #8 + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r4, #0x14] + cmp r1, r0 + blt _0225CC3A + str r0, [r4, #0x14] + ldrb r0, [r4, #0x1a] + add r0, r0, #1 + strb r0, [r4, #0x1a] +_0225CC3A: + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x14] + lsl r3, r2, #1 + ldr r2, _0225CC64 ; =0x0225FE30 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 + add sp, #4 + pop {r3, r4, pc} +_0225CC52: + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + add sp, #4 + pop {r3, r4, pc} + nop +_0225CC60: .word 0x0225FE38 +_0225CC64: .word 0x0225FE30 + + thumb_func_start MOD11_0225CC68 +MOD11_0225CC68: ; 0x0225CC68 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r0, #0 + beq _0225CC7A + ldr r0, [r5, #4] + cmp r0, #0 + beq _0225CC7E +_0225CC7A: + bl ErrorHandling +_0225CC7E: + mov r0, #0 + strb r0, [r5, #0x1a] + str r4, [r5, #8] + cmp r4, #0 + bne _0225CC8C + mov r0, #4 + b _0225CC8C +_0225CC8C: + strb r0, [r5, #0x1b] + mov r2, #0x7d + ldr r0, _0225CCA0 ; =MOD11_0225CCA4 + add r1, r5, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, pc} + nop +_0225CCA0: .word MOD11_0225CCA4 + + thumb_func_start MOD11_0225CCA4 +MOD11_0225CCA4: ; 0x0225CCA4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _0225CCBC + cmp r0, #1 + beq _0225CCFC + cmp r0, #2 + beq _0225CD10 + b _0225CD8E +_0225CCBC: + add r1, sp, #4 + ldr r0, [r4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r1, sp, #4 + mov r0, #2 + ldrsh r0, [r1, r0] + mov r1, #1 + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + bl FUN_0200C90C + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #0x18] + mov r0, #0x18 + ldrsh r0, [r4, r0] + mov r1, #0 + mov r2, #0x3f + asr r3, r0, #8 + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _0225CDA0 ; =0x04000050 + blx G2x_SetBlendAlpha_ + ldrb r0, [r4, #0x1a] + add r0, r0, #1 + strb r0, [r4, #0x1a] +_0225CCFC: + ldrb r0, [r4, #0x1b] + cmp r0, #0 + beq _0225CD0A + sub r0, r0, #1 + add sp, #8 + strb r0, [r4, #0x1b] + pop {r3, r4, r5, pc} +_0225CD0A: + ldrb r0, [r4, #0x1a] + add r0, r0, #1 + strb r0, [r4, #0x1a] +_0225CD10: + ldr r0, [r4, #8] + cmp r0, #0 + bne _0225CD54 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + cmp r0, #0 + bne _0225CD3A + mov r0, #1 + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [r4, #0x14] + ldr r2, [r4, #0x10] + lsl r1, r1, #8 + lsl r3, r2, #1 + ldr r2, _0225CDA4 ; =0x0225FE38 + ldr r0, [r4] + ldrsh r2, [r2, r3] + asr r1, r1, #0x10 + bl FUN_0200C714 + b _0225CD54 +_0225CD3A: + mov r0, #1 + lsl r0, r0, #0xa + add r1, r1, r0 + str r1, [r4, #0x14] + ldr r2, [r4, #0x10] + lsl r1, r1, #8 + lsl r3, r2, #1 + ldr r2, _0225CDA8 ; =0x0225FE30 + ldr r0, [r4] + ldrsh r2, [r2, r3] + asr r1, r1, #0x10 + bl FUN_0200C714 +_0225CD54: + mov r1, #0x18 + ldrsh r2, [r4, r1] + add r0, r1, #0 + add r0, #0xe8 + sub r0, r2, r0 + strh r0, [r4, #0x18] + ldrsh r0, [r4, r1] + cmp r0, #0 + bgt _0225CD78 + mov r1, #0 + strh r1, [r4, #0x18] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C63C + ldrb r0, [r4, #0x1a] + add r0, r0, #1 + strb r0, [r4, #0x1a] +_0225CD78: + mov r0, #0x18 + ldrsh r0, [r4, r0] + add sp, #8 + asr r1, r0, #8 + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _0225CDAC ; =0x04000052 + strh r1, [r0] + pop {r3, r4, r5, pc} +_0225CD8E: + bl MOD11_02231678 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0225CDA0: .word 0x04000050 +_0225CDA4: .word 0x0225FE38 +_0225CDA8: .word 0x0225FE30 +_0225CDAC: .word 0x04000052 + + thumb_func_start MOD11_0225CDB0 +MOD11_0225CDB0: ; 0x0225CDB0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r7, r1, #0 + add r6, r2, #0 + mov r1, #0 + str r3, [sp] + ldr r4, [sp, #0x1c] + cmp r0, #0 + bne _0225CDCC + ldr r0, [r5, #4] + cmp r0, #0 + bne _0225CDCC + mov r1, #1 +_0225CDCC: + cmp r1, #0 + bne _0225CDD4 + bl ErrorHandling +_0225CDD4: + add r0, r5, #0 + mov r1, #0 + mov r2, #0x30 + blx MI_CpuFill8 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x28] + ldr r2, _0225CEA4 ; =0x0225FE7C + bl FUN_0200C154 + str r0, [r5] + cmp r6, #0 + ldr r0, [r5] + bne _0225CE02 + ldr r2, [sp, #0x18] + mov r1, #0x45 + lsl r3, r2, #1 + ldr r2, _0225CEA8 ; =0x0225FE40 + lsl r1, r1, #2 + ldrsh r2, [r2, r3] + bl FUN_0200C714 + b _0225CE12 +_0225CE02: + ldr r2, [sp, #0x18] + mov r1, #0x13 + lsl r3, r2, #1 + ldr r2, _0225CEAC ; =0x0225FE28 + mvn r1, r1 + ldrsh r2, [r2, r3] + bl FUN_0200C714 +_0225CE12: + ldr r0, [r5] + ldr r1, [sp, #0x20] + ldr r0, [r0] + bl FUN_02020130 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_0200C59C + add r0, r5, #0 + str r6, [r5, #8] + add r0, #0x2d + strb r4, [r0] + ldr r0, [sp, #0x18] + str r0, [r5, #0xc] + ldr r0, [sp, #0x20] + bl MOD11_0225D3B4 + add r1, r5, #0 + add r1, #0x2e + strb r0, [r1] + ldr r0, [sp, #0x20] + str r7, [r5, #0x14] + cmp r0, #6 + bne _0225CE48 + ldr r0, _0225CEB0 ; =0x00000713 + b _0225CE4A +_0225CE48: + ldr r0, _0225CEB4 ; =0x00000712 +_0225CE4A: + strh r0, [r5, #0x2a] + cmp r6, #0 + bne _0225CE5E + lsl r0, r4, #4 + add r0, #0xa2 + str r0, [r5, #0x20] + mov r0, #0xf + mul r0, r4 + add r0, #0x9c + b _0225CE70 +_0225CE5E: + lsl r1, r4, #4 + mov r0, #0x5e + sub r0, r0, r1 + str r0, [r5, #0x20] + mov r0, #0xf + add r1, r4, #0 + mul r1, r0 + mov r0, #0x64 + sub r0, r0, r1 +_0225CE70: + str r0, [r5, #0x24] + add r0, r5, #0 + mov r1, #0 + add r0, #0x2c + strb r1, [r0] + ldr r0, [sp] + ldr r2, _0225CEB8 ; =0x000001F5 + cmp r0, #0 + bne _0225CE96 + lsl r0, r4, #1 + add r0, r4, r0 + add r0, r0, #5 + strh r0, [r5, #0x28] + ldr r0, _0225CEBC ; =MOD11_0225CEC4 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0225CE96: + ldr r0, _0225CEC0 ; =MOD11_0225D0C4 + strh r1, [r5, #0x28] + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225CEA4: .word 0x0225FE7C +_0225CEA8: .word 0x0225FE40 +_0225CEAC: .word 0x0225FE28 +_0225CEB0: .word 0x00000713 +_0225CEB4: .word 0x00000712 +_0225CEB8: .word 0x000001F5 +_0225CEBC: .word MOD11_0225CEC4 +_0225CEC0: .word MOD11_0225D0C4 + + thumb_func_start MOD11_0225CEC4 +MOD11_0225CEC4: ; 0x0225CEC4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #6 + bls _0225CED6 + b _0225D0A6 +_0225CED6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225CEE2: ; jump table + .short _0225CEF0 - _0225CEE2 - 2 ; case 0 + .short _0225CF14 - _0225CEE2 - 2 ; case 1 + .short _0225CF22 - _0225CEE2 - 2 ; case 2 + .short _0225CFA4 - _0225CEE2 - 2 ; case 3 + .short _0225CFBC - _0225CEE2 - 2 ; case 4 + .short _0225CFFC - _0225CEE2 - 2 ; case 5 + .short _0225D02A - _0225CEE2 - 2 ; case 6 +_0225CEF0: + add r1, sp, #0 + ldr r0, [r4] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r1, sp, #0 + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225CF14: + mov r0, #0x28 + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225CF22 + sub r0, r0, #1 + strh r0, [r4, #0x28] + pop {r3, r4, r5, pc} +_0225CF22: + ldr r0, [r4, #8] + ldr r1, [r4, #0x1c] + cmp r0, #0 + bne _0225CF66 + mov r0, #0xe + lsl r0, r0, #8 + sub r1, r1, r0 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x24] + lsl r0, r0, #8 + cmp r1, r0 + bgt _0225CF50 + str r0, [r4, #0x1c] + ldrh r0, [r4, #0x2a] + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225CF50: + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + lsl r3, r2, #1 + ldr r2, _0225D0BC ; =0x0225FE40 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 + b _0225CF9A +_0225CF66: + mov r0, #0xe + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x24] + lsl r0, r0, #8 + cmp r1, r0 + blt _0225CF86 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225CF86: + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + lsl r3, r2, #1 + ldr r2, _0225D0C0 ; =0x0225FE28 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 +_0225CF9A: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, pc} +_0225CFA4: + ldr r1, [r4, #0x14] + mov r0, #0 + ldrsb r0, [r1, r0] + add r0, r0, #1 + strb r0, [r1] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225CFBC: + ldr r1, [r4, #0x14] + mov r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #6 + beq _0225CFD0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, pc} +_0225CFD0: + ldr r0, [r4, #8] + cmp r0, #0 + ldr r0, [r4] + bne _0225CFE2 + ldr r0, [r0] + mov r1, #1 + bl FUN_02020208 + b _0225CFEA +_0225CFE2: + ldr r0, [r0] + mov r1, #1 + bl FUN_02020208 +_0225CFEA: + mov r0, #0 + strh r0, [r4, #0x28] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225CFFC: + mov r0, #0x28 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x28] + ldrsh r0, [r4, r0] + cmp r0, #0 + blt _0225D0BA + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x2e + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_02020130 + mov r0, #0 + strh r0, [r4, #0x28] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D02A: + ldr r0, [r4, #8] + ldr r1, [r4, #0x1c] + cmp r0, #0 + bne _0225D068 + mov r0, #6 + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x20] + lsl r0, r0, #8 + cmp r1, r0 + blt _0225D052 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D052: + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + lsl r3, r2, #1 + ldr r2, _0225D0BC ; =0x0225FE40 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 + b _0225D09C +_0225D068: + mov r0, #6 + lsl r0, r0, #8 + sub r1, r1, r0 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x20] + lsl r0, r0, #8 + cmp r1, r0 + bgt _0225D088 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D088: + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + lsl r3, r2, #1 + ldr r2, _0225D0C0 ; =0x0225FE28 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 +_0225D09C: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, pc} +_0225D0A6: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_02020208 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] +_0225D0BA: + pop {r3, r4, r5, pc} + .align 2, 0 +_0225D0BC: .word 0x0225FE40 +_0225D0C0: .word 0x0225FE28 + + thumb_func_start MOD11_0225D0C4 +MOD11_0225D0C4: ; 0x0225D0C4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r1, #0x2c + ldrb r1, [r1] + cmp r1, #0 + beq _0225D0DC + cmp r1, #1 + beq _0225D10A + cmp r1, #2 + beq _0225D11A + b _0225D192 +_0225D0DC: + add r1, sp, #0 + ldr r0, [r4] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r1, sp, #0 + mov r0, #2 + ldrsh r0, [r1, r0] + mov r1, #0 + lsl r0, r0, #8 + str r0, [r4, #0x1c] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02020208 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D10A: + mov r0, #0x28 + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225D11A + sub r0, r0, #1 + add sp, #4 + strh r0, [r4, #0x28] + pop {r3, r4, pc} +_0225D11A: + ldr r0, [r4, #8] + ldr r1, [r4, #0x1c] + cmp r0, #0 + bne _0225D15A + mov r0, #0xe + lsl r0, r0, #8 + sub r1, r1, r0 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x20] + lsl r0, r0, #8 + cmp r1, r0 + bgt _0225D142 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D142: + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + lsl r3, r2, #1 + ldr r2, _0225D1A0 ; =0x0225FE40 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 + add sp, #4 + pop {r3, r4, pc} +_0225D15A: + mov r0, #0xe + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x20] + lsl r0, r0, #8 + cmp r1, r0 + blt _0225D17A + str r0, [r4, #0x1c] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D17A: + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + lsl r3, r2, #1 + ldr r2, _0225D1A4 ; =0x0225FE28 + lsl r1, r1, #8 + ldrsh r2, [r2, r3] + ldr r0, [r4] + asr r1, r1, #0x10 + bl FUN_0200C714 + add sp, #4 + pop {r3, r4, pc} +_0225D192: + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + add sp, #4 + pop {r3, r4, pc} + nop +_0225D1A0: .word 0x0225FE40 +_0225D1A4: .word 0x0225FE28 + + thumb_func_start MOD11_0225D1A8 +MOD11_0225D1A8: ; 0x0225D1A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + cmp r0, #0 + beq _0225D1BE + ldr r0, [r5, #4] + cmp r0, #0 + beq _0225D1C2 +_0225D1BE: + bl ErrorHandling +_0225D1C2: + add r0, r5, #0 + mov r1, #0 + add r0, #0x2c + strb r1, [r0] + cmp r7, #0 + str r4, [r5, #0x18] + ldr r2, _0225D200 ; =0x000001F5 + bne _0225D1EC + lsl r0, r6, #1 + add r0, r6, r0 + strh r0, [r5, #0x28] + add r0, r5, #0 + mov r1, #4 + add r0, #0x2f + strb r1, [r0] + ldr r0, _0225D204 ; =MOD11_0225D20C + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} +_0225D1EC: + add r0, r5, #0 + strh r1, [r5, #0x28] + add r0, #0x2f + strb r1, [r0] + ldr r0, _0225D208 ; =MOD11_0225D31C + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225D200: .word 0x000001F5 +_0225D204: .word MOD11_0225D20C +_0225D208: .word MOD11_0225D31C + + thumb_func_start MOD11_0225D20C +MOD11_0225D20C: ; 0x0225D20C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #0x18] + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r0, #0 + bne _0225D224 + add r0, r4, #0 + mov r1, #0x64 + add r0, #0x2c + strb r1, [r0] +_0225D224: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #2 + bgt _0225D23E + cmp r0, #0 + blt _0225D2FA + beq _0225D242 + cmp r0, #1 + beq _0225D26E + cmp r0, #2 + beq _0225D294 + b _0225D2FA +_0225D23E: + cmp r0, #0x64 + b _0225D2FA +_0225D242: + add r1, sp, #0 + ldr r0, [r4] + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r1, sp, #0 + mov r0, #2 + ldrsh r0, [r1, r0] + mov r1, #1 + lsl r0, r0, #8 + str r0, [r4, #0x1c] + ldr r0, [r4] + bl FUN_0200C90C + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D26E: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #0 + beq _0225D286 + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r4, #0x2f + sub r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0225D286: + mov r0, #0x28 + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _0225D294 + sub r0, r0, #1 + strh r0, [r4, #0x28] + pop {r3, r4, r5, pc} +_0225D294: + ldr r0, [r4, #8] + ldr r1, [r4, #0x1c] + cmp r0, #0 + bne _0225D2B8 + mov r0, #3 + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [r4, #0x1c] + ldr r2, [r4, #0xc] + lsl r1, r1, #8 + lsl r3, r2, #1 + ldr r2, _0225D310 ; =0x0225FE40 + ldr r0, [r4] + ldrsh r2, [r2, r3] + asr r1, r1, #0x10 + bl FUN_0200C714 + b _0225D2D2 +_0225D2B8: + mov r0, #3 + lsl r0, r0, #0xa + add r1, r1, r0 + str r1, [r4, #0x1c] + ldr r2, [r4, #0xc] + lsl r1, r1, #8 + lsl r3, r2, #1 + ldr r2, _0225D314 ; =0x0225FE28 + ldr r0, [r4] + ldrsh r2, [r2, r3] + asr r1, r1, #0x10 + bl FUN_0200C714 +_0225D2D2: + ldr r1, [r4, #0x1c] + ldr r0, _0225D318 ; =0xFFFFF000 + cmp r1, r0 + blt _0225D2E2 + mov r0, #0x11 + lsl r0, r0, #0xc + cmp r1, r0 + ble _0225D2F0 +_0225D2E2: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] +_0225D2F0: + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, pc} +_0225D2FA: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0200C63C + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0225D310: .word 0x0225FE40 +_0225D314: .word 0x0225FE28 +_0225D318: .word 0xFFFFF000 + + thumb_func_start MOD11_0225D31C +MOD11_0225D31C: ; 0x0225D31C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #0x18] + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r0, #0 + bne _0225D334 + add r0, r4, #0 + mov r1, #0x64 + add r0, #0x2c + strb r1, [r0] +_0225D334: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _0225D346 + cmp r0, #1 + beq _0225D370 + cmp r0, #0x64 + b _0225D35C +_0225D346: + ldr r0, [r4] + mov r1, #1 + bl FUN_0200C90C + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r4, #0x2c + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0225D35C: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0200C63C + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] +_0225D370: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D374 +MOD11_0225D374: ; 0x0225D374 + cmp r0, #3 + bhi _0225D38C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225D384: ; jump table + .short _0225D38C - _0225D384 - 2 ; case 0 + .short _0225D390 - _0225D384 - 2 ; case 1 + .short _0225D39C - _0225D384 - 2 ; case 2 + .short _0225D3A8 - _0225D384 - 2 ; case 3 +_0225D38C: + mov r0, #6 + bx lr +_0225D390: + cmp r1, #0 + bne _0225D398 + mov r0, #3 + bx lr +_0225D398: + mov r0, #0 + bx lr +_0225D39C: + cmp r1, #0 + bne _0225D3A4 + mov r0, #5 + bx lr +_0225D3A4: + mov r0, #2 + bx lr +_0225D3A8: + cmp r1, #0 + bne _0225D3B0 + mov r0, #4 + bx lr +_0225D3B0: + mov r0, #1 + bx lr + + thumb_func_start MOD11_0225D3B4 +MOD11_0225D3B4: ; 0x0225D3B4 + cmp r0, #6 + bhi _0225D3EA + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0225D3C4: ; jump table + .short _0225D3D8 - _0225D3C4 - 2 ; case 0 + .short _0225D3E8 - _0225D3C4 - 2 ; case 1 + .short _0225D3E0 - _0225D3C4 - 2 ; case 2 + .short _0225D3D4 - _0225D3C4 - 2 ; case 3 + .short _0225D3E4 - _0225D3C4 - 2 ; case 4 + .short _0225D3DC - _0225D3C4 - 2 ; case 5 + .short _0225D3D2 - _0225D3C4 - 2 ; case 6 +_0225D3D2: + bx lr +_0225D3D4: + mov r0, #0 + bx lr +_0225D3D8: + mov r0, #3 + bx lr +_0225D3DC: + mov r0, #2 + bx lr +_0225D3E0: + mov r0, #5 + bx lr +_0225D3E4: + mov r0, #1 + bx lr +_0225D3E8: + mov r0, #4 +_0225D3EA: + bx lr + + thumb_func_start MOD11_0225D3EC +MOD11_0225D3EC: ; 0x0225D3EC + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r0, #0x2c + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + add r4, r1, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r2, #0 + mov r1, #3 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0xba + str r6, [sp, #8] + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbb + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x30] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbc + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0225D45C +MOD11_0225D45C: ; 0x0225D45C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0200C358 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl FUN_0200C388 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D484 +MOD11_0225D484: ; 0x0225D484 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r3, #0 + mov ip, r2 + ldr r3, _0225D4FC ; =0x0225FEB0 + add r6, r0, #0 + add r7, r1, #0 + add r2, sp, #4 + mov r4, #6 +_0225D496: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r4, r4, #1 + bne _0225D496 + ldr r0, [r3] + mov r1, #0x18 + str r0, [r2] + ldr r0, [sp, #0x50] + str r5, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x54] + str r0, [sp, #0x20] + ldr r0, [sp, #0x58] + str r0, [sp, #0x24] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x60] + str r0, [sp, #0x30] + mov r0, ip + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + str r0, [sp] + blx MI_CpuFill8 + ldr r5, [sp] + mov r4, #0 +_0225D4CE: + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #4 + bl FUN_0200C154 + mov r1, #0 + stmia r5!, {r0} + bl FUN_0200C644 + add r4, r4, #1 + cmp r4, #5 + blt _0225D4CE + ldr r0, _0225D500 ; =MOD11_0225D670 + ldr r1, [sp] + ldr r2, _0225D504 ; =0x00009C40 + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x14] + add r0, r1, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225D4FC: .word 0x0225FEB0 +_0225D500: .word MOD11_0225D670 +_0225D504: .word 0x00009C40 + + thumb_func_start MOD11_0225D508 +MOD11_0225D508: ; 0x0225D508 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_0225D510: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _0225D510 + ldr r0, [r6, #0x14] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0225D52C +MOD11_0225D52C: ; 0x0225D52C + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r4, [sp, #0x24] + add r6, r3, #0 + ldr r0, [r5] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r2, [sp, #0x10] + lsl r1, r6, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #8] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0xc] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r0, [r5] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_0200C5C0 + ldr r0, [r5, #0xc] + mov r1, #3 + bl FUN_0200C5C0 + mov r4, #0 + mov r6, #1 +_0225D5A2: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0225D5A2 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0225D5B4 +MOD11_0225D5B4: ; 0x0225D5B4 + push {r4, lr} + sub sp, #0x18 + ldr r4, [sp, #0x20] + str r4, [sp] + ldr r4, [sp, #0x24] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + ldr r4, [sp, #0x30] + str r4, [sp, #0x10] + mov r4, #3 + lsl r4, r4, #0x12 + str r4, [sp, #0x14] + bl MOD11_0225D52C + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D5DC +MOD11_0225D5DC: ; 0x0225D5DC + push {r3, r4, lr} + sub sp, #0x14 + add r4, r2, #0 + str r3, [sp] + ldr r2, [sp, #0x20] + str r1, [sp, #4] + str r2, [sp, #8] + str r4, [sp, #0xc] + str r2, [sp, #0x10] + add r2, r3, #0 + add r3, r4, #0 + bl MOD11_0225D5B4 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D5FC +MOD11_0225D5FC: ; 0x0225D5FC + push {r4, lr} + sub sp, #0x18 + add r4, r2, #0 + str r3, [sp] + ldr r2, [sp, #0x20] + str r1, [sp, #4] + str r2, [sp, #8] + str r4, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, [sp, #0x24] + str r2, [sp, #0x14] + add r2, r3, #0 + add r3, r4, #0 + bl MOD11_0225D52C + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D620 +MOD11_0225D620: ; 0x0225D620 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r3, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0x10] + ldr r3, [sp, #0x10] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C750 + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl FUN_0200C5C0 + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_0200C644 + pop {r3, r4, r5, pc} + + thumb_func_start MOD11_0225D648 +MOD11_0225D648: ; 0x0225D648 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0225D650: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _0225D650 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D664 +MOD11_0225D664: ; 0x0225D664 + ldr r3, _0225D66C ; =0x0200C645 + ldr r0, [r0, #0x10] + mov r1, #0 + bx r3 + .align 2, 0 +_0225D66C: .word 0x0200C645 + + thumb_func_start MOD11_0225D670 +MOD11_0225D670: ; 0x0225D670 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r0, [r6] + bl FUN_0200C658 + cmp r0, #0 + beq _0225D6A0 + mov r4, #0 + add r5, r6, #0 +_0225D682: + ldr r0, [r5] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0225D682 + ldr r0, [r6, #0x10] + bl FUN_0200C658 + cmp r0, #1 + bne _0225D6A0 + ldr r0, [r6, #0x10] + bl FUN_0200C5A8 +_0225D6A0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D6A4 +MOD11_0225D6A4: ; 0x0225D6A4 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x52 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + add r4, r1, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r2, #0 + mov r1, #3 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x52 + mov r3, #0xa + str r6, [sp, #8] + bl FUN_0200C00C + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x52 + mov r3, #0xc + bl FUN_0200C124 + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x30] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x52 + mov r3, #0xd + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD11_0225D714 +MOD11_0225D714: ; 0x0225D714 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0200C358 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl FUN_0200C388 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D73C +MOD11_0225D73C: ; 0x0225D73C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + ldr r5, _0225D7AC ; =0x0225FEE4 + add r6, r3, #0 + add r7, r0, #0 + str r1, [sp] + add r4, sp, #4 + mov r3, #6 +_0225D74C: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _0225D74C + ldr r0, [r5] + mov r1, #0x20 + str r0, [r4] + ldr r0, [sp, #0x50] + str r6, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x54] + str r0, [sp, #0x20] + ldr r0, [sp, #0x58] + str r0, [sp, #0x24] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x60] + str r0, [sp, #0x30] + add r0, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + blx MI_CpuFill8 + ldr r1, [sp] + add r0, r7, #0 + add r2, sp, #4 + bl FUN_0200C154 + mov r1, #0 + str r0, [r4] + bl FUN_0200C644 + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x14] + ldr r0, _0225D7B0 ; =MOD11_0225D828 + ldr r2, _0225D7B4 ; =0x000003E7 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_0225D7AC: .word 0x0225FEE4 +_0225D7B0: .word MOD11_0225D828 +_0225D7B4: .word 0x000003E7 + + thumb_func_start MOD11_0225D7B8 +MOD11_0225D7B8: ; 0x0225D7B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C3DC + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD11_0225D7D0 +MOD11_0225D7D0: ; 0x0225D7D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD11_0225D98C + str r7, [r5, #8] + str r4, [r5, #0xc] + str r6, [r5, #0x14] + lsl r1, r7, #0x10 + lsl r2, r4, #0x10 + ldr r0, [r5] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r6, #0 + bl FUN_0200C750 + ldr r0, [r5] + mov r1, #1 + bl FUN_0200C644 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD11_0225D800 +MOD11_0225D800: ; 0x0225D800 + push {r3, lr} + mov r3, #3 + lsl r3, r3, #0x12 + bl MOD11_0225D7D0 + pop {r3, pc} + + thumb_func_start MOD11_0225D80C +MOD11_0225D80C: ; 0x0225D80C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C644 + add r0, r4, #0 + bl MOD11_0225D98C + pop {r4, pc} + + thumb_func_start MOD11_0225D820 +MOD11_0225D820: ; 0x0225D820 + strh r1, [r0, #0x18] + bx lr + + thumb_func_start MOD11_0225D824 +MOD11_0225D824: ; 0x0225D824 + ldrb r0, [r0, #0x1b] + bx lr + + thumb_func_start MOD11_0225D828 +MOD11_0225D828: ; 0x0225D828 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r0, [r4, #0x1b] + cmp r0, #1 + bne _0225D836 + mov r0, #0 + strb r0, [r4, #0x1b] +_0225D836: + mov r0, #0x18 + ldrsh r1, [r4, r0] + cmp r1, #0 + ble _0225D84C + sub r1, r1, #1 + strh r1, [r4, #0x18] + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _0225D84C + mov r0, #1 + strb r0, [r4, #0x1a] +_0225D84C: + ldr r0, [r4] + bl FUN_0200C658 + cmp r0, #0 + bne _0225D858 + b _0225D984 +_0225D858: + ldrb r0, [r4, #0x1c] + cmp r0, #0 + bne _0225D8DA + mov r1, #0xfa + ldr r2, [r4, #0x10] + lsl r1, r1, #2 + add r2, r2, r1 + add r0, r4, #0 + ldr r1, _0225D988 ; =0x00004650 + add r0, #0x10 + str r2, [r4, #0x10] + cmp r2, r1 + blt _0225D886 + ldr r2, [r0] + sub r1, r2, r1 + str r1, [r0] + ldrb r0, [r4, #0x1a] + cmp r0, #1 + bne _0225D886 + mov r0, #1 + strb r0, [r4, #0x1c] + mov r0, #0 + strb r0, [r4, #0x1a] +_0225D886: + ldrb r0, [r4, #0x1c] + cmp r0, #0 + bne _0225D8DA + ldr r0, [r4, #0x10] + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + mov r2, #0xe + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + blx _ll_mul + add r5, r1, #0 + ldr r1, [r4, #8] + mov r2, #2 + add r6, r0, #0 + lsl r1, r1, #0x10 + mov r7, #0 + lsl r2, r2, #0xa + asr r1, r1, #0x10 + add r2, r6, r2 + adc r5, r7 + lsl r5, r5, #0x14 + lsr r2, r2, #0xc + orr r2, r5 + asr r5, r2, #0xb + lsr r5, r5, #0x14 + add r5, r2, r5 + ldr r3, [r4, #0xc] + asr r2, r5, #0xc + sub r2, r3, r2 + lsl r2, r2, #0x10 + ldr r0, [r4] + ldr r3, [r4, #0x14] + asr r2, r2, #0x10 + bl FUN_0200C750 +_0225D8DA: + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _0225D97E + ldrb r0, [r4, #0x1d] + cmp r0, #3 + bhi _0225D97E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0225D8F2: ; jump table + .short _0225D8FA - _0225D8F2 - 2 ; case 0 + .short _0225D912 - _0225D8F2 - 2 ; case 1 + .short _0225D934 - _0225D8F2 - 2 ; case 2 + .short _0225D962 - _0225D8F2 - 2 ; case 3 +_0225D8FA: + ldrb r0, [r4, #0x1e] + add r0, r0, #1 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1e] + cmp r0, #3 + bls _0225D97E + mov r0, #0 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] + b _0225D97E +_0225D912: + ldr r2, [r4, #0xc] + ldr r1, [r4, #8] + add r2, #8 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4] + ldr r3, [r4, #0x14] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C750 + mov r0, #1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] + b _0225D97E +_0225D934: + ldrb r0, [r4, #0x1e] + add r0, r0, #1 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bls _0225D97E + ldr r2, [r4, #0xc] + ldr r1, [r4, #8] + add r2, r2, #2 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4] + ldr r3, [r4, #0x14] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C750 + mov r0, #0 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] + b _0225D97E +_0225D962: + ldrb r0, [r4, #0x1e] + add r0, r0, #1 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bls _0225D97E + add r0, r4, #0 + bl MOD11_0225D80C + mov r0, #0 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] +_0225D97E: + ldr r0, [r4] + bl FUN_0200C5A8 +_0225D984: + pop {r3, r4, r5, r6, r7, pc} + nop +_0225D988: .word 0x00004650 + + thumb_func_start MOD11_0225D98C +MOD11_0225D98C: ; 0x0225D98C + mov r1, #0 + str r1, [r0, #0x10] + strb r1, [r0, #0x1c] + strb r1, [r0, #0x1d] + strb r1, [r0, #0x1e] + bx lr + + .section .data + ; 0x0225D998 + .incbin "baserom.nds", 0x1dd7d8, 0x2608 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index d94acc27..9b6d2115 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -654,6 +654,30 @@ FUN_0225D800 = 0x0225D800; FUN_0225D80C = 0x0225D80C; FUN_0225D820 = 0x0225D820; FUN_0225D824 = 0x0225D824; +FUN_021EEF0C = 0x021EEF0C; +FUN_021EEF68 = 0x021EEF68; +FUN_021EEF84 = 0x021EEF84; +FUN_021EEF98 = 0x021EEF98; +FUN_021EEF9C = 0x021EEF9C; +FUN_021EFBF4 = 0x021EFBF4; +FUN_021EFD8C = 0x021EFD8C; +FUN_021F45A4 = 0x021F45A4; +FUN_021F4698 = 0x021F4698; +FUN_021F4A30 = 0x021F4A30; +FUN_02211E7C = 0x02211E7C; +FUN_02211F5C = 0x02211F5C; +FUN_02212024 = 0x02212024; +FUN_02212048 = 0x02212048; +FUN_02212384 = 0x02212384; +FUN_022123A0 = 0x022123A0; +FUN_022123B0 = 0x022123B0; +FUN_022156C0 = 0x022156C0; +FUN_0221590C = 0x0221590C; +FUN_02215918 = 0x02215918; +FUN_0221594C = 0x0221594C; +FUN_02215988 = 0x02215988; +FUN_02215A44 = 0x02215A44; +FUN_022186F0 = 0x022186F0; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; -- cgit v1.2.3