diff options
author | Revo <projectrevotpp@hotmail.com> | 2020-05-11 19:22:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-11 19:22:29 -0400 |
commit | 3dd56d2a7eea02f1eb1c6563253ecdc25a7b396a (patch) | |
tree | 1bd111e0daf9f57a5dd07d1943c67d631e7d850b /arm9/modules | |
parent | 2746b162878a466fa50e3a2945b1f30642ef186f (diff) | |
parent | 7eb5c2b9c3de741304fc6222c35a6fb87a0f5dd9 (diff) |
Merge pull request #76 from PikalaxALT/pikalax_work
Disassemble overlays 37-41; undo linktime interworking (BLX)
Diffstat (limited to 'arm9/modules')
-rw-r--r-- | arm9/modules/01/src/module_01.cpp | 2 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm2.s | 14 | ||||
-rw-r--r-- | arm9/modules/20/asm/module_20.s | 8 | ||||
-rw-r--r-- | arm9/modules/29/asm/module_29.s | 10 | ||||
-rw-r--r-- | arm9/modules/36/asm/module_36.s | 6 | ||||
-rw-r--r-- | arm9/modules/37/asm/module_37.s | 681 | ||||
-rw-r--r-- | arm9/modules/38/asm/module_38.s | 1193 | ||||
-rw-r--r-- | arm9/modules/39/asm/module_39.s | 1457 | ||||
-rw-r--r-- | arm9/modules/40/asm/module_40.s | 1417 | ||||
-rw-r--r-- | arm9/modules/41/asm/module_41.s | 2032 |
10 files changed, 6800 insertions, 20 deletions
diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp index 21b371e0..9da5f8d5 100644 --- a/arm9/modules/01/src/module_01.cpp +++ b/arm9/modules/01/src/module_01.cpp @@ -8,4 +8,4 @@ public: THUMB_FUNC Unk021D7500() { unk4++; } }; -static class Unk021D7500 UNK_021D7500; +static Unk021D7500 UNK_021D7500; diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s index 2e9dd8b5..ad4626d6 100644 --- a/arm9/modules/13/asm/module_13_arm2.s +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -5214,7 +5214,7 @@ MOD13_02222D0C: ; 0x02222D0C sub sp, sp, #4 ldr r0, _02222D74 ; =0x02243048 ldr r0, [r0] - blx MOD13_02219798 + bl MOD13_02219798 cmp r0, #0 ldreq r1, _02222D78 ; =0x02243044 moveq r0, #1 @@ -5246,7 +5246,7 @@ _02222D78: .word 0x02243044 MOD13_02222D7C: ; 0x02222D7C stmdb sp!, {r4, lr} mov r4, r0 - blx MOD13_02219C9C + bl MOD13_02219C9C cmp r4, #0 beq _02222DC0 ldr r0, _02222DCC ; =0x02243048 @@ -5329,7 +5329,7 @@ _02222E48: bl OS_GetMacAddress ldr r0, _02222EE0 ; =MOD13_02222CFC ldr r1, _02222EE4 ; =MOD13_02222CF0 - blx MOD13_02219D58 + bl MOD13_02219D58 cmp r0, #0 addeq sp, sp, #0x104 ldmeqia sp!, {pc} @@ -6270,7 +6270,7 @@ MOD13_02223AF8: ; 0x02223AF8 stmdb sp!, {lr} sub sp, sp, #0xec add r0, sp, #0 - blx MOD13_0221A794 + bl MOD13_0221A794 cmp r0, #1 beq _02223B14 bl OS_Terminate @@ -6313,7 +6313,7 @@ _02223B7C: ldmia sp!, {pc} _02223B88: add r0, sp, #0 - blx MOD13_0221A794 + bl MOD13_0221A794 cmp r0, #1 beq _02223B9C bl OS_Terminate @@ -6344,7 +6344,7 @@ _02223BDC: .word 0x02243078 MOD13_02223BE0: ; 0x02223BE0 stmdb sp!, {lr} sub sp, sp, #4 - blx MOD13_0221A7EC + bl MOD13_0221A7EC cmp r0, #1 beq _02223BF8 bl OS_Terminate @@ -6373,7 +6373,7 @@ MOD13_02223C0C: ; 0x02223C0C mov r0, #0xf mov r1, #0x40 str ip, [sp, #4] - blx MOD13_0221A8A4 + bl MOD13_0221A8A4 cmp r0, #1 beq _02223C58 bl OS_Terminate diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index 1c3ba821..2975c2d8 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -5,10 +5,10 @@ thumb_func_start MOD20_02252440 MOD20_02252440: ; 0x02252440 - ldr r3, _02252444 ; =0x02037791 + ldr r3, _02252444 ; =FUN_02037790 bx r3 .align 2, 0 -_02252444: .word 0x02037791 +_02252444: .word FUN_02037790 thumb_func_end MOD20_02252440 thumb_func_start MOD20_02252448 @@ -1136,11 +1136,11 @@ _02252C04: thumb_func_start MOD20_02252C08 MOD20_02252C08: ; 0x02252C08 - ldr r3, _02252C10 ; =0x0204646D + ldr r3, _02252C10 ; =FUN_0204646C ldr r0, [r0, #0x5c] bx r3 nop -_02252C10: .word 0x0204646D +_02252C10: .word FUN_0204646C thumb_func_end MOD20_02252C08 thumb_func_start MOD20_02252C14 diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s index db3f5ab8..65873dcc 100644 --- a/arm9/modules/29/asm/module_29.s +++ b/arm9/modules/29/asm/module_29.s @@ -383,7 +383,7 @@ _02254AE0: mul r1, r0 add r0, r2, r1 lsl r0, r0, #0xc - blx FX_Sqrt + bl FX_Sqrt ldrb r1, [r5, #4] lsl r2, r1, #2 ldr r1, _02254B6C ; =0x022550A8 @@ -724,13 +724,13 @@ MOD29_02254D10: ; 0x02254D10 add r0, r4, #0 add r0, #0x70 mov r1, #0x20 - blx DC_FlushRange + bl DC_FlushRange add r0, r4, #0 mov r1, #0x1a add r0, #0x70 lsl r1, r1, #4 mov r2, #0x20 - blx GXS_LoadOBJPltt + bl GXS_LoadOBJPltt add r0, r4, #0 add r0, #0x8e ldrh r1, [r0] @@ -740,13 +740,13 @@ MOD29_02254D10: ; 0x02254D10 add r0, r4, #0 add r0, #0x70 mov r1, #0x20 - blx DC_FlushRange + bl DC_FlushRange add r0, r4, #0 mov r1, #7 add r0, #0x70 lsl r1, r1, #6 mov r2, #0x20 - blx GXS_LoadOBJPltt + bl GXS_LoadOBJPltt ldr r0, [r4, #4] mov r1, #6 bl FUN_02017CD0 diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s index d15b1d72..47ccf2cc 100644 --- a/arm9/modules/36/asm/module_36.s +++ b/arm9/modules/36/asm/module_36.s @@ -632,7 +632,7 @@ _02254CDA: ldr r0, [sp, #0x28] sub r0, r0, r4 lsl r0, r0, #0xc - blx _s32_div_f + bl _s32_div_f str r0, [sp, #0x10] b _02254CF0 _02254CEC: @@ -699,7 +699,7 @@ _02254D54: add r1, r2, #0 sub r0, r0, r5 lsl r0, r0, #0xc - blx _s32_div_f + bl _s32_div_f str r0, [sp, #8] b _02254D6C _02254D68: @@ -1225,7 +1225,7 @@ MOD36_0225510C: ; 0x0225510C mov r2, #0x20 add r1, r1, r5 lsl r1, r1, #5 - blx GXS_LoadBG3Char + bl GXS_LoadBG3Char add r0, r6, #0 bl MOD36_02254F48 add sp, #8 diff --git a/arm9/modules/37/asm/module_37.s b/arm9/modules/37/asm/module_37.s new file mode 100644 index 00000000..3cbe599b --- /dev/null +++ b/arm9/modules/37/asm/module_37.s @@ -0,0 +1,681 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD37_02254840 +MOD37_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD37_02254854 + ldr r1, _02254850 ; =MOD37_02254934 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD37_02254854 +_02254850: .word MOD37_02254934 + thumb_func_end MOD37_02254840 + + thumb_func_start MOD37_02254854 +MOD37_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x14 + 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 MOD37_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD37_02254900 + 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 MOD37_02254900 + thumb_func_end MOD37_02254854 + + thumb_func_start MOD37_0225489C +MOD37_0225489C: ; 0x0225489C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + add r6, r2, #0 + add r0, r3, #0 + add r1, #8 + mov r2, #4 + str r3, [r5, #4] + bl FUN_02089418 + cmp r0, #0 + bne _022548BA + mov r0, #1 + str r0, [r5, #8] +_022548BA: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xc + add r1, #8 + add r2, r6, #0 + bl MOD37_02254A54 + cmp r0, #0 + beq _022548DA + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r4, [r5, #0x10] + mov r0, #1 + pop {r4, r5, r6, pc} +_022548DA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD37_0225489C + + thumb_func_start MOD37_022548E0 +MOD37_022548E0: ; 0x022548E0 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #8 + mov r2, #4 + bl FUN_020893F0 + ldr r0, [r4, #0xc] + bl MOD37_02254B0C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD37_022548E0 + + thumb_func_start MOD37_02254900 +MOD37_02254900: ; 0x02254900 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _0225492C + lsl r2, r1, #2 + ldr r1, _02254930 ; =0x02254D28 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225492C + add r0, r4, #0 + bl MOD37_022548E0 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD20_022529A0 +_0225492C: + pop {r3, r4, r5, pc} + nop +_02254930: .word 0x02254D28 + thumb_func_end MOD37_02254900 + + thumb_func_start MOD37_02254934 +MOD37_02254934: ; 0x02254934 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD37_02254934 + + thumb_func_start MOD37_0225493C +MOD37_0225493C: ; 0x0225493C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254944 + b _02254946 +_02254944: + mov r1, #2 +_02254946: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD37_0225493C + + thumb_func_start MOD37_02254950 +MOD37_02254950: ; 0x02254950 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254960 + cmp r0, #1 + beq _02254970 + b _0225498A +_02254960: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD37_02254B20 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225498A +_02254970: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD37_02254B44 + cmp r0, #0 + beq _0225498A + ldr r0, [r4, #0x10] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD37_0225493C +_0225498A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD37_02254950 + + thumb_func_start MOD37_02254990 +MOD37_02254990: ; 0x02254990 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549A0 + mov r1, #2 + bl MOD37_0225493C +_022549A0: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549AC + cmp r0, #1 + beq _022549CE + b _022549DE +_022549AC: + bl MOD37_02254A18 + cmp r0, #0 + beq _022549DE + bl FUN_0201BA60 + mov r1, #1 + and r0, r1 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD37_02254B20 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549DE +_022549CE: + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD37_02254B44 + cmp r0, #0 + beq _022549DE + mov r0, #0 + strb r0, [r4, #1] +_022549DE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD37_02254990 + + thumb_func_start MOD37_022549E4 +MOD37_022549E4: ; 0x022549E4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549F4 + cmp r0, #1 + beq _02254A04 + b _02254A12 +_022549F4: + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD37_02254B20 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A12 +_02254A04: + ldr r0, [r4, #0xc] + bl MOD37_02254B50 + cmp r0, #0 + beq _02254A12 + mov r0, #1 + pop {r4, pc} +_02254A12: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD37_022549E4 + + thumb_func_start MOD37_02254A18 +MOD37_02254A18: ; 0x02254A18 + push {r3, lr} + sub sp, #8 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252BB8 + cmp r0, #0 + beq _02254A4E + ldr r1, [sp, #4] + mov r0, #0x70 + sub r0, r0, r1 + add r3, r0, #0 + mul r3, r0 + ldr r1, [sp] + mov r0, #0x90 + sub r2, r0, r1 + add r1, r2, #0 + mul r1, r2 + str r1, [sp] + add r1, r3, r1 + lsl r0, r0, #2 + str r3, [sp, #4] + cmp r1, r0 + bhs _02254A4E + add sp, #8 + mov r0, #1 + pop {r3, pc} +_02254A4E: + mov r0, #0 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD37_02254A18 + + thumb_func_start MOD37_02254A54 +MOD37_02254A54: ; 0x02254A54 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x48 + bl FUN_02016998 + add r4, r0, #0 + beq _02254A94 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + bl MOD37_02254AA0 + ldr r1, _02254A98 ; =0xFFFF5800 + ldr r0, _02254A9C ; =0x02254DA0 + str r1, [r0] + mov r1, #0xb + lsl r1, r1, #8 + str r1, [r0, #4] + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254A94: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254A98: .word 0xFFFF5800 +_02254A9C: .word 0x02254DA0 + thumb_func_end MOD37_02254A54 + + thumb_func_start MOD37_02254AA0 +MOD37_02254AA0: ; 0x02254AA0 + push {r3, r4, lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r4, r0, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x39 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x28 + mov r1, #0xc + mov r2, #0x37 + mov r3, #0x38 + bl MOD20_02253FBC + add r2, r4, #0 + ldr r0, [r4, #0x20] + ldr r1, _02254AF0 ; =0x02254D34 + add r2, #0x28 + bl MOD20_02253E74 + str r0, [r4, #0x24] + ldr r0, [r4] + ldr r0, [r0] + cmp r0, #0 + bne _02254AEA + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD20_02253F28 +_02254AEA: + add sp, #0xc + pop {r3, r4, pc} + nop +_02254AF0: .word 0x02254D34 + thumb_func_end MOD37_02254AA0 + + thumb_func_start MOD37_02254AF4 +MOD37_02254AF4: ; 0x02254AF4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + bl MOD20_02253F14 + add r4, #0x28 + add r0, r4, #0 + bl MOD20_02254014 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD37_02254AF4 + + thumb_func_start MOD37_02254B0C +MOD37_02254B0C: ; 0x02254B0C + push {r4, lr} + add r4, r0, #0 + beq _02254B1C + bl MOD37_02254AF4 + add r0, r4, #0 + bl FUN_02016A18 +_02254B1C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD37_02254B0C + + thumb_func_start MOD37_02254B20 +MOD37_02254B20: ; 0x02254B20 + 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, _02254B40 ; =0x02254D60 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B40: .word 0x02254D60 + thumb_func_end MOD37_02254B20 + + thumb_func_start MOD37_02254B44 +MOD37_02254B44: ; 0x02254B44 + ldr r3, _02254B4C ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B4C: .word MOD20_02253794 + thumb_func_end MOD37_02254B44 + + thumb_func_start MOD37_02254B50 +MOD37_02254B50: ; 0x02254B50 + ldr r3, _02254B58 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B58: .word MOD20_022537B8 + thumb_func_end MOD37_02254B50 + + thumb_func_start MOD37_02254B5C +MOD37_02254B5C: ; 0x02254B5C + 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 MOD37_02254B5C + + thumb_func_start MOD37_02254B70 +MOD37_02254B70: ; 0x02254B70 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254BF4 ; =0x02254D44 + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x36 + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x35 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BF8 ; =0x04001000 + ldr r0, _02254BFC ; =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] + add r0, r4, #0 + bl MOD37_02254B5C + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254BF4: .word 0x02254D44 +_02254BF8: .word 0x04001000 +_02254BFC: .word 0xFFFFE0FF + thumb_func_end MOD37_02254B70 + + thumb_func_start MOD37_02254C00 +MOD37_02254C00: ; 0x02254C00 + 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_022538AC + cmp r0, #0 + beq _02254C1C + cmp r0, #1 + beq _02254C26 + pop {r3, r4, r5, pc} +_02254C1C: + mov r0, #1 + str r0, [r4, #0x44] + add r0, r5, #0 + bl MOD20_022538B0 +_02254C26: + add r0, r4, #0 + mov r1, #2 + bl MOD37_02254B44 + cmp r0, #0 + beq _02254C40 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD37_02254B5C +_02254C40: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD37_02254C00 + + thumb_func_start MOD37_02254C44 +MOD37_02254C44: ; 0x02254C44 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254C6C + cmp r0, #1 + beq _02254C90 + cmp r0, #2 + beq _02254D10 + pop {r4, r5, r6, pc} +_02254C6C: + ldr r0, _02254D18 ; =0x00000675 + bl MOD20_02252B28 + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD20_02253F28 + mov r0, #9 + lsl r0, r0, #0x10 + str r0, [r4, #0x3c] + ldr r0, _02254D1C ; =0x02254DA0 + ldr r0, [r0] + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x44] + add r0, r5, #0 + bl MOD20_022538B0 +_02254C90: + ldr r0, [r4, #0x44] + cmp r0, #0 + beq _02254C9E + add r0, r5, #0 + bl MOD37_02254B5C + pop {r4, r5, r6, pc} +_02254C9E: + ldr r1, [r4, #0x3c] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [r4, #0x3c] + ldr r0, _02254D1C ; =0x02254DA0 + ldr r1, [r4, #0x40] + ldr r0, [r0, #4] + add r1, r1, r0 + str r1, [r4, #0x40] + cmp r1, #0 + ble _02254D02 + mov r0, #9 + ldr r2, [r4, #0x3c] + lsl r0, r0, #0x10 + cmp r2, r0 + blt _02254D02 + mov r0, #0x38 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + neg r1, r0 + ldr r0, _02254D20 ; =0xFFFFE000 + str r1, [r4, #0x40] + cmp r1, r0 + ldr r0, _02254D24 ; =0x00000676 + bge _02254CE0 + bl MOD20_02252B28 + mov r0, #9 + lsl r0, r0, #0x10 + str r0, [r4, #0x3c] + b _02254D02 +_02254CE0: + bl MOD20_02252B28 + ldr r0, [r6] + cmp r0, #0 + beq _02254CEE + mov r1, #1 + b _02254CF0 +_02254CEE: + mov r1, #2 +_02254CF0: + ldr r0, [r4, #0x24] + bl MOD20_02253F28 + mov r0, #9 + lsl r0, r0, #0x10 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl MOD20_022538B0 +_02254D02: + mov r1, #7 + ldr r0, [r4, #0x24] + ldr r2, [r4, #0x3c] + lsl r1, r1, #0x10 + bl MOD20_02253F64 + pop {r4, r5, r6, pc} +_02254D10: + add r0, r5, #0 + bl MOD37_02254B5C + pop {r4, r5, r6, pc} + .align 2, 0 +_02254D18: .word 0x00000675 +_02254D1C: .word 0x02254DA0 +_02254D20: .word 0xFFFFE000 +_02254D24: .word 0x00000676 + thumb_func_end MOD37_02254C44 + + .section .rodata + ; 0x02254D28 + .incbin "baserom.nds", 0x2904E8, 0x68 + + .section .sinit + .word MOD37_02254840 + + .section .bss + ; 0x02254DA0 + .space 8 diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s new file mode 100644 index 00000000..e6f0160a --- /dev/null +++ b/arm9/modules/38/asm/module_38.s @@ -0,0 +1,1193 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD38_02254840 +MOD38_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD38_02254854 + ldr r1, _02254850 ; =MOD38_02254990 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD38_02254854 +_02254850: .word MOD38_02254990 + thumb_func_end MOD38_02254840 + + thumb_func_start MOD38_02254854 +MOD38_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x24 + 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 MOD38_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD38_0225494C + 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 MOD38_0225494C + thumb_func_end MOD38_02254854 + + thumb_func_start MOD38_0225489C +MOD38_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + add r6, r2, #0 + add r0, r3, #0 + add r1, #8 + mov r2, #0xc + str r3, [r5, #4] + bl FUN_02089418 + cmp r0, #0 + bne _022548C0 + add r0, r5, #0 + add r0, #8 + bl MOD38_02254908 +_022548C0: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x14 + add r1, #8 + add r2, r6, #0 + bl MOD38_02254BC4 + cmp r0, #0 + beq _022548F8 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254900 ; =0x0225511C + ldr r2, _02254904 ; =MOD38_02254988 + mov r1, #6 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x1c] + mov r0, #0 + str r0, [r5, #0x20] + add sp, #4 + str r4, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_022548F8: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02254900: .word 0x0225511C +_02254904: .word MOD38_02254988 + thumb_func_end MOD38_0225489C + + thumb_func_start MOD38_02254908 +MOD38_02254908: ; 0x02254908 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + str r0, [r4] + strh r0, [r4, #6] + strh r0, [r4, #8] + mov r0, #0x12 + strh r0, [r4, #0xa] + ldrh r0, [r4, #6] + ldrh r1, [r4, #8] + ldrh r2, [r4, #0xa] + bl MOD38_02254B2C + strh r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD38_02254908 + + thumb_func_start MOD38_02254928 +MOD38_02254928: ; 0x02254928 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #8 + mov r2, #0xc + bl FUN_020893F0 + ldr r0, [r4, #0x1c] + bl MOD20_02254198 + ldr r0, [r4, #0x14] + bl MOD38_02254D04 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD38_02254928 + + thumb_func_start MOD38_0225494C +MOD38_0225494C: ; 0x0225494C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254982 + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x1c] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254984 ; =0x02255110 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254982 + add r0, r4, #0 + bl MOD38_02254928 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x18] + bl MOD20_022529A0 +_02254982: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254984: .word 0x02255110 + thumb_func_end MOD38_0225494C + + thumb_func_start MOD38_02254988 +MOD38_02254988: ; 0x02254988 + str r0, [r3, #8] + str r1, [r3, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD38_02254988 + + thumb_func_start MOD38_02254990 +MOD38_02254990: ; 0x02254990 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD38_02254990 + + thumb_func_start MOD38_02254998 +MOD38_02254998: ; 0x02254998 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549A0 + b _022549A2 +_022549A0: + mov r1, #2 +_022549A2: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD38_02254998 + + thumb_func_start MOD38_022549AC +MOD38_022549AC: ; 0x022549AC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549BC + cmp r0, #1 + beq _022549CC + b _022549E6 +_022549BC: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD38_02254D34 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549E6 +_022549CC: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD38_02254D58 + cmp r0, #0 + beq _022549E6 + ldr r0, [r4, #0x18] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD38_02254998 +_022549E6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD38_022549AC + + thumb_func_start MOD38_022549EC +MOD38_022549EC: ; 0x022549EC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _02254A0C + ldr r0, [r4, #0x14] + bl MOD38_02254D64 + cmp r0, #0 + beq _02254A08 + add r0, r4, #0 + mov r1, #2 + bl MOD38_02254998 +_02254A08: + mov r0, #0 + pop {r4, pc} +_02254A0C: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A1C + cmp r0, #1 + beq _02254A32 + cmp r0, #2 + beq _02254AE4 + b _02254AF2 +_02254A1C: + ldr r0, [r4, #0x20] + cmp r0, #1 + bne _02254AF2 + ldr r0, [r4, #0x14] + mov r1, #2 + bl MOD38_02254D34 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AF2 +_02254A32: + ldr r0, [r4, #0x20] + cmp r0, #2 + bne _02254A46 + ldr r0, [r4, #0x14] + mov r1, #3 + bl MOD38_02254D34 + mov r0, #0 + strb r0, [r4, #1] + b _02254AF2 +_02254A46: + cmp r0, #3 + bne _02254AF2 + ldr r0, [r4, #8] + cmp r0, #5 + bhi _02254AC0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254A5C: ; jump table + .short _02254A68 - _02254A5C - 2 ; case 0 + .short _02254A78 - _02254A5C - 2 ; case 1 + .short _02254A86 - _02254A5C - 2 ; case 2 + .short _02254A96 - _02254A5C - 2 ; case 3 + .short _02254AA4 - _02254A5C - 2 ; case 4 + .short _02254AB4 - _02254A5C - 2 ; case 5 +_02254A68: + ldrh r0, [r4, #0xe] + mov r1, #0 + mvn r1, r1 + mov r2, #0 + bl MOD38_02254B6C + strh r0, [r4, #0xe] + b _02254AC0 +_02254A78: + ldrh r0, [r4, #0xe] + mov r1, #1 + mov r2, #0 + bl MOD38_02254B6C + strh r0, [r4, #0xe] + b _02254AC0 +_02254A86: + ldrh r0, [r4, #0x10] + mov r1, #0 + mvn r1, r1 + mov r2, #0 + bl MOD38_02254B6C + strh r0, [r4, #0x10] + b _02254AC0 +_02254A96: + ldrh r0, [r4, #0x10] + mov r1, #1 + mov r2, #0 + bl MOD38_02254B6C + strh r0, [r4, #0x10] + b _02254AC0 +_02254AA4: + ldrh r0, [r4, #0x12] + mov r1, #0 + mvn r1, r1 + mov r2, #1 + bl MOD38_02254B6C + strh r0, [r4, #0x12] + b _02254AC0 +_02254AB4: + ldrh r0, [r4, #0x12] + mov r1, #1 + add r2, r1, #0 + bl MOD38_02254B6C + strh r0, [r4, #0x12] +_02254AC0: + ldrh r0, [r4, #0xe] + ldrh r1, [r4, #0x10] + ldrh r2, [r4, #0x12] + bl MOD38_02254B2C + strh r0, [r4, #0xc] + ldr r0, [r4, #0x14] + mov r1, #3 + bl MOD38_02254D34 + ldr r0, [r4, #0x14] + mov r1, #4 + bl MOD38_02254D34 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AF2 +_02254AE4: + ldr r0, [r4, #0x14] + bl MOD38_02254D64 + cmp r0, #0 + beq _02254AF2 + mov r0, #0 + strb r0, [r4, #1] +_02254AF2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD38_022549EC + + thumb_func_start MOD38_02254AF8 +MOD38_02254AF8: ; 0x02254AF8 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B08 + cmp r0, #1 + beq _02254B18 + b _02254B26 +_02254B08: + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD38_02254D34 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B26 +_02254B18: + ldr r0, [r4, #0x14] + bl MOD38_02254D64 + cmp r0, #0 + beq _02254B26 + mov r0, #1 + pop {r4, pc} +_02254B26: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD38_02254AF8 + + thumb_func_start MOD38_02254B2C +MOD38_02254B2C: ; 0x02254B2C + push {r4, r5} + ldr r5, _02254B68 ; =0x02255134 + mov r3, #0x12 + add r4, r0, #0 + mul r4, r3 + add r4, r5, r4 + add r0, r3, #0 + ldrsb r5, [r4, r1] + sub r0, #0x1c + cmp r5, r0 + beq _02254B4E + cmp r2, #0x12 + beq _02254B54 + ldrsb r0, [r4, r2] + sub r3, #0x1c + cmp r0, r3 + bne _02254B54 +_02254B4E: + mov r0, #0 + pop {r4, r5} + bx lr +_02254B54: + mov r0, #3 + add r0, r0, r5 + cmp r2, #0x12 + beq _02254B64 + cmp r2, r1 + beq _02254B64 + ldrsb r1, [r4, r2] + add r0, r0, r1 +_02254B64: + pop {r4, r5} + bx lr + .align 2, 0 +_02254B68: .word 0x02255134 + thumb_func_end MOD38_02254B2C + + thumb_func_start MOD38_02254B6C +MOD38_02254B6C: ; 0x02254B6C + push {r4, r5} + ldr r5, _02254BC0 ; =0x02255278 + mov r4, #0 +_02254B72: + ldrb r3, [r5] + cmp r3, r0 + beq _02254B80 + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #0x11 + blo _02254B72 +_02254B80: + cmp r4, #0x11 + bne _02254B94 + cmp r1, #0 + ble _02254B8E + mov r0, #0 + pop {r4, r5} + bx lr +_02254B8E: + mov r0, #8 + pop {r4, r5} + bx lr +_02254B94: + add r4, r4, r1 + cmp r4, #0x11 + blt _02254BA6 + cmp r2, #0 + beq _02254BA4 + mov r0, #0x12 + pop {r4, r5} + bx lr +_02254BA4: + mov r4, #0 +_02254BA6: + cmp r4, #0 + bge _02254BB6 + cmp r2, #0 + beq _02254BB4 + mov r0, #0x12 + pop {r4, r5} + bx lr +_02254BB4: + mov r4, #0x10 +_02254BB6: + ldr r0, _02254BC0 ; =0x02255278 + ldrb r0, [r0, r4] + pop {r4, r5} + bx lr + nop +_02254BC0: .word 0x02255278 + thumb_func_end MOD38_02254B6C + + thumb_func_start MOD38_02254BC4 +MOD38_02254BC4: ; 0x02254BC4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0xc0 + bl FUN_02016998 + add r4, r0, #0 + beq _02254C2A + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x30] + ldr r2, _02254C30 ; =0x00000235 + mov r0, #1 + mov r1, #0x1a + mov r3, #8 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0xb4 + str r0, [r1] + ldr r2, _02254C34 ; =0x00000195 + mov r0, #1 + mov r1, #0x1a + mov r3, #8 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0xb8 + str r0, [r1] + mov r0, #0x80 + mov r1, #8 + bl FUN_020219F4 + add r1, r4, #0 + add r1, #0xbc + str r0, [r1] + add r0, r4, #0 + bl MOD38_02254C38 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254C2A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02254C30: .word 0x00000235 +_02254C34: .word 0x00000195 + thumb_func_end MOD38_02254BC4 + + thumb_func_start MOD38_02254C38 +MOD38_02254C38: ; 0x02254C38 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r6, r0, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x40 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r6, #0 + add r0, #0x60 + mov r1, #0xc + mov r2, #0x3e + mov r3, #0x3f + bl MOD20_02253FBC + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x60 + ldr r4, _02254CBC ; =0x02255300 + mov r7, #0 + add r5, r6, #0 + str r0, [sp, #0xc] +_02254C72: + ldr r0, [r6, #0x30] + ldr r2, [sp, #0xc] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x34] + add r7, r7, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r7, #6 + blt _02254C72 + add r0, r6, #0 + str r0, [sp, #0x10] + add r0, #0x60 + mov r7, #0 + add r4, r6, #0 + mov r5, #0x2c + str r0, [sp, #0x10] +_02254C96: + ldr r0, [r6, #0x30] + ldr r1, _02254CC0 ; =0x0225528C + ldr r2, [sp, #0x10] + bl MOD20_02253E74 + mov r2, #3 + lsl r1, r5, #0xc + lsl r2, r2, #0x10 + str r0, [r4, #0x4c] + bl MOD20_02253F64 + add r7, r7, #1 + add r4, r4, #4 + add r5, #8 + cmp r7, #5 + blt _02254C96 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02254CBC: .word 0x02255300 +_02254CC0: .word 0x0225528C + thumb_func_end MOD38_02254C38 + + thumb_func_start MOD38_02254CC4 +MOD38_02254CC4: ; 0x02254CC4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_02254CCC: + ldr r1, [r4, #0x34] + cmp r1, #0 + beq _02254CD8 + ldr r0, [r5, #0x30] + bl MOD20_02253F14 +_02254CD8: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _02254CCC + mov r6, #0 + add r4, r5, #0 +_02254CE4: + ldr r1, [r4, #0x4c] + cmp r1, #0 + beq _02254CF0 + ldr r0, [r5, #0x30] + bl MOD20_02253F14 +_02254CF0: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #5 + blt _02254CE4 + add r5, #0x60 + add r0, r5, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD38_02254CC4 + + thumb_func_start MOD38_02254D04 +MOD38_02254D04: ; 0x02254D04 + push {r4, lr} + add r4, r0, #0 + beq _02254D32 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r4, #0 + add r0, #0xb8 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD38_02254CC4 + add r0, r4, #0 + bl FUN_02016A18 +_02254D32: + pop {r4, pc} + thumb_func_end MOD38_02254D04 + + thumb_func_start MOD38_02254D34 +MOD38_02254D34: ; 0x02254D34 + 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, _02254D54 ; =0x022552B8 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254D54: .word 0x022552B8 + thumb_func_end MOD38_02254D34 + + thumb_func_start MOD38_02254D58 +MOD38_02254D58: ; 0x02254D58 + ldr r3, _02254D60 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254D60: .word MOD20_02253794 + thumb_func_end MOD38_02254D58 + + thumb_func_start MOD38_02254D64 +MOD38_02254D64: ; 0x02254D64 + ldr r3, _02254D6C ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254D6C: .word MOD20_022537B8 + thumb_func_end MOD38_02254D64 + + thumb_func_start MOD38_02254D70 +MOD38_02254D70: ; 0x02254D70 + 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 MOD38_02254D70 + + thumb_func_start MOD38_02254D84 +MOD38_02254D84: ; 0x02254D84 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254E1C ; =0x0225529C + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x3d + mov r3, #6 + bl FUN_0200687C + add r4, r0, #0 + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x3c + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + add r1, r7, #0 + lsr r2, r4, #5 + bl MOD38_02254E28 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254E20 ; =0x04001000 + ldr r0, _02254E24 ; =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] + add r0, r6, #0 + bl MOD38_02254D70 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02254E1C: .word 0x0225529C +_02254E20: .word 0x04001000 +_02254E24: .word 0xFFFFE0FF + thumb_func_end MOD38_02254D84 + + thumb_func_start MOD38_02254E28 +MOD38_02254E28: ; 0x02254E28 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0xf + add r4, r2, #0 + str r0, [sp] + mov r2, #6 + str r2, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + add r6, r1, #0 + str r0, [sp, #0x10] + add r1, r5, #0 + ldr r0, [r5, #4] + add r1, #0x74 + add r3, r2, #0 + bl FUN_02019064 + mov r0, #4 + str r0, [sp] + mov r2, #6 + add r1, r5, #0 + str r2, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0xc + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, #0x84 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #8 + str r0, [sp] + mov r2, #6 + add r1, r5, #0 + str r2, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, #0x94 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + add r1, r5, #0 + add r4, #0x24 + str r0, [sp, #0xc] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, #0xa4 + mov r2, #6 + mov r3, #3 + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x74 + bl FUN_02019270 + add r0, r5, #0 + add r0, #0x84 + bl FUN_02019270 + add r0, r5, #0 + add r0, #0x94 + bl FUN_02019270 + add r0, r5, #0 + add r0, #0xa4 + bl FUN_02019270 + add r0, r5, #0 + add r1, r6, #0 + bl MOD38_02254FCC + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD38_02254E28 + + thumb_func_start MOD38_02254EF4 +MOD38_02254EF4: ; 0x02254EF4 + push {r4, lr} + add r4, r0, #0 + add r0, #0x74 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x94 + bl FUN_02019178 + add r4, #0xa4 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + thumb_func_end MOD38_02254EF4 + + thumb_func_start MOD38_02254F18 +MOD38_02254F18: ; 0x02254F18 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD38_02254EF4 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD38_02254D70 + pop {r3, r4, r5, pc} + thumb_func_end MOD38_02254F18 + + thumb_func_start MOD38_02254F38 +MOD38_02254F38: ; 0x02254F38 + 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 + ldr r2, [r0] + mov r1, #1 + add r0, r2, #0 + tst r0, r1 + beq _02254F56 + mov r1, #3 +_02254F56: + lsl r0, r2, #2 + add r0, r4, r0 + ldr r0, [r0, #0x34] + bl MOD20_02253F28 + ldr r0, _02254F70 ; =0x00000663 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD38_02254D70 + pop {r3, r4, r5, pc} + nop +_02254F70: .word 0x00000663 + thumb_func_end MOD38_02254F38 + + thumb_func_start MOD38_02254F74 +MOD38_02254F74: ; 0x02254F74 + 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 + ldr r2, [r0] + mov r0, #1 + tst r0, r2 + beq _02254F92 + mov r1, #2 + b _02254F94 +_02254F92: + mov r1, #0 +_02254F94: + lsl r0, r2, #2 + add r0, r4, r0 + ldr r0, [r0, #0x34] + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD38_02254D70 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD38_02254F74 + + thumb_func_start MOD38_02254FA8 +MOD38_02254FA8: ; 0x02254FA8 + 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 MOD38_02254FCC + add r0, r5, #0 + bl MOD38_02254D70 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD38_02254FA8 + + thumb_func_start MOD38_02254FCC +MOD38_02254FCC: ; 0x02254FCC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r1, r5, #0 + ldrh r2, [r4, #6] + add r1, #0x74 + bl MOD38_0225500C + add r1, r5, #0 + ldrh r2, [r4, #8] + add r0, r5, #0 + add r1, #0x84 + bl MOD38_0225500C + add r1, r5, #0 + ldrh r2, [r4, #0xa] + add r0, r5, #0 + add r1, #0x94 + bl MOD38_0225500C + add r1, r5, #0 + ldrh r2, [r4, #4] + add r0, r5, #0 + add r1, #0xa4 + bl MOD38_02255084 + ldrh r1, [r4, #4] + add r0, r5, #0 + bl MOD38_022550D0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD38_02254FCC + + thumb_func_start MOD38_0225500C +MOD38_0225500C: ; 0x0225500C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #4 + add r6, r2, #0 + bl FUN_02019620 + cmp r6, #0x12 + bne _02255036 + add r0, r5, #0 + add r2, r5, #0 + add r0, #0xb8 + add r2, #0xbc + ldr r0, [r0] + ldr r2, [r2] + mov r1, #6 + bl FUN_0200A8E0 + b _02255048 +_02255036: + add r0, r5, #0 + add r2, r5, #0 + add r0, #0xb4 + add r2, #0xbc + ldr r0, [r0] + ldr r2, [r2] + add r1, r6, #0 + bl FUN_0200A8E0 +_02255048: + add r1, r5, #0 + add r1, #0xbc + mov r0, #0 + ldr r1, [r1] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02255080 ; =0x00010104 + add r5, #0xbc + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5] + mov r5, #0x30 + sub r3, r5, r3 + add r0, r4, #0 + lsr r3, r3, #1 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_02255080: .word 0x00010104 + thumb_func_end MOD38_0225500C + + thumb_func_start MOD38_02255084 +MOD38_02255084: ; 0x02255084 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #4 + add r6, r2, #0 + bl FUN_02019620 + add r0, r5, #0 + add r2, r5, #0 + add r0, #0xb8 + add r2, #0xbc + ldr r0, [r0] + ldr r2, [r2] + add r1, r6, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022550CC ; =0x00010104 + add r5, #0xbc + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_022550CC: .word 0x00010104 + thumb_func_end MOD38_02255084 + + thumb_func_start MOD38_022550D0 +MOD38_022550D0: ; 0x022550D0 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r6, r1, #0 + ldr r4, _0225510C ; =0x00000000 + beq _022550EE + add r5, r0, #0 + mov r7, #4 +_022550DE: + ldr r0, [r5, #0x4c] + add r1, r7, #0 + bl MOD20_02253F28 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r6 + blo _022550DE +_022550EE: + cmp r4, #5 + bhs _0225510A + ldr r0, [sp] + lsl r1, r4, #2 + add r5, r0, r1 + mov r6, #5 +_022550FA: + ldr r0, [r5, #0x4c] + add r1, r6, #0 + bl MOD20_02253F28 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blo _022550FA +_0225510A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225510C: .word 0x00000000 + thumb_func_end MOD38_022550D0 + + .section .rodata + ; 0x02255110 + .incbin "baserom.nds", 0x290ED0, 0x250 + + .section .sinit + .word MOD38_02254840 diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s new file mode 100644 index 00000000..c5946d62 --- /dev/null +++ b/arm9/modules/39/asm/module_39.s @@ -0,0 +1,1457 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD39_02254840 +MOD39_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD39_02254854 + ldr r1, _02254850 ; =MOD39_022549D4 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD39_02254854 +_02254850: .word MOD39_022549D4 + thumb_func_end MOD39_02254840 + + thumb_func_start MOD39_02254854 +MOD39_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x68 + 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 MOD39_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD39_02254998 + 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 MOD39_02254998 + thumb_func_end MOD39_02254854 + + thumb_func_start MOD39_0225489C +MOD39_0225489C: ; 0x0225489C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + add r0, r1, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + bl MOD20_02252C40 + bl FUN_0206BB1C + str r0, [sp, #0x10] + bl FUN_0206B9AC + ldr r1, [sp, #4] + mov r6, #0 + add r1, #0x34 + strb r0, [r1] + ldr r0, [sp, #4] + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #0 + ble _02254906 + ldr r4, [sp, #4] + add r5, r4, #0 +_022548CC: + ldr r0, [sp, #0x10] + add r1, r6, #0 + bl FUN_0206B9B0 + add r7, r0, #0 + bl FUN_0206B688 + str r0, [r4, #4] + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0x1c] + add r0, r7, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0x28] + ldr r0, [sp, #4] + str r7, [r4, #0x48] + add r0, #0x34 + ldrb r0, [r0] + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #2 + cmp r6, r0 + blt _022548CC +_02254906: + ldr r0, [sp, #4] + mov r1, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #4] + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #1 + bls _0225491A + mov r1, #1 +_0225491A: + ldr r0, [sp, #4] + ldr r2, [sp, #0xc] + add r0, #0x37 + strb r1, [r0] + ldr r0, [sp, #4] + ldr r1, [sp, #4] + add r0, #0x38 + add r1, r1, #4 + bl MOD39_02254C1C + cmp r0, #0 + beq _02254964 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r0, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _0225496C ; =0x02255300 + ldr r2, _02254970 ; =MOD39_0225498C + ldr r3, [sp, #4] + mov r1, #3 + bl MOD20_02254130 + ldr r1, [sp, #4] + str r0, [r1, #0x40] + ldr r0, [sp, #4] + mov r1, #0 + add r0, #0x46 + strh r1, [r0] + ldr r1, [sp, #8] + ldr r0, [sp, #4] + add sp, #0x14 + str r1, [r0, #0x3c] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02254964: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0225496C: .word 0x02255300 +_02254970: .word MOD39_0225498C + thumb_func_end MOD39_0225489C + + thumb_func_start MOD39_02254974 +MOD39_02254974: ; 0x02254974 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + bl MOD20_02254198 + ldr r0, [r4, #0x38] + bl MOD39_02254C58 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD39_02254974 + + thumb_func_start MOD39_0225498C +MOD39_0225498C: ; 0x0225498C + add r2, r3, #0 + add r2, #0x44 + strh r0, [r2] + add r3, #0x46 + strh r1, [r3] + bx lr + thumb_func_end MOD39_0225498C + + thumb_func_start MOD39_02254998 +MOD39_02254998: ; 0x02254998 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _022549CE + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x40] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549D0 ; =0x0225530C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _022549CE + add r0, r4, #0 + bl MOD39_02254974 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x3c] + bl MOD20_022529A0 +_022549CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549D0: .word 0x0225530C + thumb_func_end MOD39_02254998 + + thumb_func_start MOD39_022549D4 +MOD39_022549D4: ; 0x022549D4 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD39_022549D4 + + thumb_func_start MOD39_022549DC +MOD39_022549DC: ; 0x022549DC + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549E4 + b _022549E6 +_022549E4: + mov r1, #2 +_022549E6: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD39_022549DC + + thumb_func_start MOD39_022549F0 +MOD39_022549F0: ; 0x022549F0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A00 + cmp r0, #1 + beq _02254A10 + b _02254A2A +_02254A00: + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD39_02254DA4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A2A +_02254A10: + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD39_02254DC8 + cmp r0, #0 + beq _02254A2A + ldr r0, [r4, #0x3c] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD39_022549DC +_02254A2A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD39_022549F0 + + thumb_func_start MOD39_02254A30 +MOD39_02254A30: ; 0x02254A30 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254A44 + mov r1, #2 + bl MOD39_022549DC + mov r0, #0 + pop {r4, pc} +_02254A44: + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _02254B48 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02254A56: ; jump table + .short _02254A5E - _02254A56 - 2 ; case 0 + .short _02254ACC - _02254A56 - 2 ; case 1 + .short _02254ADC - _02254A56 - 2 ; case 2 + .short _02254B38 - _02254A56 - 2 ; case 3 +_02254A5E: + add r1, r4, #0 + add r1, #0x46 + ldrh r1, [r1] + cmp r1, #1 + bne _02254B48 + add r1, r4, #0 + add r1, #0x44 + ldrh r1, [r1] + cmp r1, #0 + beq _02254AA8 + cmp r1, #1 + beq _02254A7C + cmp r1, #2 + beq _02254A92 + b _02254AC4 +_02254A7C: + bl MOD39_02254B50 + cmp r0, #0 + beq _02254AC4 + ldr r0, [r4, #0x38] + mov r1, #4 + bl MOD39_02254DA4 + mov r0, #1 + strb r0, [r4, #1] + b _02254AC4 +_02254A92: + bl MOD39_02254B9C + cmp r0, #0 + beq _02254AC4 + ldr r0, [r4, #0x38] + mov r1, #5 + bl MOD39_02254DA4 + mov r0, #1 + strb r0, [r4, #1] + b _02254AC4 +_02254AA8: + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #1 + bls _02254ABE + ldr r0, [r4, #0x38] + mov r1, #2 + bl MOD39_02254DA4 + mov r0, #2 + strb r0, [r4, #1] + b _02254AC4 +_02254ABE: + ldr r0, _02254B4C ; =0x0000066E + bl MOD20_02252B28 +_02254AC4: + mov r0, #0 + add r4, #0x46 + strh r0, [r4] + b _02254B48 +_02254ACC: + ldr r0, [r4, #0x38] + bl MOD39_02254DD4 + cmp r0, #0 + beq _02254B48 + mov r0, #0 + strb r0, [r4, #1] + b _02254B48 +_02254ADC: + add r0, #0x46 + ldrh r0, [r0] + cmp r0, #2 + bne _02254AF2 + ldr r0, [r4, #0x38] + mov r1, #3 + bl MOD39_02254DA4 + mov r0, #0 + strb r0, [r4, #1] + b _02254B48 +_02254AF2: + cmp r0, #3 + bne _02254B48 + add r0, r4, #0 + add r0, #0x36 + ldrb r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x48] + str r0, [r4, #0x60] + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x48] + str r0, [r4, #0x64] + add r0, r4, #0 + add r0, #0x60 + bl MOD05_021ED9B4 + add r1, r4, #0 + add r1, #0x35 + strb r0, [r1] + ldr r0, [r4, #0x38] + mov r1, #3 + bl MOD39_02254DA4 + ldr r0, [r4, #0x38] + mov r1, #6 + bl MOD39_02254DA4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B48 +_02254B38: + ldr r0, [r4, #0x38] + mov r1, #6 + bl MOD39_02254DC8 + cmp r0, #0 + beq _02254B48 + mov r0, #0 + strb r0, [r4, #1] +_02254B48: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02254B4C: .word 0x0000066E + thumb_func_end MOD39_02254A30 + + thumb_func_start MOD39_02254B50 +MOD39_02254B50: ; 0x02254B50 + push {r3, r4} + add r1, r0, #0 + add r1, #0x34 + ldrb r1, [r1] + cmp r1, #2 + bls _02254B94 + add r2, r0, #0 + mov r1, #0 + add r2, #0x36 +_02254B62: + ldrb r3, [r2] + add r3, r3, #1 + strb r3, [r2] + add r3, r0, #0 + add r3, #0x36 + ldrb r4, [r3] + add r3, r0, #0 + add r3, #0x34 + ldrb r3, [r3] + cmp r4, r3 + blo _02254B7E + add r3, r0, #0 + add r3, #0x36 + strb r1, [r3] +_02254B7E: + add r3, r0, #0 + add r3, #0x36 + ldrb r4, [r3] + add r3, r0, #0 + add r3, #0x37 + ldrb r3, [r3] + cmp r4, r3 + beq _02254B62 + mov r0, #1 + pop {r3, r4} + bx lr +_02254B94: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD39_02254B50 + + thumb_func_start MOD39_02254B9C +MOD39_02254B9C: ; 0x02254B9C + push {r3, r4} + add r1, r0, #0 + add r1, #0x34 + ldrb r1, [r1] + cmp r1, #2 + bls _02254BE0 + add r2, r0, #0 + mov r1, #0 + add r2, #0x37 +_02254BAE: + ldrb r3, [r2] + add r3, r3, #1 + strb r3, [r2] + add r3, r0, #0 + add r3, #0x37 + ldrb r4, [r3] + add r3, r0, #0 + add r3, #0x34 + ldrb r3, [r3] + cmp r4, r3 + blo _02254BCA + add r3, r0, #0 + add r3, #0x37 + strb r1, [r3] +_02254BCA: + add r3, r0, #0 + add r3, #0x37 + ldrb r4, [r3] + add r3, r0, #0 + add r3, #0x36 + ldrb r3, [r3] + cmp r4, r3 + beq _02254BAE + mov r0, #1 + pop {r3, r4} + bx lr +_02254BE0: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD39_02254B9C + + thumb_func_start MOD39_02254BE8 +MOD39_02254BE8: ; 0x02254BE8 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254BF8 + cmp r0, #1 + beq _02254C08 + b _02254C16 +_02254BF8: + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD39_02254DA4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C16 +_02254C08: + ldr r0, [r4, #0x38] + bl MOD39_02254DD4 + cmp r0, #0 + beq _02254C16 + mov r0, #1 + pop {r4, pc} +_02254C16: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD39_02254BE8 + + thumb_func_start MOD39_02254C1C +MOD39_02254C1C: ; 0x02254C1C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x88 + bl FUN_02016998 + add r4, r0, #0 + beq _02254C52 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD39_02254C6C + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254C52: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD39_02254C1C + + thumb_func_start MOD39_02254C58 +MOD39_02254C58: ; 0x02254C58 + push {r4, lr} + add r4, r0, #0 + beq _02254C68 + bl MOD39_02254D78 + add r0, r4, #0 + bl FUN_02016A18 +_02254C68: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD39_02254C58 + + thumb_func_start MOD39_02254C6C +MOD39_02254C6C: ; 0x02254C6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #1 + str r1, [sp, #0xc] + bl MOD20_022539C4 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x4a + bl FUN_02006A34 + mov r1, #0x14 + bl _u32_div_f + ldr r1, [sp, #0xc] + str r0, [r5, #0x64] + add r2, r1, #0 + add r2, #0x30 + ldrb r2, [r2] + mov r3, #0 + bl MOD20_02253A04 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x3c + mov r1, #0xc + mov r2, #0x48 + mov r3, #0x49 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x50 + mov r1, #0xc + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x3c + ldr r7, _02254D74 ; =0x02255408 + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #0x10] +_02254CD6: + ldr r0, [r5, #0x20] + ldr r2, [sp, #0x10] + add r1, r7, #0 + bl MOD20_02253E74 + str r0, [r6, #0x24] + add r4, r4, #1 + add r7, #0x10 + add r6, r6, #4 + cmp r4, #4 + blt _02254CD6 + cmp r4, #6 + bge _02254D18 + ldr r1, _02254D74 ; =0x02255408 + lsl r0, r4, #4 + add r7, r1, r0 + lsl r0, r4, #2 + add r6, r5, r0 + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x50 + str r0, [sp, #0x14] +_02254D02: + ldr r0, [r5, #0x20] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl MOD20_02253E74 + str r0, [r6, #0x24] + add r4, r4, #1 + add r7, #0x10 + add r6, r6, #4 + cmp r4, #6 + blt _02254D02 +_02254D18: + ldr r0, [sp, #0xc] + add r0, #0x32 + ldrb r2, [r0] + ldr r0, [sp, #0xc] + lsl r1, r2, #1 + add r3, r0, r1 + ldrh r0, [r3, #0x24] + mov r1, #4 + str r0, [sp] + ldrh r3, [r3, #0x18] + add r0, r5, #0 + bl MOD39_02254FA4 + ldr r0, [sp, #0xc] + add r0, #0x33 + ldrb r2, [r0] + ldr r0, [sp, #0xc] + lsl r1, r2, #1 + add r3, r0, r1 + ldrh r0, [r3, #0x24] + mov r1, #5 + str r0, [sp] + ldrh r3, [r3, #0x18] + add r0, r5, #0 + bl MOD39_02254FA4 + ldr r0, [sp, #0xc] + add r0, #0x30 + str r0, [sp, #0xc] + ldrb r0, [r0] + cmp r0, #1 + bhi _02254D70 + ldr r0, [r5, #0x38] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x30] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x24] + mov r1, #0xa + bl MOD20_02253F28 +_02254D70: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254D74: .word 0x02255408 + thumb_func_end MOD39_02254C6C + + thumb_func_start MOD39_02254D78 +MOD39_02254D78: ; 0x02254D78 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, #0x50 + bl MOD20_02254014 + add r0, r6, #0 + add r0, #0x3c + bl MOD20_02254014 + mov r4, #0 + add r5, r6, #0 +_02254D8E: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _02254D9A + ldr r0, [r6, #0x20] + bl MOD20_02253F14 +_02254D9A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02254D8E + pop {r4, r5, r6, pc} + thumb_func_end MOD39_02254D78 + + thumb_func_start MOD39_02254DA4 +MOD39_02254DA4: ; 0x02254DA4 + 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, _02254DC4 ; =0x022553A8 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254DC4: .word 0x022553A8 + thumb_func_end MOD39_02254DA4 + + thumb_func_start MOD39_02254DC8 +MOD39_02254DC8: ; 0x02254DC8 + ldr r3, _02254DD0 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254DD0: .word MOD20_02253794 + thumb_func_end MOD39_02254DC8 + + thumb_func_start MOD39_02254DD4 +MOD39_02254DD4: ; 0x02254DD4 + ldr r3, _02254DDC ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254DDC: .word MOD20_022537B8 + thumb_func_end MOD39_02254DD4 + + thumb_func_start MOD39_02254DE0 +MOD39_02254DE0: ; 0x02254DE0 + 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 MOD39_02254DE0 + + thumb_func_start MOD39_02254DF4 +MOD39_02254DF4: ; 0x02254DF4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD20_022538A4 + ldr r0, [r5, #4] + ldr r2, _02254E7C ; =0x02255330 + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x47 + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x46 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254E80 ; =0x04001000 + ldr r0, _02254E84 ; =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] + add r0, r4, #0 + bl MOD39_02254DE0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254E7C: .word 0x02255330 +_02254E80: .word 0x04001000 +_02254E84: .word 0xFFFFE0FF + thumb_func_end MOD39_02254DF4 + + thumb_func_start MOD39_02254E88 +MOD39_02254E88: ; 0x02254E88 + 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_022538AC + cmp r0, #0 + beq _02254EA4 + cmp r0, #1 + beq _02254EB0 + pop {r3, r4, r5, pc} +_02254EA4: + mov r0, #1 + str r0, [r4, #0x68] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254EB0: + add r0, r4, #0 + mov r1, #6 + bl MOD39_02254DC8 + cmp r0, #0 + beq _02254ECA + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD39_02254DE0 +_02254ECA: + pop {r3, r4, r5, pc} + thumb_func_end MOD39_02254E88 + + thumb_func_start MOD39_02254ECC +MOD39_02254ECC: ; 0x02254ECC + 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 + ldr r0, _02254EF4 ; =0x00000669 + bl MOD20_02252B28 + ldr r0, [r4, #0x24] + mov r1, #0xa + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD39_02254DE0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02254EF4: .word 0x00000669 + thumb_func_end MOD39_02254ECC + + thumb_func_start MOD39_02254EF8 +MOD39_02254EF8: ; 0x02254EF8 + 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 + ldr r0, [r4, #0x24] + mov r1, #9 + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD39_02254DE0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD39_02254EF8 + + thumb_func_start MOD39_02254F1C +MOD39_02254F1C: ; 0x02254F1C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, #0x32 + ldrb r5, [r0] + ldr r0, _02254F5C ; =0x00000663 + bl MOD20_02252B28 + lsl r0, r5, #1 + add r3, r7, r0 + ldrh r0, [r3, #0x24] + mov r1, #4 + add r2, r5, #0 + str r0, [sp] + ldrh r3, [r3, #0x18] + add r0, r4, #0 + bl MOD39_02254FA4 + add r0, r4, #0 + bl MOD39_02254FF8 + add r0, r6, #0 + bl MOD39_02254DE0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254F5C: .word 0x00000663 + thumb_func_end MOD39_02254F1C + + thumb_func_start MOD39_02254F60 +MOD39_02254F60: ; 0x02254F60 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, #0x33 + ldrb r5, [r0] + ldr r0, _02254FA0 ; =0x00000663 + bl MOD20_02252B28 + lsl r0, r5, #1 + add r3, r7, r0 + ldrh r0, [r3, #0x24] + mov r1, #5 + add r2, r5, #0 + str r0, [sp] + ldrh r3, [r3, #0x18] + add r0, r4, #0 + bl MOD39_02254FA4 + add r0, r4, #0 + bl MOD39_02254FF8 + add r0, r6, #0 + bl MOD39_02254DE0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254FA0: .word 0x00000663 + thumb_func_end MOD39_02254F60 + + thumb_func_start MOD39_02254FA4 +MOD39_02254FA4: ; 0x02254FA4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + add r6, r2, #0 + add r7, r3, #0 + ldr r4, [r0, #0x24] + cmp r1, #5 + bne _02254FBA + mov r1, #4 + b _02254FCC +_02254FBA: + add r0, r7, #0 + mov r1, #0x1c + bl FUN_02068678 + cmp r0, #0 + beq _02254FCA + mov r1, #4 + b _02254FCC +_02254FCA: + mov r1, #5 +_02254FCC: + add r0, r4, #0 + bl MOD20_02253F28 + ldr r2, [r5, #0x64] + lsl r1, r6, #4 + add r0, r4, #0 + add r1, r2, r1 + bl MOD20_02253FA4 + add r1, sp, #8 + ldrh r1, [r1, #0x10] + add r0, r7, #0 + mov r2, #0 + bl FUN_0206B7BC + add r1, r0, #0 + add r0, r4, #0 + add r1, r1, #1 + bl MOD20_02253F9C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD39_02254FA4 + + thumb_func_start MOD39_02254FF8 +MOD39_02254FF8: ; 0x02254FF8 + push {r4, lr} + add r4, r0, #0 + mov r1, #3 + mov r2, #0x16 + ldr r0, [r4, #0x2c] + lsl r1, r1, #0x10 + lsl r2, r2, #0xe + bl MOD20_02253F64 + mov r1, #0xb + lsl r1, r1, #0x10 + ldr r0, [r4, #0x30] + lsr r2, r1, #1 + bl MOD20_02253F64 + ldr r0, [r4, #0x2c] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r4, #0x30] + mov r1, #6 + bl MOD20_02253F28 + ldr r0, [r4, #0x28] + mov r1, #0 + bl MOD20_02253F28 + pop {r4, pc} + thumb_func_end MOD39_02254FF8 + + thumb_func_start MOD39_02255030 +MOD39_02255030: ; 0x02255030 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225505C + ldr r0, [r4, #0x68] + cmp r0, #0 + beq _0225505C + add r0, r5, #0 + bl MOD39_02254DE0 + pop {r4, r5, r6, pc} +_0225505C: + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225506C + cmp r0, #1 + beq _02255086 + pop {r4, r5, r6, pc} +_0225506C: + mov r0, #0 + str r0, [r4, #0x68] + add r0, r4, #0 + bl MOD39_02254FF8 + add r0, r4, #0 + add r1, r6, #0 + bl MOD39_0225509C + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02255086: + add r0, r4, #0 + add r1, r6, #0 + bl MOD39_02255114 + cmp r0, #0 + beq _02255098 + add r0, r5, #0 + bl MOD39_02254DE0 +_02255098: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD39_02255030 + + thumb_func_start MOD39_0225509C +MOD39_0225509C: ; 0x0225509C + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + str r1, [r4, #0x70] + str r1, [r4, #0x74] + str r1, [r4, #0x78] + add r0, #0x84 + str r1, [r0] + add r0, r5, #0 + add r0, #0x31 + ldrb r0, [r0] + cmp r0, #3 + bhi _022550FA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022550C4: ; jump table + .short _022550EE - _022550C4 - 2 ; case 0 + .short _022550E0 - _022550C4 - 2 ; case 1 + .short _022550D2 - _022550C4 - 2 ; case 2 + .short _022550CC - _022550C4 - 2 ; case 3 +_022550CC: + ldr r0, _02255104 ; =0x02255378 + str r0, [r4, #0x6c] + b _022550FA +_022550D2: + ldr r0, _02255108 ; =0x02255318 + mov r1, #1 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x28] + bl MOD20_02253F28 + b _022550FA +_022550E0: + ldr r0, _0225510C ; =0x0225534C + mov r1, #2 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x28] + bl MOD20_02253F28 + b _022550FA +_022550EE: + ldr r0, _02255110 ; =0x02255468 + mov r1, #3 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x28] + bl MOD20_02253F28 +_022550FA: + add r0, r4, #0 + add r1, r5, #0 + bl MOD39_02255114 + pop {r3, r4, r5, pc} + .align 2, 0 +_02255104: .word 0x02255378 +_02255108: .word 0x02255318 +_0225510C: .word 0x0225534C +_02255110: .word 0x02255468 + thumb_func_end MOD39_0225509C + + thumb_func_start MOD39_02255114 +MOD39_02255114: ; 0x02255114 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r4, #0 + add r6, r4, #0 + mov r7, #0x16 + add r5, #0x84 + add r6, #0x78 + lsl r7, r7, #0xe +_02255124: + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _02255138 + cmp r0, #1 + bne _02255130 + b _02255280 +_02255130: + cmp r0, #2 + bne _02255136 + b _022552DC +_02255136: + b _022552FA +_02255138: + beq _0225513C + b _022552FA +_0225513C: + add r6, r4, #0 + add r5, r4, #0 + add r6, #0x7c + mov r7, #1 + add r5, #0x74 +_02255146: + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r0, r0, #7 + cmp r0, #6 + bls _0225515C + b _02255276 +_0225515C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02255168: ; jump table + .short _02255252 - _02255168 - 2 ; case 0 + .short _02255240 - _02255168 - 2 ; case 1 + .short _0225522C - _02255168 - 2 ; case 2 + .short _02255212 - _02255168 - 2 ; case 3 + .short _022551C2 - _02255168 - 2 ; case 4 + .short _0225517A - _02255168 - 2 ; case 5 + .short _02255176 - _02255168 - 2 ; case 6 +_02255176: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225517A: + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r1, [r0, r1] + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + str r0, [r4, #0x7c] + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [r6] + ldr r1, [r4, #0x78] + ldr r0, [r4, #0x7c] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r1, r4, #0 + add r1, #0x84 + ldr r0, [r6] + ldr r1, [r1] + bl _u32_div_f + str r0, [r6] + str r7, [r4, #0x70] + b _02255276 +_022551C2: + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r1, [r0, r1] + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0 + str r0, [r4, #0x7c] + ldr r0, [r6] + mvn r1, r1 + lsl r0, r0, #0xc + mul r1, r0 + str r1, [r6] + ldr r1, [r4, #0x78] + ldr r0, [r4, #0x7c] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r1, r4, #0 + add r1, #0x84 + ldr r0, [r6] + ldr r1, [r1] + bl _u32_div_f + str r0, [r6] + mov r0, #1 + str r0, [r4, #0x70] + b _02255276 +_02255212: + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r1, [r0, r1] + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #2 + str r0, [r4, #0x70] + b _02255276 +_0225522C: + ldr r0, [r5] + ldr r1, [r4, #0x74] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x6c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl MOD20_02252B28 + b _02255276 +_02255240: + ldr r0, [r4, #0x2c] + mov r1, #6 + bl MOD20_02253F28 + ldr r0, [r4, #0x30] + mov r1, #5 + bl MOD20_02253F28 + b _02255276 +_02255252: + ldr r1, [r5] + ldr r0, [r4, #0x74] + add r1, r1, #1 + str r1, [r5] + ldr r2, [r4, #0x6c] + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r2, [r4, #0x74] + add r1, r1, #1 + str r1, [r5] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r1, [r4, #0x6c] + lsl r2, r2, #2 + ldr r0, [r0, #0x24] + ldr r1, [r1, r2] + bl MOD20_02253F28 +_02255276: + ldr r0, [r4, #0x70] + cmp r0, #0 + bne _0225527E + b _02255146 +_0225527E: + b _022552FA +_02255280: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _022552CC + ldr r0, [r5] + sub r0, r0, #1 + str r0, [r5] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _022552A4 + ldr r1, [r6] + ldr r0, [r4, #0x7c] + add r0, r1, r0 + str r0, [r6] + b _022552AC +_022552A4: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + str r0, [r4, #0x78] +_022552AC: + mov r1, #3 + ldr r2, [r4, #0x78] + lsl r1, r1, #0x10 + add r1, r2, r1 + ldr r0, [r4, #0x2c] + add r2, r7, #0 + bl MOD20_02253F64 + mov r1, #0xb + ldr r2, [r4, #0x78] + lsl r1, r1, #0x10 + sub r1, r1, r2 + ldr r0, [r4, #0x30] + add r2, r7, #0 + bl MOD20_02253F64 +_022552CC: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _022552FA + mov r0, #0 + str r0, [r4, #0x70] + b _02255124 +_022552DC: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _022552F4 + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + add r4, #0x84 + sub r0, r0, #1 + str r0, [r4] + b _022552FA +_022552F4: + mov r0, #0 + str r0, [r4, #0x70] + b _02255124 +_022552FA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD39_02255114 + + .section .rodata + ; 0x02255300 + .incbin "baserom.nds", 0x291cc0, 0x1E4 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_39.SINIT_START + .global SDK_OVERLAY.MODULE_39.SINIT_END +SDK_OVERLAY.MODULE_39.SINIT_START: + .word MOD39_02254840 + .word 0 +SDK_OVERLAY.MODULE_39.SINIT_END: diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s new file mode 100644 index 00000000..bc8e79f1 --- /dev/null +++ b/arm9/modules/40/asm/module_40.s @@ -0,0 +1,1417 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD40_02254840 +MOD40_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD40_02254854 + ldr r1, _02254850 ; =MOD40_022549D4 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD40_02254854 +_02254850: .word MOD40_022549D4 + thumb_func_end MOD40_02254840 + + thumb_func_start MOD40_02254854 +MOD40_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x34 + 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 MOD40_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD40_02254998 + 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 MOD40_02254998 + thumb_func_end MOD40_02254854 + + thumb_func_start MOD40_0225489C +MOD40_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r6, r2, #0 + bl MOD20_02252C3C + str r0, [r5, #0x10] + bl FUN_0204BF94 + strb r0, [r5, #3] + ldr r0, [r5, #0x10] + add r1, sp, #8 + add r2, sp, #4 + bl FUN_0204BF9C + ldr r0, [sp, #8] + strb r0, [r5, #6] + ldr r0, [sp, #4] + strb r0, [r5, #7] + add r0, r5, #3 + bl MOD40_02254940 + add r0, r5, #0 + add r0, #8 + add r1, r5, #3 + add r2, r6, #0 + bl MOD40_02254D6C + cmp r0, #0 + beq _02254930 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254938 ; =0x02255328 + ldr r2, _0225493C ; =MOD40_02254990 + mov r1, #6 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x14] + mov r1, #2 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x14] + mov r1, #3 + mov r2, #4 + bl MOD20_022542C0 + mov r1, #4 + ldr r0, [r5, #0x14] + add r2, r1, #0 + bl MOD20_022542C0 + ldr r0, [r5, #0x14] + mov r1, #5 + mov r2, #4 + bl MOD20_022542C0 + mov r0, #0 + str r0, [r5, #0x2c] + str r0, [r5, #0x30] + add sp, #0xc + str r4, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02254930: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02254938: .word 0x02255328 +_0225493C: .word MOD40_02254990 + thumb_func_end MOD40_0225489C + + thumb_func_start MOD40_02254940 +MOD40_02254940: ; 0x02254940 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, sp, #0 + bl FUN_02012690 + ldr r0, [sp] + cmp r0, #0x18 + blo _0225495A + mov r1, #0x18 + bl _u32_div_f + str r1, [sp] +_0225495A: + ldr r0, [sp, #4] + cmp r0, #0x3c + blo _0225496A + ldr r0, [sp] + mov r1, #0x3c + bl _u32_div_f + str r1, [sp] +_0225496A: + ldr r0, [sp] + strb r0, [r4, #1] + ldr r0, [sp, #4] + strb r0, [r4, #2] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254940 + + thumb_func_start MOD40_02254978 +MOD40_02254978: ; 0x02254978 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl MOD20_02254198 + ldr r0, [r4, #8] + bl MOD40_02254DA8 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD40_02254978 + + thumb_func_start MOD40_02254990 +MOD40_02254990: ; 0x02254990 + str r0, [r3, #0x18] + str r1, [r3, #0x1c] + bx lr + .align 2, 0 + thumb_func_end MOD40_02254990 + + thumb_func_start MOD40_02254998 +MOD40_02254998: ; 0x02254998 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #5 + bhs _022549CE + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549D0 ; =0x02255314 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _022549CE + add r0, r4, #0 + bl MOD40_02254978 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_022549CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549D0: .word 0x02255314 + thumb_func_end MOD40_02254998 + + thumb_func_start MOD40_022549D4 +MOD40_022549D4: ; 0x022549D4 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD40_022549D4 + + thumb_func_start MOD40_022549DC +MOD40_022549DC: ; 0x022549DC + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549E4 + b _022549E6 +_022549E4: + mov r1, #4 +_022549E6: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD40_022549DC + + thumb_func_start MOD40_022549F0 +MOD40_022549F0: ; 0x022549F0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A00 + cmp r0, #1 + beq _02254A10 + b _02254A3A +_02254A00: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A3A +_02254A10: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD40_02254FBC + cmp r0, #0 + beq _02254A3A + ldr r0, [r4, #0xc] + bl MOD20_0225298C + ldrb r0, [r4, #3] + cmp r0, #0 + beq _02254A32 + add r0, r4, #0 + mov r1, #2 + bl MOD40_022549DC + b _02254A3A +_02254A32: + add r0, r4, #0 + mov r1, #1 + bl MOD40_022549DC +_02254A3A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_022549F0 + + thumb_func_start MOD40_02254A40 +MOD40_02254A40: ; 0x02254A40 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254A54 + mov r1, #4 + bl MOD40_022549DC + mov r0, #0 + pop {r4, pc} +_02254A54: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A60 + cmp r0, #1 + beq _02254B32 + b _02254B46 +_02254A60: + ldr r1, [r4, #0x1c] + cmp r1, #1 + bne _02254A9A + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02254A9A + mov r0, #1 + strb r0, [r4, #3] + add r0, r4, #3 + bl MOD40_02254940 + mov r2, #6 + mov r3, #7 + ldrsb r2, [r4, r2] + ldrsb r3, [r4, r3] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0204BFB0 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD40_02254F98 + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B46 +_02254A9A: + cmp r1, #1 + bne _02254AB0 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254AB0 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, _02254B4C ; =0x0000066E + bl MOD20_02252B28 + b _02254B46 +_02254AB0: + cmp r1, #1 + beq _02254AB8 + cmp r1, #7 + bne _02254B46 +_02254AB8: + ldr r0, [r4, #0x18] + cmp r0, #5 + bhi _02254B24 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254ACA: ; jump table + .short _02254B24 - _02254ACA - 2 ; case 0 + .short _02254B24 - _02254ACA - 2 ; case 1 + .short _02254AD6 - _02254ACA - 2 ; case 2 + .short _02254AEA - _02254ACA - 2 ; case 3 + .short _02254AFE - _02254ACA - 2 ; case 4 + .short _02254B12 - _02254ACA - 2 ; case 5 +_02254AD6: + mov r0, #6 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #6] + ldrsb r0, [r4, r0] + cmp r0, #0x17 + ble _02254B24 + mov r0, #0 + strb r0, [r4, #6] + b _02254B24 +_02254AEA: + mov r0, #6 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #6] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02254B24 + mov r0, #0x17 + strb r0, [r4, #6] + b _02254B24 +_02254AFE: + mov r0, #7 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #7] + ldrsb r0, [r4, r0] + cmp r0, #0x3b + ble _02254B24 + mov r0, #0 + strb r0, [r4, #7] + b _02254B24 +_02254B12: + mov r0, #7 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #7] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02254B24 + mov r0, #0x3b + strb r0, [r4, #7] +_02254B24: + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4, #8] + mov r1, #4 + bl MOD40_02254F98 + b _02254B46 +_02254B32: + ldr r0, [r4, #8] + mov r1, #2 + bl MOD40_02254FBC + cmp r0, #0 + beq _02254B46 + add r0, r4, #0 + mov r1, #2 + bl MOD40_022549DC +_02254B46: + mov r0, #0 + pop {r4, pc} + nop +_02254B4C: .word 0x0000066E + thumb_func_end MOD40_02254A40 + + thumb_func_start MOD40_02254B50 +MOD40_02254B50: ; 0x02254B50 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254B68 + mov r1, #4 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254B68: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B74 + cmp r0, #1 + beq _02254C02 + b _02254C12 +_02254B74: + add r0, r4, #3 + bl MOD40_02254D4C + cmp r0, #0 + beq _02254B8C + add r0, r4, #0 + mov r1, #3 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254B8C: + ldr r1, [r4, #0x1c] + cmp r1, #1 + bne _02254BB2 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254BB2 + mov r0, #0 + strb r0, [r4, #3] + ldr r0, [r4, #8] + mov r1, #3 + bl MOD40_02254F98 + mov r0, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + mov r1, #1 + bl MOD40_022549DC + b _02254C12 +_02254BB2: + cmp r1, #1 + bne _02254BC4 + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02254BC4 + ldr r0, _02254C18 ; =0x0000066E + bl MOD20_02252B28 + b _02254C12 +_02254BC4: + add r0, r4, #0 + bl MOD40_02254CE4 + cmp r0, #0 + bne _02254BD4 + add r0, r4, #0 + bl MOD40_02254CE8 +_02254BD4: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD40_02254D00 + cmp r0, #0 + beq _02254C12 + mov r0, #5 + ldrsb r0, [r4, r0] + ldr r1, [sp] + cmp r1, r0 + beq _02254C12 + strb r1, [r4, #5] + ldr r0, [sp, #4] + mov r1, #4 + strb r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C12 +_02254C02: + ldr r0, [r4, #8] + mov r1, #4 + bl MOD40_02254FBC + cmp r0, #0 + beq _02254C12 + mov r0, #0 + strb r0, [r4, #1] +_02254C12: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02254C18: .word 0x0000066E + thumb_func_end MOD40_02254B50 + + thumb_func_start MOD40_02254C1C +MOD40_02254C1C: ; 0x02254C1C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254C34 + mov r1, #4 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254C34: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254C40 + cmp r0, #1 + beq _02254C50 + b _02254CDC +_02254C40: + ldr r0, [r4, #8] + mov r1, #5 + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254CDC +_02254C50: + add r0, r4, #3 + bl MOD40_02254D4C + cmp r0, #0 + bne _02254C76 + ldr r0, [r4, #8] + bl MOD40_0225530C + ldr r0, [r4, #8] + mov r1, #2 + bl MOD40_02254F98 + add r0, r4, #0 + mov r1, #2 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254C76: + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _02254CA6 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254CA6 + mov r0, #0 + strb r0, [r4, #3] + ldr r0, [r4, #8] + bl MOD40_0225530C + ldr r0, [r4, #8] + mov r1, #3 + bl MOD40_02254F98 + mov r0, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + mov r1, #1 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254CA6: + add r0, r4, #0 + bl MOD40_02254CE4 + cmp r0, #0 + bne _02254CB6 + add r0, r4, #0 + bl MOD40_02254CE8 +_02254CB6: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD40_02254D00 + cmp r0, #0 + beq _02254CDC + mov r0, #5 + ldrsb r0, [r4, r0] + ldr r1, [sp] + cmp r1, r0 + beq _02254CDC + strb r1, [r4, #5] + ldr r0, [sp, #4] + mov r1, #4 + strb r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD40_02254F98 +_02254CDC: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254C1C + + thumb_func_start MOD40_02254CE4 +MOD40_02254CE4: ; 0x02254CE4 + ldr r0, [r0, #0x2c] + bx lr + thumb_func_end MOD40_02254CE4 + + thumb_func_start MOD40_02254CE8 +MOD40_02254CE8: ; 0x02254CE8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + cmp r0, #0 + bne _02254CFE + add r0, r4, #0 + add r0, #0x20 + bl FUN_02012690 + mov r0, #1 + str r0, [r4, #0x30] +_02254CFE: + pop {r4, pc} + thumb_func_end MOD40_02254CE8 + + thumb_func_start MOD40_02254D00 +MOD40_02254D00: ; 0x02254D00 + ldr r3, [r0, #0x30] + cmp r3, #0 + beq _02254D12 + ldr r3, [r0, #0x20] + str r3, [r1] + ldr r0, [r0, #0x24] + str r0, [r2] + mov r0, #1 + bx lr +_02254D12: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD40_02254D00 + + thumb_func_start MOD40_02254D18 +MOD40_02254D18: ; 0x02254D18 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254D28 + cmp r0, #1 + beq _02254D38 + b _02254D46 +_02254D28: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254D46 +_02254D38: + ldr r0, [r4, #8] + bl MOD40_02254FC8 + cmp r0, #0 + beq _02254D46 + mov r0, #1 + pop {r4, pc} +_02254D46: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254D18 + + thumb_func_start MOD40_02254D4C +MOD40_02254D4C: ; 0x02254D4C + mov r1, #1 + mov r2, #3 + ldrsb r3, [r0, r1] + ldrsb r2, [r0, r2] + cmp r3, r2 + bne _02254D64 + mov r2, #2 + ldrsb r3, [r0, r2] + mov r2, #4 + ldrsb r0, [r0, r2] + cmp r3, r0 + beq _02254D66 +_02254D64: + mov r1, #0 +_02254D66: + add r0, r1, #0 + bx lr + .align 2, 0 + thumb_func_end MOD40_02254D4C + + thumb_func_start MOD40_02254D6C +MOD40_02254D6C: ; 0x02254D6C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x9c + bl FUN_02016998 + add r4, r0, #0 + beq _02254DA2 + 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 MOD40_02254DBC + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254DA2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD40_02254D6C + + thumb_func_start MOD40_02254DA8 +MOD40_02254DA8: ; 0x02254DA8 + push {r4, lr} + add r4, r0, #0 + beq _02254DB8 + bl MOD40_02254EE4 + add r0, r4, #0 + bl FUN_02016A18 +_02254DB8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254DA8 + + thumb_func_start MOD40_02254DBC +MOD40_02254DBC: ; 0x02254DBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, 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, #0x4f + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x68 + mov r1, #0xc + mov r2, #0x4d + mov r3, #0x4e + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x7c + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x68 + str r0, [sp, #0x14] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x7c + ldr r7, _02254EE0 ; =0x022553B0 + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #0x10] +_02254E2A: + cmp r4, #9 + blt _02254E40 + cmp r4, #0xc + bgt _02254E40 + ldr r0, [r5, #0x30] + ldr r2, [sp, #0x10] + add r1, r7, #0 + bl MOD20_02253E74 + str r0, [r6, #0x34] + b _02254E52 +_02254E40: + ldr r0, [r5, #0x30] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r6, #0x34] + bl MOD20_02253FA4 +_02254E52: + add r4, r4, #1 + add r7, #0x10 + add r6, r6, #4 + cmp r4, #0xd + blt _02254E2A + ldr r0, [sp, #0xc] + ldrb r0, [r0] + cmp r0, #0 + ldr r0, [r5, #0x34] + beq _02254EB2 + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x48] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + mov r1, #1 + bl MOD20_02253F78 + ldr r1, [sp, #0xc] + mov r2, #1 + ldrsb r1, [r1, r2] + ldr r2, [sp, #0xc] + mov r3, #2 + ldrsb r2, [r2, r3] + add r0, r5, #0 + bl MOD40_02254F14 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02254EB2: + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #4 + bl MOD20_02253F28 + ldr r1, [sp, #0xc] + mov r2, #3 + ldrsb r1, [r1, r2] + ldr r2, [sp, #0xc] + mov r3, #4 + ldrsb r2, [r2, r3] + add r0, r5, #0 + bl MOD40_02254F14 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254EE0: .word 0x022553B0 + thumb_func_end MOD40_02254DBC + + thumb_func_start MOD40_02254EE4 +MOD40_02254EE4: ; 0x02254EE4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02254EEC: + ldr r1, [r5, #0x34] + cmp r1, #0 + beq _02254EF8 + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254EF8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xd + blt _02254EEC + add r0, r6, #0 + add r0, #0x68 + bl MOD20_02254014 + add r6, #0x7c + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD40_02254EE4 + + thumb_func_start MOD40_02254F14 +MOD40_02254F14: ; 0x02254F14 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02254F8C ; =0x04000280 + mov r3, #0 + strh r3, [r0] + str r1, [r0, #0x10] + add r1, r0, #0 + add r4, r2, #0 + mov r2, #0xa + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_02254F2E: + ldrh r2, [r0] + tst r2, r1 + bne _02254F2E + ldr r1, _02254F90 ; =0x040002A0 + ldr r0, [r5, #0x58] + ldr r1, [r1] + bl MOD20_02253F28 + ldr r2, _02254F8C ; =0x04000280 + lsr r0, r2, #0xb +_02254F42: + ldrh r1, [r2] + tst r1, r0 + bne _02254F42 + ldr r1, _02254F94 ; =0x040002A8 + ldr r0, [r5, #0x5c] + ldr r1, [r1] + bl MOD20_02253F28 + ldr r0, _02254F8C ; =0x04000280 + mov r3, #0 + strh r3, [r0] + add r1, r0, #0 + str r4, [r0, #0x10] + mov r2, #0xa + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_02254F66: + ldrh r2, [r0] + tst r2, r1 + bne _02254F66 + ldr r1, _02254F90 ; =0x040002A0 + ldr r0, [r5, #0x60] + ldr r1, [r1] + bl MOD20_02253F28 + ldr r2, _02254F8C ; =0x04000280 + lsr r0, r2, #0xb +_02254F7A: + ldrh r1, [r2] + tst r1, r0 + bne _02254F7A + ldr r1, _02254F94 ; =0x040002A8 + ldr r0, [r5, #0x64] + ldr r1, [r1] + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + .align 2, 0 +_02254F8C: .word 0x04000280 +_02254F90: .word 0x040002A0 +_02254F94: .word 0x040002A8 + thumb_func_end MOD40_02254F14 + + thumb_func_start MOD40_02254F98 +MOD40_02254F98: ; 0x02254F98 + 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, _02254FB8 ; =0x0225535C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254FB8: .word 0x0225535C + thumb_func_end MOD40_02254F98 + + thumb_func_start MOD40_02254FBC +MOD40_02254FBC: ; 0x02254FBC + ldr r3, _02254FC4 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254FC4: .word MOD20_02253794 + thumb_func_end MOD40_02254FBC + + thumb_func_start MOD40_02254FC8 +MOD40_02254FC8: ; 0x02254FC8 + ldr r3, _02254FD0 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254FD0: .word MOD20_022537B8 + thumb_func_end MOD40_02254FC8 + + thumb_func_start MOD40_02254FD4 +MOD40_02254FD4: ; 0x02254FD4 + 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 MOD40_02254FD4 + + thumb_func_start MOD40_02254FE8 +MOD40_02254FE8: ; 0x02254FE8 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _0225506C ; =0x02255340 + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x4c + 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, [r5, #4] + mov r0, #0xc + mov r1, #0x4b + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02255070 ; =0x04001000 + ldr r0, _02255074 ; =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] + add r0, r4, #0 + bl MOD40_02254FD4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0225506C: .word 0x02255340 +_02255070: .word 0x04001000 +_02255074: .word 0xFFFFE0FF + thumb_func_end MOD40_02254FE8 + + thumb_func_start MOD40_02255078 +MOD40_02255078: ; 0x02255078 + 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_022538AC + cmp r0, #0 + beq _02255094 + cmp r0, #1 + beq _022550A2 + pop {r3, r4, r5, pc} +_02255094: + add r0, r4, #0 + bl MOD40_0225530C + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_022550A2: + add r0, r4, #0 + mov r1, #5 + bl MOD40_02254FBC + cmp r0, #0 + beq _022550BC + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD40_02254FD4 +_022550BC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD40_02255078 + + thumb_func_start MOD40_022550C0 +MOD40_022550C0: ; 0x022550C0 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, _02255138 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, [r5, #0x34] + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x38] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x3c] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x48] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + mov r1, #1 + bl MOD20_02253F78 + mov r1, #1 + mov r2, #2 + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + add r0, r5, #0 + bl MOD40_02254F14 + add r0, r6, #0 + bl MOD40_02254FD4 + pop {r4, r5, r6, pc} + .align 2, 0 +_02255138: .word 0x00000663 + thumb_func_end MOD40_022550C0 + + thumb_func_start MOD40_0225513C +MOD40_0225513C: ; 0x0225513C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, _022551B4 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, [r5, #0x34] + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #4 + bl MOD20_02253F28 + ldr r0, [r5, #0x38] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x3c] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x48] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + mov r1, #0 + bl MOD20_02253F78 + mov r1, #3 + mov r2, #4 + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + add r0, r5, #0 + bl MOD40_02254F14 + add r0, r6, #0 + bl MOD40_02254FD4 + pop {r4, r5, r6, pc} + .align 2, 0 +_022551B4: .word 0x00000663 + thumb_func_end MOD40_0225513C + + thumb_func_start MOD40_022551B8 +MOD40_022551B8: ; 0x022551B8 + 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 r2, r0, #0 + ldrb r0, [r2] + cmp r0, #0 + beq _022551E2 + mov r1, #1 + mov r3, #2 + ldrsb r1, [r2, r1] + ldrsb r2, [r2, r3] + add r0, r4, #0 + bl MOD40_02254F14 + b _022551F0 +_022551E2: + mov r1, #3 + mov r3, #4 + ldrsb r1, [r2, r1] + ldrsb r2, [r2, r3] + add r0, r4, #0 + bl MOD40_02254F14 +_022551F0: + add r0, r5, #0 + bl MOD40_02254FD4 + pop {r3, r4, r5, pc} + thumb_func_end MOD40_022551B8 + + thumb_func_start MOD40_022551F8 +MOD40_022551F8: ; 0x022551F8 + 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 _0225521A + cmp r0, #1 + beq _02255262 + pop {r3, r4, r5, pc} +_0225521A: + add r0, r4, #0 + mov r1, #0 + add r0, #0x90 + str r1, [r0] + ldr r0, [r4, #0x40] + mov r1, #4 + bl MOD20_02253F28 + ldr r0, [r4, #0x44] + mov r1, #4 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl MOD20_02253F28 + ldr r0, _02255304 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, _02255308 ; =0x00000126 + bl MOD20_02252B48 + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r4, #0x98 + add r0, r5, #0 + str r1, [r4] + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02255262: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _02255294 + ldr r0, [r4, #0x58] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x5c] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x60] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x64] + mov r1, #0 + bl MOD20_02253F78 + add r0, r5, #0 + bl MOD40_02254FD4 + pop {r3, r4, r5, pc} +_02255294: + bl FUN_02005670 + cmp r0, #0 + bne _022552A2 + ldr r0, _02255308 ; =0x00000126 + bl MOD20_02252B48 +_022552A2: + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #0xf + blo _02255300 + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x98 + ldr r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r1, r4, #0 + add r1, #0x98 + ldr r0, [r4, #0x58] + ldr r1, [r1] + bl MOD20_02253F78 + add r1, r4, #0 + add r1, #0x98 + ldr r0, [r4, #0x5c] + ldr r1, [r1] + bl MOD20_02253F78 + add r1, r4, #0 + add r1, #0x98 + ldr r0, [r4, #0x60] + ldr r1, [r1] + bl MOD20_02253F78 + ldr r0, [r4, #0x64] + add r4, #0x98 + ldr r1, [r4] + bl MOD20_02253F78 +_02255300: + pop {r3, r4, r5, pc} + nop +_02255304: .word 0x00000663 +_02255308: .word 0x00000126 + thumb_func_end MOD40_022551F8 + + thumb_func_start MOD40_0225530C +MOD40_0225530C: ; 0x0225530C + mov r1, #1 + add r0, #0x90 + str r1, [r0] + bx lr + thumb_func_end MOD40_0225530C + + .section .rodata + ; 0x02255314 + .incbin "baserom.nds", 0x292AD4, 0x16C + + .section .sinit + .word MOD40_02254840 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: |