diff options
author | red031000 <rubenru09@aol.com> | 2021-08-16 21:43:23 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2021-08-16 21:43:23 +0100 |
commit | 6d864e78e737cec5387da17e5062b9e64bcec5eb (patch) | |
tree | 8eb3e70a0779cc67646fd883cf49f460f7585174 | |
parent | 93e1e9884e1b857bf32b4db0a718510790840f88 (diff) |
another file
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/global.inc | 81 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 2032 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021DEB90.s | 2044 |
4 files changed, 2126 insertions, 2032 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ed1a7956..5b9fee47 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -672,6 +672,7 @@ Overlay MODULE_04 Object mod04_021DDF40.o Object mod04_021DE2D0.o Object mod04_021DE89C.o + Object mod04_021DEB90.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index e4276c87..f08623d5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6185,8 +6185,20 @@ .extern MOD04_021DE9F4 .extern MOD04_021DEB0C .extern MOD04_021DEB54 +.extern MOD04_021DF5F0 +.extern MOD04_021DF638 +.extern MOD04_021DF648 +.extern MOD04_021DF6BC +.extern MOD04_021DF704 +.extern MOD04_021DF748 +.extern MOD04_021DF760 +.extern MOD04_021DF7C4 +.extern MOD04_021DF88C +.extern MOD04_021DF8A8 +.extern MOD04_021DF8F4 .extern MOD04_021DF95C .extern MOD04_021DF978 +.extern MOD04_021DF9D4 .extern MOD04_021DFA40 .extern MOD04_021DFAF8 .extern MOD04_021DFB20 @@ -6196,10 +6208,54 @@ .extern MOD04_021DFF74 .extern MOD04_021E0200 .extern MOD04_021E0374 +.extern MOD04_021E0E48 +.extern MOD04_021E0EAC +.extern MOD04_021E0F1C +.extern MOD04_021E1034 +.extern MOD04_021E1074 +.extern MOD04_021E1D90 +.extern MOD04_021E1E30 +.extern MOD04_021E1ED4 +.extern MOD04_021E1F18 +.extern MOD04_021E1F84 +.extern MOD04_021E1FE4 +.extern MOD04_021E2068 +.extern MOD04_021E20C8 +.extern MOD04_021E2114 +.extern MOD04_021E2174 +.extern MOD04_021E2228 +.extern MOD04_021E234C .extern MOD04_021E242C .extern MOD04_021E2454 .extern MOD04_021E2578 +.extern MOD04_021E852C +.extern MOD04_021E854C +.extern MOD04_021E85D4 +.extern MOD04_021E86A4 +.extern MOD04_021E874C +.extern MOD04_021E8780 +.extern MOD04_021E87D8 +.extern MOD04_021E8804 +.extern MOD04_021E8830 +.extern MOD04_021E8A50 +.extern MOD04_021E8A74 +.extern MOD04_021E8DC0 +.extern MOD04_021E8E08 +.extern MOD04_021E8EF4 +.extern MOD04_021E8F80 +.extern MOD04_021E9204 +.extern MOD04_021E9464 +.extern MOD04_021E9568 +.extern MOD04_021E9FD0 +.extern MOD04_021EA138 +.extern MOD04_021EA368 .extern MOD04_021EA530 +.extern MOD04_021EA9C4 +.extern MOD04_021EA9D8 +.extern MOD04_021EAA64 +.extern MOD04_021EAC1C +.extern MOD04_021EAC5C +.extern MOD04_021EACB4 .extern MOD04_021EACF8 .extern MOD04_021EADD8 .extern MOD04_021EADF8 @@ -6220,6 +6276,8 @@ .extern MOD04_021EBB80 .extern MOD04_021EBC60 .extern MOD04_021EE5F4 +.extern MOD04_021EE6A0 +.extern MOD04_021EE898 .extern MOD04_021EEFA8 .extern MOD04_021EEFFC .extern MOD04_021EF06C @@ -6241,6 +6299,27 @@ .extern MOD04_021F024C .extern MOD04_021F0250 .extern MOD04_021F025C +.extern MOD04_021F05F4 +.extern MOD04_021F0664 +.extern MOD04_021F06E4 +.extern MOD04_021F0EB0 +.extern MOD04_021F0F18 +.extern MOD04_021F0F64 +.extern MOD04_021F0F94 +.extern MOD04_021FBE7C +.extern MOD04_021FD3C4 +.extern MOD04_021FD434 +.extern MOD04_021FD43C +.extern MOD04_021FD45C +.extern MOD04_021FD488 +.extern MOD04_021FD6C8 +.extern MOD04_021FD704 +.extern MOD04_021FD71C +.extern MOD04_021FFEB0 +.extern MOD04_02200D6C +.extern MOD04_02202280 +.extern MOD04_02202308 +.extern MOD04_02203E80 .extern MOD04_022069DC .extern MOD04_02206E6C .extern MOD04_02206EFC @@ -8316,6 +8395,8 @@ .extern UNK04_0221048C .extern UNK04_022104F8 .extern UNK04_022104FC +.extern UNK04_02210F94 +.extern UNK04_02211094 .extern UNK05_021F64C8 .extern UNK05_021F8B84 .extern UNK05_021F8B88 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index ec23a828..5d87ee03 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,2002 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DEB90 -MOD04_021DEB90: ; 0x021DEB90 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021FD43C - bl MOD04_021EFB28 - ldr r2, _021DEBCC ; =UNK04_02210540 - ldr r1, _021DEBD0 ; =0xFFFE8515 - str r0, [r2] - mov r0, #9 - bl MOD04_021DD6B0 - ldr r0, _021DEBD4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DEBCC: .word UNK04_02210540 -_021DEBD0: .word 0xFFFE8515 -_021DEBD4: .word UNK04_0221053C - arm_func_end MOD04_021DEB90 - - arm_func_start MOD04_021DEBD8 -MOD04_021DEBD8: ; 0x021DEBD8 - ldr ip, _021DEBE0 ; =MOD04_021EAC1C - bx ip - .align 2, 0 -_021DEBE0: .word MOD04_021EAC1C - arm_func_end MOD04_021DEBD8 - - arm_func_start MOD04_021DEBE4 -MOD04_021DEBE4: ; 0x021DEBE4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r7, #0 - mov fp, r0 - mov sb, r1 - mov sl, r7 - bl MOD04_021E852C - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #4 - addls pc, pc, sb, lsl #2 - b _021DEC48 -_021DEC18: ; jump table - b _021DEC2C ; case 0 - b _021DEC2C ; case 1 - b _021DEC34 ; case 2 - b _021DEC34 ; case 3 - b _021DEC40 ; case 4 -_021DEC2C: - mov r4, r7 - b _021DEC48 -_021DEC34: - mov r4, #6 - ldr r6, _021DEF4C ; =0xFFFFE250 - b _021DEC48 -_021DEC40: - ldr r6, _021DEF50 ; =0xFFFFE24F - mov r4, #9 -_021DEC48: - cmp r4, #0 - bne _021DED00 - mov r0, fp - bl MOD04_021FD3C4 - movs r7, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _021DEF54 ; =UNK04_0221053C - ldrb r8, [r7, #1] - ldr r1, [r0] - mov r5, #1 - mov r0, r5,lsl r8 - ldr r1, [r1, #0x644] - ands r0, r1, r0 - mov r0, r8 - moveq r5, #0 - bl MOD04_021EA9D8 - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - bne _021DECA8 - cmp sb, #0 - beq _021DECBC -_021DECA8: - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DECC0 - cmp r8, #0 - bne _021DECC0 -_021DECBC: - mov sl, #1 -_021DECC0: - mov r0, r8 - bl MOD04_021DF56C - ldr r1, _021DEF54 ; =UNK04_0221053C - ldrb r7, [r7] - ldr r2, _021DEF58 ; =UNK04_02210544 - mov fp, #0 - ldr r3, [r1] - str fp, [r2, r7, lsl #2] - ldrb r2, [r3, #0x361] - mov r7, r0 - sub r0, r2, #1 - strb r0, [r3, #0x361] - ldr r1, [r1] - ldrb r0, [r1, #0x368] - sub r0, r0, #1 - strb r0, [r1, #0x368] -_021DED00: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DED58 - ldr r0, [r1, #0x24] - cmp r0, #6 - bne _021DED58 - cmp r5, #0 - bne _021DED58 - ldrb r0, [r1, #0x369] - cmp r0, #2 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r4, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_021E85D4 - mov r0, r7 - bl MOD04_021E8A50 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DED58: - mov r0, r4 - mov r1, r6 - mov r2, r7 - bl MOD04_021E8A74 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r4, #0 - beq _021DED90 - mov r0, r4 - mov r1, r6 - bl MOD04_021DD6B0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DED90: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DEE04 - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DEDBC - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DEE04 -_021DEDBC: - ldr r2, _021DEF54 ; =UNK04_0221053C - ldr r1, [r2] - ldrb r0, [r1, #0x361] - add r6, r0, #2 - add r3, r1, r6, lsl #2 - ldr r3, [r3, #0x448] - cmp r3, #0 - beq _021DEE04 - add r3, r1, r6 - ldrb r3, [r3, #0x624] - add r0, r0, #1 - add r0, r1, r0 - strb r3, [r0, #0x624] - ldr r0, [r2] - ldrb r1, [r0, #0x361] - add r0, r1, #1 - add r1, r1, #3 - bl MOD04_021E8830 -_021DEE04: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - bne _021DEE4C - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DEE2C - bl MOD04_021E85D4 - b _021DEE68 -_021DEE2C: - ldrb r0, [r1, #0x361] - cmp r0, #0 - bne _021DEE68 - ldr r1, _021DEF5C ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 - b _021DEE68 -_021DEE4C: - ldrb r0, [r1, #0x361] - cmp r0, #0 - bne _021DEE68 - ldr r1, _021DEF5C ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 -_021DEE68: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #0 - beq _021DEE88 - ldrb r0, [r1, #0x369] - cmp r0, #1 - bne _021DEEA4 -_021DEE88: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r2, [r0] - ldrb r1, [r2, #0x368] - strb r1, [r2, #0x36a] - ldr r0, [r0] - ldr r0, [r0, #0x364] - bl MOD04_02202308 -_021DEEA4: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r6, [r0] - ldr r0, [r6, #0x90] - cmp r0, #0 - beq _021DEF00 - cmp r5, #0 - beq _021DEF00 - cmp sb, #0 - moveq r5, #1 - mov r0, r7 - movne r5, #0 - bl MOD04_021E1F18 - str r0, [sp] - ldr r1, [r6, #0x94] - ldr r0, _021DEF54 ; =UNK04_0221053C - str r1, [sp, #4] - ldr r1, [r0] - mov r0, r4 - ldr r4, [r1, #0x90] - mov r1, r5 - mov r2, sl - mov r3, r8 - blx r4 -_021DEF00: - ldr r0, _021DEF54 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _021DEF24 - ldrb r0, [r1, #0x369] - cmp r0, #2 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DEF24: - ldrb r0, [r1, #0x361] - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl MOD04_02200D6C - bl MOD04_021E8DC0 - mov r0, #3 - bl MOD04_021DF5CC - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DEF4C: .word 0xFFFFE250 -_021DEF50: .word 0xFFFFE24F -_021DEF54: .word UNK04_0221053C -_021DEF58: .word UNK04_02210544 -_021DEF5C: .word UNK04_0220D334 - arm_func_end MOD04_021DEBE4 - - arm_func_start MOD04_021DEF60 -MOD04_021DEF60: ; 0x021DEF60 - ldr ip, _021DEF68 ; =MOD04_021EAC5C - bx ip - .align 2, 0 -_021DEF68: .word MOD04_021EAC5C - arm_func_end MOD04_021DEF60 - - arm_func_start MOD04_021DEF6C -MOD04_021DEF6C: ; 0x021DEF6C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - add r4, sp, #0 - mov r3, #0 - strb r3, [r4] - strb r3, [r4, #1] - strb r3, [r4, #2] - strb r3, [r4, #3] - strb r3, [r4, #4] - strb r3, [r4, #5] - strb r3, [r4, #6] - strb r3, [r4, #7] - strb r3, [r4, #8] - strb r3, [r4, #9] - strb r3, [r4, #0xa] - mov r5, r1 - strb r3, [r4, #0xb] - ldr r4, [r5, #8] - mov r6, r0 - bl MOD04_021E2068 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0C8 ; =UNK04_0220D338 - bl strlen - mov r2, r0 - ldr r1, _021DF0C8 ; =UNK04_0220D338 - mov r0, r4 - bl memcmp - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0C8 ; =UNK04_0220D338 - bl strlen - add r4, r4, r0 - mov r0, r4 - mov r1, #0x76 - bl strchr - sub r7, r0, r4 - add r0, sp, #0 - mov r1, r4 - mov r2, r7 - bl strncpy - cmp r7, #0xa - addhi sp, sp, #0xc - ldmhiia sp!, {r4, r5, r6, r7, pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0CC ; =UNK04_0220D340 - add r1, r7, #1 - add r4, r4, r1 - bl strlen - mov r2, r0 - ldr r1, _021DF0CC ; =UNK04_0220D340 - mov r0, r4 - bl memcmp - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF0D0 ; =UNK04_0221053C - ldr r1, [r0] - ldr r0, [r1, #0x24] - cmp r0, #5 - beq _021DF0A8 - cmp r0, #6 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DF0A8 - ldrb r0, [r1, #0x369] - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} -_021DF0A8: - ldr r0, _021DF0CC ; =UNK04_0220D340 - bl strlen - add r2, r4, r0 - ldr r1, [r5] - mov r0, r6 - bl MOD04_021E8EF4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DF0C8: .word UNK04_0220D338 -_021DF0CC: .word UNK04_0220D340 -_021DF0D0: .word UNK04_0221053C - arm_func_end MOD04_021DEF6C - - arm_func_start MOD04_021DF0D4 -MOD04_021DF0D4: ; 0x021DF0D4 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, [r1, #4] - ldr r0, _021DF120 ; =0x00000603 - cmp r1, r0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DF124 ; =0x00000901 - cmp r1, r0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DF128 ; =0x00000B01 - cmp r1, r0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - mov r0, #3 - bl MOD04_021DF414 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF120: .word 0x00000603 -_021DF124: .word 0x00000901 -_021DF128: .word 0x00000B01 - arm_func_end MOD04_021DF0D4 - - arm_func_start MOD04_021DF12C -MOD04_021DF12C: ; 0x021DF12C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021DF174 - cmp r6, #0 - beq _021DF174 - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x4f4] - cmp r0, #0 - bne _021DF1D8 - bl MOD04_021E8DC0 - mov r0, #3 - bl MOD04_021DF5CC - b _021DF1D8 -_021DF174: - cmp r7, #0 - bne _021DF1D8 - mov r0, #6 - bl MOD04_021DF5CC - ldr r1, _021DF2AC ; =UNK04_0221053C - mov r0, #0 - ldr r3, [r1] - ldrb r1, [r3, #0x361] - cmp r1, #0 - blt _021DF1D8 - ldr r2, [r3, #0x64] -_021DF1A0: - add r1, r3, r0, lsl #2 - ldr r1, [r1, #0x448] - cmp r2, r1 - bne _021DF1C8 - ldr r1, _021DF2AC ; =UNK04_0221053C - ldr r1, [r1] - add r0, r1, r0 - ldrb r0, [r0, #0x624] - strb r0, [r1, #0x2c] - b _021DF1D8 -_021DF1C8: - ldrb r1, [r3, #0x361] - add r0, r0, #1 - cmp r0, r1 - ble _021DF1A0 -_021DF1D8: - ldr r1, _021DF2AC ; =UNK04_0221053C - ldr r0, _021DF2B0 ; =0x00000624 - ldr r2, [r1] - ldrb r1, [r2, #0x361] - add r0, r2, r0 - add r1, r1, #1 - bl MOD04_021DF530 - ldr r1, _021DF2AC ; =UNK04_0221053C - ldr r1, [r1] - str r0, [r1, #0x644] - bl MOD04_021E8780 - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DF224 - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DF258 -_021DF224: - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r1, [sp, #0x20] - ldr r3, [r0] - mov r0, r7 - str r1, [sp] - ldr r2, [r3, #0x8c] - mov r1, r6 - str r2, [sp, #4] - ldr r6, [r3, #0x88] - mov r2, r5 - mov r3, r4 - blx r6 - b _021DF26C -_021DF258: - ldr r2, [r1, #0x84] - ldr r3, [r1, #0x80] - mov r0, r7 - mov r1, r6 - blx r3 -_021DF26C: - cmp r7, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DF2AC ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r0, #0x24] - cmp r0, #5 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r0, #3 - bl MOD04_021DF5CC - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DF2AC: .word UNK04_0221053C -_021DF2B0: .word 0x00000624 - arm_func_end MOD04_021DF12C - - arm_func_start MOD04_021DF2B4 -MOD04_021DF2B4: ; 0x021DF2B4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021DF300 ; =UNK04_0221053C - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - ldr r0, [r0, #0x28] - cmp r0, #4 - beq _021DF2DC - bl MOD04_021DF5CC -_021DF2DC: - ldr r1, _021DF300 ; =UNK04_0221053C - mov r0, r5 - ldr r3, [r1] - mov r1, r4 - ldr r2, [r3, #0x7c] - ldr r3, [r3, #0x78] - blx r3 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DF300: .word UNK04_0221053C - arm_func_end MOD04_021DF2B4 - - arm_func_start MOD04_021DF304 -MOD04_021DF304: ; 0x021DF304 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - movs r5, r0 - mov r4, r1 - bne _021DF334 - ldr r1, _021DF36C ; =UNK04_0221053C - mov r0, #3 - ldr r1, [r1] - str r4, [r1, #0x64] - bl MOD04_021DF5CC - bl MOD04_021E1ED4 - b _021DF33C -_021DF334: - mov r0, #0 - bl MOD04_021DF5CC -_021DF33C: - ldr r0, _021DF36C ; =UNK04_0221053C - ldr r0, [r0] - ldr r3, [r0, #0x70] - cmp r3, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r2, [r0, #0x74] - mov r0, r5 - mov r1, r4 - blx r3 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DF36C: .word UNK04_0221053C - arm_func_end MOD04_021DF304 - - arm_func_start MOD04_021DF370 -MOD04_021DF370: ; 0x021DF370 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _021DF3F4 -_021DF38C: ; jump table - b _021DF3F4 ; case 0 - b _021DF3AC ; case 1 - b _021DF3B8 ; case 2 - b _021DF3C8 ; case 3 - b _021DF3D4 ; case 4 - b _021DF3B8 ; case 5 - b _021DF3E0 ; case 6 - b _021DF3EC ; case 7 -_021DF3AC: - mov r0, #9 - mvn r2, #0 - b _021DF3F4 -_021DF3B8: - mov r0, #0 - mov r2, r0 - mov r4, r0 - b _021DF3F4 -_021DF3C8: - mov r0, #6 - mvn r2, #9 - b _021DF3F4 -_021DF3D4: - mov r0, #6 - mvn r2, #0x1d - b _021DF3F4 -_021DF3E0: - mov r0, #6 - mvn r2, #0x45 - b _021DF3F4 -_021DF3EC: - mov r0, #6 - mvn r2, #0x4f -_021DF3F4: - cmp r0, #0 - beq _021DF408 - ldr r1, _021DF410 ; =0xFFFEFA48 - add r1, r2, r1 - bl MOD04_021E0EAC -_021DF408: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DF410: .word 0xFFFEFA48 - arm_func_end MOD04_021DF370 - - arm_func_start MOD04_021DF414 -MOD04_021DF414: ; 0x021DF414 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r6, #4 - addls pc, pc, r6, lsl #2 - b _021DF470 -_021DF430: ; jump table - b _021DF470 ; case 0 - b _021DF444 ; case 1 - b _021DF450 ; case 2 - b _021DF45C ; case 3 - b _021DF468 ; case 4 -_021DF444: - mov r4, #9 - mvn r5, #0 - b _021DF470 -_021DF450: - mov r4, #9 - mvn r5, #1 - b _021DF470 -_021DF45C: - mov r4, #6 - mvn r5, #9 - b _021DF470 -_021DF468: - mov r4, #6 - mvn r5, #0x13 -_021DF470: - ldr r0, _021DF51C ; =UNK04_0221053C - ldr r1, [r0] - ldr r0, [r1, #0x24] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _021DF500 -_021DF488: ; jump table - b _021DF500 ; case 0 - b _021DF4A0 ; case 1 - b _021DF4B8 ; case 2 - b _021DF500 ; case 3 - b _021DF4F4 ; case 4 - b _021DF4DC ; case 5 -_021DF4A0: - ldr r1, _021DF520 ; =0xFFFF11B8 - mov r0, r4 - add r5, r5, r1 - mov r1, r5 - bl MOD04_021E0EAC - b _021DF508 -_021DF4B8: - ldr r1, [r1, #0x9c] - ldr r0, _021DF520 ; =0xFFFF11B8 - cmp r1, #1 - add r5, r5, r0 - bge _021DF508 - mov r0, r4 - mov r1, r5 - bl MOD04_021E0EAC - b _021DF508 -_021DF4DC: - ldr r1, _021DF524 ; =0xFFFEC398 - mov r0, r4 - add r5, r5, r1 - mov r1, r5 - bl MOD04_021E8E08 - b _021DF508 -_021DF4F4: - ldr r0, _021DF528 ; =0xFFFEEAA8 - add r5, r5, r0 - b _021DF508 -_021DF500: - ldr r0, _021DF52C ; =0xFFFE9C88 - add r5, r5, r0 -_021DF508: - mov r0, r4 - mov r1, r5 - bl MOD04_021E2114 - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DF51C: .word UNK04_0221053C -_021DF520: .word 0xFFFF11B8 -_021DF524: .word 0xFFFEC398 -_021DF528: .word 0xFFFEEAA8 -_021DF52C: .word 0xFFFE9C88 - arm_func_end MOD04_021DF414 - - arm_func_start MOD04_021DF530 -MOD04_021DF530: ; 0x021DF530 - stmdb sp!, {lr} - sub sp, sp, #4 - mov lr, #0 - mov ip, lr - cmp r1, #0 - ble _021DF560 - mov r3, #1 -_021DF54C: - ldrb r2, [r0, ip] - add ip, ip, #1 - cmp ip, r1 - orr lr, lr, r3, lsl r2 - blt _021DF54C -_021DF560: - mov r0, lr - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DF530 - - arm_func_start MOD04_021DF56C -MOD04_021DF56C: ; 0x021DF56C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - add r0, sp, #0 - bl MOD04_021E874C - mov r1, r0 - cmp r1, #0 - mov r0, #0 - ble _021DF5B0 - ldr r3, [sp] -_021DF594: - ldrb r2, [r3] - cmp r4, r2 - beq _021DF5B0 - add r0, r0, #1 - cmp r0, r1 - add r3, r3, #1 - blt _021DF594 -_021DF5B0: - cmp r0, r1 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021E8830 - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DF56C - - arm_func_start MOD04_021DF5CC -MOD04_021DF5CC: ; 0x021DF5CC - ldr r1, _021DF5E8 ; =UNK04_0221053C - ldr r3, [r1] - ldr r2, [r3, #0x24] - str r2, [r3, #0x28] - ldr r1, [r1] - str r0, [r1, #0x24] - bx lr - .align 2, 0 -_021DF5E8: .word UNK04_0221053C - arm_func_end MOD04_021DF5CC - - arm_func_start MOD04_021DF5EC -MOD04_021DF5EC: ; 0x021DF5EC - bx lr - arm_func_end MOD04_021DF5EC - - arm_func_start MOD04_021DF5F0 -MOD04_021DF5F0: ; 0x021DF5F0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #0 - ldr r4, _021DF634 ; =UNK04_02210544 -_021DF600: - ldr r0, [r4, r5, lsl #2] - cmp r0, #0 - beq _021DF620 - bl MOD04_021FD3C4 - ldrb r0, [r0, #1] - cmp r6, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_021DF620: - add r5, r5, #1 - cmp r5, #0x20 - blt _021DF600 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DF634: .word UNK04_02210544 - arm_func_end MOD04_021DF5F0 - - arm_func_start MOD04_021DF638 -MOD04_021DF638: ; 0x021DF638 - ldr r1, _021DF644 ; =UNK04_022105C4 - add r0, r1, r0, lsl #3 - bx lr - .align 2, 0 -_021DF644: .word UNK04_022105C4 - arm_func_end MOD04_021DF638 - - arm_func_start MOD04_021DF648 -MOD04_021DF648: ; 0x021DF648 - stmdb sp!, {lr} - sub sp, sp, #4 - cmp r1, #0 - mov ip, #0 - ble _021DF684 - ldr r2, _021DF6B8 ; =UNK04_0221053C - ldr r3, [r2] -_021DF664: - add r2, r3, ip, lsl #2 - ldr r2, [r2, #0x448] - cmp r0, r2 - beq _021DF684 - add r2, ip, #1 - and ip, r2, #0xff - cmp ip, r1 - blt _021DF664 -_021DF684: - cmp ip, r1 - addge sp, sp, #4 - movge r0, #0 - ldmgeia sp!, {pc} - ldr r0, _021DF6B8 ; =UNK04_0221053C - ldr r0, [r0] - add r0, r0, ip - ldrb r0, [r0, #0x624] - bl MOD04_021DF760 - bl MOD04_021DF730 - bl MOD04_021DF6BC - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF6B8: .word UNK04_0221053C - arm_func_end MOD04_021DF648 - - arm_func_start MOD04_021DF6BC -MOD04_021DF6BC: ; 0x021DF6BC - ldr r1, _021DF6C8 ; =UNK04_02210544 - add r0, r1, r0, lsl #2 - bx lr - .align 2, 0 -_021DF6C8: .word UNK04_02210544 - arm_func_end MOD04_021DF6BC - - arm_func_start MOD04_021DF6CC -MOD04_021DF6CC: ; 0x021DF6CC - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DF6FC ; =UNK04_02210544 - mov r0, #0 - mov r2, #0x80 - bl MIi_CpuClear32 - ldr r1, _021DF700 ; =UNK04_022105C4 - mov r0, #0 - mov r2, #0x100 - bl MIi_CpuClear32 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF6FC: .word UNK04_02210544 -_021DF700: .word UNK04_022105C4 - arm_func_end MOD04_021DF6CC - - arm_func_start MOD04_021DF704 -MOD04_021DF704: ; 0x021DF704 - ldr r2, _021DF72C ; =UNK04_02210544 - mov r0, #0 -_021DF70C: - ldr r1, [r2, r0, lsl #2] - cmp r1, #0 - bxeq lr - add r0, r0, #1 - cmp r0, #0x20 - blt _021DF70C - mvn r0, #0 - bx lr - .align 2, 0 -_021DF72C: .word UNK04_02210544 - arm_func_end MOD04_021DF704 - - arm_func_start MOD04_021DF730 -MOD04_021DF730: ; 0x021DF730 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021FD3C4 - ldrb r0, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DF730 - - arm_func_start MOD04_021DF748 -MOD04_021DF748: ; 0x021DF748 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021FD3C4 - ldrb r0, [r0, #1] - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DF748 - - arm_func_start MOD04_021DF760 -MOD04_021DF760: ; 0x021DF760 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _021DF7BC ; =UNK04_0221053C - mov r6, r0 - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, _021DF7C0 ; =UNK04_02210544 - mov r5, #0 -_021DF784: - ldr r0, [r4, r5, lsl #2] - cmp r0, #0 - beq _021DF7A8 - bl MOD04_021FD3C4 - ldrb r0, [r0, #1] - cmp r6, r0 - ldreq r0, _021DF7C0 ; =UNK04_02210544 - ldreq r0, [r0, r5, lsl #2] - ldmeqia sp!, {r4, r5, r6, pc} -_021DF7A8: - add r5, r5, #1 - cmp r5, #0x20 - blt _021DF784 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DF7BC: .word UNK04_0221053C -_021DF7C0: .word UNK04_02210544 - arm_func_end MOD04_021DF760 - - arm_func_start MOD04_021DF7C4 -MOD04_021DF7C4: ; 0x021DF7C4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _021DF87C ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #0x4000 - bl MOD04_021DE8C8 - add r0, r0, #0xc000 - mov r1, r0, lsl #0x10 - ldr r3, _021DF87C ; =UNK04_0221053C - mov r0, #0 - mov r2, r0 - mov r1, r1, lsr #0x10 - ldr r4, [r3] - bl MOD04_021FFEB0 - ldr r1, _021DF880 ; =MOD04_021DEB90 - ldr r2, _021DF87C ; =UNK04_0221053C - str r1, [sp] - mov r1, r0 - ldr r0, [r2] - ldr r2, [r4, #0x14] - ldr r3, [r4, #0x18] - bl MOD04_021FD71C - mov r4, r0 - bl MOD04_021DF370 - cmp r0, #0 - addne sp, sp, #8 - movne r0, r4 - ldmneia sp!, {r4, pc} - ldr r0, _021DF87C ; =UNK04_0221053C - ldr r1, _021DF884 ; =MOD04_021E9204 - ldr r0, [r0] - ldr r0, [r0] - bl MOD04_021FD6C8 - ldr r0, _021DF87C ; =UNK04_0221053C - ldr r1, _021DF888 ; =MOD04_021E9464 - ldr r0, [r0] - ldr r0, [r0] - bl MOD04_021FD434 - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DF87C: .word UNK04_0221053C -_021DF880: .word MOD04_021DEB90 -_021DF884: .word MOD04_021E9204 -_021DF888: .word MOD04_021E9464 - arm_func_end MOD04_021DF7C4 - - arm_func_start MOD04_021DF88C -MOD04_021DF88C: ; 0x021DF88C - ldr r0, _021DF8A4 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x24] - moveq r0, #0 - bx lr - .align 2, 0 -_021DF8A4: .word UNK04_0221053C - arm_func_end MOD04_021DF88C - - arm_func_start MOD04_021DF8A8 -MOD04_021DF8A8: ; 0x021DF8A8 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DF8F0 ; =UNK04_0221053C - ldr r2, [r1] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - mov r1, #1 - mov r1, r1,lsl r0 - ldr r2, [r2, #0x644] - ands r1, r2, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - bl MOD04_021DF5F0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF8F0: .word UNK04_0221053C - arm_func_end MOD04_021DF8A8 - - arm_func_start MOD04_021DF8F4 -MOD04_021DF8F4: ; 0x021DF8F4 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r2, _021DF954 ; =UNK04_0221053C - ldr r3, [r2] - cmp r3, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldr r1, _021DF958 ; =0x00000624 - add r1, r3, r1 - str r1, [r0] - ldr r2, [r2] - ldrb r1, [r2, #0x369] - cmp r1, #2 - beq _021DF93C - ldrb r1, [r2, #0x369] - cmp r1, #3 - bne _021DF948 -_021DF93C: - bl MOD04_021E86A4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021DF948: - bl MOD04_021E874C - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF954: .word UNK04_0221053C -_021DF958: .word 0x00000624 - arm_func_end MOD04_021DF8F4 - - arm_func_start MOD04_021DF95C -MOD04_021DF95C: ; 0x021DF95C - ldr r0, _021DF974 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - ldrneb r0, [r0, #0x2c] - moveq r0, #0 - bx lr - .align 2, 0 -_021DF974: .word UNK04_0221053C - arm_func_end MOD04_021DF95C - - arm_func_start MOD04_021DF978 -MOD04_021DF978: ; 0x021DF978 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DF9D0 ; =UNK04_0221053C - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021DF9B0 - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021DF9C0 -_021DF9B0: - bl MOD04_021E87D8 - add sp, sp, #4 - add r0, r0, #1 - ldmfd sp!, {pc} -_021DF9C0: - bl MOD04_021E8804 - add r0, r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DF9D0: .word UNK04_0221053C - arm_func_end MOD04_021DF978 - - arm_func_start MOD04_021DF9D4 -MOD04_021DF9D4: ; 0x021DF9D4 - stmdb sp!, {r4, lr} - ldr r1, _021DFA3C ; =UNK04_0221053C - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - beq _021DFA14 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFA14 - ldr r0, _021DFA3C ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #5 - beq _021DFA1C - cmp r0, #6 - beq _021DFA1C -_021DFA14: - mvn r0, #0 - ldmia sp!, {r4, pc} -_021DFA1C: - mov r0, r4 - bl MOD04_021DF760 - cmp r0, #0 - mvneq r0, #1 - ldmeqia sp!, {r4, pc} - bl MOD04_021FD488 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DFA3C: .word UNK04_0221053C - arm_func_end MOD04_021DF9D4 - - arm_func_start MOD04_021DFA40 -MOD04_021DFA40: ; 0x021DFA40 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DFAF0 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - beq _021DFA80 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFA80 - ldr r0, _021DFAF0 ; =UNK04_0221053C - ldr r2, [r0] - ldr r0, [r2, #0x24] - cmp r0, #5 - beq _021DFA8C - cmp r0, #6 - beq _021DFA8C -_021DFA80: - add sp, sp, #4 - mvn r0, #0 - ldmfd sp!, {pc} -_021DFA8C: - ldrb r0, [r2, #0x361] - cmp r0, #0 - bne _021DFAC0 - ldr r1, _021DFAF4 ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 - bl MOD04_02200D6C - mov r0, #3 - bl MOD04_021DF5CC - add sp, sp, #4 - mov r0, #1 - ldmfd sp!, {pc} -_021DFAC0: - mov r1, #1 - ldr r0, _021DFAF0 ; =UNK04_0221053C - strb r1, [r2, #0x2d] - ldr r0, [r0] - ldr r0, [r0] - bl MOD04_021FD45C - ldr r1, _021DFAF0 ; =UNK04_0221053C - mov r0, #0 - ldr r1, [r1] - strb r0, [r1, #0x2d] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DFAF0: .word UNK04_0221053C -_021DFAF4: .word UNK04_0220D334 - arm_func_end MOD04_021DFA40 - - arm_func_start MOD04_021DFAF8 -MOD04_021DFAF8: ; 0x021DFAF8 - ldr r2, _021DFB1C ; =UNK04_0221053C - ldr r3, [r2] - cmp r3, #0 - moveq r0, #0 - strne r0, [r3, #0x90] - ldrne r2, [r2] - movne r0, #1 - strne r1, [r2, #0x94] - bx lr - .align 2, 0 -_021DFB1C: .word UNK04_0221053C - arm_func_end MOD04_021DFAF8 - - arm_func_start MOD04_021DFB20 -MOD04_021DFB20: ; 0x021DFB20 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x224 - mvn ip, #0 - mov r7, r0 - mov r6, r1 - mov r4, r2 - mov r5, r3 - str ip, [sp, #8] - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFB60 - ldr r0, _021DFD04 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #3 - beq _021DFB6C -_021DFB60: - add sp, sp, #0x224 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DFB6C: - bl MOD04_021DF6CC - ldr r1, _021DFD04 ; =UNK04_0221053C - mov r0, #5 - ldr r2, [r1] - str r6, [r2, #0x88] - ldr r1, [r1] - str r4, [r1, #0x8c] - bl MOD04_021DF5CC - mov r0, r7 - bl MOD04_021E1F84 - movs r4, r0 - beq _021DFBB8 - ldr r0, _021DFD04 ; =UNK04_0221053C - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x1c - bl MOD04_021F05F4 - cmp r0, #0 - bne _021DFBC0 -_021DFBB8: - mov r5, #0xb - b _021DFC8C -_021DFBC0: - ldr r0, _021DFD04 ; =UNK04_0221053C - add r2, sp, #8 - ldr r0, [r0] - mov r1, r4 - add r0, r0, #0x1c - bl MOD04_021F0664 - ldr r0, _021DFD04 ; =UNK04_0221053C - ldr r1, [sp, #8] - ldr r0, [r0] - add r2, sp, #0x10 - add r0, r0, #0x1c - bl MOD04_021F06E4 - ldr r0, [sp, #0x14] - cmp r0, #6 - movne r5, #0xb - bne _021DFC8C - ldr r0, _021DFD08 ; =UNK04_0220D344 - mov r6, #0x30 - add r1, sp, #0xc - add r2, sp, #0x18 - mov r3, #0x2f - strb r6, [sp, #0xc] - bl MOD04_021DE9F4 - add r0, sp, #0xc - mov r1, #0 - mov r2, #0xa - bl strtoul - and r6, r0, #0xff - ldr r0, _021DFD0C ; =UNK04_0220D348 - add r1, sp, #0xc - add r2, sp, #0x18 - mov r3, #0x2f - bl MOD04_021DE9F4 - add r0, sp, #0xc - mov r1, #0 - mov r2, #0xa - bl strtoul - and r0, r0, #0xff - cmp r0, r6 - moveq r5, #0xd - beq _021DFC8C - ldr r6, [sp, #0x238] - ldr r1, _021DFD10 ; =MOD04_021DF12C - mov r0, r4 - mov r3, r5 - mov r2, #0 - str r6, [sp] - bl MOD04_021E9FD0 - add sp, sp, #0x224 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DFC8C: - mov r0, r5 - mov r1, #0 - bl MOD04_021DD6B0 - ldr r0, _021DFD04 ; =UNK04_0221053C - mov r1, #0 - ldr r4, [r0] - mov r0, r5 - str r1, [sp] - ldr r2, [r4, #0x8c] - mov r3, r1 - str r2, [sp, #4] - ldr r4, [r4, #0x88] - mov r2, #1 - blx r4 - ldr r0, _021DFD04 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - beq _021DFCF8 - ldr r0, [r0, #0x24] - cmp r0, #5 - bne _021DFCF8 - mov r0, #3 - bl MOD04_021DF5CC - ldr r1, _021DFD14 ; =UNK04_0220D334 - mov r0, #1 - mov r2, #0 - bl MOD04_021E1E30 -_021DFCF8: - mov r0, #1 - add sp, sp, #0x224 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DFD04: .word UNK04_0221053C -_021DFD08: .word UNK04_0220D344 -_021DFD0C: .word UNK04_0220D348 -_021DFD10: .word MOD04_021DF12C -_021DFD14: .word UNK04_0220D334 - arm_func_end MOD04_021DFB20 - - arm_func_start MOD04_021DFD18 -MOD04_021DFD18: ; 0x021DFD18 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFD50 - ldr r0, _021DFDB4 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #3 - beq _021DFD5C -_021DFD50: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DFD5C: - bl MOD04_021DF6CC - ldr r1, _021DFDB4 ; =UNK04_0221053C - mov r2, #0 - ldr r3, [r1] - mov r0, #5 - str r6, [r3, #0x88] - ldr r3, [r1] - str r5, [r3, #0x8c] - ldr r1, [r1] - strb r2, [r1, #0x2c] - bl MOD04_021DF5CC - sub r0, r7, #1 - ldr r5, [sp, #0x18] - ldr r1, _021DFDB8 ; =MOD04_021DF12C - mov r3, r4 - and r0, r0, #0xff - mov r2, #0 - str r5, [sp] - bl MOD04_021EA138 - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DFDB4: .word UNK04_0221053C -_021DFDB8: .word MOD04_021DF12C - arm_func_end MOD04_021DFD18 - - arm_func_start MOD04_021DFDBC -MOD04_021DFDBC: ; 0x021DFDBC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFDF8 - ldr r0, _021DFE5C ; =UNK04_0221053C - ldr r2, [r0] - ldr r1, [r2, #0x24] - cmp r1, #3 - blt _021DFDF8 - cmp r1, #4 - bne _021DFE04 -_021DFDF8: - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DFE04: - str r6, [r2, #0x78] - ldr r1, [r0] - mov r0, #4 - str r5, [r1, #0x7c] - bl MOD04_021DF5CC - ldr r0, _021DFE5C ; =UNK04_0221053C - ldr r1, [sp, #0x20] - ldr r3, [r0] - ldr r0, [sp, #0x24] - str r4, [sp] - str r1, [sp, #4] - ldr r4, [sp, #0x28] - str r0, [sp, #8] - ldr r2, _021DFE60 ; =MOD04_021DF2B4 - add r0, r3, #0xe0 - add r1, r3, #0x1e0 - mov r3, #0 - str r4, [sp, #0xc] - bl MOD04_021E2174 - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DFE5C: .word UNK04_0221053C -_021DFE60: .word MOD04_021DF2B4 - arm_func_end MOD04_021DFDBC - - arm_func_start MOD04_021DFE64 -MOD04_021DFE64: ; 0x021DFE64 - stmdb sp!, {r4, r5, r6, lr} - movs r4, r0 - mov r6, r2 - mov r5, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl MOD04_021DD6D4 - cmp r0, #0 - bne _021DFE9C - ldr r0, _021DFF6C ; =UNK04_0221053C - ldr r2, [r0] - ldr r1, [r2, #0x24] - cmp r1, #0 - beq _021DFEA4 -_021DFE9C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DFEA4: - str r6, [r2, #0x70] - ldr r1, [r0] - cmp r4, #0 - str r5, [r1, #0x74] - beq _021DFEC4 - ldrh r1, [r4] - cmp r1, #0 - bne _021DFECC -_021DFEC4: - mov r5, #0 - b _021DFF18 -_021DFECC: - ldr r1, [r0] - mov r0, #0 - add r1, r1, #0x2e - mov r2, #0x34 - bl MIi_CpuClear16 - mov r0, r4 - bl MOD04_021DE89C - cmp r0, #0x19 - movhi r5, #0x19 - bhi _021DFF00 - mov r0, r4 - bl MOD04_021DE89C - mov r5, r0 -_021DFF00: - ldr r1, _021DFF6C ; =UNK04_0221053C - mov r0, r4 - ldr r1, [r1] - mov r2, r5, lsl #1 - add r1, r1, #0x2e - bl MIi_CpuCopy16 -_021DFF18: - ldr r0, _021DFF6C ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - add r0, r0, r5, lsl #1 - strh r1, [r0, #0x2e] - bl MOD04_021DDC1C - cmp r0, #4 - beq _021DFF4C - ldr r1, _021DFF70 ; =0xFFFF1596 - mov r0, #2 - bl MOD04_021E0EAC - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021DFF4C: - mov r0, #1 - bl MOD04_021DF5CC - ldr r0, _021DFF6C ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x68] - bl MOD04_021EE898 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DFF6C: .word UNK04_0221053C -_021DFF70: .word 0xFFFF1596 - arm_func_end MOD04_021DFE64 - - arm_func_start MOD04_021DFF74 -MOD04_021DFF74: ; 0x021DFF74 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DD984 - cmp r0, #0 - beq _021DFF8C - bl MOD04_021DF5EC -_021DFF8C: - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x24] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _021E0194 -_021DFFD8: ; jump table - b _021E0194 ; case 0 - b _021DFFF4 ; case 1 - b _021E0124 ; case 2 - b _021E012C ; case 3 - b _021E012C ; case 4 - b _021E013C ; case 5 - b _021E014C ; case 6 -_021DFFF4: - bl MOD04_021EE6A0 - cmp r0, #1 - beq _021E0014 - cmp r0, #2 - beq _021E00FC - cmp r0, #3 - beq _021E0110 - b _021E0194 -_021E0014: - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0xa0] - add r0, r0, #0x1c - bl MOD04_021F0F94 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - ldr r2, _021E01E8 ; =MOD04_021DF0D4 - mov r3, r1 - add r0, r0, #0x1c - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r2, _021E01EC ; =MOD04_021DEF6C - ldr r0, [r0] - mov r1, #3 - add r0, r0, #0x1c - mov r3, #0 - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r2, _021E01F0 ; =MOD04_021E20C8 - ldr r0, [r0] - mov r1, #1 - add r0, r0, #0x1c - mov r3, #0 - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r2, _021E01F4 ; =MOD04_021E1FE4 - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x1c - mov r3, #0 - bl MOD04_021F0EB0 - bl MOD04_021DF414 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - mov r0, #2 - bl MOD04_021DF5CC - bl MOD04_021E1034 - b _021E0194 -_021E00FC: - ldr r1, _021E01F8 ; =0xFFFFB172 - mov r0, #3 - bl MOD04_021E0EAC - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0110: - ldr r1, _021E01FC ; =0xFFFFB17B - mov r0, #4 - bl MOD04_021E0EAC - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0124: - bl MOD04_021E0F1C - b _021E0194 -_021E012C: - bl MOD04_021E2228 - mov r0, #0 - bl MOD04_021E9568 - b _021E0194 -_021E013C: - mov r0, #1 - bl MOD04_021E9568 - bl MOD04_021E2228 - b _021E0194 -_021E014C: - bl MOD04_021EAA64 - bl MOD04_021E2228 - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x369] - cmp r0, #2 - beq _021E0174 - ldrb r0, [r1, #0x369] - cmp r0, #3 - bne _021E0180 -_021E0174: - mov r0, #1 - bl MOD04_021E9568 - b _021E0194 -_021E0180: - ldr r0, [r1] - cmp r0, #0 - beq _021E0194 - mov r0, #0 - bl MOD04_021E9568 -_021E0194: - ldr r0, _021E01E4 ; =UNK04_0221053C - ldr r1, [r0] - ldrb r0, [r1, #0x36c] - cmp r0, #1 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, [r1, #0x364] - cmp r0, #0 - beq _021E01CC - bl MOD04_02202280 - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x364] -_021E01CC: - ldr r0, _021E01E4 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x36c] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E01E4: .word UNK04_0221053C -_021E01E8: .word MOD04_021DF0D4 -_021E01EC: .word MOD04_021DEF6C -_021E01F0: .word MOD04_021E20C8 -_021E01F4: .word MOD04_021E1FE4 -_021E01F8: .word 0xFFFFB172 -_021E01FC: .word 0xFFFFB17B - arm_func_end MOD04_021DFF74 - - arm_func_start MOD04_021E0200 -MOD04_021E0200: ; 0x021E0200 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x364] - cmp r0, #0 - beq _021E023C - bl MOD04_02202280 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x364] -_021E023C: - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x36c] - ldr r0, [r0] - ldr r0, [r0, #0x438] - cmp r0, #0 - beq _021E0270 - bl MOD04_02203E80 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x438] -_021E0270: - bl MOD04_02200D6C - bl MOD04_021FBE7C - ldr r0, _021E0370 ; =UNK04_0221053C - ldr ip, [r0] - ldr r0, [ip, #0x1c] - cmp r0, #0 - beq _021E0324 - mov r1, #0 - mov r2, r1 - mov r3, r1 - add r0, ip, #0x1c - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x1c - mov r1, #3 - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x1c - mov r1, #1 - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r2, #0 - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x1c - mov r3, r2 - bl MOD04_021F0EB0 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - add r0, r0, #0x1c - bl MOD04_021F0F18 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - add r0, r0, #0x1c - bl MOD04_021F0F64 - mov r1, #0 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - str r1, [r0, #0x1c] -_021E0324: - bl MOD04_021E0E48 - bl MOD04_021E1D90 - bl MOD04_021E854C - bl MOD04_021EA9C4 - ldr r0, _021E0370 ; =UNK04_0221053C - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - beq _021E035C - bl MOD04_021FD704 - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] -_021E035C: - ldr r0, _021E0370 ; =UNK04_0221053C - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E0370: .word UNK04_0221053C - arm_func_end MOD04_021E0200 - - arm_func_start MOD04_021E0374 -MOD04_021E0374: ; 0x021E0374 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr ip, _021E05D8 ; =UNK04_0221053C - mov r6, r1 - mov r5, r2 - mov r4, r3 - str r0, [ip] - bl MOD04_021DD6F0 - ldr r0, _021E05D8 ; =UNK04_0221053C - mov r2, #0 - ldr r1, [r0] - ldr r3, _021E05DC ; =MOD04_021E8F80 - str r2, [r1] - ldr r1, [r0] - ldr r2, _021E05E0 ; =MOD04_021DEF60 - str r3, [r1, #4] - ldr r1, [r0] - ldr ip, [sp, #0x24] - str r2, [r1, #8] - cmp ip, #0 - ldr r2, [r0] - ldr r3, _021E05E4 ; =MOD04_021DEBE4 - ldr r1, _021E05E8 ; =MOD04_021DEBD8 - str r3, [r2, #0xc] - ldr r0, [r0] - ldr r3, [sp, #0x28] - str r1, [r0, #0x10] - ldr r0, _021E05D8 ; =UNK04_0221053C - moveq ip, #0x2000 - ldr r0, [r0] - cmp r3, #0 - str ip, [r0, #0x14] - moveq r3, #0x2000 - ldr r1, _021E05D8 ; =UNK04_0221053C - mov r0, #0 - ldr r2, [r1] - ldr ip, _021E05EC ; =UNK04_02210F94 - str r3, [r2, #0x18] - ldr r2, [r1] - ldr r3, _021E05F0 ; =UNK04_02211094 - str r0, [r2, #0x1c] - ldr r2, [r1] - str r6, [r2, #0x20] - ldr r2, [r1] - str r0, [r2, #0x24] - ldr r2, [r1] - str r0, [r2, #0x28] - ldr r2, [r1] - strb r0, [r2, #0x2c] - ldr r2, [r1] - strb r0, [r2, #0x2d] - ldr r2, [r1] - str r0, [r2, #0x64] - ldr r2, [r1] - str ip, [r2, #0x68] - ldr r2, [r1] - str r3, [r2, #0x6c] - ldr r2, [r1] - str r0, [r2, #0x70] - ldr r2, [r1] - str r0, [r2, #0x74] - ldr r2, [r1] - str r0, [r2, #0x78] - ldr r2, [r1] - str r0, [r2, #0x7c] - ldr r2, [r1] - str r0, [r2, #0x80] - ldr r2, [r1] - str r0, [r2, #0x84] - ldr r2, [r1] - str r0, [r2, #0x88] - ldr r2, [r1] - str r0, [r2, #0x8c] - ldr r2, [r1] - str r0, [r2, #0x90] - ldr r1, [r1] - str r0, [r1, #0x94] - bl MOD04_021DF6CC - ldr r0, _021E05D8 ; =UNK04_0221053C - mov r3, r5 - ldr r2, [r0] - ldr r1, [r6, #0x24] - ldr r0, _021E05F4 ; =MOD04_021DF304 - str r1, [sp] - add r1, r2, #0x2e - str r1, [sp, #4] - str r0, [sp, #8] - mov r5, #0 - add r0, r2, #0x98 - mov r1, r6 - add r2, r2, #0x1c - str r5, [sp, #0xc] - bl MOD04_021E1074 - ldr r0, _021E05D8 ; =UNK04_0221053C - ldr r2, [sp, #0x30] - ldr r5, [r0] - ldr r3, [sp, #0x2c] - str r2, [sp] - add r0, r5, #0x2f8 - add r1, r5, #0x1c - add r2, r5, #0x2e - bl MOD04_021E234C - ldr r0, _021E05D8 ; =UNK04_0221053C - ldr r1, _021E05EC ; =UNK04_02210F94 - ldr r2, [r0] - ldr r0, _021E05F0 ; =UNK04_02211094 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x30] - str r1, [sp, #8] - str r0, [sp, #0xc] - add r0, r2, #0x354 - add r1, r2, #0x1c - add r3, r2, #4 - bl MOD04_021EA368 - ldr r1, _021E05D8 ; =UNK04_0221053C - ldr r0, _021E05F8 ; =0x000007D8 - ldr r1, [r1] - add r0, r1, r0 - bl MOD04_021EACB4 - mov r0, r4 - bl strlen - cmp r0, #0x100 - movhs r5, #0xff - bhs _021E0578 - mov r0, r4 - bl strlen - mov r5, r0 -_021E0578: - ldr r1, _021E05EC ; =UNK04_02210F94 - mov r0, r4 - mov r2, r5 - bl MI_CpuCopy8 - ldr r0, [sp, #0x20] - ldr r1, _021E05EC ; =UNK04_02210F94 - mov r2, #0 - strb r2, [r1, r5] - bl strlen - cmp r0, #0x100 - movhs r4, #0xff - bhs _021E05B4 - ldr r0, [sp, #0x20] - bl strlen - mov r4, r0 -_021E05B4: - ldr r0, [sp, #0x20] - ldr r1, _021E05F0 ; =UNK04_02211094 - mov r2, r4 - bl MI_CpuCopy8 - ldr r0, _021E05F0 ; =UNK04_02211094 - mov r1, #0 - strb r1, [r0, r4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E05D8: .word UNK04_0221053C -_021E05DC: .word MOD04_021E8F80 -_021E05E0: .word MOD04_021DEF60 -_021E05E4: .word MOD04_021DEBE4 -_021E05E8: .word MOD04_021DEBD8 -_021E05EC: .word UNK04_02210F94 -_021E05F0: .word UNK04_02211094 -_021E05F4: .word MOD04_021DF304 -_021E05F8: .word 0x000007D8 - arm_func_end MOD04_021E0374 - arm_func_start MOD04_021E05FC MOD04_021E05FC: ; 0x021E05FC ldr r0, _021E0624 ; =UNK04_022106C8 @@ -53310,26 +51314,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D334 -UNK04_0220D334: ; 0x0220D334 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D338 -UNK04_0220D338: ; 0x0220D338 - .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D340 -UNK04_0220D340: ; 0x0220D340 - .byte 0x4D, 0x41, 0x54, 0x00 - - .global UNK_0220D344 -UNK04_0220D344: ; 0x0220D344 - .byte 0x53, 0x43, 0x4D, 0x00 - - .global UNK_0220D348 -UNK04_0220D348: ; 0x0220D348 - .byte 0x53, 0x43, 0x4E, 0x00 - .global UNK_0220D34C UNK04_0220D34C: ; 0x0220D34C .byte 0x00, 0x00, 0x00, 0x00 @@ -55968,22 +53952,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_0221053C -UNK04_0221053C: ; 0x0221053C - .space 0x4 - - .global UNK04_02210540 -UNK04_02210540: ; 0x02210540 - .space 0x4 - - .global UNK04_02210544 -UNK04_02210544: ; 0x02210544 - .space 0x80 - - .global UNK04_022105C4 -UNK04_022105C4: ; 0x022105C4 - .space 0x100 - .global UNK04_022106C4 UNK04_022106C4: ; 0x022106C4 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DEB90.s b/arm9/modules/04/asm/mod04_021DEB90.s new file mode 100644 index 00000000..f0917879 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DEB90.s @@ -0,0 +1,2044 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DEB90 +MOD04_021DEB90: ; 0x021DEB90 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021FD43C + bl MOD04_021EFB28 + ldr r2, _021DEBCC ; =UNK04_02210540 + ldr r1, _021DEBD0 ; =0xFFFE8515 + str r0, [r2] + mov r0, #9 + bl MOD04_021DD6B0 + ldr r0, _021DEBD4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DEBCC: .word UNK04_02210540 +_021DEBD0: .word 0xFFFE8515 +_021DEBD4: .word UNK04_0221053C + arm_func_end MOD04_021DEB90 + + arm_func_start MOD04_021DEBD8 +MOD04_021DEBD8: ; 0x021DEBD8 + ldr ip, _021DEBE0 ; =MOD04_021EAC1C + bx ip + .align 2, 0 +_021DEBE0: .word MOD04_021EAC1C + arm_func_end MOD04_021DEBD8 + + arm_func_start MOD04_021DEBE4 +MOD04_021DEBE4: ; 0x021DEBE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r7, #0 + mov fp, r0 + mov sb, r1 + mov sl, r7 + bl MOD04_021E852C + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sb, #4 + addls pc, pc, sb, lsl #2 + b _021DEC48 +_021DEC18: ; jump table + b _021DEC2C ; case 0 + b _021DEC2C ; case 1 + b _021DEC34 ; case 2 + b _021DEC34 ; case 3 + b _021DEC40 ; case 4 +_021DEC2C: + mov r4, r7 + b _021DEC48 +_021DEC34: + mov r4, #6 + ldr r6, _021DEF4C ; =0xFFFFE250 + b _021DEC48 +_021DEC40: + ldr r6, _021DEF50 ; =0xFFFFE24F + mov r4, #9 +_021DEC48: + cmp r4, #0 + bne _021DED00 + mov r0, fp + bl MOD04_021FD3C4 + movs r7, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021DEF54 ; =UNK04_0221053C + ldrb r8, [r7, #1] + ldr r1, [r0] + mov r5, #1 + mov r0, r5,lsl r8 + ldr r1, [r1, #0x644] + ands r0, r1, r0 + mov r0, r8 + moveq r5, #0 + bl MOD04_021EA9D8 + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + bne _021DECA8 + cmp sb, #0 + beq _021DECBC +_021DECA8: + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DECC0 + cmp r8, #0 + bne _021DECC0 +_021DECBC: + mov sl, #1 +_021DECC0: + mov r0, r8 + bl MOD04_021DF56C + ldr r1, _021DEF54 ; =UNK04_0221053C + ldrb r7, [r7] + ldr r2, _021DEF58 ; =UNK04_02210544 + mov fp, #0 + ldr r3, [r1] + str fp, [r2, r7, lsl #2] + ldrb r2, [r3, #0x361] + mov r7, r0 + sub r0, r2, #1 + strb r0, [r3, #0x361] + ldr r1, [r1] + ldrb r0, [r1, #0x368] + sub r0, r0, #1 + strb r0, [r1, #0x368] +_021DED00: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DED58 + ldr r0, [r1, #0x24] + cmp r0, #6 + bne _021DED58 + cmp r5, #0 + bne _021DED58 + ldrb r0, [r1, #0x369] + cmp r0, #2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r4, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_021E85D4 + mov r0, r7 + bl MOD04_021E8A50 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DED58: + mov r0, r4 + mov r1, r6 + mov r2, r7 + bl MOD04_021E8A74 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r4, #0 + beq _021DED90 + mov r0, r4 + mov r1, r6 + bl MOD04_021DD6B0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DED90: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEE04 + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DEDBC + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DEE04 +_021DEDBC: + ldr r2, _021DEF54 ; =UNK04_0221053C + ldr r1, [r2] + ldrb r0, [r1, #0x361] + add r6, r0, #2 + add r3, r1, r6, lsl #2 + ldr r3, [r3, #0x448] + cmp r3, #0 + beq _021DEE04 + add r3, r1, r6 + ldrb r3, [r3, #0x624] + add r0, r0, #1 + add r0, r1, r0 + strb r3, [r0, #0x624] + ldr r0, [r2] + ldrb r1, [r0, #0x361] + add r0, r1, #1 + add r1, r1, #3 + bl MOD04_021E8830 +_021DEE04: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + bne _021DEE4C + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEE2C + bl MOD04_021E85D4 + b _021DEE68 +_021DEE2C: + ldrb r0, [r1, #0x361] + cmp r0, #0 + bne _021DEE68 + ldr r1, _021DEF5C ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 + b _021DEE68 +_021DEE4C: + ldrb r0, [r1, #0x361] + cmp r0, #0 + bne _021DEE68 + ldr r1, _021DEF5C ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 +_021DEE68: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #0 + beq _021DEE88 + ldrb r0, [r1, #0x369] + cmp r0, #1 + bne _021DEEA4 +_021DEE88: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r2, [r0] + ldrb r1, [r2, #0x368] + strb r1, [r2, #0x36a] + ldr r0, [r0] + ldr r0, [r0, #0x364] + bl MOD04_02202308 +_021DEEA4: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r6, [r0] + ldr r0, [r6, #0x90] + cmp r0, #0 + beq _021DEF00 + cmp r5, #0 + beq _021DEF00 + cmp sb, #0 + moveq r5, #1 + mov r0, r7 + movne r5, #0 + bl MOD04_021E1F18 + str r0, [sp] + ldr r1, [r6, #0x94] + ldr r0, _021DEF54 ; =UNK04_0221053C + str r1, [sp, #4] + ldr r1, [r0] + mov r0, r4 + ldr r4, [r1, #0x90] + mov r1, r5 + mov r2, sl + mov r3, r8 + blx r4 +_021DEF00: + ldr r0, _021DEF54 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEF24 + ldrb r0, [r1, #0x369] + cmp r0, #2 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DEF24: + ldrb r0, [r1, #0x361] + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl MOD04_02200D6C + bl MOD04_021E8DC0 + mov r0, #3 + bl MOD04_021DF5CC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DEF4C: .word 0xFFFFE250 +_021DEF50: .word 0xFFFFE24F +_021DEF54: .word UNK04_0221053C +_021DEF58: .word UNK04_02210544 +_021DEF5C: .word UNK04_0220D334 + arm_func_end MOD04_021DEBE4 + + arm_func_start MOD04_021DEF60 +MOD04_021DEF60: ; 0x021DEF60 + ldr ip, _021DEF68 ; =MOD04_021EAC5C + bx ip + .align 2, 0 +_021DEF68: .word MOD04_021EAC5C + arm_func_end MOD04_021DEF60 + + arm_func_start MOD04_021DEF6C +MOD04_021DEF6C: ; 0x021DEF6C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + add r4, sp, #0 + mov r3, #0 + strb r3, [r4] + strb r3, [r4, #1] + strb r3, [r4, #2] + strb r3, [r4, #3] + strb r3, [r4, #4] + strb r3, [r4, #5] + strb r3, [r4, #6] + strb r3, [r4, #7] + strb r3, [r4, #8] + strb r3, [r4, #9] + strb r3, [r4, #0xa] + mov r5, r1 + strb r3, [r4, #0xb] + ldr r4, [r5, #8] + mov r6, r0 + bl MOD04_021E2068 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0C8 ; =UNK04_0220D338 + bl strlen + mov r2, r0 + ldr r1, _021DF0C8 ; =UNK04_0220D338 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0C8 ; =UNK04_0220D338 + bl strlen + add r4, r4, r0 + mov r0, r4 + mov r1, #0x76 + bl strchr + sub r7, r0, r4 + add r0, sp, #0 + mov r1, r4 + mov r2, r7 + bl strncpy + cmp r7, #0xa + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0CC ; =UNK04_0220D340 + add r1, r7, #1 + add r4, r4, r1 + bl strlen + mov r2, r0 + ldr r1, _021DF0CC ; =UNK04_0220D340 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0D0 ; =UNK04_0221053C + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + beq _021DF0A8 + cmp r0, #6 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF0A8 + ldrb r0, [r1, #0x369] + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} +_021DF0A8: + ldr r0, _021DF0CC ; =UNK04_0220D340 + bl strlen + add r2, r4, r0 + ldr r1, [r5] + mov r0, r6 + bl MOD04_021E8EF4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF0C8: .word UNK04_0220D338 +_021DF0CC: .word UNK04_0220D340 +_021DF0D0: .word UNK04_0221053C + arm_func_end MOD04_021DEF6C + + arm_func_start MOD04_021DF0D4 +MOD04_021DF0D4: ; 0x021DF0D4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [r1, #4] + ldr r0, _021DF120 ; =0x00000603 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DF124 ; =0x00000901 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DF128 ; =0x00000B01 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #3 + bl MOD04_021DF414 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF120: .word 0x00000603 +_021DF124: .word 0x00000901 +_021DF128: .word 0x00000B01 + arm_func_end MOD04_021DF0D4 + + arm_func_start MOD04_021DF12C +MOD04_021DF12C: ; 0x021DF12C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021DF174 + cmp r6, #0 + beq _021DF174 + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x4f4] + cmp r0, #0 + bne _021DF1D8 + bl MOD04_021E8DC0 + mov r0, #3 + bl MOD04_021DF5CC + b _021DF1D8 +_021DF174: + cmp r7, #0 + bne _021DF1D8 + mov r0, #6 + bl MOD04_021DF5CC + ldr r1, _021DF2AC ; =UNK04_0221053C + mov r0, #0 + ldr r3, [r1] + ldrb r1, [r3, #0x361] + cmp r1, #0 + blt _021DF1D8 + ldr r2, [r3, #0x64] +_021DF1A0: + add r1, r3, r0, lsl #2 + ldr r1, [r1, #0x448] + cmp r2, r1 + bne _021DF1C8 + ldr r1, _021DF2AC ; =UNK04_0221053C + ldr r1, [r1] + add r0, r1, r0 + ldrb r0, [r0, #0x624] + strb r0, [r1, #0x2c] + b _021DF1D8 +_021DF1C8: + ldrb r1, [r3, #0x361] + add r0, r0, #1 + cmp r0, r1 + ble _021DF1A0 +_021DF1D8: + ldr r1, _021DF2AC ; =UNK04_0221053C + ldr r0, _021DF2B0 ; =0x00000624 + ldr r2, [r1] + ldrb r1, [r2, #0x361] + add r0, r2, r0 + add r1, r1, #1 + bl MOD04_021DF530 + ldr r1, _021DF2AC ; =UNK04_0221053C + ldr r1, [r1] + str r0, [r1, #0x644] + bl MOD04_021E8780 + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF224 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DF258 +_021DF224: + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r1, [sp, #0x20] + ldr r3, [r0] + mov r0, r7 + str r1, [sp] + ldr r2, [r3, #0x8c] + mov r1, r6 + str r2, [sp, #4] + ldr r6, [r3, #0x88] + mov r2, r5 + mov r3, r4 + blx r6 + b _021DF26C +_021DF258: + ldr r2, [r1, #0x84] + ldr r3, [r1, #0x80] + mov r0, r7 + mov r1, r6 + blx r3 +_021DF26C: + cmp r7, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF2AC ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r0, #0x24] + cmp r0, #5 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #3 + bl MOD04_021DF5CC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF2AC: .word UNK04_0221053C +_021DF2B0: .word 0x00000624 + arm_func_end MOD04_021DF12C + + arm_func_start MOD04_021DF2B4 +MOD04_021DF2B4: ; 0x021DF2B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DF300 ; =UNK04_0221053C + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + ldr r0, [r0, #0x28] + cmp r0, #4 + beq _021DF2DC + bl MOD04_021DF5CC +_021DF2DC: + ldr r1, _021DF300 ; =UNK04_0221053C + mov r0, r5 + ldr r3, [r1] + mov r1, r4 + ldr r2, [r3, #0x7c] + ldr r3, [r3, #0x78] + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DF300: .word UNK04_0221053C + arm_func_end MOD04_021DF2B4 + + arm_func_start MOD04_021DF304 +MOD04_021DF304: ; 0x021DF304 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + mov r4, r1 + bne _021DF334 + ldr r1, _021DF36C ; =UNK04_0221053C + mov r0, #3 + ldr r1, [r1] + str r4, [r1, #0x64] + bl MOD04_021DF5CC + bl MOD04_021E1ED4 + b _021DF33C +_021DF334: + mov r0, #0 + bl MOD04_021DF5CC +_021DF33C: + ldr r0, _021DF36C ; =UNK04_0221053C + ldr r0, [r0] + ldr r3, [r0, #0x70] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r0, #0x74] + mov r0, r5 + mov r1, r4 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DF36C: .word UNK04_0221053C + arm_func_end MOD04_021DF304 + + arm_func_start MOD04_021DF370 +MOD04_021DF370: ; 0x021DF370 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _021DF3F4 +_021DF38C: ; jump table + b _021DF3F4 ; case 0 + b _021DF3AC ; case 1 + b _021DF3B8 ; case 2 + b _021DF3C8 ; case 3 + b _021DF3D4 ; case 4 + b _021DF3B8 ; case 5 + b _021DF3E0 ; case 6 + b _021DF3EC ; case 7 +_021DF3AC: + mov r0, #9 + mvn r2, #0 + b _021DF3F4 +_021DF3B8: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _021DF3F4 +_021DF3C8: + mov r0, #6 + mvn r2, #9 + b _021DF3F4 +_021DF3D4: + mov r0, #6 + mvn r2, #0x1d + b _021DF3F4 +_021DF3E0: + mov r0, #6 + mvn r2, #0x45 + b _021DF3F4 +_021DF3EC: + mov r0, #6 + mvn r2, #0x4f +_021DF3F4: + cmp r0, #0 + beq _021DF408 + ldr r1, _021DF410 ; =0xFFFEFA48 + add r1, r2, r1 + bl MOD04_021E0EAC +_021DF408: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DF410: .word 0xFFFEFA48 + arm_func_end MOD04_021DF370 + + arm_func_start MOD04_021DF414 +MOD04_021DF414: ; 0x021DF414 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #4 + addls pc, pc, r6, lsl #2 + b _021DF470 +_021DF430: ; jump table + b _021DF470 ; case 0 + b _021DF444 ; case 1 + b _021DF450 ; case 2 + b _021DF45C ; case 3 + b _021DF468 ; case 4 +_021DF444: + mov r4, #9 + mvn r5, #0 + b _021DF470 +_021DF450: + mov r4, #9 + mvn r5, #1 + b _021DF470 +_021DF45C: + mov r4, #6 + mvn r5, #9 + b _021DF470 +_021DF468: + mov r4, #6 + mvn r5, #0x13 +_021DF470: + ldr r0, _021DF51C ; =UNK04_0221053C + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021DF500 +_021DF488: ; jump table + b _021DF500 ; case 0 + b _021DF4A0 ; case 1 + b _021DF4B8 ; case 2 + b _021DF500 ; case 3 + b _021DF4F4 ; case 4 + b _021DF4DC ; case 5 +_021DF4A0: + ldr r1, _021DF520 ; =0xFFFF11B8 + mov r0, r4 + add r5, r5, r1 + mov r1, r5 + bl MOD04_021E0EAC + b _021DF508 +_021DF4B8: + ldr r1, [r1, #0x9c] + ldr r0, _021DF520 ; =0xFFFF11B8 + cmp r1, #1 + add r5, r5, r0 + bge _021DF508 + mov r0, r4 + mov r1, r5 + bl MOD04_021E0EAC + b _021DF508 +_021DF4DC: + ldr r1, _021DF524 ; =0xFFFEC398 + mov r0, r4 + add r5, r5, r1 + mov r1, r5 + bl MOD04_021E8E08 + b _021DF508 +_021DF4F4: + ldr r0, _021DF528 ; =0xFFFEEAA8 + add r5, r5, r0 + b _021DF508 +_021DF500: + ldr r0, _021DF52C ; =0xFFFE9C88 + add r5, r5, r0 +_021DF508: + mov r0, r4 + mov r1, r5 + bl MOD04_021E2114 + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF51C: .word UNK04_0221053C +_021DF520: .word 0xFFFF11B8 +_021DF524: .word 0xFFFEC398 +_021DF528: .word 0xFFFEEAA8 +_021DF52C: .word 0xFFFE9C88 + arm_func_end MOD04_021DF414 + + arm_func_start MOD04_021DF530 +MOD04_021DF530: ; 0x021DF530 + stmdb sp!, {lr} + sub sp, sp, #4 + mov lr, #0 + mov ip, lr + cmp r1, #0 + ble _021DF560 + mov r3, #1 +_021DF54C: + ldrb r2, [r0, ip] + add ip, ip, #1 + cmp ip, r1 + orr lr, lr, r3, lsl r2 + blt _021DF54C +_021DF560: + mov r0, lr + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DF530 + + arm_func_start MOD04_021DF56C +MOD04_021DF56C: ; 0x021DF56C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + bl MOD04_021E874C + mov r1, r0 + cmp r1, #0 + mov r0, #0 + ble _021DF5B0 + ldr r3, [sp] +_021DF594: + ldrb r2, [r3] + cmp r4, r2 + beq _021DF5B0 + add r0, r0, #1 + cmp r0, r1 + add r3, r3, #1 + blt _021DF594 +_021DF5B0: + cmp r0, r1 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021E8830 + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DF56C + + arm_func_start MOD04_021DF5CC +MOD04_021DF5CC: ; 0x021DF5CC + ldr r1, _021DF5E8 ; =UNK04_0221053C + ldr r3, [r1] + ldr r2, [r3, #0x24] + str r2, [r3, #0x28] + ldr r1, [r1] + str r0, [r1, #0x24] + bx lr + .align 2, 0 +_021DF5E8: .word UNK04_0221053C + arm_func_end MOD04_021DF5CC + + arm_func_start MOD04_021DF5EC +MOD04_021DF5EC: ; 0x021DF5EC + bx lr + arm_func_end MOD04_021DF5EC + + arm_func_start MOD04_021DF5F0 +MOD04_021DF5F0: ; 0x021DF5F0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, #0 + ldr r4, _021DF634 ; =UNK04_02210544 +_021DF600: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _021DF620 + bl MOD04_021FD3C4 + ldrb r0, [r0, #1] + cmp r6, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021DF620: + add r5, r5, #1 + cmp r5, #0x20 + blt _021DF600 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF634: .word UNK04_02210544 + arm_func_end MOD04_021DF5F0 + + arm_func_start MOD04_021DF638 +MOD04_021DF638: ; 0x021DF638 + ldr r1, _021DF644 ; =UNK04_022105C4 + add r0, r1, r0, lsl #3 + bx lr + .align 2, 0 +_021DF644: .word UNK04_022105C4 + arm_func_end MOD04_021DF638 + + arm_func_start MOD04_021DF648 +MOD04_021DF648: ; 0x021DF648 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + mov ip, #0 + ble _021DF684 + ldr r2, _021DF6B8 ; =UNK04_0221053C + ldr r3, [r2] +_021DF664: + add r2, r3, ip, lsl #2 + ldr r2, [r2, #0x448] + cmp r0, r2 + beq _021DF684 + add r2, ip, #1 + and ip, r2, #0xff + cmp ip, r1 + blt _021DF664 +_021DF684: + cmp ip, r1 + addge sp, sp, #4 + movge r0, #0 + ldmgeia sp!, {pc} + ldr r0, _021DF6B8 ; =UNK04_0221053C + ldr r0, [r0] + add r0, r0, ip + ldrb r0, [r0, #0x624] + bl MOD04_021DF760 + bl MOD04_021DF730 + bl MOD04_021DF6BC + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF6B8: .word UNK04_0221053C + arm_func_end MOD04_021DF648 + + arm_func_start MOD04_021DF6BC +MOD04_021DF6BC: ; 0x021DF6BC + ldr r1, _021DF6C8 ; =UNK04_02210544 + add r0, r1, r0, lsl #2 + bx lr + .align 2, 0 +_021DF6C8: .word UNK04_02210544 + arm_func_end MOD04_021DF6BC + + arm_func_start MOD04_021DF6CC +MOD04_021DF6CC: ; 0x021DF6CC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DF6FC ; =UNK04_02210544 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + ldr r1, _021DF700 ; =UNK04_022105C4 + mov r0, #0 + mov r2, #0x100 + bl MIi_CpuClear32 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF6FC: .word UNK04_02210544 +_021DF700: .word UNK04_022105C4 + arm_func_end MOD04_021DF6CC + + arm_func_start MOD04_021DF704 +MOD04_021DF704: ; 0x021DF704 + ldr r2, _021DF72C ; =UNK04_02210544 + mov r0, #0 +_021DF70C: + ldr r1, [r2, r0, lsl #2] + cmp r1, #0 + bxeq lr + add r0, r0, #1 + cmp r0, #0x20 + blt _021DF70C + mvn r0, #0 + bx lr + .align 2, 0 +_021DF72C: .word UNK04_02210544 + arm_func_end MOD04_021DF704 + + arm_func_start MOD04_021DF730 +MOD04_021DF730: ; 0x021DF730 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021FD3C4 + ldrb r0, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DF730 + + arm_func_start MOD04_021DF748 +MOD04_021DF748: ; 0x021DF748 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021FD3C4 + ldrb r0, [r0, #1] + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DF748 + + arm_func_start MOD04_021DF760 +MOD04_021DF760: ; 0x021DF760 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _021DF7BC ; =UNK04_0221053C + mov r6, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, _021DF7C0 ; =UNK04_02210544 + mov r5, #0 +_021DF784: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _021DF7A8 + bl MOD04_021FD3C4 + ldrb r0, [r0, #1] + cmp r6, r0 + ldreq r0, _021DF7C0 ; =UNK04_02210544 + ldreq r0, [r0, r5, lsl #2] + ldmeqia sp!, {r4, r5, r6, pc} +_021DF7A8: + add r5, r5, #1 + cmp r5, #0x20 + blt _021DF784 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF7BC: .word UNK04_0221053C +_021DF7C0: .word UNK04_02210544 + arm_func_end MOD04_021DF760 + + arm_func_start MOD04_021DF7C4 +MOD04_021DF7C4: ; 0x021DF7C4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _021DF87C ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #0x4000 + bl MOD04_021DE8C8 + add r0, r0, #0xc000 + mov r1, r0, lsl #0x10 + ldr r3, _021DF87C ; =UNK04_0221053C + mov r0, #0 + mov r2, r0 + mov r1, r1, lsr #0x10 + ldr r4, [r3] + bl MOD04_021FFEB0 + ldr r1, _021DF880 ; =MOD04_021DEB90 + ldr r2, _021DF87C ; =UNK04_0221053C + str r1, [sp] + mov r1, r0 + ldr r0, [r2] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl MOD04_021FD71C + mov r4, r0 + bl MOD04_021DF370 + cmp r0, #0 + addne sp, sp, #8 + movne r0, r4 + ldmneia sp!, {r4, pc} + ldr r0, _021DF87C ; =UNK04_0221053C + ldr r1, _021DF884 ; =MOD04_021E9204 + ldr r0, [r0] + ldr r0, [r0] + bl MOD04_021FD6C8 + ldr r0, _021DF87C ; =UNK04_0221053C + ldr r1, _021DF888 ; =MOD04_021E9464 + ldr r0, [r0] + ldr r0, [r0] + bl MOD04_021FD434 + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DF87C: .word UNK04_0221053C +_021DF880: .word MOD04_021DEB90 +_021DF884: .word MOD04_021E9204 +_021DF888: .word MOD04_021E9464 + arm_func_end MOD04_021DF7C4 + + arm_func_start MOD04_021DF88C +MOD04_021DF88C: ; 0x021DF88C + ldr r0, _021DF8A4 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x24] + moveq r0, #0 + bx lr + .align 2, 0 +_021DF8A4: .word UNK04_0221053C + arm_func_end MOD04_021DF88C + + arm_func_start MOD04_021DF8A8 +MOD04_021DF8A8: ; 0x021DF8A8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DF8F0 ; =UNK04_0221053C + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r1, #1 + mov r1, r1,lsl r0 + ldr r2, [r2, #0x644] + ands r1, r2, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl MOD04_021DF5F0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF8F0: .word UNK04_0221053C + arm_func_end MOD04_021DF8A8 + + arm_func_start MOD04_021DF8F4 +MOD04_021DF8F4: ; 0x021DF8F4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _021DF954 ; =UNK04_0221053C + ldr r3, [r2] + cmp r3, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldr r1, _021DF958 ; =0x00000624 + add r1, r3, r1 + str r1, [r0] + ldr r2, [r2] + ldrb r1, [r2, #0x369] + cmp r1, #2 + beq _021DF93C + ldrb r1, [r2, #0x369] + cmp r1, #3 + bne _021DF948 +_021DF93C: + bl MOD04_021E86A4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021DF948: + bl MOD04_021E874C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF954: .word UNK04_0221053C +_021DF958: .word 0x00000624 + arm_func_end MOD04_021DF8F4 + + arm_func_start MOD04_021DF95C +MOD04_021DF95C: ; 0x021DF95C + ldr r0, _021DF974 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + ldrneb r0, [r0, #0x2c] + moveq r0, #0 + bx lr + .align 2, 0 +_021DF974: .word UNK04_0221053C + arm_func_end MOD04_021DF95C + + arm_func_start MOD04_021DF978 +MOD04_021DF978: ; 0x021DF978 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DF9D0 ; =UNK04_0221053C + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF9B0 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DF9C0 +_021DF9B0: + bl MOD04_021E87D8 + add sp, sp, #4 + add r0, r0, #1 + ldmfd sp!, {pc} +_021DF9C0: + bl MOD04_021E8804 + add r0, r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF9D0: .word UNK04_0221053C + arm_func_end MOD04_021DF978 + + arm_func_start MOD04_021DF9D4 +MOD04_021DF9D4: ; 0x021DF9D4 + stmdb sp!, {r4, lr} + ldr r1, _021DFA3C ; =UNK04_0221053C + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _021DFA14 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFA14 + ldr r0, _021DFA3C ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #5 + beq _021DFA1C + cmp r0, #6 + beq _021DFA1C +_021DFA14: + mvn r0, #0 + ldmia sp!, {r4, pc} +_021DFA1C: + mov r0, r4 + bl MOD04_021DF760 + cmp r0, #0 + mvneq r0, #1 + ldmeqia sp!, {r4, pc} + bl MOD04_021FD488 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DFA3C: .word UNK04_0221053C + arm_func_end MOD04_021DF9D4 + + arm_func_start MOD04_021DFA40 +MOD04_021DFA40: ; 0x021DFA40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DFAF0 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + beq _021DFA80 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFA80 + ldr r0, _021DFAF0 ; =UNK04_0221053C + ldr r2, [r0] + ldr r0, [r2, #0x24] + cmp r0, #5 + beq _021DFA8C + cmp r0, #6 + beq _021DFA8C +_021DFA80: + add sp, sp, #4 + mvn r0, #0 + ldmfd sp!, {pc} +_021DFA8C: + ldrb r0, [r2, #0x361] + cmp r0, #0 + bne _021DFAC0 + ldr r1, _021DFAF4 ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 + bl MOD04_02200D6C + mov r0, #3 + bl MOD04_021DF5CC + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021DFAC0: + mov r1, #1 + ldr r0, _021DFAF0 ; =UNK04_0221053C + strb r1, [r2, #0x2d] + ldr r0, [r0] + ldr r0, [r0] + bl MOD04_021FD45C + ldr r1, _021DFAF0 ; =UNK04_0221053C + mov r0, #0 + ldr r1, [r1] + strb r0, [r1, #0x2d] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DFAF0: .word UNK04_0221053C +_021DFAF4: .word UNK04_0220D334 + arm_func_end MOD04_021DFA40 + + arm_func_start MOD04_021DFAF8 +MOD04_021DFAF8: ; 0x021DFAF8 + ldr r2, _021DFB1C ; =UNK04_0221053C + ldr r3, [r2] + cmp r3, #0 + moveq r0, #0 + strne r0, [r3, #0x90] + ldrne r2, [r2] + movne r0, #1 + strne r1, [r2, #0x94] + bx lr + .align 2, 0 +_021DFB1C: .word UNK04_0221053C + arm_func_end MOD04_021DFAF8 + + arm_func_start MOD04_021DFB20 +MOD04_021DFB20: ; 0x021DFB20 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x224 + mvn ip, #0 + mov r7, r0 + mov r6, r1 + mov r4, r2 + mov r5, r3 + str ip, [sp, #8] + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFB60 + ldr r0, _021DFD04 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #3 + beq _021DFB6C +_021DFB60: + add sp, sp, #0x224 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFB6C: + bl MOD04_021DF6CC + ldr r1, _021DFD04 ; =UNK04_0221053C + mov r0, #5 + ldr r2, [r1] + str r6, [r2, #0x88] + ldr r1, [r1] + str r4, [r1, #0x8c] + bl MOD04_021DF5CC + mov r0, r7 + bl MOD04_021E1F84 + movs r4, r0 + beq _021DFBB8 + ldr r0, _021DFD04 ; =UNK04_0221053C + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x1c + bl MOD04_021F05F4 + cmp r0, #0 + bne _021DFBC0 +_021DFBB8: + mov r5, #0xb + b _021DFC8C +_021DFBC0: + ldr r0, _021DFD04 ; =UNK04_0221053C + add r2, sp, #8 + ldr r0, [r0] + mov r1, r4 + add r0, r0, #0x1c + bl MOD04_021F0664 + ldr r0, _021DFD04 ; =UNK04_0221053C + ldr r1, [sp, #8] + ldr r0, [r0] + add r2, sp, #0x10 + add r0, r0, #0x1c + bl MOD04_021F06E4 + ldr r0, [sp, #0x14] + cmp r0, #6 + movne r5, #0xb + bne _021DFC8C + ldr r0, _021DFD08 ; =UNK04_0220D344 + mov r6, #0x30 + add r1, sp, #0xc + add r2, sp, #0x18 + mov r3, #0x2f + strb r6, [sp, #0xc] + bl MOD04_021DE9F4 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + and r6, r0, #0xff + ldr r0, _021DFD0C ; =UNK04_0220D348 + add r1, sp, #0xc + add r2, sp, #0x18 + mov r3, #0x2f + bl MOD04_021DE9F4 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + and r0, r0, #0xff + cmp r0, r6 + moveq r5, #0xd + beq _021DFC8C + ldr r6, [sp, #0x238] + ldr r1, _021DFD10 ; =MOD04_021DF12C + mov r0, r4 + mov r3, r5 + mov r2, #0 + str r6, [sp] + bl MOD04_021E9FD0 + add sp, sp, #0x224 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFC8C: + mov r0, r5 + mov r1, #0 + bl MOD04_021DD6B0 + ldr r0, _021DFD04 ; =UNK04_0221053C + mov r1, #0 + ldr r4, [r0] + mov r0, r5 + str r1, [sp] + ldr r2, [r4, #0x8c] + mov r3, r1 + str r2, [sp, #4] + ldr r4, [r4, #0x88] + mov r2, #1 + blx r4 + ldr r0, _021DFD04 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + beq _021DFCF8 + ldr r0, [r0, #0x24] + cmp r0, #5 + bne _021DFCF8 + mov r0, #3 + bl MOD04_021DF5CC + ldr r1, _021DFD14 ; =UNK04_0220D334 + mov r0, #1 + mov r2, #0 + bl MOD04_021E1E30 +_021DFCF8: + mov r0, #1 + add sp, sp, #0x224 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DFD04: .word UNK04_0221053C +_021DFD08: .word UNK04_0220D344 +_021DFD0C: .word UNK04_0220D348 +_021DFD10: .word MOD04_021DF12C +_021DFD14: .word UNK04_0220D334 + arm_func_end MOD04_021DFB20 + + arm_func_start MOD04_021DFD18 +MOD04_021DFD18: ; 0x021DFD18 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFD50 + ldr r0, _021DFDB4 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #3 + beq _021DFD5C +_021DFD50: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFD5C: + bl MOD04_021DF6CC + ldr r1, _021DFDB4 ; =UNK04_0221053C + mov r2, #0 + ldr r3, [r1] + mov r0, #5 + str r6, [r3, #0x88] + ldr r3, [r1] + str r5, [r3, #0x8c] + ldr r1, [r1] + strb r2, [r1, #0x2c] + bl MOD04_021DF5CC + sub r0, r7, #1 + ldr r5, [sp, #0x18] + ldr r1, _021DFDB8 ; =MOD04_021DF12C + mov r3, r4 + and r0, r0, #0xff + mov r2, #0 + str r5, [sp] + bl MOD04_021EA138 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DFDB4: .word UNK04_0221053C +_021DFDB8: .word MOD04_021DF12C + arm_func_end MOD04_021DFD18 + + arm_func_start MOD04_021DFDBC +MOD04_021DFDBC: ; 0x021DFDBC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFDF8 + ldr r0, _021DFE5C ; =UNK04_0221053C + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #3 + blt _021DFDF8 + cmp r1, #4 + bne _021DFE04 +_021DFDF8: + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DFE04: + str r6, [r2, #0x78] + ldr r1, [r0] + mov r0, #4 + str r5, [r1, #0x7c] + bl MOD04_021DF5CC + ldr r0, _021DFE5C ; =UNK04_0221053C + ldr r1, [sp, #0x20] + ldr r3, [r0] + ldr r0, [sp, #0x24] + str r4, [sp] + str r1, [sp, #4] + ldr r4, [sp, #0x28] + str r0, [sp, #8] + ldr r2, _021DFE60 ; =MOD04_021DF2B4 + add r0, r3, #0xe0 + add r1, r3, #0x1e0 + mov r3, #0 + str r4, [sp, #0xc] + bl MOD04_021E2174 + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DFE5C: .word UNK04_0221053C +_021DFE60: .word MOD04_021DF2B4 + arm_func_end MOD04_021DFDBC + + arm_func_start MOD04_021DFE64 +MOD04_021DFE64: ; 0x021DFE64 + stmdb sp!, {r4, r5, r6, lr} + movs r4, r0 + mov r6, r2 + mov r5, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl MOD04_021DD6D4 + cmp r0, #0 + bne _021DFE9C + ldr r0, _021DFF6C ; =UNK04_0221053C + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #0 + beq _021DFEA4 +_021DFE9C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DFEA4: + str r6, [r2, #0x70] + ldr r1, [r0] + cmp r4, #0 + str r5, [r1, #0x74] + beq _021DFEC4 + ldrh r1, [r4] + cmp r1, #0 + bne _021DFECC +_021DFEC4: + mov r5, #0 + b _021DFF18 +_021DFECC: + ldr r1, [r0] + mov r0, #0 + add r1, r1, #0x2e + mov r2, #0x34 + bl MIi_CpuClear16 + mov r0, r4 + bl MOD04_021DE89C + cmp r0, #0x19 + movhi r5, #0x19 + bhi _021DFF00 + mov r0, r4 + bl MOD04_021DE89C + mov r5, r0 +_021DFF00: + ldr r1, _021DFF6C ; =UNK04_0221053C + mov r0, r4 + ldr r1, [r1] + mov r2, r5, lsl #1 + add r1, r1, #0x2e + bl MIi_CpuCopy16 +_021DFF18: + ldr r0, _021DFF6C ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + add r0, r0, r5, lsl #1 + strh r1, [r0, #0x2e] + bl MOD04_021DDC1C + cmp r0, #4 + beq _021DFF4C + ldr r1, _021DFF70 ; =0xFFFF1596 + mov r0, #2 + bl MOD04_021E0EAC + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021DFF4C: + mov r0, #1 + bl MOD04_021DF5CC + ldr r0, _021DFF6C ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x68] + bl MOD04_021EE898 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DFF6C: .word UNK04_0221053C +_021DFF70: .word 0xFFFF1596 + arm_func_end MOD04_021DFE64 + + arm_func_start MOD04_021DFF74 +MOD04_021DFF74: ; 0x021DFF74 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DD984 + cmp r0, #0 + beq _021DFF8C + bl MOD04_021DF5EC +_021DFF8C: + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x24] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _021E0194 +_021DFFD8: ; jump table + b _021E0194 ; case 0 + b _021DFFF4 ; case 1 + b _021E0124 ; case 2 + b _021E012C ; case 3 + b _021E012C ; case 4 + b _021E013C ; case 5 + b _021E014C ; case 6 +_021DFFF4: + bl MOD04_021EE6A0 + cmp r0, #1 + beq _021E0014 + cmp r0, #2 + beq _021E00FC + cmp r0, #3 + beq _021E0110 + b _021E0194 +_021E0014: + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0xa0] + add r0, r0, #0x1c + bl MOD04_021F0F94 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + ldr r2, _021E01E8 ; =MOD04_021DF0D4 + mov r3, r1 + add r0, r0, #0x1c + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r2, _021E01EC ; =MOD04_021DEF6C + ldr r0, [r0] + mov r1, #3 + add r0, r0, #0x1c + mov r3, #0 + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r2, _021E01F0 ; =MOD04_021E20C8 + ldr r0, [r0] + mov r1, #1 + add r0, r0, #0x1c + mov r3, #0 + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r2, _021E01F4 ; =MOD04_021E1FE4 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, #0 + bl MOD04_021F0EB0 + bl MOD04_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD04_021DF5CC + bl MOD04_021E1034 + b _021E0194 +_021E00FC: + ldr r1, _021E01F8 ; =0xFFFFB172 + mov r0, #3 + bl MOD04_021E0EAC + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0110: + ldr r1, _021E01FC ; =0xFFFFB17B + mov r0, #4 + bl MOD04_021E0EAC + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0124: + bl MOD04_021E0F1C + b _021E0194 +_021E012C: + bl MOD04_021E2228 + mov r0, #0 + bl MOD04_021E9568 + b _021E0194 +_021E013C: + mov r0, #1 + bl MOD04_021E9568 + bl MOD04_021E2228 + b _021E0194 +_021E014C: + bl MOD04_021EAA64 + bl MOD04_021E2228 + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021E0174 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021E0180 +_021E0174: + mov r0, #1 + bl MOD04_021E9568 + b _021E0194 +_021E0180: + ldr r0, [r1] + cmp r0, #0 + beq _021E0194 + mov r0, #0 + bl MOD04_021E9568 +_021E0194: + ldr r0, _021E01E4 ; =UNK04_0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x36c] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, [r1, #0x364] + cmp r0, #0 + beq _021E01CC + bl MOD04_02202280 + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x364] +_021E01CC: + ldr r0, _021E01E4 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x36c] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E01E4: .word UNK04_0221053C +_021E01E8: .word MOD04_021DF0D4 +_021E01EC: .word MOD04_021DEF6C +_021E01F0: .word MOD04_021E20C8 +_021E01F4: .word MOD04_021E1FE4 +_021E01F8: .word 0xFFFFB172 +_021E01FC: .word 0xFFFFB17B + arm_func_end MOD04_021DFF74 + + arm_func_start MOD04_021E0200 +MOD04_021E0200: ; 0x021E0200 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x364] + cmp r0, #0 + beq _021E023C + bl MOD04_02202280 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x364] +_021E023C: + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x36c] + ldr r0, [r0] + ldr r0, [r0, #0x438] + cmp r0, #0 + beq _021E0270 + bl MOD04_02203E80 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x438] +_021E0270: + bl MOD04_02200D6C + bl MOD04_021FBE7C + ldr r0, _021E0370 ; =UNK04_0221053C + ldr ip, [r0] + ldr r0, [ip, #0x1c] + cmp r0, #0 + beq _021E0324 + mov r1, #0 + mov r2, r1 + mov r3, r1 + add r0, ip, #0x1c + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #3 + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #1 + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r2, #0 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, r2 + bl MOD04_021F0EB0 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + add r0, r0, #0x1c + bl MOD04_021F0F18 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + add r0, r0, #0x1c + bl MOD04_021F0F64 + mov r1, #0 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + str r1, [r0, #0x1c] +_021E0324: + bl MOD04_021E0E48 + bl MOD04_021E1D90 + bl MOD04_021E854C + bl MOD04_021EA9C4 + ldr r0, _021E0370 ; =UNK04_0221053C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _021E035C + bl MOD04_021FD704 + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] +_021E035C: + ldr r0, _021E0370 ; =UNK04_0221053C + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0370: .word UNK04_0221053C + arm_func_end MOD04_021E0200 + + arm_func_start MOD04_021E0374 +MOD04_021E0374: ; 0x021E0374 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr ip, _021E05D8 ; =UNK04_0221053C + mov r6, r1 + mov r5, r2 + mov r4, r3 + str r0, [ip] + bl MOD04_021DD6F0 + ldr r0, _021E05D8 ; =UNK04_0221053C + mov r2, #0 + ldr r1, [r0] + ldr r3, _021E05DC ; =MOD04_021E8F80 + str r2, [r1] + ldr r1, [r0] + ldr r2, _021E05E0 ; =MOD04_021DEF60 + str r3, [r1, #4] + ldr r1, [r0] + ldr ip, [sp, #0x24] + str r2, [r1, #8] + cmp ip, #0 + ldr r2, [r0] + ldr r3, _021E05E4 ; =MOD04_021DEBE4 + ldr r1, _021E05E8 ; =MOD04_021DEBD8 + str r3, [r2, #0xc] + ldr r0, [r0] + ldr r3, [sp, #0x28] + str r1, [r0, #0x10] + ldr r0, _021E05D8 ; =UNK04_0221053C + moveq ip, #0x2000 + ldr r0, [r0] + cmp r3, #0 + str ip, [r0, #0x14] + moveq r3, #0x2000 + ldr r1, _021E05D8 ; =UNK04_0221053C + mov r0, #0 + ldr r2, [r1] + ldr ip, _021E05EC ; =UNK04_02210F94 + str r3, [r2, #0x18] + ldr r2, [r1] + ldr r3, _021E05F0 ; =UNK04_02211094 + str r0, [r2, #0x1c] + ldr r2, [r1] + str r6, [r2, #0x20] + ldr r2, [r1] + str r0, [r2, #0x24] + ldr r2, [r1] + str r0, [r2, #0x28] + ldr r2, [r1] + strb r0, [r2, #0x2c] + ldr r2, [r1] + strb r0, [r2, #0x2d] + ldr r2, [r1] + str r0, [r2, #0x64] + ldr r2, [r1] + str ip, [r2, #0x68] + ldr r2, [r1] + str r3, [r2, #0x6c] + ldr r2, [r1] + str r0, [r2, #0x70] + ldr r2, [r1] + str r0, [r2, #0x74] + ldr r2, [r1] + str r0, [r2, #0x78] + ldr r2, [r1] + str r0, [r2, #0x7c] + ldr r2, [r1] + str r0, [r2, #0x80] + ldr r2, [r1] + str r0, [r2, #0x84] + ldr r2, [r1] + str r0, [r2, #0x88] + ldr r2, [r1] + str r0, [r2, #0x8c] + ldr r2, [r1] + str r0, [r2, #0x90] + ldr r1, [r1] + str r0, [r1, #0x94] + bl MOD04_021DF6CC + ldr r0, _021E05D8 ; =UNK04_0221053C + mov r3, r5 + ldr r2, [r0] + ldr r1, [r6, #0x24] + ldr r0, _021E05F4 ; =MOD04_021DF304 + str r1, [sp] + add r1, r2, #0x2e + str r1, [sp, #4] + str r0, [sp, #8] + mov r5, #0 + add r0, r2, #0x98 + mov r1, r6 + add r2, r2, #0x1c + str r5, [sp, #0xc] + bl MOD04_021E1074 + ldr r0, _021E05D8 ; =UNK04_0221053C + ldr r2, [sp, #0x30] + ldr r5, [r0] + ldr r3, [sp, #0x2c] + str r2, [sp] + add r0, r5, #0x2f8 + add r1, r5, #0x1c + add r2, r5, #0x2e + bl MOD04_021E234C + ldr r0, _021E05D8 ; =UNK04_0221053C + ldr r1, _021E05EC ; =UNK04_02210F94 + ldr r2, [r0] + ldr r0, _021E05F0 ; =UNK04_02211094 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r2, #0x354 + add r1, r2, #0x1c + add r3, r2, #4 + bl MOD04_021EA368 + ldr r1, _021E05D8 ; =UNK04_0221053C + ldr r0, _021E05F8 ; =0x000007D8 + ldr r1, [r1] + add r0, r1, r0 + bl MOD04_021EACB4 + mov r0, r4 + bl strlen + cmp r0, #0x100 + movhs r5, #0xff + bhs _021E0578 + mov r0, r4 + bl strlen + mov r5, r0 +_021E0578: + ldr r1, _021E05EC ; =UNK04_02210F94 + mov r0, r4 + mov r2, r5 + bl MI_CpuCopy8 + ldr r0, [sp, #0x20] + ldr r1, _021E05EC ; =UNK04_02210F94 + mov r2, #0 + strb r2, [r1, r5] + bl strlen + cmp r0, #0x100 + movhs r4, #0xff + bhs _021E05B4 + ldr r0, [sp, #0x20] + bl strlen + mov r4, r0 +_021E05B4: + ldr r0, [sp, #0x20] + ldr r1, _021E05F0 ; =UNK04_02211094 + mov r2, r4 + bl MI_CpuCopy8 + ldr r0, _021E05F0 ; =UNK04_02211094 + mov r1, #0 + strb r1, [r0, r4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E05D8: .word UNK04_0221053C +_021E05DC: .word MOD04_021E8F80 +_021E05E0: .word MOD04_021DEF60 +_021E05E4: .word MOD04_021DEBE4 +_021E05E8: .word MOD04_021DEBD8 +_021E05EC: .word UNK04_02210F94 +_021E05F0: .word UNK04_02211094 +_021E05F4: .word MOD04_021DF304 +_021E05F8: .word 0x000007D8 + arm_func_end MOD04_021E0374 + + .section .data + + .global UNK04_0220D334 +UNK04_0220D334: ; 0x0220D334 + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK04_0220D338 +UNK04_0220D338: ; 0x0220D338 + .asciz "GPCM" + + .balign 4, 0 + .global UNK04_0220D340 +UNK04_0220D340: ; 0x0220D340 + .asciz "MAT" + + .balign 4, 0 + .global UNK04_0220D344 +UNK04_0220D344: ; 0x0220D344 + .asciz "SCM" + + .balign 4, 0 + .global UNK04_0220D348 +UNK04_0220D348: ; 0x0220D348 + .asciz "SCN" + + .balign 4, 0 + .section .bss + + .global UNK04_0221053C +UNK04_0221053C: ; 0x0221053C + .space 0x4 + + .global UNK04_02210540 +UNK04_02210540: ; 0x02210540 + .space 0x4 + + .global UNK04_02210544 +UNK04_02210544: ; 0x02210544 + .space 0x80 + + .global UNK04_022105C4 +UNK04_022105C4: ; 0x022105C4 + .space 0x100 |