diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-05 14:25:37 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-05 14:25:37 -0400 |
commit | 0bf46cacd62ee0f306ff04ed5f60cbb4331c5bb9 (patch) | |
tree | 4cf6d60899aff8620ad0f1f2dc78127b2bd2d1a7 | |
parent | 9cf19090c216c43c7f4e71bf26df123e8469e4c2 (diff) |
Disassemble module 23
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 4 | ||||
-rw-r--r-- | arm9/modules/23/asm/module_23.s | 2794 |
3 files changed, 2812 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 35caafbe..7e1709c7 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -33,7 +33,7 @@ MEMORY { MODULE_20 (RWX) : ORIGIN=0x02252440, LENGTH=0 MODULE_21 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_22 (RWX) : ORIGIN=0x02254840, LENGTH=0 - MODULE_23 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_23 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_24 (RWX) : ORIGIN=0, LENGTH=0 MODULE_25 (RWX) : ORIGIN=0, LENGTH=0 MODULE_26 (RWX) : ORIGIN=0, LENGTH=0 @@ -655,7 +655,19 @@ SECTIONS { module_22.o (.bss) } >> MODULE_22 - OVERLAY_FILE(23, 0x282C00, FILE_286C00.o) + .MODULE.23 : AT (0x282C00) + { + module_23.o (.text) + module_23.o (.sdata) + module_23.o (.data) + } > MODULE_23 + + .MODULE.23.bss : + { + module_23.o (.sbss) + module_23.o (.bss) + } >> MODULE_23 + OVERLAY_FILE(24, 0x284600, FILE_288600.o) OVERLAY_FILE(25, 0x285000, FILE_289000.o) OVERLAY_FILE(26, 0x285600, FILE_289600.o) diff --git a/arm9/global.inc b/arm9/global.inc index 6601ce1b..dc4275d4 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5404,6 +5404,10 @@ .extern FUN_02020BFC
.extern FUN_020893F0
.extern FUN_02089418
+.extern FUN_02069B60
+.extern MOD20_02252B48
+.extern MOD20_02252C40
+.extern MOD20_022538BC
.extern MOD20_02252B28
.extern MOD20_02252D24
.extern MOD20_022538A4
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s new file mode 100644 index 00000000..6688578e --- /dev/null +++ b/arm9/modules/23/asm/module_23.s @@ -0,0 +1,2794 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD23_02254840 +MOD23_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD23_02254854 + ldr r1, _02254850 ; =MOD23_022549A4 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD23_02254854 +_02254850: .word MOD23_022549A4 + thumb_func_end MOD23_02254840 + + thumb_func_start MOD23_02254854 +MOD23_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x28 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254888 + ldr r1, [sp] + add r2, r7, #0 + bl MOD23_02254890 + cmp r0, #0 + beq _02254888 + ldr r0, _0225488C ; =MOD23_0225494C + str r6, [r4, #0x10] + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254888: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225488C: .word MOD23_0225494C + thumb_func_end MOD23_02254854 + + thumb_func_start MOD23_02254890 +MOD23_02254890: ; 0x02254890 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r1, r4, #0 + add r0, #0x14 + add r1, #0x18 + bl MOD23_02254FFC + cmp r0, #0 + beq _0225490A + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #3] + strb r0, [r4, #2] + strb r0, [r4, #4] + mov r0, #0x11 + strh r0, [r4, #6] + sub r0, #0x12 + str r0, [r4, #8] + add r0, r4, #0 + add r0, #0x1c + mov r1, #0xa + bl MOD23_0225551C + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xa + bl MOD23_0225551C + add r0, r4, #0 + add r0, #0x24 + mov r1, #0xa + bl MOD23_0225551C + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _022548E8 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _022548E8 + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _022548EE +_022548E8: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_022548EE: + mov r0, #8 + str r0, [sp] + ldr r0, _02254910 ; =0x02255CD8 + ldr r2, _02254914 ; =MOD23_022549C4 + mov r1, #0x11 + add r3, r4, #0 + bl MOD20_02254130 + str r0, [r4, #0xc] + cmp r0, #0 + bne _0225490A + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_0225490A: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02254910: .word 0x02255CD8 +_02254914: .word MOD23_022549C4 + thumb_func_end MOD23_02254890 + + thumb_func_start MOD23_02254918 +MOD23_02254918: ; 0x02254918 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02254926 + bl MOD23_02255540 +_02254926: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02254930 + bl MOD23_02255540 +_02254930: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _0225493A + bl MOD23_02255540 +_0225493A: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02254944 + bl MOD20_02254198 +_02254944: + ldr r0, [r4, #0x14] + bl MOD23_0225502C + pop {r4, pc} + thumb_func_end MOD23_02254918 + + thumb_func_start MOD23_0225494C +MOD23_0225494C: ; 0x0225494C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _02254964 + add r0, r4, #0 + mov r1, #6 + bl MOD23_022549AC + mov r0, #0 + strb r0, [r4, #3] +_02254964: + ldrb r0, [r4] + cmp r0, #7 + bhs _0225499E + mov r0, #0x11 + strh r0, [r4, #6] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0xc] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549A0 ; =0x02255CBC + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225499E + add r0, r4, #0 + bl MOD23_02254918 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD20_022529A0 +_0225499E: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549A0: .word 0x02255CBC + thumb_func_end MOD23_0225494C + + thumb_func_start MOD23_022549A4 +MOD23_022549A4: ; 0x022549A4 + mov r1, #1 + strb r1, [r0, #3] + bx lr + .align 2, 0 + thumb_func_end MOD23_022549A4 + + thumb_func_start MOD23_022549AC +MOD23_022549AC: ; 0x022549AC + ldrb r2, [r0, #3] + cmp r2, #0 + bne _022549B4 + b _022549B6 +_022549B4: + mov r1, #6 +_022549B6: + strb r1, [r0] + ldrb r1, [r0] + strb r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD23_022549AC + + thumb_func_start MOD23_022549C4 +MOD23_022549C4: ; 0x022549C4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r3, #0 + cmp r2, #0 + beq _022549D6 + cmp r2, #1 + beq _022549E2 + b _022549EC +_022549D6: + strh r5, [r4, #0x18] + ldr r0, [r4, #0x14] + mov r1, #2 + bl MOD23_02255038 + b _022549EC +_022549E2: + strh r5, [r4, #0x18] + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD23_02255038 +_022549EC: + cmp r6, #3 + bne _022549F2 + strh r5, [r4, #6] +_022549F2: + pop {r4, r5, r6, pc} + thumb_func_end MOD23_022549C4 + + thumb_func_start MOD23_022549F4 +MOD23_022549F4: ; 0x022549F4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A04 + cmp r0, #1 + beq _02254A14 + b _02254A2E +_02254A04: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A2E +_02254A14: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD23_0225505C + cmp r0, #0 + beq _02254A2E + ldr r0, [r4, #0x10] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD23_022549AC +_02254A2E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_022549F4 + + thumb_func_start MOD23_02254A34 +MOD23_02254A34: ; 0x02254A34 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254A44 + cmp r1, #1 + beq _02254AE8 + b _02254B08 +_02254A44: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254A9E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254A60: ; jump table + .short _02254A7A - _02254A60 - 2 ; case 0 + .short _02254A80 - _02254A60 - 2 ; case 1 + .short _02254A80 - _02254A60 - 2 ; case 2 + .short _02254A80 - _02254A60 - 2 ; case 3 + .short _02254A80 - _02254A60 - 2 ; case 4 + .short _02254A90 - _02254A60 - 2 ; case 5 + .short _02254A70 - _02254A60 - 2 ; case 6 + .short _02254AC0 - _02254A60 - 2 ; case 7 +_02254A70: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + b _02254AC0 +_02254A7A: + mov r0, #1 + strb r0, [r4, #4] + b _02254AC0 +_02254A80: + strh r1, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #4] + mov r0, #8 + str r0, [r4, #8] + mov r0, #2 + strb r0, [r4, #2] + b _02254AC0 +_02254A90: + ldr r1, [r4, #0x1c] + bl MOD23_02254F94 + ldr r0, [r4, #0x1c] + bl MOD23_02255548 + b _02254AC0 +_02254A9E: + ldrb r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4, #0x1c] + beq _02254AB4 + bl MOD23_02255838 + cmp r0, #0 + beq _02254AC0 + mov r0, #3 + str r0, [r4, #8] + b _02254AC0 +_02254AB4: + bl MOD23_022557FC + cmp r0, #0 + beq _02254AC0 + mov r0, #3 + str r0, [r4, #8] +_02254AC0: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254AD8 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B08 +_02254AD8: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254B08 + add r0, r4, #0 + bl MOD23_022549AC + b _02254B08 +_02254AE8: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254B08 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254B04 + add r0, r4, #0 + bl MOD23_022549AC + b _02254B08 +_02254B04: + mov r0, #0 + strb r0, [r4, #1] +_02254B08: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD23_02254A34 + + thumb_func_start MOD23_02254B0C +MOD23_02254B0C: ; 0x02254B0C + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254B1C + cmp r1, #1 + beq _02254BE4 + b _02254C04 +_02254B1C: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254BA2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254B38: ; jump table + .short _02254B56 - _02254B38 - 2 ; case 0 + .short _02254B6A - _02254B38 - 2 ; case 1 + .short _02254B6A - _02254B38 - 2 ; case 2 + .short _02254B6A - _02254B38 - 2 ; case 3 + .short _02254B6A - _02254B38 - 2 ; case 4 + .short _02254B72 - _02254B38 - 2 ; case 5 + .short _02254B48 - _02254B38 - 2 ; case 6 + .short _02254BBC - _02254B38 - 2 ; case 7 +_02254B48: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254BBC +_02254B56: + ldr r0, [r4, #0x20] + bl MOD23_02255548 + mov r0, #5 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + mov r0, #3 + strb r0, [r4, #2] + b _02254BBC +_02254B6A: + strh r1, [r4, #0x1a] + mov r0, #8 + str r0, [r4, #8] + b _02254BBC +_02254B72: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x1c] + bl MOD23_02255558 + ldrh r1, [r4, #0x1a] + add r0, r4, #0 + bl MOD23_02254F08 + cmp r0, #0 + beq _02254B98 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD23_02254F94 + mov r0, #6 + str r0, [r4, #8] + mov r0, #4 + strb r0, [r4, #2] + b _02254BBC +_02254B98: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254BBC +_02254BA2: + ldr r0, [r4, #0x20] + bl MOD23_02255548 + ldrh r1, [r4, #6] + ldr r0, [r4, #0x20] + bl MOD23_022557FC + cmp r0, #0 + beq _02254BBC + mov r0, #5 + str r0, [r4, #8] + mov r0, #3 + strb r0, [r4, #2] +_02254BBC: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254BD4 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C04 +_02254BD4: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254C04 + add r0, r4, #0 + bl MOD23_022549AC + b _02254C04 +_02254BE4: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254C04 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254C00 + add r0, r4, #0 + bl MOD23_022549AC + b _02254C04 +_02254C00: + mov r0, #0 + strb r0, [r4, #1] +_02254C04: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD23_02254B0C + + thumb_func_start MOD23_02254C08 +MOD23_02254C08: ; 0x02254C08 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254C18 + cmp r1, #1 + beq _02254CFA + b _02254D1A +_02254C18: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254CB0 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254C34: ; jump table + .short _02254C52 - _02254C34 - 2 ; case 0 + .short _02254C58 - _02254C34 - 2 ; case 1 + .short _02254C58 - _02254C34 - 2 ; case 2 + .short _02254C58 - _02254C34 - 2 ; case 3 + .short _02254C58 - _02254C34 - 2 ; case 4 + .short _02254C86 - _02254C34 - 2 ; case 5 + .short _02254C44 - _02254C34 - 2 ; case 6 + .short _02254CD2 - _02254C34 - 2 ; case 7 +_02254C44: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254CD2 +_02254C52: + mov r0, #1 + strb r0, [r4, #4] + b _02254CD2 +_02254C58: + ldrh r1, [r4, #0x1a] + bl MOD23_02254F08 + cmp r0, #0 + beq _02254C7C + ldrh r0, [r4, #6] + strh r0, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #4] + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x24] + bl MOD23_02255558 + mov r0, #7 + str r0, [r4, #8] + mov r0, #2 + strb r0, [r4, #2] + b _02254CD2 +_02254C7C: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254CD2 +_02254C86: + ldrh r1, [r4, #0x1a] + bl MOD23_02254F08 + cmp r0, #0 + beq _02254CA6 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD23_02254F94 + mov r0, #6 + str r0, [r4, #8] + mov r0, #0 + strb r0, [r4, #4] + mov r0, #4 + strb r0, [r4, #2] + b _02254CD2 +_02254CA6: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254CD2 +_02254CB0: + ldrb r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4, #0x20] + beq _02254CC6 + bl MOD23_02255838 + cmp r0, #0 + beq _02254CD2 + mov r0, #5 + str r0, [r4, #8] + b _02254CD2 +_02254CC6: + bl MOD23_022557FC + cmp r0, #0 + beq _02254CD2 + mov r0, #5 + str r0, [r4, #8] +_02254CD2: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254CEA + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254D1A +_02254CEA: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254D1A + add r0, r4, #0 + bl MOD23_022549AC + b _02254D1A +_02254CFA: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254D1A + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254D16 + add r0, r4, #0 + bl MOD23_022549AC + b _02254D1A +_02254D16: + mov r0, #0 + strb r0, [r4, #1] +_02254D1A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254C08 + + thumb_func_start MOD23_02254D20 +MOD23_02254D20: ; 0x02254D20 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254D30 + cmp r1, #1 + beq _02254E04 + b _02254E24 +_02254D30: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254DC2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254D4C: ; jump table + .short _02254D6A - _02254D4C - 2 ; case 0 + .short _02254D7A - _02254D4C - 2 ; case 1 + .short _02254D7A - _02254D4C - 2 ; case 2 + .short _02254D7A - _02254D4C - 2 ; case 3 + .short _02254D7A - _02254D4C - 2 ; case 4 + .short _02254D92 - _02254D4C - 2 ; case 5 + .short _02254D5C - _02254D4C - 2 ; case 6 + .short _02254DDC - _02254D4C - 2 ; case 7 +_02254D5C: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254DDC +_02254D6A: + bl MOD23_02254EE8 + mov r0, #3 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + strb r0, [r4, #2] + b _02254DDC +_02254D7A: + strh r1, [r4, #0x1a] + mov r0, #8 + str r0, [r4, #8] + mov r0, #0 + strb r0, [r4, #4] + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x24] + bl MOD23_02255558 + mov r0, #2 + strb r0, [r4, #2] + b _02254DDC +_02254D92: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x24] + bl MOD23_02255558 + ldrh r1, [r4, #0x1a] + add r0, r4, #0 + bl MOD23_02254F08 + cmp r0, #0 + beq _02254DB8 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD23_02254F94 + mov r0, #6 + str r0, [r4, #8] + mov r0, #0 + strb r0, [r4, #4] + b _02254DDC +_02254DB8: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254DDC +_02254DC2: + ldr r0, [r4, #0x1c] + bl MOD23_02255548 + ldrh r1, [r4, #6] + ldr r0, [r4, #0x1c] + bl MOD23_022557FC + cmp r0, #0 + beq _02254DD8 + mov r0, #3 + str r0, [r4, #8] +_02254DD8: + mov r0, #1 + strb r0, [r4, #2] +_02254DDC: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254DF4 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254E24 +_02254DF4: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254E24 + add r0, r4, #0 + bl MOD23_022549AC + b _02254E24 +_02254E04: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254E24 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254E20 + add r0, r4, #0 + bl MOD23_022549AC + b _02254E24 +_02254E20: + mov r0, #0 + strb r0, [r4, #1] +_02254E24: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD23_02254D20 + + thumb_func_start MOD23_02254E28 +MOD23_02254E28: ; 0x02254E28 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254E38 + cmp r1, #1 + beq _02254EC2 + b _02254EE2 +_02254E38: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + sub r1, #0xa + cmp r1, #7 + bhi _02254E80 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02254E52: ; jump table + .short _02254E70 - _02254E52 - 2 ; case 0 + .short _02254E9A - _02254E52 - 2 ; case 1 + .short _02254E9A - _02254E52 - 2 ; case 2 + .short _02254E9A - _02254E52 - 2 ; case 3 + .short _02254E9A - _02254E52 - 2 ; case 4 + .short _02254E9A - _02254E52 - 2 ; case 5 + .short _02254E62 - _02254E52 - 2 ; case 6 + .short _02254E9A - _02254E52 - 2 ; case 7 +_02254E62: + bl MOD23_02254EE8 + mov r0, #3 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254E9A +_02254E70: + bl MOD23_02254EE8 + mov r0, #3 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + strb r0, [r4, #2] + b _02254E9A +_02254E80: + add r0, r4, #0 + bl MOD23_02254EE8 + ldrh r1, [r4, #6] + ldr r0, [r4, #0x1c] + bl MOD23_022557FC + cmp r0, #0 + beq _02254E96 + mov r0, #3 + str r0, [r4, #8] +_02254E96: + mov r0, #1 + strb r0, [r4, #2] +_02254E9A: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254EB2 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254EE2 +_02254EB2: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254EE2 + add r0, r4, #0 + bl MOD23_022549AC + b _02254EE2 +_02254EC2: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254EE2 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254EDE + add r0, r4, #0 + bl MOD23_022549AC + b _02254EE2 +_02254EDE: + mov r0, #0 + strb r0, [r4, #1] +_02254EE2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254E28 + + thumb_func_start MOD23_02254EE8 +MOD23_02254EE8: ; 0x02254EE8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl MOD23_02255548 + ldr r0, [r4, #0x20] + bl MOD23_02255548 + ldr r0, [r4, #0x24] + bl MOD23_02255548 + mov r0, #0x11 + strh r0, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #4] + pop {r4, pc} + thumb_func_end MOD23_02254EE8 + + thumb_func_start MOD23_02254F08 +MOD23_02254F08: ; 0x02254F08 + push {r4, lr} + sub r1, #0xb + add r4, r0, #0 + cmp r1, #3 + bhi _02254F54 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254F1E: ; jump table + .short _02254F32 - _02254F1E - 2 ; case 0 + .short _02254F26 - _02254F1E - 2 ; case 1 + .short _02254F3E - _02254F1E - 2 ; case 2 + .short _02254F4A - _02254F1E - 2 ; case 3 +_02254F26: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_02255568 + b _02254F54 +_02254F32: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_022555F4 + b _02254F54 +_02254F3E: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_022556A8 + b _02254F54 +_02254F4A: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_022556D8 +_02254F54: + ldr r0, [r4, #0x24] + mov r1, #0xa + bl MOD23_022558C0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254F08 + + thumb_func_start MOD23_02254F60 +MOD23_02254F60: ; 0x02254F60 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254F70 + cmp r0, #1 + beq _02254F80 + b _02254F8E +_02254F70: + ldr r0, [r4, #0x14] + mov r1, #0xa + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254F8E +_02254F80: + ldr r0, [r4, #0x14] + bl MOD23_02255068 + cmp r0, #0 + beq _02254F8E + mov r0, #1 + pop {r4, pc} +_02254F8E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254F60 + + thumb_func_start MOD23_02254F94 +MOD23_02254F94: ; 0x02254F94 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD23_02255AE8 + add r4, r0, #0 + mov r2, #0 + mov r0, #0 + sub r0, r0, r4 + sbc r2, r1 + bge _02254FF4 + mov r2, #0 + ldr r0, _02254FF8 ; =0x000001ED + sub r0, r0, r4 + sbc r2, r1 + blt _02254FF4 + ldr r0, [r5, #0x10] + bl MOD20_02252C40 + bl FUN_02024DA0 + add r5, r0, #0 + bl FUN_02024CA4 + cmp r0, #0 + beq _02254FCE + lsl r0, r4, #0x10 + lsr r4, r0, #0x10 + b _02254FD8 +_02254FCE: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069B60 + add r4, r0, #0 +_02254FD8: + cmp r4, #0 + beq _02254FF4 + ldr r0, _02254FF8 ; =0x000001ED + cmp r4, r0 + bhi _02254FF4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _02254FF4 + add r0, r4, #0 + bl MOD20_02252B48 +_02254FF4: + pop {r3, r4, r5, pc} + nop +_02254FF8: .word 0x000001ED + thumb_func_end MOD23_02254F94 + + thumb_func_start MOD23_02254FFC +MOD23_02254FFC: ; 0x02254FFC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _02255028 ; =0x0000048C + mov r0, #8 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _02255022 + str r6, [r4] + str r7, [r4, #4] + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02255022: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255028: .word 0x0000048C + thumb_func_end MOD23_02254FFC + + thumb_func_start MOD23_0225502C +MOD23_0225502C: ; 0x0225502C + push {r3, lr} + cmp r0, #0 + beq _02255036 + bl FUN_02016A18 +_02255036: + pop {r3, pc} + thumb_func_end MOD23_0225502C + + thumb_func_start MOD23_02255038 +MOD23_02255038: ; 0x02255038 + 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, _02255058 ; =0x02256040 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02255058: .word 0x02256040 + thumb_func_end MOD23_02255038 + + thumb_func_start MOD23_0225505C +MOD23_0225505C: ; 0x0225505C + ldr r3, _02255064 ; =0x02253795 + add r0, #8 + bx r3 + nop +_02255064: .word 0x02253795 + thumb_func_end MOD23_0225505C + + thumb_func_start MOD23_02255068 +MOD23_02255068: ; 0x02255068 + ldr r3, _02255070 ; =0x022537B9 + add r0, #8 + bx r3 + nop +_02255070: .word 0x022537B9 + thumb_func_end MOD23_02255068 + + thumb_func_start MOD23_02255074 +MOD23_02255074: ; 0x02255074 + 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 MOD23_02255074 + + thumb_func_start MOD23_02255088 +MOD23_02255088: ; 0x02255088 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A4 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02255118 ; =0x02255D1C + 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, #0x10 + 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, #0x11 + mov r3, #6 + bl FUN_020068C8 + add r0, r5, #0 + bl MOD23_02255124 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _0225511C ; =0x04001000 + ldr r0, _02255120 ; =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 MOD23_02255074 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02255118: .word 0x02255D1C +_0225511C: .word 0x04001000 +_02255120: .word 0xFFFFE0FF + thumb_func_end MOD23_02255088 + + thumb_func_start MOD23_02255124 +MOD23_02255124: ; 0x02255124 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + ldr r3, _022551A0 ; =0x02255FB8 + str r0, [sp, #4] +_0225513A: + ldrb r7, [r3, #1] + ldrb r0, [r3, #3] + mov r2, #0 + add r0, r7, r0 + cmp r7, r0 + bhs _0225518C + lsl r0, r7, #5 + str r0, [sp] +_0225514A: + ldrb r1, [r3] + ldrb r0, [r3, #2] + add r0, r1, r0 + cmp r1, r0 + bhs _0225517A + ldr r0, [sp] + lsl r4, r0, #1 + mov r0, ip + add r4, r0, r4 + lsl r0, r1, #1 + add r4, r4, r0 +_02255160: + lsl r5, r2, #1 + ldrh r0, [r4] + add r5, r6, r5 + add r5, #0x4c + strh r0, [r5] + ldrb r5, [r3] + ldrb r0, [r3, #2] + add r1, r1, #1 + add r2, r2, #1 + add r0, r5, r0 + add r4, r4, #2 + cmp r1, r0 + blo _02255160 +_0225517A: + ldr r0, [sp] + ldrb r1, [r3, #1] + add r0, #0x20 + str r0, [sp] + ldrb r0, [r3, #3] + add r7, r7, #1 + add r0, r1, r0 + cmp r7, r0 + blo _0225514A +_0225518C: + ldr r0, [sp, #4] + add r3, r3, #4 + add r0, r0, #1 + add r6, #0x40 + str r0, [sp, #4] + cmp r0, #0x11 + blo _0225513A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022551A0: .word 0x02255FB8 + thumb_func_end MOD23_02255124 + + thumb_func_start MOD23_022551A4 +MOD23_022551A4: ; 0x022551A4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldrh r5, [r5] + ldr r0, _022551F8 ; =0x00000663 + bl MOD20_02252B28 + lsl r3, r5, #2 + ldr r0, _022551FC ; =0x02255FB9 + ldr r2, _02255200 ; =0x02255FFC + ldrb r0, [r0, r3] + ldr r5, _02255204 ; =0x02255FB8 + ldr r2, [r2, r3] + str r0, [sp] + ldr r0, _02255208 ; =0x02255FBA + mov r1, #6 + ldrb r0, [r0, r3] + str r0, [sp, #4] + ldr r0, _0225520C ; =0x02255FBB + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02018148 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022551F8: .word 0x00000663 +_022551FC: .word 0x02255FB9 +_02255200: .word 0x02255FFC +_02255204: .word 0x02255FB8 +_02255208: .word 0x02255FBA +_0225520C: .word 0x02255FBB + thumb_func_end MOD23_022551A4 + + thumb_func_start MOD23_02255210 +MOD23_02255210: ; 0x02255210 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + ldrh r5, [r0] + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + lsl r3, r5, #2 + ldr r0, _02255260 ; =0x02255FB9 + add r2, r4, #0 + ldrb r0, [r0, r3] + add r2, #0x4c + lsl r5, r5, #6 + str r0, [sp] + ldr r0, _02255264 ; =0x02255FBA + add r2, r2, r5 + ldrb r0, [r0, r3] + ldr r5, _02255268 ; =0x02255FB8 + mov r1, #6 + str r0, [sp, #4] + ldr r0, _0225526C ; =0x02255FBB + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02018148 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02255260: .word 0x02255FB9 +_02255264: .word 0x02255FBA +_02255268: .word 0x02255FB8 +_0225526C: .word 0x02255FBB + thumb_func_end MOD23_02255210 + + thumb_func_start MOD23_02255270 +MOD23_02255270: ; 0x02255270 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #4] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + thumb_func_end MOD23_02255270 + + thumb_func_start MOD23_022552A8 +MOD23_022552A8: ; 0x022552A8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #4] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + bl MOD23_0225544C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD23_022552A8 + + thumb_func_start MOD23_022552E8 +MOD23_022552E8: ; 0x022552E8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #8] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + thumb_func_end MOD23_022552E8 + + thumb_func_start MOD23_02255320 +MOD23_02255320: ; 0x02255320 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #0xc] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + bl MOD23_0225544C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD23_02255320 + + thumb_func_start MOD23_02255360 +MOD23_02255360: ; 0x02255360 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #0xc] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD23_02255410 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + thumb_func_end MOD23_02255360 + + thumb_func_start MOD23_022553A0 +MOD23_022553A0: ; 0x022553A0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r2, #0 + add r1, r4, #0 + mov r0, #0xc +_022553B2: + add r2, r2, #1 + strh r0, [r1, #0x30] + add r1, r1, #2 + cmp r2, #0xa + blo _022553B2 + lsl r0, r2, #1 + mov r1, #0xd + add r0, r4, r0 + strh r1, [r0, #0x30] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + bl MOD23_0225544C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD23_02255074 + pop {r3, r4, r5, pc} + thumb_func_end MOD23_022553A0 + + thumb_func_start MOD23_022553E4 +MOD23_022553E4: ; 0x022553E4 + 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 + ldr r0, [r4, #4] + bl MOD23_02255410 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD23_02255074 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_022553E4 + + thumb_func_start MOD23_02255410 +MOD23_02255410: ; 0x02255410 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + mov r1, #6 + add r4, r0, #0 + bl FUN_0201886C + ldrh r1, [r5, #2] + cmp r1, #0x11 + bne _0225542E + add r0, r4, #0 + bl MOD23_0225544C + add sp, #0xc + pop {r4, r5, pc} +_0225542E: + sub r1, #0xb + lsl r1, r1, #1 + add r1, #0xf0 + str r1, [sp] + mov r1, #0x28 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #3 + add r2, r1, #0 + mov r3, #0x20 + bl MOD20_022538BC + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD23_02255410 + + thumb_func_start MOD23_0225544C +MOD23_0225544C: ; 0x0225544C + push {lr} + sub sp, #0xc + mov r1, #6 + bl FUN_0201886C + mov r1, #0x29 + str r1, [sp] + mov r1, #0x28 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #3 + add r2, r1, #0 + mov r3, #0x20 + bl MOD20_022538BC + add sp, #0xc + pop {pc} + thumb_func_end MOD23_0225544C + + thumb_func_start MOD23_02255470 +MOD23_02255470: ; 0x02255470 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD23_02255074 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02255470 + + thumb_func_start MOD23_0225548C +MOD23_0225548C: ; 0x0225548C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r1, #0 + mov r1, #6 + bl FUN_0201886C + add r7, r0, #0 + ldrh r0, [r6] + mov r1, #0 + cmp r0, #0xd + beq _022554AE + add r2, r6, #0 +_022554A4: + add r2, r2, #2 + ldrh r0, [r2] + add r1, r1, #1 + cmp r0, #0xd + bne _022554A4 +_022554AE: + mov r0, #0xa + mov r4, #0 + sub r0, r0, r1 + str r0, [sp, #0xc] + beq _022554DC + mov r5, #5 +_022554BA: + mov r0, #0x2b + str r0, [sp] + mov r0, #0x28 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #3 + mov r3, #0x20 + bl MOD20_022538BC + ldr r0, [sp, #0xc] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, r0 + blo _022554BA +_022554DC: + mov r0, #0 + str r0, [sp, #0x10] + cmp r4, #0xa + bhs _02255516 + bhs _02255516 + lsl r0, r4, #1 + add r5, r0, #5 +_022554EA: + ldrh r0, [r6] + add r1, r5, #0 + mov r2, #3 + lsl r0, r0, #1 + add r0, #0xa5 + str r0, [sp] + mov r0, #0x28 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r7, #0 + mov r3, #0x20 + bl MOD20_022538BC + ldr r0, [sp, #0x10] + add r4, r4, #1 + add r0, r0, #1 + add r5, r5, #2 + add r6, r6, #2 + str r0, [sp, #0x10] + cmp r4, #0xa + blo _022554EA +_02255516: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD23_0225548C + + thumb_func_start MOD23_0225551C +MOD23_0225551C: ; 0x0225551C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #8 + mov r1, #0xc + bl FUN_02016998 + str r0, [r5] + cmp r0, #0 + beq _0225553C + strb r4, [r0, #0xa] + ldr r0, [r5] + bl MOD23_02255548 + mov r0, #1 + pop {r3, r4, r5, pc} +_0225553C: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD23_0225551C + + thumb_func_start MOD23_02255540 +MOD23_02255540: ; 0x02255540 + ldr r3, _02255544 ; =0x02016A19 + bx r3 + .align 2, 0 +_02255544: .word 0x02016A19 + thumb_func_end MOD23_02255540 + + thumb_func_start MOD23_02255548 +MOD23_02255548: ; 0x02255548 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + strb r1, [r0, #9] + strb r1, [r0, #8] + strb r1, [r0, #0xb] + bx lr + .align 2, 0 + thumb_func_end MOD23_02255548 + + thumb_func_start MOD23_02255558 +MOD23_02255558: ; 0x02255558 + add r2, r1, #0 + add r3, r0, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + .align 2, 0 + thumb_func_end MOD23_02255558 + + thumb_func_start MOD23_02255568 +MOD23_02255568: ; 0x02255568 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r3, r1, #0 + ldrb r1, [r5, #9] + add r4, r2, #0 + cmp r1, #0 + bne _0225559A + ldrb r0, [r3, #9] + cmp r0, #1 + bne _0225559A + ldmia r3!, {r0, r1} + add r6, sp, #0x24 + add r4, r6, #0 + stmia r6!, {r0, r1} + ldr r0, [r3] + add r1, r4, #0 + str r0, [r6] + mov r0, #0 + strb r0, [r4, #9] + add r0, r5, #0 + bl MOD23_022555F4 + add sp, #0x30 + pop {r4, r5, r6, pc} +_0225559A: + cmp r1, #1 + bne _022555C2 + ldrb r0, [r3, #9] + cmp r0, #0 + bne _022555C2 + ldmia r5!, {r0, r1} + add r6, sp, #0x18 + add r2, r6, #0 + stmia r6!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r6] + mov r0, #0 + strb r0, [r2, #9] + add r0, r3, #0 + add r2, r4, #0 + bl MOD23_022555F4 + add sp, #0x30 + pop {r4, r5, r6, pc} +_022555C2: + add r1, r3, #0 + add r0, r5, #0 + add r2, sp, #0xc + add r3, sp, #0 + bl MOD23_02255C6C + ldr r2, [sp, #0xc] + ldr r1, [sp] + ldr r3, [sp, #0x10] + ldr r0, [sp, #4] + add r1, r2, r1 + adc r3, r0 + str r1, [r4] + str r3, [r4, #4] + add r0, sp, #0 + ldrb r1, [r0, #0x14] + strb r1, [r4, #8] + ldrb r0, [r0, #0x15] + strb r0, [r4, #9] + add r0, r4, #0 + bl MOD23_02255B7C + add sp, #0x30 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD23_02255568 + + thumb_func_start MOD23_022555F4 +MOD23_022555F4: ; 0x022555F4 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r1, #0 + ldrb r1, [r5, #9] + add r6, r2, #0 + cmp r1, #0 + bne _0225560A + ldrb r0, [r4, #9] + cmp r0, #1 + beq _02255614 +_0225560A: + cmp r1, #1 + bne _02255636 + ldrb r0, [r4, #9] + cmp r0, #0 + bne _02255636 +_02255614: + ldmia r4!, {r0, r1} + add r3, sp, #0x18 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldrb r1, [r2, #9] + mov r0, #1 + eor r0, r1 + strb r0, [r2, #9] + add r1, r2, #0 + add r0, r5, #0 + add r2, r6, #0 + bl MOD23_02255568 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} +_02255636: + add r0, r5, #0 + add r1, r4, #0 + bl MOD23_02255874 + cmp r0, #0 + beq _0225564C + add r0, r6, #0 + bl MOD23_02255548 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} +_0225564C: + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0xc + add r3, sp, #0 + bl MOD23_02255C6C + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r0, [sp] + ldr r1, [sp, #4] + add r5, sp, #0xc + add r4, sp, #0 + sub r0, r3, r0 + sbc r2, r1 + bhs _0225566E + mov r1, #1 + b _02255670 +_0225566E: + mov r1, #0 +_02255670: + add r0, sp, #0 + ldrb r0, [r0, #0x15] + eor r0, r1 + beq _02255686 + add r0, r5, #0 + add r5, r4, #0 + ldrb r1, [r5, #9] + add r4, r0, #0 + mov r0, #1 + eor r0, r1 + b _02255688 +_02255686: + ldrb r0, [r5, #9] +_02255688: + strb r0, [r6, #9] + ldr r2, [r5] + ldr r1, [r4] + ldr r3, [r5, #4] + ldr r0, [r4, #4] + sub r1, r2, r1 + sbc r3, r0 + str r1, [r6] + str r3, [r6, #4] + ldrb r0, [r5, #8] + strb r0, [r6, #8] + add r0, r6, #0 + bl MOD23_02255B7C + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD23_022555F4 + + thumb_func_start MOD23_022556A8 +MOD23_022556A8: ; 0x022556A8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [r6] + ldr r3, [r6, #4] + bl _ll_mul + str r0, [r4] + str r1, [r4, #4] + ldrb r1, [r5, #8] + ldrb r0, [r6, #8] + add r0, r1, r0 + strb r0, [r4, #8] + ldrb r1, [r5, #9] + ldrb r0, [r6, #9] + eor r0, r1 + strb r0, [r4, #9] + add r0, r4, #0 + bl MOD23_02255B7C + pop {r4, r5, r6, pc} + thumb_func_end MOD23_022556A8 + + thumb_func_start MOD23_022556D8 +MOD23_022556D8: ; 0x022556D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r2, #0 + add r2, r1, #0 + add r3, r1, #0 + ldr r6, [r3, #4] + mov r3, #0 + ldr r2, [r2] + mov r4, #0 + eor r3, r6 + eor r2, r4 + str r1, [sp] + orr r2, r3 + bne _022556FC + mov r0, #1 + add sp, #0x1c + strb r0, [r5, #0xb] + pop {r4, r5, r6, r7, pc} +_022556FC: + add r2, sp, #0x10 + add r3, sp, #4 + bl MOD23_02255C6C + add r0, sp, #4 + str r0, [sp] + ldr r4, [sp, #4] + ldr r3, [sp, #8] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, _022557EC ; =0x04000280 + mov r6, #2 + strh r6, [r0] + add r6, r0, #0 + add r6, #0x10 + str r2, [r6] + str r1, [r6, #4] + add r1, r0, #0 + add r1, #0x18 + str r4, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_02255728: + ldrh r2, [r0] + tst r2, r1 + bne _02255728 + ldr r0, _022557F0 ; =0x040002A0 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r5] + str r0, [r5, #4] + mov r0, #0 + strb r0, [r5, #8] + add r0, r5, #0 + bl MOD23_02255B18 + ldr r2, _022557EC ; =0x04000280 + add r7, r0, #0 + lsr r0, r2, #0xb +_02255748: + ldrh r1, [r2] + tst r1, r0 + bne _02255748 + ldr r0, _022557F4 ; =0x040002A8 + mov r1, #0 + ldr r2, [r0, #4] + ldr r3, [r0] + mov r0, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _022557DC +_02255760: + ldrb r0, [r5, #8] + add r1, r7, #1 + add r1, r1, r0 + ldrb r0, [r5, #0xa] + cmp r1, r0 + bhs _022557DC + ldr r4, [sp, #4] + ldr r6, [sp, #8] + ldr r0, _022557EC ; =0x04000280 + mov r1, #2 + strh r1, [r0] + add r0, r3, #0 + add r1, r2, #0 + mov r2, #0xa + mov r3, #0 + bl _ll_mul + ldr r2, _022557F8 ; =0x04000290 + mov r3, #0 + str r0, [r2] + str r1, [r2, #4] + add r2, #8 + str r4, [r2] + str r6, [r2, #4] + ldr r0, [r5] + ldr r1, [r5, #4] + mov r2, #0xa + bl _ll_mul + str r0, [r5] + ldr r2, _022557EC ; =0x04000280 + str r1, [r5, #4] + lsr r0, r2, #0xb +_022557A2: + ldrh r1, [r2] + tst r1, r0 + bne _022557A2 + ldr r0, _022557F0 ; =0x040002A0 + ldr r2, [r5] + ldr r1, [r0] + ldr r3, [r5, #4] + add r1, r2, r1 + ldr r0, [r0, #4] + ldr r2, _022557EC ; =0x04000280 + adc r3, r0 + str r1, [r5] + str r3, [r5, #4] + ldrb r0, [r5, #8] + add r0, r0, #1 + strb r0, [r5, #8] + lsr r0, r2, #0xb +_022557C4: + ldrh r1, [r2] + tst r1, r0 + bne _022557C4 + ldr r0, _022557F4 ; =0x040002A8 + mov r1, #0 + ldr r2, [r0, #4] + ldr r3, [r0] + mov r0, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + bne _02255760 +_022557DC: + add r0, sp, #0x10 + ldrb r1, [r0, #9] + ldr r0, [sp] + ldrb r0, [r0, #9] + eor r0, r1 + strb r0, [r5, #9] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022557EC: .word 0x04000280 +_022557F0: .word 0x040002A0 +_022557F4: .word 0x040002A8 +_022557F8: .word 0x04000290 + thumb_func_end MOD23_022556D8 + + thumb_func_start MOD23_022557FC +MOD23_022557FC: ; 0x022557FC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD23_02255B68 + ldrb r1, [r5, #0xa] + cmp r0, r1 + blo _02255810 + mov r0, #0 + pop {r3, r4, r5, pc} +_02255810: + ldrb r0, [r5, #8] + cmp r0, #0 + bne _02255832 + ldr r0, [r5] + ldr r1, [r5, #4] + mov r2, #0xa + mov r3, #0 + bl _ll_mul + str r0, [r5] + str r1, [r5, #4] + ldr r2, [r5] + mov r0, #0 + add r2, r2, r4 + adc r1, r0 + str r2, [r5] + str r1, [r5, #4] +_02255832: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_022557FC + + thumb_func_start MOD23_02255838 +MOD23_02255838: ; 0x02255838 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD23_02255B68 + ldrb r1, [r5, #0xa] + cmp r0, r1 + blo _0225584C + mov r0, #0 + pop {r3, r4, r5, pc} +_0225584C: + ldr r0, [r5] + ldr r1, [r5, #4] + mov r2, #0xa + mov r3, #0 + bl _ll_mul + str r0, [r5] + str r1, [r5, #4] + ldr r2, [r5] + mov r0, #0 + add r2, r2, r4 + adc r1, r0 + str r2, [r5] + str r1, [r5, #4] + ldrb r0, [r5, #8] + add r0, r0, #1 + strb r0, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_02255838 + + thumb_func_start MOD23_02255874 +MOD23_02255874: ; 0x02255874 + push {r3, r4, r5, r6} + ldr r2, [r0, #4] + ldr r3, [r0] + ldr r4, [r1, #4] + add r5, r2, #0 + eor r5, r4 + ldr r6, [r1] + add r4, r3, #0 + eor r4, r6 + orr r4, r5 + beq _02255890 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_02255890: + ldrb r5, [r0, #8] + ldrb r4, [r1, #8] + cmp r5, r4 + beq _0225589E + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_0225589E: + ldrb r4, [r0, #9] + ldrb r0, [r1, #9] + cmp r4, r0 + beq _022558B8 + mov r1, #0 + mov r0, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _022558B8 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_022558B8: + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD23_02255874 + + thumb_func_start MOD23_022558C0 +MOD23_022558C0: ; 0x022558C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldrb r1, [r5, #0xb] + cmp r1, #0 + beq _022558D0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022558D0: + bl MOD23_02255B18 + ldrb r1, [r5, #8] + cmp r1, #0 + beq _022558DE + add r1, r1, #1 + add r0, r0, r1 +_022558DE: + cmp r0, r4 + bls _022558E6 + mov r0, #0 + pop {r3, r4, r5, pc} +_022558E6: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_022558C0 + + thumb_func_start MOD23_022558EC +MOD23_022558EC: ; 0x022558EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp] + ldrb r0, [r0, #0xb] + str r1, [sp, #0x10] + cmp r0, #0 + beq _02255900 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02255900: + ldr r0, [sp] + mov r1, #0 + ldr r7, [r0, #4] + ldr r6, [r0] + mov r0, #0 + eor r1, r7 + eor r0, r6 + orr r0, r1 + bne _02255956 + ldr r1, [sp, #0x10] + add r0, r1, #0 + add r2, r0, #2 + mov r0, #0 + strh r0, [r1] + ldr r1, [sp] + str r2, [sp, #0x10] + ldrb r1, [r1, #8] + cmp r1, #0 + beq _0225594A + add r1, r2, #2 + str r1, [sp, #0x10] + mov r1, #0xa + strh r1, [r2] + ldr r1, [sp] + ldrb r1, [r1, #8] + cmp r1, #0 + ble _0225594A + add r2, r0, #0 +_02255938: + ldr r1, [sp, #0x10] + add r0, r0, #1 + strh r2, [r1] + add r1, r1, #2 + str r1, [sp, #0x10] + ldr r1, [sp] + ldrb r1, [r1, #8] + cmp r0, r1 + blt _02255938 +_0225594A: + ldr r0, [sp, #0x10] + mov r1, #0xd + strh r1, [r0] + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02255956: + mov r2, #0xa + mov r0, #1 + mov r1, #0 + sub r2, r6, r2 + mov ip, r7 + mov r2, ip + sbc r2, r1 + blo _0225597A + ldr r2, _02255ACC ; =0x022560D8 +_02255968: + add r2, #8 + ldr r3, [r2] + add r0, r0, #1 + ldr r1, [r2, #4] + sub r3, r6, r3 + mov ip, r7 + mov r3, ip + sbc r3, r1 + bhs _02255968 +_0225597A: + ldr r1, [sp] + str r0, [sp, #8] + ldrb r1, [r1, #8] + sub r3, r1, r0 + bmi _0225598C + add r1, r3, #2 + add r1, r0, r1 + str r1, [sp, #8] + b _02255994 +_0225598C: + cmp r1, #0 + beq _02255994 + add r1, r0, #1 + str r1, [sp, #8] +_02255994: + ldr r1, [sp] + ldr r4, [sp] + ldrb r2, [r1, #9] + ldr r1, [sp, #8] + ldrb r4, [r4, #0xa] + add r1, r1, r2 + cmp r1, r4 + bls _022559AA + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022559AA: + cmp r2, #1 + bne _022559B8 + ldr r1, [sp, #0x10] + mov r2, #0xb + strh r2, [r1] + add r1, r1, #2 + str r1, [sp, #0x10] +_022559B8: + ldr r5, [sp, #0x10] + cmp r3, #0 + blt _022559E2 + add r0, r5, #0 + mov r1, #0 + strh r1, [r0] + mov r1, #0xa + add r5, r0, #4 + strh r1, [r0, #2] + add r0, r3, #0 + sub r3, r3, #1 + cmp r0, #0 + beq _02255A4E + mov r0, #0 +_022559D4: + add r1, r3, #0 + strh r0, [r5] + add r5, r5, #2 + sub r3, r3, #1 + cmp r1, #0 + bne _022559D4 + b _02255A4E +_022559E2: + neg r1, r3 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #0x14] + ldr r1, [sp, #4] + cmp r1, #0 + ble _02255A40 + ldr r4, _02255AD0 ; =0x04000280 + sub r0, r0, #1 + mov lr, r0 + lsr r3, r4, #0xb + lsr r2, r4, #0xb +_022559FA: + mov r0, #2 + strh r0, [r4] + ldr r0, _02255AD4 ; =0x04000290 + mov r1, lr + str r6, [r0] + str r7, [r0, #4] + ldr r0, [sp, #0x14] + sub r0, r1, r0 + lsl r1, r0, #3 + ldr r0, _02255AD8 ; =0x022560D0 + add r6, r0, r1 + ldr r1, [r0, r1] + ldr r6, [r6, #4] + ldr r0, _02255ADC ; =0x04000298 + str r1, [r0] + str r6, [r0, #4] +_02255A1A: + ldrh r0, [r4] + tst r0, r3 + bne _02255A1A + ldr r0, _02255AE0 ; =0x040002A0 + ldr r0, [r0] + strh r0, [r5] + add r5, r5, #2 +_02255A28: + ldrh r0, [r4] + tst r0, r2 + bne _02255A28 + ldr r0, _02255AE4 ; =0x040002A8 + ldr r1, [sp, #4] + ldr r6, [r0] + ldr r7, [r0, #4] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r1 + blt _022559FA +_02255A40: + ldr r0, [sp] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _02255A4E + mov r0, #0xa + strh r0, [r5] + add r5, r5, #2 +_02255A4E: + ldr r0, [sp, #0x10] + sub r1, r5, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, [sp, #8] + cmp r1, r0 + bhs _02255AC0 + sub r0, r0, r1 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + cmp r0, #0 + ble _02255AC0 + ldr r4, _02255AD0 ; =0x04000280 + sub r0, r0, #1 + str r0, [sp, #0xc] + lsr r3, r4, #0xb + lsr r2, r4, #0xb +_02255A76: + mov r0, #2 + strh r0, [r4] + ldr r0, _02255AD4 ; =0x04000290 + ldr r1, [sp, #0xc] + str r6, [r0] + str r7, [r0, #4] + ldr r0, [sp, #0x1c] + ldr r6, _02255AD8 ; =0x022560D0 + sub r0, r1, r0 + lsl r1, r0, #3 + ldr r0, _02255AD8 ; =0x022560D0 + add r0, r0, r1 + ldr r1, [r6, r1] + ldr r0, [r0, #4] + ldr r6, _02255ADC ; =0x04000298 + str r1, [r6] + add r1, r6, #0 + str r0, [r1, #4] +_02255A9A: + ldrh r0, [r4] + tst r0, r3 + bne _02255A9A + ldr r0, _02255AE0 ; =0x040002A0 + ldr r0, [r0] + strh r0, [r5] + add r5, r5, #2 +_02255AA8: + ldrh r0, [r4] + tst r0, r2 + bne _02255AA8 + ldr r0, _02255AE4 ; =0x040002A8 + ldr r1, [sp, #0x18] + ldr r6, [r0] + ldr r7, [r0, #4] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + blt _02255A76 +_02255AC0: + mov r0, #0xd + strh r0, [r5] + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255ACC: .word 0x022560D8 +_02255AD0: .word 0x04000280 +_02255AD4: .word 0x04000290 +_02255AD8: .word 0x022560D0 +_02255ADC: .word 0x04000298 +_02255AE0: .word 0x040002A0 +_02255AE4: .word 0x040002A8 + thumb_func_end MOD23_022558EC + + thumb_func_start MOD23_02255AE8 +MOD23_02255AE8: ; 0x02255AE8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + lsl r5, r2, #3 + ldr r2, _02255B14 ; =0x022560D0 + add r3, r2, r5 + ldr r2, [r2, r5] + ldr r3, [r3, #4] + bl _ll_udiv + ldrb r2, [r4, #9] + cmp r2, #1 + bne _02255B10 + mov r2, #0 + mvn r2, r2 + add r3, r2, #0 + bl _ll_mul +_02255B10: + pop {r3, r4, r5, pc} + nop +_02255B14: .word 0x022560D0 + thumb_func_end MOD23_02255AE8 + + thumb_func_start MOD23_02255B18 +MOD23_02255B18: ; 0x02255B18 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r2, [sp] + mov r0, #0xa + ldr r5, [r2] + ldr r6, [r2, #4] + mov r2, #0xa + mov r1, #0 + mov r4, #1 + mov r3, #0 + sub r2, r5, r2 + mov ip, r6 + mov r2, ip + sbc r2, r3 + blo _02255B52 + ldr r2, [sp] + ldrb r7, [r2, #0xa] +_02255B3A: + add r4, r4, #1 + cmp r4, r7 + bhi _02255B52 + mov r2, #0xa + mov r3, #0 + bl _ll_mul + sub r2, r5, r0 + mov ip, r6 + mov r2, ip + sbc r2, r1 + bhs _02255B3A +_02255B52: + ldr r0, [sp] + ldrb r0, [r0, #8] + cmp r4, r0 + bls _02255B5E + sub r4, r4, r0 + b _02255B60 +_02255B5E: + mov r4, #1 +_02255B60: + ldr r0, [sp] + ldrb r0, [r0, #9] + add r0, r4, r0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD23_02255B18 + + thumb_func_start MOD23_02255B68 +MOD23_02255B68: ; 0x02255B68 + push {r4, lr} + add r4, r0, #0 + bl MOD23_02255B18 + ldrb r1, [r4, #8] + cmp r1, #0 + beq _02255B7A + add r1, r1, #1 + add r0, r0, r1 +_02255B7A: + pop {r4, pc} + thumb_func_end MOD23_02255B68 + + thumb_func_start MOD23_02255B7C +MOD23_02255B7C: ; 0x02255B7C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02255C02 + ldr r5, _02255C5C ; =0x04000280 + ldr r2, [r4] + add r3, r5, #0 + ldr r1, [r4, #4] + mov r0, #1 + strh r0, [r5] + add r3, #0x10 + str r2, [r3] + add r0, r5, #0 + str r1, [r3, #4] + add r0, #0x18 + mov r2, #0xa + mov r1, #0 + str r2, [r0] + str r1, [r0, #4] + add r1, r4, #0 + mov ip, r0 + add r1, #8 + b _02255BE4 +_02255BAC: + mov r0, #2 + lsl r0, r0, #0xe +_02255BB0: + ldrh r2, [r5] + tst r2, r0 + bne _02255BB0 + ldr r0, _02255C60 ; =0x040002A0 + ldr r2, _02255C60 ; =0x040002A0 + ldr r0, [r0] + ldr r2, [r2, #4] + str r0, [r4] + str r2, [r4, #4] + ldr r6, [r4] + mov r0, #1 + strh r0, [r5] + str r6, [r3] + str r2, [r3, #4] + mov r2, #0xa + mov r0, ip + str r2, [r0] + mov r2, #0 + mov r0, ip + str r2, [r0, #4] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02255C02 +_02255BE4: + ldrh r2, [r5] + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r2 + bne _02255BE4 + ldr r0, _02255C64 ; =0x040002A8 + mov r7, #0 + ldr r6, [r0] + ldr r2, [r0, #4] + mov r0, #0 + eor r0, r2 + add r2, r6, #0 + eor r2, r7 + orr r0, r2 + beq _02255BAC +_02255C02: + add r0, r4, #0 + bl MOD23_02255B18 + ldrb r2, [r4, #8] + cmp r2, #0 + beq _02255C58 + add r1, r2, #1 + add r1, r0, r1 + ldrb r0, [r4, #0xa] + cmp r1, r0 + bls _02255C58 + sub r1, r1, r0 + cmp r1, r2 + bhi _02255C58 + ldr r5, [r4] + ldr r3, [r4, #4] + ldr r0, _02255C5C ; =0x04000280 + mov r2, #1 + strh r2, [r0] + add r2, r0, #0 + add r2, #0x10 + str r5, [r2] + str r3, [r2, #4] + ldr r2, _02255C68 ; =0x022560D0 + lsl r3, r1, #3 + ldr r5, [r2, r3] + add r2, r0, #0 + add r2, #0x18 + mov r3, #0 + str r5, [r2] + str r3, [r2, #4] + lsr r2, r0, #0xb +_02255C42: + ldrh r3, [r0] + tst r3, r2 + bne _02255C42 + ldr r0, _02255C60 ; =0x040002A0 + ldr r2, [r0] + ldr r0, [r0, #4] + str r2, [r4] + str r0, [r4, #4] + ldrb r0, [r4, #8] + sub r0, r0, r1 + strb r0, [r4, #8] +_02255C58: + pop {r3, r4, r5, r6, r7, pc} + nop +_02255C5C: .word 0x04000280 +_02255C60: .word 0x040002A0 +_02255C64: .word 0x040002A8 +_02255C68: .word 0x022560D0 + thumb_func_end MOD23_02255B7C + + thumb_func_start MOD23_02255C6C +MOD23_02255C6C: ; 0x02255C6C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + ldmia r6!, {r0, r1} + add r5, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + add r4, r3, #0 + str r0, [r2] + ldmia r7!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r7] + str r0, [r2] + ldrb r1, [r5, #8] + ldrb r0, [r4, #8] + cmp r1, r0 + bhs _02255C96 + add r0, r5, #0 + add r5, r4, #0 + add r4, r0, #0 +_02255C96: + ldrb r3, [r5, #8] + ldrb r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + sub r2, r3, r2 + lsl r6, r2, #3 + ldr r2, _02255CB8 ; =0x022560D0 + add r3, r2, r6 + ldr r2, [r2, r6] + ldr r3, [r3, #4] + bl _ll_mul + str r0, [r4] + str r1, [r4, #4] + ldrb r0, [r5, #8] + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255CB8: .word 0x022560D0 + thumb_func_end MOD23_02255C6C + + .section .data + ; 0x02255CBC + .incbin "baserom.nds", 0x28807C, 0x484 |