diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-13 15:18:30 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-13 15:18:30 -0400 |
commit | 15656cc5427b31e9304143dee74d32f8e7dcf100 (patch) | |
tree | 9360406b87c6c27d6e5cb937231ea1813571e947 | |
parent | 6193b952c768a4db29f83c44b7eaf06928280357 (diff) |
Disassemble module 82
-rw-r--r-- | arm9/arm9.lcf | 25 | ||||
-rw-r--r-- | arm9/global.inc | 11 | ||||
-rw-r--r-- | arm9/modules/82/asm/module_82.s | 4455 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 5 |
4 files changed, 4493 insertions, 3 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index f2470541..2e310f7d 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -3141,7 +3141,17 @@ SECTIONS { SDK_OVERLAY_MODULE_82_ID = 82; SDK_OVERLAY.MODULE_82.ID = 82; SDK_OVERLAY.MODULE_82.START = .; - FILE_2EF000.o (.text) /* 0x2EB000 */ + module_82.o (.text) + module_82.o (.rodata) + module_82.o (.init) + SDK_OVERLAY.MODULE_82.SINIT_START = .; + module_82.o (.ctor) + module_82.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_82.SINIT_END = .; + . = ALIGN(32); + module_82.o (.sdata) + module_82.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_82.END = .; SDK_OVERLAY.MODULE_82.SIZE = SDK_OVERLAY.MODULE_82.END - SDK_OVERLAY.MODULE_82.START; @@ -3151,7 +3161,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_82.BSS_START = .; - FILE_2EF000.o (.bss) + module_82.o (.bss) + module_82.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_82.BSS_END = .; SDK_OVERLAY.MODULE_82.BSS_SIZE = SDK_OVERLAY.MODULE_82.BSS_END - SDK_OVERLAY.MODULE_82.BSS_START; @@ -4104,7 +4115,15 @@ SECTIONS { WRITEW 81; WRITEW 0; - OVERLAY_TABLE(MODULE_82, 82) + WRITEW 82; + WRITEW ADDR(.MODULE_82); + WRITEW SDK_OVERLAY.MODULE_82.SIZE; + WRITEW SDK_OVERLAY.MODULE_82.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_82.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_82.SINIT_END; + WRITEW 82; + WRITEW 0; + OVERLAY_TABLE(MODULE_83, 83) OVERLAY_TABLE(MODULE_84, 84) OVERLAY_TABLE(MODULE_85, 85) diff --git a/arm9/global.inc b/arm9/global.inc index d241c10e..ae314edd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5866,6 +5866,17 @@ .extern FUN_0200CA7C
.extern FUN_02033F04
.extern FUN_02068E1C
+.extern FUN_0202A524
+.extern FUN_0202A60C
+.extern FUN_0202A6B4
+.extern FUN_0202A754
+.extern FUN_0202A784
+.extern FUN_0202A838
+.extern FUN_022122E4
+.extern FUN_02212308
+.extern FUN_022123A8
+.extern FUN_02212474
+.extern FUN_02212480
.extern MOD04_021DD808
.extern MOD04_021DD984
.extern MOD04_021DD9DC
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s new file mode 100644 index 00000000..dad045e3 --- /dev/null +++ b/arm9/modules/82/asm/module_82.s @@ -0,0 +1,4455 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD82_0222D5C0 +MOD82_0222D5C0: ; 0x0222D5C0 + push {r3, r4} + ldr r3, _0222D5D8 ; =0x0222FB00 + mov r4, #1 + str r4, [r3] + mov r4, #0 + str r4, [r3, #4] + str r0, [r3, #8] + str r1, [r3, #0xc] + str r2, [r3, #0x10] + pop {r3, r4} + bx lr + nop +_0222D5D8: .word 0x0222FB00 + thumb_func_end MOD82_0222D5C0 + + thumb_func_start MOD82_0222D5DC +MOD82_0222D5DC: ; 0x0222D5DC + push {r3, lr} + ldr r1, _0222D7B8 ; =0x0222FB00 + ldr r0, [r1] + cmp r0, #0xa + bls _0222D5E8 + b _0222D7B4 +_0222D5E8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D5F4: ; jump table + .short _0222D7B4 - _0222D5F4 - 2 ; case 0 + .short _0222D7B4 - _0222D5F4 - 2 ; case 1 + .short _0222D60A - _0222D5F4 - 2 ; case 2 + .short _0222D7A8 - _0222D5F4 - 2 ; case 3 + .short _0222D654 - _0222D5F4 - 2 ; case 4 + .short _0222D7A8 - _0222D5F4 - 2 ; case 5 + .short _0222D6C4 - _0222D5F4 - 2 ; case 6 + .short _0222D7A8 - _0222D5F4 - 2 ; case 7 + .short _0222D736 - _0222D5F4 - 2 ; case 8 + .short _0222D7A8 - _0222D5F4 - 2 ; case 9 + .short _0222D7B4 - _0222D5F4 - 2 ; case 10 +_0222D60A: + bl FUN_022123A8 + cmp r0, #1 + beq _0222D618 + cmp r0, #7 + beq _0222D630 + pop {r3, pc} +_0222D618: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl FUN_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D630: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl FUN_02212480 + cmp r0, #0 + ble _0222D646 + ldr r0, _0222D7BC ; =0x0222FC00 + ldrb r1, [r0, #3] + ldr r0, _0222D7B8 ; =0x0222FB00 + b _0222D64C +_0222D646: + mov r1, #1 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 +_0222D64C: + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D654: + bl FUN_022123A8 + cmp r0, #1 + beq _0222D662 + cmp r0, #7 + beq _0222D67A + pop {r3, pc} +_0222D662: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl FUN_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D67A: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl FUN_02212480 + ldr r1, _0222D7C0 ; =0x00000A38 + cmp r0, r1 + bne _0222D692 + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0 + str r1, [r0, #4] + b _0222D6BE +_0222D692: + ldr r0, _0222D7BC ; =0x0222FC00 + ldr r0, [r0, #8] + ldrb r0, [r0] + cmp r0, #2 + beq _0222D6A2 + cmp r0, #5 + beq _0222D6AC + b _0222D6B6 +_0222D6A2: + mov r1, #2 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] + b _0222D6BE +_0222D6AC: + mov r1, #1 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] + b _0222D6BE +_0222D6B6: + mov r1, #4 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] +_0222D6BE: + bl MOD56_0221244C + pop {r3, pc} +_0222D6C4: + bl FUN_022123A8 + cmp r0, #1 + beq _0222D6D2 + cmp r0, #7 + beq _0222D6EA + pop {r3, pc} +_0222D6D2: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl FUN_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D6EA: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + ldr r2, _0222D7BC ; =0x0222FC00 + str r1, [r0] + ldrb r2, [r2, #3] + cmp r2, #5 + bhi _0222D728 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222D704: ; jump table + .short _0222D728 - _0222D704 - 2 ; case 0 + .short _0222D710 - _0222D704 - 2 ; case 1 + .short _0222D716 - _0222D704 - 2 ; case 2 + .short _0222D728 - _0222D704 - 2 ; case 3 + .short _0222D71C - _0222D704 - 2 ; case 4 + .short _0222D722 - _0222D704 - 2 ; case 5 +_0222D710: + mov r1, #0 + str r1, [r0, #4] + b _0222D730 +_0222D716: + sub r1, #0xd + str r1, [r0, #4] + b _0222D730 +_0222D71C: + sub r1, #0xb + str r1, [r0, #4] + b _0222D730 +_0222D722: + sub r1, #0xc + str r1, [r0, #4] + b _0222D730 +_0222D728: + mov r1, #4 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] +_0222D730: + bl MOD56_0221244C + pop {r3, pc} +_0222D736: + bl FUN_022123A8 + cmp r0, #1 + beq _0222D744 + cmp r0, #7 + beq _0222D75C + pop {r3, pc} +_0222D744: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + bl FUN_02212474 + bl MOD82_0222D99C + ldr r1, _0222D7B8 ; =0x0222FB00 + str r0, [r1, #4] + bl MOD56_0221244C + pop {r3, pc} +_0222D75C: + ldr r0, _0222D7B8 ; =0x0222FB00 + mov r1, #0xa + ldr r2, _0222D7BC ; =0x0222FC00 + str r1, [r0] + ldrb r2, [r2, #3] + cmp r2, #5 + bhi _0222D79A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222D776: ; jump table + .short _0222D79A - _0222D776 - 2 ; case 0 + .short _0222D782 - _0222D776 - 2 ; case 1 + .short _0222D79A - _0222D776 - 2 ; case 2 + .short _0222D788 - _0222D776 - 2 ; case 3 + .short _0222D78E - _0222D776 - 2 ; case 4 + .short _0222D794 - _0222D776 - 2 ; case 5 +_0222D782: + mov r1, #0 + str r1, [r0, #4] + b _0222D7A2 +_0222D788: + mov r1, #1 + str r1, [r0, #4] + b _0222D7A2 +_0222D78E: + mov r1, #2 + str r1, [r0, #4] + b _0222D7A2 +_0222D794: + sub r1, #0xc + str r1, [r0, #4] + b _0222D7A2 +_0222D79A: + mov r1, #4 + ldr r0, _0222D7B8 ; =0x0222FB00 + mvn r1, r1 + str r1, [r0, #4] +_0222D7A2: + bl MOD56_0221244C + pop {r3, pc} +_0222D7A8: + mov r0, #0xa + str r0, [r1] + sub r0, #0xe + str r0, [r1, #4] + bl MOD56_0221244C +_0222D7B4: + pop {r3, pc} + nop +_0222D7B8: .word 0x0222FB00 +_0222D7BC: .word 0x0222FC00 +_0222D7C0: .word 0x00000A38 + thumb_func_end MOD82_0222D5DC + + thumb_func_start MOD82_0222D7C4 +MOD82_0222D7C4: ; 0x0222D7C4 + ldr r1, _0222D7E0 ; =0x0222FB00 + ldr r0, [r1] + cmp r0, #1 + beq _0222D7D2 + cmp r0, #0xa + beq _0222D7D6 + b _0222D7DC +_0222D7D2: + mov r0, #1 + bx lr +_0222D7D6: + mov r0, #1 + str r0, [r1] + bx lr +_0222D7DC: + mov r0, #0 + bx lr + .align 2, 0 +_0222D7E0: .word 0x0222FB00 + thumb_func_end MOD82_0222D7C4 + + thumb_func_start MOD82_0222D7E4 +MOD82_0222D7E4: ; 0x0222D7E4 + ldr r0, _0222D7EC ; =0x0222FB00 + ldr r0, [r0, #4] + bx lr + nop +_0222D7EC: .word 0x0222FB00 + thumb_func_end MOD82_0222D7E4 + + thumb_func_start MOD82_0222D7F0 +MOD82_0222D7F0: ; 0x0222D7F0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl FUN_022122E4 + ldr r0, _0222D830 ; =0x0222FB00 + sub r1, r4, #1 + strb r1, [r0, #0x14] + mov r0, #2 + str r0, [sp] + ldr r0, _0222D834 ; =0x0222F8E0 + ldr r1, _0222D838 ; =0x0222FB14 + ldr r3, _0222D83C ; =0x0222FC03 + mov r2, #1 + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D81E + ldr r0, _0222D830 ; =0x0222FB00 + mov r1, #2 + str r1, [r0] + add sp, #4 + pop {r3, r4, pc} +_0222D81E: + ldr r0, _0222D830 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222D830: .word 0x0222FB00 +_0222D834: .word 0x0222F8E0 +_0222D838: .word 0x0222FB14 +_0222D83C: .word 0x0222FC03 + thumb_func_end MOD82_0222D7F0 + + thumb_func_start MOD82_0222D840 +MOD82_0222D840: ; 0x0222D840 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0222D88C ; =0x0222FC00 + add r6, r2, #0 + add r4, r1, #0 + str r6, [r0, #8] + bl FUN_022122E4 + ldr r0, _0222D890 ; =0x0222FB00 + sub r1, r5, #1 + strb r1, [r0, #0x14] + sub r1, r4, #1 + strb r1, [r0, #0x15] + ldr r0, _0222D894 ; =0x00000A38 + ldr r1, _0222D898 ; =0x0222FB14 + str r0, [sp] + ldr r0, _0222D89C ; =0x0222F92C + mov r2, #2 + add r3, r6, #0 + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D87A + ldr r0, _0222D890 ; =0x0222FB00 + mov r1, #4 + str r1, [r0] + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0222D87A: + ldr r0, _0222D890 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222D88C: .word 0x0222FC00 +_0222D890: .word 0x0222FB00 +_0222D894: .word 0x00000A38 +_0222D898: .word 0x0222FB14 +_0222D89C: .word 0x0222F92C + thumb_func_end MOD82_0222D840 + + thumb_func_start MOD82_0222D8A0 +MOD82_0222D8A0: ; 0x0222D8A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_022122E4 + ldr r0, _0222D904 ; =0x0222FB14 + add r1, r7, #0 + mov r2, #0xe4 + bl memcpy + ldr r0, _0222D908 ; =0x0222FBE0 + sub r1, r5, #1 + strb r1, [r0, #0x18] + sub r1, r4, #1 + strb r1, [r0, #0x19] + ldr r3, _0222D90C ; =0x0222FBFB + ldr r2, _0222D910 ; =0x0222FB0C + strb r6, [r0, #0x1a] + mov r1, #8 +_0222D8CA: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + bne _0222D8CA + mov r0, #2 + str r0, [sp] + ldr r0, _0222D914 ; =0x0222F978 + ldr r1, _0222D904 ; =0x0222FB14 + ldr r3, _0222D918 ; =0x0222FC03 + mov r2, #0xef + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D8F2 + ldr r0, _0222D91C ; =0x0222FB00 + mov r1, #6 + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} +_0222D8F2: + ldr r0, _0222D91C ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, r4, r5, r6, r7, pc} + nop +_0222D904: .word 0x0222FB14 +_0222D908: .word 0x0222FBE0 +_0222D90C: .word 0x0222FBFB +_0222D910: .word 0x0222FB0C +_0222D914: .word 0x0222F978 +_0222D918: .word 0x0222FC03 +_0222D91C: .word 0x0222FB00 + thumb_func_end MOD82_0222D8A0 + + thumb_func_start MOD82_0222D920 +MOD82_0222D920: ; 0x0222D920 + push {r3, lr} + bl FUN_022122E4 + mov r0, #2 + str r0, [sp] + ldr r0, _0222D954 ; =0x0222F9C4 + ldr r1, _0222D958 ; =0x0222FB14 + ldr r3, _0222D95C ; =0x0222FC03 + mov r2, #0 + bl MOD82_0222D964 + cmp r0, #0 + beq _0222D942 + ldr r0, _0222D960 ; =0x0222FB00 + mov r1, #8 + str r1, [r0] + pop {r3, pc} +_0222D942: + ldr r0, _0222D960 ; =0x0222FB00 + mov r1, #0xa + str r1, [r0] + sub r1, #0xf + str r1, [r0, #4] + bl MOD56_0221244C + pop {r3, pc} + nop +_0222D954: .word 0x0222F9C4 +_0222D958: .word 0x0222FB14 +_0222D95C: .word 0x0222FC03 +_0222D960: .word 0x0222FB00 + thumb_func_end MOD82_0222D920 + + thumb_func_start MOD82_0222D964 +MOD82_0222D964: ; 0x0222D964 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + ldr r1, [sp, #0x18] + str r3, [sp] + str r1, [sp, #4] + add r4, r2, #0 + ldr r1, _0222D998 ; =0x0222FB00 + add r2, r5, #0 + ldr r1, [r1, #8] + add r3, r4, #0 + bl FUN_02212308 + cmp r0, #0 + beq _0222D98A + cmp r0, #1 + beq _0222D990 + cmp r0, #2 + b _0222D990 +_0222D98A: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222D990: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0222D998: .word 0x0222FB00 + thumb_func_end MOD82_0222D964 + + thumb_func_start MOD82_0222D99C +MOD82_0222D99C: ; 0x0222D99C + push {r4, lr} + cmp r0, #0x20 + bhi _0222DA14 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222D9AE: ; jump table + .short _0222D9F0 - _0222D9AE - 2 ; case 0 + .short _0222D9F0 - _0222D9AE - 2 ; case 1 + .short _0222D9F6 - _0222D9AE - 2 ; case 2 + .short _0222D9F0 - _0222D9AE - 2 ; case 3 + .short _0222D9F0 - _0222D9AE - 2 ; case 4 + .short _0222D9F0 - _0222D9AE - 2 ; case 5 + .short _0222D9F0 - _0222D9AE - 2 ; case 6 + .short _0222DA14 - _0222D9AE - 2 ; case 7 + .short _0222D9F6 - _0222D9AE - 2 ; case 8 + .short _0222D9F0 - _0222D9AE - 2 ; case 9 + .short _0222D9F0 - _0222D9AE - 2 ; case 10 + .short _0222D9FC - _0222D9AE - 2 ; case 11 + .short _0222DA02 - _0222D9AE - 2 ; case 12 + .short _0222DA02 - _0222D9AE - 2 ; case 13 + .short _0222D9F0 - _0222D9AE - 2 ; case 14 + .short _0222DA0E - _0222D9AE - 2 ; case 15 + .short _0222DA08 - _0222D9AE - 2 ; case 16 + .short _0222DA08 - _0222D9AE - 2 ; case 17 + .short _0222DA08 - _0222D9AE - 2 ; case 18 + .short _0222DA08 - _0222D9AE - 2 ; case 19 + .short _0222D9F0 - _0222D9AE - 2 ; case 20 + .short _0222D9F0 - _0222D9AE - 2 ; case 21 + .short _0222D9F0 - _0222D9AE - 2 ; case 22 + .short _0222D9F0 - _0222D9AE - 2 ; case 23 + .short _0222DA14 - _0222D9AE - 2 ; case 24 + .short _0222D9F6 - _0222D9AE - 2 ; case 25 + .short _0222DA08 - _0222D9AE - 2 ; case 26 + .short _0222DA08 - _0222D9AE - 2 ; case 27 + .short _0222DA08 - _0222D9AE - 2 ; case 28 + .short _0222DA08 - _0222D9AE - 2 ; case 29 + .short _0222DA0E - _0222D9AE - 2 ; case 30 + .short _0222DA08 - _0222D9AE - 2 ; case 31 + .short _0222D9F0 - _0222D9AE - 2 ; case 32 +_0222D9F0: + mov r4, #4 + mvn r4, r4 + b _0222DA18 +_0222D9F6: + mov r4, #4 + mvn r4, r4 + b _0222DA18 +_0222D9FC: + mov r4, #6 + mvn r4, r4 + b _0222DA18 +_0222DA02: + mov r4, #6 + mvn r4, r4 + b _0222DA18 +_0222DA08: + mov r4, #1 + mvn r4, r4 + b _0222DA18 +_0222DA0E: + mov r4, #1 + mvn r4, r4 + b _0222DA18 +_0222DA14: + mov r4, #4 + mvn r4, r4 +_0222DA18: + mov r0, #4 + mvn r0, r0 + cmp r4, r0 + beq _0222DA30 + bl FUN_020A71F8 + cmp r0, #9 + beq _0222DA2C + mov r4, #5 + mvn r4, r4 +_0222DA2C: + bl MOD04_021DD6F0 +_0222DA30: + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD82_0222D99C + + thumb_func_start MOD82_0222DA34 +MOD82_0222DA34: ; 0x0222DA34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _0222DA48 + cmp r0, #1 + beq _0222DB34 + b _0222DB4A +_0222DA48: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0222DB50 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _0222DB54 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r2, #5 + mov r0, #3 + mov r1, #0x44 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222DB58 ; =0x00000EC8 + add r0, r6, #0 + mov r2, #0x44 + bl FUN_02006268 + ldr r2, _0222DB58 ; =0x00000EC8 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x44 + bl FUN_02016B94 + str r0, [r4, #4] + ldr r0, _0222DB5C ; =0x0222FC0C + add r2, sp, #0 + ldr r3, _0222DB60 ; =0x0222F814 + str r4, [r0] + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r7, #0 + bl FUN_02016BBC + mov r0, #0xb + mov r1, #0x20 + mov r2, #0x44 + bl FUN_0200AA90 + ldr r1, _0222DB64 ; =0x00000B78 + ldr r2, _0222DB68 ; =0x0000024E + str r0, [r4, r1] + mov r0, #0 + mov r1, #0x1a + mov r3, #0x44 + bl FUN_0200A86C + ldr r1, _0222DB6C ; =0x00000B7C + mov r2, #0x25 + str r0, [r4, r1] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #4 + mov r3, #0x44 + bl FUN_0200A86C + mov r1, #0x2e + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r2, _0222DB70 ; =0x00000265 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x44 + bl FUN_0200A86C + ldr r1, _0222DB74 ; =0x00000B84 + str r0, [r4, r1] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + add r1, r6, #0 + bl MOD82_0222DD04 + add r0, r4, #0 + bl MOD82_0222DFD4 + mov r1, #0 + mov r0, #0x34 + add r2, r1, #0 + bl FUN_0200433C + ldr r1, _0222DB78 ; =0x00020020 + mov r0, #0x44 + bl FUN_02016998 + str r0, [r4, #0x24] + add r0, #0x1f + mov r1, #0x1f + bic r0, r1 + mov r1, #2 + lsl r1, r1, #0x10 + mov r2, #0 + bl tempName_NNS_FndCreateExpHeapEx + str r0, [r4, #0x28] + mov r0, #1 + str r0, [r5] + b _0222DB4A +_0222DB34: + bl FUN_02088858 + bl FUN_020888BC + bl FUN_0202E49C + mov r0, #0 + str r0, [r5] + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222DB4A: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222DB50: .word 0xFFFFE0FF +_0222DB54: .word 0x04001000 +_0222DB58: .word 0x00000EC8 +_0222DB5C: .word 0x0222FC0C +_0222DB60: .word 0x0222F814 +_0222DB64: .word 0x00000B78 +_0222DB68: .word 0x0000024E +_0222DB6C: .word 0x00000B7C +_0222DB70: .word 0x00000265 +_0222DB74: .word 0x00000B84 +_0222DB78: .word 0x00020020 + thumb_func_end MOD82_0222DA34 + + thumb_func_start MOD82_0222DB7C +MOD82_0222DB7C: ; 0x0222DB7C + push {r4, r5, r6, lr} + add r4, r1, #0 + bl FUN_02006278 + add r5, r0, #0 + bl MOD04_021DD984 + bl MOD82_0222D5DC + bl MOD04_021DD984 + ldr r1, [r4] + cmp r1, #5 + bhi _0222DC24 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222DBA4: ; jump table + .short _0222DBB0 - _0222DBA4 - 2 ; case 0 + .short _0222DBCC - _0222DBA4 - 2 ; case 1 + .short _0222DBE0 - _0222DBA4 - 2 ; case 2 + .short _0222DBEE - _0222DBA4 - 2 ; case 3 + .short _0222DC02 - _0222DBA4 - 2 ; case 4 + .short _0222DC20 - _0222DBA4 - 2 ; case 5 +_0222DBB0: + bl FUN_0202E4C8 + cmp r0, #0 + beq _0222DC24 + ldr r1, [r5, #0x28] + ldr r0, _0222DC38 ; =0x0222FC0C + str r1, [r0, #4] + ldr r0, _0222DC3C ; =MOD82_0222DF74 + ldr r1, _0222DC40 ; =MOD82_0222DF9C + bl MOD04_021DD968 + mov r0, #1 + str r0, [r4] + b _0222DC24 +_0222DBCC: + ldr r3, [r5, #0x10] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222DC44 ; =0x0222FA0C + add r0, r5, #0 + ldr r2, [r2, r6] + blx r2 + str r0, [r4] + b _0222DC24 +_0222DBE0: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DC24 + mov r0, #3 + str r0, [r4] + b _0222DC24 +_0222DBEE: + ldr r3, [r5, #0x10] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222DC48 ; =0x0222FA10 + add r0, r5, #0 + ldr r2, [r2, r6] + blx r2 + str r0, [r4] + b _0222DC24 +_0222DC02: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DC24 + ldr r3, [r5, #0x10] + mov r2, #0xc + add r6, r3, #0 + mul r6, r2 + ldr r2, _0222DC4C ; =0x0222FA14 + ldr r1, [r4] + ldr r2, [r2, r6] + add r0, r5, #0 + blx r2 + str r0, [r4] + b _0222DC24 +_0222DC20: + mov r0, #1 + pop {r4, r5, r6, pc} +_0222DC24: + mov r0, #0xba + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0222DC32 + bl FUN_0201FDEC +_0222DC32: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0222DC38: .word 0x0222FC0C +_0222DC3C: .word MOD82_0222DF74 +_0222DC40: .word MOD82_0222DF9C +_0222DC44: .word 0x0222FA0C +_0222DC48: .word 0x0222FA10 +_0222DC4C: .word 0x0222FA14 + thumb_func_end MOD82_0222DB7C + + thumb_func_start MOD82_0222DC50 +MOD82_0222DC50: ; 0x0222DC50 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x24] + bl FUN_02016A18 + bl FUN_020888CC + bl FUN_02088868 + add r0, r4, #0 + bl MOD82_0222DFFC + ldr r0, _0222DCB8 ; =0x00000B84 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x2e + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0222DCBC ; =0x00000B7C + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0222DCC0 ; =0x00000B78 + ldr r0, [r4, r0] + bl FUN_0200AB18 + add r0, r4, #0 + bl MOD82_0222DD20 + bl FUN_0202E4F0 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x44 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222DCB8: .word 0x00000B84 +_0222DCBC: .word 0x00000B7C +_0222DCC0: .word 0x00000B78 + thumb_func_end MOD82_0222DC50 + + thumb_func_start MOD82_0222DCC4 +MOD82_0222DCC4: ; 0x0222DCC4 + push {r3, lr} + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _0222DCDC ; =0x027E0000 + ldr r1, _0222DCE0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + .align 2, 0 +_0222DCDC: .word 0x027E0000 +_0222DCE0: .word 0x00003FF8 + thumb_func_end MOD82_0222DCC4 + + thumb_func_start MOD82_0222DCE4 +MOD82_0222DCE4: ; 0x0222DCE4 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0222DD00 ; =0x0222F834 + add r3, sp, #0 + mov r2, #5 +_0222DCEE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DCEE + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_0222DD00: .word 0x0222F834 + thumb_func_end MOD82_0222DCE4 + + thumb_func_start MOD82_0222DD04 +MOD82_0222DD04: ; 0x0222DD04 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_0200628C + mov r1, #0 + str r0, [r4] + add r0, r4, #0 + add r2, r1, #0 + str r1, [r4, #0x10] + bl MOD82_0222DFCC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222DD04 + + thumb_func_start MOD82_0222DD20 +MOD82_0222DD20: ; 0x0222DD20 + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DD20 + + thumb_func_start MOD82_0222DD24 +MOD82_0222DD24: ; 0x0222DD24 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0222DD50 ; =0x0222F824 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x44 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0222DD50: .word 0x0222F824 + thumb_func_end MOD82_0222DD24 + + thumb_func_start MOD82_0222DD54 +MOD82_0222DD54: ; 0x0222DD54 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x44 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + ldr r1, _0222DE40 ; =0x00000BA4 + mov r0, #0xa + add r1, r6, r1 + mov r2, #0x44 + bl FUN_02008C9C + mov r1, #0xba + lsl r1, r1, #4 + str r0, [r6, r1] + add r0, r1, #4 + mov r2, #1 + add r0, r6, r0 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + ldr r7, _0222DE44 ; =0x00000CCC + mov r4, #0 + add r5, r6, #0 +_0222DD9C: + mov r0, #2 + add r1, r4, #0 + mov r2, #0x44 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222DD9C + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x44 + str r0, [sp, #8] + ldr r0, _0222DE44 ; =0x00000CCC + mov r1, #0x68 + ldr r0, [r6, r0] + mov r2, #0x23 + bl FUN_02008F34 + ldr r1, _0222DE48 ; =0x00000CDC + mov r3, #0 + str r0, [r6, r1] + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x44 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x68 + mov r2, #9 + bl FUN_02008FEC + mov r1, #0xce + lsl r1, r1, #4 + str r0, [r6, r1] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x44 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x68 + mov r2, #0x24 + mov r3, #1 + bl FUN_020090AC + ldr r1, _0222DE4C ; =0x00000CE4 + mov r2, #0x25 + str r0, [r6, r1] + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x44 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x68 + mov r3, #1 + bl FUN_020090AC + ldr r1, _0222DE50 ; =0x00000CE8 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009A50 + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009CF0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222DE40: .word 0x00000BA4 +_0222DE44: .word 0x00000CCC +_0222DE48: .word 0x00000CDC +_0222DE4C: .word 0x00000CE4 +_0222DE50: .word 0x00000CE8 + thumb_func_end MOD82_0222DD54 + + thumb_func_start MOD82_0222DE54 +MOD82_0222DE54: ; 0x0222DE54 + push {r3, r4} + mov r4, #0xba + lsl r4, r4, #4 + ldr r1, [r1, r4] + str r1, [r0] + str r2, [r0, #4] + mov r2, #0 + mov r1, #1 + str r2, [r0, #0x10] + lsl r1, r1, #0xc + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + strh r2, [r0, #0x20] + mov r1, #1 + str r1, [r0, #0x24] + str r3, [r0, #0x28] + mov r1, #0x44 + str r1, [r0, #0x2c] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DE54 + + thumb_func_start MOD82_0222DE80 +MOD82_0222DE80: ; 0x0222DE80 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, _0222DF28 ; =0x00000CCC + str r1, [sp, #0x10] + ldr r0, [r5, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + str r0, [sp, #0x1c] + add r0, r2, #0 + add r0, #0xc + ldr r0, [r5, r0] + add r2, #0x40 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r5, r2 + add r2, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r2, _0222DF2C ; =0x00000D0C + add r0, sp, #0x2c + add r1, r5, #0 + add r2, r5, r2 + mov r3, #1 + bl MOD82_0222DE54 + ldr r4, _0222DF30 ; =0x0222F80C + ldr r7, _0222DF34 ; =0x00000D78 + mov r6, #0 +_0222DED4: + ldrh r0, [r4] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldrh r0, [r4, #2] + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + ldr r1, _0222DF34 ; =0x00000D78 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0222DF34 ; =0x00000D78 + add r1, r6, #0 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #2 + blt _0222DED4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl FUN_02033E74 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222DF28: .word 0x00000CCC +_0222DF2C: .word 0x00000D0C +_0222DF30: .word 0x0222F80C +_0222DF34: .word 0x00000D78 + thumb_func_end MOD82_0222DE80 + + thumb_func_start MOD82_0222DF38 +MOD82_0222DF38: ; 0x0222DF38 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + ldr r5, _0222DF68 ; =0x0222F804 + add r4, sp, #4 + ldrh r6, [r5] + add r3, sp, #4 + strh r6, [r4] + ldrh r6, [r5, #2] + strh r6, [r4, #2] + ldrh r6, [r5, #4] + ldrh r5, [r5, #6] + strh r6, [r4, #4] + strh r5, [r4, #6] + strb r1, [r4, #2] + strh r2, [r4, #6] + mov r1, #0x44 + str r1, [sp] + add r1, r3, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_02002198 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222DF68: .word 0x0222F804 + thumb_func_end MOD82_0222DF38 + + thumb_func_start MOD82_0222DF6C +MOD82_0222DF6C: ; 0x0222DF6C + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DF6C + + thumb_func_start MOD82_0222DF74 +MOD82_0222DF74: ; 0x0222DF74 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + ldr r0, _0222DF98 ; =0x0222FC0C + add r1, r5, #0 + ldr r0, [r0, #4] + add r2, r4, #0 + bl tempName_NNS_FndAllocFromExpHeapEx + add r4, r0, #0 + add r0, r6, #0 + bl OS_RestoreInterrupts + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222DF98: .word 0x0222FC0C + thumb_func_end MOD82_0222DF74 + + thumb_func_start MOD82_0222DF9C +MOD82_0222DF9C: ; 0x0222DF9C + push {r3, r4, r5, lr} + add r5, r1, #0 + beq _0222DFB8 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0222DFBC ; =0x0222FC0C + add r1, r5, #0 + ldr r0, [r0, #4] + bl FUN_020ADDF0 + add r0, r4, #0 + bl OS_RestoreInterrupts +_0222DFB8: + pop {r3, r4, r5, pc} + nop +_0222DFBC: .word 0x0222FC0C + thumb_func_end MOD82_0222DF9C + + thumb_func_start MOD82_0222DFC0 +MOD82_0222DFC0: ; 0x0222DFC0 + push {r3, lr} + bl MOD04_021DDB08 + mov r1, #3 + sub r0, r1, r0 + pop {r3, pc} + thumb_func_end MOD82_0222DFC0 + + thumb_func_start MOD82_0222DFCC +MOD82_0222DFCC: ; 0x0222DFCC + str r1, [r0, #0x14] + str r2, [r0, #0x18] + bx lr + .align 2, 0 + thumb_func_end MOD82_0222DFCC + + thumb_func_start MOD82_0222DFD4 +MOD82_0222DFD4: ; 0x0222DFD4 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222DCE4 + bl MOD82_0222DD24 + add r0, r4, #0 + bl MOD82_0222DD54 + add r0, r4, #0 + bl MOD82_0222DE80 + ldr r0, _0222DFF8 ; =MOD82_0222DCC4 + mov r1, #0 + bl FUN_02015F10 + pop {r4, pc} + nop +_0222DFF8: .word MOD82_0222DCC4 + thumb_func_end MOD82_0222DFD4 + + thumb_func_start MOD82_0222DFFC +MOD82_0222DFFC: ; 0x0222DFFC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0222E048 ; =0x00000CDC + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009E04 + ldr r7, _0222E04C ; =0x00000CCC + mov r4, #0 + add r5, r6, #0 +_0222E018: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E018 + mov r0, #0xba + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_0201FD58 + mov r0, #0xba + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E048: .word 0x00000CDC +_0222E04C: .word 0x00000CCC + thumb_func_end MOD82_0222DFFC + + thumb_func_start MOD82_0222E050 +MOD82_0222E050: ; 0x0222E050 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD82_0222E4AC + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x44 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #4] + bl MOD82_0222E15C + add r0, r4, #0 + bl MOD82_0222E264 + add r0, r4, #0 + bl MOD82_0222E35C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl FUN_02033288 + add r0, r4, #0 + bl MOD82_0222F6D0 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_0202A444 + str r0, [r4, #0x38] + str r0, [r4, #0x3c] + mov r0, #1 + str r0, [r4, #0x44] + ldr r0, _0222E110 ; =0x00000EB4 + mov r1, #0 + str r1, [r4, r0] + bl MOD04_021DDD7C + cmp r0, #0 + bne _0222E104 + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _0222E0FE + ldr r0, _0222E114 ; =0x00000F0F + mov r1, #0x2e + str r0, [sp] + lsl r1, r1, #6 + mov r2, #1 + ldr r1, [r4, r1] + add r0, r4, #0 + add r3, r2, #0 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #2 + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F700 + b _0222E108 +_0222E0FE: + mov r0, #0 + str r0, [r4, #0x1c] + b _0222E108 +_0222E104: + mov r0, #0x31 + str r0, [r4, #0x1c] +_0222E108: + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + nop +_0222E110: .word 0x00000EB4 +_0222E114: .word 0x00000F0F + thumb_func_end MOD82_0222E050 + + thumb_func_start MOD82_0222E118 +MOD82_0222E118: ; 0x0222E118 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222DFC0 + bl FUN_02033EEC + ldr r1, [r4, #0x1c] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0222E134 ; =0x0222FA18 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0222E134: .word 0x0222FA18 + thumb_func_end MOD82_0222E118 + + thumb_func_start MOD82_0222E138 +MOD82_0222E138: ; 0x0222E138 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222E504 + add r0, r4, #0 + bl MOD82_0222E474 + ldr r0, [r4, #4] + bl MOD82_0222E240 + ldr r0, [r4, #0x14] + str r0, [r4, #0x10] + cmp r0, #0 + bne _0222E158 + mov r0, #5 + pop {r4, pc} +_0222E158: + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD82_0222E138 + + thumb_func_start MOD82_0222E15C +MOD82_0222E15C: ; 0x0222E15C + push {r3, r4, r5, lr} + sub sp, #0x70 + ldr r5, _0222E230 ; =0x0222F894 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x54 + 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, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0222E234 ; =0x0222F878 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r5, _0222E238 ; =0x0222F8B0 + 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, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _0222E23C ; =0x0222F85C + 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, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x44 + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x44 + bl FUN_02017F18 + add sp, #0x70 + pop {r3, r4, r5, pc} + nop +_0222E230: .word 0x0222F894 +_0222E234: .word 0x0222F878 +_0222E238: .word 0x0222F8B0 +_0222E23C: .word 0x0222F85C + thumb_func_end MOD82_0222E15C + + thumb_func_start MOD82_0222E240 +MOD82_0222E240: ; 0x0222E240 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD82_0222E240 + + thumb_func_start MOD82_0222E264 +MOD82_0222E264: ; 0x0222E264 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r2, #0 + str r2, [sp] + mov r0, #0x44 + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r3, #0 + str r3, [sp] + mov r0, #0x44 + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + mov r2, #4 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x44 + bl FUN_02002EEC + mov r1, #0x1a + mov r0, #4 + lsl r1, r1, #4 + mov r2, #0x44 + bl FUN_02002EEC + ldr r0, [r5] + ldr r0, [r0, #0x10] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x44 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x44 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0 + mov r0, #0x36 + str r1, [sp] + lsl r0, r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #2 + add r2, r4, #0 + mov r3, #1 + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #4 + add r2, r4, #0 + mov r3, #1 + bl FUN_020068C8 + mov r1, #0 + mov r0, #0x36 + str r1, [sp] + lsl r0, r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #9 + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #0xa + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD82_0222E264 + + thumb_func_start MOD82_0222E35C +MOD82_0222E35C: ; 0x0222E35C + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #4 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa4 + mov r1, #0x37 + str r0, [sp, #0x10] + lsl r1, r1, #6 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + bl FUN_02019064 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0xe + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x94 + mov r1, #0xda + str r0, [sp, #0x10] + lsl r1, r1, #4 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x1a + bl FUN_02019064 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0xe + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x9c + mov r1, #0xd9 + str r0, [sp, #0x10] + lsl r1, r1, #4 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #0x1a + bl FUN_02019064 + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + mov r2, #1 + mov r1, #0xdb + lsl r1, r1, #4 + str r2, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0x85 + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + add r1, r4, r1 + mov r3, #4 + bl FUN_02019064 + mov r0, #0xdb + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #6 + bl FUN_02019620 + mov r3, #1 + ldr r0, _0222E46C ; =0x00010406 + str r3, [sp] + str r0, [sp, #4] + ldr r1, _0222E470 ; =0x00000B8C + mov r0, #0xdb + lsl r0, r0, #4 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r2, #0 + bl MOD82_0222F62C + mov r0, #0x13 + str r0, [sp] + mov r1, #0x1b + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + str r0, [sp, #0x10] + lsl r1, r1, #7 + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + add sp, #0x14 + pop {r3, r4, pc} + nop +_0222E46C: .word 0x00010406 +_0222E470: .word 0x00000B8C + thumb_func_end MOD82_0222E35C + + thumb_func_start MOD82_0222E474 +MOD82_0222E474: ; 0x0222E474 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xdb + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + thumb_func_end MOD82_0222E474 + + thumb_func_start MOD82_0222E4AC +MOD82_0222E4AC: ; 0x0222E4AC + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb4 + mov r1, #0x44 + bl FUN_020219F4 + ldr r1, _0222E4F4 ; =0x00000B88 + str r0, [r4, r1] + mov r0, #4 + mov r1, #0x44 + bl FUN_020219F4 + mov r1, #0xb9 + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #3 + mov r1, #0x44 + bl FUN_020219F4 + ldr r1, _0222E4F8 ; =0x00000B94 + str r0, [r4, r1] + sub r1, #0x18 + ldr r0, [r4, r1] + mov r1, #0xa + bl FUN_0200A914 + ldr r1, _0222E4FC ; =0x00000B8C + str r0, [r4, r1] + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x44 + bl FUN_020219F4 + ldr r1, _0222E500 ; =0x00000B98 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_0222E4F4: .word 0x00000B88 +_0222E4F8: .word 0x00000B94 +_0222E4FC: .word 0x00000B8C +_0222E500: .word 0x00000B98 + thumb_func_end MOD82_0222E4AC + + thumb_func_start MOD82_0222E504 +MOD82_0222E504: ; 0x0222E504 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222E534 ; =0x00000B98 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E538 ; =0x00000B8C + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E53C ; =0x00000B94 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0xb9 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E540 ; =0x00000B88 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .align 2, 0 +_0222E534: .word 0x00000B98 +_0222E538: .word 0x00000B8C +_0222E53C: .word 0x00000B94 +_0222E540: .word 0x00000B88 + thumb_func_end MOD82_0222E504 + + thumb_func_start MOD82_0222E544 +MOD82_0222E544: ; 0x0222E544 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E56C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222E570 ; =0x00000B84 + mov r2, #0x10 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #1 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222E56C: .word 0x00000F0F +_0222E570: .word 0x00000B84 + thumb_func_end MOD82_0222E544 + + thumb_func_start MOD82_0222E574 +MOD82_0222E574: ; 0x0222E574 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222E5CC + sub r1, r1, #1 + cmp r0, r1 + bne _0222E5A8 + bl FUN_020332DC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x2c + str r0, [r4, #0x1c] + b _0222E5CC +_0222E5A8: + ldr r0, _0222E5D4 ; =0x00000F0F + mov r1, #0x2e + str r0, [sp] + lsl r1, r1, #6 + mov r2, #1 + ldr r1, [r4, r1] + add r0, r4, #0 + add r3, r2, #0 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #2 + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F700 +_0222E5CC: + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222E5D4: .word 0x00000F0F + thumb_func_end MOD82_0222E574 + + thumb_func_start MOD82_0222E5D8 +MOD82_0222E5D8: ; 0x0222E5D8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E600 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + mov r1, #0x2e + lsl r1, r1, #6 + ldr r1, [r4, r1] + mov r2, #8 + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0x32 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222E600: .word 0x00000F0F + thumb_func_end MOD82_0222E5D8 + + thumb_func_start MOD82_0222E604 +MOD82_0222E604: ; 0x0222E604 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222E656 + sub r1, r1, #1 + cmp r0, r1 + bne _0222E636 + bl MOD04_021DDD7C + cmp r0, #0 + bne _0222E630 + mov r0, #0 + str r0, [r4, #0x1c] + b _0222E656 +_0222E630: + mov r0, #0x27 + str r0, [r4, #0x1c] + b _0222E656 +_0222E636: + bl MOD04_021DDD7C + cmp r0, #0 + bne _0222E64C + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x2c + b _0222E64E +_0222E64C: + mov r0, #0x27 +_0222E64E: + str r0, [r4, #0x1c] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x20] +_0222E656: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222E604 + + thumb_func_start MOD82_0222E65C +MOD82_0222E65C: ; 0x0222E65C + push {r4, lr} + add r4, r0, #0 + add r0, #0x2c + mov r1, #2 + mov r2, #1 + mov r3, #0x14 + bl MOD04_021DDEE0 + mov r0, #2 + bl MOD04_021DDE7C + bl MOD04_021DDDCC + mov r0, #3 + str r0, [r4, #0x1c] + pop {r4, pc} + thumb_func_end MOD82_0222E65C + + thumb_func_start MOD82_0222E67C +MOD82_0222E67C: ; 0x0222E67C + push {r3, r4, lr} + sub sp, #0x44 + add r4, r0, #0 + bl MOD04_021DDCE8 + bl MOD04_021DDD7C + cmp r0, #0 + beq _0222E6E8 + bl MOD04_021DDC1C + cmp r0, #4 + beq _0222E6DE + cmp r0, #7 + beq _0222E6A0 + cmp r0, #8 + beq _0222E6C4 + b _0222E6E8 +_0222E6A0: + add r0, sp, #4 + bl MOD04_021DD808 + ldr r1, _0222E6F0 ; =0x00000EB8 + str r0, [r4, r1] + ldr r2, [sp, #4] + add r0, r1, #4 + str r2, [r4, r0] + bl MOD04_021DD6F0 + bl MOD04_021DDBBC + add r0, r4, #0 + bl MOD82_0222F724 + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E6E8 +_0222E6C4: + add r0, sp, #0 + bl MOD04_021DD808 + add r0, r4, #0 + bl MOD82_0222F724 + mov r1, #0x33 + mov r0, #0x3b + str r1, [r4, #0x1c] + sub r1, #0x35 + lsl r0, r0, #6 + str r1, [r4, r0] + b _0222E6E8 +_0222E6DE: + add r0, sp, #8 + bl MOD04_021DD9DC + mov r0, #4 + str r0, [r4, #0x1c] +_0222E6E8: + mov r0, #3 + add sp, #0x44 + pop {r3, r4, pc} + nop +_0222E6F0: .word 0x00000EB8 + thumb_func_end MOD82_0222E67C + + thumb_func_start MOD82_0222E6F4 +MOD82_0222E6F4: ; 0x0222E6F4 + push {r4, lr} + add r4, r0, #0 + bl MOD04_021DE05C + cmp r0, #0 + beq _0222E704 + mov r0, #5 + str r0, [r4, #0x1c] +_0222E704: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E6F4 + + thumb_func_start MOD82_0222E708 +MOD82_0222E708: ; 0x0222E708 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + bl MOD04_021DDF4C + cmp r0, #3 + beq _0222E720 + cmp r0, #4 + beq _0222E726 + cmp r0, #5 + beq _0222E726 + b _0222E794 +_0222E720: + mov r0, #6 + str r0, [r4, #0x1c] + b _0222E794 +_0222E726: + add r0, r4, #0 + bl MOD82_0222F724 + add r0, sp, #4 + add r1, sp, #0 + bl MOD04_021DD718 + ldr r1, _0222E79C ; =0x00000EB8 + str r0, [r4, r1] + ldr r2, [sp, #4] + add r0, r1, #4 + str r2, [r4, r0] + bl MOD04_021DD6F0 + bl MOD04_021DDBBC + ldr r0, [sp] + cmp r0, #7 + bhi _0222E782 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E758: ; jump table + .short _0222E782 - _0222E758 - 2 ; case 0 + .short _0222E768 - _0222E758 - 2 ; case 1 + .short _0222E768 - _0222E758 - 2 ; case 2 + .short _0222E782 - _0222E758 - 2 ; case 3 + .short _0222E76E - _0222E758 - 2 ; case 4 + .short _0222E782 - _0222E758 - 2 ; case 5 + .short _0222E778 - _0222E758 - 2 ; case 6 + .short _0222E77E - _0222E758 - 2 ; case 7 +_0222E768: + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E782 +_0222E76E: + blx FUN_021EB550 + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E782 +_0222E778: + mov r0, #0x35 + str r0, [r4, #0x1c] + b _0222E782 +_0222E77E: + bl FUN_020335E0 +_0222E782: + ldr r1, [sp, #4] + ldr r0, _0222E7A0 ; =0xFFFFB1E0 + cmp r1, r0 + bge _0222E794 + ldr r0, _0222E7A4 ; =0xFFFF8AD1 + cmp r1, r0 + blt _0222E794 + mov r0, #0x35 + str r0, [r4, #0x1c] +_0222E794: + mov r0, #3 + add sp, #8 + pop {r4, pc} + nop +_0222E79C: .word 0x00000EB8 +_0222E7A0: .word 0xFFFFB1E0 +_0222E7A4: .word 0xFFFF8AD1 + thumb_func_end MOD82_0222E708 + + thumb_func_start MOD82_0222E7A8 +MOD82_0222E7A8: ; 0x0222E7A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02023830 + cmp r0, #0 + bne _0222E7C2 + ldr r1, [r5] + ldr r0, [r1, #8] + ldr r1, [r1, #0x1c] + bl FUN_02023834 +_0222E7C2: + ldr r0, [r5] + ldr r0, [r0, #8] + bl FUN_02023830 + add r4, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x14] + bl FUN_02096D68 + add r3, r0, #0 + add r2, r1, #0 + add r0, r4, #0 + add r1, r3, #0 + bl MOD82_0222D5C0 + mov r0, #7 + str r0, [r5, #0x1c] + mov r0, #3 + pop {r3, r4, r5, pc} + thumb_func_end MOD82_0222E7A8 + + thumb_func_start MOD82_0222E7E8 +MOD82_0222E7E8: ; 0x0222E7E8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D920 + mov r0, #8 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E7E8 + + thumb_func_start MOD82_0222E7F8 +MOD82_0222E7F8: ; 0x0222E7F8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222E8AA + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #9 + bhi _0222E8AA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E81A: ; jump table + .short _0222E882 - _0222E81A - 2 ; case 0 + .short _0222E894 - _0222E81A - 2 ; case 1 + .short _0222E8A6 - _0222E81A - 2 ; case 2 + .short _0222E882 - _0222E81A - 2 ; case 3 + .short _0222E8AA - _0222E81A - 2 ; case 4 + .short _0222E894 - _0222E81A - 2 ; case 5 + .short _0222E870 - _0222E81A - 2 ; case 6 + .short _0222E82E - _0222E81A - 2 ; case 7 + .short _0222E85E - _0222E81A - 2 ; case 8 + .short _0222E870 - _0222E81A - 2 ; case 9 +_0222E82E: + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _0222E846 + cmp r0, #1 + beq _0222E852 + cmp r0, #2 + beq _0222E858 + b _0222E8AA +_0222E846: + add r0, r4, #0 + mov r1, #9 + mov r2, #0xb + bl MOD82_0222DF6C + b _0222E8AA +_0222E852: + mov r0, #0x17 + str r0, [r4, #0x1c] + b _0222E8AA +_0222E858: + mov r0, #0x1b + str r0, [r4, #0x1c] + b _0222E8AA +_0222E85E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E870: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E882: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E894: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222E8AA +_0222E8A6: + bl FUN_020335E0 +_0222E8AA: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222E7F8 + + thumb_func_start MOD82_0222E8B0 +MOD82_0222E8B0: ; 0x0222E8B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl MOD82_0222D7F0 + mov r0, #0xa + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E8B0 + + thumb_func_start MOD82_0222E8C8 +MOD82_0222E8C8: ; 0x0222E8C8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222E954 + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #6 + bhi _0222E944 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E8EA: ; jump table + .short _0222E928 - _0222E8EA - 2 ; case 0 + .short _0222E91C - _0222E8EA - 2 ; case 1 + .short _0222E934 - _0222E8EA - 2 ; case 2 + .short _0222E928 - _0222E8EA - 2 ; case 3 + .short _0222E910 - _0222E8EA - 2 ; case 4 + .short _0222E904 - _0222E8EA - 2 ; case 5 + .short _0222E8F8 - _0222E8EA - 2 ; case 6 +_0222E8F8: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E904: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E910: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E91C: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E928: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + b _0222E94E +_0222E934: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + bl FUN_020335E0 + b _0222E94E +_0222E944: + cmp r0, #0 + ble _0222E94E + str r0, [r4, #0x40] + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222E94E: + add r0, r4, #0 + bl MOD82_0222F724 +_0222E954: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E8C8 + + thumb_func_start MOD82_0222E958 +MOD82_0222E958: ; 0x0222E958 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E980 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222E984 ; =0x00000B7C + mov r2, #0 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0xc + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222E980: .word 0x00000F0F +_0222E984: .word 0x00000B7C + thumb_func_end MOD82_0222E958 + + thumb_func_start MOD82_0222E988 +MOD82_0222E988: ; 0x0222E988 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x1f + mov r3, #0xa + bl FUN_0200CCA4 + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD82_0222F6D8 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0xd + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222E988 + + thumb_func_start MOD82_0222E9CC +MOD82_0222E9CC: ; 0x0222E9CC + push {r3, r4, lr} + sub sp, #0x1c + ldr r2, _0222EA9C ; =0x021C48B8 + mov r1, #0x40 + ldr r3, [r2, #0x4c] + add r4, r0, #0 + tst r1, r3 + beq _0222EA08 + ldr r0, [r4, #0x44] + add r1, r0, #1 + str r1, [r4, #0x44] + ldr r0, [r4, #0x40] + cmp r1, r0 + ble _0222E9EC + mov r0, #1 + str r0, [r4, #0x44] +_0222E9EC: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 + b _0222EA94 +_0222EA08: + mov r1, #0x80 + tst r1, r3 + beq _0222EA38 + ldr r0, [r4, #0x44] + sub r0, r0, #1 + str r0, [r4, #0x44] + cmp r0, #1 + bge _0222EA1C + ldr r0, [r4, #0x40] + str r0, [r4, #0x44] +_0222EA1C: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 + b _0222EA94 +_0222EA38: + ldr r2, [r2, #0x48] + mov r1, #1 + tst r1, r2 + beq _0222EA7C + add r0, sp, #0 + add r1, sp, #0x10 + bl MOD04_021DE1F8 + ldr r0, [r4] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x44] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r0, #4] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + add r3, sp, #0 + bl FUN_0202A6B4 + cmp r0, #0 + beq _0222EA66 + mov r0, #0x12 + b _0222EA68 +_0222EA66: + mov r0, #0xe +_0222EA68: + mov r1, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 + b _0222EA94 +_0222EA7C: + mov r1, #2 + tst r1, r2 + beq _0222EA94 + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x13 + str r0, [r4, #0x1c] + ldr r0, _0222EAA0 ; =0x000005DC + bl FUN_020054C8 +_0222EA94: + mov r0, #3 + add sp, #0x1c + pop {r3, r4, pc} + nop +_0222EA9C: .word 0x021C48B8 +_0222EAA0: .word 0x000005DC + thumb_func_end MOD82_0222E9CC + + thumb_func_start MOD82_0222EAA4 +MOD82_0222EAA4: ; 0x0222EAA4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222EB00 ; =0x00000B78 + ldr r2, [r4, #0x44] + ldr r0, [r4, r0] + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r3, #2 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, _0222EB00 ; =0x00000B78 + ldr r2, [r4, #0x3c] + ldr r0, [r4, r0] + bl FUN_0200AD38 + ldr r0, _0222EB04 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + ldr r1, _0222EB08 ; =0x00000B7C + add r0, r4, #0 + ldr r1, [r4, r1] + add r3, r2, #0 + bl MOD82_0222F4D8 + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0xf + bl MOD82_0222DF6C + add r4, #0x48 + ldr r2, _0222EB0C ; =0x00000A38 + mov r0, #0 + add r1, r4, #0 + bl MIi_CpuClearFast + mov r0, #3 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0222EB00: .word 0x00000B78 +_0222EB04: .word 0x00000F0F +_0222EB08: .word 0x00000B7C +_0222EB0C: .word 0x00000A38 + thumb_func_end MOD82_0222EAA4 + + thumb_func_start MOD82_0222EB10 +MOD82_0222EB10: ; 0x0222EB10 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EB38 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EB3C ; =0x00000B7C + mov r2, #2 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F4D8 + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0xb + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EB38: .word 0x00000F0F +_0222EB3C: .word 0x00000B7C + thumb_func_end MOD82_0222EB10 + + thumb_func_start MOD82_0222EB40 +MOD82_0222EB40: ; 0x0222EB40 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x44] + add r2, #0x48 + bl MOD82_0222D840 + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #0x10 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222EB40 + + thumb_func_start MOD82_0222EB60 +MOD82_0222EB60: ; 0x0222EB60 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222EC44 + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #7 + bhi _0222EC44 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222EB84: ; jump table + .short _0222EC1E - _0222EB84 - 2 ; case 0 + .short _0222EC0C - _0222EB84 - 2 ; case 1 + .short _0222EC30 - _0222EB84 - 2 ; case 2 + .short _0222EBFA - _0222EB84 - 2 ; case 3 + .short _0222EBFA - _0222EB84 - 2 ; case 4 + .short _0222EBE8 - _0222EB84 - 2 ; case 5 + .short _0222EBD6 - _0222EB84 - 2 ; case 6 + .short _0222EB94 - _0222EB84 - 2 ; case 7 +_0222EB94: + ldr r0, [r4] + ldr r2, [r4, #0x38] + ldr r3, [r4, #0x44] + add r1, r4, #0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + add r1, #0x48 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0202A754 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x11 + bl MOD82_0222DF6C + add r0, sp, #0 + add r1, sp, #0x10 + bl MOD04_021DE1F8 + ldr r0, [r4] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x44] + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r0, #4] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + add r3, sp, #0 + bl FUN_0202A60C + b _0222EC44 +_0222EBD6: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EBE8: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EBFA: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #9 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EC0C: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EC1E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EC44 +_0222EC30: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + bl FUN_020335E0 +_0222EC44: + mov r0, #3 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222EB60 + + thumb_func_start MOD82_0222EC4C +MOD82_0222EC4C: ; 0x0222EC4C + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EC80 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EC84 ; =0x00000B7C + mov r2, #3 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x2b + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x20] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EC80: .word 0x00000F0F +_0222EC84: .word 0x00000B7C + thumb_func_end MOD82_0222EC4C + + thumb_func_start MOD82_0222EC88 +MOD82_0222EC88: ; 0x0222EC88 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222ECB4 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222ECB8 ; =0x00000B7C + mov r2, #7 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x18 + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222ECB4: .word 0x00000F0F +_0222ECB8: .word 0x00000B7C + thumb_func_end MOD82_0222EC88 + + thumb_func_start MOD82_0222ECBC +MOD82_0222ECBC: ; 0x0222ECBC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_0202A524 + add r4, r0, #0 + ldr r0, [r5] + add r1, sp, #0 + ldr r0, [r0, #4] + bl FUN_0202A784 + ldr r0, [r5] + mov r2, #0x2a + lsl r2, r2, #6 + ldr r0, [r0, #0xc] + mov r1, #1 + add r2, r5, r2 + bl FUN_02066840 + add r1, sp, #0 + ldrb r0, [r1] + mov r3, #0x2a + lsl r3, r3, #6 + ldrb r1, [r1, #1] + add r2, r4, #0 + add r3, r5, r3 + bl MOD82_0222D8A0 + mov r0, #0x19 + str r0, [r5, #0x1c] + mov r0, #3 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD82_0222ECBC + + thumb_func_start MOD82_0222ED00 +MOD82_0222ED00: ; 0x0222ED00 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222EDB8 + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #7 + bhi _0222EDB8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222ED22: ; jump table + .short _0222ED92 - _0222ED22 - 2 ; case 0 + .short _0222ED80 - _0222ED22 - 2 ; case 1 + .short _0222EDA4 - _0222ED22 - 2 ; case 2 + .short _0222ED92 - _0222ED22 - 2 ; case 3 + .short _0222ED6E - _0222ED22 - 2 ; case 4 + .short _0222ED5C - _0222ED22 - 2 ; case 5 + .short _0222ED4A - _0222ED22 - 2 ; case 6 + .short _0222ED32 - _0222ED22 - 2 ; case 7 +_0222ED32: + ldr r0, [r4] + mov r1, #5 + ldr r0, [r0] + mov r2, #2 + bl FUN_0202A578 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x1a + bl MOD82_0222DF6C + b _0222EDB8 +_0222ED4A: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED5C: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED6E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED80: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222ED92: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222EDB8 +_0222EDA4: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + bl FUN_020335E0 +_0222EDB8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222ED00 + + thumb_func_start MOD82_0222EDBC +MOD82_0222EDBC: ; 0x0222EDBC + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EDF0 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EDF4 ; =0x00000B7C + mov r2, #8 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x2b + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x20] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EDF0: .word 0x00000F0F +_0222EDF4: .word 0x00000B7C + thumb_func_end MOD82_0222EDBC + + thumb_func_start MOD82_0222EDF8 +MOD82_0222EDF8: ; 0x0222EDF8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EE20 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EE24 ; =0x00000B7C + mov r2, #5 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x1c + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EE20: .word 0x00000F0F +_0222EE24: .word 0x00000B7C + thumb_func_end MOD82_0222EDF8 + + thumb_func_start MOD82_0222EE28 +MOD82_0222EE28: ; 0x0222EE28 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #0x3c] + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x1f + mov r3, #0xa + bl FUN_0200CCA4 + ldr r1, _0222EE70 ; =0x00000B94 + mov r0, #0xd9 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x3c] + add r0, r4, r0 + mov r3, #2 + bl MOD82_0222F694 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0xd9 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0x1d + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + nop +_0222EE70: .word 0x00000B94 + thumb_func_end MOD82_0222EE28 + + thumb_func_start MOD82_0222EE74 +MOD82_0222EE74: ; 0x0222EE74 + push {r4, lr} + ldr r2, _0222EF18 ; =0x021C48B8 + mov r1, #0x40 + ldr r3, [r2, #0x4c] + add r4, r0, #0 + tst r1, r3 + beq _0222EEAA + ldr r0, [r4, #0x3c] + add r0, r0, #1 + str r0, [r4, #0x3c] + cmp r0, #0xa + ble _0222EE90 + mov r0, #1 + str r0, [r4, #0x3c] +_0222EE90: + ldr r1, _0222EF1C ; =0x00000B94 + mov r0, #0xd9 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x3c] + add r0, r4, r0 + mov r3, #2 + bl MOD82_0222F694 + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 + b _0222EF12 +_0222EEAA: + mov r1, #0x80 + tst r1, r3 + beq _0222EED8 + ldr r0, [r4, #0x3c] + sub r0, r0, #1 + str r0, [r4, #0x3c] + cmp r0, #1 + bge _0222EEBE + mov r0, #0xa + str r0, [r4, #0x3c] +_0222EEBE: + ldr r1, _0222EF1C ; =0x00000B94 + mov r0, #0xd9 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x3c] + add r0, r4, r0 + mov r3, #2 + bl MOD82_0222F694 + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 + b _0222EF12 +_0222EED8: + ldr r2, [r2, #0x48] + mov r1, #1 + tst r1, r2 + beq _0222EEFA + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + add r0, r4, #0 + mov r1, #9 + mov r2, #0x1e + bl MOD82_0222DF6C + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 + b _0222EF12 +_0222EEFA: + mov r1, #2 + tst r1, r2 + beq _0222EF12 + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x15 + str r0, [r4, #0x1c] + ldr r0, _0222EF20 ; =0x000005DC + bl FUN_020054C8 +_0222EF12: + mov r0, #3 + pop {r4, pc} + nop +_0222EF18: .word 0x021C48B8 +_0222EF1C: .word 0x00000B94 +_0222EF20: .word 0x000005DC + thumb_func_end MOD82_0222EE74 + + thumb_func_start MOD82_0222EF24 +MOD82_0222EF24: ; 0x0222EF24 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222EF4C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222EF50 ; =0x00000B7C + mov r2, #6 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x1f + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222EF4C: .word 0x00000F0F +_0222EF50: .word 0x00000B7C + thumb_func_end MOD82_0222EF24 + + thumb_func_start MOD82_0222EF54 +MOD82_0222EF54: ; 0x0222EF54 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #0x44] + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x1f + mov r3, #0xa + bl FUN_0200CCA4 + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD82_0222F6D8 + mov r0, #0xda + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + mov r0, #0x20 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222EF54 + + thumb_func_start MOD82_0222EF9C +MOD82_0222EF9C: ; 0x0222EF9C + push {r4, lr} + ldr r2, _0222F040 ; =0x021C48B8 + mov r1, #0x40 + ldr r3, [r2, #0x4c] + add r4, r0, #0 + tst r1, r3 + beq _0222EFD8 + ldr r0, [r4, #0x44] + add r1, r0, #1 + str r1, [r4, #0x44] + ldr r0, [r4, #0x40] + add r0, r0, #1 + cmp r1, r0 + bne _0222EFBC + mov r0, #1 + str r0, [r4, #0x44] +_0222EFBC: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 + b _0222F03C +_0222EFD8: + mov r1, #0x80 + tst r1, r3 + beq _0222F008 + ldr r0, [r4, #0x44] + sub r0, r0, #1 + str r0, [r4, #0x44] + cmp r0, #1 + bge _0222EFEC + ldr r0, [r4, #0x40] + str r0, [r4, #0x44] +_0222EFEC: + mov r1, #0xb9 + mov r0, #0xda + lsl r1, r1, #4 + lsl r0, r0, #4 + ldr r1, [r4, r1] + ldr r2, [r4, #0x44] + add r0, r4, r0 + mov r3, #3 + bl MOD82_0222F694 + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 + b _0222F03C +_0222F008: + ldr r2, [r2, #0x48] + mov r1, #1 + tst r1, r2 + beq _0222F024 + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x21 + str r0, [r4, #0x1c] + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 + b _0222F03C +_0222F024: + mov r1, #2 + tst r1, r2 + beq _0222F03C + mov r1, #0 + add r2, r1, #0 + bl MOD82_0222F6D8 + mov r0, #0x1b + str r0, [r4, #0x1c] + ldr r0, _0222F044 ; =0x000005DC + bl FUN_020054C8 +_0222F03C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F040: .word 0x021C48B8 +_0222F044: .word 0x000005DC + thumb_func_end MOD82_0222EF9C + + thumb_func_start MOD82_0222F048 +MOD82_0222F048: ; 0x0222F048 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222F09C ; =0x00000B78 + ldr r2, [r4, #0x44] + ldr r0, [r4, r0] + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r3, #2 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, _0222F09C ; =0x00000B78 + ldr r2, [r4, #0x3c] + ldr r0, [r4, r0] + bl FUN_0200AD38 + ldr r0, _0222F0A0 ; =0x00000F0F + mov r2, #1 + str r0, [sp] + ldr r1, _0222F0A4 ; =0x00000B7C + add r0, r4, #0 + ldr r1, [r4, r1] + add r3, r2, #0 + bl MOD82_0222F4D8 + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x22 + bl MOD82_0222DF6C + mov r0, #0x22 + str r0, [r4, #0x1c] + mov r0, #3 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0222F09C: .word 0x00000B78 +_0222F0A0: .word 0x00000F0F +_0222F0A4: .word 0x00000B7C + thumb_func_end MOD82_0222F048 + + thumb_func_start MOD82_0222F0A8 +MOD82_0222F0A8: ; 0x0222F0A8 + push {r4, lr} + add r4, r0, #0 + add r2, r4, #0 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x44] + add r2, #0x48 + bl MOD82_0222D840 + mov r0, #0x23 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F700 + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F0A8 + + thumb_func_start MOD82_0222F0C8 +MOD82_0222F0C8: ; 0x0222F0C8 + push {r4, lr} + add r4, r0, #0 + bl MOD82_0222D7C4 + cmp r0, #0 + beq _0222F18C + bl MOD82_0222D7E4 + add r1, r0, #7 + cmp r1, #7 + bhi _0222F18C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222F0EA: ; jump table + .short _0222F166 - _0222F0EA - 2 ; case 0 + .short _0222F154 - _0222F0EA - 2 ; case 1 + .short _0222F178 - _0222F0EA - 2 ; case 2 + .short _0222F166 - _0222F0EA - 2 ; case 3 + .short _0222F142 - _0222F0EA - 2 ; case 4 + .short _0222F130 - _0222F0EA - 2 ; case 5 + .short _0222F11E - _0222F0EA - 2 ; case 6 + .short _0222F0FA - _0222F0EA - 2 ; case 7 +_0222F0FA: + ldr r0, [r4] + ldr r2, [r4, #0x3c] + ldr r3, [r4, #0x44] + ldr r1, _0222F190 ; =0x00000684 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + add r1, r4, r1 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0202A838 + add r0, r4, #0 + mov r1, #0x25 + mov r2, #0x24 + bl MOD82_0222DF6C + b _0222F18C +_0222F11E: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F130: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F142: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #9 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F154: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F166: + mov r1, #9 + str r1, [r4, #0x1c] + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD82_0222F724 + b _0222F18C +_0222F178: + mov r1, #0x3b + lsl r1, r1, #6 + str r0, [r4, r1] + mov r0, #0x33 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 + bl FUN_020335E0 +_0222F18C: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F190: .word 0x00000684 + thumb_func_end MOD82_0222F0C8 + + thumb_func_start MOD82_0222F194 +MOD82_0222F194: ; 0x0222F194 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F1C8 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F1CC ; =0x00000B7C + mov r2, #3 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x2b + bl MOD82_0222DF6C + add r0, r4, #0 + bl MOD82_0222F724 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x20] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F1C8: .word 0x00000F0F +_0222F1CC: .word 0x00000B7C + thumb_func_end MOD82_0222F194 + + thumb_func_start MOD82_0222F1D0 +MOD82_0222F1D0: ; 0x0222F1D0 + mov r1, #0x27 + str r1, [r0, #0x1c] + mov r0, #3 + bx lr + thumb_func_end MOD82_0222F1D0 + + thumb_func_start MOD82_0222F1D8 +MOD82_0222F1D8: ; 0x0222F1D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02022840 + mov r0, #0x26 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F1D8 + + thumb_func_start MOD82_0222F1F0 +MOD82_0222F1F0: ; 0x0222F1F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl FUN_02022854 + cmp r0, #2 + bne _0222F20A + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD82_0222F724 +_0222F20A: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F1F0 + + thumb_func_start MOD82_0222F210 +MOD82_0222F210: ; 0x0222F210 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F238 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F23C ; =0x00000B7C + mov r2, #4 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0x14 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F238: .word 0x00000F0F +_0222F23C: .word 0x00000B7C + thumb_func_end MOD82_0222F210 + + thumb_func_start MOD82_0222F240 +MOD82_0222F240: ; 0x0222F240 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F26E + sub r1, r1, #1 + cmp r0, r1 + bne _0222F264 + mov r0, #0xb + str r0, [r4, #0x1c] + b _0222F26E +_0222F264: + mov r0, #0x27 + str r0, [r4, #0x1c] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x20] +_0222F26E: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F240 + + thumb_func_start MOD82_0222F274 +MOD82_0222F274: ; 0x0222F274 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F29C ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F2A0 ; =0x00000B7C + mov r2, #9 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2e + mov r2, #0x16 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F29C: .word 0x00000F0F +_0222F2A0: .word 0x00000B7C + thumb_func_end MOD82_0222F274 + + thumb_func_start MOD82_0222F2A4 +MOD82_0222F2A4: ; 0x0222F2A4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F2D2 + sub r1, r1, #1 + cmp r0, r1 + bne _0222F2C8 + mov r0, #0x1b + str r0, [r4, #0x1c] + b _0222F2D2 +_0222F2C8: + mov r0, #0x27 + str r0, [r4, #0x1c] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x20] +_0222F2D2: + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F2A4 + + thumb_func_start MOD82_0222F2D8 +MOD82_0222F2D8: ; 0x0222F2D8 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F300 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F304 ; =0x00000B84 + mov r2, #0x19 + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2d + mov r2, #0x28 + bl MOD82_0222DF6C + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F300: .word 0x00000F0F +_0222F304: .word 0x00000B84 + thumb_func_end MOD82_0222F2D8 + + thumb_func_start MOD82_0222F308 +MOD82_0222F308: ; 0x0222F308 + push {r4, lr} + add r4, r0, #0 + bl MOD04_021DDBBC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x29 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F308 + + thumb_func_start MOD82_0222F324 +MOD82_0222F324: ; 0x0222F324 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222F350 ; =0x00000F0F + add r4, r0, #0 + str r1, [sp] + ldr r1, _0222F354 ; =0x00000B84 + mov r2, #0x1a + ldr r1, [r4, r1] + mov r3, #1 + bl MOD82_0222F59C + add r0, r4, #0 + mov r1, #0x2f + mov r2, #0x2c + bl MOD82_0222DF6C + ldr r0, _0222F358 ; =0x00000EC4 + mov r1, #0 + str r1, [r4, r0] + mov r0, #3 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222F350: .word 0x00000F0F +_0222F354: .word 0x00000B84 +_0222F358: .word 0x00000EC4 + thumb_func_end MOD82_0222F324 + + thumb_func_start MOD82_0222F35C +MOD82_0222F35C: ; 0x0222F35C + mov r0, #3 + bx lr + thumb_func_end MOD82_0222F35C + + thumb_func_start MOD82_0222F360 +MOD82_0222F360: ; 0x0222F360 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02033ED0 + bl FUN_020332DC + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x44 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #0x1c] + mov r0, #4 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD82_0222F360 + + thumb_func_start MOD82_0222F390 +MOD82_0222F390: ; 0x0222F390 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xeb + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x44 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0222F3B8 + sub r1, r1, #1 + cmp r0, r1 + bne _0222F3B4 + mov r0, #0 + str r0, [r4, #0x1c] + b _0222F3B8 +_0222F3B4: + mov r0, #0x27 + str r0, [r4, #0x1c] +_0222F3B8: + mov r0, #3 + pop {r4, pc} + thumb_func_end MOD82_0222F390 + + thumb_func_start MOD82_0222F3BC +MOD82_0222F3BC: ; 0x0222F3BC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x3b + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r4, #0 + add r0, r0, #7 + cmp r0, #9 + bhi _0222F400 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222F3DA: ; jump table + .short _0222F3FA - _0222F3DA - 2 ; case 0 + .short _0222F3EE - _0222F3DA - 2 ; case 1 + .short _0222F400 - _0222F3DA - 2 ; case 2 + .short _0222F3FA - _0222F3DA - 2 ; case 3 + .short _0222F3FE - _0222F3DA - 2 ; case 4 + .short _0222F3EE - _0222F3DA - 2 ; case 5 + .short _0222F3F6 - _0222F3DA - 2 ; case 6 + .short _0222F400 - _0222F3DA - 2 ; case 7 + .short _0222F3F2 - _0222F3DA - 2 ; case 8 + .short _0222F3F6 - _0222F3DA - 2 ; case 9 +_0222F3EE: + mov r4, #0xd + b _0222F400 +_0222F3F2: + mov r4, #0xb + b _0222F400 +_0222F3F6: + mov r4, #0xc + b _0222F400 +_0222F3FA: + mov r4, #0xe + b _0222F400 +_0222F3FE: + mov r4, #0xf +_0222F400: + add r0, r5, #0 + bl MOD82_0222F724 + ldr r0, _0222F428 ; =0x00000F0F + ldr r1, _0222F42C ; =0x00000B7C + str r0, [sp] + ldr r1, [r5, r1] + add r0, r5, #0 + add r2, r4, #0 + mov r3, #1 + bl MOD82_0222F59C + add r0, r5, #0 + mov r1, #0x2d + mov r2, #0x34 + bl MOD82_0222DF6C + mov r0, #3 + pop {r3, r4, r5, pc} + nop +_0222F428: .word 0x00000F0F +_0222F42C: .word 0x00000B7C + thumb_func_end MOD82_0222F3BC + + thumb_func_start MOD82_0222F430 +MOD82_0222F430: ; 0x0222F430 + push {r4, lr} + add r4, r0, #0 + bl FUN_020332DC + bl MOD04_021DDBBC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD82_0222DFCC + mov r0, #0x2c + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F430 + + thumb_func_start MOD82_0222F450 +MOD82_0222F450: ; 0x0222F450 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F46C ; =0x00000B9C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F468 + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222F468: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F46C: .word 0x00000B9C + thumb_func_end MOD82_0222F450 + + thumb_func_start MOD82_0222F470 +MOD82_0222F470: ; 0x0222F470 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F49C ; =0x00000B9C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F498 + ldr r0, _0222F4A0 ; =0x00000EC4 + ldr r0, [r4, r0] + cmp r0, #0x1e + ble _0222F490 + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222F490: + ldr r0, _0222F4A0 ; =0x00000EC4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_0222F498: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F49C: .word 0x00000B9C +_0222F4A0: .word 0x00000EC4 + thumb_func_end MOD82_0222F470 + + thumb_func_start MOD82_0222F4A4 +MOD82_0222F4A4: ; 0x0222F4A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F4D4 ; =0x00000B9C + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0222F4CE + mov r2, #0x91 + ldr r0, [r4, #4] + mov r1, #0xd + lsl r2, r2, #2 + bl MOD82_0222DF38 + mov r1, #0xeb + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, #0x20] + str r0, [r4, #0x1c] +_0222F4CE: + mov r0, #3 + pop {r4, pc} + nop +_0222F4D4: .word 0x00000B9C + thumb_func_end MOD82_0222F4A4 + + thumb_func_start MOD82_0222F4D8 +MOD82_0222F4D8: ; 0x0222F4D8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r4, r3, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, _0222F53C ; =0x00000B78 + add r2, r6, #0 + ldr r0, [r5, r1] + add r1, #0x10 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + mov r0, #0x36 + lsl r0, r0, #6 + ldr r2, _0222F540 ; =0x00000B88 + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0222F544 ; =0x00000B9C + str r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0222F53C: .word 0x00000B78 +_0222F540: .word 0x00000B88 +_0222F544: .word 0x00000B9C + thumb_func_end MOD82_0222F4D8 + + thumb_func_start MOD82_0222F548 +MOD82_0222F548: ; 0x0222F548 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F56C ; =0x00000EBC + ldr r0, [r4, r0] + neg r0, r0 + bl MOD04_021D80E0 + ldr r2, _0222F56C ; =0x00000EBC + add r1, r0, #0 + ldr r2, [r4, r2] + add r0, r4, #0 + neg r2, r2 + bl MOD82_0222F7C0 + mov r0, #0x36 + str r0, [r4, #0x1c] + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F56C: .word 0x00000EBC + thumb_func_end MOD82_0222F548 + + thumb_func_start MOD82_0222F570 +MOD82_0222F570: ; 0x0222F570 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F598 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0222F584 + mov r0, #2 + tst r0, r1 + beq _0222F594 +_0222F584: + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0 + str r0, [r4, #0x1c] +_0222F594: + mov r0, #3 + pop {r4, pc} + .align 2, 0 +_0222F598: .word 0x021C48B8 + thumb_func_end MOD82_0222F570 + + thumb_func_start MOD82_0222F59C +MOD82_0222F59C: ; 0x0222F59C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _0222F5EC ; =0x00000B88 + add r4, r3, #0 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + mov r0, #0x36 + lsl r0, r0, #6 + ldr r2, _0222F5EC ; =0x00000B88 + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0222F5F0 ; =0x00000B9C + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F5EC: .word 0x00000B88 +_0222F5F0: .word 0x00000B9C + thumb_func_end MOD82_0222F59C + + thumb_func_start MOD82_0222F5F4 +MOD82_0222F5F4: ; 0x0222F5F4 + push {r4, lr} + add r4, r0, #0 + cmp r3, #1 + beq _0222F602 + cmp r3, #2 + beq _0222F618 + b _0222F626 +_0222F602: + ldr r0, [sp, #0xc] + mov r2, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r1, r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + b _0222F626 +_0222F618: + ldr r0, [sp, #0xc] + mov r2, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r2, r1, r0 +_0222F626: + add r0, r2, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD82_0222F5F4 + + thumb_func_start MOD82_0222F62C +MOD82_0222F62C: ; 0x0222F62C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x24] + add r5, r0, #0 + str r3, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r3, [sp, #0x20] + add r6, r1, #0 + bl MOD82_0222F5F4 + add r3, r0, #0 + str r4, [sp] + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD82_0222F62C + + thumb_func_start MOD82_0222F660 +MOD82_0222F660: ; 0x0222F660 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x24] + add r5, r0, #0 + str r3, [sp] + mov r3, #0 + str r3, [sp, #4] + ldr r3, [sp, #0x20] + add r6, r1, #0 + bl MOD82_0222F5F4 + add r3, r0, #0 + str r4, [sp] + mov r1, #0 + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD82_0222F660 + + thumb_func_start MOD82_0222F694 +MOD82_0222F694: ; 0x0222F694 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0xf + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02019620 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #2 + bl FUN_02021B04 + mov r3, #1 + ldr r0, _0222F6CC ; =0x00010200 + str r3, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD82_0222F660 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F6CC: .word 0x00010200 + thumb_func_end MOD82_0222F694 + + thumb_func_start MOD82_0222F6D0 +MOD82_0222F6D0: ; 0x0222F6D0 + ldr r3, _0222F6D4 ; =FUN_02033E74 + bx r3 + .align 2, 0 +_0222F6D4: .word FUN_02033E74 + thumb_func_end MOD82_0222F6D0 + + thumb_func_start MOD82_0222F6D8 +MOD82_0222F6D8: ; 0x0222F6D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #1 + bhi _0222F6F6 + ldr r0, _0222F6F8 ; =0x00000D78 + add r1, r4, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0222F6FC ; =0x00000D7C + add r1, r4, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 +_0222F6F6: + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F6F8: .word 0x00000D78 +_0222F6FC: .word 0x00000D7C + thumb_func_end MOD82_0222F6D8 + + thumb_func_start MOD82_0222F700 +MOD82_0222F700: ; 0x0222F700 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F720 ; =0x00000EB4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F71C + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r4, r0 + mov r1, #1 + bl FUN_0200D858 + ldr r1, _0222F720 ; =0x00000EB4 + str r0, [r4, r1] +_0222F71C: + pop {r4, pc} + nop +_0222F720: .word 0x00000EB4 + thumb_func_end MOD82_0222F700 + + thumb_func_start MOD82_0222F724 +MOD82_0222F724: ; 0x0222F724 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222F73C ; =0x00000EB4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0222F73A + bl FUN_0200DBFC + ldr r0, _0222F73C ; =0x00000EB4 + mov r1, #0 + str r1, [r4, r0] +_0222F73A: + pop {r4, pc} + .align 2, 0 +_0222F73C: .word 0x00000EB4 + thumb_func_end MOD82_0222F724 + + thumb_func_start MOD82_0222F740 +MOD82_0222F740: ; 0x0222F740 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + add r6, r1, #0 + lsl r0, r0, #8 + mov r1, #0x44 + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, _0222F7B0 ; =0x00000B84 + add r1, r6, #0 + ldr r0, [r5, r0] + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r1, _0222F7B4 ; =0x00000B78 + add r2, r4, #0 + ldr r0, [r5, r1] + add r1, #0x20 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x37 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + mov r0, #0x37 + lsl r0, r0, #6 + ldr r2, _0222F7B8 ; =0x00000B98 + str r3, [sp, #8] + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0222F7BC ; =0x00000B9C + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222F7B0: .word 0x00000B84 +_0222F7B4: .word 0x00000B78 +_0222F7B8: .word 0x00000B98 +_0222F7BC: .word 0x00000B9C + thumb_func_end MOD82_0222F740 + + thumb_func_start MOD82_0222F7C0 +MOD82_0222F7C0: ; 0x0222F7C0 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + bne _0222F7D2 + mov r4, #0xb +_0222F7D2: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222F800 ; =0x00000B78 + mov r1, #0 + ldr r0, [r5, r0] + mov r3, #5 + bl FUN_0200AD38 + mov r0, #0x36 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD82_0222F740 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0222F800: .word 0x00000B78 + thumb_func_end MOD82_0222F7C0 + + .section .rodata + ; 0x0222F804 + .incbin "baserom.nds", 0x2F1244, 0xC8 + + .section .data + ; 0x0222F8E0 + .incbin "baserom.nds", 0x2F1320, 0x220 + + .section .bss + ; 0x0222FB00 + .space 0x120 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 6a81ad19..bed39ecb 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -23,6 +23,11 @@ FUN_02213B08 = 0x02213B08; FUN_02213D80 = 0x02213D80; FUN_02213DBC = 0x02213DBC; FUN_02213E24 = 0x02213E24; +FUN_022122E4 = 0x022122E4; +FUN_02212308 = 0x02212308; +FUN_022123A8 = 0x022123A8; +FUN_02212474 = 0x02212474; +FUN_02212480 = 0x02212480; // Overlay |