summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-13 15:18:30 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-13 15:18:30 -0400
commit15656cc5427b31e9304143dee74d32f8e7dcf100 (patch)
tree9360406b87c6c27d6e5cb937231ea1813571e947
parent6193b952c768a4db29f83c44b7eaf06928280357 (diff)
Disassemble module 82
-rw-r--r--arm9/arm9.lcf25
-rw-r--r--arm9/global.inc11
-rw-r--r--arm9/modules/82/asm/module_82.s4455
-rw-r--r--arm9/undefined_syms.txt5
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