diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-11 18:14:16 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-11 18:14:16 -0400 |
commit | 60ab234010d172d888d2444cd426e0e8463a110f (patch) | |
tree | acd4f705a539559be98de3f6a148bb10fce39d3c | |
parent | d104a46ce13665a41a4ba4b7bab4239fffe1ef06 (diff) |
Disassemble module 41
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 1 | ||||
-rw-r--r-- | arm9/modules/41/asm/module_41.s | 2032 |
3 files changed, 2057 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 97baf90b..8883447f 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1704,10 +1704,21 @@ SECTIONS { SDK_OVERLAY.MODULE_40.BSS_SIZE = SDK_OVERLAY.MODULE_40.BSS_END - SDK_OVERLAY.MODULE_40.BSS_START; } >> MODULE_40 - .MODULE.41: { + .MODULE.41 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_41.START = .; - FILE_292E00.o (.text) /* 0x28EE00 */ + module_41.o (.text) + module_41.o (.rodata) + module_41.o (.init) + // SDK_OVERLAY.MODULE_41.SINIT_START = .; + module_41.o (.ctor) + module_41.o (.sinit) + // WRITEW 0; + // SDK_OVERLAY.MODULE_41.SINIT_END = .; + . = ALIGN(32); + module_41.o (.sdata) + module_41.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_41.END = .; SDK_OVERLAY.MODULE_41.SIZE = SDK_OVERLAY.MODULE_41.END - SDK_OVERLAY.MODULE_41.START; @@ -1717,7 +1728,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_41.BSS_START = .; - FILE_292E00.o (.bss) + module_41.o (.sbss) + module_41.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_41.BSS_END = .; SDK_OVERLAY.MODULE_41.BSS_SIZE = SDK_OVERLAY.MODULE_41.BSS_END - SDK_OVERLAY.MODULE_41.BSS_START; @@ -3070,7 +3082,15 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_40_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_41, 41) + WRITEW SDK_OVERLAY_MODULE_41_ID; + WRITEW SDK_OVERLAY.MODULE_41.START; + WRITEW SDK_OVERLAY.MODULE_41.SIZE; + WRITEW SDK_OVERLAY.MODULE_41.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_41.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_41.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_41_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_42, 42) OVERLAY_TABLE(MODULE_43, 43) OVERLAY_TABLE(MODULE_44, 44) diff --git a/arm9/global.inc b/arm9/global.inc index 05893664..5cee7a46 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2653,6 +2653,7 @@ .extern FUN_020C3674
.extern FUN_020C36A8
.extern FUN_020C3910
+.extern FUN_02020C14
.extern FUN_020C3980
.extern FUN_020C39CC
.extern FUN_020C6034
diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s new file mode 100644 index 00000000..d0b3e013 --- /dev/null +++ b/arm9/modules/41/asm/module_41.s @@ -0,0 +1,2032 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD41_02254840 +MOD41_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD41_02254854 + ldr r1, _02254850 ; =MOD41_02254AD8 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD41_02254854 +_02254850: .word MOD41_02254AD8 + thumb_func_end MOD41_02254840 + + thumb_func_start MOD41_02254854 +MOD41_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x90 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD41_02254990 + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD41_02254A88 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD41_02254A88 + thumb_func_end MOD41_02254854 + + thumb_func_start MOD41_0225489C +MOD41_0225489C: ; 0x0225489C + push {r4, r5} + mov r4, #0 + add r5, r0, #0 + mov r3, #1 + add r2, r4, #0 +_022548A6: + add r1, r0, r4 + str r3, [r5, #0x5c] + add r1, #0x4c + add r4, r4, #1 + add r5, r5, #4 + strb r2, [r1] + cmp r4, #3 + blt _022548A6 + str r3, [r0, #0x44] + pop {r4, r5} + bx lr + thumb_func_end MOD41_0225489C + + thumb_func_start MOD41_022548BC +MOD41_022548BC: ; 0x022548BC + lsl r3, r1, #2 + add r3, r0, r3 + str r2, [r3, #0x5c] + cmp r2, #0 + beq _022548CA + mov r2, #0 + b _022548CC +_022548CA: + mov r2, #1 +_022548CC: + add r1, r0, r1 + add r1, #0x4c + strb r2, [r1] + mov r1, #1 + str r1, [r0, #0x44] + bx lr + thumb_func_end MOD41_022548BC + + thumb_func_start MOD41_022548D8 +MOD41_022548D8: ; 0x022548D8 + lsl r3, r1, #2 + add r3, r0, r3 + ldr r3, [r3, #0x5c] + cmp r3, #0 + beq _022548EC + add r1, r0, r1 + add r1, #0x4c + strb r2, [r1] + mov r1, #1 + str r1, [r0, #0x44] +_022548EC: + bx lr + .align 2, 0 + thumb_func_end MOD41_022548D8 + + thumb_func_start MOD41_022548F0 +MOD41_022548F0: ; 0x022548F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + add r4, r1, #0 + bl MOD41_0225578C + str r0, [r4, #0x10] + ldr r0, [r5, #4] + add r1, r4, #0 + mov r2, #0x48 + bl FUN_020893F0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_022548F0 + + thumb_func_start MOD41_0225490C +MOD41_0225490C: ; 0x0225490C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + mov r2, #0x48 + bl FUN_02089418 + cmp r0, #0 + beq _0225494C + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #2 + bne _02254952 + add r0, r4, #0 + bl MOD41_02255108 + add r0, r4, #0 + bl MOD41_022550F8 + cmp r0, #0 + beq _02254952 + add r0, r4, #0 + mov r1, #4 + add r0, #0x8c + str r1, [r0] + mov r0, #0 + str r0, [r4, #0x50] + mov r0, #2 + str r0, [r4, #0x54] + pop {r4, pc} +_0225494C: + add r0, r4, #0 + bl MOD41_02254954 +_02254952: + pop {r4, pc} + thumb_func_end MOD41_0225490C + + thumb_func_start MOD41_02254954 +MOD41_02254954: ; 0x02254954 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r3, r4, #0 + mov r2, #1 + add r1, #0x8c + str r2, [r1] + mov r1, #0 + add r3, #0x48 + strb r1, [r3] + add r3, r4, #0 + add r3, #0x49 + strb r1, [r3] + add r3, r4, #0 + add r3, #0x4a + strb r1, [r3] + add r3, r4, #0 + add r3, #0x4b + strb r1, [r3] + str r2, [r4, #0x50] + str r1, [r4, #0x54] + str r1, [r4, #0x58] + bl MOD41_0225489C + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + pop {r4, pc} + thumb_func_end MOD41_02254954 + + thumb_func_start MOD41_02254990 +MOD41_02254990: ; 0x02254990 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [r5, #4] + bl MOD41_0225490C + add r0, r5, #0 + add r1, r5, #0 + add r0, #8 + add r1, #0x48 + add r2, r6, #0 + bl MOD41_0225524C + cmp r0, #0 + beq _02254A28 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #3] + mov r0, #8 + str r0, [sp] + ldr r0, _02254A30 ; =0x022557B0 + ldr r2, _02254A34 ; =MOD41_02254A58 + mov r1, #0xb + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + mov r0, #0 + str r0, [r5, #0x18] + ldr r0, [r5, #0x10] + mov r1, #3 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x10] + mov r1, #5 + mov r2, #4 + bl MOD20_022542C0 + mov r1, #4 + ldr r0, [r5, #0x10] + add r2, r1, #0 + bl MOD20_022542C0 + ldr r0, [r5, #0x10] + mov r1, #6 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x10] + mov r1, #7 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x10] + mov r1, #9 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x10] + mov r1, #8 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x10] + mov r1, #0xa + mov r2, #4 + bl MOD20_022542C0 + add sp, #4 + str r4, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02254A28: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02254A30: .word 0x022557B0 +_02254A34: .word MOD41_02254A58 + thumb_func_end MOD41_02254990 + + thumb_func_start MOD41_02254A38 +MOD41_02254A38: ; 0x02254A38 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x48 + bl MOD41_022548F0 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + ldr r0, [r4, #8] + bl MOD41_0225528C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD41_02254A38 + + thumb_func_start MOD41_02254A58 +MOD41_02254A58: ; 0x02254A58 + push {r3, lr} + add r2, r0, #0 + str r2, [r3, #0x14] + str r1, [r3, #0x18] + cmp r2, #3 + bhs _02254A84 + cmp r1, #1 + bne _02254A74 + add r1, r2, #0 + add r0, r3, #0 + mov r2, #1 + bl MOD41_022548D8 + pop {r3, pc} +_02254A74: + sub r0, r1, #2 + cmp r0, #1 + bhi _02254A84 + add r1, r2, #0 + add r0, r3, #0 + mov r2, #0 + bl MOD41_022548D8 +_02254A84: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD41_02254A58 + + thumb_func_start MOD41_02254A88 +MOD41_02254A88: ; 0x02254A88 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #7 + bhs _02254AD0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldr r0, [r4, #0x44] + cmp r0, #0 + beq _02254AAE + ldr r0, [r4, #8] + mov r1, #4 + bl MOD41_022553A4 + mov r0, #0 + str r0, [r4, #0x44] +_02254AAE: + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254AD4 ; =0x02255794 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254AD0 + add r0, r4, #0 + bl MOD41_02254A38 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_02254AD0: + pop {r3, r4, r5, pc} + nop +_02254AD4: .word 0x02255794 + thumb_func_end MOD41_02254A88 + + thumb_func_start MOD41_02254AD8 +MOD41_02254AD8: ; 0x02254AD8 + mov r1, #1 + strb r1, [r0, #3] + bx lr + .align 2, 0 + thumb_func_end MOD41_02254AD8 + + thumb_func_start MOD41_02254AE0 +MOD41_02254AE0: ; 0x02254AE0 + ldrb r3, [r0, #3] + ldrb r2, [r0] + cmp r3, #0 + beq _02254AEA + mov r1, #6 +_02254AEA: + strb r1, [r0] + cmp r1, #0 + beq _02254AFA + cmp r1, #6 + beq _02254AFA + add r3, r0, #0 + add r3, #0x8c + str r2, [r3] +_02254AFA: + cmp r1, #6 + bhi _02254B50 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02254B0A: ; jump table + .short _02254B50 - _02254B0A - 2 ; case 0 + .short _02254B18 - _02254B0A - 2 ; case 1 + .short _02254B22 - _02254B0A - 2 ; case 2 + .short _02254B2C - _02254B0A - 2 ; case 3 + .short _02254B36 - _02254B0A - 2 ; case 4 + .short _02254B40 - _02254B0A - 2 ; case 5 + .short _02254B4A - _02254B0A - 2 ; case 6 +_02254B18: + mov r1, #1 + str r1, [r0, #0x50] + mov r1, #0 + str r1, [r0, #0x54] + b _02254B50 +_02254B22: + mov r1, #0 + str r1, [r0, #0x50] + mov r1, #1 + str r1, [r0, #0x54] + b _02254B50 +_02254B2C: + mov r1, #0 + str r1, [r0, #0x50] + mov r1, #1 + str r1, [r0, #0x54] + b _02254B50 +_02254B36: + mov r1, #0 + str r1, [r0, #0x50] + mov r1, #2 + str r1, [r0, #0x54] + b _02254B50 +_02254B40: + mov r1, #0 + str r1, [r0, #0x50] + mov r1, #3 + str r1, [r0, #0x54] + b _02254B50 +_02254B4A: + add r1, r0, #0 + add r1, #0x8c + str r2, [r1] +_02254B50: + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD41_02254AE0 + + thumb_func_start MOD41_02254B58 +MOD41_02254B58: ; 0x02254B58 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B68 + cmp r0, #1 + beq _02254B78 + b _02254B94 +_02254B68: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD41_022553A4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B94 +_02254B78: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD41_022553C8 + cmp r0, #0 + beq _02254B94 + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + add r4, #0x8c + ldr r1, [r4] + bl MOD41_02254AE0 +_02254B94: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD41_02254B58 + + thumb_func_start MOD41_02254B98 +MOD41_02254B98: ; 0x02254B98 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #3] + cmp r1, #0 + beq _02254BAC + mov r1, #6 + bl MOD41_02254AE0 + mov r0, #0 + pop {r4, pc} +_02254BAC: + ldr r0, [r4, #8] + bl MOD41_022553D4 + cmp r0, #0 + bne _02254BBA + mov r0, #0 + pop {r4, pc} +_02254BBA: + ldr r1, [r4, #0x18] + cmp r1, #1 + bne _02254C36 + ldr r0, [r4, #0x14] + cmp r0, #2 + bhi _02254C36 + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02254BEE + cmp r0, #1 + beq _02254C2C + cmp r0, #2 + bne _02254C32 + add r0, r4, #0 + bl MOD41_02255170 + ldr r0, [r4, #8] + mov r1, #5 + bl MOD41_022553A4 + ldr r0, _02254D18 ; =0x00000663 + bl MOD20_02252B28 + b _02254C32 +_02254BEE: + ldr r0, _02254D18 ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + bl MOD41_0225504C + mov r3, #0 + mov r2, #0 + eor r1, r3 + eor r0, r2 + orr r0, r1 + beq _02254C32 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + ldr r0, [r4, #8] + mov r1, #3 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #2 + bl MOD41_02254AE0 + b _02254C32 +_02254C2C: + ldr r0, _02254D1C ; =0x0000066E + bl MOD20_02252B28 +_02254C32: + mov r0, #0 + pop {r4, pc} +_02254C36: + cmp r1, #1 + beq _02254C3E + cmp r1, #7 + bne _02254D12 +_02254C3E: + ldr r1, [r4, #0x14] + add r0, r4, #0 + add r0, #0x48 + cmp r1, #0xa + bhi _02254D06 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02254C54: ; jump table + .short _02254D06 - _02254C54 - 2 ; case 0 + .short _02254D06 - _02254C54 - 2 ; case 1 + .short _02254D06 - _02254C54 - 2 ; case 2 + .short _02254C6A - _02254C54 - 2 ; case 3 + .short _02254C7C - _02254C54 - 2 ; case 4 + .short _02254C90 - _02254C54 - 2 ; case 5 + .short _02254CA4 - _02254C54 - 2 ; case 6 + .short _02254CB8 - _02254C54 - 2 ; case 7 + .short _02254CCC - _02254C54 - 2 ; case 8 + .short _02254CE0 - _02254C54 - 2 ; case 9 + .short _02254CF4 - _02254C54 - 2 ; case 10 +_02254C6A: + mov r1, #0 + ldrsb r2, [r0, r1] + add r2, r2, #1 + strb r2, [r0] + ldrsb r2, [r0, r1] + cmp r2, #9 + ble _02254D06 + strb r1, [r0] + b _02254D06 +_02254C7C: + mov r1, #1 + ldrsb r2, [r0, r1] + add r2, r2, #1 + strb r2, [r0, #1] + ldrsb r1, [r0, r1] + cmp r1, #9 + ble _02254D06 + mov r1, #0 + strb r1, [r0, #1] + b _02254D06 +_02254C90: + mov r1, #0 + ldrsb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0] + ldrsb r1, [r0, r1] + cmp r1, #0 + bge _02254D06 + mov r1, #9 + strb r1, [r0] + b _02254D06 +_02254CA4: + mov r1, #1 + ldrsb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0, #1] + ldrsb r1, [r0, r1] + cmp r1, #0 + bge _02254D06 + mov r1, #9 + strb r1, [r0, #1] + b _02254D06 +_02254CB8: + mov r1, #2 + ldrsb r2, [r0, r1] + add r2, r2, #1 + strb r2, [r0, #2] + ldrsb r1, [r0, r1] + cmp r1, #5 + ble _02254D06 + mov r1, #0 + strb r1, [r0, #2] + b _02254D06 +_02254CCC: + mov r1, #3 + ldrsb r2, [r0, r1] + add r2, r2, #1 + strb r2, [r0, #3] + ldrsb r1, [r0, r1] + cmp r1, #9 + ble _02254D06 + mov r1, #0 + strb r1, [r0, #3] + b _02254D06 +_02254CE0: + mov r1, #2 + ldrsb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0, #2] + ldrsb r1, [r0, r1] + cmp r1, #0 + bge _02254D06 + mov r1, #5 + strb r1, [r0, #2] + b _02254D06 +_02254CF4: + mov r1, #3 + ldrsb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0, #3] + ldrsb r1, [r0, r1] + cmp r1, #0 + bge _02254D06 + mov r1, #9 + strb r1, [r0, #3] +_02254D06: + ldr r0, [r4, #8] + mov r1, #5 + bl MOD41_022553A4 + mov r0, #0 + str r0, [r4, #0x18] +_02254D12: + mov r0, #0 + pop {r4, pc} + nop +_02254D18: .word 0x00000663 +_02254D1C: .word 0x0000066E + thumb_func_end MOD41_02254B98 + + thumb_func_start MOD41_02254D20 +MOD41_02254D20: ; 0x02254D20 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #3] + cmp r1, #0 + beq _02254D34 + mov r1, #6 + bl MOD41_02254AE0 + mov r0, #0 + pop {r4, pc} +_02254D34: + bl MOD41_02255108 + cmp r0, #0 + beq _02254D6C + ldr r0, [r4, #8] + mov r1, #5 + bl MOD41_022553A4 + add r0, r4, #0 + bl MOD41_022550F8 + cmp r0, #0 + beq _02254D6C + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + ldr r0, [r4, #8] + mov r1, #6 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #4 + bl MOD41_02254AE0 + mov r0, #0 + pop {r4, pc} +_02254D6C: + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254E00 + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02254D86 + cmp r0, #1 + beq _02254D8E + cmp r0, #2 + beq _02254DC0 + b _02254E00 +_02254D86: + ldr r0, _02254E04 ; =0x0000066E + bl MOD20_02252B28 + b _02254E00 +_02254D8E: + ldr r0, _02254E08 ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD41_022548BC + add r0, r4, #0 + bl MOD41_022550BC + ldr r0, [r4, #8] + mov r1, #4 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #3 + bl MOD41_02254AE0 + b _02254E00 +_02254DC0: + ldr r0, _02254E08 ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD41_022548BC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + add r0, r4, #0 + bl MOD41_02255170 + ldr r0, [r4, #8] + mov r1, #4 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #5 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #1 + bl MOD41_02254AE0 +_02254E00: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02254E04: .word 0x0000066E +_02254E08: .word 0x00000663 + thumb_func_end MOD41_02254D20 + + thumb_func_start MOD41_02254E0C +MOD41_02254E0C: ; 0x02254E0C + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #3] + cmp r1, #0 + beq _02254E20 + mov r1, #6 + bl MOD41_02254AE0 + mov r0, #0 + pop {r4, pc} +_02254E20: + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254EAC + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02254E3A + cmp r0, #1 + beq _02254E64 + cmp r0, #2 + beq _02254E6C + b _02254EAC +_02254E3A: + ldr r0, _02254EB0 ; =0x00000663 + bl MOD20_02252B28 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + add r0, r4, #0 + bl MOD41_022550D0 + add r0, r4, #0 + mov r1, #2 + bl MOD41_02254AE0 + b _02254EAC +_02254E64: + ldr r0, _02254EB4 ; =0x0000066E + bl MOD20_02252B28 + b _02254EAC +_02254E6C: + ldr r0, _02254EB0 ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD41_022548BC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + add r0, r4, #0 + bl MOD41_02255170 + ldr r0, [r4, #8] + mov r1, #4 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #5 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #1 + bl MOD41_02254AE0 +_02254EAC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02254EB0: .word 0x00000663 +_02254EB4: .word 0x0000066E + thumb_func_end MOD41_02254E0C + + thumb_func_start MOD41_02254EB8 +MOD41_02254EB8: ; 0x02254EB8 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #3] + cmp r1, #0 + beq _02254ECC + mov r1, #6 + bl MOD41_02254AE0 + mov r0, #0 + pop {r4, pc} +_02254ECC: + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254F52 + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02254EE6 + cmp r0, #1 + beq _02254EEE + cmp r0, #2 + beq _02254F20 + b _02254F52 +_02254EE6: + ldr r0, _02254F58 ; =0x0000066E + bl MOD20_02252B28 + b _02254F52 +_02254EEE: + ldr r0, _02254F5C ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD41_022548BC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + ldr r0, [r4, #8] + mov r1, #7 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #5 + bl MOD41_02254AE0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254F52 +_02254F20: + ldr r0, _02254F5C ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD41_022548BC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + ldr r0, [r4, #8] + mov r1, #7 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #1 + bl MOD41_02254AE0 +_02254F52: + mov r0, #0 + pop {r4, pc} + nop +_02254F58: .word 0x0000066E +_02254F5C: .word 0x00000663 + thumb_func_end MOD41_02254EB8 + + thumb_func_start MOD41_02254F60 +MOD41_02254F60: ; 0x02254F60 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #3] + cmp r1, #0 + beq _02254F74 + mov r1, #6 + bl MOD41_02254AE0 + mov r0, #0 + pop {r4, pc} +_02254F74: + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _0225500A + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02254F8E + cmp r0, #1 + beq _02254FBA + cmp r0, #2 + beq _02254FC2 + b _0225500A +_02254F8E: + ldr r0, _02255010 ; =0x00000663 + bl MOD20_02252B28 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD41_022548BC + ldr r0, [r4, #8] + mov r1, #6 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #4 + bl MOD41_02254AE0 + b _0225500A +_02254FBA: + ldr r0, _02255014 ; =0x0000066E + bl MOD20_02252B28 + b _0225500A +_02254FC2: + ldr r0, _02255010 ; =0x00000663 + bl MOD20_02252B28 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD41_022548BC + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD41_022548BC + add r0, r4, #0 + bl MOD41_02255170 + ldr r0, [r4, #8] + mov r1, #7 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #4 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #5 + bl MOD41_022553A4 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD41_022553A4 + add r0, r4, #0 + mov r1, #1 + bl MOD41_02254AE0 +_0225500A: + mov r0, #0 + pop {r4, pc} + nop +_02255010: .word 0x00000663 +_02255014: .word 0x0000066E + thumb_func_end MOD41_02254F60 + + thumb_func_start MOD41_02255018 +MOD41_02255018: ; 0x02255018 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02255028 + cmp r0, #1 + beq _02255038 + b _02255046 +_02255028: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD41_022553A4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02255046 +_02255038: + ldr r0, [r4, #8] + bl MOD41_022553D4 + cmp r0, #0 + beq _02255046 + mov r0, #1 + pop {r4, pc} +_02255046: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD41_02255018 + + thumb_func_start MOD41_0225504C +MOD41_0225504C: ; 0x0225504C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x48 + bl FUN_02020BF4 + str r0, [r5, #0x68] + str r1, [r5, #0x6c] + mov r2, #0 + str r2, [r5, #0x70] + add r0, r5, #0 + str r2, [r5, #0x74] + mov r1, #1 + add r0, #0x88 + str r1, [r0] + str r2, [r5, #0x78] + str r2, [r5, #0x7c] + mov r2, #2 + ldrsb r3, [r4, r2] + mov r0, #3 + ldrsb r0, [r4, r0] + add r6, r3, #0 + ldrsb r3, [r4, r1] + mov r1, #0x48 + mov r2, #0xa + mul r6, r2 + ldrsb r1, [r5, r1] + add r0, r0, r6 + mul r2, r1 + add r2, r3, r2 + mov r1, #0x3c + mul r1, r2 + add r2, r0, r1 + add r0, r5, #0 + add r0, #0x80 + str r2, [r0] + add r0, r5, #0 + asr r1, r2, #0x1f + add r0, #0x84 + str r1, [r0] + add r1, r5, #0 + add r2, r5, #0 + add r1, #0x80 + add r2, #0x84 + ldr r1, [r1] + ldr r2, [r2] + add r0, r5, #0 + bl MOD41_02255190 + add r0, r5, #0 + add r0, #0x80 + add r5, #0x84 + ldr r0, [r0] + ldr r1, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD41_0225504C + + thumb_func_start MOD41_022550BC +MOD41_022550BC: ; 0x022550BC + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + add r0, #0x88 + str r1, [r0] + bl FUN_02020BF4 + str r0, [r4, #0x70] + str r1, [r4, #0x74] + pop {r4, pc} + thumb_func_end MOD41_022550BC + + thumb_func_start MOD41_022550D0 +MOD41_022550D0: ; 0x022550D0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + bl FUN_02020BF4 + add r5, r4, #0 + add r5, #0x68 + ldr r7, [r4, #0x70] + ldr r2, [r4, #0x68] + ldr r6, [r4, #0x74] + sub r0, r0, r7 + sbc r1, r6 + ldr r3, [r5, #4] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0x68] + str r3, [r5, #4] + mov r0, #1 + add r4, #0x88 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD41_022550D0 + + thumb_func_start MOD41_022550F8 +MOD41_022550F8: ; 0x022550F8 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0 + bne _02255104 + mov r0, #1 + bx lr +_02255104: + mov r0, #0 + bx lr + thumb_func_end MOD41_022550F8 + + thumb_func_start MOD41_02255108 +MOD41_02255108: ; 0x02255108 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0 + beq _0225516A + bl FUN_02020BF4 + ldr r3, [r4, #0x68] + ldr r2, [r4, #0x6c] + sub r0, r0, r3 + sbc r1, r2 + bl FUN_02020C14 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x80 + add r6, r1, #0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r2, [r0] + sub r0, r5, r1 + mov ip, r6 + mov r0, ip + sbc r0, r2 + blo _02255148 + add r0, r4, #0 + bl MOD41_02255170 + mov r0, #1 + pop {r4, r5, r6, pc} +_02255148: + ldr r3, [r4, #0x78] + ldr r0, [r4, #0x7c] + eor r3, r5 + eor r0, r6 + orr r0, r3 + beq _02255166 + add r0, r4, #0 + sub r1, r1, r5 + sbc r2, r6 + bl MOD41_02255190 + str r5, [r4, #0x78] + str r6, [r4, #0x7c] + mov r0, #1 + pop {r4, r5, r6, pc} +_02255166: + mov r0, #0 + pop {r4, r5, r6, pc} +_0225516A: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD41_02255108 + + thumb_func_start MOD41_02255170 +MOD41_02255170: ; 0x02255170 + add r1, r0, #0 + mov r2, #0 + add r1, #0x88 + str r2, [r1] + add r1, r0, #0 + add r1, #0x48 + strb r2, [r1] + add r1, r0, #0 + add r1, #0x49 + strb r2, [r1] + add r1, r0, #0 + add r1, #0x4a + strb r2, [r1] + add r0, #0x4b + strb r2, [r0] + bx lr + thumb_func_end MOD41_02255170 + + thumb_func_start MOD41_02255190 +MOD41_02255190: ; 0x02255190 + push {r3, r4, r5, r6} + add r3, r0, #0 + ldr r0, _02255240 ; =0x04000280 + mov r4, #1 + strh r4, [r0] + add r4, r0, #0 + add r4, #0x10 + str r1, [r4] + str r2, [r4, #4] + add r1, r0, #0 + mov r4, #0x3c + add r1, #0x18 + mov r2, #0 + str r4, [r1] + str r2, [r1, #4] + lsr r1, r0, #0xb +_022551B0: + ldrh r2, [r0] + tst r2, r1 + bne _022551B0 + ldr r0, _02255244 ; =0x040002A0 + ldr r6, _02255240 ; =0x04000280 + ldr r0, [r0] + lsr r1, r6, #0xb +_022551BE: + ldrh r2, [r6] + tst r2, r1 + bne _022551BE + ldr r5, _02255248 ; =0x040002A8 + mov r4, #0 + ldr r2, [r5] + add r1, r5, #0 + strh r4, [r6] + sub r1, #0x18 + str r0, [r1] + mov r0, #0xa + sub r5, #0x10 + str r0, [r5] + str r4, [r5, #4] + ldr r4, _02255240 ; =0x04000280 + lsr r0, r4, #0xb +_022551DE: + ldrh r1, [r4] + tst r1, r0 + bne _022551DE + ldr r0, _02255244 ; =0x040002A0 + ldr r1, [r0] + add r0, r3, #0 + add r0, #0x48 + strb r1, [r0] + ldr r1, _02255240 ; =0x04000280 + lsr r0, r1, #0xb +_022551F2: + ldrh r4, [r1] + tst r4, r0 + bne _022551F2 + ldr r0, _02255248 ; =0x040002A8 + add r4, r3, #0 + ldr r5, [r0] + add r4, #0x49 + strb r5, [r4] + mov r4, #0 + strh r4, [r1] + add r1, r0, #0 + sub r1, #0x18 + str r2, [r1] + mov r1, #0xa + sub r0, #0x10 + str r1, [r0] + ldr r2, _02255240 ; =0x04000280 + str r4, [r0, #4] + lsr r0, r2, #0xb +_02255218: + ldrh r1, [r2] + tst r1, r0 + bne _02255218 + ldr r0, _02255244 ; =0x040002A0 + ldr r2, _02255240 ; =0x04000280 + ldr r1, [r0] + add r0, r3, #0 + add r0, #0x4a + strb r1, [r0] + lsr r0, r2, #0xb +_0225522C: + ldrh r1, [r2] + tst r1, r0 + bne _0225522C + ldr r0, _02255248 ; =0x040002A8 + add r3, #0x4b + ldr r0, [r0] + strb r0, [r3] + pop {r3, r4, r5, r6} + bx lr + nop +_02255240: .word 0x04000280 +_02255244: .word 0x040002A0 +_02255248: .word 0x040002A8 + thumb_func_end MOD41_02255190 + + thumb_func_start MOD41_0225524C +MOD41_0225524C: ; 0x0225524C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0xac + bl FUN_02016998 + add r4, r0, #0 + beq _02255288 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x30] + add r0, r4, #0 + add r1, r5, #0 + bl MOD41_022552A0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _02255288 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02255288: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD41_0225524C + + thumb_func_start MOD41_0225528C +MOD41_0225528C: ; 0x0225528C + push {r4, lr} + add r4, r0, #0 + beq _0225529C + bl MOD41_02255374 + add r0, r4, #0 + bl FUN_02016A18 +_0225529C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD41_0225528C + + thumb_func_start MOD41_022552A0 +MOD41_022552A0: ; 0x022552A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r1, [sp, #0xc] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x5e + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x78 + mov r1, #0xc + mov r2, #0x5c + mov r3, #0x5d + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x8c + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r0, r7, #0 + str r0, [sp, #0x14] + add r0, #0x78 + str r0, [sp, #0x14] + add r0, r7, #0 + str r0, [sp, #0x10] + add r0, #0x8c + ldr r6, _02255370 ; =0x02255864 + mov r4, #0 + add r5, r7, #0 + str r0, [sp, #0x10] +_0225530E: + cmp r4, #0xd + blt _02255324 + cmp r4, #0x10 + bgt _02255324 + ldr r0, [r7, #0x30] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD20_02253E74 + str r0, [r5, #0x34] + b _02255336 +_02255324: + ldr r0, [r7, #0x30] + ldr r2, [sp, #0x14] + add r1, r6, #0 + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r5, #0x34] + bl MOD20_02253FA4 +_02255336: + add r4, r4, #1 + add r6, #0x10 + add r5, r5, #4 + cmp r4, #0x11 + blt _0225530E + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD41_022556D4 + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD41_02255714 + ldr r0, [sp, #0xc] + ldr r0, [r0, #8] + cmp r0, #0 + bne _0225535C + mov r1, #1 + b _0225535E +_0225535C: + mov r1, #0 +_0225535E: + add r0, r7, #0 + bl MOD41_02255744 + mov r0, #0 + add r7, #0xa8 + str r0, [r7] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255370: .word 0x02255864 + thumb_func_end MOD41_022552A0 + + thumb_func_start MOD41_02255374 +MOD41_02255374: ; 0x02255374 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_0225537C: + ldr r1, [r5, #0x34] + cmp r1, #0 + beq _02255388 + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02255388: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x11 + blt _0225537C + add r0, r6, #0 + add r0, #0x78 + bl MOD20_02254014 + add r6, #0x8c + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD41_02255374 + + thumb_func_start MOD41_022553A4 +MOD41_022553A4: ; 0x022553A4 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _022553C4 ; =0x022557F8 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_022553C4: .word 0x022557F8 + thumb_func_end MOD41_022553A4 + + thumb_func_start MOD41_022553C8 +MOD41_022553C8: ; 0x022553C8 + ldr r3, _022553D0 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_022553D0: .word MOD20_02253794 + thumb_func_end MOD41_022553C8 + + thumb_func_start MOD41_022553D4 +MOD41_022553D4: ; 0x022553D4 + ldr r3, _022553DC ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_022553DC: .word MOD20_022537B8 + thumb_func_end MOD41_022553D4 + + thumb_func_start MOD41_022553E0 +MOD41_022553E0: ; 0x022553E0 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD41_022553E0 + + thumb_func_start MOD41_022553F4 +MOD41_022553F4: ; 0x022553F4 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _022554CC ; =0x022557DC + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x5b + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x5a + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _022554D0 ; =0x04001000 + ldr r0, _022554D4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + ldr r1, [r4] + ldr r0, [r1, #0xc] + cmp r0, #1 + beq _02255488 + cmp r0, #2 + beq _0225547E + cmp r0, #3 + beq _0225549A + b _022554C0 +_0225547E: + add r0, r4, #0 + mov r1, #6 + bl MOD41_022553A4 + b _022554C0 +_02255488: + ldr r0, [r4, #0x34] + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + b _022554C0 +_0225549A: + ldr r0, [r1, #0x10] + cmp r0, #0 + ldr r0, [r4, #0x34] + beq _022554B2 + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + b _022554C0 +_022554B2: + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD20_02253F28 +_022554C0: + add r0, r5, #0 + bl MOD41_022553E0 + add sp, #0x14 + pop {r4, r5, pc} + nop +_022554CC: .word 0x022557DC +_022554D0: .word 0x04001000 +_022554D4: .word 0xFFFFE0FF + thumb_func_end MOD41_022553F4 + + thumb_func_start MOD41_022554D8 +MOD41_022554D8: ; 0x022554D8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022554FA + cmp r0, #1 + beq _02255508 + pop {r3, r4, r5, pc} +_022554FA: + add r0, r4, #0 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + bl MOD20_022538B0 +_02255508: + add r0, r4, #0 + mov r1, #6 + bl MOD41_022553C8 + cmp r0, #0 + beq _02255522 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD41_022553E0 +_02255522: + pop {r3, r4, r5, pc} + thumb_func_end MOD41_022554D8 + + thumb_func_start MOD41_02255524 +MOD41_02255524: ; 0x02255524 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r4, #0 + mov r1, #0 + bl MOD41_02255744 + ldr r0, [r4, #0x34] + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD41_022553E0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_02255524 + + thumb_func_start MOD41_02255558 +MOD41_02255558: ; 0x02255558 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r4, #0 + mov r1, #1 + bl MOD41_02255744 + ldr r0, [r4, #0x34] + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD41_022553E0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_02255558 + + thumb_func_start MOD41_0225558C +MOD41_0225558C: ; 0x0225558C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD41_022556D4 + add r0, r5, #0 + bl MOD41_022553E0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_0225558C + + thumb_func_start MOD41_022555B0 +MOD41_022555B0: ; 0x022555B0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD41_02255714 + add r0, r5, #0 + bl MOD41_022553E0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_022555B0 + + thumb_func_start MOD41_022555D4 +MOD41_022555D4: ; 0x022555D4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022555F6 + cmp r0, #1 + beq _0225561A + pop {r3, r4, r5, pc} +_022555F6: + ldr r0, [r4, #0x34] + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD20_02253F28 + add r0, r4, #0 + mov r1, #0 + add r0, #0xa4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + bl MOD20_022538B0 +_0225561A: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _0225562C + add r0, r5, #0 + bl MOD41_022553E0 + pop {r3, r4, r5, pc} +_0225562C: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xa4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + cmp r0, #8 + blo _0225568A + add r0, r4, #0 + add r0, #0xa8 + ldr r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ldr r0, [r4, #0x34] + beq _02255670 + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + b _0225567E +_02255670: + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD20_02253F28 +_0225567E: + ldr r0, _0225568C ; =0x00000677 + bl MOD20_02252B28 + mov r0, #0 + add r4, #0xa4 + str r0, [r4] +_0225568A: + pop {r3, r4, r5, pc} + .align 2, 0 +_0225568C: .word 0x00000677 + thumb_func_end MOD41_022555D4 + + thumb_func_start MOD41_02255690 +MOD41_02255690: ; 0x02255690 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022556B2 + cmp r0, #1 + beq _022556C0 + pop {r3, r4, r5, pc} +_022556B2: + add r0, r4, #0 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + bl MOD20_022538B0 +_022556C0: + add r0, r4, #0 + mov r1, #6 + bl MOD41_022553C8 + cmp r0, #0 + beq _022556D2 + add r0, r5, #0 + bl MOD41_022553E0 +_022556D2: + pop {r3, r4, r5, pc} + thumb_func_end MOD41_02255690 + + thumb_func_start MOD41_022556D4 +MOD41_022556D4: ; 0x022556D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #4] + cmp r0, #0 + beq _022556E4 + mov r1, #6 + b _022556E6 +_022556E4: + mov r1, #5 +_022556E6: + ldr r0, [r5, #0x3c] + bl MOD20_02253F28 + ldrb r0, [r4, #5] + cmp r0, #0 + beq _022556F6 + mov r1, #8 + b _022556F8 +_022556F6: + mov r1, #7 +_022556F8: + ldr r0, [r5, #0x40] + bl MOD20_02253F28 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02255708 + mov r1, #0xa + b _0225570A +_02255708: + mov r1, #9 +_0225570A: + ldr r0, [r5, #0x44] + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_022556D4 + + thumb_func_start MOD41_02255714 +MOD41_02255714: ; 0x02255714 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + ldrsb r1, [r4, r1] + ldr r0, [r5, #0x68] + bl MOD20_02253F28 + mov r1, #1 + ldrsb r1, [r4, r1] + ldr r0, [r5, #0x6c] + bl MOD20_02253F28 + mov r1, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, #0x70] + bl MOD20_02253F28 + mov r1, #3 + ldrsb r1, [r4, r1] + ldr r0, [r5, #0x74] + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + thumb_func_end MOD41_02255714 + + thumb_func_start MOD41_02255744 +MOD41_02255744: ; 0x02255744 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x48] + add r4, r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x58] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x5c] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x60] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x64] + add r1, r4, #0 + bl MOD20_02253F78 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD41_02255744 + + thumb_func_start MOD41_0225578C +MOD41_0225578C: ; 0x0225578C + add r0, #0xa8 + ldr r0, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD41_0225578C + + .section .rodata + ; 0x02255794 + .incbin "baserom.nds", 0x293d54, 0x1E0 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_41.SINIT_START + .global SDK_OVERLAY.MODULE_41.SINIT_END +SDK_OVERLAY.MODULE_41.SINIT_START: + .word MOD41_02254840 + .word 0 +SDK_OVERLAY.MODULE_41.SINIT_END: |