.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 .rodata ; 0x02255CBC .incbin "baserom.nds", 0x28807C, 0x46C ; .section .sinit .global SDK_OVERLAY.MODULE_23.SINIT_START .global SDK_OVERLAY.MODULE_23.SINIT_END SDK_OVERLAY.MODULE_23.SINIT_START: .word MOD23_02254840 .word 0 SDK_OVERLAY.MODULE_23.SINIT_END: