From 1de157cf027c604a35537ad457bf476eb3068c7c Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 7 Aug 2021 23:39:10 +0100 Subject: start to split mod04 --- arm9/arm9.lsf | 5 +- arm9/global.inc | 21 + arm9/modules/04/asm/arm_04.s | 1727 ------------------- arm9/modules/04/asm/mod04_021D74E0.s | 2323 +++++++++++++++++++++++++ arm9/modules/04/asm/mod04_021D868C.s | 845 +++++++++ arm9/modules/04/asm/mod04_021D8D18.s | 1233 +++++++++++++ arm9/modules/04/asm/mod04_021D9C2C.s | 549 ++++++ arm9/modules/04/asm/thumb_04.s | 3157 ---------------------------------- 8 files changed, 4975 insertions(+), 4885 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021D74E0.s create mode 100644 arm9/modules/04/asm/mod04_021D868C.s create mode 100644 arm9/modules/04/asm/mod04_021D8D18.s create mode 100644 arm9/modules/04/asm/mod04_021D9C2C.s delete mode 100644 arm9/modules/04/asm/thumb_04.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e8f534d0..08253453 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -656,7 +656,10 @@ Overlay MODULE_03 Overlay MODULE_04 { After arm9 - Object thumb_04.o + Object mod04_021D74E0.o + Object mod04_021D868C.o + Object mod04_021D8D18.o + Object mod04_021D9C2C.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 2cf762ee..09d6fe08 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6109,13 +6109,27 @@ .extern MOD04_021D8CF0 .extern MOD04_021D8D04 .extern MOD04_021D8F08 +.extern MOD04_021D97F8 +.extern MOD04_021D988C +.extern MOD04_021D98DC +.extern MOD04_021D991C +.extern MOD04_021D9974 +.extern MOD04_021D9ACC +.extern MOD04_021D9C1C .extern MOD04_021D9C2C .extern MOD04_021D9F78 +.extern MOD04_021DA238 .extern MOD04_021DA2F4 .extern MOD04_021DA334 .extern MOD04_021DA388 .extern MOD04_021DA3DC .extern MOD04_021DAB68 +.extern MOD04_021DAC98 +.extern MOD04_021DAE4C +.extern MOD04_021DB440 +.extern MOD04_021DB4A4 +.extern MOD04_021DB570 +.extern MOD04_021DB608 .extern MOD04_021DCA84 .extern MOD04_021DD6F0 .extern MOD04_021DD718 @@ -6178,9 +6192,11 @@ .extern MOD04_021EB59C .extern MOD04_021EB9A4 .extern MOD04_021EB9D8 +.extern MOD04_021EBAB8 .extern MOD04_021EBAE8 .extern MOD04_021EBB80 .extern MOD04_021EBC60 +.extern MOD04_021EE5F4 .extern MOD04_021EEFA8 .extern MOD04_021EEFFC .extern MOD04_021EF06C @@ -8251,6 +8267,11 @@ .extern TP_SetCalibrateParam .extern TP_WaitBusy .extern TP_WaitRawResult +.extern UNK04_0220BEB4 +.extern UNK04_02210480 +.extern UNK04_02210484 +.extern UNK04_02210488 +.extern UNK04_0221048C .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 259f9f52..bbdafb6a 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,1510 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021D8D18 -MOD04_021D8D18: ; 0x021D8D18 - stmdb sp!, {r4, lr} - ldr r2, _021D8D58 ; =UNK04_02210468 - ldr r1, _021D8D5C ; =0x000013D8 - ldr r2, [r2] - mov r4, r0 - add r0, r2, r1 - bl OS_LockMutex - ldr r2, _021D8D58 ; =UNK04_02210468 - ldr r1, _021D8D5C ; =0x000013D8 - ldr r0, [r2] - add r0, r0, #0x1000 - str r4, [r0, #4] - ldr r0, [r2] - add r0, r0, r1 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - .align 2, 0 -_021D8D58: .word UNK04_02210468 -_021D8D5C: .word 0x000013D8 - arm_func_end MOD04_021D8D18 - - arm_func_start MOD04_021D8D60 -MOD04_021D8D60: ; 0x021D8D60 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x98 - ldr r4, _021D8EE0 ; =UNK04_0221046C - mov r3, #0 - ldr r5, [r4, #4] - ldr ip, [r4] - cmp r5, r3 - mov r5, r0 - mov r6, r1 - mov r4, r2 - cmpeq ip, r3 - bne _021D8DC0 - ldr r0, _021D8EE4 ; =UNK04_0220BEF8 - bl strlen - mov r3, r0 - ldr r1, _021D8EE8 ; =UNK04_0220BF04 - ldr r2, _021D8EE4 ; =UNK04_0220BEF8 - mov r0, r5 - bl MOD04_021DAB68 - cmp r0, #0 - beq _021D8E18 - add sp, sp, #0x98 - mov r0, #8 - ldmia sp!, {r4, r5, r6, pc} -_021D8DC0: - ldr r0, _021D8EEC ; =UNK04_0220BF0C - bl strlen - mov r3, r0 - ldr r1, _021D8EE8 ; =UNK04_0220BF04 - ldr r2, _021D8EEC ; =UNK04_0220BF0C - mov r0, r5 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl strlen - mov r3, r0 - ldr r1, _021D8EF0 ; =UNK04_0220BF14 - mov r0, r5 - mov r2, r6 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} -_021D8E18: - ldr r1, _021D8EE0 ; =UNK04_0221046C - add r0, sp, #0 - bl MOD04_021D9F78 - cmp r0, #0 - addeq sp, sp, #0x98 - moveq r0, #5 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021D8EF4 ; =UNK04_0221048C - add r1, sp, #0 - ldr r2, [r0] - mov r0, r5 - bl MOD04_021D9C2C - cmp r0, #0 - addeq sp, sp, #0x98 - moveq r0, #8 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021D8EF8 ; =UNK04_02210460 - ldr r0, [r0] - cmp r0, #1 - bne _021D8E94 - ldr r0, _021D8EFC ; =UNK04_0220BF1C - bl strlen - mov r3, r0 - ldr r1, _021D8F00 ; =UNK04_0220BF20 - ldr r2, _021D8EFC ; =UNK04_0220BF1C - mov r0, r5 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} -_021D8E94: - mov r0, r4 - bl wcslen - cmp r0, #0 - beq _021D8ED4 - mov r0, r4 - bl wcslen - mov r3, r0 - ldr r1, _021D8F04 ; =UNK04_0220BF28 - mov r0, r5 - mov r2, r4 - mov r3, r3, lsl #1 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x98 - movne r0, #8 - ldmneia sp!, {r4, r5, r6, pc} -_021D8ED4: - mov r0, #0 - add sp, sp, #0x98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021D8EE0: .word UNK04_0221046C -_021D8EE4: .word UNK04_0220BEF8 -_021D8EE8: .word UNK04_0220BF04 -_021D8EEC: .word UNK04_0220BF0C -_021D8EF0: .word UNK04_0220BF14 -_021D8EF4: .word UNK04_0221048C -_021D8EF8: .word UNK04_02210460 -_021D8EFC: .word UNK04_0220BF1C -_021D8F00: .word UNK04_0220BF20 -_021D8F04: .word UNK04_0220BF28 - arm_func_end MOD04_021D8D60 - - arm_func_start MOD04_021D8F08 -MOD04_021D8F08: ; 0x021D8F08 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r0, _021D91BC ; =UNK04_02210468 - mov r1, #0 - ldr r0, [r0] - str r1, [sp] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _021D91C0 ; =UNK04_0220BF34 - bl MOD04_021DA388 - str r0, [sp] - cmp r0, #0 - beq _021D8F40 - bl MOD04_021DCA84 -_021D8F40: - ldr r0, _021D91BC ; =UNK04_02210468 - mov r2, #0 - ldr r1, [r0] - ldr r0, _021D91C4 ; =errno - str r2, [sp] - str r2, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _021D91C8 ; =UNK04_0220BF3C - bl MOD04_021DA388 - bl atol - ldr r1, _021D91C4 ; =errno - ldr r1, [r1] - cmp r1, #0x22 - bne _021D8F9C - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91CC ; =0x00004E85 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xc - ldmia sp!, {r4, r5, pc} -_021D8F9C: - cmp r0, #0xc8 - beq _021D8FC8 - ldr r2, _021D91BC ; =UNK04_02210468 - ldr r1, _021D91D0 ; =0x000059D8 - ldr r2, [r2] - add r1, r0, r1 - add r0, r2, #0x1000 - str r1, [r0, #8] - add sp, sp, #4 - mov r0, #0x12 - ldmia sp!, {r4, r5, pc} -_021D8FC8: - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91D4 ; =0x0000100C - ldr r3, [r0] - ldr r1, _021D91D8 ; =UNK04_0220BF48 - add r0, r3, #0x1000 - ldr r0, [r0, #0x314] - add r2, r3, r2 - mov r3, #4 - bl MOD04_021DA334 - cmp r0, #0 - bgt _021D9014 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91CC ; =0x00004E85 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xe - ldmia sp!, {r4, r5, pc} -_021D9014: - ldr r1, _021D91BC ; =UNK04_02210468 - ldr r0, _021D91D4 ; =0x0000100C - ldr r2, [r1] - add r1, sp, #0 - add r0, r2, r0 - mov r2, #0xa - bl strtol - ldr r2, _021D91BC ; =UNK04_02210468 - ldr r1, _021D91D4 ; =0x0000100C - ldr r5, [r2] - mov r4, r0 - add r0, r5, r1 - bl strlen - ldr r1, _021D91D4 ; =0x0000100C - ldr r2, [sp] - add r1, r5, r1 - add r0, r1, r0 - cmp r2, r0 - ldrne r1, _021D91CC ; =0x00004E85 - addne r0, r5, #0x1000 - strne r1, [r0, #8] - addne sp, sp, #4 - movne r0, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D91DC ; =0x00004E20 - add r1, r5, #0x1000 - add r0, r4, r0 - str r0, [r1, #8] - cmp r4, #0x64 - bge _021D91B0 - ldr ip, _021D91BC ; =UNK04_02210468 - mov r0, #0 - ldr r1, [ip] - ldr r5, _021D91E0 ; =0x00001052 - add r1, r1, #0x1000 - strb r0, [r1, #0x52] - ldr r2, [ip] - ldr r1, _021D91E4 ; =UNK04_0220BF54 - add r2, r2, #0x1000 - strb r0, [r2, #0x1f] - ldr r2, [ip] - ldr r3, _021D91E8 ; =0x0000012D - add r2, r2, #0x1000 - strb r0, [r2, #0x17f] - ldr r2, [ip] - add r2, r2, #0x1000 - strb r0, [r2, #0x10] - ldr r2, [ip] - add r2, r2, #0x1000 - strb r0, [r2, #0x188] - ldr r2, [ip] - add r0, r2, #0x1000 - ldr r0, [r0, #0x314] - add r2, r2, r5 - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91EC ; =0x0000101F - ldr r3, [r0] - ldr r1, _021D91F0 ; =UNK04_0220BF5C - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #0x33 - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91F4 ; =0x0000117F - ldr r3, [r0] - ldr r1, _021D91F8 ; =UNK04_0220BF64 - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #9 - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D91FC ; =0x00001010 - ldr r3, [r0] - ldr r1, _021D9200 ; =UNK04_0220BF70 - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #0xf - bl MOD04_021DA334 - ldr r0, _021D91BC ; =UNK04_02210468 - ldr r2, _021D9204 ; =0x00001188 - ldr r3, [r0] - ldr r1, _021D9208 ; =UNK04_0220BF7C - add r0, r3, #0x1000 - add r2, r3, r2 - ldr r0, [r0, #0x314] - mov r3, #0x41 - bl MOD04_021DA2F4 - ldr r0, _021D91BC ; =UNK04_02210468 - mov r1, #0 - ldr r0, [r0] - cmp r4, #0x28 - add r0, r0, #0x1000 - strb r1, [r0, #0x1b3] - ldrne r0, _021D920C ; =UNK04_02210464 - movne r1, #1 - strne r1, [r0] - ldreq r0, _021D920C ; =UNK04_02210464 - moveq r1, #2 - streq r1, [r0] -_021D91B0: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021D91BC: .word UNK04_02210468 -_021D91C0: .word UNK04_0220BF34 -_021D91C4: .word errno -_021D91C8: .word UNK04_0220BF3C -_021D91CC: .word 0x00004E85 -_021D91D0: .word 0x000059D8 -_021D91D4: .word 0x0000100C -_021D91D8: .word UNK04_0220BF48 -_021D91DC: .word 0x00004E20 -_021D91E0: .word 0x00001052 -_021D91E4: .word UNK04_0220BF54 -_021D91E8: .word 0x0000012D -_021D91EC: .word 0x0000101F -_021D91F0: .word UNK04_0220BF5C -_021D91F4: .word 0x0000117F -_021D91F8: .word UNK04_0220BF64 -_021D91FC: .word 0x00001010 -_021D9200: .word UNK04_0220BF70 -_021D9204: .word 0x00001188 -_021D9208: .word UNK04_0220BF7C -_021D920C: .word UNK04_02210464 - arm_func_end MOD04_021D8F08 - - arm_func_start MOD04_021D9210 -MOD04_021D9210: ; 0x021D9210 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r0, _021D93F4 ; =UNK04_02210468 - mov r1, #0 - ldr r0, [r0] - add r2, r0, #0x1000 - ldr r0, [r2, #0x314] - ldr r5, [r2, #0x20c] - ldr r4, [r2, #0x210] - bl MOD04_021DA3DC - cmp r0, #1 - beq _021D9260 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D93F8 ; =0x00004E84 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xe - ldmia sp!, {r4, r5, pc} -_021D9260: - bl MOD04_021D8F08 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0xe - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r1, _021D93F8 ; =0x00004E84 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r2, [r0, #8] - cmp r2, r1 - bge _021D9334 - ldr r0, _021D93FC ; =0x00004E22 - cmp r2, r0 - bne _021D9328 - ldr r0, _021D9400 ; =UNK04_0220BF88 - ldr r1, _021D9404 ; =0x0000071F - blx r5 - movs r5, r0 - bne _021D92D0 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D93F8 ; =0x00004E84 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_021D92D0: - add r1, r5, #0x1f - ldr r0, _021D9408 ; =UNK04_0221046C - bic r1, r1, #0x1f - bl FUN_02096710 - cmp r0, #1 - beq _021D9318 - ldr r0, _021D940C ; =UNK04_0220BF98 - mov r1, r5 - mov r2, #0 - blx r4 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D93F8 ; =0x00004E84 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0xf - ldmia sp!, {r4, r5, pc} -_021D9318: - ldr r0, _021D940C ; =UNK04_0220BF98 - mov r1, r5 - mov r2, #0 - blx r4 -_021D9328: - add sp, sp, #4 - mov r0, #0x15 - ldmia sp!, {r4, r5, pc} -_021D9334: - ldr r0, _021D9410 ; =0x00004E88 - cmp r2, r0 - beq _021D9350 - ldr r0, _021D9414 ; =0x00004E8C - cmp r2, r0 - beq _021D9378 - b _021D93E8 -_021D9350: - ldr r0, _021D9408 ; =UNK04_0221046C - bl FUN_02096570 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D9410 ; =0x00004E88 - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0x10 - ldmia sp!, {r4, r5, pc} -_021D9378: - ldr r0, _021D9400 ; =UNK04_0220BF88 - mov r1, #0x700 - blx r5 - movs r5, r0 - bne _021D93AC - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D9414 ; =0x00004E8C - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0x11 - ldmia sp!, {r4, r5, pc} -_021D93AC: - add r0, r5, #0x1f - bic r0, r0, #0x1f - bl DWCi_AUTH_MakeWiFiID - ldr r0, _021D940C ; =UNK04_0220BF98 - mov r1, r5 - mov r2, #0 - blx r4 - ldr r0, _021D93F4 ; =UNK04_02210468 - ldr r2, _021D9414 ; =0x00004E8C - ldr r1, [r0] - add sp, sp, #4 - add r1, r1, #0x1000 - str r2, [r1, #8] - mov r0, #0x11 - ldmia sp!, {r4, r5, pc} -_021D93E8: - mov r0, #0x12 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021D93F4: .word UNK04_02210468 -_021D93F8: .word 0x00004E84 -_021D93FC: .word 0x00004E22 -_021D9400: .word UNK04_0220BF88 -_021D9404: .word 0x0000071F -_021D9408: .word UNK04_0221046C -_021D940C: .word UNK04_0220BF98 -_021D9410: .word 0x00004E88 -_021D9414: .word 0x00004E8C - arm_func_end MOD04_021D9210 - - arm_func_start MOD04_021D9418 -MOD04_021D9418: ; 0x021D9418 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sb, #0 - mov r0, #1 - ldr r7, _021D96D4 ; =0x00001388 - ldr fp, _021D96D8 ; =0x000082EA - ldr r5, _021D96DC ; =UNK04_02210468 - ldr r4, _021D96E0 ; =0x000013D8 - mov r6, sb - str sb, [sp, #8] - str sb, [sp, #0xc] - str r0, [sp, #4] -_021D9448: - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r1, [r0, #0x314] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021D9470 - ldr r0, _021D96E4 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021D9470: - ldr r0, [r5] - add r1, r0, #0x1000 - ldr r0, [r1, #0x314] - add r0, r0, #0x1000 - ldr r0, [r0, #0x20] - cmp r0, #8 - beq _021D9518 - ldr r0, _021D96E8 ; =0x00004E84 - str r0, [r1, #8] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - add r0, r0, #0x1000 - ldr r0, [r0, #0x20] - cmp r0, #7 - bne _021D94C0 - mov r0, #0x14 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D94C0: - cmp sb, #2 - ble _021D9508 - cmp r0, #2 - bne _021D94E0 - mov r0, #9 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D94E0: - cmp r0, #3 - bne _021D94F8 - mov r0, #0xb - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D94F8: - mov r0, #0xd - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D9508: - ldr r0, [sp, #4] - add sb, sb, #1 - str r0, [sp] - b _021D9598 -_021D9518: - bl MOD04_021D9210 - cmp r0, #0x10 - beq _021D9544 - cmp r0, #0x11 - beq _021D956C - cmp r0, #0x15 - bne _021D9578 - mov r0, #0x15 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D9544: - cmp sb, #2 - ble _021D955C - mov r0, #0x10 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D955C: - ldr r0, [sp, #8] - add sb, sb, #1 - str r0, [sp] - b _021D9598 -_021D956C: - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D9578: - cmp sb, #2 - blt _021D958C - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D958C: - ldr r0, [sp, #4] - add sb, sb, #1 - str r0, [sp] -_021D9598: - bl OS_GetTick - mov r8, r0 - mov sl, r1 - bl OS_GetTick - subs r2, r0, r8 - sbc r0, r1, sl - mov r1, r0, lsl #6 - ldr r3, [sp, #0xc] - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - mov r2, fp - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r7 - bhs _021D965C -_021D95D4: - ldr r0, [r5] - add r0, r0, r4 - bl OS_LockMutex - ldr r2, [r5] - add r1, r2, #0x1000 - ldr r0, [r1, #0x3f0] - cmp r0, #1 - bne _021D961C - ldr r2, _021D96E8 ; =0x00004E84 - ldr r0, _021D96E0 ; =0x000013D8 - str r2, [r1, #8] - ldr r1, [r5] - add r0, r1, r0 - bl OS_UnlockMutex - mov r0, #0x14 - bl MOD04_021D8D18 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D961C: - add r0, r2, r4 - bl OS_UnlockMutex - mov r0, r7 - bl OS_Sleep - bl OS_GetTick - subs r2, r0, r8 - sbc r0, r1, sl - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - mov r2, fp - mov r3, r6 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r7 - blo _021D95D4 -_021D965C: - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - bl MOD04_021DAE4C - ldr r0, [r5] - add r0, r0, r4 - bl OS_LockMutex - ldr r0, [sp] - bl MOD04_021D96EC - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r2, [r5] - add r1, r2, #0x1000 - ldr r0, [r1, #4] - cmp r0, #0 - beq _021D96C0 - ldr r2, _021D96E8 ; =0x00004E84 - ldr r0, _021D96E0 ; =0x000013D8 - str r2, [r1, #8] - ldr r1, [r5] - add r0, r1, r0 - bl OS_UnlockMutex - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D96C0: - add r0, r2, r4 - bl OS_UnlockMutex - b _021D9448 - arm_func_end MOD04_021D9418 - - arm_func_start MOD04_021D96CC -MOD04_021D96CC: ; 0x021D96CC - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021D96D4: .word 0x00001388 -_021D96D8: .word 0x000082EA -_021D96DC: .word UNK04_02210468 -_021D96E0: .word 0x000013D8 -_021D96E4: .word 0x00001B34 -_021D96E8: .word 0x00004E84 - arm_func_end MOD04_021D96CC - - arm_func_start MOD04_021D96EC -MOD04_021D96EC: ; 0x021D96EC - stmdb sp!, {r4, lr} - ldr r1, _021D97E0 ; =UNK04_0220BEB4 - mov r4, r0 - ldr r0, [r1] - ldr r1, _021D97E4 ; =UNK04_0220BFA4 - bl strcmp - cmp r0, #0 - ldrne r0, _021D97E0 ; =UNK04_0220BEB4 - movne r1, #1 - strne r1, [r0, #0x14] - ldr r0, _021D97E8 ; =UNK04_02210468 - ldr r1, _021D97E0 ; =UNK04_0220BEB4 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r2, [r0, #0x20c] - str r2, [r1, #0xc] - ldr r2, [r0, #0x210] - str r2, [r1, #0x10] - ldr r0, [r0, #0x314] - bl MOD04_021DB608 - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - cmp r4, #1 - bne _021D9758 - ldr r0, _021D97EC ; =UNK04_0221046C - bl DWCi_BM_GetWiFiInfo -_021D9758: - ldr r0, _021D97E8 ; =UNK04_02210468 - ldr r2, _021D97F0 ; =0x000011CC - ldr r3, [r0] - add r0, r3, #0x1000 - ldr r0, [r0, #0x314] - add r1, r3, #0x1200 - add r2, r3, r2 - bl MOD04_021D8D60 - ldr r2, _021D97E8 ; =UNK04_02210468 - ldr r1, [r2] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2] - add r0, r0, #0x1000 - ldr r1, [r0, #4] - cmp r1, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, [r0, #0x314] - bl MOD04_021DB570 - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, _021D97F4 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _021D97E8 ; =UNK04_02210468 - ldr r2, [r1] - sub r1, r0, #1 - add r0, r2, #0x1000 - ldr r0, [r0, #0x314] - bl MOD04_021DB4A4 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_021D97E0: .word UNK04_0220BEB4 -_021D97E4: .word UNK04_0220BFA4 -_021D97E8: .word UNK04_02210468 -_021D97EC: .word UNK04_0221046C -_021D97F0: .word 0x000011CC -_021D97F4: .word OSi_ThreadInfo - arm_func_end MOD04_021D96EC - - arm_func_start MOD04_021D97F8 -MOD04_021D97F8: ; 0x021D97F8 - stmdb sp!, {r4, lr} - ldr r1, _021D9874 ; =UNK04_02210468 - mov r4, r0 - ldr r1, [r1] - cmp r1, #0 - bne _021D981C - mov r1, #0 - mov r2, #0x1c4 - bl MI_CpuFill8 -_021D981C: - ldr r1, _021D9874 ; =UNK04_02210468 - ldr r0, _021D9878 ; =0x00001008 - ldr r2, [r1] - mov r1, r4 - add r0, r2, r0 - mov r2, #0x1c4 - bl MI_CpuCopy8 - ldr r1, [r4] - ldr r0, _021D987C ; =0x00004E20 - cmp r1, r0 - blt _021D9854 - ldr r0, _021D9880 ; =0x00007530 - cmp r1, r0 - blt _021D985C -_021D9854: - ldr r0, _021D9884 ; =0x00005206 - str r0, [r4] -_021D985C: - ldr r1, [r4] - ldr r0, _021D9888 ; =0x00004E84 - cmp r1, r0 - rsbge r0, r1, #0 - strge r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_021D9874: .word UNK04_02210468 -_021D9878: .word 0x00001008 -_021D987C: .word 0x00004E20 -_021D9880: .word 0x00007530 -_021D9884: .word 0x00005206 -_021D9888: .word 0x00004E84 - arm_func_end MOD04_021D97F8 - - arm_func_start MOD04_021D988C -MOD04_021D988C: ; 0x021D988C - stmdb sp!, {r4, lr} - ldr r0, _021D98D4 ; =UNK04_02210468 - ldr r1, [r0] - cmp r1, #0 - moveq r0, #0x16 - ldmeqia sp!, {r4, pc} - ldr r0, _021D98D8 ; =0x000013D8 - add r0, r1, r0 - bl OS_LockMutex - ldr r1, _021D98D4 ; =UNK04_02210468 - ldr r0, _021D98D8 ; =0x000013D8 - ldr r2, [r1] - add r1, r2, #0x1000 - add r0, r2, r0 - ldr r4, [r1, #4] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021D98D4: .word UNK04_02210468 -_021D98D8: .word 0x000013D8 - arm_func_end MOD04_021D988C - - arm_func_start MOD04_021D98DC -MOD04_021D98DC: ; 0x021D98DC - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021D9914 ; =UNK04_02210468 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021D9918 ; =0x00001318 - add r0, r1, r0 - bl OS_JoinThread - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021D9914: .word UNK04_02210468 -_021D9918: .word 0x00001318 - arm_func_end MOD04_021D98DC - - arm_func_start MOD04_021D991C -MOD04_021D991C: ; 0x021D991C - stmdb sp!, {r4, lr} - ldr r0, _021D996C ; =UNK04_02210468 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r1, r0, #0x1000 - ldr r0, [r1, #0x314] - ldr r4, [r1, #0x210] - cmp r0, #0 - beq _021D9948 - bl MOD04_021DAE4C -_021D9948: - ldr r1, _021D996C ; =UNK04_02210468 - ldr r0, _021D9970 ; =UNK04_0220BFC4 - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _021D996C ; =UNK04_02210468 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_021D996C: .word UNK04_02210468 -_021D9970: .word UNK04_0220BFC4 - arm_func_end MOD04_021D991C - - arm_func_start MOD04_021D9974 -MOD04_021D9974: ; 0x021D9974 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021D9A0C ; =UNK04_02210468 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021D9A10 ; =0x000013D8 - add r0, r1, r0 - bl OS_LockMutex - ldr r2, _021D9A0C ; =UNK04_02210468 - mov r3, #1 - ldr r0, [r2] - ldr r1, _021D9A10 ; =0x000013D8 - add r0, r0, #0x1000 - str r3, [r0, #0x3f0] - ldr r0, [r2] - add r0, r0, r1 - bl OS_UnlockMutex - ldr r0, _021D9A0C ; =UNK04_02210468 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - cmp r0, #0 - beq _021D99DC - bl MOD04_021DB440 -_021D99DC: - ldr r0, _021D9A0C ; =UNK04_02210468 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021D9A14 ; =0x00001318 - add r0, r1, r0 - bl OS_JoinThread - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021D9A0C: .word UNK04_02210468 -_021D9A10: .word 0x000013D8 -_021D9A14: .word 0x00001318 - arm_func_end MOD04_021D9974 - - arm_func_start MOD04_021D9A18 -MOD04_021D9A18: ; 0x021D9A18 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r1, _021D9ABC ; =UNK04_02210468 - ldr r0, _021D9AC0 ; =0x000013D8 - ldr r1, [r1] - add r0, r1, r0 - bl OS_InitMutex - ldr r1, _021D9ABC ; =UNK04_02210468 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x1000 - str r2, [r0, #0x3f0] - ldr r1, [r1] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - beq _021D9A74 - ldr r0, _021D9AC4 ; =0x00001318 - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {pc} -_021D9A74: - ldr r2, _021D9ABC ; =UNK04_02210468 - ldr r0, _021D9AC4 ; =0x00001318 - ldr lr, [r2] - mov r3, #0x1000 - ldr r1, _021D9AC8 ; =MOD04_021D9418 - str r3, [sp] - mov ip, #0x10 - add r0, lr, r0 - add r3, lr, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r1, _021D9ABC ; =UNK04_02210468 - ldr r0, _021D9AC4 ; =0x00001318 - ldr r1, [r1] - add r0, r1, r0 - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021D9ABC: .word UNK04_02210468 -_021D9AC0: .word 0x000013D8 -_021D9AC4: .word 0x00001318 -_021D9AC8: .word MOD04_021D9418 - arm_func_end MOD04_021D9A18 - - arm_func_start MOD04_021D9ACC -MOD04_021D9ACC: ; 0x021D9ACC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021D9BFC ; =UNK04_02210468 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - addne sp, sp, #4 - ldr r2, [r5, #0x40] - movne r0, #2 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D9C00 ; =UNK04_0220BFD4 - ldr r1, _021D9C04 ; =0x000013F4 - blx r2 - ldr r1, _021D9BFC ; =UNK04_02210468 - cmp r0, #0 - str r0, [r1] - addeq sp, sp, #4 - moveq r0, #2 - ldmeqia sp!, {r4, r5, pc} - ldr r2, _021D9C04 ; =0x000013F4 - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021D9BFC ; =UNK04_02210468 - ldr r2, _021D9C08 ; =0x00001008 - ldr r0, [r1] - ldr r3, _021D9C0C ; =UNK04_02210464 - add r0, r0, #0x1000 - str r4, [r0, #0x314] - ldr r0, [r1] - mov r1, #0 - add r0, r0, r2 - mov r2, #0x1c4 - str r1, [r3] - bl MI_CpuFill8 - ldr r2, _021D9BFC ; =UNK04_02210468 - ldr r3, _021D9C10 ; =0x00004E84 - ldr r0, [r2] - ldr r1, _021D9C14 ; =0x000011CC - add r0, r0, #0x1000 - str r3, [r0, #8] - ldr lr, [r2] - mov r4, #4 - add ip, lr, r1 -_021D9B7C: - ldmia r5!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _021D9B7C - ldmia r5, {r0, r1} - stmia ip, {r0, r1} - add r0, lr, #0x1100 - mov r2, #0 - strh r2, [r0, #0xfe] - ldr r1, _021D9BFC ; =UNK04_02210468 - mov r0, #1 - ldr r1, [r1] - add r1, r1, #0x1000 - strb r2, [r1, #0x20b] - bl MOD04_021D96EC - ldr r2, _021D9BFC ; =UNK04_02210468 - ldr r1, [r2] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021D9C18 ; =UNK04_02210460 - mov r1, #0 - str r1, [r0] - bl MOD04_021D9A18 - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021D9BFC: .word UNK04_02210468 -_021D9C00: .word UNK04_0220BFD4 -_021D9C04: .word 0x000013F4 -_021D9C08: .word 0x00001008 -_021D9C0C: .word UNK04_02210464 -_021D9C10: .word 0x00004E84 -_021D9C14: .word 0x000011CC -_021D9C18: .word UNK04_02210460 - arm_func_end MOD04_021D9ACC - - arm_func_start MOD04_021D9C1C -MOD04_021D9C1C: ; 0x021D9C1C - ldr r1, _021D9C28 ; =UNK04_0220BEB4 - str r0, [r1] - bx lr - .align 2, 0 -_021D9C28: .word UNK04_0220BEB4 - arm_func_end MOD04_021D9C1C - - arm_func_start MOD04_021D9C2C -MOD04_021D9C2C: ; 0x021D9C2C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x28 - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov ip, #2 - ldr r2, _021D9F30 ; =UNK04_0220BFE4 - add r0, sp, #4 - mov r1, #0x21 - mov r3, #1 - str ip, [sp] - bl OS_SNPrintf - add r0, sp, #4 - bl strlen - mov r3, r0 - ldr r1, _021D9F34 ; =UNK04_0220BFF0 - mov r0, r6 - add r2, sp, #4 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl strlen - mov r3, r0 - ldr r1, _021D9F38 ; =UNK04_0220BFF8 - mov r0, r6 - mov r2, r5 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0xe - bl strlen - mov r3, r0 - ldr r1, _021D9F3C ; =UNK04_0220C000 - mov r0, r6 - add r2, r5, #0xe - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x41 - bl strlen - mov r3, r0 - ldr r1, _021D9F40 ; =UNK04_0220C008 - mov r0, r6 - add r2, r5, #0x41 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x6f - bl strlen - mov r3, r0 - ldr r1, _021D9F44 ; =UNK04_0220C010 - mov r0, r6 - add r2, r5, #0x6f - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x15 - bl strlen - mov r3, r0 - ldr r1, _021D9F48 ; =UNK04_0220C018 - mov r0, r6 - add r2, r5, #0x15 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1a - bl strlen - mov r3, r0 - ldr r1, _021D9F4C ; =UNK04_0220C020 - mov r0, r6 - add r2, r5, #0x1a - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1d - bl strlen - mov r3, r0 - ldr r1, _021D9F50 ; =UNK04_0220C028 - mov r0, r6 - add r2, r5, #0x1d - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1f - bl strlen - mov r3, r0 - ldr r1, _021D9F54 ; =UNK04_0220C030 - mov r0, r6 - add r2, r5, #0x1f - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x2c - bl strlen - mov r3, r0 - ldr r1, _021D9F58 ; =UNK04_0220C038 - mov r0, r6 - add r2, r5, #0x2c - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x2f - bl strlen - mov r3, r0 - ldr r1, _021D9F5C ; =UNK04_0220C040 - mov r0, r6 - add r2, r5, #0x2f - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x34 - bl strlen - mov r3, r0 - ldr r1, _021D9F60 ; =UNK04_0220C048 - mov r0, r6 - add r2, r5, #0x34 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x7e - bl wcslen - mov r3, r0 - ldr r1, _021D9F64 ; =UNK04_0220C050 - mov r0, r6 - add r2, r5, #0x7e - mov r3, r3, lsl #1 - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #1 - bne _021D9ED0 - add r0, r5, #0x4e - bl strlen - mov r3, r0 - ldr r1, _021D9F68 ; =UNK04_0220C058 - mov r0, r6 - add r2, r5, #0x4e - bl MOD04_021DAB68 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} -_021D9ED0: - ldr r2, _021D9F6C ; =UNK04_0220C060 - mov ip, #2 - add r0, sp, #4 - mov r1, #0x21 - mov r3, #1 - str ip, [sp] - bl OS_SNPrintf - ldr r1, _021D9F70 ; =UNK04_0220C078 - add r2, sp, #4 - mov r0, r6 - bl MOD04_021DAC98 - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _021D9F74 ; =UNK04_0220C084 - mov r0, r6 - add r2, r5, #0x15 - bl MOD04_021DAC98 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021D9F30: .word UNK04_0220BFE4 -_021D9F34: .word UNK04_0220BFF0 -_021D9F38: .word UNK04_0220BFF8 -_021D9F3C: .word UNK04_0220C000 -_021D9F40: .word UNK04_0220C008 -_021D9F44: .word UNK04_0220C010 -_021D9F48: .word UNK04_0220C018 -_021D9F4C: .word UNK04_0220C020 -_021D9F50: .word UNK04_0220C028 -_021D9F54: .word UNK04_0220C030 -_021D9F58: .word UNK04_0220C038 -_021D9F5C: .word UNK04_0220C040 -_021D9F60: .word UNK04_0220C048 -_021D9F64: .word UNK04_0220C050 -_021D9F68: .word UNK04_0220C058 -_021D9F6C: .word UNK04_0220C060 -_021D9F70: .word UNK04_0220C078 -_021D9F74: .word UNK04_0220C084 - arm_func_end MOD04_021D9C2C - - arm_func_start MOD04_021D9F78 -MOD04_021D9F78: ; 0x021D9F78 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x8c - mov r6, r1 - mov r1, #0 - mov r2, #0x94 - mov r4, r0 - bl MI_CpuFill8 - ldr r3, [r6] - ldr r5, [r6, #4] - mov r0, #0 - cmp r5, r0 - cmpeq r3, r0 - beq _021D9FC4 - ldr r2, _021DA218 ; =UNK04_0220C094 - mov r0, r4 - mov r1, #0xe - str r5, [sp] - bl OS_SNPrintf - b _021D9FE0 -_021D9FC4: - ldr r3, [r6, #8] - ldr r5, [r6, #0xc] - ldr r2, _021DA218 ; =UNK04_0220C094 - mov r0, r4 - mov r1, #0xe - str r5, [sp] - bl OS_SNPrintf -_021D9FE0: - ldrh r3, [r6, #0x10] - ldr r2, _021DA21C ; =UNK04_0220C09C - add r0, r4, #0xe - mov r1, #7 - bl OS_SNPrintf - ldr r0, _021DA220 ; =0x027FFE0C - ldrb r0, [r0] - cmp r0, #0 - bne _021DA008 - bl OS_Terminate -_021DA008: - ldr r0, _021DA220 ; =0x027FFE0C - add r1, r4, #0x15 - mov r2, #4 - bl MI_CpuCopy8 - ldr r0, _021DA224 ; =0x027FFE10 - ldrb r0, [r0] - cmp r0, #0 - bne _021DA02C - bl OS_Terminate -_021DA02C: - ldr r0, _021DA224 ; =0x027FFE10 - add r1, r4, #0x1a - mov r2, #2 - bl MI_CpuCopy8 - mov r1, #0x30 - add r0, sp, #0x16 - strb r1, [r4, #0x1d] - bl OS_GetMacAddress - ldr r5, _021DA228 ; =UNK04_0220C0A4 - add r7, sp, #0x16 - add r6, r4, #0x1f - mov r8, #0 -_021DA05C: - ldrb r2, [r7] - mov r0, r6 - mov r1, r5 - bl OS_SPrintf - add r8, r8, #1 - cmp r8, #6 - add r7, r7, #1 - add r6, r6, #2 - blt _021DA05C - add r0, sp, #0x38 - bl OS_GetOwnerInfo - ldrb r0, [sp, #0x38] - ldr r2, _021DA228 ; =UNK04_0220C0A4 - mov r1, #3 - cmp r0, #6 - movhi r0, #1 - strhib r0, [sp, #0x38] - ldrb r3, [sp, #0x38] - add r0, r4, #0x2c - bl OS_SNPrintf - add r0, sp, #0x3c - add r1, r4, #0x7e - mov r2, #0x14 - bl MI_CpuCopy8 - ldrb r1, [sp, #0x3b] - ldr r2, _021DA22C ; =UNK04_0220C0AC - add r0, r4, #0x2f - str r1, [sp] - ldrb r3, [sp, #0x3a] - mov r1, #5 - bl OS_SNPrintf - add r0, sp, #0x1c - bl RTC_GetDate - cmp r0, #0 - bne _021DA0F8 - add r0, sp, #0x2c - bl RTC_GetTime - cmp r0, #0 - beq _021DA104 -_021DA0F8: - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DA104: - ldr r0, [sp, #0x20] - ldr r2, _021DA230 ; =UNK04_0220C0B8 - str r0, [sp] - ldr r1, [sp, #0x24] - add r0, r4, #0x34 - str r1, [sp, #4] - ldr r3, [sp, #0x2c] - mov r1, #0xd - str r3, [sp, #8] - ldr r3, [sp, #0x30] - str r3, [sp, #0xc] - ldr r3, [sp, #0x34] - str r3, [sp, #0x10] - ldr r3, [sp, #0x1c] - bl OS_SNPrintf - bl OS_DisableInterrupts - mov sb, r0 - bl WCM_GetApMacAddress - mov r8, r0 - mov r1, #6 - bl DC_InvalidateRange - cmp r8, #0 - bne _021DA174 - mov r0, sb - bl OS_RestoreInterrupts - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DA174: - add r7, r4, #0x41 - mov r6, #0 - ldr r5, _021DA228 ; =UNK04_0220C0A4 -_021DA180: - ldrb r2, [r8, r6] - mov r0, r7 - mov r1, r5 - bl OS_SPrintf - add r6, r6, #1 - cmp r6, #6 - add r7, r7, #2 - blt _021DA180 - bl MOD04_021EBAB8 - mov r3, r0 - ldr r2, _021DA234 ; =UNK04_0220C0D4 - add r0, r4, #0x6f - mov r1, #0xe - bl OS_SNPrintf - add r0, sp, #0x14 - bl WCM_GetApEssid - mov r5, r0 - mov r1, #0x20 - bl DC_InvalidateRange - cmp r5, #0 - bne _021DA1E8 - mov r0, sb - bl OS_RestoreInterrupts - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DA1E8: - mov r0, r5 - add r1, r4, #0x72 - bl MOD04_021EE5F4 - mov r0, r5 - add r1, r4, #0x4e - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, sb - bl OS_RestoreInterrupts - mov r0, #1 - add sp, sp, #0x8c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021DA218: .word UNK04_0220C094 -_021DA21C: .word UNK04_0220C09C -_021DA220: .word 0x027FFE0C -_021DA224: .word 0x027FFE10 -_021DA228: .word UNK04_0220C0A4 -_021DA22C: .word UNK04_0220C0AC -_021DA230: .word UNK04_0220C0B8 -_021DA234: .word UNK04_0220C0D4 - arm_func_end MOD04_021D9F78 - - arm_func_start MOD04_021DA238 -MOD04_021DA238: ; 0x021DA238 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0 - bl DWCi_BM_GetWiFiInfo - add r1, sp, #0 - mov r0, r4 - bl MOD04_021D9F78 - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DA238 - arm_func_start MOD04_021DA260 MOD04_021DA260: ; 0x021DA260 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} @@ -60168,197 +58664,6 @@ UNK04_0220BE70: ; 0x0220BE70 .byte 0x0A, 0x00, 0x00, 0x00 .section .data - .global UNK_0220BEB4 -UNK04_0220BEB4: ; 0x0220BEB4 - .word UNK04_0220BED0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00 - - .global UNK04_0220BED0 -UNK04_0220BED0: ; 0x0220BED0 - .asciz "https://nas.test.nintendowifi.net/ac" - - .balign 4, 0 - .global UNK_0220BEF8 -UNK04_0220BEF8: ; 0x0220BEF8 - .byte 0x61, 0x63, 0x63, 0x74, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x00 - - .global UNK_0220BF04 -UNK04_0220BF04: ; 0x0220BF04 - .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220BF0C -UNK04_0220BF0C: ; 0x0220BF0C - .byte 0x6C, 0x6F, 0x67, 0x69, 0x6E, 0x00, 0x00, 0x00 - - .global UNK_0220BF14 -UNK04_0220BF14: ; 0x0220BF14 - .byte 0x67, 0x73, 0x62, 0x72, 0x63, 0x64, 0x00, 0x00 - - .global UNK_0220BF1C -UNK04_0220BF1C: ; 0x0220BF1C - .asciz "Y" - - .balign 4, 0 - .global UNK_0220BF20 -UNK04_0220BF20: ; 0x0220BF20 - .byte 0x69, 0x73, 0x77, 0x66, 0x63, 0x00, 0x00, 0x00 - - .global UNK_0220BF28 -UNK04_0220BF28: ; 0x0220BF28 - .byte 0x69, 0x6E, 0x67, 0x61, 0x6D, 0x65, 0x73, 0x6E, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF34 -UNK04_0220BF34: ; 0x0220BF34 - .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF3C -UNK04_0220BF3C: ; 0x0220BF3C - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220BF48 -UNK04_0220BF48: ; 0x0220BF48 - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF54 -UNK04_0220BF54: ; 0x0220BF54 - .byte 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00 - - .global UNK_0220BF5C -UNK04_0220BF5C: ; 0x0220BF5C - .byte 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x00 - - .global UNK_0220BF64 -UNK04_0220BF64: ; 0x0220BF64 - .byte 0x63, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220BF70 -UNK04_0220BF70: ; 0x0220BF70 - .byte 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF7C -UNK04_0220BF7C: ; 0x0220BF7C - .byte 0x53, 0x65, 0x74, 0x2D, 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x00, 0x00 - - .global UNK_0220BF88 -UNK04_0220BF88: ; 0x0220BF88 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BF98 -UNK04_0220BF98: ; 0x0220BF98 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00 - - .balign 4, 0 - .global UNK_0220BFA4 -UNK04_0220BFA4: ; 0x0220BFA4 - .asciz "https://nas.nintendowifi.net/ac" - - .balign 4, 0 - .global UNK_0220BFC4 -UNK04_0220BFC4: ; 0x0220BFC4 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BFD4 -UNK04_0220BFD4: ; 0x0220BFD4 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00 - - .global UNK_0220BFE4 -UNK04_0220BFE4: ; 0x0220BFE4 - .byte 0x25, 0x30, 0x33, 0x64, 0x25, 0x30, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220BFF0 -UNK04_0220BFF0: ; 0x0220BFF0 - .byte 0x73, 0x64, 0x6B, 0x76, 0x65, 0x72, 0x00, 0x00 - - .global UNK_0220BFF8 -UNK04_0220BFF8: ; 0x0220BFF8 - .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00 - - .global UNK_0220C000 -UNK04_0220C000: ; 0x0220C000 - .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00 - - .global UNK_0220C008 -UNK04_0220C008: ; 0x0220C008 - .byte 0x62, 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00 - - .global UNK_0220C010 -UNK04_0220C010: ; 0x0220C010 - .byte 0x61, 0x70, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00 - - .global UNK_0220C018 -UNK04_0220C018: ; 0x0220C018 - .byte 0x67, 0x61, 0x6D, 0x65, 0x63, 0x64, 0x00, 0x00 - - .global UNK_0220C020 -UNK04_0220C020: ; 0x0220C020 - .byte 0x6D, 0x61, 0x6B, 0x65, 0x72, 0x63, 0x64, 0x00 - - .global UNK_0220C028 -UNK04_0220C028: ; 0x0220C028 - .byte 0x75, 0x6E, 0x69, 0x74, 0x63, 0x64, 0x00, 0x00 - - .global UNK_0220C030 -UNK04_0220C030: ; 0x0220C030 - .byte 0x6D, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00 - - .global UNK_0220C038 -UNK04_0220C038: ; 0x0220C038 - .byte 0x6C, 0x61, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C040 -UNK04_0220C040: ; 0x0220C040 - .byte 0x62, 0x69, 0x72, 0x74, 0x68, 0x00, 0x00, 0x00 - - .global UNK_0220C048 -UNK04_0220C048: ; 0x0220C048 - .byte 0x64, 0x65, 0x76, 0x74, 0x69, 0x6D, 0x65, 0x00 - - .global UNK_0220C050 -UNK04_0220C050: ; 0x0220C050 - .byte 0x64, 0x65, 0x76, 0x6E, 0x61, 0x6D, 0x65, 0x00 - - .global UNK_0220C058 -UNK04_0220C058: ; 0x0220C058 - .byte 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C060 -UNK04_0220C060: ; 0x0220C060 - .byte 0x4E, 0x69, 0x74, 0x72, 0x6F, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4B, 0x2F, 0x25 - .byte 0x64, 0x2E, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C078 -UNK04_0220C078: ; 0x0220C078 - .byte 0x55, 0x73, 0x65, 0x72, 0x2D, 0x41, 0x67, 0x65, 0x6E, 0x74, 0x00, 0x00 - - .global UNK_0220C084 -UNK04_0220C084: ; 0x0220C084 - .byte 0x48, 0x54, 0x54, 0x50, 0x5F, 0x58, 0x5F, 0x47, 0x41, 0x4D, 0x45, 0x43, 0x44, 0x00, 0x00, 0x00 - - .global UNK_0220C094 -UNK04_0220C094: ; 0x0220C094 - .byte 0x25, 0x30, 0x31, 0x33, 0x6C, 0x6C, 0x75, 0x00 - - .global UNK_0220C09C -UNK04_0220C09C: ; 0x0220C09C - .byte 0x25, 0x30, 0x33, 0x75, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0A4 -UNK04_0220C0A4: ; 0x0220C0A4 - .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0AC -UNK04_0220C0AC: ; 0x0220C0AC - .byte 0x25, 0x30, 0x32, 0x78, 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0B8 -UNK04_0220C0B8: ; 0x0220C0B8 - .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64 - .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C0D4 -UNK04_0220C0D4: ; 0x0220C0D4 - .byte 0x25, 0x30, 0x32, 0x64, 0x3A, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2D, 0x30, 0x30, 0x00 .global UNK_0220C0E4 UNK04_0220C0E4: ; 0x0220C0E4 @@ -63822,38 +62127,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210460 -UNK04_02210460: ; 0x02210460 - .space 0x4 - - .global UNK04_02210464 -UNK04_02210464: ; 0x02210464 - .space 0x4 - - .global UNK04_02210468 -UNK04_02210468: ; 0x02210468 - .space 0x4 - - .global UNK04_0221046C -UNK04_0221046C: ; 0x0221046C - .space 0x14 - - .global UNK04_02210480 -UNK04_02210480: ; 0x02210480 - .space 0x4 - - .global UNK04_02210484 -UNK04_02210484: ; 0x02210484 - .space 0x4 - - .global UNK04_02210488 -UNK04_02210488: ; 0x02210488 - .space 0x4 - - .global UNK04_0221048C -UNK04_0221048C: ; 0x0221048C - .space 0x4 - .global UNK04_02210490 UNK04_02210490: ; 0x02210490 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021D74E0.s b/arm9/modules/04/asm/mod04_021D74E0.s new file mode 100644 index 00000000..4eba9197 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D74E0.s @@ -0,0 +1,2323 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD04_021D74E0 +MOD04_021D74E0: ; 0x021D74E0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021D7644 ; =UNK04_0220FBC0 + add r4, r1, #0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D74F2 + bl GF_AssertFail +_021D74F2: + ldr r1, _021D7648 ; =0x00001FAC + add r0, r4, #0 + bl AllocFromHeap + ldr r2, _021D7644 ; =UNK04_0220FBC0 + mov r1, #0x1f + str r0, [r2, #4] + add r0, #0x1f + bic r0, r1 + mov r1, #0x1f + lsl r1, r1, #8 + str r0, [r2] + str r5, [r0, r1] + add r3, r1, #0 + ldr r6, [r2] + mov r0, #0 + add r3, #0xc + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x10 + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x14 + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x44 + str r0, [r6, r3] + ldr r0, [r2] + add r1, #0x54 + str r4, [r0, r1] + ldr r1, _021D764C ; =0x0002B020 + add r0, r4, #0 + bl AllocFromHeap + ldr r2, _021D7644 ; =UNK04_0220FBC0 + ldr r1, _021D7650 ; =0x00001F04 + ldr r3, [r2] + str r0, [r3, r1] + ldr r0, [r2] + mov r2, #0 + ldr r0, [r0, r1] + mov r1, #0x1f + add r0, #0x1f + bic r0, r1 + mov r1, #0x2b + lsl r1, r1, #0xc + bl NNS_FndCreateExpHeapEx + ldr r1, _021D7644 ; =UNK04_0220FBC0 + ldr r3, _021D7654 ; =0x00001F08 + ldr r2, [r1] + str r0, [r2, r3] + add r0, r3, #0 + ldr r4, [r1] + mov r2, #0 + add r0, #0x64 + str r2, [r4, r0] + add r4, r3, #0 + ldr r6, [r1] + sub r0, r2, #1 + add r4, #0x54 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x38 + str r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x48 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x58 + str r0, [r6, r4] + add r0, r3, #0 + ldr r4, [r1] + add r0, #0x5c + str r2, [r4, r0] + add r4, r3, #0 + ldr r6, [r1] + mov r0, #1 + add r4, #0x60 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x7a + strb r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x78 + strb r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x79 + strb r2, [r6, r4] + add r2, r3, #0 + ldr r4, [r1] + add r2, #0x70 + str r0, [r4, r2] + add r2, r3, #0 + add r2, #0x74 + ldr r4, [r1] + cmp r5, #0 + str r0, [r4, r2] + beq _021D75FA + ldr r0, [r1] + sub r3, #8 + ldr r0, [r0, r3] + bl FUN_020286EC + bl FUN_02028228 + ldr r2, _021D7644 ; =UNK04_0220FBC0 + ldr r1, _021D7658 ; =0x00001EF0 + ldr r3, [r2] + str r0, [r3, r1] + ldr r0, [r2] + add r1, #0x10 + ldr r0, [r0, r1] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + ldr r1, _021D7644 ; =UNK04_0220FBC0 + ldr r2, [r1] + mov r1, #0x11 + lsl r1, r1, #8 + str r0, [r2, r1] +_021D75FA: + ldr r2, _021D7644 ; =UNK04_0220FBC0 + mov r0, #0 + ldr r3, [r2] + ldr r1, _021D765C ; =0x00001F38 + add r4, r0, #0 + str r0, [r3, r1] + sub r1, #0x20 +_021D7608: + ldr r3, [r2] + add r3, r3, r0 + add r0, r0, #1 + strb r4, [r3, r1] + cmp r0, #0x20 + blt _021D7608 + bl MOD04_021D85B4 + ldr r0, _021D7644 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7658 ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckHasProfile + cmp r0, #0 + bne _021D762C + mov r0, #1 + pop {r4, r5, r6, pc} +_021D762C: + ldr r0, _021D7644 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7658 ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckValidConsole + cmp r0, #0 + beq _021D7640 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D7640: + mov r0, #2 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D7644: .word UNK04_0220FBC0 +_021D7648: .word 0x00001FAC +_021D764C: .word 0x0002B020 +_021D7650: .word 0x00001F04 +_021D7654: .word 0x00001F08 +_021D7658: .word 0x00001EF0 +_021D765C: .word 0x00001F38 + + thumb_func_start MOD04_021D7660 +MOD04_021D7660: ; 0x021D7660 + push {r3, lr} + ldr r0, _021D76A0 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D7698 + ldr r0, _021D76A4 ; =0x00001F08 + ldr r0, [r1, r0] + bl NNS_FndDestroyExpHeap + ldr r0, _021D76A0 ; =UNK04_0220FBC0 + ldr r1, _021D76A8 ; =0x00001F54 + ldr r2, [r0] + ldr r0, [r2, r1] + sub r1, #0x50 + ldr r1, [r2, r1] + bl FreeToHeapExplicit + ldr r1, _021D76A0 ; =UNK04_0220FBC0 + ldr r0, _021D76A8 ; =0x00001F54 + ldr r2, [r1] + ldr r1, [r1, #4] + ldr r0, [r2, r0] + bl FreeToHeapExplicit + ldr r0, _021D76A0 ; =UNK04_0220FBC0 + mov r1, #0 + str r1, [r0, #4] + str r1, [r0] +_021D7698: + bl MOD04_021DD6F0 + pop {r3, pc} + nop +_021D76A0: .word UNK04_0220FBC0 +_021D76A4: .word 0x00001F08 +_021D76A8: .word 0x00001F54 + + thumb_func_start MOD04_021D76AC +MOD04_021D76AC: ; 0x021D76AC + push {lr} + sub sp, #0x64 + ldr r0, _021D779C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #4 + bhi _021D7794 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D76C8: ; jump table + .short _021D76D2 - _021D76C8 - 2 ; case 0 + .short _021D7708 - _021D76C8 - 2 ; case 1 + .short _021D7736 - _021D76C8 - 2 ; case 2 + .short _021D7784 - _021D76C8 - 2 ; case 3 + .short _021D778A - _021D76C8 - 2 ; case 4 +_021D76D2: + ldr r0, _021D77A4 ; =MOD04_021D7DA8 + ldr r1, _021D77A8 ; =MOD04_021D7DEC + bl MOD04_021DD968 + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D77AC ; =0x00001EF4 + mov r3, #0x14 + add r0, r1, r0 + mov r1, #2 + bl MOD04_021DDEE0 + mov r0, #2 + bl MOD04_021DDE7C + bl MOD04_021DDDCC + ldr r1, _021D779C ; =UNK04_0220FBC0 + ldr r0, _021D77A0 ; =0x00001F44 + ldr r2, [r1] + mov r3, #1 + str r3, [r2, r0] + ldr r1, [r1] + mov r2, #0 + add r0, #0x14 + str r2, [r1, r0] +_021D7708: + bl MOD04_021DDD7C + cmp r0, #0 + beq _021D7730 + bl MOD04_021DDC1C + cmp r0, #4 + bne _021D7724 + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #2 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] + b _021D7736 +_021D7724: + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] + b _021D7736 +_021D7730: + bl MOD04_021DDCE8 + b _021D7794 +_021D7736: + bl MOD04_021D7E18 + cmp r0, #0 + blt _021D7798 + ldr r0, _021D779C ; =UNK04_0220FBC0 + ldr r3, _021D77B0 ; =UNK04_0220BEA0 + ldr r1, [r0] + ldr r0, _021D77B4 ; =UNK04_0220BEAC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + lsl r0, r0, #8 + ldr r2, [r1, r0] + add r0, r0, #4 + str r2, [sp, #0xc] + mov r2, #0x20 + str r2, [sp, #0x10] + ldr r2, _021D77B8 ; =0x00001EF0 + add r0, r1, r0 + ldr r1, [r1, r2] + ldr r2, _021D77BC ; =0x000029E7 + bl MOD04_021E0374 + add r0, sp, #0x14 + bl OS_GetOwnerInfo + mov r1, #0 + ldr r2, _021D77C0 ; =MOD04_021D7A7C + add r0, sp, #0x18 + add r3, r1, #0 + bl MOD04_021DFE64 + ldr r0, _021D779C ; =UNK04_0220FBC0 + mov r2, #3 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] +_021D7784: + bl MOD04_021DFF74 + b _021D7794 +_021D778A: + bl MOD04_021DFF74 + add sp, #0x64 + mov r0, #1 + pop {pc} +_021D7794: + bl MOD04_021D7E18 +_021D7798: + add sp, #0x64 + pop {pc} + .align 2, 0 +_021D779C: .word UNK04_0220FBC0 +_021D77A0: .word 0x00001F44 +_021D77A4: .word MOD04_021D7DA8 +_021D77A8: .word MOD04_021D7DEC +_021D77AC: .word 0x00001EF4 +_021D77B0: .word UNK04_0220BEA0 +_021D77B4: .word UNK04_0220BEAC +_021D77B8: .word 0x00001EF0 +_021D77BC: .word 0x000029E7 +_021D77C0: .word MOD04_021D7A7C + + thumb_func_start MOD04_021D77C4 +MOD04_021D77C4: ; 0x021D77C4 + push {r3, r4} + ldr r3, _021D77D8 ; =UNK04_0220FBC0 + ldr r2, _021D77DC ; =0x00001F0C + ldr r4, [r3] + str r0, [r4, r2] + ldr r3, [r3] + add r0, r2, #4 + str r1, [r3, r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D77D8: .word UNK04_0220FBC0 +_021D77DC: .word 0x00001F0C + + thumb_func_start MOD04_021D77E0 +MOD04_021D77E0: ; 0x021D77E0 + ldr r0, _021D77F8 ; =UNK04_0220FBC0 + ldr r2, [r0] + ldr r0, _021D77FC ; =0x00001F44 + ldr r1, [r2, r0] + cmp r1, #9 + bne _021D77F2 + mov r1, #0xa + str r1, [r2, r0] + bx lr +_021D77F2: + mov r1, #8 + str r1, [r2, r0] + bx lr + .align 2, 0 +_021D77F8: .word UNK04_0220FBC0 +_021D77FC: .word 0x00001F44 + + thumb_func_start MOD04_021D7800 +MOD04_021D7800: ; 0x021D7800 + push {r3, r4, r5, lr} + ldr r2, _021D78EC ; =UNK04_0220FBC0 + ldr r1, _021D78F0 ; =0x00001F44 + ldr r4, [r2] + ldr r3, [r4, r1] + cmp r3, #0xb + bhi _021D78E4 + add r5, r3, r3 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021D781A: ; jump table + .short _021D78E4 - _021D781A - 2 ; case 0 + .short _021D78E4 - _021D781A - 2 ; case 1 + .short _021D78E4 - _021D781A - 2 ; case 2 + .short _021D78E4 - _021D781A - 2 ; case 3 + .short _021D78E4 - _021D781A - 2 ; case 4 + .short _021D7832 - _021D781A - 2 ; case 5 + .short _021D7864 - _021D781A - 2 ; case 6 + .short _021D7886 - _021D781A - 2 ; case 7 + .short _021D78AA - _021D781A - 2 ; case 8 + .short _021D7864 - _021D781A - 2 ; case 9 + .short _021D78C4 - _021D781A - 2 ; case 10 + .short _021D78DE - _021D781A - 2 ; case 11 +_021D7832: + cmp r0, #0 + beq _021D783A + mov r0, #6 + str r0, [r4, r1] +_021D783A: + ldr r0, _021D78EC ; =UNK04_0220FBC0 + ldr r2, _021D78F4 ; =0x00001F48 + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #2 + bne _021D78E4 + add r1, r2, #0 + add r1, #0x14 + ldr r1, [r0, r1] + cmp r1, #0 + blt _021D78E4 + add r3, r0, r1 + add r1, r2, #0 + sub r1, #0x30 + ldrb r1, [r3, r1] + cmp r1, #6 + beq _021D78E4 + mov r3, #9 + sub r1, r2, #4 + str r3, [r0, r1] + b _021D78E4 +_021D7864: + cmp r3, #0 + bne _021D786E + bl MOD04_021EA530 + b _021D78E4 +_021D786E: + bl MOD04_021DFA40 + cmp r0, #1 + bne _021D787C + bl MOD04_021D77E0 + b _021D78E4 +_021D787C: + cmp r0, #0 + beq _021D78E4 + bl MOD04_021D77E0 + b _021D78E4 +_021D7886: + mov r0, #1 + add r1, #0x40 + strh r0, [r4, r1] + bl MOD04_021D8058 + ldr r0, _021D78EC ; =UNK04_0220FBC0 + ldr r2, [r0] + ldr r0, _021D78F8 ; =0x00001F68 + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D78A0 + mov r1, #1 + b _021D78A2 +_021D78A0: + mov r1, #0 +_021D78A2: + add r0, #0x10 + str r1, [r2, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D78AA: + mov r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r3, [r2] + mov r4, #0 + add r0, #8 + str r4, [r3, r0] + ldr r0, [r2] + sub r3, r4, #1 + add r1, #0x1c + str r3, [r0, r1] + mov r0, #2 + pop {r3, r4, r5, pc} +_021D78C4: + mov r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r3, [r2] + mov r4, #0 + add r0, #8 + str r4, [r3, r0] + ldr r0, [r2] + sub r3, r4, #1 + add r1, #0x1c + str r3, [r0, r1] + mov r0, #3 + pop {r3, r4, r5, pc} +_021D78DE: + bl MOD04_021D7E18 + pop {r3, r4, r5, pc} +_021D78E4: + bl MOD04_021D7F8C + pop {r3, r4, r5, pc} + nop +_021D78EC: .word UNK04_0220FBC0 +_021D78F0: .word 0x00001F44 +_021D78F4: .word 0x00001F48 +_021D78F8: .word 0x00001F68 + + thumb_func_start MOD04_021D78FC +MOD04_021D78FC: ; 0x021D78FC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #8 + cmp r4, r0 + blt _021D790E + mov r0, #0 + pop {r4, r5, r6, pc} +_021D790E: + bl MOD04_021DF95C + cmp r0, #0 + bne _021D7930 + ldr r0, _021D79A0 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D79A4 ; =0x00001F0C + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D792C + lsl r2, r4, #0x10 + mov r0, #0 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D792C: + mov r0, #1 + pop {r4, r5, r6, pc} +_021D7930: + ldr r0, _021D79A0 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D79A8 ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D7946 + mov r0, #0 + bl MOD04_021EB0FC + cmp r0, #0 + bne _021D794A +_021D7946: + mov r0, #0 + pop {r4, r5, r6, pc} +_021D794A: + ldr r1, _021D79A0 ; =UNK04_0220FBC0 + ldr r0, _021D79AC ; =0x00001F78 + ldr r3, [r1] + mov r6, #1 + ldr r2, [r3, r0] + lsl r2, r2, #8 + orr r2, r6 + lsl r6, r6, #0xc + str r2, [r3, r6] + add r3, r0, #0 + ldr r2, [r1] + add r3, #8 + ldrb r3, [r2, r3] + add r6, r3, #1 + add r3, r0, #0 + add r3, #8 + strb r6, [r2, r3] + ldr r3, [r1] + add r0, #8 + ldrb r0, [r3, r0] + ldr r2, _021D79B0 ; =0x00001002 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #2 + add r0, r5, #0 + add r1, r3, r1 + add r2, r4, #0 + bl MI_CpuCopy8 + ldr r1, _021D79A0 ; =UNK04_0220FBC0 + ldr r0, _021D79A8 ; =0x00001F4C + ldr r2, [r1] + mov r3, #1 + str r3, [r2, r0] + ldr r2, [r1] + lsl r1, r3, #0xc + add r1, r2, r1 + mov r0, #0 + add r2, r4, #4 + bl MOD04_021EB044 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D79A0: .word UNK04_0220FBC0 +_021D79A4: .word 0x00001F0C +_021D79A8: .word 0x00001F4C +_021D79AC: .word 0x00001F78 +_021D79B0: .word 0x00001002 + + thumb_func_start MOD04_021D79B4 +MOD04_021D79B4: ; 0x021D79B4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #8 + cmp r4, r0 + blt _021D79C6 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79C6: + bl MOD04_021DF95C + cmp r0, #0 + beq _021D79D2 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79D2: + ldr r0, _021D7A68 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7A6C ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D79E8 + mov r0, #1 + bl MOD04_021EB0FC + cmp r0, #0 + bne _021D79EC +_021D79E8: + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79EC: + ldr r1, _021D7A68 ; =UNK04_0220FBC0 + ldr r0, _021D7A70 ; =0x00001F78 + ldr r3, [r1] + mov r6, #1 + ldr r2, [r3, r0] + lsl r2, r2, #8 + orr r2, r6 + lsl r6, r6, #0xc + str r2, [r3, r6] + add r3, r0, #0 + ldr r2, [r1] + add r3, #8 + ldrb r3, [r2, r3] + add r6, r3, #1 + add r3, r0, #0 + add r3, #8 + strb r6, [r2, r3] + ldr r3, [r1] + add r0, #8 + ldrb r0, [r3, r0] + ldr r2, _021D7A74 ; =0x00001002 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #2 + add r0, r5, #0 + add r1, r3, r1 + add r2, r4, #0 + bl MI_CpuCopy8 + ldr r2, _021D7A68 ; =UNK04_0220FBC0 + ldr r1, _021D7A6C ; =0x00001F4C + ldr r3, [r2] + mov r0, #1 + str r0, [r3, r1] + ldr r2, [r2] + lsl r1, r0, #0xc + add r1, r2, r1 + add r2, r4, #4 + bl MOD04_021EB044 + cmp r0, #0 + bne _021D7A4C + ldr r1, _021D7A68 ; =UNK04_0220FBC0 + mov r0, #0 + ldr r2, [r1] + ldr r1, _021D7A6C ; =0x00001F4C + str r0, [r2, r1] + pop {r4, r5, r6, pc} +_021D7A4C: + ldr r0, _021D7A68 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7A78 ; =0x00001F10 + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7A62 + lsl r2, r4, #0x10 + mov r0, #0 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D7A62: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D7A68: .word UNK04_0220FBC0 +_021D7A6C: .word 0x00001F4C +_021D7A70: .word 0x00001F78 +_021D7A74: .word 0x00001002 +_021D7A78: .word 0x00001F10 + + thumb_func_start MOD04_021D7A7C +MOD04_021D7A7C: ; 0x021D7A7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + add r4, r2, #0 + ldr r1, [r0] + ldr r0, _021D7AFC ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckDirtyFlag + cmp r0, #0 + beq _021D7AB0 + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7AFC ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_ClearDirtyFlag + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020227A0 +_021D7AB0: + cmp r5, #0 + bne _021D7AE8 + ldr r0, _021D7B00 ; =MOD04_021D7B70 + str r4, [sp] + str r0, [sp, #4] + ldr r2, _021D7AF8 ; =UNK04_0220FBC0 + str r4, [sp, #8] + ldr r3, [r2] + ldr r2, _021D7AFC ; =0x00001EF0 + ldr r1, _021D7B04 ; =MOD04_021D7B48 + ldr r2, [r3, r2] + ldr r3, _021D7B08 ; =MOD04_021D7B6C + mov r0, #0 + bl MOD04_021DFDBC + cmp r0, #0 + bne _021D7ADC + mov r0, #1 + bl FUN_020336A0 + add sp, #0xc + pop {r4, r5, pc} +_021D7ADC: + ldr r0, _021D7B0C ; =MOD04_021D7BBC + mov r1, #0 + bl MOD04_021E242C + add sp, #0xc + pop {r4, r5, pc} +_021D7AE8: + ldr r0, _021D7AF8 ; =UNK04_0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D7B10 ; =0x00001F44 + str r2, [r1, r0] + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7AF8: .word UNK04_0220FBC0 +_021D7AFC: .word 0x00001EF0 +_021D7B00: .word MOD04_021D7B70 +_021D7B04: .word MOD04_021D7B48 +_021D7B08: .word MOD04_021D7B6C +_021D7B0C: .word MOD04_021D7BBC +_021D7B10: .word 0x00001F44 + + thumb_func_start MOD04_021D7B14 +MOD04_021D7B14: ; 0x021D7B14 + push {r3, lr} + ldr r0, _021D7B3C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7B40 ; =0x00001F70 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D7B3A + bl MOD04_021DFA40 + ldr r1, _021D7B3C ; =UNK04_0220FBC0 + mov r3, #0 + ldr r2, [r1] + ldr r0, _021D7B44 ; =0x00001F60 + mvn r3, r3 + str r3, [r2, r0] + ldr r1, [r1] + mov r2, #0x11 + sub r0, #0x1c + str r2, [r1, r0] +_021D7B3A: + pop {r3, pc} + .align 2, 0 +_021D7B3C: .word UNK04_0220FBC0 +_021D7B40: .word 0x00001F70 +_021D7B44: .word 0x00001F60 + + thumb_func_start MOD04_021D7B48 +MOD04_021D7B48: ; 0x021D7B48 + cmp r0, #0 + bne _021D7B58 + ldr r0, _021D7B64 ; =UNK04_0220FBC0 + mov r2, #4 + ldr r1, [r0] + ldr r0, _021D7B68 ; =0x00001F44 + str r2, [r1, r0] + bx lr +_021D7B58: + ldr r0, _021D7B64 ; =UNK04_0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D7B68 ; =0x00001F44 + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D7B64: .word UNK04_0220FBC0 +_021D7B68: .word 0x00001F44 + + thumb_func_start MOD04_021D7B6C +MOD04_021D7B6C: ; 0x021D7B6C + bx lr + .align 2, 0 + + thumb_func_start MOD04_021D7B70 +MOD04_021D7B70: ; 0x021D7B70 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D7BB8 ; =UNK04_0220FBC0 + add r4, r1, #0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + add r1, r0, #0 + ldr r0, _021D7BB8 ; =UNK04_0220FBC0 + ldr r2, [r0] + mov r0, #0x11 + lsl r0, r0, #8 + ldr r0, [r2, r0] + mov r2, #6 + lsl r2, r2, #6 + bl MI_CpuCopy8 + ldr r0, _021D7BB8 ; =UNK04_0220FBC0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + bl FUN_020286EC + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02028664 + pop {r3, r4, r5, pc} + nop +_021D7BB8: .word UNK04_0220FBC0 + + thumb_func_start MOD04_021D7BBC +MOD04_021D7BBC: ; 0x021D7BBC + bx lr + .align 2, 0 + + thumb_func_start MOD04_021D7BC0 +MOD04_021D7BC0: ; 0x021D7BC0 + push {r3, lr} + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + mov r2, #7 + ldr r1, [r0] + ldr r0, _021D7C20 ; =0x00001F44 + str r2, [r1, r0] + bl MOD04_021DF95C + cmp r0, #0 + bne _021D7BDA + mov r2, #1 + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + b _021D7BDE +_021D7BDA: + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + mov r2, #0 +_021D7BDE: + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + str r2, [r1, r0] + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + lsl r2, r2, #0xc + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD04_021EAE38 + ldr r0, _021D7C1C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + ldr r0, [r1, r0] + ldr r1, _021D7C28 ; =0x00002710 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD04_021EACF8 + ldr r1, _021D7C1C ; =UNK04_0220FBC0 + ldr r0, _021D7C2C ; =0x00001F70 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #4 + str r3, [r1, r0] + pop {r3, pc} + .align 2, 0 +_021D7C1C: .word UNK04_0220FBC0 +_021D7C20: .word 0x00001F44 +_021D7C24: .word 0x00001F50 +_021D7C28: .word 0x00002710 +_021D7C2C: .word 0x00001F70 + + thumb_func_start MOD04_021D7C30 +MOD04_021D7C30: ; 0x021D7C30 + ldr r1, _021D7C44 ; =UNK04_0220FBC0 + ldr r0, _021D7C48 ; =0x00001F4C + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x28 + str r3, [r1, r0] + bx lr + nop +_021D7C44: .word UNK04_0220FBC0 +_021D7C48: .word 0x00001F4C + + thumb_func_start MOD04_021D7C4C +MOD04_021D7C4C: ; 0x021D7C4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r4, r1, #0 + ldrb r5, [r4, #1] + ldrb r3, [r4] + str r2, [sp, #4] + lsl r5, r5, #8 + mov ip, r5 + ldrb r5, [r4, #3] + add r7, r3, #0 + ldr r3, _021D7D54 ; =UNK04_0220FBC0 + lsl r6, r5, #0x18 + ldrb r5, [r4, #2] + lsl r5, r5, #0x10 + orr r5, r6 + mov r6, ip + orr r5, r6 + orr r7, r5 + ldr r6, [r3] + ldr r5, _021D7D58 ; =0x00001F70 + mov r3, #1 + str r3, [r6, r5] + lsl r3, r7, #0x18 + lsr r3, r3, #0x18 + cmp r3, #1 + bne _021D7CB4 + mov r0, #1 + add r0, #0xff + tst r0, r7 + beq _021D7C96 + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + add r5, #0xc + ldr r1, [r0] + mov r0, #1 + str r0, [r1, r5] + b _021D7CA0 +_021D7C96: + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + mov r1, #0 + ldr r0, [r0] + add r5, #0xc + str r1, [r0, r5] +_021D7CA0: + ldr r3, _021D7D54 ; =UNK04_0220FBC0 + ldr r1, _021D7D5C ; =0x00001F84 + ldr r2, [r3] + mov r0, #0 + strh r0, [r2, r1] + ldrb r6, [r4, #2] + ldr r5, [r3] + sub r2, r1, #3 + strb r6, [r5, r2] + b _021D7CE4 +_021D7CB4: + bl MOD04_021D8A54 + cmp r0, #0 + bne _021D7D4E + mov r0, #1 + lsl r0, r0, #8 + tst r0, r7 + beq _021D7CD4 + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021D7CD4: + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + mov r2, #0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021D7CE4: + ldr r5, [r4] + ldr r2, [r3] + add r1, r1, #4 + str r5, [r2, r1] + ldr r1, [sp, #4] + mov r2, #4 + sub r6, r1, #4 + add r1, r6, #0 + bl MOD04_021D7DA8 + add r5, r0, #0 + beq _021D7D4E + add r0, r4, #4 + add r1, r5, #0 + add r2, r6, #0 + bl MI_CpuCopy8 + bl MOD04_021DF95C + cmp r0, #0 + bne _021D7D2A + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7D60 ; =0x00001F0C + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7D44 + ldr r2, [sp, #4] + ldr r0, [sp] + sub r2, r2, #4 + lsl r2, r2, #0x10 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 + b _021D7D44 +_021D7D2A: + ldr r0, _021D7D54 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7D64 ; =0x00001F10 + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7D44 + ldr r2, [sp, #4] + ldr r0, [sp] + sub r2, r2, #4 + lsl r2, r2, #0x10 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D7D44: + mov r0, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD04_021D7DEC +_021D7D4E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7D54: .word UNK04_0220FBC0 +_021D7D58: .word 0x00001F70 +_021D7D5C: .word 0x00001F84 +_021D7D60: .word 0x00001F0C +_021D7D64: .word 0x00001F10 + + thumb_func_start MOD04_021D7D68 +MOD04_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r0, #0 + bne _021D7D9A + bl MOD04_021DF978 + cmp r0, #1 + bne _021D7D9A + ldr r0, _021D7D9C ; =UNK04_0220FBC0 + ldr r2, [r0] + ldr r0, _021D7DA0 ; =0x00001F44 + ldr r1, [r2, r0] + cmp r1, #6 + bne _021D7D86 + mov r1, #8 + b _021D7D88 +_021D7D86: + mov r1, #0x10 +_021D7D88: + str r1, [r2, r0] + ldr r0, _021D7D9C ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7DA4 ; =0x00001F58 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D7D9A + bl MOD04_021D8C6C +_021D7D9A: + pop {r3, pc} + .align 2, 0 +_021D7D9C: .word UNK04_0220FBC0 +_021D7DA0: .word 0x00001F44 +_021D7DA4: .word 0x00001F58 + + thumb_func_start MOD04_021D7DA8 +MOD04_021D7DA8: ; 0x021D7DA8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _021D7DE4 ; =UNK04_0220FBC0 + add r2, r6, #0 + ldr r1, [r0] + ldr r0, _021D7DE8 ; =0x00001F08 + ldr r0, [r1, r0] + add r1, r5, #0 + bl NNS_FndAllocFromExpHeapEx + add r5, r0, #0 + bne _021D7DD8 + mov r0, #1 + bl FUN_020336A0 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4, r5, r6, pc} +_021D7DD8: + add r0, r4, #0 + bl OS_RestoreInterrupts + add r0, r5, #0 + pop {r4, r5, r6, pc} + nop +_021D7DE4: .word UNK04_0220FBC0 +_021D7DE8: .word 0x00001F08 + + thumb_func_start MOD04_021D7DEC +MOD04_021D7DEC: ; 0x021D7DEC + push {r3, r4, r5, lr} + add r5, r1, #0 + beq _021D7E0C + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _021D7E10 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7E14 ; =0x00001F08 + ldr r0, [r1, r0] + add r1, r5, #0 + bl NNS_FndFreeToExpHeap + add r0, r4, #0 + bl OS_RestoreInterrupts +_021D7E0C: + pop {r3, r4, r5, pc} + nop +_021D7E10: .word UNK04_0220FBC0 +_021D7E14: .word 0x00001F08 + + thumb_func_start MOD04_021D7E18 +MOD04_021D7E18: ; 0x021D7E18 + push {r4, lr} + sub sp, #8 + add r0, sp, #4 + add r1, sp, #0 + bl MOD04_021DD718 + add r4, r0, #0 + beq _021D7EFA + ldr r0, [sp] + cmp r0, #7 + bhi _021D7EFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7E3A: ; jump table + .short _021D7EFA - _021D7E3A - 2 ; case 0 + .short _021D7E4A - _021D7E3A - 2 ; case 1 + .short _021D7EFA - _021D7E3A - 2 ; case 2 + .short _021D7E66 - _021D7E3A - 2 ; case 3 + .short _021D7EFA - _021D7E3A - 2 ; case 4 + .short _021D7EFA - _021D7E3A - 2 ; case 5 + .short _021D7E66 - _021D7E3A - 2 ; case 6 + .short _021D7ECE - _021D7E3A - 2 ; case 7 +_021D7E4A: + bl MOD04_021DD6F0 + cmp r4, #0xa + blt _021D7E58 + add sp, #8 + add r0, r4, #0 + pop {r4, pc} +_021D7E58: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7EFA + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7E66: + ldr r0, _021D7F14 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D7EB2 + ldr r0, _021D7F18 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #0x11 + bhi _021D7EAE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7E82: ; jump table + .short _021D7EAA - _021D7E82 - 2 ; case 0 + .short _021D7EAA - _021D7E82 - 2 ; case 1 + .short _021D7EAA - _021D7E82 - 2 ; case 2 + .short _021D7EA6 - _021D7E82 - 2 ; case 3 + .short _021D7EA6 - _021D7E82 - 2 ; case 4 + .short _021D7EA6 - _021D7E82 - 2 ; case 5 + .short _021D7EA6 - _021D7E82 - 2 ; case 6 + .short _021D7EA6 - _021D7E82 - 2 ; case 7 + .short _021D7EA6 - _021D7E82 - 2 ; case 8 + .short _021D7EAE - _021D7E82 - 2 ; case 9 + .short _021D7EAE - _021D7E82 - 2 ; case 10 + .short _021D7EA6 - _021D7E82 - 2 ; case 11 + .short _021D7EAE - _021D7E82 - 2 ; case 12 + .short _021D7EAE - _021D7E82 - 2 ; case 13 + .short _021D7EAE - _021D7E82 - 2 ; case 14 + .short _021D7EA6 - _021D7E82 - 2 ; case 15 + .short _021D7EA6 - _021D7E82 - 2 ; case 16 + .short _021D7EA6 - _021D7E82 - 2 ; case 17 +_021D7EA6: + bl MOD04_021E0200 +_021D7EAA: + bl MOD04_021DDBBC +_021D7EAE: + bl MOD04_021DD6F0 +_021D7EB2: + ldr r0, _021D7F14 ; =UNK04_0220FBC0 + ldr r2, [r0] + cmp r2, #0 + beq _021D7EC0 + ldr r0, _021D7F18 ; =0x00001F44 + mov r1, #0xd + str r1, [r2, r0] +_021D7EC0: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7F10 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7ECE: + ldr r1, _021D7F14 ; =UNK04_0220FBC0 + ldr r3, [r1] + cmp r3, #0 + beq _021D7EEC + ldr r0, _021D7F18 ; =0x00001F44 + mov r2, #0xe + str r2, [r3, r0] + ldr r1, [r1] + sub r0, #0x30 + ldr r1, [r1, r0] + cmp r1, #0 + beq _021D7EEC + ldr r0, [sp, #4] + neg r0, r0 + blx r1 +_021D7EEC: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7F10 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7EFA: + ldr r0, _021D7F14 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7F1C ; =0x00001F82 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021D7F0E + mov r0, #1 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7F0E: + mov r0, #0 +_021D7F10: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D7F14: .word UNK04_0220FBC0 +_021D7F18: .word 0x00001F44 +_021D7F1C: .word 0x00001F82 + + thumb_func_start MOD04_021D7F20 +MOD04_021D7F20: ; 0x021D7F20 + push {r3, r4, r5, lr} + ldr r0, _021D7F80 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D7F84 ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D7F7E + bl MOD04_021DF95C + mov r1, #1 + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD04_021EB0FC + cmp r0, #0 + beq _021D7F7E + ldr r4, _021D7F80 ; =UNK04_0220FBC0 + ldr r2, _021D7F84 ; =0x00001F4C + ldr r0, [r4] + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + ldr r0, [r4] + add r1, #0x2c + ldr r1, [r0, r1] + mov r3, #2 + lsl r1, r1, #8 + add r5, r1, #0 + orr r5, r3 + lsl r1, r3, #0xb + str r5, [r0, r1] + add r0, r2, #4 + ldr r1, [r4] + lsl r2, r3, #0xb + ldr r0, [r1, r0] + add r1, r1, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r2, #4 + bl MOD04_021EB044 + add r0, r4, #0 + ldr r1, [r0] + ldr r0, _021D7F88 ; =0x00001F74 + mov r2, #0 + str r2, [r1, r0] +_021D7F7E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7F80: .word UNK04_0220FBC0 +_021D7F84: .word 0x00001F4C +_021D7F88: .word 0x00001F74 + + thumb_func_start MOD04_021D7F8C +MOD04_021D7F8C: ; 0x021D7F8C + push {r3, r4, r5, lr} + bl MOD04_021DFF74 + bl MOD04_021D83F0 + ldr r0, _021D800C ; =UNK04_0220FBC0 + ldr r1, _021D8010 ; =0x00001F58 + ldr r2, [r0] + ldr r0, [r2, r1] + cmp r0, #0 + beq _021D7FC2 + add r0, r1, #0 + add r0, #0x20 + ldr r0, [r2, r0] + cmp r0, #1 + bne _021D7FBA + add r1, #0x24 + ldr r0, [r2, r1] + cmp r0, #1 + bne _021D7FBA + bl MOD04_021D8D04 + b _021D7FBE +_021D7FBA: + bl MOD04_021D8CF0 +_021D7FBE: + bl MOD04_021D8944 +_021D7FC2: + ldr r4, _021D800C ; =UNK04_0220FBC0 + ldr r3, _021D8014 ; =0x00001F44 + ldr r1, [r4] + ldr r0, [r1, r3] + cmp r0, #0x11 + bne _021D7FD2 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7FD2: + cmp r0, #0x10 + bne _021D7FDA + mov r0, #2 + pop {r3, r4, r5, pc} +_021D7FDA: + cmp r0, #7 + bne _021D8004 + add r2, r3, #0 + add r2, #0x30 + add r0, r3, #0 + ldr r2, [r1, r2] + add r0, #0x30 + add r5, r2, #1 + add r2, r3, #0 + ldr r0, [r1, r0] + add r2, #0x30 + str r5, [r1, r2] + cmp r0, #0x78 + blt _021D8004 + ldr r0, [r4] + add r3, #8 + ldr r0, [r0, r3] + cmp r0, #0 + bne _021D8004 + bl MOD04_021D7F20 +_021D8004: + bl MOD04_021D7E18 + pop {r3, r4, r5, pc} + nop +_021D800C: .word UNK04_0220FBC0 +_021D8010: .word 0x00001F58 +_021D8014: .word 0x00001F44 + + thumb_func_start MOD04_021D8018 +MOD04_021D8018: ; 0x021D8018 + push {r3, lr} + ldr r0, _021D803C ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D8034 + ldr r0, _021D8040 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #7 + beq _021D802E + cmp r0, #0xf + bne _021D8034 +_021D802E: + bl MOD04_021DF95C + pop {r3, pc} +_021D8034: + mov r0, #0 + mvn r0, r0 + pop {r3, pc} + nop +_021D803C: .word UNK04_0220FBC0 +_021D8040: .word 0x00001F44 + + thumb_func_start MOD04_021D8044 +MOD04_021D8044: ; 0x021D8044 + ldr r0, _021D8050 ; =UNK04_0220FBC0 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D8054 ; =0x00001F58 + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8050: .word UNK04_0220FBC0 +_021D8054: .word 0x00001F58 + + thumb_func_start MOD04_021D8058 +MOD04_021D8058: ; 0x021D8058 + push {r3, lr} + ldr r0, _021D80CC ; =UNK04_0220FBC0 + ldr r2, _021D80D0 ; =0x00001F6C + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #5 + bhi _021D80AE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8072: ; jump table + .short _021D80AE - _021D8072 - 2 ; case 0 + .short _021D80AE - _021D8072 - 2 ; case 1 + .short _021D807E - _021D8072 - 2 ; case 2 + .short _021D808A - _021D8072 - 2 ; case 3 + .short _021D8096 - _021D8072 - 2 ; case 4 + .short _021D80A2 - _021D8072 - 2 ; case 5 +_021D807E: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #1 + bl MOD04_021D8A7C + b _021D80B8 +_021D808A: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #2 + bl MOD04_021D8A7C + b _021D80B8 +_021D8096: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #3 + bl MOD04_021D8A7C + b _021D80B8 +_021D80A2: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #4 + bl MOD04_021D8A7C + b _021D80B8 +_021D80AE: + ldr r1, _021D80D4 ; =0x00001F54 + ldr r0, [r0, r1] + mov r1, #4 + bl MOD04_021D8A7C +_021D80B8: + ldr r0, _021D80D8 ; =MOD04_021D8044 + bl MOD04_021D8C58 + ldr r0, _021D80CC ; =UNK04_0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D80DC ; =0x00001F58 + str r2, [r1, r0] + pop {r3, pc} + nop +_021D80CC: .word UNK04_0220FBC0 +_021D80D0: .word 0x00001F6C +_021D80D4: .word 0x00001F54 +_021D80D8: .word MOD04_021D8044 +_021D80DC: .word 0x00001F58 + + thumb_func_start MOD04_021D80E0 +MOD04_021D80E0: ; 0x021D80E0 + push {r3, r4, r5, lr} + mov r1, #0x64 + add r5, r0, #0 + bl _s32_div_f + mov r1, #0xfa + add r4, r0, #0 + add r0, r5, #0 + lsl r1, r1, #2 + bl _s32_div_f + ldr r2, _021D8270 ; =0x00004E84 + cmp r5, r2 + bne _021D8100 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8100: + add r1, r2, #2 + cmp r5, r1 + blt _021D8110 + add r1, r2, #7 + cmp r5, r1 + bgt _021D8110 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8110: + ldr r1, _021D8274 ; =0x00004E8D + cmp r5, r1 + bne _021D811A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D811A: + add r1, r1, #2 + cmp r5, r1 + blt _021D812A + ldr r1, _021D8278 ; =0x00005207 + cmp r5, r1 + bgt _021D812A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D812A: + ldr r1, _021D827C ; =0x0000CB24 + cmp r5, r1 + blt _021D813A + add r1, #0x5f + cmp r5, r1 + bgt _021D813A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D813A: + ldr r1, _021D8280 ; =0x0000CB88 + cmp r5, r1 + blt _021D814A + add r1, #0x5f + cmp r5, r1 + bgt _021D814A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D814A: + ldr r1, _021D8284 ; =0x0000CBEC + cmp r5, r1 + blt _021D815A + add r1, #0x5f + cmp r5, r1 + bgt _021D815A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D815A: + ldr r1, _021D8288 ; =0x0000020B + cmp r4, r1 + bne _021D8164 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8164: + add r2, r1, #7 + cmp r4, r2 + bne _021D816E + mov r0, #0 + pop {r3, r4, r5, pc} +_021D816E: + add r2, r1, #0 + add r2, #8 + cmp r4, r2 + bne _021D817A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D817A: + add r2, r1, #0 + add r2, #9 + cmp r4, r2 + bne _021D8186 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8186: + ldr r3, _021D828C ; =0x00004E85 + cmp r5, r3 + bne _021D8190 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8190: + cmp r0, #0x17 + bne _021D8198 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8198: + add r2, r3, #7 + cmp r5, r2 + bne _021D81A2 + mov r0, #2 + pop {r3, r4, r5, pc} +_021D81A2: + add r3, #9 + cmp r5, r3 + bne _021D81AC + mov r0, #3 + pop {r3, r4, r5, pc} +_021D81AC: + add r2, r1, #0 + sub r2, #0xb + cmp r4, r2 + bne _021D81B8 + mov r0, #4 + pop {r3, r4, r5, pc} +_021D81B8: + sub r1, #0x17 + cmp r4, r1 + bne _021D81C2 + mov r0, #5 + pop {r3, r4, r5, pc} +_021D81C2: + ldr r1, _021D8290 ; =0x0000C738 + cmp r5, r1 + blt _021D81D2 + add r1, #0x66 + cmp r5, r1 + bgt _021D81D2 + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81D2: + ldr r1, _021D8294 ; =0x0000C7A0 + cmp r5, r1 + blt _021D81E2 + add r1, #0x5f + cmp r5, r1 + bgt _021D81E2 + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81E2: + ldr r1, _021D8298 ; =0x00000201 + cmp r4, r1 + bne _021D81EC + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81EC: + ldr r1, _021D829C ; =0x0000C79F + cmp r5, r1 + bne _021D81F6 + mov r0, #7 + pop {r3, r4, r5, pc} +_021D81F6: + ldr r1, _021D82A0 ; =0x0000CB20 + cmp r5, r1 + blt _021D8206 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8206 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8206: + ldr r1, _021D82A4 ; =0x0000CB84 + cmp r5, r1 + blt _021D8216 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8216 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8216: + ldr r1, _021D82A8 ; =0x0000CBE8 + cmp r5, r1 + blt _021D8226 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8226 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8226: + ldr r1, _021D82AC ; =0x00013A2E + cmp r5, r1 + bne _021D8230 + mov r0, #9 + pop {r3, r4, r5, pc} +_021D8230: + cmp r0, #0x18 + bne _021D8238 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8238: + cmp r0, #0x19 + bne _021D8240 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8240: + cmp r0, #0x1f + bne _021D8248 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8248: + cmp r0, #0x36 + bne _021D8250 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8250: + ldr r0, _021D82B0 ; =0x0000EA60 + cmp r5, r0 + blt _021D8260 + ldr r0, _021D82B4 ; =0x0001869F + cmp r5, r0 + bgt _021D8260 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8260: + ldr r0, _021D82B8 ; =0x00002710 + cmp r5, r0 + bge _021D826A + mov r0, #0xb + pop {r3, r4, r5, pc} +_021D826A: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8270: .word 0x00004E84 +_021D8274: .word 0x00004E8D +_021D8278: .word 0x00005207 +_021D827C: .word 0x0000CB24 +_021D8280: .word 0x0000CB88 +_021D8284: .word 0x0000CBEC +_021D8288: .word 0x0000020B +_021D828C: .word 0x00004E85 +_021D8290: .word 0x0000C738 +_021D8294: .word 0x0000C7A0 +_021D8298: .word 0x00000201 +_021D829C: .word 0x0000C79F +_021D82A0: .word 0x0000CB20 +_021D82A4: .word 0x0000CB84 +_021D82A8: .word 0x0000CBE8 +_021D82AC: .word 0x00013A2E +_021D82B0: .word 0x0000EA60 +_021D82B4: .word 0x0001869F +_021D82B8: .word 0x00002710 + + thumb_func_start MOD04_021D82BC +MOD04_021D82BC: ; 0x021D82BC + push {r3, lr} + cmp r0, #0 + bne _021D8346 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + ldr r2, _021D8368 ; =0x00001F44 + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #0x11 + bhi _021D835E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D82DA: ; jump table + .short _021D835E - _021D82DA - 2 ; case 0 + .short _021D835E - _021D82DA - 2 ; case 1 + .short _021D835E - _021D82DA - 2 ; case 2 + .short _021D835E - _021D82DA - 2 ; case 3 + .short _021D8342 - _021D82DA - 2 ; case 4 + .short _021D82FE - _021D82DA - 2 ; case 5 + .short _021D835E - _021D82DA - 2 ; case 6 + .short _021D82FE - _021D82DA - 2 ; case 7 + .short _021D835E - _021D82DA - 2 ; case 8 + .short _021D835E - _021D82DA - 2 ; case 9 + .short _021D835E - _021D82DA - 2 ; case 10 + .short _021D835E - _021D82DA - 2 ; case 11 + .short _021D835E - _021D82DA - 2 ; case 12 + .short _021D8342 - _021D82DA - 2 ; case 13 + .short _021D835E - _021D82DA - 2 ; case 14 + .short _021D8328 - _021D82DA - 2 ; case 15 + .short _021D8342 - _021D82DA - 2 ; case 16 + .short _021D8342 - _021D82DA - 2 ; case 17 +_021D82FE: + add r2, #0x14 + ldr r0, [r0, r2] + cmp r0, #0 + beq _021D8316 + bl MOD04_021D8C08 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + mov r2, #0xf + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + b _021D835E +_021D8316: + bl MOD04_021DFA40 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + mov r2, #0x10 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + mov r0, #1 + pop {r3, pc} +_021D8328: + add r2, #0x14 + ldr r0, [r0, r2] + cmp r0, #0 + bne _021D835E + bl MOD04_021DFA40 + ldr r0, _021D8364 ; =UNK04_0220FBC0 + mov r2, #0x10 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + mov r0, #1 + pop {r3, pc} +_021D8342: + mov r0, #1 + pop {r3, pc} +_021D8346: + ldr r0, _021D8364 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #4 + beq _021D835A + cmp r0, #0x10 + beq _021D835A + cmp r0, #0x11 + bne _021D835E +_021D835A: + mov r0, #1 + pop {r3, pc} +_021D835E: + mov r0, #0 + pop {r3, pc} + nop +_021D8364: .word UNK04_0220FBC0 +_021D8368: .word 0x00001F44 + + thumb_func_start MOD04_021D836C +MOD04_021D836C: ; 0x021D836C + push {r3, r4} + ldr r2, _021D83A0 ; =UNK04_0220FBC0 + ldr r1, _021D83A4 ; =0x00001F44 + ldr r3, [r2] + ldr r0, [r3, r1] + sub r0, #0x10 + cmp r0, #1 + bhi _021D8398 + mov r4, #0 + add r0, r1, #0 + mvn r4, r4 + add r0, #0xc + str r4, [r3, r0] + ldr r0, [r2] + mov r3, #4 + str r3, [r0, r1] + ldr r0, [r2] + add r1, #0x1c + str r4, [r0, r1] + mov r0, #1 + pop {r3, r4} + bx lr +_021D8398: + mov r0, #0 + pop {r3, r4} + bx lr + nop +_021D83A0: .word UNK04_0220FBC0 +_021D83A4: .word 0x00001F44 + + thumb_func_start MOD04_021D83A8 +MOD04_021D83A8: ; 0x021D83A8 + ldr r1, _021D83B8 ; =UNK04_0220FBC0 + ldr r2, [r1] + cmp r2, #0 + beq _021D83B4 + ldr r1, _021D83BC ; =0x00001F14 + str r0, [r2, r1] +_021D83B4: + bx lr + nop +_021D83B8: .word UNK04_0220FBC0 +_021D83BC: .word 0x00001F14 + + thumb_func_start MOD04_021D83C0 +MOD04_021D83C0: ; 0x021D83C0 + push {r3, lr} + bl MOD04_021E0200 + bl MOD04_021DDBBC + bl MOD04_021D8C6C + bl MOD04_021D7660 + pop {r3, pc} + + thumb_func_start MOD04_021D83D4 +MOD04_021D83D4: ; 0x021D83D4 + push {r3, r4} + ldr r3, _021D83E8 ; =UNK04_0220FBC0 + ldr r2, _021D83EC ; =0x00001F38 + ldr r4, [r3] + str r0, [r4, r2] + ldr r3, [r3] + add r0, r2, #4 + str r1, [r3, r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D83E8: .word UNK04_0220FBC0 +_021D83EC: .word 0x00001F38 + + thumb_func_start MOD04_021D83F0 +MOD04_021D83F0: ; 0x021D83F0 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _021D8468 ; =UNK04_0220FBC0 + ldr r0, _021D846C ; =0x00001F38 + ldr r1, [r6] + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8464 + mov r7, #0 +_021D8400: + mov r1, #0x7d + ldr r0, [r6] + lsl r1, r1, #6 + ldr r2, [r0, r1] + mov r1, #0x1f + add r5, r2, #0 + and r5, r1 + mov r1, #0xc + add r4, r5, #0 + mul r4, r1 + mov r1, #0x11 + lsl r1, r1, #8 + ldr r0, [r0, r1] + add r0, r0, r4 + bl DWC_IsBuddyFriendData + cmp r0, #0 + beq _021D844A + mov r0, #0x11 + ldr r2, [r6] + ldr r1, _021D846C ; =0x00001F38 + lsl r0, r0, #8 + ldr r0, [r2, r0] + ldr r3, _021D8470 ; =0x00001F3C + ldr r1, [r2, r1] + ldr r2, [r2, r3] + add r0, r0, r4 + add r3, r2, #0 + mul r3, r5 + add r1, r1, r3 + add r2, sp, #0 + bl MOD04_021E2578 + ldr r1, [r6] + add r2, r1, r5 + ldr r1, _021D8474 ; =0x00001F18 + strb r0, [r2, r1] +_021D844A: + mov r1, #0x7d + ldr r0, [r6] + lsl r1, r1, #6 + ldr r1, [r0, r1] + add r7, r7, #1 + add r2, r1, #1 + mov r1, #0x1f + and r2, r1 + mov r1, #0x7d + lsl r1, r1, #6 + str r2, [r0, r1] + cmp r7, #4 + blt _021D8400 +_021D8464: + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8468: .word UNK04_0220FBC0 +_021D846C: .word 0x00001F38 +_021D8470: .word 0x00001F3C +_021D8474: .word 0x00001F18 + + thumb_func_start MOD04_021D8478 +MOD04_021D8478: ; 0x021D8478 + ldr r3, _021D847C ; =MOD04_021E2454 + bx r3 + .align 2, 0 +_021D847C: .word MOD04_021E2454 + + thumb_func_start MOD04_021D8480 +MOD04_021D8480: ; 0x021D8480 + ldr r1, _021D848C ; =UNK04_0220FBC0 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _021D8490 ; =0x00001F18 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_021D848C: .word UNK04_0220FBC0 +_021D8490: .word 0x00001F18 + + thumb_func_start MOD04_021D8494 +MOD04_021D8494: ; 0x021D8494 + push {r3, lr} + ldr r1, _021D8510 ; =UNK04_0220FBC0 + ldr r3, [r1] + ldr r1, _021D8514 ; =0x00001F44 + ldr r2, [r3, r1] + cmp r2, #4 + beq _021D84A6 + mov r0, #0 + pop {r3, pc} +_021D84A6: + add r1, #0x18 + str r0, [r3, r1] + cmp r0, #0 + bge _021D84C2 + ldr r1, _021D8518 ; =MOD04_021D8558 + mov r2, #0 + ldr r3, _021D851C ; =MOD04_021D85A0 + mov r0, #2 + str r2, [sp] + bl MOD04_021DFD18 + mov r2, #1 + ldr r0, _021D8510 ; =UNK04_0220FBC0 + b _021D84D2 +_021D84C2: + ldr r1, _021D8520 ; =MOD04_021D8590 + mov r2, #0 + ldr r3, _021D851C ; =MOD04_021D85A0 + str r2, [sp] + bl MOD04_021DFB20 + ldr r0, _021D8510 ; =UNK04_0220FBC0 + mov r2, #2 +_021D84D2: + ldr r1, [r0] + ldr r0, _021D8524 ; =0x00001F48 + str r2, [r1, r0] + ldr r0, _021D8510 ; =UNK04_0220FBC0 + mov r2, #5 + ldr r1, [r0] + ldr r0, _021D8514 ; =0x00001F44 + str r2, [r1, r0] + ldr r0, _021D8528 ; =MOD04_021D7C30 + bl MOD04_021EAE18 + ldr r0, _021D852C ; =MOD04_021D7C4C + bl MOD04_021EADF8 + ldr r0, _021D8530 ; =MOD04_021D7D68 + mov r1, #0 + bl MOD04_021DFAF8 + ldr r0, _021D8534 ; =MOD04_021D7B14 + bl MOD04_021EADD8 + ldr r1, _021D8510 ; =UNK04_0220FBC0 + ldr r0, _021D8538 ; =0x00001F4C + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x3c + str r3, [r1, r0] + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_021D8510: .word UNK04_0220FBC0 +_021D8514: .word 0x00001F44 +_021D8518: .word MOD04_021D8558 +_021D851C: .word MOD04_021D85A0 +_021D8520: .word MOD04_021D8590 +_021D8524: .word 0x00001F48 +_021D8528: .word MOD04_021D7C30 +_021D852C: .word MOD04_021D7C4C +_021D8530: .word MOD04_021D7D68 +_021D8534: .word MOD04_021D7B14 +_021D8538: .word 0x00001F4C + + thumb_func_start MOD04_021D853C +MOD04_021D853C: ; 0x021D853C + ldr r0, _021D8550 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D854A + ldr r0, _021D8554 ; =0x00001F5C + ldr r0, [r1, r0] + bx lr +_021D854A: + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 +_021D8550: .word UNK04_0220FBC0 +_021D8554: .word 0x00001F5C + + thumb_func_start MOD04_021D8558 +MOD04_021D8558: ; 0x021D8558 + push {r3, lr} + cmp r0, #0 + bne _021D8582 + cmp r1, #0 + bne _021D8572 + ldr r0, _021D8584 ; =UNK04_0220FBC0 + ldr r2, [sp, #8] + ldr r1, [r0] + ldr r0, _021D8588 ; =0x00001F5C + str r2, [r1, r0] + bl MOD04_021D7BC0 + pop {r3, pc} +_021D8572: + cmp r2, #0 + bne _021D8582 + ldr r0, _021D8584 ; =UNK04_0220FBC0 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D858C ; =0x00001F60 + mvn r2, r2 + str r2, [r1, r0] +_021D8582: + pop {r3, pc} + .align 2, 0 +_021D8584: .word UNK04_0220FBC0 +_021D8588: .word 0x00001F5C +_021D858C: .word 0x00001F60 + + thumb_func_start MOD04_021D8590 +MOD04_021D8590: ; 0x021D8590 + push {r3, lr} + cmp r0, #0 + bne _021D859E + cmp r1, #0 + bne _021D859E + bl MOD04_021D7BC0 +_021D859E: + pop {r3, pc} + + thumb_func_start MOD04_021D85A0 +MOD04_021D85A0: ; 0x021D85A0 + ldr r1, _021D85AC ; =UNK04_0220FBC0 + ldr r2, [r1] + ldr r1, _021D85B0 ; =0x00001F60 + str r0, [r2, r1] + bx lr + nop +_021D85AC: .word UNK04_0220FBC0 +_021D85B0: .word 0x00001F60 + + thumb_func_start MOD04_021D85B4 +MOD04_021D85B4: ; 0x021D85B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r0, _021D8614 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + bl DWC_CheckHasProfile + cmp r0, #0 + bne _021D85D8 + ldr r0, _021D8614 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + add r1, sp, #0xc + bl DWC_CreateExchangeToken + b _021D85E6 +_021D85D8: + ldr r0, _021D8614 ; =UNK04_0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + add r1, sp, #0 + bl DWC_CreateExchangeToken +_021D85E6: + mov r4, #0 + mov r7, #0x11 + ldr r6, _021D8614 ; =UNK04_0220FBC0 + add r5, r4, #0 + lsl r7, r7, #8 +_021D85F0: + mov r0, #0x11 + ldr r1, [r6] + lsl r0, r0, #8 + ldr r0, [r1, r0] + add r0, r0, r5 + bl DWC_GetFriendDataType + ldr r0, [r6] + ldr r0, [r0, r7] + add r0, r0, r5 + bl DWC_IsBuddyFriendData + add r4, r4, #1 + add r5, #0xc + cmp r4, #0x20 + blt _021D85F0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8614: .word UNK04_0220FBC0 +_021D8618: .word 0x00001EF0 + + thumb_func_start MOD04_021D861C +MOD04_021D861C: ; 0x021D861C + ldr r3, _021D8620 ; =MOD04_021D8CC8 + bx r3 + .align 2, 0 +_021D8620: .word MOD04_021D8CC8 + + thumb_func_start MOD04_021D8624 +MOD04_021D8624: ; 0x021D8624 + ldr r0, _021D8638 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D8632 + ldr r0, _021D863C ; =0x00001F68 + ldr r0, [r1, r0] + bx lr +_021D8632: + mov r0, #0 + bx lr + nop +_021D8638: .word UNK04_0220FBC0 +_021D863C: .word 0x00001F68 + + thumb_func_start MOD04_021D8640 +MOD04_021D8640: ; 0x021D8640 + ldr r0, _021D8654 ; =UNK04_0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D864E + ldr r0, _021D8658 ; =0x00001F60 + ldr r0, [r1, r0] + bx lr +_021D864E: + mov r0, #0 + bx lr + nop +_021D8654: .word UNK04_0220FBC0 +_021D8658: .word 0x00001F60 + + thumb_func_start MOD04_021D865C +MOD04_021D865C: ; 0x021D865C + ldr r0, _021D8670 ; =UNK04_0220FBC0 + ldr r2, [r0] + cmp r2, #0 + beq _021D866C + mov r1, #0 + ldr r0, _021D8674 ; =0x00001F60 + mvn r1, r1 + str r1, [r2, r0] +_021D866C: + bx lr + nop +_021D8670: .word UNK04_0220FBC0 +_021D8674: .word 0x00001F60 + + thumb_func_start MOD04_021D8678 +MOD04_021D8678: ; 0x021D8678 + ldr r1, _021D8684 ; =UNK04_0220FBC0 + ldr r2, [r1] + ldr r1, _021D8688 ; =0x00001F68 + str r0, [r2, r1] + bx lr + nop +_021D8684: .word UNK04_0220FBC0 +_021D8688: .word 0x00001F68 + + .section .bss + + .global UNK04_0220FBC0 +UNK04_0220FBC0: ; 0x0220FBC0 + .space 0x8 + + .section .data + + .balign 4 + + .global UNK04_0220BEA0 +UNK04_0220BEA0: ; 0x0220BEA0 + .asciz "pokemondpds" + + .balign 4 + + .global UNK04_0220BEAC +UNK04_0220BEAC: ; 0x0220BEAC + .asciz "1vTlwb" diff --git a/arm9/modules/04/asm/mod04_021D868C.s b/arm9/modules/04/asm/mod04_021D868C.s new file mode 100644 index 00000000..4921962f --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D868C.s @@ -0,0 +1,845 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD04_021D868C +MOD04_021D868C: ; 0x021D868C + push {r3, r4, r5, lr} + bl MIC_Init + bl PM_Init + mov r0, #1 + bl PM_SetAmp + mov r0, #3 + bl PM_SetAmpGain + ldr r0, _021D8718 ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r3, _021D871C ; =0x00003584 + add r5, r2, #0 + str r2, [r1, r3] + add r1, r3, #0 + ldr r4, [r0, #4] + add r1, #0xc + str r2, [r4, r1] + ldr r4, [r0, #4] + add r1, r3, #4 + str r2, [r4, r1] + add r1, r3, #0 + ldr r4, [r0, #4] + add r1, #8 + str r2, [r4, r1] + ldr r1, [r0, #4] + add r3, #0x10 + str r2, [r1, r3] + ldr r3, _021D8720 ; =0x00003598 + add r1, r2, #0 +_021D86CE: + ldr r4, [r0, #4] + add r2, r2, #1 + add r4, r4, r5 + add r5, r5, #2 + strh r1, [r4, r3] + cmp r2, #0x10 + blt _021D86CE + ldr r0, _021D8718 ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8724 ; =0x000035B8 + str r1, [r2, r0] + mov r0, #1 + bl FUN_020AA770 + bl NNS_SndInit + ldr r0, _021D8718 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8728 ; =0x00003504 + add r0, r1, r0 + bl NNS_SndStrmInit + ldr r1, _021D8718 ; =UNK04_0220FBC8 + mov r0, #0 + ldr r2, [r1, #4] + mov r1, #0xb1 + lsl r1, r1, #6 + add r1, r2, r1 + mov r2, #0x22 + lsl r2, r2, #6 + bl MIi_CpuClearFast + ldr r0, _021D8718 ; =UNK04_0220FBC8 + mov r1, #0 + str r1, [r0, #8] + pop {r3, r4, r5, pc} + nop +_021D8718: .word UNK04_0220FBC8 +_021D871C: .word 0x00003584 +_021D8720: .word 0x00003598 +_021D8724: .word 0x000035B8 +_021D8728: .word 0x00003504 + + thumb_func_start MOD04_021D872C +MOD04_021D872C: ; 0x021D872C + bx lr + .align 2, 0 + + thumb_func_start MOD04_021D8730 +MOD04_021D8730: ; 0x021D8730 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r3, #0 + ldr r4, [sp, #0x14] + cmp r0, #0 + bne _021D8748 + ldr r0, [r6] + mov r1, #0 + add r2, r5, #0 + bl MI_CpuFill8 + pop {r4, r5, r6, pc} +_021D8748: + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D87BC ; =0x00003565 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _021D876A + add r0, r0, #3 + add r0, r2, r0 + ldr r1, _021D87C0 ; =MOD04_021D872C + mov r2, #0 + bl MIC_StartAutoSamplingAsync + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D87BC ; =0x00003565 + strb r2, [r1, r0] +_021D876A: + bl MIC_GetLastSamplingAddress + sub r0, r0, r4 + cmp r0, r5 + bhs _021D8776 + add r4, r4, r5 +_021D8776: + ldr r0, _021D87C4 ; =0x027FFFA8 + ldrh r1, [r0] + mov r0, #2 + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + beq _021D878E + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + mov r0, #0xb1 + lsl r0, r0, #6 + add r4, r1, r0 +_021D878E: + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D87C8 ; =0x000034FC + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D87A2 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020AABDC +_021D87A2: + ldr r0, [r6] + add r1, r5, #0 + mov r2, #0 + bl FUN_020AA824 + ldr r0, _021D87B8 ; =UNK04_0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D87CC ; =0x00003564 + strb r2, [r1, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_021D87B8: .word UNK04_0220FBC8 +_021D87BC: .word 0x00003565 +_021D87C0: .word MOD04_021D872C +_021D87C4: .word 0x027FFFA8 +_021D87C8: .word 0x000034FC +_021D87CC: .word 0x00003564 + + thumb_func_start MOD04_021D87D0 +MOD04_021D87D0: ; 0x021D87D0 + push {r4, lr} + ldr r1, _021D8810 ; =UNK04_0220FBC8 + ldr r2, [r1, #4] + ldr r1, _021D8814 ; =0x00003560 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021D880A + bl FUN_020ACD54 + add r4, r0, #0 + bne _021D87EA + mov r0, #0 + pop {r4, pc} +_021D87EA: + mov r1, #0 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D87FE + add r0, r4, #0 + bl FUN_020ACC84 + mov r0, #0 + pop {r4, pc} +_021D87FE: + ldr r0, _021D8810 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8814 ; =0x00003560 + str r4, [r1, r0] + mov r0, #1 + pop {r4, pc} +_021D880A: + mov r0, #0 + pop {r4, pc} + nop +_021D8810: .word UNK04_0220FBC8 +_021D8814: .word 0x00003560 + + thumb_func_start MOD04_021D8818 +MOD04_021D8818: ; 0x021D8818 + push {r3, lr} + ldr r0, _021D8858 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D885C ; =0x00003560 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8852 + ldr r1, [r0, #0xc] + cmp r1, #4 + bne _021D8852 + mov r1, #0 + bl FUN_020ACAB0 + cmp r0, #0 + beq _021D883A + mov r0, #0 + pop {r3, pc} +_021D883A: + ldr r0, _021D8858 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D885C ; =0x00003560 + ldr r0, [r1, r0] + bl FUN_020AADCC + cmp r0, #0 + beq _021D884E + mov r0, #1 + pop {r3, pc} +_021D884E: + mov r0, #0 + pop {r3, pc} +_021D8852: + mov r0, #0 + pop {r3, pc} + nop +_021D8858: .word UNK04_0220FBC8 +_021D885C: .word 0x00003560 + + thumb_func_start MOD04_021D8860 +MOD04_021D8860: ; 0x021D8860 + push {r4, lr} + add r4, r2, #0 + cmp r1, #0xc + bhi _021D8902 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8874: ; jump table + .short _021D8902 - _021D8874 - 2 ; case 0 + .short _021D888E - _021D8874 - 2 ; case 1 + .short _021D88F4 - _021D8874 - 2 ; case 2 + .short _021D88FC - _021D8874 - 2 ; case 3 + .short _021D88CE - _021D8874 - 2 ; case 4 + .short _021D8902 - _021D8874 - 2 ; case 5 + .short _021D8902 - _021D8874 - 2 ; case 6 + .short _021D88DE - _021D8874 - 2 ; case 7 + .short _021D88AE - _021D8874 - 2 ; case 8 + .short _021D88C2 - _021D8874 - 2 ; case 9 + .short _021D8902 - _021D8874 - 2 ; case 10 + .short _021D88FC - _021D8874 - 2 ; case 11 + .short _021D88FC - _021D8874 - 2 ; case 12 +_021D888E: + ldr r0, _021D8904 ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8908 ; =0x00003560 + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D88AA + add r0, r4, #0 + mov r1, #3 + bl FUN_020ACAB0 + add r0, r4, #0 + bl FUN_020ACC84 + pop {r4, pc} +_021D88AA: + str r4, [r2, r0] + pop {r4, pc} +_021D88AE: + add r0, r4, #0 + mov r1, #0 + bl FUN_020ACAB0 + add r0, r4, #0 + bl MOD04_021D8910 + bl MOD04_021D8C6C + pop {r4, pc} +_021D88C2: + add r0, r4, #0 + bl MOD04_021D8910 + bl MOD04_021D8C6C + pop {r4, pc} +_021D88CE: + add r0, r4, #0 + mov r1, #4 + bl FUN_020ACAB0 + add r0, r4, #0 + bl MOD04_021D8910 + pop {r4, pc} +_021D88DE: + add r0, r4, #0 + bl FUN_020AADCC + cmp r0, #0 + beq _021D8902 + ldr r0, _021D8904 ; =UNK04_0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D890C ; =0x000034F8 + str r2, [r1, r0] + pop {r4, pc} +_021D88F4: + add r0, r4, #0 + bl MOD04_021D8910 + pop {r4, pc} +_021D88FC: + add r0, r4, #0 + bl MOD04_021D8910 +_021D8902: + pop {r4, pc} + .align 2, 0 +_021D8904: .word UNK04_0220FBC8 +_021D8908: .word 0x00003560 +_021D890C: .word 0x000034F8 + + thumb_func_start MOD04_021D8910 +MOD04_021D8910: ; 0x021D8910 + push {r4, lr} + ldr r1, _021D893C ; =UNK04_0220FBC8 + add r4, r0, #0 + ldr r2, [r1, #4] + ldr r1, _021D8940 ; =0x00003560 + ldr r1, [r2, r1] + cmp r4, r1 + bne _021D8936 + bl FUN_020AACFC + add r0, r4, #0 + bl FUN_020ACC84 + ldr r0, _021D893C ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8940 ; =0x00003560 + str r2, [r1, r0] + pop {r4, pc} +_021D8936: + bl FUN_020ACC84 + pop {r4, pc} + .align 2, 0 +_021D893C: .word UNK04_0220FBC8 +_021D8940: .word 0x00003560 + + thumb_func_start MOD04_021D8944 +MOD04_021D8944: ; 0x021D8944 + push {r4, r5, r6, lr} + bl OS_GetTick + add r4, r0, #0 + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + add r5, r1, #0 + ldr r0, [r0, #0xc] + sub r1, r4, r0 + mov r0, #0xfa + lsl r0, r0, #8 + mul r0, r1 + ldr r1, _021D8A40 ; =0x000082EA + bl _u32_div_f + ldr r1, _021D8A3C ; =UNK04_0220FBC8 + ldr r3, _021D8A44 ; =0x0000411A + ldr r2, [r1, #8] + sub r0, r0, r3 + add r2, r2, r0 + ldr r0, _021D8A48 ; =0xFFFFD8F0 + str r2, [r1, #8] + cmp r2, r0 + bge _021D8976 + mov r0, #0 + str r0, [r1, #8] +_021D8976: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + str r4, [r0, #0xc] + str r5, [r0, #0x10] + bl VCT_Main + ldr r4, _021D8A3C ; =UNK04_0220FBC8 + ldr r0, _021D8A44 ; =0x0000411A + ldr r1, [r4, #8] + cmp r1, r0 + blt _021D899C + add r6, r0, #0 + add r5, r0, #0 +_021D898E: + bl VCT_Main + ldr r0, [r4, #8] + sub r0, r0, r6 + str r0, [r4, #8] + cmp r0, r5 + bge _021D898E +_021D899C: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8A4C ; =0x0000358C + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D89EC + sub r0, r0, #4 + ldr r0, [r2, r0] + cmp r0, #3 + bhi _021D89E2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D89BC: ; jump table + .short _021D89C4 - _021D89BC - 2 ; case 0 + .short _021D89CC - _021D89BC - 2 ; case 1 + .short _021D89D4 - _021D89BC - 2 ; case 2 + .short _021D89DC - _021D89BC - 2 ; case 3 +_021D89C4: + mov r0, #3 + bl PM_SetAmpGain + b _021D89E2 +_021D89CC: + mov r0, #2 + bl PM_SetAmpGain + b _021D89E2 +_021D89D4: + mov r0, #1 + bl PM_SetAmpGain + b _021D89E2 +_021D89DC: + mov r0, #0 + bl PM_SetAmpGain +_021D89E2: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8A4C ; =0x0000358C + str r2, [r1, r0] +_021D89EC: + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8A00 + cmp r0, #1 + beq _021D8A3A + cmp r0, #2 + pop {r4, r5, r6, pc} +_021D8A00: + bl MOD04_021D8018 + cmp r0, #0 + bne _021D8A1E + mov r0, #1 + bl MOD04_021D87D0 + cmp r0, #0 + beq _021D8A3A + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + str r2, [r1, r0] + pop {r4, r5, r6, pc} +_021D8A1E: + bl MOD04_021D8018 + cmp r0, #1 + bne _021D8A3A + mov r0, #0 + bl MOD04_021D8818 + cmp r0, #0 + beq _021D8A3A + ldr r0, _021D8A3C ; =UNK04_0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + str r2, [r1, r0] +_021D8A3A: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8A3C: .word UNK04_0220FBC8 +_021D8A40: .word 0x000082EA +_021D8A44: .word 0x0000411A +_021D8A48: .word 0xFFFFD8F0 +_021D8A4C: .word 0x0000358C +_021D8A50: .word 0x000034F8 + + thumb_func_start MOD04_021D8A54 +MOD04_021D8A54: ; 0x021D8A54 + push {r3, lr} + ldr r3, _021D8A78 ; =UNK04_0220FBC8 + ldr r3, [r3, #4] + cmp r3, #0 + bne _021D8A62 + mov r0, #0 + pop {r3, pc} +_021D8A62: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl VCT_HandleData + cmp r0, #0 + beq _021D8A72 + mov r0, #1 + pop {r3, pc} +_021D8A72: + mov r0, #0 + pop {r3, pc} + nop +_021D8A78: .word UNK04_0220FBC8 + + thumb_func_start MOD04_021D8A7C +MOD04_021D8A7C: ; 0x021D8A7C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r2, _021D8BC8 ; =UNK04_0220BAC0 + add r4, r1, #0 + ldrb r3, [r2] + add r1, sp, #0x10 + add r5, r0, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + ldrb r2, [r2, #2] + strb r3, [r1, #1] + strb r2, [r1, #2] + ldr r1, _021D8BCC ; =UNK04_0220FBC8 + ldr r1, [r1, #4] + cmp r1, #0 + bne _021D8ACA + ldr r1, _021D8BD0 ; =0x000035DC + bl AllocFromHeap + ldr r2, _021D8BCC ; =UNK04_0220FBC8 + mov r1, #0x35 + str r0, [r2] + add r0, #0x1f + lsr r0, r0, #5 + lsl r0, r0, #5 + str r0, [r2, #4] + lsl r1, r1, #8 + str r5, [r0, r1] + add r0, r1, #0 + ldr r5, _021D8BD4 ; =UNK04_0220FBE0 + ldr r3, [r2, #4] + sub r0, #0x40 + str r5, [r3, r0] + ldr r0, [r2, #4] + mov r3, #0 + sub r1, #0x3c + str r3, [r0, r1] + bl MOD04_021D868C +_021D8ACA: + ldr r5, _021D8BCC ; =UNK04_0220FBC8 + mov r7, #0x11 + ldr r0, [r5, #4] + ldr r3, _021D8BD8 ; =0x00003568 + mov r1, #3 + str r1, [r0, r3] + add r1, r3, #0 + ldr r0, [r5, #4] + sub r1, #0xa8 + ldr r2, [r0, r1] + add r1, r3, #4 + str r2, [r0, r1] + lsl r7, r7, #6 + add r0, r3, #0 + ldr r1, [r5, #4] + lsl r2, r7, #1 + add r0, #8 + str r2, [r1, r0] + mov r2, #0x41 + add r0, r3, #0 + ldr r1, [r5, #4] + lsl r2, r2, #6 + add r0, #0xc + str r2, [r1, r0] + add r0, r3, #0 + ldr r2, [r5, #4] + mov r1, #1 + add r0, #0x10 + str r1, [r2, r0] + add r2, r3, #0 + ldr r6, [r5, #4] + mov r0, #0 + add r2, #0x14 + str r0, [r6, r2] + add r2, r3, #0 + ldr r6, [r5, #4] + add r2, #0x18 + str r0, [r6, r2] + sub r0, r3, #3 + ldr r2, [r5, #4] + sub r3, #0x64 + strb r1, [r2, r0] + ldr r0, [r5, #4] + add r2, sp, #0x10 + add r0, r0, r3 + bl NNS_SndStrmAllocChannel + add r0, r5, #0 + ldr r1, [r0, #4] + ldr r0, _021D8BDC ; =0x00003504 + add r0, r1, r0 + mov r1, #0 + bl NNS_SndStrmSetVolume + mov r0, #0x41 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _021D8BE0 ; =MOD04_021D8730 + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #0xd3 + ldr r2, [r1, #4] + lsl r0, r0, #6 + ldr r2, [r2, r0] + add r0, #0x44 + str r2, [sp, #0xc] + ldr r3, [r1, #4] + mov r2, #0x8f + lsl r2, r2, #6 + add r0, r3, r0 + add r2, r3, r2 + mov r1, #1 + lsl r3, r7, #1 + bl NNS_SndStrmSetup + ldr r2, _021D8BCC ; =UNK04_0220FBC8 + ldr r1, _021D8BE4 ; =0x000034F8 + ldr r0, [r2, #4] + mov r5, #0 + str r5, [r0, r1] + add r0, r1, #0 + ldr r3, [r2, #4] + add r0, #0x68 + str r5, [r3, r0] + mov r0, #1 + str r0, [sp, #0x1c] + ldr r0, [r2, #4] + sub r1, #0x30 + add r0, r0, r1 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + bl MOD04_021D8018 + add r1, sp, #0x10 + strb r0, [r1, #0x10] + ldr r0, _021D8BE8 ; =MOD04_021D8860 + str r0, [sp, #0x2c] + add r0, r5, #0 + str r0, [sp, #0x30] + ldr r0, _021D8BCC ; =UNK04_0220FBC8 + ldr r0, [r0, #4] + str r0, [sp, #0x24] + mov r0, #0x8f + lsl r0, r0, #6 + str r0, [sp, #0x28] + add r0, sp, #0x14 + bl VCT_Init + cmp r0, #0 + ldr r0, _021D8BCC ; =UNK04_0220FBC8 + add r2, r5, #0 + ldr r1, [r0, #4] + ldr r0, _021D8BEC ; =0x000034FC + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_020AA7A0 + bl MOD04_021D8BF0 + mov r0, #1 + bl FUN_020AA760 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021D8BC8: .word UNK04_0220BAC0 +_021D8BCC: .word UNK04_0220FBC8 +_021D8BD0: .word 0x000035DC +_021D8BD4: .word UNK04_0220FBE0 +_021D8BD8: .word 0x00003568 +_021D8BDC: .word 0x00003504 +_021D8BE0: .word MOD04_021D8730 +_021D8BE4: .word 0x000034F8 +_021D8BE8: .word MOD04_021D8860 +_021D8BEC: .word 0x000034FC + + thumb_func_start MOD04_021D8BF0 +MOD04_021D8BF0: ; 0x021D8BF0 + ldr r0, _021D8BFC ; =UNK04_0220FBC8 + ldr r3, _021D8C00 ; =NNS_SndStrmStart + ldr r1, [r0, #4] + ldr r0, _021D8C04 ; =0x00003504 + add r0, r1, r0 + bx r3 + .align 2, 0 +_021D8BFC: .word UNK04_0220FBC8 +_021D8C00: .word NNS_SndStrmStart +_021D8C04: .word 0x00003504 + + thumb_func_start MOD04_021D8C08 +MOD04_021D8C08: ; 0x021D8C08 + push {r3, lr} + ldr r0, _021D8C50 ; =UNK04_0220FBC8 + ldr r1, _021D8C54 ; =0x00003560 + ldr r2, [r0, #4] + ldr r0, [r2, r1] + cmp r0, #0 + beq _021D8C1E + sub r1, #0x68 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021D8C24 +_021D8C1E: + bl MOD04_021D8C6C + pop {r3, pc} +_021D8C24: + cmp r1, #1 + bne _021D8C38 + mov r1, #2 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D8C38 + bl MOD04_021D8C6C + pop {r3, pc} +_021D8C38: + ldr r0, _021D8C50 ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8C54 ; =0x00003560 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D8C4E + bl MOD04_021D8C6C +_021D8C4E: + pop {r3, pc} + .align 2, 0 +_021D8C50: .word UNK04_0220FBC8 +_021D8C54: .word 0x00003560 + + thumb_func_start MOD04_021D8C58 +MOD04_021D8C58: ; 0x021D8C58 + ldr r1, _021D8C64 ; =UNK04_0220FBC8 + ldr r2, [r1, #4] + ldr r1, _021D8C68 ; =0x000034C4 + str r0, [r2, r1] + bx lr + nop +_021D8C64: .word UNK04_0220FBC8 +_021D8C68: .word 0x000034C4 + + thumb_func_start MOD04_021D8C6C +MOD04_021D8C6C: ; 0x021D8C6C + push {r4, lr} + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + ldr r1, [r0] + cmp r1, #0 + beq _021D8CBA + ldr r1, [r0, #4] + ldr r0, _021D8CC0 ; =0x000034C4 + ldr r4, [r1, r0] + bl MIC_StopAutoSampling + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8CC4 ; =0x00003504 + add r0, r1, r0 + bl NNS_SndStrmStop + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8CC4 ; =0x00003504 + add r0, r1, r0 + bl NNS_SndStrmFreeChannel + bl VCT_Cleanup + ldr r1, _021D8CBC ; =UNK04_0220FBC8 + mov r0, #0x35 + ldr r2, [r1, #4] + lsl r0, r0, #8 + ldr r0, [r2, r0] + ldr r1, [r1] + bl FreeToHeapExplicit + mov r1, #0 + ldr r0, _021D8CBC ; =UNK04_0220FBC8 + cmp r4, #0 + str r1, [r0] + str r1, [r0, #4] + beq _021D8CBA + blx r4 +_021D8CBA: + pop {r4, pc} + .align 2, 0 +_021D8CBC: .word UNK04_0220FBC8 +_021D8CC0: .word 0x000034C4 +_021D8CC4: .word 0x00003504 + + thumb_func_start MOD04_021D8CC8 +MOD04_021D8CC8: ; 0x021D8CC8 + push {r3, lr} + sub sp, #0x10 + ldr r0, _021D8CEC ; =UNK04_0220FBC8 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D8CE6 + add r0, sp, #0 + bl FUN_020AD144 + ldr r0, [sp, #4] + cmp r0, #2 + ble _021D8CE6 + ldr r0, [sp] + add sp, #0x10 + pop {r3, pc} +_021D8CE6: + mov r0, #0 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 +_021D8CEC: .word UNK04_0220FBC8 + + thumb_func_start MOD04_021D8CF0 +MOD04_021D8CF0: ; 0x021D8CF0 + ldr r0, _021D8CFC ; =UNK04_0220FBC8 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _021D8D00 ; =0x000034FC + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8CFC: .word UNK04_0220FBC8 +_021D8D00: .word 0x000034FC + + thumb_func_start MOD04_021D8D04 +MOD04_021D8D04: ; 0x021D8D04 + ldr r0, _021D8D10 ; =UNK04_0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8D14 ; =0x000034FC + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8D10: .word UNK04_0220FBC8 +_021D8D14: .word 0x000034FC + + .section .rodata + + .global UNK04_0220BAC0 +UNK04_0220BAC0: ; 0x0220BAC0 + .byte 0x0D, 0x0D, 0x0D + + .section .bss + + .global UNK04_0220FBC8 +UNK04_0220FBC8: ; 0x0220FBC8 + .space 0x18 + + .global UNK04_0220FBE0 +UNK04_0220FBE0: ; 0x0220FBE0 + .space 0x880 diff --git a/arm9/modules/04/asm/mod04_021D8D18.s b/arm9/modules/04/asm/mod04_021D8D18.s new file mode 100644 index 00000000..b91bc85a --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D8D18.s @@ -0,0 +1,1233 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021D8D18 +MOD04_021D8D18: ; 0x021D8D18 + stmdb sp!, {r4, lr} + ldr r2, _021D8D58 ; =UNK04_02210468 + ldr r1, _021D8D5C ; =0x000013D8 + ldr r2, [r2] + mov r4, r0 + add r0, r2, r1 + bl OS_LockMutex + ldr r2, _021D8D58 ; =UNK04_02210468 + ldr r1, _021D8D5C ; =0x000013D8 + ldr r0, [r2] + add r0, r0, #0x1000 + str r4, [r0, #4] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_021D8D58: .word UNK04_02210468 +_021D8D5C: .word 0x000013D8 + arm_func_end MOD04_021D8D18 + + arm_func_start MOD04_021D8D60 +MOD04_021D8D60: ; 0x021D8D60 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x98 + ldr r4, _021D8EE0 ; =UNK04_0221046C + mov r3, #0 + ldr r5, [r4, #4] + ldr ip, [r4] + cmp r5, r3 + mov r5, r0 + mov r6, r1 + mov r4, r2 + cmpeq ip, r3 + bne _021D8DC0 + ldr r0, _021D8EE4 ; =UNK04_0220BEF8 + bl strlen + mov r3, r0 + ldr r1, _021D8EE8 ; =UNK04_0220BF04 + ldr r2, _021D8EE4 ; =UNK04_0220BEF8 + mov r0, r5 + bl MOD04_021DAB68 + cmp r0, #0 + beq _021D8E18 + add sp, sp, #0x98 + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} +_021D8DC0: + ldr r0, _021D8EEC ; =UNK04_0220BF0C + bl strlen + mov r3, r0 + ldr r1, _021D8EE8 ; =UNK04_0220BF04 + ldr r2, _021D8EEC ; =UNK04_0220BF0C + mov r0, r5 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl strlen + mov r3, r0 + ldr r1, _021D8EF0 ; =UNK04_0220BF14 + mov r0, r5 + mov r2, r6 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8E18: + ldr r1, _021D8EE0 ; =UNK04_0221046C + add r0, sp, #0 + bl MOD04_021D9F78 + cmp r0, #0 + addeq sp, sp, #0x98 + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021D8EF4 ; =UNK04_0221048C + add r1, sp, #0 + ldr r2, [r0] + mov r0, r5 + bl MOD04_021D9C2C + cmp r0, #0 + addeq sp, sp, #0x98 + moveq r0, #8 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021D8EF8 ; =UNK04_02210460 + ldr r0, [r0] + cmp r0, #1 + bne _021D8E94 + ldr r0, _021D8EFC ; =UNK04_0220BF1C + bl strlen + mov r3, r0 + ldr r1, _021D8F00 ; =UNK04_0220BF20 + ldr r2, _021D8EFC ; =UNK04_0220BF1C + mov r0, r5 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8E94: + mov r0, r4 + bl wcslen + cmp r0, #0 + beq _021D8ED4 + mov r0, r4 + bl wcslen + mov r3, r0 + ldr r1, _021D8F04 ; =UNK04_0220BF28 + mov r0, r5 + mov r2, r4 + mov r3, r3, lsl #1 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8ED4: + mov r0, #0 + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021D8EE0: .word UNK04_0221046C +_021D8EE4: .word UNK04_0220BEF8 +_021D8EE8: .word UNK04_0220BF04 +_021D8EEC: .word UNK04_0220BF0C +_021D8EF0: .word UNK04_0220BF14 +_021D8EF4: .word UNK04_0221048C +_021D8EF8: .word UNK04_02210460 +_021D8EFC: .word UNK04_0220BF1C +_021D8F00: .word UNK04_0220BF20 +_021D8F04: .word UNK04_0220BF28 + arm_func_end MOD04_021D8D60 + + arm_func_start MOD04_021D8F08 +MOD04_021D8F08: ; 0x021D8F08 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021D91BC ; =UNK04_02210468 + mov r1, #0 + ldr r0, [r0] + str r1, [sp] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _021D91C0 ; =UNK04_0220BF34 + bl MOD04_021DA388 + str r0, [sp] + cmp r0, #0 + beq _021D8F40 + bl MOD04_021DCA84 +_021D8F40: + ldr r0, _021D91BC ; =UNK04_02210468 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D91C4 ; =errno + str r2, [sp] + str r2, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _021D91C8 ; =UNK04_0220BF3C + bl MOD04_021DA388 + bl atol + ldr r1, _021D91C4 ; =errno + ldr r1, [r1] + cmp r1, #0x22 + bne _021D8F9C + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91CC ; =0x00004E85 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xc + ldmia sp!, {r4, r5, pc} +_021D8F9C: + cmp r0, #0xc8 + beq _021D8FC8 + ldr r2, _021D91BC ; =UNK04_02210468 + ldr r1, _021D91D0 ; =0x000059D8 + ldr r2, [r2] + add r1, r0, r1 + add r0, r2, #0x1000 + str r1, [r0, #8] + add sp, sp, #4 + mov r0, #0x12 + ldmia sp!, {r4, r5, pc} +_021D8FC8: + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91D4 ; =0x0000100C + ldr r3, [r0] + ldr r1, _021D91D8 ; =UNK04_0220BF48 + add r0, r3, #0x1000 + ldr r0, [r0, #0x314] + add r2, r3, r2 + mov r3, #4 + bl MOD04_021DA334 + cmp r0, #0 + bgt _021D9014 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91CC ; =0x00004E85 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xe + ldmia sp!, {r4, r5, pc} +_021D9014: + ldr r1, _021D91BC ; =UNK04_02210468 + ldr r0, _021D91D4 ; =0x0000100C + ldr r2, [r1] + add r1, sp, #0 + add r0, r2, r0 + mov r2, #0xa + bl strtol + ldr r2, _021D91BC ; =UNK04_02210468 + ldr r1, _021D91D4 ; =0x0000100C + ldr r5, [r2] + mov r4, r0 + add r0, r5, r1 + bl strlen + ldr r1, _021D91D4 ; =0x0000100C + ldr r2, [sp] + add r1, r5, r1 + add r0, r1, r0 + cmp r2, r0 + ldrne r1, _021D91CC ; =0x00004E85 + addne r0, r5, #0x1000 + strne r1, [r0, #8] + addne sp, sp, #4 + movne r0, #0xc + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D91DC ; =0x00004E20 + add r1, r5, #0x1000 + add r0, r4, r0 + str r0, [r1, #8] + cmp r4, #0x64 + bge _021D91B0 + ldr ip, _021D91BC ; =UNK04_02210468 + mov r0, #0 + ldr r1, [ip] + ldr r5, _021D91E0 ; =0x00001052 + add r1, r1, #0x1000 + strb r0, [r1, #0x52] + ldr r2, [ip] + ldr r1, _021D91E4 ; =UNK04_0220BF54 + add r2, r2, #0x1000 + strb r0, [r2, #0x1f] + ldr r2, [ip] + ldr r3, _021D91E8 ; =0x0000012D + add r2, r2, #0x1000 + strb r0, [r2, #0x17f] + ldr r2, [ip] + add r2, r2, #0x1000 + strb r0, [r2, #0x10] + ldr r2, [ip] + add r2, r2, #0x1000 + strb r0, [r2, #0x188] + ldr r2, [ip] + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + add r2, r2, r5 + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91EC ; =0x0000101F + ldr r3, [r0] + ldr r1, _021D91F0 ; =UNK04_0220BF5C + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0x33 + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91F4 ; =0x0000117F + ldr r3, [r0] + ldr r1, _021D91F8 ; =UNK04_0220BF64 + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #9 + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D91FC ; =0x00001010 + ldr r3, [r0] + ldr r1, _021D9200 ; =UNK04_0220BF70 + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0xf + bl MOD04_021DA334 + ldr r0, _021D91BC ; =UNK04_02210468 + ldr r2, _021D9204 ; =0x00001188 + ldr r3, [r0] + ldr r1, _021D9208 ; =UNK04_0220BF7C + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0x41 + bl MOD04_021DA2F4 + ldr r0, _021D91BC ; =UNK04_02210468 + mov r1, #0 + ldr r0, [r0] + cmp r4, #0x28 + add r0, r0, #0x1000 + strb r1, [r0, #0x1b3] + ldrne r0, _021D920C ; =UNK04_02210464 + movne r1, #1 + strne r1, [r0] + ldreq r0, _021D920C ; =UNK04_02210464 + moveq r1, #2 + streq r1, [r0] +_021D91B0: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D91BC: .word UNK04_02210468 +_021D91C0: .word UNK04_0220BF34 +_021D91C4: .word errno +_021D91C8: .word UNK04_0220BF3C +_021D91CC: .word 0x00004E85 +_021D91D0: .word 0x000059D8 +_021D91D4: .word 0x0000100C +_021D91D8: .word UNK04_0220BF48 +_021D91DC: .word 0x00004E20 +_021D91E0: .word 0x00001052 +_021D91E4: .word UNK04_0220BF54 +_021D91E8: .word 0x0000012D +_021D91EC: .word 0x0000101F +_021D91F0: .word UNK04_0220BF5C +_021D91F4: .word 0x0000117F +_021D91F8: .word UNK04_0220BF64 +_021D91FC: .word 0x00001010 +_021D9200: .word UNK04_0220BF70 +_021D9204: .word 0x00001188 +_021D9208: .word UNK04_0220BF7C +_021D920C: .word UNK04_02210464 + arm_func_end MOD04_021D8F08 + + arm_func_start MOD04_021D9210 +MOD04_021D9210: ; 0x021D9210 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021D93F4 ; =UNK04_02210468 + mov r1, #0 + ldr r0, [r0] + add r2, r0, #0x1000 + ldr r0, [r2, #0x314] + ldr r5, [r2, #0x20c] + ldr r4, [r2, #0x210] + bl MOD04_021DA3DC + cmp r0, #1 + beq _021D9260 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xe + ldmia sp!, {r4, r5, pc} +_021D9260: + bl MOD04_021D8F08 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0xe + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r1, _021D93F8 ; =0x00004E84 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #8] + cmp r2, r1 + bge _021D9334 + ldr r0, _021D93FC ; =0x00004E22 + cmp r2, r0 + bne _021D9328 + ldr r0, _021D9400 ; =UNK04_0220BF88 + ldr r1, _021D9404 ; =0x0000071F + blx r5 + movs r5, r0 + bne _021D92D0 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021D92D0: + add r1, r5, #0x1f + ldr r0, _021D9408 ; =UNK04_0221046C + bic r1, r1, #0x1f + bl FUN_02096710 + cmp r0, #1 + beq _021D9318 + ldr r0, _021D940C ; =UNK04_0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xf + ldmia sp!, {r4, r5, pc} +_021D9318: + ldr r0, _021D940C ; =UNK04_0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 +_021D9328: + add sp, sp, #4 + mov r0, #0x15 + ldmia sp!, {r4, r5, pc} +_021D9334: + ldr r0, _021D9410 ; =0x00004E88 + cmp r2, r0 + beq _021D9350 + ldr r0, _021D9414 ; =0x00004E8C + cmp r2, r0 + beq _021D9378 + b _021D93E8 +_021D9350: + ldr r0, _021D9408 ; =UNK04_0221046C + bl FUN_02096570 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D9410 ; =0x00004E88 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x10 + ldmia sp!, {r4, r5, pc} +_021D9378: + ldr r0, _021D9400 ; =UNK04_0220BF88 + mov r1, #0x700 + blx r5 + movs r5, r0 + bne _021D93AC + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D9414 ; =0x00004E8C + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021D93AC: + add r0, r5, #0x1f + bic r0, r0, #0x1f + bl DWCi_AUTH_MakeWiFiID + ldr r0, _021D940C ; =UNK04_0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 + ldr r0, _021D93F4 ; =UNK04_02210468 + ldr r2, _021D9414 ; =0x00004E8C + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021D93E8: + mov r0, #0x12 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D93F4: .word UNK04_02210468 +_021D93F8: .word 0x00004E84 +_021D93FC: .word 0x00004E22 +_021D9400: .word UNK04_0220BF88 +_021D9404: .word 0x0000071F +_021D9408: .word UNK04_0221046C +_021D940C: .word UNK04_0220BF98 +_021D9410: .word 0x00004E88 +_021D9414: .word 0x00004E8C + arm_func_end MOD04_021D9210 + + arm_func_start MOD04_021D9418 +MOD04_021D9418: ; 0x021D9418 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, #0 + mov r0, #1 + ldr r7, _021D96D4 ; =0x00001388 + ldr fp, _021D96D8 ; =0x000082EA + ldr r5, _021D96DC ; =UNK04_02210468 + ldr r4, _021D96E0 ; =0x000013D8 + mov r6, sb + str sb, [sp, #8] + str sb, [sp, #0xc] + str r0, [sp, #4] +_021D9448: + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x314] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021D9470 + ldr r0, _021D96E4 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021D9470: + ldr r0, [r5] + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #8 + beq _021D9518 + ldr r0, _021D96E8 ; =0x00004E84 + str r0, [r1, #8] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #7 + bne _021D94C0 + mov r0, #0x14 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94C0: + cmp sb, #2 + ble _021D9508 + cmp r0, #2 + bne _021D94E0 + mov r0, #9 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94E0: + cmp r0, #3 + bne _021D94F8 + mov r0, #0xb + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94F8: + mov r0, #0xd + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9508: + ldr r0, [sp, #4] + add sb, sb, #1 + str r0, [sp] + b _021D9598 +_021D9518: + bl MOD04_021D9210 + cmp r0, #0x10 + beq _021D9544 + cmp r0, #0x11 + beq _021D956C + cmp r0, #0x15 + bne _021D9578 + mov r0, #0x15 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9544: + cmp sb, #2 + ble _021D955C + mov r0, #0x10 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D955C: + ldr r0, [sp, #8] + add sb, sb, #1 + str r0, [sp] + b _021D9598 +_021D956C: + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9578: + cmp sb, #2 + blt _021D958C + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D958C: + ldr r0, [sp, #4] + add sb, sb, #1 + str r0, [sp] +_021D9598: + bl OS_GetTick + mov r8, r0 + mov sl, r1 + bl OS_GetTick + subs r2, r0, r8 + sbc r0, r1, sl + mov r1, r0, lsl #6 + ldr r3, [sp, #0xc] + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, fp + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r7 + bhs _021D965C +_021D95D4: + ldr r0, [r5] + add r0, r0, r4 + bl OS_LockMutex + ldr r2, [r5] + add r1, r2, #0x1000 + ldr r0, [r1, #0x3f0] + cmp r0, #1 + bne _021D961C + ldr r2, _021D96E8 ; =0x00004E84 + ldr r0, _021D96E0 ; =0x000013D8 + str r2, [r1, #8] + ldr r1, [r5] + add r0, r1, r0 + bl OS_UnlockMutex + mov r0, #0x14 + bl MOD04_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D961C: + add r0, r2, r4 + bl OS_UnlockMutex + mov r0, r7 + bl OS_Sleep + bl OS_GetTick + subs r2, r0, r8 + sbc r0, r1, sl + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, fp + mov r3, r6 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r7 + blo _021D95D4 +_021D965C: + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + bl MOD04_021DAE4C + ldr r0, [r5] + add r0, r0, r4 + bl OS_LockMutex + ldr r0, [sp] + bl MOD04_021D96EC + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r2, [r5] + add r1, r2, #0x1000 + ldr r0, [r1, #4] + cmp r0, #0 + beq _021D96C0 + ldr r2, _021D96E8 ; =0x00004E84 + ldr r0, _021D96E0 ; =0x000013D8 + str r2, [r1, #8] + ldr r1, [r5] + add r0, r1, r0 + bl OS_UnlockMutex + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D96C0: + add r0, r2, r4 + bl OS_UnlockMutex + b _021D9448 + arm_func_end MOD04_021D9418 + + arm_func_start MOD04_021D96CC +MOD04_021D96CC: ; 0x021D96CC + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021D96D4: .word 0x00001388 +_021D96D8: .word 0x000082EA +_021D96DC: .word UNK04_02210468 +_021D96E0: .word 0x000013D8 +_021D96E4: .word 0x00001B34 +_021D96E8: .word 0x00004E84 + arm_func_end MOD04_021D96CC + + arm_func_start MOD04_021D96EC +MOD04_021D96EC: ; 0x021D96EC + stmdb sp!, {r4, lr} + ldr r1, _021D97E0 ; =UNK04_0220BEB4 + mov r4, r0 + ldr r0, [r1] + ldr r1, _021D97E4 ; =UNK04_0220BFA4 + bl strcmp + cmp r0, #0 + ldrne r0, _021D97E0 ; =UNK04_0220BEB4 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _021D97E8 ; =UNK04_02210468 + ldr r1, _021D97E0 ; =UNK04_0220BEB4 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #0x20c] + str r2, [r1, #0xc] + ldr r2, [r0, #0x210] + str r2, [r1, #0x10] + ldr r0, [r0, #0x314] + bl MOD04_021DB608 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + cmp r4, #1 + bne _021D9758 + ldr r0, _021D97EC ; =UNK04_0221046C + bl DWCi_BM_GetWiFiInfo +_021D9758: + ldr r0, _021D97E8 ; =UNK04_02210468 + ldr r2, _021D97F0 ; =0x000011CC + ldr r3, [r0] + add r0, r3, #0x1000 + ldr r0, [r0, #0x314] + add r1, r3, #0x1200 + add r2, r3, r2 + bl MOD04_021D8D60 + ldr r2, _021D97E8 ; =UNK04_02210468 + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2] + add r0, r0, #0x1000 + ldr r1, [r0, #4] + cmp r1, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, [r0, #0x314] + bl MOD04_021DB570 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, _021D97F4 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _021D97E8 ; =UNK04_02210468 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + bl MOD04_021DB4A4 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021D97E0: .word UNK04_0220BEB4 +_021D97E4: .word UNK04_0220BFA4 +_021D97E8: .word UNK04_02210468 +_021D97EC: .word UNK04_0221046C +_021D97F0: .word 0x000011CC +_021D97F4: .word OSi_ThreadInfo + arm_func_end MOD04_021D96EC + + arm_func_start MOD04_021D97F8 +MOD04_021D97F8: ; 0x021D97F8 + stmdb sp!, {r4, lr} + ldr r1, _021D9874 ; =UNK04_02210468 + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + bne _021D981C + mov r1, #0 + mov r2, #0x1c4 + bl MI_CpuFill8 +_021D981C: + ldr r1, _021D9874 ; =UNK04_02210468 + ldr r0, _021D9878 ; =0x00001008 + ldr r2, [r1] + mov r1, r4 + add r0, r2, r0 + mov r2, #0x1c4 + bl MI_CpuCopy8 + ldr r1, [r4] + ldr r0, _021D987C ; =0x00004E20 + cmp r1, r0 + blt _021D9854 + ldr r0, _021D9880 ; =0x00007530 + cmp r1, r0 + blt _021D985C +_021D9854: + ldr r0, _021D9884 ; =0x00005206 + str r0, [r4] +_021D985C: + ldr r1, [r4] + ldr r0, _021D9888 ; =0x00004E84 + cmp r1, r0 + rsbge r0, r1, #0 + strge r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_021D9874: .word UNK04_02210468 +_021D9878: .word 0x00001008 +_021D987C: .word 0x00004E20 +_021D9880: .word 0x00007530 +_021D9884: .word 0x00005206 +_021D9888: .word 0x00004E84 + arm_func_end MOD04_021D97F8 + + arm_func_start MOD04_021D988C +MOD04_021D988C: ; 0x021D988C + stmdb sp!, {r4, lr} + ldr r0, _021D98D4 ; =UNK04_02210468 + ldr r1, [r0] + cmp r1, #0 + moveq r0, #0x16 + ldmeqia sp!, {r4, pc} + ldr r0, _021D98D8 ; =0x000013D8 + add r0, r1, r0 + bl OS_LockMutex + ldr r1, _021D98D4 ; =UNK04_02210468 + ldr r0, _021D98D8 ; =0x000013D8 + ldr r2, [r1] + add r1, r2, #0x1000 + add r0, r2, r0 + ldr r4, [r1, #4] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021D98D4: .word UNK04_02210468 +_021D98D8: .word 0x000013D8 + arm_func_end MOD04_021D988C + + arm_func_start MOD04_021D98DC +MOD04_021D98DC: ; 0x021D98DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021D9914 ; =UNK04_02210468 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9918 ; =0x00001318 + add r0, r1, r0 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021D9914: .word UNK04_02210468 +_021D9918: .word 0x00001318 + arm_func_end MOD04_021D98DC + + arm_func_start MOD04_021D991C +MOD04_021D991C: ; 0x021D991C + stmdb sp!, {r4, lr} + ldr r0, _021D996C ; =UNK04_02210468 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + ldr r4, [r1, #0x210] + cmp r0, #0 + beq _021D9948 + bl MOD04_021DAE4C +_021D9948: + ldr r1, _021D996C ; =UNK04_02210468 + ldr r0, _021D9970 ; =UNK04_0220BFC4 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021D996C ; =UNK04_02210468 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021D996C: .word UNK04_02210468 +_021D9970: .word UNK04_0220BFC4 + arm_func_end MOD04_021D991C + + arm_func_start MOD04_021D9974 +MOD04_021D9974: ; 0x021D9974 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021D9A0C ; =UNK04_02210468 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9A10 ; =0x000013D8 + add r0, r1, r0 + bl OS_LockMutex + ldr r2, _021D9A0C ; =UNK04_02210468 + mov r3, #1 + ldr r0, [r2] + ldr r1, _021D9A10 ; =0x000013D8 + add r0, r0, #0x1000 + str r3, [r0, #0x3f0] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldr r0, _021D9A0C ; =UNK04_02210468 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + cmp r0, #0 + beq _021D99DC + bl MOD04_021DB440 +_021D99DC: + ldr r0, _021D9A0C ; =UNK04_02210468 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9A14 ; =0x00001318 + add r0, r1, r0 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021D9A0C: .word UNK04_02210468 +_021D9A10: .word 0x000013D8 +_021D9A14: .word 0x00001318 + arm_func_end MOD04_021D9974 + + arm_func_start MOD04_021D9A18 +MOD04_021D9A18: ; 0x021D9A18 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _021D9ABC ; =UNK04_02210468 + ldr r0, _021D9AC0 ; =0x000013D8 + ldr r1, [r1] + add r0, r1, r0 + bl OS_InitMutex + ldr r1, _021D9ABC ; =UNK04_02210468 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3f0] + ldr r1, [r1] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + beq _021D9A74 + ldr r0, _021D9AC4 ; =0x00001318 + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} +_021D9A74: + ldr r2, _021D9ABC ; =UNK04_02210468 + ldr r0, _021D9AC4 ; =0x00001318 + ldr lr, [r2] + mov r3, #0x1000 + ldr r1, _021D9AC8 ; =MOD04_021D9418 + str r3, [sp] + mov ip, #0x10 + add r0, lr, r0 + add r3, lr, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r1, _021D9ABC ; =UNK04_02210468 + ldr r0, _021D9AC4 ; =0x00001318 + ldr r1, [r1] + add r0, r1, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021D9ABC: .word UNK04_02210468 +_021D9AC0: .word 0x000013D8 +_021D9AC4: .word 0x00001318 +_021D9AC8: .word MOD04_021D9418 + arm_func_end MOD04_021D9A18 + + arm_func_start MOD04_021D9ACC +MOD04_021D9ACC: ; 0x021D9ACC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021D9BFC ; =UNK04_02210468 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + addne sp, sp, #4 + ldr r2, [r5, #0x40] + movne r0, #2 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D9C00 ; =UNK04_0220BFD4 + ldr r1, _021D9C04 ; =0x000013F4 + blx r2 + ldr r1, _021D9BFC ; =UNK04_02210468 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021D9C04 ; =0x000013F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021D9BFC ; =UNK04_02210468 + ldr r2, _021D9C08 ; =0x00001008 + ldr r0, [r1] + ldr r3, _021D9C0C ; =UNK04_02210464 + add r0, r0, #0x1000 + str r4, [r0, #0x314] + ldr r0, [r1] + mov r1, #0 + add r0, r0, r2 + mov r2, #0x1c4 + str r1, [r3] + bl MI_CpuFill8 + ldr r2, _021D9BFC ; =UNK04_02210468 + ldr r3, _021D9C10 ; =0x00004E84 + ldr r0, [r2] + ldr r1, _021D9C14 ; =0x000011CC + add r0, r0, #0x1000 + str r3, [r0, #8] + ldr lr, [r2] + mov r4, #4 + add ip, lr, r1 +_021D9B7C: + ldmia r5!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _021D9B7C + ldmia r5, {r0, r1} + stmia ip, {r0, r1} + add r0, lr, #0x1100 + mov r2, #0 + strh r2, [r0, #0xfe] + ldr r1, _021D9BFC ; =UNK04_02210468 + mov r0, #1 + ldr r1, [r1] + add r1, r1, #0x1000 + strb r2, [r1, #0x20b] + bl MOD04_021D96EC + ldr r2, _021D9BFC ; =UNK04_02210468 + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D9C18 ; =UNK04_02210460 + mov r1, #0 + str r1, [r0] + bl MOD04_021D9A18 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D9BFC: .word UNK04_02210468 +_021D9C00: .word UNK04_0220BFD4 +_021D9C04: .word 0x000013F4 +_021D9C08: .word 0x00001008 +_021D9C0C: .word UNK04_02210464 +_021D9C10: .word 0x00004E84 +_021D9C14: .word 0x000011CC +_021D9C18: .word UNK04_02210460 + arm_func_end MOD04_021D9ACC + + arm_func_start MOD04_021D9C1C +MOD04_021D9C1C: ; 0x021D9C1C + ldr r1, _021D9C28 ; =UNK04_0220BEB4 + str r0, [r1] + bx lr + .align 2, 0 +_021D9C28: .word UNK04_0220BEB4 + arm_func_end MOD04_021D9C1C + + .section .data + + .global UNK04_0220BEB4 +UNK04_0220BEB4: ; 0x0220BEB4 + .word UNK04_0220BED0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00 + + .global UNK04_0220BED0 +UNK04_0220BED0: ; 0x0220BED0 + .asciz "https://nas.test.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220BEF8 +UNK04_0220BEF8: ; 0x0220BEF8 + .asciz "acctcreate" + + .balign 4, 0 + .global UNK04_0220BF04 +UNK04_0220BF04: ; 0x0220BF04 + .asciz "action" + + .balign 4, 0 + .global UNK04_0220BF0C +UNK04_0220BF0C: ; 0x0220BF0C + .asciz "login" + + .balign 4, 0 + .global UNK04_0220BF14 +UNK04_0220BF14: ; 0x0220BF14 + .asciz "gsbrcd" + + .balign 4, 0 + .global UNK04_0220BF1C +UNK04_0220BF1C: ; 0x0220BF1C + .asciz "Y" + + .balign 4, 0 + .global UNK04_0220BF20 +UNK04_0220BF20: ; 0x0220BF20 + .asciz "iswfc" + + .balign 4, 0 + .global UNK04_0220BF28 +UNK04_0220BF28: ; 0x0220BF28 + .asciz "ingamesn" + + .balign 4, 0 + .global UNK04_0220BF34 +UNK04_0220BF34: ; 0x0220BF34 + .asciz "Date" + + .balign 4, 0 + .global UNK04_0220BF3C +UNK04_0220BF3C: ; 0x0220BF3C + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220BF48 +UNK04_0220BF48: ; 0x0220BF48 + .asciz "returncd" + + .balign 4, 0 + .global UNK04_0220BF54 +UNK04_0220BF54: ; 0x0220BF54 + .asciz "token" + + .balign 4, 0 + .global UNK04_0220BF5C +UNK04_0220BF5C: ; 0x0220BF5C + .asciz "locator" + + .balign 4, 0 + .global UNK04_0220BF64 +UNK04_0220BF64: ; 0x0220BF64 + .asciz "challenge" + + .balign 4, 0 + .global UNK04_0220BF70 +UNK04_0220BF70: ; 0x0220BF70 + .asciz "datetime" + + .balign 4, 0 + .global UNK04_0220BF7C +UNK04_0220BF7C: ; 0x0220BF7C + .asciz "Set-Cookie" + + .balign 4, 0 + .global UNK04_0220BF88 +UNK04_0220BF88: ; 0x0220BF88 + .asciz "ALLOC bmwork" + + .balign 4, 0 + .global UNK04_0220BF98 +UNK04_0220BF98: ; 0x0220BF98 + .asciz "FREE bmwork" + + .balign 4, 0 + .global UNK04_0220BFA4 +UNK04_0220BFA4: ; 0x0220BFA4 + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220BFC4 +UNK04_0220BFC4: ; 0x0220BFC4 + .asciz "FREE DWCauth" + + .balign 4, 0 + .global UNK04_0220BFD4 +UNK04_0220BFD4: ; 0x0220BFD4 + .asciz "ALLOC DWCauth" + + .balign 4, 0 + .section .bss + + .global UNK04_02210460 +UNK04_02210460: ; 0x02210460 + .space 0x4 + + .global UNK04_02210464 +UNK04_02210464: ; 0x02210464 + .space 0x4 + + .global UNK04_02210468 +UNK04_02210468: ; 0x02210468 + .space 0x4 + + .global UNK04_0221046C +UNK04_0221046C: ; 0x0221046C + .space 0x14 + + .global UNK04_02210480 +UNK04_02210480: ; 0x02210480 + .space 0x4 + + .global UNK04_02210484 +UNK04_02210484: ; 0x02210484 + .space 0x4 + + .global UNK04_02210488 +UNK04_02210488: ; 0x02210488 + .space 0x4 + + .global UNK04_0221048C +UNK04_0221048C: ; 0x0221048C + .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s new file mode 100644 index 00000000..206df265 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021D9C2C.s @@ -0,0 +1,549 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021D9C2C +MOD04_021D9C2C: ; 0x021D9C2C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov ip, #2 + ldr r2, _021D9F30 ; =UNK04_0220BFE4 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + add r0, sp, #4 + bl strlen + mov r3, r0 + ldr r1, _021D9F34 ; =UNK04_0220BFF0 + mov r0, r6 + add r2, sp, #4 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl strlen + mov r3, r0 + ldr r1, _021D9F38 ; =UNK04_0220BFF8 + mov r0, r6 + mov r2, r5 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0xe + bl strlen + mov r3, r0 + ldr r1, _021D9F3C ; =UNK04_0220C000 + mov r0, r6 + add r2, r5, #0xe + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x41 + bl strlen + mov r3, r0 + ldr r1, _021D9F40 ; =UNK04_0220C008 + mov r0, r6 + add r2, r5, #0x41 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x6f + bl strlen + mov r3, r0 + ldr r1, _021D9F44 ; =UNK04_0220C010 + mov r0, r6 + add r2, r5, #0x6f + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x15 + bl strlen + mov r3, r0 + ldr r1, _021D9F48 ; =UNK04_0220C018 + mov r0, r6 + add r2, r5, #0x15 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1a + bl strlen + mov r3, r0 + ldr r1, _021D9F4C ; =UNK04_0220C020 + mov r0, r6 + add r2, r5, #0x1a + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1d + bl strlen + mov r3, r0 + ldr r1, _021D9F50 ; =UNK04_0220C028 + mov r0, r6 + add r2, r5, #0x1d + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1f + bl strlen + mov r3, r0 + ldr r1, _021D9F54 ; =UNK04_0220C030 + mov r0, r6 + add r2, r5, #0x1f + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2c + bl strlen + mov r3, r0 + ldr r1, _021D9F58 ; =UNK04_0220C038 + mov r0, r6 + add r2, r5, #0x2c + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2f + bl strlen + mov r3, r0 + ldr r1, _021D9F5C ; =UNK04_0220C040 + mov r0, r6 + add r2, r5, #0x2f + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x34 + bl strlen + mov r3, r0 + ldr r1, _021D9F60 ; =UNK04_0220C048 + mov r0, r6 + add r2, r5, #0x34 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x7e + bl wcslen + mov r3, r0 + ldr r1, _021D9F64 ; =UNK04_0220C050 + mov r0, r6 + add r2, r5, #0x7e + mov r3, r3, lsl #1 + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #1 + bne _021D9ED0 + add r0, r5, #0x4e + bl strlen + mov r3, r0 + ldr r1, _021D9F68 ; =UNK04_0220C058 + mov r0, r6 + add r2, r5, #0x4e + bl MOD04_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} +_021D9ED0: + ldr r2, _021D9F6C ; =UNK04_0220C060 + mov ip, #2 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + ldr r1, _021D9F70 ; =UNK04_0220C078 + add r2, sp, #4 + mov r0, r6 + bl MOD04_021DAC98 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021D9F74 ; =UNK04_0220C084 + mov r0, r6 + add r2, r5, #0x15 + bl MOD04_021DAC98 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021D9F30: .word UNK04_0220BFE4 +_021D9F34: .word UNK04_0220BFF0 +_021D9F38: .word UNK04_0220BFF8 +_021D9F3C: .word UNK04_0220C000 +_021D9F40: .word UNK04_0220C008 +_021D9F44: .word UNK04_0220C010 +_021D9F48: .word UNK04_0220C018 +_021D9F4C: .word UNK04_0220C020 +_021D9F50: .word UNK04_0220C028 +_021D9F54: .word UNK04_0220C030 +_021D9F58: .word UNK04_0220C038 +_021D9F5C: .word UNK04_0220C040 +_021D9F60: .word UNK04_0220C048 +_021D9F64: .word UNK04_0220C050 +_021D9F68: .word UNK04_0220C058 +_021D9F6C: .word UNK04_0220C060 +_021D9F70: .word UNK04_0220C078 +_021D9F74: .word UNK04_0220C084 + arm_func_end MOD04_021D9C2C + + arm_func_start MOD04_021D9F78 +MOD04_021D9F78: ; 0x021D9F78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x8c + mov r6, r1 + mov r1, #0 + mov r2, #0x94 + mov r4, r0 + bl MI_CpuFill8 + ldr r3, [r6] + ldr r5, [r6, #4] + mov r0, #0 + cmp r5, r0 + cmpeq r3, r0 + beq _021D9FC4 + ldr r2, _021DA218 ; =UNK04_0220C094 + mov r0, r4 + mov r1, #0xe + str r5, [sp] + bl OS_SNPrintf + b _021D9FE0 +_021D9FC4: + ldr r3, [r6, #8] + ldr r5, [r6, #0xc] + ldr r2, _021DA218 ; =UNK04_0220C094 + mov r0, r4 + mov r1, #0xe + str r5, [sp] + bl OS_SNPrintf +_021D9FE0: + ldrh r3, [r6, #0x10] + ldr r2, _021DA21C ; =UNK04_0220C09C + add r0, r4, #0xe + mov r1, #7 + bl OS_SNPrintf + ldr r0, _021DA220 ; =0x027FFE0C + ldrb r0, [r0] + cmp r0, #0 + bne _021DA008 + bl OS_Terminate +_021DA008: + ldr r0, _021DA220 ; =0x027FFE0C + add r1, r4, #0x15 + mov r2, #4 + bl MI_CpuCopy8 + ldr r0, _021DA224 ; =0x027FFE10 + ldrb r0, [r0] + cmp r0, #0 + bne _021DA02C + bl OS_Terminate +_021DA02C: + ldr r0, _021DA224 ; =0x027FFE10 + add r1, r4, #0x1a + mov r2, #2 + bl MI_CpuCopy8 + mov r1, #0x30 + add r0, sp, #0x16 + strb r1, [r4, #0x1d] + bl OS_GetMacAddress + ldr r5, _021DA228 ; =UNK04_0220C0A4 + add r7, sp, #0x16 + add r6, r4, #0x1f + mov r8, #0 +_021DA05C: + ldrb r2, [r7] + mov r0, r6 + mov r1, r5 + bl OS_SPrintf + add r8, r8, #1 + cmp r8, #6 + add r7, r7, #1 + add r6, r6, #2 + blt _021DA05C + add r0, sp, #0x38 + bl OS_GetOwnerInfo + ldrb r0, [sp, #0x38] + ldr r2, _021DA228 ; =UNK04_0220C0A4 + mov r1, #3 + cmp r0, #6 + movhi r0, #1 + strhib r0, [sp, #0x38] + ldrb r3, [sp, #0x38] + add r0, r4, #0x2c + bl OS_SNPrintf + add r0, sp, #0x3c + add r1, r4, #0x7e + mov r2, #0x14 + bl MI_CpuCopy8 + ldrb r1, [sp, #0x3b] + ldr r2, _021DA22C ; =UNK04_0220C0AC + add r0, r4, #0x2f + str r1, [sp] + ldrb r3, [sp, #0x3a] + mov r1, #5 + bl OS_SNPrintf + add r0, sp, #0x1c + bl RTC_GetDate + cmp r0, #0 + bne _021DA0F8 + add r0, sp, #0x2c + bl RTC_GetTime + cmp r0, #0 + beq _021DA104 +_021DA0F8: + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA104: + ldr r0, [sp, #0x20] + ldr r2, _021DA230 ; =UNK04_0220C0B8 + str r0, [sp] + ldr r1, [sp, #0x24] + add r0, r4, #0x34 + str r1, [sp, #4] + ldr r3, [sp, #0x2c] + mov r1, #0xd + str r3, [sp, #8] + ldr r3, [sp, #0x30] + str r3, [sp, #0xc] + ldr r3, [sp, #0x34] + str r3, [sp, #0x10] + ldr r3, [sp, #0x1c] + bl OS_SNPrintf + bl OS_DisableInterrupts + mov sb, r0 + bl WCM_GetApMacAddress + mov r8, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r8, #0 + bne _021DA174 + mov r0, sb + bl OS_RestoreInterrupts + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA174: + add r7, r4, #0x41 + mov r6, #0 + ldr r5, _021DA228 ; =UNK04_0220C0A4 +_021DA180: + ldrb r2, [r8, r6] + mov r0, r7 + mov r1, r5 + bl OS_SPrintf + add r6, r6, #1 + cmp r6, #6 + add r7, r7, #2 + blt _021DA180 + bl MOD04_021EBAB8 + mov r3, r0 + ldr r2, _021DA234 ; =UNK04_0220C0D4 + add r0, r4, #0x6f + mov r1, #0xe + bl OS_SNPrintf + add r0, sp, #0x14 + bl WCM_GetApEssid + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DA1E8 + mov r0, sb + bl OS_RestoreInterrupts + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA1E8: + mov r0, r5 + add r1, r4, #0x72 + bl MOD04_021EE5F4 + mov r0, r5 + add r1, r4, #0x4e + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, sb + bl OS_RestoreInterrupts + mov r0, #1 + add sp, sp, #0x8c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021DA218: .word UNK04_0220C094 +_021DA21C: .word UNK04_0220C09C +_021DA220: .word 0x027FFE0C +_021DA224: .word 0x027FFE10 +_021DA228: .word UNK04_0220C0A4 +_021DA22C: .word UNK04_0220C0AC +_021DA230: .word UNK04_0220C0B8 +_021DA234: .word UNK04_0220C0D4 + arm_func_end MOD04_021D9F78 + + arm_func_start MOD04_021DA238 +MOD04_021DA238: ; 0x021DA238 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0 + bl DWCi_BM_GetWiFiInfo + add r1, sp, #0 + mov r0, r4 + bl MOD04_021D9F78 + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DA238 + + .section .data + + .global UNK04_0220BFE4 +UNK04_0220BFE4: ; 0x0220BFE4 + .asciz "%03d%03d" + + .balign 4, 0 + .global UNK04_0220BFF0 +UNK04_0220BFF0: ; 0x0220BFF0 + .asciz "sdkver" + + .balign 4, 0 + .global UNK04_0220BFF8 +UNK04_0220BFF8: ; 0x0220BFF8 + .asciz "userid" + + .balign 4, 0 + .global UNK04_0220C000 +UNK04_0220C000: ; 0x0220C000 + .asciz "passwd" + + .balign 4, 0 + .global UNK04_0220C008 +UNK04_0220C008: ; 0x0220C008 + .asciz "bssid" + + .balign 4, 0 + .global UNK04_0220C010 +UNK04_0220C010: ; 0x0220C010 + .asciz "apinfo" + + .balign 4, 0 + .global UNK04_0220C018 +UNK04_0220C018: ; 0x0220C018 + .asciz "gamecd" + + .balign 4, 0 + .global UNK04_0220C020 +UNK04_0220C020: ; 0x0220C020 + .asciz "makercd" + + .balign 4, 0 + .global UNK04_0220C028 +UNK04_0220C028: ; 0x0220C028 + .asciz "unitcd" + + .balign 4, 0 + .global UNK04_0220C030 +UNK04_0220C030: ; 0x0220C030 + .asciz "macadr" + + .balign 4, 0 + .global UNK04_0220C038 +UNK04_0220C038: ; 0x0220C038 + .asciz "lang" + + .balign 4, 0 + .global UNK04_0220C040 +UNK04_0220C040: ; 0x0220C040 + .asciz "birth" + + .balign 4, 0 + .global UNK04_0220C048 +UNK04_0220C048: ; 0x0220C048 + .asciz "devtime" + + .balign 4, 0 + .global UNK04_0220C050 +UNK04_0220C050: ; 0x0220C050 + .asciz "devname" + + .balign 4, 0 + .global UNK04_0220C058 +UNK04_0220C058: ; 0x0220C058 + .asciz "ssid" + + .balign 4, 0 + .global UNK04_0220C060 +UNK04_0220C060: ; 0x0220C060 + .asciz "Nitro WiFi SDK/%d.%d" + + .balign 4, 0 + .global UNK04_0220C078 +UNK04_0220C078: ; 0x0220C078 + .asciz "User-Agent" + + .balign 4, 0 + .global UNK04_0220C084 +UNK04_0220C084: ; 0x0220C084 + .asciz "HTTP_X_GAMECD" + + .balign 4, 0 + .global UNK04_0220C094 +UNK04_0220C094: ; 0x0220C094 + .asciz "%013llu" + + .balign 4, 0 + .global UNK04_0220C09C +UNK04_0220C09C: ; 0x0220C09C + .asciz "%03u" + + .balign 4, 0 + .global UNK04_0220C0A4 +UNK04_0220C0A4: ; 0x0220C0A4 + .asciz "%02x" + + .balign 4, 0 + .global UNK04_0220C0AC +UNK04_0220C0AC: ; 0x0220C0AC + .asciz "%02x%02x" + + .balign 4, 0 + .global UNK04_0220C0B8 +UNK04_0220C0B8: ; 0x0220C0B8 + .asciz "%02d%02d%02d%02d%02d%02d" + + .balign 4, 0 + .global UNK_0220C0D4 +UNK04_0220C0D4: ; 0x0220C0D4 + .asciz "%02d:0000000-00" + + .balign 4, 0 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s deleted file mode 100644 index 6f673fe8..00000000 --- a/arm9/modules/04/asm/thumb_04.s +++ /dev/null @@ -1,3157 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD04_021D74E0 -MOD04_021D74E0: ; 0x021D74E0 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, _021D7644 ; =UNK04_0220FBC0 - add r4, r1, #0 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D74F2 - bl GF_AssertFail -_021D74F2: - ldr r1, _021D7648 ; =0x00001FAC - add r0, r4, #0 - bl AllocFromHeap - ldr r2, _021D7644 ; =UNK04_0220FBC0 - mov r1, #0x1f - str r0, [r2, #4] - add r0, #0x1f - bic r0, r1 - mov r1, #0x1f - lsl r1, r1, #8 - str r0, [r2] - str r5, [r0, r1] - add r3, r1, #0 - ldr r6, [r2] - mov r0, #0 - add r3, #0xc - str r0, [r6, r3] - add r3, r1, #0 - ldr r6, [r2] - add r3, #0x10 - str r0, [r6, r3] - add r3, r1, #0 - ldr r6, [r2] - add r3, #0x14 - str r0, [r6, r3] - add r3, r1, #0 - ldr r6, [r2] - add r3, #0x44 - str r0, [r6, r3] - ldr r0, [r2] - add r1, #0x54 - str r4, [r0, r1] - ldr r1, _021D764C ; =0x0002B020 - add r0, r4, #0 - bl AllocFromHeap - ldr r2, _021D7644 ; =UNK04_0220FBC0 - ldr r1, _021D7650 ; =0x00001F04 - ldr r3, [r2] - str r0, [r3, r1] - ldr r0, [r2] - mov r2, #0 - ldr r0, [r0, r1] - mov r1, #0x1f - add r0, #0x1f - bic r0, r1 - mov r1, #0x2b - lsl r1, r1, #0xc - bl NNS_FndCreateExpHeapEx - ldr r1, _021D7644 ; =UNK04_0220FBC0 - ldr r3, _021D7654 ; =0x00001F08 - ldr r2, [r1] - str r0, [r2, r3] - add r0, r3, #0 - ldr r4, [r1] - mov r2, #0 - add r0, #0x64 - str r2, [r4, r0] - add r4, r3, #0 - ldr r6, [r1] - sub r0, r2, #1 - add r4, #0x54 - str r0, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x38 - str r2, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x48 - str r0, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x58 - str r0, [r6, r4] - add r0, r3, #0 - ldr r4, [r1] - add r0, #0x5c - str r2, [r4, r0] - add r4, r3, #0 - ldr r6, [r1] - mov r0, #1 - add r4, #0x60 - str r0, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x7a - strb r2, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x78 - strb r2, [r6, r4] - add r4, r3, #0 - ldr r6, [r1] - add r4, #0x79 - strb r2, [r6, r4] - add r2, r3, #0 - ldr r4, [r1] - add r2, #0x70 - str r0, [r4, r2] - add r2, r3, #0 - add r2, #0x74 - ldr r4, [r1] - cmp r5, #0 - str r0, [r4, r2] - beq _021D75FA - ldr r0, [r1] - sub r3, #8 - ldr r0, [r0, r3] - bl FUN_020286EC - bl FUN_02028228 - ldr r2, _021D7644 ; =UNK04_0220FBC0 - ldr r1, _021D7658 ; =0x00001EF0 - ldr r3, [r2] - str r0, [r3, r1] - ldr r0, [r2] - add r1, #0x10 - ldr r0, [r0, r1] - bl FUN_020286EC - mov r1, #0 - bl FUN_0202838C - ldr r1, _021D7644 ; =UNK04_0220FBC0 - ldr r2, [r1] - mov r1, #0x11 - lsl r1, r1, #8 - str r0, [r2, r1] -_021D75FA: - ldr r2, _021D7644 ; =UNK04_0220FBC0 - mov r0, #0 - ldr r3, [r2] - ldr r1, _021D765C ; =0x00001F38 - add r4, r0, #0 - str r0, [r3, r1] - sub r1, #0x20 -_021D7608: - ldr r3, [r2] - add r3, r3, r0 - add r0, r0, #1 - strb r4, [r3, r1] - cmp r0, #0x20 - blt _021D7608 - bl MOD04_021D85B4 - ldr r0, _021D7644 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7658 ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckHasProfile - cmp r0, #0 - bne _021D762C - mov r0, #1 - pop {r4, r5, r6, pc} -_021D762C: - ldr r0, _021D7644 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7658 ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckValidConsole - cmp r0, #0 - beq _021D7640 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D7640: - mov r0, #2 - pop {r4, r5, r6, pc} - .align 2, 0 -_021D7644: .word UNK04_0220FBC0 -_021D7648: .word 0x00001FAC -_021D764C: .word 0x0002B020 -_021D7650: .word 0x00001F04 -_021D7654: .word 0x00001F08 -_021D7658: .word 0x00001EF0 -_021D765C: .word 0x00001F38 - - thumb_func_start MOD04_021D7660 -MOD04_021D7660: ; 0x021D7660 - push {r3, lr} - ldr r0, _021D76A0 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D7698 - ldr r0, _021D76A4 ; =0x00001F08 - ldr r0, [r1, r0] - bl NNS_FndDestroyExpHeap - ldr r0, _021D76A0 ; =UNK04_0220FBC0 - ldr r1, _021D76A8 ; =0x00001F54 - ldr r2, [r0] - ldr r0, [r2, r1] - sub r1, #0x50 - ldr r1, [r2, r1] - bl FreeToHeapExplicit - ldr r1, _021D76A0 ; =UNK04_0220FBC0 - ldr r0, _021D76A8 ; =0x00001F54 - ldr r2, [r1] - ldr r1, [r1, #4] - ldr r0, [r2, r0] - bl FreeToHeapExplicit - ldr r0, _021D76A0 ; =UNK04_0220FBC0 - mov r1, #0 - str r1, [r0, #4] - str r1, [r0] -_021D7698: - bl MOD04_021DD6F0 - pop {r3, pc} - nop -_021D76A0: .word UNK04_0220FBC0 -_021D76A4: .word 0x00001F08 -_021D76A8: .word 0x00001F54 - - thumb_func_start MOD04_021D76AC -MOD04_021D76AC: ; 0x021D76AC - push {lr} - sub sp, #0x64 - ldr r0, _021D779C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #4 - bhi _021D7794 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D76C8: ; jump table - .short _021D76D2 - _021D76C8 - 2 ; case 0 - .short _021D7708 - _021D76C8 - 2 ; case 1 - .short _021D7736 - _021D76C8 - 2 ; case 2 - .short _021D7784 - _021D76C8 - 2 ; case 3 - .short _021D778A - _021D76C8 - 2 ; case 4 -_021D76D2: - ldr r0, _021D77A4 ; =MOD04_021D7DA8 - ldr r1, _021D77A8 ; =MOD04_021D7DEC - bl MOD04_021DD968 - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - ldr r0, _021D77AC ; =0x00001EF4 - mov r3, #0x14 - add r0, r1, r0 - mov r1, #2 - bl MOD04_021DDEE0 - mov r0, #2 - bl MOD04_021DDE7C - bl MOD04_021DDDCC - ldr r1, _021D779C ; =UNK04_0220FBC0 - ldr r0, _021D77A0 ; =0x00001F44 - ldr r2, [r1] - mov r3, #1 - str r3, [r2, r0] - ldr r1, [r1] - mov r2, #0 - add r0, #0x14 - str r2, [r1, r0] -_021D7708: - bl MOD04_021DDD7C - cmp r0, #0 - beq _021D7730 - bl MOD04_021DDC1C - cmp r0, #4 - bne _021D7724 - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #2 - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - str r2, [r1, r0] - b _021D7736 -_021D7724: - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #0xb - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - str r2, [r1, r0] - b _021D7736 -_021D7730: - bl MOD04_021DDCE8 - b _021D7794 -_021D7736: - bl MOD04_021D7E18 - cmp r0, #0 - blt _021D7798 - ldr r0, _021D779C ; =UNK04_0220FBC0 - ldr r3, _021D77B0 ; =UNK04_0220BEA0 - ldr r1, [r0] - ldr r0, _021D77B4 ; =UNK04_0220BEAC - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x11 - lsl r0, r0, #8 - ldr r2, [r1, r0] - add r0, r0, #4 - str r2, [sp, #0xc] - mov r2, #0x20 - str r2, [sp, #0x10] - ldr r2, _021D77B8 ; =0x00001EF0 - add r0, r1, r0 - ldr r1, [r1, r2] - ldr r2, _021D77BC ; =0x000029E7 - bl MOD04_021E0374 - add r0, sp, #0x14 - bl OS_GetOwnerInfo - mov r1, #0 - ldr r2, _021D77C0 ; =MOD04_021D7A7C - add r0, sp, #0x18 - add r3, r1, #0 - bl MOD04_021DFE64 - ldr r0, _021D779C ; =UNK04_0220FBC0 - mov r2, #3 - ldr r1, [r0] - ldr r0, _021D77A0 ; =0x00001F44 - str r2, [r1, r0] -_021D7784: - bl MOD04_021DFF74 - b _021D7794 -_021D778A: - bl MOD04_021DFF74 - add sp, #0x64 - mov r0, #1 - pop {pc} -_021D7794: - bl MOD04_021D7E18 -_021D7798: - add sp, #0x64 - pop {pc} - .align 2, 0 -_021D779C: .word UNK04_0220FBC0 -_021D77A0: .word 0x00001F44 -_021D77A4: .word MOD04_021D7DA8 -_021D77A8: .word MOD04_021D7DEC -_021D77AC: .word 0x00001EF4 -_021D77B0: .word UNK04_0220BEA0 -_021D77B4: .word UNK04_0220BEAC -_021D77B8: .word 0x00001EF0 -_021D77BC: .word 0x000029E7 -_021D77C0: .word MOD04_021D7A7C - - thumb_func_start MOD04_021D77C4 -MOD04_021D77C4: ; 0x021D77C4 - push {r3, r4} - ldr r3, _021D77D8 ; =UNK04_0220FBC0 - ldr r2, _021D77DC ; =0x00001F0C - ldr r4, [r3] - str r0, [r4, r2] - ldr r3, [r3] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - .align 2, 0 -_021D77D8: .word UNK04_0220FBC0 -_021D77DC: .word 0x00001F0C - - thumb_func_start MOD04_021D77E0 -MOD04_021D77E0: ; 0x021D77E0 - ldr r0, _021D77F8 ; =UNK04_0220FBC0 - ldr r2, [r0] - ldr r0, _021D77FC ; =0x00001F44 - ldr r1, [r2, r0] - cmp r1, #9 - bne _021D77F2 - mov r1, #0xa - str r1, [r2, r0] - bx lr -_021D77F2: - mov r1, #8 - str r1, [r2, r0] - bx lr - .align 2, 0 -_021D77F8: .word UNK04_0220FBC0 -_021D77FC: .word 0x00001F44 - - thumb_func_start MOD04_021D7800 -MOD04_021D7800: ; 0x021D7800 - push {r3, r4, r5, lr} - ldr r2, _021D78EC ; =UNK04_0220FBC0 - ldr r1, _021D78F0 ; =0x00001F44 - ldr r4, [r2] - ldr r3, [r4, r1] - cmp r3, #0xb - bhi _021D78E4 - add r5, r3, r3 - add r5, pc - ldrh r5, [r5, #6] - lsl r5, r5, #0x10 - asr r5, r5, #0x10 - add pc, r5 -_021D781A: ; jump table - .short _021D78E4 - _021D781A - 2 ; case 0 - .short _021D78E4 - _021D781A - 2 ; case 1 - .short _021D78E4 - _021D781A - 2 ; case 2 - .short _021D78E4 - _021D781A - 2 ; case 3 - .short _021D78E4 - _021D781A - 2 ; case 4 - .short _021D7832 - _021D781A - 2 ; case 5 - .short _021D7864 - _021D781A - 2 ; case 6 - .short _021D7886 - _021D781A - 2 ; case 7 - .short _021D78AA - _021D781A - 2 ; case 8 - .short _021D7864 - _021D781A - 2 ; case 9 - .short _021D78C4 - _021D781A - 2 ; case 10 - .short _021D78DE - _021D781A - 2 ; case 11 -_021D7832: - cmp r0, #0 - beq _021D783A - mov r0, #6 - str r0, [r4, r1] -_021D783A: - ldr r0, _021D78EC ; =UNK04_0220FBC0 - ldr r2, _021D78F4 ; =0x00001F48 - ldr r0, [r0] - ldr r1, [r0, r2] - cmp r1, #2 - bne _021D78E4 - add r1, r2, #0 - add r1, #0x14 - ldr r1, [r0, r1] - cmp r1, #0 - blt _021D78E4 - add r3, r0, r1 - add r1, r2, #0 - sub r1, #0x30 - ldrb r1, [r3, r1] - cmp r1, #6 - beq _021D78E4 - mov r3, #9 - sub r1, r2, #4 - str r3, [r0, r1] - b _021D78E4 -_021D7864: - cmp r3, #0 - bne _021D786E - bl MOD04_021EA530 - b _021D78E4 -_021D786E: - bl MOD04_021DFA40 - cmp r0, #1 - bne _021D787C - bl MOD04_021D77E0 - b _021D78E4 -_021D787C: - cmp r0, #0 - beq _021D78E4 - bl MOD04_021D77E0 - b _021D78E4 -_021D7886: - mov r0, #1 - add r1, #0x40 - strh r0, [r4, r1] - bl MOD04_021D8058 - ldr r0, _021D78EC ; =UNK04_0220FBC0 - ldr r2, [r0] - ldr r0, _021D78F8 ; =0x00001F68 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D78A0 - mov r1, #1 - b _021D78A2 -_021D78A0: - mov r1, #0 -_021D78A2: - add r0, #0x10 - str r1, [r2, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D78AA: - mov r0, #4 - str r0, [r4, r1] - add r0, r1, #0 - ldr r3, [r2] - mov r4, #0 - add r0, #8 - str r4, [r3, r0] - ldr r0, [r2] - sub r3, r4, #1 - add r1, #0x1c - str r3, [r0, r1] - mov r0, #2 - pop {r3, r4, r5, pc} -_021D78C4: - mov r0, #4 - str r0, [r4, r1] - add r0, r1, #0 - ldr r3, [r2] - mov r4, #0 - add r0, #8 - str r4, [r3, r0] - ldr r0, [r2] - sub r3, r4, #1 - add r1, #0x1c - str r3, [r0, r1] - mov r0, #3 - pop {r3, r4, r5, pc} -_021D78DE: - bl MOD04_021D7E18 - pop {r3, r4, r5, pc} -_021D78E4: - bl MOD04_021D7F8C - pop {r3, r4, r5, pc} - nop -_021D78EC: .word UNK04_0220FBC0 -_021D78F0: .word 0x00001F44 -_021D78F4: .word 0x00001F48 -_021D78F8: .word 0x00001F68 - - thumb_func_start MOD04_021D78FC -MOD04_021D78FC: ; 0x021D78FC - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D790E - mov r0, #0 - pop {r4, r5, r6, pc} -_021D790E: - bl MOD04_021DF95C - cmp r0, #0 - bne _021D7930 - ldr r0, _021D79A0 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D79A4 ; =0x00001F0C - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D792C - lsl r2, r4, #0x10 - mov r0, #0 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D792C: - mov r0, #1 - pop {r4, r5, r6, pc} -_021D7930: - ldr r0, _021D79A0 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D79A8 ; =0x00001F4C - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D7946 - mov r0, #0 - bl MOD04_021EB0FC - cmp r0, #0 - bne _021D794A -_021D7946: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D794A: - ldr r1, _021D79A0 ; =UNK04_0220FBC0 - ldr r0, _021D79AC ; =0x00001F78 - ldr r3, [r1] - mov r6, #1 - ldr r2, [r3, r0] - lsl r2, r2, #8 - orr r2, r6 - lsl r6, r6, #0xc - str r2, [r3, r6] - add r3, r0, #0 - ldr r2, [r1] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r3, [r1] - add r0, #8 - ldrb r0, [r3, r0] - ldr r2, _021D79B0 ; =0x00001002 - strb r0, [r3, r2] - ldr r3, [r1] - add r1, r2, #2 - add r0, r5, #0 - add r1, r3, r1 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r1, _021D79A0 ; =UNK04_0220FBC0 - ldr r0, _021D79A8 ; =0x00001F4C - ldr r2, [r1] - mov r3, #1 - str r3, [r2, r0] - ldr r2, [r1] - lsl r1, r3, #0xc - add r1, r2, r1 - mov r0, #0 - add r2, r4, #4 - bl MOD04_021EB044 - mov r0, #1 - pop {r4, r5, r6, pc} - .align 2, 0 -_021D79A0: .word UNK04_0220FBC0 -_021D79A4: .word 0x00001F0C -_021D79A8: .word 0x00001F4C -_021D79AC: .word 0x00001F78 -_021D79B0: .word 0x00001002 - - thumb_func_start MOD04_021D79B4 -MOD04_021D79B4: ; 0x021D79B4 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D79C6 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D79C6: - bl MOD04_021DF95C - cmp r0, #0 - beq _021D79D2 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D79D2: - ldr r0, _021D7A68 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7A6C ; =0x00001F4C - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D79E8 - mov r0, #1 - bl MOD04_021EB0FC - cmp r0, #0 - bne _021D79EC -_021D79E8: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D79EC: - ldr r1, _021D7A68 ; =UNK04_0220FBC0 - ldr r0, _021D7A70 ; =0x00001F78 - ldr r3, [r1] - mov r6, #1 - ldr r2, [r3, r0] - lsl r2, r2, #8 - orr r2, r6 - lsl r6, r6, #0xc - str r2, [r3, r6] - add r3, r0, #0 - ldr r2, [r1] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r3, [r1] - add r0, #8 - ldrb r0, [r3, r0] - ldr r2, _021D7A74 ; =0x00001002 - strb r0, [r3, r2] - ldr r3, [r1] - add r1, r2, #2 - add r0, r5, #0 - add r1, r3, r1 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r2, _021D7A68 ; =UNK04_0220FBC0 - ldr r1, _021D7A6C ; =0x00001F4C - ldr r3, [r2] - mov r0, #1 - str r0, [r3, r1] - ldr r2, [r2] - lsl r1, r0, #0xc - add r1, r2, r1 - add r2, r4, #4 - bl MOD04_021EB044 - cmp r0, #0 - bne _021D7A4C - ldr r1, _021D7A68 ; =UNK04_0220FBC0 - mov r0, #0 - ldr r2, [r1] - ldr r1, _021D7A6C ; =0x00001F4C - str r0, [r2, r1] - pop {r4, r5, r6, pc} -_021D7A4C: - ldr r0, _021D7A68 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7A78 ; =0x00001F10 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D7A62 - lsl r2, r4, #0x10 - mov r0, #0 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D7A62: - mov r0, #1 - pop {r4, r5, r6, pc} - nop -_021D7A68: .word UNK04_0220FBC0 -_021D7A6C: .word 0x00001F4C -_021D7A70: .word 0x00001F78 -_021D7A74: .word 0x00001002 -_021D7A78: .word 0x00001F10 - - thumb_func_start MOD04_021D7A7C -MOD04_021D7A7C: ; 0x021D7A7C - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - add r4, r2, #0 - ldr r1, [r0] - ldr r0, _021D7AFC ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckDirtyFlag - cmp r0, #0 - beq _021D7AB0 - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7AFC ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_ClearDirtyFlag - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - ldr r1, [r0] - mov r0, #0x1f - lsl r0, r0, #8 - ldr r0, [r1, r0] - mov r1, #0 - bl FUN_020227A0 -_021D7AB0: - cmp r5, #0 - bne _021D7AE8 - ldr r0, _021D7B00 ; =MOD04_021D7B70 - str r4, [sp] - str r0, [sp, #4] - ldr r2, _021D7AF8 ; =UNK04_0220FBC0 - str r4, [sp, #8] - ldr r3, [r2] - ldr r2, _021D7AFC ; =0x00001EF0 - ldr r1, _021D7B04 ; =MOD04_021D7B48 - ldr r2, [r3, r2] - ldr r3, _021D7B08 ; =MOD04_021D7B6C - mov r0, #0 - bl MOD04_021DFDBC - cmp r0, #0 - bne _021D7ADC - mov r0, #1 - bl FUN_020336A0 - add sp, #0xc - pop {r4, r5, pc} -_021D7ADC: - ldr r0, _021D7B0C ; =MOD04_021D7BBC - mov r1, #0 - bl MOD04_021E242C - add sp, #0xc - pop {r4, r5, pc} -_021D7AE8: - ldr r0, _021D7AF8 ; =UNK04_0220FBC0 - mov r2, #0xb - ldr r1, [r0] - ldr r0, _021D7B10 ; =0x00001F44 - str r2, [r1, r0] - add sp, #0xc - pop {r4, r5, pc} - nop -_021D7AF8: .word UNK04_0220FBC0 -_021D7AFC: .word 0x00001EF0 -_021D7B00: .word MOD04_021D7B70 -_021D7B04: .word MOD04_021D7B48 -_021D7B08: .word MOD04_021D7B6C -_021D7B0C: .word MOD04_021D7BBC -_021D7B10: .word 0x00001F44 - - thumb_func_start MOD04_021D7B14 -MOD04_021D7B14: ; 0x021D7B14 - push {r3, lr} - ldr r0, _021D7B3C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7B40 ; =0x00001F70 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D7B3A - bl MOD04_021DFA40 - ldr r1, _021D7B3C ; =UNK04_0220FBC0 - mov r3, #0 - ldr r2, [r1] - ldr r0, _021D7B44 ; =0x00001F60 - mvn r3, r3 - str r3, [r2, r0] - ldr r1, [r1] - mov r2, #0x11 - sub r0, #0x1c - str r2, [r1, r0] -_021D7B3A: - pop {r3, pc} - .align 2, 0 -_021D7B3C: .word UNK04_0220FBC0 -_021D7B40: .word 0x00001F70 -_021D7B44: .word 0x00001F60 - - thumb_func_start MOD04_021D7B48 -MOD04_021D7B48: ; 0x021D7B48 - cmp r0, #0 - bne _021D7B58 - ldr r0, _021D7B64 ; =UNK04_0220FBC0 - mov r2, #4 - ldr r1, [r0] - ldr r0, _021D7B68 ; =0x00001F44 - str r2, [r1, r0] - bx lr -_021D7B58: - ldr r0, _021D7B64 ; =UNK04_0220FBC0 - mov r2, #0xb - ldr r1, [r0] - ldr r0, _021D7B68 ; =0x00001F44 - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D7B64: .word UNK04_0220FBC0 -_021D7B68: .word 0x00001F44 - - thumb_func_start MOD04_021D7B6C -MOD04_021D7B6C: ; 0x021D7B6C - bx lr - .align 2, 0 - - thumb_func_start MOD04_021D7B70 -MOD04_021D7B70: ; 0x021D7B70 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _021D7BB8 ; =UNK04_0220FBC0 - add r4, r1, #0 - ldr r1, [r0] - mov r0, #0x1f - lsl r0, r0, #8 - ldr r0, [r1, r0] - bl FUN_020286EC - mov r1, #0 - bl FUN_0202838C - add r1, r0, #0 - ldr r0, _021D7BB8 ; =UNK04_0220FBC0 - ldr r2, [r0] - mov r0, #0x11 - lsl r0, r0, #8 - ldr r0, [r2, r0] - mov r2, #6 - lsl r2, r2, #6 - bl MI_CpuCopy8 - ldr r0, _021D7BB8 ; =UNK04_0220FBC0 - ldr r1, [r0] - mov r0, #0x1f - lsl r0, r0, #8 - ldr r0, [r1, r0] - bl FUN_020286EC - add r1, r5, #0 - add r2, r4, #0 - bl FUN_02028664 - pop {r3, r4, r5, pc} - nop -_021D7BB8: .word UNK04_0220FBC0 - - thumb_func_start MOD04_021D7BBC -MOD04_021D7BBC: ; 0x021D7BBC - bx lr - .align 2, 0 - - thumb_func_start MOD04_021D7BC0 -MOD04_021D7BC0: ; 0x021D7BC0 - push {r3, lr} - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - mov r2, #7 - ldr r1, [r0] - ldr r0, _021D7C20 ; =0x00001F44 - str r2, [r1, r0] - bl MOD04_021DF95C - cmp r0, #0 - bne _021D7BDA - mov r2, #1 - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - b _021D7BDE -_021D7BDA: - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - mov r2, #0 -_021D7BDE: - ldr r1, [r0] - ldr r0, _021D7C24 ; =0x00001F50 - str r2, [r1, r0] - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - ldr r0, _021D7C24 ; =0x00001F50 - lsl r2, r2, #0xc - ldr r0, [r1, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl MOD04_021EAE38 - ldr r0, _021D7C1C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7C24 ; =0x00001F50 - ldr r0, [r1, r0] - ldr r1, _021D7C28 ; =0x00002710 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl MOD04_021EACF8 - ldr r1, _021D7C1C ; =UNK04_0220FBC0 - ldr r0, _021D7C2C ; =0x00001F70 - ldr r2, [r1] - mov r3, #0 - str r3, [r2, r0] - ldr r1, [r1] - add r0, r0, #4 - str r3, [r1, r0] - pop {r3, pc} - .align 2, 0 -_021D7C1C: .word UNK04_0220FBC0 -_021D7C20: .word 0x00001F44 -_021D7C24: .word 0x00001F50 -_021D7C28: .word 0x00002710 -_021D7C2C: .word 0x00001F70 - - thumb_func_start MOD04_021D7C30 -MOD04_021D7C30: ; 0x021D7C30 - ldr r1, _021D7C44 ; =UNK04_0220FBC0 - ldr r0, _021D7C48 ; =0x00001F4C - ldr r2, [r1] - mov r3, #0 - str r3, [r2, r0] - ldr r1, [r1] - add r0, #0x28 - str r3, [r1, r0] - bx lr - nop -_021D7C44: .word UNK04_0220FBC0 -_021D7C48: .word 0x00001F4C - - thumb_func_start MOD04_021D7C4C -MOD04_021D7C4C: ; 0x021D7C4C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - add r4, r1, #0 - ldrb r5, [r4, #1] - ldrb r3, [r4] - str r2, [sp, #4] - lsl r5, r5, #8 - mov ip, r5 - ldrb r5, [r4, #3] - add r7, r3, #0 - ldr r3, _021D7D54 ; =UNK04_0220FBC0 - lsl r6, r5, #0x18 - ldrb r5, [r4, #2] - lsl r5, r5, #0x10 - orr r5, r6 - mov r6, ip - orr r5, r6 - orr r7, r5 - ldr r6, [r3] - ldr r5, _021D7D58 ; =0x00001F70 - mov r3, #1 - str r3, [r6, r5] - lsl r3, r7, #0x18 - lsr r3, r3, #0x18 - cmp r3, #1 - bne _021D7CB4 - mov r0, #1 - add r0, #0xff - tst r0, r7 - beq _021D7C96 - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - add r5, #0xc - ldr r1, [r0] - mov r0, #1 - str r0, [r1, r5] - b _021D7CA0 -_021D7C96: - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - mov r1, #0 - ldr r0, [r0] - add r5, #0xc - str r1, [r0, r5] -_021D7CA0: - ldr r3, _021D7D54 ; =UNK04_0220FBC0 - ldr r1, _021D7D5C ; =0x00001F84 - ldr r2, [r3] - mov r0, #0 - strh r0, [r2, r1] - ldrb r6, [r4, #2] - ldr r5, [r3] - sub r2, r1, #3 - strb r6, [r5, r2] - b _021D7CE4 -_021D7CB4: - bl MOD04_021D8A54 - cmp r0, #0 - bne _021D7D4E - mov r0, #1 - lsl r0, r0, #8 - tst r0, r7 - beq _021D7CD4 - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - add r0, r5, #0 - add r0, #0xc - str r2, [r1, r0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D7CD4: - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - mov r2, #0 - ldr r1, [r0] - add r0, r5, #0 - add r0, #0xc - str r2, [r1, r0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D7CE4: - ldr r5, [r4] - ldr r2, [r3] - add r1, r1, #4 - str r5, [r2, r1] - ldr r1, [sp, #4] - mov r2, #4 - sub r6, r1, #4 - add r1, r6, #0 - bl MOD04_021D7DA8 - add r5, r0, #0 - beq _021D7D4E - add r0, r4, #4 - add r1, r5, #0 - add r2, r6, #0 - bl MI_CpuCopy8 - bl MOD04_021DF95C - cmp r0, #0 - bne _021D7D2A - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7D60 ; =0x00001F0C - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D7D44 - ldr r2, [sp, #4] - ldr r0, [sp] - sub r2, r2, #4 - lsl r2, r2, #0x10 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 - b _021D7D44 -_021D7D2A: - ldr r0, _021D7D54 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7D64 ; =0x00001F10 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D7D44 - ldr r2, [sp, #4] - ldr r0, [sp] - sub r2, r2, #4 - lsl r2, r2, #0x10 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D7D44: - mov r0, #0 - add r1, r5, #0 - add r2, r6, #0 - bl MOD04_021D7DEC -_021D7D4E: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D7D54: .word UNK04_0220FBC0 -_021D7D58: .word 0x00001F70 -_021D7D5C: .word 0x00001F84 -_021D7D60: .word 0x00001F0C -_021D7D64: .word 0x00001F10 - - thumb_func_start MOD04_021D7D68 -MOD04_021D7D68: ; 0x021D7D68 - push {r3, lr} - cmp r0, #0 - bne _021D7D9A - bl MOD04_021DF978 - cmp r0, #1 - bne _021D7D9A - ldr r0, _021D7D9C ; =UNK04_0220FBC0 - ldr r2, [r0] - ldr r0, _021D7DA0 ; =0x00001F44 - ldr r1, [r2, r0] - cmp r1, #6 - bne _021D7D86 - mov r1, #8 - b _021D7D88 -_021D7D86: - mov r1, #0x10 -_021D7D88: - str r1, [r2, r0] - ldr r0, _021D7D9C ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7DA4 ; =0x00001F58 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D7D9A - bl MOD04_021D8C6C -_021D7D9A: - pop {r3, pc} - .align 2, 0 -_021D7D9C: .word UNK04_0220FBC0 -_021D7DA0: .word 0x00001F44 -_021D7DA4: .word 0x00001F58 - - thumb_func_start MOD04_021D7DA8 -MOD04_021D7DA8: ; 0x021D7DA8 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _021D7DE4 ; =UNK04_0220FBC0 - add r2, r6, #0 - ldr r1, [r0] - ldr r0, _021D7DE8 ; =0x00001F08 - ldr r0, [r1, r0] - add r1, r5, #0 - bl NNS_FndAllocFromExpHeapEx - add r5, r0, #0 - bne _021D7DD8 - mov r0, #1 - bl FUN_020336A0 - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, r5, r6, pc} -_021D7DD8: - add r0, r4, #0 - bl OS_RestoreInterrupts - add r0, r5, #0 - pop {r4, r5, r6, pc} - nop -_021D7DE4: .word UNK04_0220FBC0 -_021D7DE8: .word 0x00001F08 - - thumb_func_start MOD04_021D7DEC -MOD04_021D7DEC: ; 0x021D7DEC - push {r3, r4, r5, lr} - add r5, r1, #0 - beq _021D7E0C - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _021D7E10 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7E14 ; =0x00001F08 - ldr r0, [r1, r0] - add r1, r5, #0 - bl NNS_FndFreeToExpHeap - add r0, r4, #0 - bl OS_RestoreInterrupts -_021D7E0C: - pop {r3, r4, r5, pc} - nop -_021D7E10: .word UNK04_0220FBC0 -_021D7E14: .word 0x00001F08 - - thumb_func_start MOD04_021D7E18 -MOD04_021D7E18: ; 0x021D7E18 - push {r4, lr} - sub sp, #8 - add r0, sp, #4 - add r1, sp, #0 - bl MOD04_021DD718 - add r4, r0, #0 - beq _021D7EFA - ldr r0, [sp] - cmp r0, #7 - bhi _021D7EFA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7E3A: ; jump table - .short _021D7EFA - _021D7E3A - 2 ; case 0 - .short _021D7E4A - _021D7E3A - 2 ; case 1 - .short _021D7EFA - _021D7E3A - 2 ; case 2 - .short _021D7E66 - _021D7E3A - 2 ; case 3 - .short _021D7EFA - _021D7E3A - 2 ; case 4 - .short _021D7EFA - _021D7E3A - 2 ; case 5 - .short _021D7E66 - _021D7E3A - 2 ; case 6 - .short _021D7ECE - _021D7E3A - 2 ; case 7 -_021D7E4A: - bl MOD04_021DD6F0 - cmp r4, #0xa - blt _021D7E58 - add sp, #8 - add r0, r4, #0 - pop {r4, pc} -_021D7E58: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021D7EFA - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7E66: - ldr r0, _021D7F14 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D7EB2 - ldr r0, _021D7F18 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #0x11 - bhi _021D7EAE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7E82: ; jump table - .short _021D7EAA - _021D7E82 - 2 ; case 0 - .short _021D7EAA - _021D7E82 - 2 ; case 1 - .short _021D7EAA - _021D7E82 - 2 ; case 2 - .short _021D7EA6 - _021D7E82 - 2 ; case 3 - .short _021D7EA6 - _021D7E82 - 2 ; case 4 - .short _021D7EA6 - _021D7E82 - 2 ; case 5 - .short _021D7EA6 - _021D7E82 - 2 ; case 6 - .short _021D7EA6 - _021D7E82 - 2 ; case 7 - .short _021D7EA6 - _021D7E82 - 2 ; case 8 - .short _021D7EAE - _021D7E82 - 2 ; case 9 - .short _021D7EAE - _021D7E82 - 2 ; case 10 - .short _021D7EA6 - _021D7E82 - 2 ; case 11 - .short _021D7EAE - _021D7E82 - 2 ; case 12 - .short _021D7EAE - _021D7E82 - 2 ; case 13 - .short _021D7EAE - _021D7E82 - 2 ; case 14 - .short _021D7EA6 - _021D7E82 - 2 ; case 15 - .short _021D7EA6 - _021D7E82 - 2 ; case 16 - .short _021D7EA6 - _021D7E82 - 2 ; case 17 -_021D7EA6: - bl MOD04_021E0200 -_021D7EAA: - bl MOD04_021DDBBC -_021D7EAE: - bl MOD04_021DD6F0 -_021D7EB2: - ldr r0, _021D7F14 ; =UNK04_0220FBC0 - ldr r2, [r0] - cmp r2, #0 - beq _021D7EC0 - ldr r0, _021D7F18 ; =0x00001F44 - mov r1, #0xd - str r1, [r2, r0] -_021D7EC0: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021D7F10 - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7ECE: - ldr r1, _021D7F14 ; =UNK04_0220FBC0 - ldr r3, [r1] - cmp r3, #0 - beq _021D7EEC - ldr r0, _021D7F18 ; =0x00001F44 - mov r2, #0xe - str r2, [r3, r0] - ldr r1, [r1] - sub r0, #0x30 - ldr r1, [r1, r0] - cmp r1, #0 - beq _021D7EEC - ldr r0, [sp, #4] - neg r0, r0 - blx r1 -_021D7EEC: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021D7F10 - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7EFA: - ldr r0, _021D7F14 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7F1C ; =0x00001F82 - ldrb r0, [r1, r0] - cmp r0, #0 - beq _021D7F0E - mov r0, #1 - add sp, #8 - mvn r0, r0 - pop {r4, pc} -_021D7F0E: - mov r0, #0 -_021D7F10: - add sp, #8 - pop {r4, pc} - .align 2, 0 -_021D7F14: .word UNK04_0220FBC0 -_021D7F18: .word 0x00001F44 -_021D7F1C: .word 0x00001F82 - - thumb_func_start MOD04_021D7F20 -MOD04_021D7F20: ; 0x021D7F20 - push {r3, r4, r5, lr} - ldr r0, _021D7F80 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D7F84 ; =0x00001F4C - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D7F7E - bl MOD04_021DF95C - mov r1, #1 - sub r0, r1, r0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl MOD04_021EB0FC - cmp r0, #0 - beq _021D7F7E - ldr r4, _021D7F80 ; =UNK04_0220FBC0 - ldr r2, _021D7F84 ; =0x00001F4C - ldr r0, [r4] - mov r1, #1 - str r1, [r0, r2] - add r1, r2, #0 - ldr r0, [r4] - add r1, #0x2c - ldr r1, [r0, r1] - mov r3, #2 - lsl r1, r1, #8 - add r5, r1, #0 - orr r5, r3 - lsl r1, r3, #0xb - str r5, [r0, r1] - add r0, r2, #4 - ldr r1, [r4] - lsl r2, r3, #0xb - ldr r0, [r1, r0] - add r1, r1, r2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r2, #4 - bl MOD04_021EB044 - add r0, r4, #0 - ldr r1, [r0] - ldr r0, _021D7F88 ; =0x00001F74 - mov r2, #0 - str r2, [r1, r0] -_021D7F7E: - pop {r3, r4, r5, pc} - .align 2, 0 -_021D7F80: .word UNK04_0220FBC0 -_021D7F84: .word 0x00001F4C -_021D7F88: .word 0x00001F74 - - thumb_func_start MOD04_021D7F8C -MOD04_021D7F8C: ; 0x021D7F8C - push {r3, r4, r5, lr} - bl MOD04_021DFF74 - bl MOD04_021D83F0 - ldr r0, _021D800C ; =UNK04_0220FBC0 - ldr r1, _021D8010 ; =0x00001F58 - ldr r2, [r0] - ldr r0, [r2, r1] - cmp r0, #0 - beq _021D7FC2 - add r0, r1, #0 - add r0, #0x20 - ldr r0, [r2, r0] - cmp r0, #1 - bne _021D7FBA - add r1, #0x24 - ldr r0, [r2, r1] - cmp r0, #1 - bne _021D7FBA - bl MOD04_021D8D04 - b _021D7FBE -_021D7FBA: - bl MOD04_021D8CF0 -_021D7FBE: - bl MOD04_021D8944 -_021D7FC2: - ldr r4, _021D800C ; =UNK04_0220FBC0 - ldr r3, _021D8014 ; =0x00001F44 - ldr r1, [r4] - ldr r0, [r1, r3] - cmp r0, #0x11 - bne _021D7FD2 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D7FD2: - cmp r0, #0x10 - bne _021D7FDA - mov r0, #2 - pop {r3, r4, r5, pc} -_021D7FDA: - cmp r0, #7 - bne _021D8004 - add r2, r3, #0 - add r2, #0x30 - add r0, r3, #0 - ldr r2, [r1, r2] - add r0, #0x30 - add r5, r2, #1 - add r2, r3, #0 - ldr r0, [r1, r0] - add r2, #0x30 - str r5, [r1, r2] - cmp r0, #0x78 - blt _021D8004 - ldr r0, [r4] - add r3, #8 - ldr r0, [r0, r3] - cmp r0, #0 - bne _021D8004 - bl MOD04_021D7F20 -_021D8004: - bl MOD04_021D7E18 - pop {r3, r4, r5, pc} - nop -_021D800C: .word UNK04_0220FBC0 -_021D8010: .word 0x00001F58 -_021D8014: .word 0x00001F44 - - thumb_func_start MOD04_021D8018 -MOD04_021D8018: ; 0x021D8018 - push {r3, lr} - ldr r0, _021D803C ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D8034 - ldr r0, _021D8040 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #7 - beq _021D802E - cmp r0, #0xf - bne _021D8034 -_021D802E: - bl MOD04_021DF95C - pop {r3, pc} -_021D8034: - mov r0, #0 - mvn r0, r0 - pop {r3, pc} - nop -_021D803C: .word UNK04_0220FBC0 -_021D8040: .word 0x00001F44 - - thumb_func_start MOD04_021D8044 -MOD04_021D8044: ; 0x021D8044 - ldr r0, _021D8050 ; =UNK04_0220FBC0 - mov r2, #0 - ldr r1, [r0] - ldr r0, _021D8054 ; =0x00001F58 - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D8050: .word UNK04_0220FBC0 -_021D8054: .word 0x00001F58 - - thumb_func_start MOD04_021D8058 -MOD04_021D8058: ; 0x021D8058 - push {r3, lr} - ldr r0, _021D80CC ; =UNK04_0220FBC0 - ldr r2, _021D80D0 ; =0x00001F6C - ldr r0, [r0] - ldr r1, [r0, r2] - cmp r1, #5 - bhi _021D80AE - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D8072: ; jump table - .short _021D80AE - _021D8072 - 2 ; case 0 - .short _021D80AE - _021D8072 - 2 ; case 1 - .short _021D807E - _021D8072 - 2 ; case 2 - .short _021D808A - _021D8072 - 2 ; case 3 - .short _021D8096 - _021D8072 - 2 ; case 4 - .short _021D80A2 - _021D8072 - 2 ; case 5 -_021D807E: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #1 - bl MOD04_021D8A7C - b _021D80B8 -_021D808A: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #2 - bl MOD04_021D8A7C - b _021D80B8 -_021D8096: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #3 - bl MOD04_021D8A7C - b _021D80B8 -_021D80A2: - sub r2, #0x18 - ldr r0, [r0, r2] - mov r1, #4 - bl MOD04_021D8A7C - b _021D80B8 -_021D80AE: - ldr r1, _021D80D4 ; =0x00001F54 - ldr r0, [r0, r1] - mov r1, #4 - bl MOD04_021D8A7C -_021D80B8: - ldr r0, _021D80D8 ; =MOD04_021D8044 - bl MOD04_021D8C58 - ldr r0, _021D80CC ; =UNK04_0220FBC0 - mov r2, #1 - ldr r1, [r0] - ldr r0, _021D80DC ; =0x00001F58 - str r2, [r1, r0] - pop {r3, pc} - nop -_021D80CC: .word UNK04_0220FBC0 -_021D80D0: .word 0x00001F6C -_021D80D4: .word 0x00001F54 -_021D80D8: .word MOD04_021D8044 -_021D80DC: .word 0x00001F58 - - thumb_func_start MOD04_021D80E0 -MOD04_021D80E0: ; 0x021D80E0 - push {r3, r4, r5, lr} - mov r1, #0x64 - add r5, r0, #0 - bl _s32_div_f - mov r1, #0xfa - add r4, r0, #0 - add r0, r5, #0 - lsl r1, r1, #2 - bl _s32_div_f - ldr r2, _021D8270 ; =0x00004E84 - cmp r5, r2 - bne _021D8100 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8100: - add r1, r2, #2 - cmp r5, r1 - blt _021D8110 - add r1, r2, #7 - cmp r5, r1 - bgt _021D8110 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8110: - ldr r1, _021D8274 ; =0x00004E8D - cmp r5, r1 - bne _021D811A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D811A: - add r1, r1, #2 - cmp r5, r1 - blt _021D812A - ldr r1, _021D8278 ; =0x00005207 - cmp r5, r1 - bgt _021D812A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D812A: - ldr r1, _021D827C ; =0x0000CB24 - cmp r5, r1 - blt _021D813A - add r1, #0x5f - cmp r5, r1 - bgt _021D813A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D813A: - ldr r1, _021D8280 ; =0x0000CB88 - cmp r5, r1 - blt _021D814A - add r1, #0x5f - cmp r5, r1 - bgt _021D814A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D814A: - ldr r1, _021D8284 ; =0x0000CBEC - cmp r5, r1 - blt _021D815A - add r1, #0x5f - cmp r5, r1 - bgt _021D815A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D815A: - ldr r1, _021D8288 ; =0x0000020B - cmp r4, r1 - bne _021D8164 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8164: - add r2, r1, #7 - cmp r4, r2 - bne _021D816E - mov r0, #0 - pop {r3, r4, r5, pc} -_021D816E: - add r2, r1, #0 - add r2, #8 - cmp r4, r2 - bne _021D817A - mov r0, #0 - pop {r3, r4, r5, pc} -_021D817A: - add r2, r1, #0 - add r2, #9 - cmp r4, r2 - bne _021D8186 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D8186: - ldr r3, _021D828C ; =0x00004E85 - cmp r5, r3 - bne _021D8190 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D8190: - cmp r0, #0x17 - bne _021D8198 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D8198: - add r2, r3, #7 - cmp r5, r2 - bne _021D81A2 - mov r0, #2 - pop {r3, r4, r5, pc} -_021D81A2: - add r3, #9 - cmp r5, r3 - bne _021D81AC - mov r0, #3 - pop {r3, r4, r5, pc} -_021D81AC: - add r2, r1, #0 - sub r2, #0xb - cmp r4, r2 - bne _021D81B8 - mov r0, #4 - pop {r3, r4, r5, pc} -_021D81B8: - sub r1, #0x17 - cmp r4, r1 - bne _021D81C2 - mov r0, #5 - pop {r3, r4, r5, pc} -_021D81C2: - ldr r1, _021D8290 ; =0x0000C738 - cmp r5, r1 - blt _021D81D2 - add r1, #0x66 - cmp r5, r1 - bgt _021D81D2 - mov r0, #6 - pop {r3, r4, r5, pc} -_021D81D2: - ldr r1, _021D8294 ; =0x0000C7A0 - cmp r5, r1 - blt _021D81E2 - add r1, #0x5f - cmp r5, r1 - bgt _021D81E2 - mov r0, #6 - pop {r3, r4, r5, pc} -_021D81E2: - ldr r1, _021D8298 ; =0x00000201 - cmp r4, r1 - bne _021D81EC - mov r0, #6 - pop {r3, r4, r5, pc} -_021D81EC: - ldr r1, _021D829C ; =0x0000C79F - cmp r5, r1 - bne _021D81F6 - mov r0, #7 - pop {r3, r4, r5, pc} -_021D81F6: - ldr r1, _021D82A0 ; =0x0000CB20 - cmp r5, r1 - blt _021D8206 - add r1, r1, #3 - cmp r5, r1 - bgt _021D8206 - mov r0, #8 - pop {r3, r4, r5, pc} -_021D8206: - ldr r1, _021D82A4 ; =0x0000CB84 - cmp r5, r1 - blt _021D8216 - add r1, r1, #3 - cmp r5, r1 - bgt _021D8216 - mov r0, #8 - pop {r3, r4, r5, pc} -_021D8216: - ldr r1, _021D82A8 ; =0x0000CBE8 - cmp r5, r1 - blt _021D8226 - add r1, r1, #3 - cmp r5, r1 - bgt _021D8226 - mov r0, #8 - pop {r3, r4, r5, pc} -_021D8226: - ldr r1, _021D82AC ; =0x00013A2E - cmp r5, r1 - bne _021D8230 - mov r0, #9 - pop {r3, r4, r5, pc} -_021D8230: - cmp r0, #0x18 - bne _021D8238 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8238: - cmp r0, #0x19 - bne _021D8240 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8240: - cmp r0, #0x1f - bne _021D8248 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8248: - cmp r0, #0x36 - bne _021D8250 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8250: - ldr r0, _021D82B0 ; =0x0000EA60 - cmp r5, r0 - blt _021D8260 - ldr r0, _021D82B4 ; =0x0001869F - cmp r5, r0 - bgt _021D8260 - mov r0, #0xa - pop {r3, r4, r5, pc} -_021D8260: - ldr r0, _021D82B8 ; =0x00002710 - cmp r5, r0 - bge _021D826A - mov r0, #0xb - pop {r3, r4, r5, pc} -_021D826A: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} - .align 2, 0 -_021D8270: .word 0x00004E84 -_021D8274: .word 0x00004E8D -_021D8278: .word 0x00005207 -_021D827C: .word 0x0000CB24 -_021D8280: .word 0x0000CB88 -_021D8284: .word 0x0000CBEC -_021D8288: .word 0x0000020B -_021D828C: .word 0x00004E85 -_021D8290: .word 0x0000C738 -_021D8294: .word 0x0000C7A0 -_021D8298: .word 0x00000201 -_021D829C: .word 0x0000C79F -_021D82A0: .word 0x0000CB20 -_021D82A4: .word 0x0000CB84 -_021D82A8: .word 0x0000CBE8 -_021D82AC: .word 0x00013A2E -_021D82B0: .word 0x0000EA60 -_021D82B4: .word 0x0001869F -_021D82B8: .word 0x00002710 - - thumb_func_start MOD04_021D82BC -MOD04_021D82BC: ; 0x021D82BC - push {r3, lr} - cmp r0, #0 - bne _021D8346 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - ldr r2, _021D8368 ; =0x00001F44 - ldr r0, [r0] - ldr r1, [r0, r2] - cmp r1, #0x11 - bhi _021D835E - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D82DA: ; jump table - .short _021D835E - _021D82DA - 2 ; case 0 - .short _021D835E - _021D82DA - 2 ; case 1 - .short _021D835E - _021D82DA - 2 ; case 2 - .short _021D835E - _021D82DA - 2 ; case 3 - .short _021D8342 - _021D82DA - 2 ; case 4 - .short _021D82FE - _021D82DA - 2 ; case 5 - .short _021D835E - _021D82DA - 2 ; case 6 - .short _021D82FE - _021D82DA - 2 ; case 7 - .short _021D835E - _021D82DA - 2 ; case 8 - .short _021D835E - _021D82DA - 2 ; case 9 - .short _021D835E - _021D82DA - 2 ; case 10 - .short _021D835E - _021D82DA - 2 ; case 11 - .short _021D835E - _021D82DA - 2 ; case 12 - .short _021D8342 - _021D82DA - 2 ; case 13 - .short _021D835E - _021D82DA - 2 ; case 14 - .short _021D8328 - _021D82DA - 2 ; case 15 - .short _021D8342 - _021D82DA - 2 ; case 16 - .short _021D8342 - _021D82DA - 2 ; case 17 -_021D82FE: - add r2, #0x14 - ldr r0, [r0, r2] - cmp r0, #0 - beq _021D8316 - bl MOD04_021D8C08 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - mov r2, #0xf - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - str r2, [r1, r0] - b _021D835E -_021D8316: - bl MOD04_021DFA40 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - mov r2, #0x10 - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - str r2, [r1, r0] - mov r0, #1 - pop {r3, pc} -_021D8328: - add r2, #0x14 - ldr r0, [r0, r2] - cmp r0, #0 - bne _021D835E - bl MOD04_021DFA40 - ldr r0, _021D8364 ; =UNK04_0220FBC0 - mov r2, #0x10 - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - str r2, [r1, r0] - mov r0, #1 - pop {r3, pc} -_021D8342: - mov r0, #1 - pop {r3, pc} -_021D8346: - ldr r0, _021D8364 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8368 ; =0x00001F44 - ldr r0, [r1, r0] - cmp r0, #4 - beq _021D835A - cmp r0, #0x10 - beq _021D835A - cmp r0, #0x11 - bne _021D835E -_021D835A: - mov r0, #1 - pop {r3, pc} -_021D835E: - mov r0, #0 - pop {r3, pc} - nop -_021D8364: .word UNK04_0220FBC0 -_021D8368: .word 0x00001F44 - - thumb_func_start MOD04_021D836C -MOD04_021D836C: ; 0x021D836C - push {r3, r4} - ldr r2, _021D83A0 ; =UNK04_0220FBC0 - ldr r1, _021D83A4 ; =0x00001F44 - ldr r3, [r2] - ldr r0, [r3, r1] - sub r0, #0x10 - cmp r0, #1 - bhi _021D8398 - mov r4, #0 - add r0, r1, #0 - mvn r4, r4 - add r0, #0xc - str r4, [r3, r0] - ldr r0, [r2] - mov r3, #4 - str r3, [r0, r1] - ldr r0, [r2] - add r1, #0x1c - str r4, [r0, r1] - mov r0, #1 - pop {r3, r4} - bx lr -_021D8398: - mov r0, #0 - pop {r3, r4} - bx lr - nop -_021D83A0: .word UNK04_0220FBC0 -_021D83A4: .word 0x00001F44 - - thumb_func_start MOD04_021D83A8 -MOD04_021D83A8: ; 0x021D83A8 - ldr r1, _021D83B8 ; =UNK04_0220FBC0 - ldr r2, [r1] - cmp r2, #0 - beq _021D83B4 - ldr r1, _021D83BC ; =0x00001F14 - str r0, [r2, r1] -_021D83B4: - bx lr - nop -_021D83B8: .word UNK04_0220FBC0 -_021D83BC: .word 0x00001F14 - - thumb_func_start MOD04_021D83C0 -MOD04_021D83C0: ; 0x021D83C0 - push {r3, lr} - bl MOD04_021E0200 - bl MOD04_021DDBBC - bl MOD04_021D8C6C - bl MOD04_021D7660 - pop {r3, pc} - - thumb_func_start MOD04_021D83D4 -MOD04_021D83D4: ; 0x021D83D4 - push {r3, r4} - ldr r3, _021D83E8 ; =UNK04_0220FBC0 - ldr r2, _021D83EC ; =0x00001F38 - ldr r4, [r3] - str r0, [r4, r2] - ldr r3, [r3] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - .align 2, 0 -_021D83E8: .word UNK04_0220FBC0 -_021D83EC: .word 0x00001F38 - - thumb_func_start MOD04_021D83F0 -MOD04_021D83F0: ; 0x021D83F0 - push {r3, r4, r5, r6, r7, lr} - ldr r6, _021D8468 ; =UNK04_0220FBC0 - ldr r0, _021D846C ; =0x00001F38 - ldr r1, [r6] - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D8464 - mov r7, #0 -_021D8400: - mov r1, #0x7d - ldr r0, [r6] - lsl r1, r1, #6 - ldr r2, [r0, r1] - mov r1, #0x1f - add r5, r2, #0 - and r5, r1 - mov r1, #0xc - add r4, r5, #0 - mul r4, r1 - mov r1, #0x11 - lsl r1, r1, #8 - ldr r0, [r0, r1] - add r0, r0, r4 - bl DWC_IsBuddyFriendData - cmp r0, #0 - beq _021D844A - mov r0, #0x11 - ldr r2, [r6] - ldr r1, _021D846C ; =0x00001F38 - lsl r0, r0, #8 - ldr r0, [r2, r0] - ldr r3, _021D8470 ; =0x00001F3C - ldr r1, [r2, r1] - ldr r2, [r2, r3] - add r0, r0, r4 - add r3, r2, #0 - mul r3, r5 - add r1, r1, r3 - add r2, sp, #0 - bl MOD04_021E2578 - ldr r1, [r6] - add r2, r1, r5 - ldr r1, _021D8474 ; =0x00001F18 - strb r0, [r2, r1] -_021D844A: - mov r1, #0x7d - ldr r0, [r6] - lsl r1, r1, #6 - ldr r1, [r0, r1] - add r7, r7, #1 - add r2, r1, #1 - mov r1, #0x1f - and r2, r1 - mov r1, #0x7d - lsl r1, r1, #6 - str r2, [r0, r1] - cmp r7, #4 - blt _021D8400 -_021D8464: - pop {r3, r4, r5, r6, r7, pc} - nop -_021D8468: .word UNK04_0220FBC0 -_021D846C: .word 0x00001F38 -_021D8470: .word 0x00001F3C -_021D8474: .word 0x00001F18 - - thumb_func_start MOD04_021D8478 -MOD04_021D8478: ; 0x021D8478 - ldr r3, _021D847C ; =MOD04_021E2454 - bx r3 - .align 2, 0 -_021D847C: .word MOD04_021E2454 - - thumb_func_start MOD04_021D8480 -MOD04_021D8480: ; 0x021D8480 - ldr r1, _021D848C ; =UNK04_0220FBC0 - ldr r1, [r1] - add r1, r1, r0 - ldr r0, _021D8490 ; =0x00001F18 - ldrb r0, [r1, r0] - bx lr - .align 2, 0 -_021D848C: .word UNK04_0220FBC0 -_021D8490: .word 0x00001F18 - - thumb_func_start MOD04_021D8494 -MOD04_021D8494: ; 0x021D8494 - push {r3, lr} - ldr r1, _021D8510 ; =UNK04_0220FBC0 - ldr r3, [r1] - ldr r1, _021D8514 ; =0x00001F44 - ldr r2, [r3, r1] - cmp r2, #4 - beq _021D84A6 - mov r0, #0 - pop {r3, pc} -_021D84A6: - add r1, #0x18 - str r0, [r3, r1] - cmp r0, #0 - bge _021D84C2 - ldr r1, _021D8518 ; =MOD04_021D8558 - mov r2, #0 - ldr r3, _021D851C ; =MOD04_021D85A0 - mov r0, #2 - str r2, [sp] - bl MOD04_021DFD18 - mov r2, #1 - ldr r0, _021D8510 ; =UNK04_0220FBC0 - b _021D84D2 -_021D84C2: - ldr r1, _021D8520 ; =MOD04_021D8590 - mov r2, #0 - ldr r3, _021D851C ; =MOD04_021D85A0 - str r2, [sp] - bl MOD04_021DFB20 - ldr r0, _021D8510 ; =UNK04_0220FBC0 - mov r2, #2 -_021D84D2: - ldr r1, [r0] - ldr r0, _021D8524 ; =0x00001F48 - str r2, [r1, r0] - ldr r0, _021D8510 ; =UNK04_0220FBC0 - mov r2, #5 - ldr r1, [r0] - ldr r0, _021D8514 ; =0x00001F44 - str r2, [r1, r0] - ldr r0, _021D8528 ; =MOD04_021D7C30 - bl MOD04_021EAE18 - ldr r0, _021D852C ; =MOD04_021D7C4C - bl MOD04_021EADF8 - ldr r0, _021D8530 ; =MOD04_021D7D68 - mov r1, #0 - bl MOD04_021DFAF8 - ldr r0, _021D8534 ; =MOD04_021D7B14 - bl MOD04_021EADD8 - ldr r1, _021D8510 ; =UNK04_0220FBC0 - ldr r0, _021D8538 ; =0x00001F4C - ldr r2, [r1] - mov r3, #0 - str r3, [r2, r0] - ldr r1, [r1] - add r0, #0x3c - str r3, [r1, r0] - mov r0, #1 - pop {r3, pc} - .align 2, 0 -_021D8510: .word UNK04_0220FBC0 -_021D8514: .word 0x00001F44 -_021D8518: .word MOD04_021D8558 -_021D851C: .word MOD04_021D85A0 -_021D8520: .word MOD04_021D8590 -_021D8524: .word 0x00001F48 -_021D8528: .word MOD04_021D7C30 -_021D852C: .word MOD04_021D7C4C -_021D8530: .word MOD04_021D7D68 -_021D8534: .word MOD04_021D7B14 -_021D8538: .word 0x00001F4C - - thumb_func_start MOD04_021D853C -MOD04_021D853C: ; 0x021D853C - ldr r0, _021D8550 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D854A - ldr r0, _021D8554 ; =0x00001F5C - ldr r0, [r1, r0] - bx lr -_021D854A: - mov r0, #0 - mvn r0, r0 - bx lr - .align 2, 0 -_021D8550: .word UNK04_0220FBC0 -_021D8554: .word 0x00001F5C - - thumb_func_start MOD04_021D8558 -MOD04_021D8558: ; 0x021D8558 - push {r3, lr} - cmp r0, #0 - bne _021D8582 - cmp r1, #0 - bne _021D8572 - ldr r0, _021D8584 ; =UNK04_0220FBC0 - ldr r2, [sp, #8] - ldr r1, [r0] - ldr r0, _021D8588 ; =0x00001F5C - str r2, [r1, r0] - bl MOD04_021D7BC0 - pop {r3, pc} -_021D8572: - cmp r2, #0 - bne _021D8582 - ldr r0, _021D8584 ; =UNK04_0220FBC0 - mov r2, #0 - ldr r1, [r0] - ldr r0, _021D858C ; =0x00001F60 - mvn r2, r2 - str r2, [r1, r0] -_021D8582: - pop {r3, pc} - .align 2, 0 -_021D8584: .word UNK04_0220FBC0 -_021D8588: .word 0x00001F5C -_021D858C: .word 0x00001F60 - - thumb_func_start MOD04_021D8590 -MOD04_021D8590: ; 0x021D8590 - push {r3, lr} - cmp r0, #0 - bne _021D859E - cmp r1, #0 - bne _021D859E - bl MOD04_021D7BC0 -_021D859E: - pop {r3, pc} - - thumb_func_start MOD04_021D85A0 -MOD04_021D85A0: ; 0x021D85A0 - ldr r1, _021D85AC ; =UNK04_0220FBC0 - ldr r2, [r1] - ldr r1, _021D85B0 ; =0x00001F60 - str r0, [r2, r1] - bx lr - nop -_021D85AC: .word UNK04_0220FBC0 -_021D85B0: .word 0x00001F60 - - thumb_func_start MOD04_021D85B4 -MOD04_021D85B4: ; 0x021D85B4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - ldr r0, _021D8614 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8618 ; =0x00001EF0 - ldr r0, [r1, r0] - bl DWC_CheckHasProfile - cmp r0, #0 - bne _021D85D8 - ldr r0, _021D8614 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8618 ; =0x00001EF0 - ldr r0, [r1, r0] - add r1, sp, #0xc - bl DWC_CreateExchangeToken - b _021D85E6 -_021D85D8: - ldr r0, _021D8614 ; =UNK04_0220FBC0 - ldr r1, [r0] - ldr r0, _021D8618 ; =0x00001EF0 - ldr r0, [r1, r0] - add r1, sp, #0 - bl DWC_CreateExchangeToken -_021D85E6: - mov r4, #0 - mov r7, #0x11 - ldr r6, _021D8614 ; =UNK04_0220FBC0 - add r5, r4, #0 - lsl r7, r7, #8 -_021D85F0: - mov r0, #0x11 - ldr r1, [r6] - lsl r0, r0, #8 - ldr r0, [r1, r0] - add r0, r0, r5 - bl DWC_GetFriendDataType - ldr r0, [r6] - ldr r0, [r0, r7] - add r0, r0, r5 - bl DWC_IsBuddyFriendData - add r4, r4, #1 - add r5, #0xc - cmp r4, #0x20 - blt _021D85F0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021D8614: .word UNK04_0220FBC0 -_021D8618: .word 0x00001EF0 - - thumb_func_start MOD04_021D861C -MOD04_021D861C: ; 0x021D861C - ldr r3, _021D8620 ; =MOD04_021D8CC8 - bx r3 - .align 2, 0 -_021D8620: .word MOD04_021D8CC8 - - thumb_func_start MOD04_021D8624 -MOD04_021D8624: ; 0x021D8624 - ldr r0, _021D8638 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D8632 - ldr r0, _021D863C ; =0x00001F68 - ldr r0, [r1, r0] - bx lr -_021D8632: - mov r0, #0 - bx lr - nop -_021D8638: .word UNK04_0220FBC0 -_021D863C: .word 0x00001F68 - - thumb_func_start MOD04_021D8640 -MOD04_021D8640: ; 0x021D8640 - ldr r0, _021D8654 ; =UNK04_0220FBC0 - ldr r1, [r0] - cmp r1, #0 - beq _021D864E - ldr r0, _021D8658 ; =0x00001F60 - ldr r0, [r1, r0] - bx lr -_021D864E: - mov r0, #0 - bx lr - nop -_021D8654: .word UNK04_0220FBC0 -_021D8658: .word 0x00001F60 - - thumb_func_start MOD04_021D865C -MOD04_021D865C: ; 0x021D865C - ldr r0, _021D8670 ; =UNK04_0220FBC0 - ldr r2, [r0] - cmp r2, #0 - beq _021D866C - mov r1, #0 - ldr r0, _021D8674 ; =0x00001F60 - mvn r1, r1 - str r1, [r2, r0] -_021D866C: - bx lr - nop -_021D8670: .word UNK04_0220FBC0 -_021D8674: .word 0x00001F60 - - thumb_func_start MOD04_021D8678 -MOD04_021D8678: ; 0x021D8678 - ldr r1, _021D8684 ; =UNK04_0220FBC0 - ldr r2, [r1] - ldr r1, _021D8688 ; =0x00001F68 - str r0, [r2, r1] - bx lr - nop -_021D8684: .word UNK04_0220FBC0 -_021D8688: .word 0x00001F68 - - thumb_func_start MOD04_021D868C -MOD04_021D868C: ; 0x021D868C - push {r3, r4, r5, lr} - bl MIC_Init - bl PM_Init - mov r0, #1 - bl PM_SetAmp - mov r0, #3 - bl PM_SetAmpGain - ldr r0, _021D8718 ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r3, _021D871C ; =0x00003584 - add r5, r2, #0 - str r2, [r1, r3] - add r1, r3, #0 - ldr r4, [r0, #4] - add r1, #0xc - str r2, [r4, r1] - ldr r4, [r0, #4] - add r1, r3, #4 - str r2, [r4, r1] - add r1, r3, #0 - ldr r4, [r0, #4] - add r1, #8 - str r2, [r4, r1] - ldr r1, [r0, #4] - add r3, #0x10 - str r2, [r1, r3] - ldr r3, _021D8720 ; =0x00003598 - add r1, r2, #0 -_021D86CE: - ldr r4, [r0, #4] - add r2, r2, #1 - add r4, r4, r5 - add r5, r5, #2 - strh r1, [r4, r3] - cmp r2, #0x10 - blt _021D86CE - ldr r0, _021D8718 ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D8724 ; =0x000035B8 - str r1, [r2, r0] - mov r0, #1 - bl FUN_020AA770 - bl NNS_SndInit - ldr r0, _021D8718 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8728 ; =0x00003504 - add r0, r1, r0 - bl NNS_SndStrmInit - ldr r1, _021D8718 ; =UNK04_0220FBC8 - mov r0, #0 - ldr r2, [r1, #4] - mov r1, #0xb1 - lsl r1, r1, #6 - add r1, r2, r1 - mov r2, #0x22 - lsl r2, r2, #6 - bl MIi_CpuClearFast - ldr r0, _021D8718 ; =UNK04_0220FBC8 - mov r1, #0 - str r1, [r0, #8] - pop {r3, r4, r5, pc} - nop -_021D8718: .word UNK04_0220FBC8 -_021D871C: .word 0x00003584 -_021D8720: .word 0x00003598 -_021D8724: .word 0x000035B8 -_021D8728: .word 0x00003504 - - thumb_func_start MOD04_021D872C -MOD04_021D872C: ; 0x021D872C - bx lr - .align 2, 0 - - thumb_func_start MOD04_021D8730 -MOD04_021D8730: ; 0x021D8730 - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r3, #0 - ldr r4, [sp, #0x14] - cmp r0, #0 - bne _021D8748 - ldr r0, [r6] - mov r1, #0 - add r2, r5, #0 - bl MI_CpuFill8 - pop {r4, r5, r6, pc} -_021D8748: - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D87BC ; =0x00003565 - ldrb r1, [r2, r0] - cmp r1, #0 - beq _021D876A - add r0, r0, #3 - add r0, r2, r0 - ldr r1, _021D87C0 ; =MOD04_021D872C - mov r2, #0 - bl MIC_StartAutoSamplingAsync - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D87BC ; =0x00003565 - strb r2, [r1, r0] -_021D876A: - bl MIC_GetLastSamplingAddress - sub r0, r0, r4 - cmp r0, r5 - bhs _021D8776 - add r4, r4, r5 -_021D8776: - ldr r0, _021D87C4 ; =0x027FFFA8 - ldrh r1, [r0] - mov r0, #2 - lsl r0, r0, #0xe - and r0, r1 - asr r0, r0, #0xf - beq _021D878E - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - mov r0, #0xb1 - lsl r0, r0, #6 - add r4, r1, r0 -_021D878E: - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D87C8 ; =0x000034FC - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D87A2 - add r0, r4, #0 - add r1, r5, #0 - bl FUN_020AABDC -_021D87A2: - ldr r0, [r6] - add r1, r5, #0 - mov r2, #0 - bl FUN_020AA824 - ldr r0, _021D87B8 ; =UNK04_0220FBC8 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D87CC ; =0x00003564 - strb r2, [r1, r0] - pop {r4, r5, r6, pc} - .align 2, 0 -_021D87B8: .word UNK04_0220FBC8 -_021D87BC: .word 0x00003565 -_021D87C0: .word MOD04_021D872C -_021D87C4: .word 0x027FFFA8 -_021D87C8: .word 0x000034FC -_021D87CC: .word 0x00003564 - - thumb_func_start MOD04_021D87D0 -MOD04_021D87D0: ; 0x021D87D0 - push {r4, lr} - ldr r1, _021D8810 ; =UNK04_0220FBC8 - ldr r2, [r1, #4] - ldr r1, _021D8814 ; =0x00003560 - ldr r1, [r2, r1] - cmp r1, #0 - bne _021D880A - bl FUN_020ACD54 - add r4, r0, #0 - bne _021D87EA - mov r0, #0 - pop {r4, pc} -_021D87EA: - mov r1, #0 - bl FUN_020ACBA0 - cmp r0, #0 - beq _021D87FE - add r0, r4, #0 - bl FUN_020ACC84 - mov r0, #0 - pop {r4, pc} -_021D87FE: - ldr r0, _021D8810 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8814 ; =0x00003560 - str r4, [r1, r0] - mov r0, #1 - pop {r4, pc} -_021D880A: - mov r0, #0 - pop {r4, pc} - nop -_021D8810: .word UNK04_0220FBC8 -_021D8814: .word 0x00003560 - - thumb_func_start MOD04_021D8818 -MOD04_021D8818: ; 0x021D8818 - push {r3, lr} - ldr r0, _021D8858 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D885C ; =0x00003560 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D8852 - ldr r1, [r0, #0xc] - cmp r1, #4 - bne _021D8852 - mov r1, #0 - bl FUN_020ACAB0 - cmp r0, #0 - beq _021D883A - mov r0, #0 - pop {r3, pc} -_021D883A: - ldr r0, _021D8858 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D885C ; =0x00003560 - ldr r0, [r1, r0] - bl FUN_020AADCC - cmp r0, #0 - beq _021D884E - mov r0, #1 - pop {r3, pc} -_021D884E: - mov r0, #0 - pop {r3, pc} -_021D8852: - mov r0, #0 - pop {r3, pc} - nop -_021D8858: .word UNK04_0220FBC8 -_021D885C: .word 0x00003560 - - thumb_func_start MOD04_021D8860 -MOD04_021D8860: ; 0x021D8860 - push {r4, lr} - add r4, r2, #0 - cmp r1, #0xc - bhi _021D8902 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D8874: ; jump table - .short _021D8902 - _021D8874 - 2 ; case 0 - .short _021D888E - _021D8874 - 2 ; case 1 - .short _021D88F4 - _021D8874 - 2 ; case 2 - .short _021D88FC - _021D8874 - 2 ; case 3 - .short _021D88CE - _021D8874 - 2 ; case 4 - .short _021D8902 - _021D8874 - 2 ; case 5 - .short _021D8902 - _021D8874 - 2 ; case 6 - .short _021D88DE - _021D8874 - 2 ; case 7 - .short _021D88AE - _021D8874 - 2 ; case 8 - .short _021D88C2 - _021D8874 - 2 ; case 9 - .short _021D8902 - _021D8874 - 2 ; case 10 - .short _021D88FC - _021D8874 - 2 ; case 11 - .short _021D88FC - _021D8874 - 2 ; case 12 -_021D888E: - ldr r0, _021D8904 ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D8908 ; =0x00003560 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D88AA - add r0, r4, #0 - mov r1, #3 - bl FUN_020ACAB0 - add r0, r4, #0 - bl FUN_020ACC84 - pop {r4, pc} -_021D88AA: - str r4, [r2, r0] - pop {r4, pc} -_021D88AE: - add r0, r4, #0 - mov r1, #0 - bl FUN_020ACAB0 - add r0, r4, #0 - bl MOD04_021D8910 - bl MOD04_021D8C6C - pop {r4, pc} -_021D88C2: - add r0, r4, #0 - bl MOD04_021D8910 - bl MOD04_021D8C6C - pop {r4, pc} -_021D88CE: - add r0, r4, #0 - mov r1, #4 - bl FUN_020ACAB0 - add r0, r4, #0 - bl MOD04_021D8910 - pop {r4, pc} -_021D88DE: - add r0, r4, #0 - bl FUN_020AADCC - cmp r0, #0 - beq _021D8902 - ldr r0, _021D8904 ; =UNK04_0220FBC8 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D890C ; =0x000034F8 - str r2, [r1, r0] - pop {r4, pc} -_021D88F4: - add r0, r4, #0 - bl MOD04_021D8910 - pop {r4, pc} -_021D88FC: - add r0, r4, #0 - bl MOD04_021D8910 -_021D8902: - pop {r4, pc} - .align 2, 0 -_021D8904: .word UNK04_0220FBC8 -_021D8908: .word 0x00003560 -_021D890C: .word 0x000034F8 - - thumb_func_start MOD04_021D8910 -MOD04_021D8910: ; 0x021D8910 - push {r4, lr} - ldr r1, _021D893C ; =UNK04_0220FBC8 - add r4, r0, #0 - ldr r2, [r1, #4] - ldr r1, _021D8940 ; =0x00003560 - ldr r1, [r2, r1] - cmp r4, r1 - bne _021D8936 - bl FUN_020AACFC - add r0, r4, #0 - bl FUN_020ACC84 - ldr r0, _021D893C ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D8940 ; =0x00003560 - str r2, [r1, r0] - pop {r4, pc} -_021D8936: - bl FUN_020ACC84 - pop {r4, pc} - .align 2, 0 -_021D893C: .word UNK04_0220FBC8 -_021D8940: .word 0x00003560 - - thumb_func_start MOD04_021D8944 -MOD04_021D8944: ; 0x021D8944 - push {r4, r5, r6, lr} - bl OS_GetTick - add r4, r0, #0 - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - add r5, r1, #0 - ldr r0, [r0, #0xc] - sub r1, r4, r0 - mov r0, #0xfa - lsl r0, r0, #8 - mul r0, r1 - ldr r1, _021D8A40 ; =0x000082EA - bl _u32_div_f - ldr r1, _021D8A3C ; =UNK04_0220FBC8 - ldr r3, _021D8A44 ; =0x0000411A - ldr r2, [r1, #8] - sub r0, r0, r3 - add r2, r2, r0 - ldr r0, _021D8A48 ; =0xFFFFD8F0 - str r2, [r1, #8] - cmp r2, r0 - bge _021D8976 - mov r0, #0 - str r0, [r1, #8] -_021D8976: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - str r4, [r0, #0xc] - str r5, [r0, #0x10] - bl VCT_Main - ldr r4, _021D8A3C ; =UNK04_0220FBC8 - ldr r0, _021D8A44 ; =0x0000411A - ldr r1, [r4, #8] - cmp r1, r0 - blt _021D899C - add r6, r0, #0 - add r5, r0, #0 -_021D898E: - bl VCT_Main - ldr r0, [r4, #8] - sub r0, r0, r6 - str r0, [r4, #8] - cmp r0, r5 - bge _021D898E -_021D899C: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - ldr r2, [r0, #4] - ldr r0, _021D8A4C ; =0x0000358C - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D89EC - sub r0, r0, #4 - ldr r0, [r2, r0] - cmp r0, #3 - bhi _021D89E2 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D89BC: ; jump table - .short _021D89C4 - _021D89BC - 2 ; case 0 - .short _021D89CC - _021D89BC - 2 ; case 1 - .short _021D89D4 - _021D89BC - 2 ; case 2 - .short _021D89DC - _021D89BC - 2 ; case 3 -_021D89C4: - mov r0, #3 - bl PM_SetAmpGain - b _021D89E2 -_021D89CC: - mov r0, #2 - bl PM_SetAmpGain - b _021D89E2 -_021D89D4: - mov r0, #1 - bl PM_SetAmpGain - b _021D89E2 -_021D89DC: - mov r0, #0 - bl PM_SetAmpGain -_021D89E2: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D8A4C ; =0x0000358C - str r2, [r1, r0] -_021D89EC: - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8A50 ; =0x000034F8 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D8A00 - cmp r0, #1 - beq _021D8A3A - cmp r0, #2 - pop {r4, r5, r6, pc} -_021D8A00: - bl MOD04_021D8018 - cmp r0, #0 - bne _021D8A1E - mov r0, #1 - bl MOD04_021D87D0 - cmp r0, #0 - beq _021D8A3A - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - mov r2, #1 - ldr r1, [r0, #4] - ldr r0, _021D8A50 ; =0x000034F8 - str r2, [r1, r0] - pop {r4, r5, r6, pc} -_021D8A1E: - bl MOD04_021D8018 - cmp r0, #1 - bne _021D8A3A - mov r0, #0 - bl MOD04_021D8818 - cmp r0, #0 - beq _021D8A3A - ldr r0, _021D8A3C ; =UNK04_0220FBC8 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D8A50 ; =0x000034F8 - str r2, [r1, r0] -_021D8A3A: - pop {r4, r5, r6, pc} - .align 2, 0 -_021D8A3C: .word UNK04_0220FBC8 -_021D8A40: .word 0x000082EA -_021D8A44: .word 0x0000411A -_021D8A48: .word 0xFFFFD8F0 -_021D8A4C: .word 0x0000358C -_021D8A50: .word 0x000034F8 - - thumb_func_start MOD04_021D8A54 -MOD04_021D8A54: ; 0x021D8A54 - push {r3, lr} - ldr r3, _021D8A78 ; =UNK04_0220FBC8 - ldr r3, [r3, #4] - cmp r3, #0 - bne _021D8A62 - mov r0, #0 - pop {r3, pc} -_021D8A62: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl VCT_HandleData - cmp r0, #0 - beq _021D8A72 - mov r0, #1 - pop {r3, pc} -_021D8A72: - mov r0, #0 - pop {r3, pc} - nop -_021D8A78: .word UNK04_0220FBC8 - - thumb_func_start MOD04_021D8A7C -MOD04_021D8A7C: ; 0x021D8A7C - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - ldr r2, _021D8BC8 ; =UNK04_0220BAC0 - add r4, r1, #0 - ldrb r3, [r2] - add r1, sp, #0x10 - add r5, r0, #0 - strb r3, [r1] - ldrb r3, [r2, #1] - ldrb r2, [r2, #2] - strb r3, [r1, #1] - strb r2, [r1, #2] - ldr r1, _021D8BCC ; =UNK04_0220FBC8 - ldr r1, [r1, #4] - cmp r1, #0 - bne _021D8ACA - ldr r1, _021D8BD0 ; =0x000035DC - bl AllocFromHeap - ldr r2, _021D8BCC ; =UNK04_0220FBC8 - mov r1, #0x35 - str r0, [r2] - add r0, #0x1f - lsr r0, r0, #5 - lsl r0, r0, #5 - str r0, [r2, #4] - lsl r1, r1, #8 - str r5, [r0, r1] - add r0, r1, #0 - ldr r5, _021D8BD4 ; =UNK04_0220FBE0 - ldr r3, [r2, #4] - sub r0, #0x40 - str r5, [r3, r0] - ldr r0, [r2, #4] - mov r3, #0 - sub r1, #0x3c - str r3, [r0, r1] - bl MOD04_021D868C -_021D8ACA: - ldr r5, _021D8BCC ; =UNK04_0220FBC8 - mov r7, #0x11 - ldr r0, [r5, #4] - ldr r3, _021D8BD8 ; =0x00003568 - mov r1, #3 - str r1, [r0, r3] - add r1, r3, #0 - ldr r0, [r5, #4] - sub r1, #0xa8 - ldr r2, [r0, r1] - add r1, r3, #4 - str r2, [r0, r1] - lsl r7, r7, #6 - add r0, r3, #0 - ldr r1, [r5, #4] - lsl r2, r7, #1 - add r0, #8 - str r2, [r1, r0] - mov r2, #0x41 - add r0, r3, #0 - ldr r1, [r5, #4] - lsl r2, r2, #6 - add r0, #0xc - str r2, [r1, r0] - add r0, r3, #0 - ldr r2, [r5, #4] - mov r1, #1 - add r0, #0x10 - str r1, [r2, r0] - add r2, r3, #0 - ldr r6, [r5, #4] - mov r0, #0 - add r2, #0x14 - str r0, [r6, r2] - add r2, r3, #0 - ldr r6, [r5, #4] - add r2, #0x18 - str r0, [r6, r2] - sub r0, r3, #3 - ldr r2, [r5, #4] - sub r3, #0x64 - strb r1, [r2, r0] - ldr r0, [r5, #4] - add r2, sp, #0x10 - add r0, r0, r3 - bl NNS_SndStrmAllocChannel - add r0, r5, #0 - ldr r1, [r0, #4] - ldr r0, _021D8BDC ; =0x00003504 - add r0, r1, r0 - mov r1, #0 - bl NNS_SndStrmSetVolume - mov r0, #0x41 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r0, _021D8BE0 ; =MOD04_021D8730 - add r1, r5, #0 - str r0, [sp, #8] - mov r0, #0xd3 - ldr r2, [r1, #4] - lsl r0, r0, #6 - ldr r2, [r2, r0] - add r0, #0x44 - str r2, [sp, #0xc] - ldr r3, [r1, #4] - mov r2, #0x8f - lsl r2, r2, #6 - add r0, r3, r0 - add r2, r3, r2 - mov r1, #1 - lsl r3, r7, #1 - bl NNS_SndStrmSetup - ldr r2, _021D8BCC ; =UNK04_0220FBC8 - ldr r1, _021D8BE4 ; =0x000034F8 - ldr r0, [r2, #4] - mov r5, #0 - str r5, [r0, r1] - add r0, r1, #0 - ldr r3, [r2, #4] - add r0, #0x68 - str r5, [r3, r0] - mov r0, #1 - str r0, [sp, #0x1c] - ldr r0, [r2, #4] - sub r1, #0x30 - add r0, r0, r1 - str r0, [sp, #0x14] - mov r0, #2 - str r0, [sp, #0x18] - bl MOD04_021D8018 - add r1, sp, #0x10 - strb r0, [r1, #0x10] - ldr r0, _021D8BE8 ; =MOD04_021D8860 - str r0, [sp, #0x2c] - add r0, r5, #0 - str r0, [sp, #0x30] - ldr r0, _021D8BCC ; =UNK04_0220FBC8 - ldr r0, [r0, #4] - str r0, [sp, #0x24] - mov r0, #0x8f - lsl r0, r0, #6 - str r0, [sp, #0x28] - add r0, sp, #0x14 - bl VCT_Init - cmp r0, #0 - ldr r0, _021D8BCC ; =UNK04_0220FBC8 - add r2, r5, #0 - ldr r1, [r0, #4] - ldr r0, _021D8BEC ; =0x000034FC - str r2, [r1, r0] - add r0, r4, #0 - bl FUN_020AA7A0 - bl MOD04_021D8BF0 - mov r0, #1 - bl FUN_020AA760 - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - nop -_021D8BC8: .word UNK04_0220BAC0 -_021D8BCC: .word UNK04_0220FBC8 -_021D8BD0: .word 0x000035DC -_021D8BD4: .word UNK04_0220FBE0 -_021D8BD8: .word 0x00003568 -_021D8BDC: .word 0x00003504 -_021D8BE0: .word MOD04_021D8730 -_021D8BE4: .word 0x000034F8 -_021D8BE8: .word MOD04_021D8860 -_021D8BEC: .word 0x000034FC - - thumb_func_start MOD04_021D8BF0 -MOD04_021D8BF0: ; 0x021D8BF0 - ldr r0, _021D8BFC ; =UNK04_0220FBC8 - ldr r3, _021D8C00 ; =NNS_SndStrmStart - ldr r1, [r0, #4] - ldr r0, _021D8C04 ; =0x00003504 - add r0, r1, r0 - bx r3 - .align 2, 0 -_021D8BFC: .word UNK04_0220FBC8 -_021D8C00: .word NNS_SndStrmStart -_021D8C04: .word 0x00003504 - - thumb_func_start MOD04_021D8C08 -MOD04_021D8C08: ; 0x021D8C08 - push {r3, lr} - ldr r0, _021D8C50 ; =UNK04_0220FBC8 - ldr r1, _021D8C54 ; =0x00003560 - ldr r2, [r0, #4] - ldr r0, [r2, r1] - cmp r0, #0 - beq _021D8C1E - sub r1, #0x68 - ldr r1, [r2, r1] - cmp r1, #0 - bne _021D8C24 -_021D8C1E: - bl MOD04_021D8C6C - pop {r3, pc} -_021D8C24: - cmp r1, #1 - bne _021D8C38 - mov r1, #2 - bl FUN_020ACBA0 - cmp r0, #0 - beq _021D8C38 - bl MOD04_021D8C6C - pop {r3, pc} -_021D8C38: - ldr r0, _021D8C50 ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8C54 ; =0x00003560 - ldr r0, [r1, r0] - mov r1, #1 - bl FUN_020ACBA0 - cmp r0, #0 - beq _021D8C4E - bl MOD04_021D8C6C -_021D8C4E: - pop {r3, pc} - .align 2, 0 -_021D8C50: .word UNK04_0220FBC8 -_021D8C54: .word 0x00003560 - - thumb_func_start MOD04_021D8C58 -MOD04_021D8C58: ; 0x021D8C58 - ldr r1, _021D8C64 ; =UNK04_0220FBC8 - ldr r2, [r1, #4] - ldr r1, _021D8C68 ; =0x000034C4 - str r0, [r2, r1] - bx lr - nop -_021D8C64: .word UNK04_0220FBC8 -_021D8C68: .word 0x000034C4 - - thumb_func_start MOD04_021D8C6C -MOD04_021D8C6C: ; 0x021D8C6C - push {r4, lr} - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - ldr r1, [r0] - cmp r1, #0 - beq _021D8CBA - ldr r1, [r0, #4] - ldr r0, _021D8CC0 ; =0x000034C4 - ldr r4, [r1, r0] - bl MIC_StopAutoSampling - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8CC4 ; =0x00003504 - add r0, r1, r0 - bl NNS_SndStrmStop - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - ldr r1, [r0, #4] - ldr r0, _021D8CC4 ; =0x00003504 - add r0, r1, r0 - bl NNS_SndStrmFreeChannel - bl VCT_Cleanup - ldr r1, _021D8CBC ; =UNK04_0220FBC8 - mov r0, #0x35 - ldr r2, [r1, #4] - lsl r0, r0, #8 - ldr r0, [r2, r0] - ldr r1, [r1] - bl FreeToHeapExplicit - mov r1, #0 - ldr r0, _021D8CBC ; =UNK04_0220FBC8 - cmp r4, #0 - str r1, [r0] - str r1, [r0, #4] - beq _021D8CBA - blx r4 -_021D8CBA: - pop {r4, pc} - .align 2, 0 -_021D8CBC: .word UNK04_0220FBC8 -_021D8CC0: .word 0x000034C4 -_021D8CC4: .word 0x00003504 - - thumb_func_start MOD04_021D8CC8 -MOD04_021D8CC8: ; 0x021D8CC8 - push {r3, lr} - sub sp, #0x10 - ldr r0, _021D8CEC ; =UNK04_0220FBC8 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D8CE6 - add r0, sp, #0 - bl FUN_020AD144 - ldr r0, [sp, #4] - cmp r0, #2 - ble _021D8CE6 - ldr r0, [sp] - add sp, #0x10 - pop {r3, pc} -_021D8CE6: - mov r0, #0 - add sp, #0x10 - pop {r3, pc} - .align 2, 0 -_021D8CEC: .word UNK04_0220FBC8 - - thumb_func_start MOD04_021D8CF0 -MOD04_021D8CF0: ; 0x021D8CF0 - ldr r0, _021D8CFC ; =UNK04_0220FBC8 - mov r2, #1 - ldr r1, [r0, #4] - ldr r0, _021D8D00 ; =0x000034FC - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D8CFC: .word UNK04_0220FBC8 -_021D8D00: .word 0x000034FC - - thumb_func_start MOD04_021D8D04 -MOD04_021D8D04: ; 0x021D8D04 - ldr r0, _021D8D10 ; =UNK04_0220FBC8 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D8D14 ; =0x000034FC - str r2, [r1, r0] - bx lr - .align 2, 0 -_021D8D10: .word UNK04_0220FBC8 -_021D8D14: .word 0x000034FC - - .section .rodata - - .global UNK04_0220BAC0 -UNK04_0220BAC0: ; 0x0220BAC0 - .byte 0x0D, 0x0D, 0x0D - - .section .data - .balign 4 - .global UNK04_0220BEA0 -UNK04_0220BEA0: ; 0x0220BEA0 - .asciz "pokemondpds" - .balign 4 - .global UNK04_0220BEAC -UNK04_0220BEAC: ; 0x0220BEAC - .asciz "1vTlwb" - - .section .bss - .global UNK04_0220FBC0 -UNK04_0220FBC0: ; 0x0220FBC0 - .space 0x8 - - .global UNK04_0220FBC8 -UNK04_0220FBC8: ; 0x0220FBC8 - .space 0x18 - - .global UNK04_0220FBE0 -UNK04_0220FBE0: ; 0x0220FBE0 - .space 0x880 -- cgit v1.2.3 From 2d33b678c305e8daaf3ebac503ea1a50eaf0ae8a Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 8 Aug 2021 11:58:03 +0100 Subject: split out another file --- arm9/arm9.lsf | 1 + arm9/global.inc | 14 + arm9/modules/04/asm/arm_04.s | 1684 +-------------------------------- arm9/modules/04/asm/mod04_021D9C2C.s | 2 +- arm9/modules/04/asm/mod04_021DA260.s | 1689 ++++++++++++++++++++++++++++++++++ 5 files changed, 1716 insertions(+), 1674 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DA260.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 08253453..b0cf06f4 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -660,6 +660,7 @@ Overlay MODULE_04 Object mod04_021D868C.o Object mod04_021D8D18.o Object mod04_021D9C2C.o + Object mod04_021DA260.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 09d6fe08..81856abb 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6123,6 +6123,7 @@ .extern MOD04_021DA334 .extern MOD04_021DA388 .extern MOD04_021DA3DC +.extern MOD04_021DAACC .extern MOD04_021DAB68 .extern MOD04_021DAC98 .extern MOD04_021DAE4C @@ -6131,6 +6132,8 @@ .extern MOD04_021DB570 .extern MOD04_021DB608 .extern MOD04_021DCA84 +.extern MOD04_021DD36C +.extern MOD04_021DD4FC .extern MOD04_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 @@ -8268,6 +8271,17 @@ .extern TP_WaitBusy .extern TP_WaitRawResult .extern UNK04_0220BEB4 +.extern UNK04_0220C684 +.extern UNK04_0220C7D0 +.extern UNK04_0220C920 +.extern UNK04_0220CA08 +.extern UNK04_0220CACC +.extern UNK04_0220CBB4 +.extern UNK04_0220CCD4 +.extern UNK04_0220CDEC +.extern UNK04_0220CF18 +.extern UNK04_0220D0CC +.extern UNK04_0220D1A8 .extern UNK04_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index bbdafb6a..7d791941 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,1499 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DA260 -MOD04_021DA260: ; 0x021DA260 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #4 - add r0, r0, #0x1000 - mov sb, r2 - cmp sb, #0 - ldr r8, [r0, #0x14] - mov sl, r1 - mov r7, #0 - addle sp, sp, #4 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r6, r7 - mov r5, r7 - mov fp, r7 - mov r4, r7 -_021DA298: - ldr r1, [sl, r7, lsl #3] - cmp r1, #0 - beq _021DA2B4 - ldr r0, _021DA2EC ; =UNK04_0220C110 - mov r2, r6 - blx r8 - str r5, [sl, r7, lsl #3] -_021DA2B4: - add r0, sl, r7, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021DA2D8 - ldr r0, _021DA2F0 ; =UNK04_0220C12C - mov r2, fp - blx r8 - add r0, sl, r7, lsl #3 - str r4, [r0, #4] -_021DA2D8: - add r7, r7, #1 - cmp r7, sb - blt _021DA298 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DA2EC: .word UNK04_0220C110 -_021DA2F0: .word UNK04_0220C12C - arm_func_end MOD04_021DA260 - - arm_func_start MOD04_021DA2F4 -MOD04_021DA2F4: ; 0x021DA2F4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl MOD04_021DA388 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - cmp r0, r5 - movge r0, #0 - ldmgeia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - bl strcpy - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DA2F4 - - arm_func_start MOD04_021DA334 -MOD04_021DA334: ; 0x021DA334 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl MOD04_021DA388 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - mov r1, r0 - mov r0, r4 - mov r2, r6 - mov r3, r5 - bl MOD04_021DD36C - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, r5 - ldmhsia sp!, {r4, r5, r6, pc} - mov r1, #0 - strb r1, [r6, r0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DA334 - - arm_func_start MOD04_021DA388 -MOD04_021DA388: ; 0x021DA388 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 -_021DA398: - add r0, r6, r4, lsl #3 - add r0, r0, #0x1000 - ldr r1, [r0, #0xa34] - cmp r1, #0 - beq _021DA3D4 - mov r0, r5 - bl strcmp - cmp r0, #0 - addeq r0, r6, r4, lsl #3 - addeq r0, r0, #0x1000 - ldreq r0, [r0, #0xa38] - ldmeqia sp!, {r4, r5, r6, pc} - add r4, r4, #1 - cmp r4, #0x20 - blt _021DA398 -_021DA3D4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DA388 - - arm_func_start MOD04_021DA3DC -MOD04_021DA3DC: ; 0x021DA3DC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r2, _021DA668 ; =0x00001A34 - mov fp, r0 - add r0, fp, r2 - mov r6, r1 - mov r3, #0x20 - mov r1, #0 - mov r2, #0x100 - str r0, [sp, #8] - str r3, [sp, #0xc] - str r1, [sp, #0x10] - bl MI_CpuFill8 - add r0, fp, #0x1000 - ldr r5, [r0, #0xa04] - ldr r1, _021DA66C ; =UNK04_0220C148 - mov r0, r5 - bl strstr - str r0, [sp] - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r0, #4 - bl strlen - ldr r1, [sp] - add r1, r1, #4 - add r0, r1, r0 - str r0, [sp, #4] - ldr r1, _021DA670 ; =UNK04_0220C150 - mov r0, r5 - bl strstr - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r8, r0, #1 - ldrsb r7, [r8, #3] - ldr r2, _021DA674 ; =UNK04_0220C154 - mov r5, #0 - add r1, sp, #8 - mov r0, fp - mov r3, r8 - strb r5, [r8, #3] - bl MOD04_021DA68C - cmp r0, #1 - addne sp, sp, #0x14 - strneb r7, [r8, #3] - movne r0, r5 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - strb r7, [r8, #3] - cmp r6, #1 - beq _021DA4C8 - ldr r1, _021DA678 ; =UNK04_0220C160 - mov r0, r8 - mov r2, #3 - bl strncmp - cmp r0, #0 - beq _021DA4D4 -_021DA4C8: - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DA4D4: - ldr r1, _021DA67C ; =UNK04_0220C164 - add r0, r8, #4 - bl strstr - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add sb, r0, #2 - mov r6, r5 - b _021DA580 -_021DA4FC: - ldr r1, _021DA680 ; =UNK04_0220C168 - mov r0, sb - bl strstr - movs r7, r0 - beq _021DA598 - ldrsb sl, [r7] - add r8, r7, #2 - ldr r1, _021DA67C ; =UNK04_0220C164 - mov r0, r8 - strb r6, [r7] - bl strstr - movs r5, r0 - streqb sl, [r7] - beq _021DA598 - ldrsb r4, [r5] - mov r0, fp - mov r2, sb - strb r6, [r5] - add r1, sp, #8 - mov r3, r8 - bl MOD04_021DA68C - cmp r0, #1 - strneb sl, [r7] - addne sp, sp, #0x14 - strneb r4, [r5] - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r8 - bl strlen - strb sl, [r7] - add r0, r8, r0 - strb r4, [r5] - add sb, r0, #2 -_021DA580: - ldrsb r0, [sb] - cmp r0, #0xd - beq _021DA598 - ldrsb r0, [sb, #1] - cmp r0, #0xa - bne _021DA4FC -_021DA598: - ldr r0, [sp] - add r8, r0, #4 - ldr r0, [sp, #4] - cmp r8, r0 - bhs _021DA65C - mov r5, #0 -_021DA5B0: - ldr r1, _021DA684 ; =UNK04_0220C16C - mov r0, r8 - bl strstr - movs sl, r0 - beq _021DA65C - ldrsb r7, [sl] - add sb, sl, #1 - ldr r1, _021DA688 ; =UNK04_0220C170 - mov r0, sb - strb r5, [sl] - bl strstr - movs r6, r0 - bne _021DA5F4 - ldr r1, _021DA67C ; =UNK04_0220C164 - mov r0, sb - bl strstr - mov r6, r0 -_021DA5F4: - cmp r6, #0 - ldrnesb r4, [r6] - mov r0, fp - mov r2, r8 - add r1, sp, #8 - mov r3, sb - strneb r5, [r6] - bl MOD04_021DA68C - cmp r0, #1 - beq _021DA634 - strb r7, [sl] - cmp r6, #0 - add sp, sp, #0x14 - strneb r4, [r6] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DA634: - mov r0, sb - bl strlen - add r0, sb, r0 - add r8, r0, #1 - ldr r0, [sp, #4] - strb r7, [sl] - cmp r6, #0 - strneb r4, [r6] - cmp r8, r0 - blo _021DA5B0 -_021DA65C: - mov r0, #1 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DA668: .word 0x00001A34 -_021DA66C: .word UNK04_0220C148 -_021DA670: .word UNK04_0220C150 -_021DA674: .word UNK04_0220C154 -_021DA678: .word UNK04_0220C160 -_021DA67C: .word UNK04_0220C164 -_021DA680: .word UNK04_0220C168 -_021DA684: .word UNK04_0220C16C -_021DA688: .word UNK04_0220C170 - arm_func_end MOD04_021DA3DC - - arm_func_start MOD04_021DA68C -MOD04_021DA68C: ; 0x021DA68C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - ldr r4, [r8, #8] - ldr r1, [r8, #4] - add r0, r0, #0x1000 - cmp r4, r1 - ldr r5, [r0, #0x10] - ldr r4, [r0, #0x14] - mov r7, r2 - mov r6, r3 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl strlen - mov r1, r0 - ldr r0, _021DA7D8 ; =UNK04_0220C174 - add r1, r1, #1 - blx r5 - ldr r2, [r8] - ldr r1, [r8, #8] - str r0, [r2, r1, lsl #3] - ldr r3, [r8, #8] - ldr r2, [r8] - ldr r0, [r2, r3, lsl #3] - cmp r0, #0 - beq _021DA770 - mov r0, r6 - bl strlen - mov r1, r0 - ldr r0, _021DA7DC ; =UNK04_0220C194 - add r1, r1, #1 - blx r5 - ldr r2, [r8] - ldr r1, [r8, #8] - add r1, r2, r1, lsl #3 - str r0, [r1, #4] - ldr r3, [r8, #8] - ldr r2, [r8] - mov r1, r3, lsl #3 - add r0, r2, r3, lsl #3 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021DA770 - ldr r0, [r2, r1] - mov r1, r7 - bl strcpy - ldr r2, [r8] - ldr r0, [r8, #8] - mov r1, r6 - add r0, r2, r0, lsl #3 - ldr r0, [r0, #4] - bl strcpy - ldr r1, [r8, #8] - mov r0, #1 - add r1, r1, #1 - str r1, [r8, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021DA770: - ldr r1, [r2, r3, lsl #3] - cmp r1, #0 - beq _021DA798 - ldr r0, _021DA7E0 ; =UNK04_0220C1B4 - mov r2, #0 - blx r4 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - str r2, [r1, r0, lsl #3] -_021DA798: - ldr r1, [r8] - ldr r0, [r8, #8] - add r0, r1, r0, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021DA7D0 - ldr r0, _021DA7E4 ; =UNK04_0220C1D0 - mov r2, #0 - blx r4 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - add r0, r1, r0, lsl #3 - str r2, [r0, #4] -_021DA7D0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DA7D8: .word UNK04_0220C174 -_021DA7DC: .word UNK04_0220C194 -_021DA7E0: .word UNK04_0220C1B4 -_021DA7E4: .word UNK04_0220C1D0 - arm_func_end MOD04_021DA68C - - arm_func_start MOD04_021DA7E8 -MOD04_021DA7E8: ; 0x021DA7E8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r0 - mov r0, r6 - mov r4, #0 - bl strlen - cmp r0, #0x100 - movhs r0, r4 - ldmhsia sp!, {r4, r5, r6, pc} - ldr r0, _021DA934 ; =0x00001024 - mov r1, r6 - add r0, r5, r0 - mov r2, #0x100 - bl strncpy - mov r0, r6 - bl strlen - ldr r1, _021DA934 ; =0x00001024 - mov r6, r0 - add r0, r5, r1 - bl strlen - cmp r6, r0 - movne r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, _021DA934 ; =0x00001024 - ldr r1, _021DA938 ; =UNK04_0220C1EC - add r0, r5, r0 - bl strstr - cmp r0, #0 - beq _021DA884 - ldr r0, _021DA93C ; =0x0000102B - add r1, r5, #0x1000 - add r0, r5, r0 - str r0, [r1, #0x124] - mov r0, r4 - str r0, [r1, #0x12c] - add r0, r5, #0x1100 - mov r1, #0x50 - strh r1, [r0, #0x30] - b _021DA8C0 -_021DA884: - ldr r0, _021DA934 ; =0x00001024 - ldr r1, _021DA940 ; =UNK04_0220C1F4 - add r0, r5, r0 - bl strstr - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - add r1, r0, #8 - add r0, r5, #0x1000 - str r1, [r0, #0x124] - mov r2, #1 - ldr r1, _021DA944 ; =0x000001BB - str r2, [r0, #0x12c] - add r0, r5, #0x1100 - strh r1, [r0, #0x30] -_021DA8C0: - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _021DA948 ; =UNK04_0220C200 - bl strstr - cmp r0, #0 - movne r1, #0 - strneb r1, [r0] - addne r4, r0, #1 - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _021DA94C ; =UNK04_0220C204 - bl strstr - cmp r0, #0 - addeq r0, r5, #0x1000 - moveq r1, #0 - streq r1, [r0, #0x128] - movne r1, #0 - strneb r1, [r0] - addne r1, r0, #1 - addne r0, r5, #0x1000 - strne r1, [r0, #0x128] - cmp r4, #0 - beq _021DA92C - mov r0, r4 - bl atol - add r1, r5, #0x1100 - strh r0, [r1, #0x30] -_021DA92C: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DA934: .word 0x00001024 -_021DA938: .word UNK04_0220C1EC -_021DA93C: .word 0x0000102B -_021DA940: .word UNK04_0220C1F4 -_021DA944: .word 0x000001BB -_021DA948: .word UNK04_0220C200 -_021DA94C: .word UNK04_0220C204 - arm_func_end MOD04_021DA7E8 - - arm_func_start MOD04_021DA950 -MOD04_021DA950: ; 0x021DA950 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - add r0, r0, #0x1000 - mov r5, r2 - cmp r5, #0 - ldr r7, [r0, #0x14] - ldr r2, [r0, #0x10] - mov r6, r1 - addle sp, sp, #4 - movle r0, #0 - ldmleia sp!, {r4, r5, r6, r7, pc} - ldr r1, [r6, #0xc] - ldr r0, _021DAA08 ; =UNK04_0220C208 - add r1, r1, r5 - blx r2 - movs r4, r0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6] - ldr r2, [r6, #0xc] - mov r1, r4 - bl MI_CpuCopy8 - ldr r1, [r6] - ldr r0, _021DAA0C ; =UNK04_0220C218 - mov r2, #0 - blx r7 - cmp r4, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6] - ldr r1, [r6, #4] - sub r0, r4, r0 - add r0, r1, r0 - str r0, [r6, #4] - ldr r1, [r6, #0xc] - mov r0, #1 - add r1, r1, r5 - str r1, [r6, #0xc] - str r4, [r6] - ldr r1, [r6, #0xc] - add r1, r4, r1 - str r1, [r6, #8] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DAA08: .word UNK04_0220C208 -_021DAA0C: .word UNK04_0220C218 - arm_func_end MOD04_021DA950 - - arm_func_start MOD04_021DAA10 -MOD04_021DAA10: ; 0x021DAA10 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4] - add r0, r0, #0x1000 - cmp r1, #0 - ldr r3, [r0, #0x14] - beq _021DAA38 - ldr r0, _021DAA4C ; =UNK04_0220C218 - mov r2, #0 - blx r3 -_021DAA38: - mov r0, r4 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DAA4C: .word UNK04_0220C218 - arm_func_end MOD04_021DAA10 - - arm_func_start MOD04_021DAA50 -MOD04_021DAA50: ; 0x021DAA50 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - movs r5, r2 - add r0, r0, #0x1000 - ldr r2, [r0, #0x10] - mov r4, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - ldr r0, _021DAABC ; =UNK04_0220C22C - mov r1, r5 - blx r2 - str r0, [r4] - ldr r0, [r4] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - str r0, [r4, #4] - str r5, [r4, #0xc] - ldr r2, [r4] - ldr r1, [r4, #0xc] - mov r0, #1 - add r1, r2, r1 - str r1, [r4, #8] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DAABC: .word UNK04_0220C22C - arm_func_end MOD04_021DAA50 - - arm_func_start MOD04_021DAAC0 -MOD04_021DAAC0: ; 0x021DAAC0 - ands r1, r0, #0x8000 - bicne r0, r0, #0x8000 - bx lr - arm_func_end MOD04_021DAAC0 - - arm_func_start MOD04_021DAACC -MOD04_021DAACC: ; 0x021DAACC - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - ldr r2, _021DAB60 ; =0x000019F4 - mov r7, r0 - mov r6, r1 - mov r0, r6 - add r4, r7, r2 - bl strlen - mov r5, r0 - ldr r0, [r4, #4] - ldr r1, [r4, #8] - sub r1, r1, r0 - cmp r5, r1 - ble _021DAB34 - sub r2, r5, r1 - mov r0, r7 - mov r1, r4 - add r2, r2, #1 - bl MOD04_021DA950 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r4, #4] - ldr r1, [r4, #8] - sub r1, r1, r0 -_021DAB34: - ldr r2, _021DAB64 ; =UNK04_0220C240 - mov r3, r6 - bl OS_SNPrintf - cmp r0, r5 - ldreq r1, [r4, #4] - movne r0, #1 - addeq r0, r1, r0 - streq r0, [r4, #4] - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DAB60: .word 0x000019F4 -_021DAB64: .word UNK04_0220C240 - arm_func_end MOD04_021DAACC - - arm_func_start MOD04_021DAB68 -MOD04_021DAB68: ; 0x021DAB68 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #4 - mov sl, r0 - add r0, sl, #0x1000 - ldr r4, [r0, #0x9f0] - ldr r0, _021DAC8C ; =0x000019F4 - cmp r4, #0 - ldreq r6, _021DAC90 ; =UNK04_0220C244 - mov r8, r2 - add r5, sl, #0x1000 - add r4, sl, r0 - ldr r0, [r5, #0x9f0] - mov r7, r3 - add fp, r0, #1 - mov r2, #0 - mov sb, r1 - ldrne r6, _021DAC94 ; =UNK04_0220C248 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str fp, [r5, #0x9f0] - bl MOD04_021DD4FC - mov r5, r0 - mov r0, r6 - bl strlen - mov fp, r0 - mov r0, sb - bl strlen - sub r1, fp, #2 - add r2, r1, r0 - ldr r0, [r4, #4] - ldr r1, [r4, #8] - add r2, r5, r2 - sub r1, r1, r0 - cmp r2, r1 - ble _021DAC28 - sub r2, r2, r1 - mov r0, sl - mov r1, r4 - add r2, r2, #1 - bl MOD04_021DA950 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #4] - ldr r1, [r4, #8] - sub r1, r1, r0 -_021DAC28: - mov r2, r6 - mov r3, sb - bl OS_SNPrintf - ldr r2, [r4, #4] - mov r1, r7 - add r0, r2, r0 - str r0, [r4, #4] - ldr r2, [r4, #4] - ldr r3, [r4, #8] - mov r0, r8 - sub r3, r3, r2 - sub r3, r3, #1 - bl MOD04_021DD4FC - cmp r0, #0 - addlt sp, sp, #4 - movlt r0, #1 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #4] - mov r0, #0 - add r1, r1, r5 - str r1, [r4, #4] - ldr r1, [r4, #4] - strb r0, [r1] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DAC8C: .word 0x000019F4 -_021DAC90: .word UNK04_0220C244 -_021DAC94: .word UNK04_0220C248 - arm_func_end MOD04_021DAB68 - - arm_func_start MOD04_021DAC98 -MOD04_021DAC98: ; 0x021DAC98 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #4 - mov r6, r2 - mov r8, r0 - ldr r2, _021DAD7C ; =0x000019F4 - mov r0, r6 - mov r7, r1 - add r5, r8, r2 - bl strlen - mov r4, r0 - ldr r0, _021DAD80 ; =UNK04_0220C250 - bl strlen - mov sb, r0 - mov r0, r7 - bl strlen - sub r1, sb, #4 - add r0, r1, r0 - add r4, r4, r0 - ldr r2, [r5, #8] - ldr r1, [r5, #4] - add r0, r4, #1 - sub r1, r2, r1 - cmp r0, r1 - ble _021DAD1C - sub r2, r4, r1 - mov r0, r8 - mov r1, r5 - add r2, r2, #1 - bl MOD04_021DA950 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021DAD1C: - ldr r0, [r5] - ldr r1, _021DAD84 ; =UNK04_0220C148 - bl strstr - add r8, r0, #2 - ldrsb sb, [r0, #2] - mov r0, r8 - bl strlen - add r2, r0, #1 - add r0, r8, r4 - mov r1, r8 - bl memmove - ldr r2, _021DAD80 ; =UNK04_0220C250 - str r6, [sp] - mov r3, r7 - mov r0, r8 - add r1, r4, #1 - bl OS_SNPrintf - strb sb, [r8, r0] - ldr r1, [r5, #4] - mov r0, #0 - add r1, r1, r4 - str r1, [r5, #4] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_021DAD7C: .word 0x000019F4 -_021DAD80: .word UNK04_0220C250 -_021DAD84: .word UNK04_0220C148 - arm_func_end MOD04_021DAC98 - - arm_func_start MOD04_021DAD88 -MOD04_021DAD88: ; 0x021DAD88 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r0 - add r0, r7, #0x1000 - ldr r1, [r0, #8] - ldr r0, _021DAE40 ; =0x000019F4 - cmp r1, #0 - ldreq r6, _021DAE44 ; =UNK04_0220C25C - add r5, r7, r0 - add r0, r7, #0x1000 - ldrne r6, _021DAE48 ; =UNK04_0220C2B0 - ldr r0, [r0, #0x124] - bl strlen - mov r4, r0 - mov r0, r6 - bl strlen - add r1, r7, #0x1000 - mov r8, r0 - ldr r0, [r1, #0x128] - bl strlen - sub r1, r8, #4 - add r0, r1, r0 - add r1, r4, r0 - ldr r0, _021DAE40 ; =0x000019F4 - add r2, r1, #0x400 - add r1, r7, r0 - mov r0, r7 - bl MOD04_021DAA50 - cmp r0, #1 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r3, r7, #0x1000 - ldr r0, [r3, #0x124] - mov r2, r6 - str r0, [sp] - ldr r0, [r5, #4] - ldr r1, [r5, #0xc] - ldr r3, [r3, #0x128] - bl OS_SNPrintf - ldr r1, [r5, #4] - add r0, r1, r0 - str r0, [r5, #4] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DAE40: .word 0x000019F4 -_021DAE44: .word UNK04_0220C25C -_021DAE48: .word UNK04_0220C2B0 - arm_func_end MOD04_021DAD88 - - arm_func_start MOD04_021DAE4C -MOD04_021DAE4C: ; 0x021DAE4C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - movs r5, r0 - add r1, r5, #0x1000 - ldr r4, [r1, #0x14] - addeq sp, sp, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r1, _021DAF00 ; =0x00001A34 - mov r2, #0x20 - add r1, r5, r1 - bl MOD04_021DA260 - ldr r1, _021DAF04 ; =0x00001A04 - mov r0, r5 - add r1, r5, r1 - bl MOD04_021DAA10 - ldr r1, _021DAF08 ; =0x000019F4 - mov r0, r5 - add r1, r5, r1 - bl MOD04_021DAA10 - add r0, r5, #0x1000 - ldr r1, [r0, #0x9c8] - cmp r1, #0 - beq _021DAEC0 - ldr r0, _021DAF0C ; =UNK04_0220C2D0 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9c8] -_021DAEC0: - add r0, r5, #0x1000 - ldr r1, [r0, #0x9cc] - cmp r1, #0 - beq _021DAEE8 - ldr r0, _021DAF10 ; =UNK04_0220C2E8 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9cc] -_021DAEE8: - ldr r2, _021DAF14 ; =0x00001C10 - mov r0, r5 - mov r1, #0 - bl MI_CpuFill8 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DAF00: .word 0x00001A34 -_021DAF04: .word 0x00001A04 -_021DAF08: .word 0x000019F4 -_021DAF0C: .word UNK04_0220C2D0 -_021DAF10: .word UNK04_0220C2E8 -_021DAF14: .word 0x00001C10 - arm_func_end MOD04_021DAE4C - - arm_func_start MOD04_021DAF18 -MOD04_021DAF18: ; 0x021DAF18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - add r0, sl, #0x1000 - ldr fp, [r0, #0x1c] - ldr r0, _021DB224 ; =0x00001134 - ldr r1, _021DB228 ; =0x00001198 - ldr r2, _021DB22C ; =0x00001A04 - add r8, sl, r0 - cmp fp, #0 - mov r0, sl - add r6, sl, r1 - add r7, sl, r2 - mov r5, #0 - ldrle fp, _021DB230 ; =0x0000EA60 - bl MOD04_021DB35C - mov r0, sl - bl MOD04_021DB348 - movs r4, r0 - addeq r0, sl, #0x1000 - moveq r1, #2 - streq r1, [r0, #0x20] - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl CPS_SocUse - add r0, sl, #0x1000 - ldr r0, [r0, #0x12c] - cmp r0, #1 - bne _021DAFC8 - mov r0, r6 - mov r1, #0 - mov r2, #0x830 - bl MI_CpuFill8 - ldr r1, _021DB234 ; =MOD04_021DAAC0 - add r0, sl, #0x1000 - str r1, [r6, #0x810] - ldr r1, [r0, #0x124] - ldr r0, _021DB238 ; =UNK04_0220C0E4 - str r1, [r6, #0x800] - mov r1, #0xb - str r6, [r8, #0xc] - bl CPS_SetRootCa - mov r0, #1 - bl CPS_SetSsl -_021DAFC8: - add r0, sl, #0x1100 - ldrh r1, [r0, #0x30] - mov r2, r4 - mov r0, #0 - bl CPS_SocPingMode - bl CPS_TcpConnect - cmp r0, #0 - beq _021DB004 - add r0, sl, #0x1000 - mov r1, #3 - str r1, [r0, #0x20] - bl CPS_SocRelease - bl CPS_SocUnRegister - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DB004: - add r0, sl, #0x1000 - ldr r4, [r0, #0x9f4] - mov r0, r4 - bl strlen - mov r1, r0 - mov r0, r4 - bl CPS_SocWrite - cmp r0, #0 - str r0, [sp, #8] - addle r0, sl, #0x1000 - movle r1, #5 - strle r1, [r0, #0x20] - ble _021DB20C - bl CPS_SocGetChar - mov r0, sl - bl MOD04_021DB3B8 - cmp r0, #0 - addeq r0, sl, #0x1000 - moveq r1, #7 - streq r1, [r0, #0x20] - beq _021DB20C - ldr r0, [r7] - str r0, [r7, #4] - ldr r1, [r7] - ldr r0, [r7, #0xc] - add r0, r1, r0 - str r0, [r7, #8] - bl OS_GetTick - mov r6, r0 - mov r0, fp, asr #0x1f - mov r8, r1 - str r0, [sp, #4] - mov r4, #0 -_021DB088: - ldr r0, _021DB23C ; =CPSMyIp - ldr r0, [r0] - cmp r0, #0 - addeq r0, sl, #0x1000 - moveq r1, #5 - streq r1, [r0, #0x20] - beq _021DB20C - bl CPS_SocGetLength - str r0, [sp, #8] - cmp r0, #0 - blt _021DB1E8 - cmp r0, #0 - ble _021DB16C - bl OS_GetTick - mov r6, r0 - add r0, sp, #8 - mov r8, r1 - bl CPS_SocRead - cmp r0, #0 - beq _021DB1E8 - ldr r2, [r7, #8] - ldr r1, [r7, #4] - sub r2, r2, #1 - ldr sb, [sp, #8] - sub r2, r2, r1 - cmp sb, r2 - movge sb, r2 - mov r2, sb - bl MI_CpuCopy8 - ldr r0, [r7, #4] - cmp r5, #1 - add r0, r0, sb - str r0, [r7, #4] - ldr r0, [r7, #4] - strb r4, [r0] - bne _021DB144 - ldr r0, _021DB240 ; =0x00001A14 - add r0, sl, r0 - bl OS_LockMutex - add r1, sl, #0x1000 - ldr r2, [r1, #0xa30] - ldr r0, _021DB240 ; =0x00001A14 - add r2, r2, sb - add r0, sl, r0 - str r2, [r1, #0xa30] - bl OS_UnlockMutex - b _021DB150 -_021DB144: - mov r0, sl - bl MOD04_021DB248 - mov r5, r0 -_021DB150: - ldr r0, [sp, #8] - cmp r0, sb - bls _021DB164 - bl CPS_SocConsume - b _021DB1E8 -_021DB164: - mov r0, sb - bl CPS_SocConsume -_021DB16C: - add r0, sl, #0x1000 - ldr r1, [r0, #0xa2c] - cmp r1, #0 - blt _021DB188 - ldr r0, [r0, #0xa30] - cmp r0, r1 - bge _021DB1E8 -_021DB188: - bl OS_GetTick - subs r2, r0, r6 - sbc r0, r1, r8 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _021DB244 ; =0x000082EA - mov r3, r4 - bl _ll_udiv - ldr r2, [sp, #4] - cmp r1, r2 - cmpeq r0, fp - addhi r0, sl, #0x1000 - movhi r1, #6 - strhi r1, [r0, #0x20] - bhi _021DB20C - mov r0, sl - bl MOD04_021DB3B8 - cmp r0, #0 - bne _021DB088 - add r0, sl, #0x1000 - mov r1, #7 - str r1, [r0, #0x20] - b _021DB20C -_021DB1E8: - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease - bl CPS_SocUnRegister - add r0, sl, #0x1000 - mov r1, #8 - str r1, [r0, #0x20] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021DB20C: - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease - bl CPS_SocUnRegister - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DB224: .word 0x00001134 -_021DB228: .word 0x00001198 -_021DB22C: .word 0x00001A04 -_021DB230: .word 0x0000EA60 -_021DB234: .word MOD04_021DAAC0 -_021DB238: .word UNK04_0220C0E4 -_021DB23C: .word CPSMyIp -_021DB240: .word 0x00001A14 -_021DB244: .word 0x000082EA - arm_func_end MOD04_021DAF18 - - arm_func_start MOD04_021DB248 -MOD04_021DB248: ; 0x021DB248 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r5, r0 - add r0, r5, #0x1000 - ldr r6, [r0, #0xa04] - ldr r2, _021DB334 ; =0x00001A04 - ldr r1, _021DB338 ; =UNK04_0220C148 - mov r0, r6 - add r4, r5, r2 - bl strstr - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r1, _021DB338 ; =UNK04_0220C148 - mov r0, r6 - bl strstr - ldr r1, _021DB33C ; =0x00001A14 - add r6, r0, #4 - add r0, r5, r1 - bl OS_LockMutex - ldr r0, [r4, #4] - ldr r1, _021DB33C ; =0x00001A14 - sub r2, r0, r6 - add r0, r5, #0x1000 - str r2, [r0, #0xa30] - add r0, r5, r1 - bl OS_UnlockMutex - ldr r0, [r4] - ldr r1, _021DB340 ; =UNK04_0220C300 - bl strstr - movs r4, r0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021DB340 ; =UNK04_0220C300 - bl strlen - add r7, r4, r0 - ldr r1, _021DB344 ; =UNK04_0220C164 - mov r0, r7 - bl strstr - mov r4, r0 - ldr r0, _021DB33C ; =0x00001A14 - ldrsb r6, [r4] - mov r1, #0 - add r0, r5, r0 - strb r1, [r4] - bl OS_LockMutex - mov r0, r7 - bl atol - add r1, r5, #0x1000 - ldr r2, _021DB33C ; =0x00001A14 - str r0, [r1, #0xa2c] - add r0, r5, r2 - bl OS_UnlockMutex - strb r6, [r4] - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DB334: .word 0x00001A04 -_021DB338: .word UNK04_0220C148 -_021DB33C: .word 0x00001A14 -_021DB340: .word UNK04_0220C300 -_021DB344: .word UNK04_0220C164 - arm_func_end MOD04_021DB248 - - arm_func_start MOD04_021DB348 -MOD04_021DB348: ; 0x021DB348 - ldr ip, _021DB358 ; =CPS_Resolve - add r0, r0, #0x1000 - ldr r0, [r0, #0x124] - bx ip - .align 2, 0 -_021DB358: .word CPS_Resolve - arm_func_end MOD04_021DB348 - - arm_func_start MOD04_021DB35C -MOD04_021DB35C: ; 0x021DB35C - stmdb sp!, {r4, lr} - ldr r1, _021DB3AC ; =0x00001134 - mov r4, r0 - add r0, r4, r1 - mov r1, #0 - mov r2, #0x64 - bl MI_CpuFill8 - ldr r0, _021DB3B0 ; =0x00000B68 - add r1, r4, #0x1000 - str r0, [r1, #0x170] - ldr r3, [r1, #0x9c8] - ldr r0, _021DB3AC ; =0x00001134 - ldr r2, _021DB3B4 ; =0x000005EA - str r3, [r1, #0x174] - str r2, [r1, #0x17c] - ldr r2, [r1, #0x9cc] - add r0, r4, r0 - str r2, [r1, #0x180] - bl CPS_SocRegister - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB3AC: .word 0x00001134 -_021DB3B0: .word 0x00000B68 -_021DB3B4: .word 0x000005EA - arm_func_end MOD04_021DB35C - - arm_func_start MOD04_021DB3B8 -MOD04_021DB3B8: ; 0x021DB3B8 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldr r0, [r0, #0x12c] - cmp r0, #1 - bne _021DB3EC - ldr r0, _021DB438 ; =0x000019D0 - add r0, r4, r0 - bl OS_GetLowEntropyData - ldr r0, _021DB438 ; =0x000019D0 - mov r1, #0x20 - add r0, r4, r0 - bl CPS_SslAddRandomSeed -_021DB3EC: - ldr r0, _021DB43C ; =0x00001BF4 - add r0, r4, r0 - bl OS_LockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xc0c] - cmp r0, #1 - bne _021DB41C - ldr r0, _021DB43C ; =0x00001BF4 - add r0, r4, r0 - bl OS_UnlockMutex - mov r0, #0 - ldmia sp!, {r4, pc} -_021DB41C: - ldr r0, _021DB43C ; =0x00001BF4 - add r0, r4, r0 - bl OS_UnlockMutex - mov r0, #0xa - bl OS_Sleep - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB438: .word 0x000019D0 -_021DB43C: .word 0x00001BF4 - arm_func_end MOD04_021DB3B8 - - arm_func_start MOD04_021DB440 -MOD04_021DB440: ; 0x021DB440 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldrb r0, [r0] - cmp r0, #0xff - ldmneia sp!, {r4, pc} - ldr r0, _021DB49C ; =0x00001BF4 - add r0, r4, r0 - bl OS_LockMutex - ldr r0, _021DB49C ; =0x00001BF4 - add r1, r4, #0x1000 - mov r2, #1 - add r0, r4, r0 - str r2, [r1, #0xc0c] - bl OS_UnlockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _021DB4A0 ; =0x00001B34 - add r0, r4, r0 - bl OS_JoinThread - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB49C: .word 0x00001BF4 -_021DB4A0: .word 0x00001B34 - arm_func_end MOD04_021DB440 - - arm_func_start MOD04_021DB4A4 -MOD04_021DB4A4: ; 0x021DB4A4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r3, _021DB55C ; =0x00001BF4 - mov r5, r0 - add r2, r5, #0x1000 - mov ip, #0 - add r0, r5, r3 - mov r4, r1 - str ip, [r2, #0xc0c] - bl OS_InitMutex - ldr r0, _021DB560 ; =0x00001A14 - add r0, r5, r0 - bl OS_InitMutex - add r0, r5, #0x1000 - ldr r0, [r0, #0x18] - cmp r0, #1 - ldreq r0, _021DB564 ; =UNK04_02210480 - moveq r1, #1 - streq r1, [r0] - ldrne r0, _021DB564 ; =UNK04_02210480 - movne r1, #0 - strne r1, [r0] - add r0, r5, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DB524 - ldr r0, _021DB568 ; =0x00001B34 - add r0, r5, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, pc} -_021DB524: - ldr r0, _021DB568 ; =0x00001B34 - mov r1, #0x1000 - str r1, [sp] - ldr r1, _021DB56C ; =MOD04_021DAF18 - mov r2, r5 - add r0, r5, r0 - add r3, r5, #0x1000 - str r4, [sp, #4] - bl OS_CreateThread - ldr r0, _021DB568 ; =0x00001B34 - add r0, r5, r0 - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DB55C: .word 0x00001BF4 -_021DB560: .word 0x00001A14 -_021DB564: .word UNK04_02210480 -_021DB568: .word 0x00001B34 -_021DB56C: .word MOD04_021DAF18 - arm_func_end MOD04_021DB4A4 - - arm_func_start MOD04_021DB570 -MOD04_021DB570: ; 0x021DB570 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _021DB5F4 ; =UNK04_0220C314 - ldr r2, _021DB5F8 ; =UNK04_0220C320 - mov r4, r0 - bl MOD04_021DAC98 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} - add r0, r4, #0x1000 - ldr r0, [r0, #0x9f4] - ldr r1, _021DB5FC ; =UNK04_0220C148 - bl strstr - add r0, r0, #4 - bl strlen - movs r3, r0 - beq _021DB5E8 - ldr r2, _021DB600 ; =UNK04_0220C328 - add r0, sp, #0 - mov r1, #7 - bl OS_SNPrintf - ldr r1, _021DB604 ; =UNK04_0220C32C - add r2, sp, #0 - mov r0, r4 - bl MOD04_021DAC98 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} -_021DB5E8: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB5F4: .word UNK04_0220C314 -_021DB5F8: .word UNK04_0220C320 -_021DB5FC: .word UNK04_0220C148 -_021DB600: .word UNK04_0220C328 -_021DB604: .word UNK04_0220C32C - arm_func_end MOD04_021DB570 - - arm_func_start MOD04_021DB608 -MOD04_021DB608: ; 0x021DB608 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r2, _021DB714 ; =0x00001C10 - mov r6, r0 - ldr r4, [r5, #0xc] - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021DB718 ; =0x00001004 - add r0, r6, #0x1000 - mvn r2, #0 - str r2, [r0, #0xa2c] - mov lr, r5 - str r2, [r0, #0xa30] - add ip, r6, r1 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldr r0, _021DB71C ; =UNK04_0220C33C - ldr r1, _021DB720 ; =0x00000B68 - blx r4 - add r1, r6, #0x1000 - str r0, [r1, #0x9c8] - ldr r0, [r1, #0x9c8] - cmp r0, #0 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021DB724 ; =UNK04_0220C354 - ldr r1, _021DB728 ; =0x000005EA - blx r4 - add r2, r6, #0x1000 - str r0, [r2, #0x9cc] - ldr r0, [r2, #0x9cc] - cmp r0, #0 - moveq r0, #1 - streq r0, [r2, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _021DB72C ; =0x00001A04 - ldr r2, [r2, #0xc] - mov r0, r6 - add r1, r6, r1 - bl MOD04_021DAA50 - cmp r0, #0 - addeq r1, r6, #0x1000 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r5] - mov r0, r6 - bl MOD04_021DA7E8 - cmp r0, #0 - addeq r1, r6, #0x1000 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl MOD04_021DAD88 - add r1, r6, #0x1000 - str r0, [r1, #0x20] - ldr r0, [r1, #0x20] - cmp r0, #0 - moveq r0, #0xff - streqb r0, [r1] - add r0, r6, #0x1000 - ldr r0, [r0, #0x20] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DB714: .word 0x00001C10 -_021DB718: .word 0x00001004 -_021DB71C: .word UNK04_0220C33C -_021DB720: .word 0x00000B68 -_021DB724: .word UNK04_0220C354 -_021DB728: .word 0x000005EA -_021DB72C: .word 0x00001A04 - arm_func_end MOD04_021DB608 - arm_func_start MOD04_021DB730 MOD04_021DB730: ; 0x021DB730 stmdb sp!, {r4, lr} @@ -58665,175 +57172,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220C0E4 -UNK04_0220C0E4: ; 0x0220C0E4 - .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8 - .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0 - .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC - - .global UNK_0220C110 -UNK04_0220C110: ; 0x0220C110 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79 - .byte 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00 - - .global UNK_0220C12C -UNK04_0220C12C: ; 0x0220C12C - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79 - .byte 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220C148 -UNK04_0220C148: ; 0x0220C148 - .byte 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C150 -UNK04_0220C150: ; 0x0220C150 - .byte 0x20, 0x00, 0x00, 0x00 - - .global UNK_0220C154 -UNK04_0220C154: ; 0x0220C154 - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220C160 -UNK04_0220C160: ; 0x0220C160 - .byte 0x32, 0x30, 0x30, 0x00 - - .global UNK_0220C164 -UNK04_0220C164: ; 0x0220C164 - .byte 0x0D, 0x0A, 0x00, 0x00 - - .global UNK_0220C168 -UNK04_0220C168: ; 0x0220C168 - .byte 0x3A, 0x20, 0x00, 0x00 - - .global UNK_0220C16C -UNK04_0220C16C: ; 0x0220C16C - .byte 0x3D, 0x00, 0x00, 0x00 - - .global UNK_0220C170 -UNK04_0220C170: ; 0x0220C170 - .byte 0x26, 0x00, 0x00, 0x00 - - .global UNK_0220C174 -UNK04_0220C174: ; 0x0220C174 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E - .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C194 -UNK04_0220C194: ; 0x0220C194 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E - .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C1B4 -UNK04_0220C1B4: ; 0x0220C1B4 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74 - .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00 - - .global UNK_0220C1D0 -UNK04_0220C1D0: ; 0x0220C1D0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74 - .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00 - - .global UNK_0220C1EC -UNK04_0220C1EC: ; 0x0220C1EC - .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x00 - - .global UNK_0220C1F4 -UNK04_0220C1F4: ; 0x0220C1F4 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C200 -UNK04_0220C200: ; 0x0220C200 - .byte 0x3A, 0x00, 0x00, 0x00 - - .global UNK_0220C204 -UNK04_0220C204: ; 0x0220C204 - .byte 0x2F, 0x00, 0x00, 0x00 - - .global UNK_0220C208 -UNK04_0220C208: ; 0x0220C208 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x74, 0x72, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C218 -UNK04_0220C218: ; 0x0220C218 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C22C -UNK04_0220C22C: ; 0x0220C22C - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65 - .byte 0x72, 0x00, 0x00, 0x00 - - .global UNK_0220C240 -UNK04_0220C240: ; 0x0220C240 - .byte 0x25, 0x73, 0x00, 0x00 - - .global UNK_0220C244 -UNK04_0220C244: ; 0x0220C244 - .byte 0x25, 0x73, 0x3D, 0x00 - - .global UNK_0220C248 -UNK04_0220C248: ; 0x0220C248 - .byte 0x26, 0x25, 0x73, 0x3D, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C250 -UNK04_0220C250: ; 0x0220C250 - .byte 0x25, 0x73, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C25C -UNK04_0220C25C: ; 0x0220C25C - .byte 0x50, 0x4F, 0x53, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E - .byte 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x3A - .byte 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x78, 0x2D, 0x77 - .byte 0x77, 0x77, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x75, 0x72, 0x6C, 0x65, 0x6E, 0x63, 0x6F, 0x64 - .byte 0x65, 0x64, 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C2B0 -UNK04_0220C2B0: ; 0x0220C2B0 - .byte 0x47, 0x45, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30 - .byte 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00 - - .global UNK_0220C2D0 -UNK04_0220C2D0: ; 0x0220C2D0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72, 0x65 - .byte 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00 - - .global UNK_0220C2E8 -UNK04_0220C2E8: ; 0x0220C2E8 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73, 0x65 - .byte 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00 - - .global UNK_0220C300 -UNK04_0220C300: ; 0x0220C300 - .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C314 -UNK04_0220C314: ; 0x0220C314 - .byte 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220C320 -UNK04_0220C320: ; 0x0220C320 - .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220C328 -UNK04_0220C328: ; 0x0220C328 - .byte 0x25, 0x64, 0x00, 0x00 - - .global UNK_0220C32C -UNK04_0220C32C: ; 0x0220C32C - .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x00 - - .global UNK_0220C33C -UNK04_0220C33C: ; 0x0220C33C - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72 - .byte 0x65, 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00 - - .global UNK_0220C354 -UNK04_0220C354: ; 0x0220C354 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73 - .byte 0x65, 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00 - .global UNK_0220C36C UNK04_0220C36C: ; 0x0220C36C .word UNK04_0220C370 @@ -59075,7 +57413,7 @@ UNK04_0220C63C: ; 0x0220C63C UNK04_0220C680: ; 0x0220C680 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220C684 + .global UNK04_0220C684 UNK04_0220C684: ; 0x0220C684 .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003 .word UNK04_0220C680 @@ -59111,7 +57449,7 @@ UNK04_0220C6CC: ; 0x0220C6CC UNK04_0220C7CC: ; 0x0220C7CC .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220C7D0 + .global UNK04_0220C7D0 UNK04_0220C7D0: ; 0x0220C7D0 .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003 .word UNK04_0220C7CC @@ -59148,7 +57486,7 @@ UNK04_0220C81C: ; 0x0220C81C UNK04_0220C91C: ; 0x0220C91C .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220C920 + .global UNK04_0220C920 UNK04_0220C920: ; 0x0220C920 .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003 .word UNK04_0220C91C @@ -59178,7 +57516,7 @@ UNK04_0220C984: ; 0x0220C984 UNK04_0220CA04: ; 0x0220CA04 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CA08 + .global UNK04_0220CA08 UNK04_0220CA08: ; 0x0220CA08 .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003 .word UNK04_0220CA04 @@ -59204,7 +57542,7 @@ UNK04_0220CA48: ; 0x0220CA48 UNK04_0220CAC8: ; 0x0220CAC8 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CACC + .global UNK04_0220CACC UNK04_0220CACC: ; 0x0220CACC .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003 .word UNK04_0220CAC8 @@ -59234,7 +57572,7 @@ UNK04_0220CB30: ; 0x0220CB30 UNK04_0220CBB0: ; 0x0220CBB0 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CBB4 + .global UNK04_0220CBB4 UNK04_0220CBB4: ; 0x0220CBB4 .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003 .word UNK04_0220CBB0 @@ -59266,7 +57604,7 @@ UNK04_0220CC48: ; 0x0220CC48 UNK04_0220CCD0: ; 0x0220CCD0 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CCD4 + .global UNK04_0220CCD4 UNK04_0220CCD4: ; 0x0220CCD4 .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003 .word UNK04_0220CCD0 @@ -59297,7 +57635,7 @@ UNK04_0220CD68: ; 0x0220CD68 UNK04_0220CDE8: ; 0x0220CDE8 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CDEC + .global UNK04_0220CDEC UNK04_0220CDEC: ; 0x0220CDEC .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003 .word UNK04_0220CDE8 @@ -59331,7 +57669,7 @@ UNK04_0220CE80: ; 0x0220CE80 UNK04_0220CF14: ; 0x0220CF14 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220CF18 + .global UNK04_0220CF18 UNK04_0220CF18: ; 0x0220CF18 .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003 .word UNK04_0220CF14 @@ -59372,7 +57710,7 @@ UNK04_0220CFC8: ; 0x0220CFC8 UNK04_0220D0C8: ; 0x0220D0C8 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220D0CC + .global UNK04_0220D0CC UNK04_0220D0CC: ; 0x0220D0CC .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003 .word UNK04_0220D0C8 @@ -59401,7 +57739,7 @@ UNK04_0220D124: ; 0x0220D124 UNK04_0220D1A4: ; 0x0220D1A4 .byte 0x01, 0x00, 0x01, 0x00 - .global UNK_0220D1A8 + .global UNK04_0220D1A8 UNK04_0220D1A8: ; 0x0220D1A8 .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003 .word UNK04_0220D1A4 diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s index 206df265..fdff3193 100644 --- a/arm9/modules/04/asm/mod04_021D9C2C.s +++ b/arm9/modules/04/asm/mod04_021D9C2C.s @@ -542,7 +542,7 @@ UNK04_0220C0B8: ; 0x0220C0B8 .asciz "%02d%02d%02d%02d%02d%02d" .balign 4, 0 - .global UNK_0220C0D4 + .global UNK04_0220C0D4 UNK04_0220C0D4: ; 0x0220C0D4 .asciz "%02d:0000000-00" diff --git a/arm9/modules/04/asm/mod04_021DA260.s b/arm9/modules/04/asm/mod04_021DA260.s new file mode 100644 index 00000000..de6114d7 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DA260.s @@ -0,0 +1,1689 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DA260 +MOD04_021DA260: ; 0x021DA260 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + add r0, r0, #0x1000 + mov sb, r2 + cmp sb, #0 + ldr r8, [r0, #0x14] + mov sl, r1 + mov r7, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r6, r7 + mov r5, r7 + mov fp, r7 + mov r4, r7 +_021DA298: + ldr r1, [sl, r7, lsl #3] + cmp r1, #0 + beq _021DA2B4 + ldr r0, _021DA2EC ; =UNK04_0220C110 + mov r2, r6 + blx r8 + str r5, [sl, r7, lsl #3] +_021DA2B4: + add r0, sl, r7, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _021DA2D8 + ldr r0, _021DA2F0 ; =UNK04_0220C12C + mov r2, fp + blx r8 + add r0, sl, r7, lsl #3 + str r4, [r0, #4] +_021DA2D8: + add r7, r7, #1 + cmp r7, sb + blt _021DA298 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DA2EC: .word UNK04_0220C110 +_021DA2F0: .word UNK04_0220C12C + arm_func_end MOD04_021DA260 + + arm_func_start MOD04_021DA2F4 +MOD04_021DA2F4: ; 0x021DA2F4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl MOD04_021DA388 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + cmp r0, r5 + movge r0, #0 + ldmgeia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + bl strcpy + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DA2F4 + + arm_func_start MOD04_021DA334 +MOD04_021DA334: ; 0x021DA334 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl MOD04_021DA388 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + mov r1, r0 + mov r0, r4 + mov r2, r6 + mov r3, r5 + bl MOD04_021DD36C + mvn r1, #0 + cmp r0, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, r5 + ldmhsia sp!, {r4, r5, r6, pc} + mov r1, #0 + strb r1, [r6, r0] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DA334 + + arm_func_start MOD04_021DA388 +MOD04_021DA388: ; 0x021DA388 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, #0 +_021DA398: + add r0, r6, r4, lsl #3 + add r0, r0, #0x1000 + ldr r1, [r0, #0xa34] + cmp r1, #0 + beq _021DA3D4 + mov r0, r5 + bl strcmp + cmp r0, #0 + addeq r0, r6, r4, lsl #3 + addeq r0, r0, #0x1000 + ldreq r0, [r0, #0xa38] + ldmeqia sp!, {r4, r5, r6, pc} + add r4, r4, #1 + cmp r4, #0x20 + blt _021DA398 +_021DA3D4: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DA388 + + arm_func_start MOD04_021DA3DC +MOD04_021DA3DC: ; 0x021DA3DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r2, _021DA668 ; =0x00001A34 + mov fp, r0 + add r0, fp, r2 + mov r6, r1 + mov r3, #0x20 + mov r1, #0 + mov r2, #0x100 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + bl MI_CpuFill8 + add r0, fp, #0x1000 + ldr r5, [r0, #0xa04] + ldr r1, _021DA66C ; =UNK04_0220C148 + mov r0, r5 + bl strstr + str r0, [sp] + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r0, #4 + bl strlen + ldr r1, [sp] + add r1, r1, #4 + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, _021DA670 ; =UNK04_0220C150 + mov r0, r5 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r8, r0, #1 + ldrsb r7, [r8, #3] + ldr r2, _021DA674 ; =UNK04_0220C154 + mov r5, #0 + add r1, sp, #8 + mov r0, fp + mov r3, r8 + strb r5, [r8, #3] + bl MOD04_021DA68C + cmp r0, #1 + addne sp, sp, #0x14 + strneb r7, [r8, #3] + movne r0, r5 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + strb r7, [r8, #3] + cmp r6, #1 + beq _021DA4C8 + ldr r1, _021DA678 ; =UNK04_0220C160 + mov r0, r8 + mov r2, #3 + bl strncmp + cmp r0, #0 + beq _021DA4D4 +_021DA4C8: + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DA4D4: + ldr r1, _021DA67C ; =UNK04_0220C164 + add r0, r8, #4 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r0, #2 + mov r6, r5 + b _021DA580 +_021DA4FC: + ldr r1, _021DA680 ; =UNK04_0220C168 + mov r0, sb + bl strstr + movs r7, r0 + beq _021DA598 + ldrsb sl, [r7] + add r8, r7, #2 + ldr r1, _021DA67C ; =UNK04_0220C164 + mov r0, r8 + strb r6, [r7] + bl strstr + movs r5, r0 + streqb sl, [r7] + beq _021DA598 + ldrsb r4, [r5] + mov r0, fp + mov r2, sb + strb r6, [r5] + add r1, sp, #8 + mov r3, r8 + bl MOD04_021DA68C + cmp r0, #1 + strneb sl, [r7] + addne sp, sp, #0x14 + strneb r4, [r5] + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r8 + bl strlen + strb sl, [r7] + add r0, r8, r0 + strb r4, [r5] + add sb, r0, #2 +_021DA580: + ldrsb r0, [sb] + cmp r0, #0xd + beq _021DA598 + ldrsb r0, [sb, #1] + cmp r0, #0xa + bne _021DA4FC +_021DA598: + ldr r0, [sp] + add r8, r0, #4 + ldr r0, [sp, #4] + cmp r8, r0 + bhs _021DA65C + mov r5, #0 +_021DA5B0: + ldr r1, _021DA684 ; =UNK04_0220C16C + mov r0, r8 + bl strstr + movs sl, r0 + beq _021DA65C + ldrsb r7, [sl] + add sb, sl, #1 + ldr r1, _021DA688 ; =UNK04_0220C170 + mov r0, sb + strb r5, [sl] + bl strstr + movs r6, r0 + bne _021DA5F4 + ldr r1, _021DA67C ; =UNK04_0220C164 + mov r0, sb + bl strstr + mov r6, r0 +_021DA5F4: + cmp r6, #0 + ldrnesb r4, [r6] + mov r0, fp + mov r2, r8 + add r1, sp, #8 + mov r3, sb + strneb r5, [r6] + bl MOD04_021DA68C + cmp r0, #1 + beq _021DA634 + strb r7, [sl] + cmp r6, #0 + add sp, sp, #0x14 + strneb r4, [r6] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DA634: + mov r0, sb + bl strlen + add r0, sb, r0 + add r8, r0, #1 + ldr r0, [sp, #4] + strb r7, [sl] + cmp r6, #0 + strneb r4, [r6] + cmp r8, r0 + blo _021DA5B0 +_021DA65C: + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DA668: .word 0x00001A34 +_021DA66C: .word UNK04_0220C148 +_021DA670: .word UNK04_0220C150 +_021DA674: .word UNK04_0220C154 +_021DA678: .word UNK04_0220C160 +_021DA67C: .word UNK04_0220C164 +_021DA680: .word UNK04_0220C168 +_021DA684: .word UNK04_0220C16C +_021DA688: .word UNK04_0220C170 + arm_func_end MOD04_021DA3DC + + arm_func_start MOD04_021DA68C +MOD04_021DA68C: ; 0x021DA68C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + ldr r4, [r8, #8] + ldr r1, [r8, #4] + add r0, r0, #0x1000 + cmp r4, r1 + ldr r5, [r0, #0x10] + ldr r4, [r0, #0x14] + mov r7, r2 + mov r6, r3 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + bl strlen + mov r1, r0 + ldr r0, _021DA7D8 ; =UNK04_0220C174 + add r1, r1, #1 + blx r5 + ldr r2, [r8] + ldr r1, [r8, #8] + str r0, [r2, r1, lsl #3] + ldr r3, [r8, #8] + ldr r2, [r8] + ldr r0, [r2, r3, lsl #3] + cmp r0, #0 + beq _021DA770 + mov r0, r6 + bl strlen + mov r1, r0 + ldr r0, _021DA7DC ; =UNK04_0220C194 + add r1, r1, #1 + blx r5 + ldr r2, [r8] + ldr r1, [r8, #8] + add r1, r2, r1, lsl #3 + str r0, [r1, #4] + ldr r3, [r8, #8] + ldr r2, [r8] + mov r1, r3, lsl #3 + add r0, r2, r3, lsl #3 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021DA770 + ldr r0, [r2, r1] + mov r1, r7 + bl strcpy + ldr r2, [r8] + ldr r0, [r8, #8] + mov r1, r6 + add r0, r2, r0, lsl #3 + ldr r0, [r0, #4] + bl strcpy + ldr r1, [r8, #8] + mov r0, #1 + add r1, r1, #1 + str r1, [r8, #8] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021DA770: + ldr r1, [r2, r3, lsl #3] + cmp r1, #0 + beq _021DA798 + ldr r0, _021DA7E0 ; =UNK04_0220C1B4 + mov r2, #0 + blx r4 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + str r2, [r1, r0, lsl #3] +_021DA798: + ldr r1, [r8] + ldr r0, [r8, #8] + add r0, r1, r0, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _021DA7D0 + ldr r0, _021DA7E4 ; =UNK04_0220C1D0 + mov r2, #0 + blx r4 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + add r0, r1, r0, lsl #3 + str r2, [r0, #4] +_021DA7D0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DA7D8: .word UNK04_0220C174 +_021DA7DC: .word UNK04_0220C194 +_021DA7E0: .word UNK04_0220C1B4 +_021DA7E4: .word UNK04_0220C1D0 + arm_func_end MOD04_021DA68C + + arm_func_start MOD04_021DA7E8 +MOD04_021DA7E8: ; 0x021DA7E8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r0 + mov r0, r6 + mov r4, #0 + bl strlen + cmp r0, #0x100 + movhs r0, r4 + ldmhsia sp!, {r4, r5, r6, pc} + ldr r0, _021DA934 ; =0x00001024 + mov r1, r6 + add r0, r5, r0 + mov r2, #0x100 + bl strncpy + mov r0, r6 + bl strlen + ldr r1, _021DA934 ; =0x00001024 + mov r6, r0 + add r0, r5, r1 + bl strlen + cmp r6, r0 + movne r0, r4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _021DA934 ; =0x00001024 + ldr r1, _021DA938 ; =UNK04_0220C1EC + add r0, r5, r0 + bl strstr + cmp r0, #0 + beq _021DA884 + ldr r0, _021DA93C ; =0x0000102B + add r1, r5, #0x1000 + add r0, r5, r0 + str r0, [r1, #0x124] + mov r0, r4 + str r0, [r1, #0x12c] + add r0, r5, #0x1100 + mov r1, #0x50 + strh r1, [r0, #0x30] + b _021DA8C0 +_021DA884: + ldr r0, _021DA934 ; =0x00001024 + ldr r1, _021DA940 ; =UNK04_0220C1F4 + add r0, r5, r0 + bl strstr + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r1, r0, #8 + add r0, r5, #0x1000 + str r1, [r0, #0x124] + mov r2, #1 + ldr r1, _021DA944 ; =0x000001BB + str r2, [r0, #0x12c] + add r0, r5, #0x1100 + strh r1, [r0, #0x30] +_021DA8C0: + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _021DA948 ; =UNK04_0220C200 + bl strstr + cmp r0, #0 + movne r1, #0 + strneb r1, [r0] + addne r4, r0, #1 + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _021DA94C ; =UNK04_0220C204 + bl strstr + cmp r0, #0 + addeq r0, r5, #0x1000 + moveq r1, #0 + streq r1, [r0, #0x128] + movne r1, #0 + strneb r1, [r0] + addne r1, r0, #1 + addne r0, r5, #0x1000 + strne r1, [r0, #0x128] + cmp r4, #0 + beq _021DA92C + mov r0, r4 + bl atol + add r1, r5, #0x1100 + strh r0, [r1, #0x30] +_021DA92C: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DA934: .word 0x00001024 +_021DA938: .word UNK04_0220C1EC +_021DA93C: .word 0x0000102B +_021DA940: .word UNK04_0220C1F4 +_021DA944: .word 0x000001BB +_021DA948: .word UNK04_0220C200 +_021DA94C: .word UNK04_0220C204 + arm_func_end MOD04_021DA7E8 + + arm_func_start MOD04_021DA950 +MOD04_021DA950: ; 0x021DA950 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + add r0, r0, #0x1000 + mov r5, r2 + cmp r5, #0 + ldr r7, [r0, #0x14] + ldr r2, [r0, #0x10] + mov r6, r1 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r1, [r6, #0xc] + ldr r0, _021DAA08 ; =UNK04_0220C208 + add r1, r1, r5 + blx r2 + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r2, [r6, #0xc] + mov r1, r4 + bl MI_CpuCopy8 + ldr r1, [r6] + ldr r0, _021DAA0C ; =UNK04_0220C218 + mov r2, #0 + blx r7 + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r1, [r6, #4] + sub r0, r4, r0 + add r0, r1, r0 + str r0, [r6, #4] + ldr r1, [r6, #0xc] + mov r0, #1 + add r1, r1, r5 + str r1, [r6, #0xc] + str r4, [r6] + ldr r1, [r6, #0xc] + add r1, r4, r1 + str r1, [r6, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAA08: .word UNK04_0220C208 +_021DAA0C: .word UNK04_0220C218 + arm_func_end MOD04_021DA950 + + arm_func_start MOD04_021DAA10 +MOD04_021DAA10: ; 0x021DAA10 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r1, [r4] + add r0, r0, #0x1000 + cmp r1, #0 + ldr r3, [r0, #0x14] + beq _021DAA38 + ldr r0, _021DAA4C ; =UNK04_0220C218 + mov r2, #0 + blx r3 +_021DAA38: + mov r0, r4 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DAA4C: .word UNK04_0220C218 + arm_func_end MOD04_021DAA10 + + arm_func_start MOD04_021DAA50 +MOD04_021DAA50: ; 0x021DAA50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r2 + add r0, r0, #0x1000 + ldr r2, [r0, #0x10] + mov r4, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _021DAABC ; =UNK04_0220C22C + mov r1, r5 + blx r2 + str r0, [r4] + ldr r0, [r4] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + str r0, [r4, #4] + str r5, [r4, #0xc] + ldr r2, [r4] + ldr r1, [r4, #0xc] + mov r0, #1 + add r1, r2, r1 + str r1, [r4, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DAABC: .word UNK04_0220C22C + arm_func_end MOD04_021DAA50 + + arm_func_start MOD04_021DAAC0 +MOD04_021DAAC0: ; 0x021DAAC0 + ands r1, r0, #0x8000 + bicne r0, r0, #0x8000 + bx lr + arm_func_end MOD04_021DAAC0 + + arm_func_start MOD04_021DAACC +MOD04_021DAACC: ; 0x021DAACC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r2, _021DAB60 ; =0x000019F4 + mov r7, r0 + mov r6, r1 + mov r0, r6 + add r4, r7, r2 + bl strlen + mov r5, r0 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 + cmp r5, r1 + ble _021DAB34 + sub r2, r5, r1 + mov r0, r7 + mov r1, r4 + add r2, r2, #1 + bl MOD04_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 +_021DAB34: + ldr r2, _021DAB64 ; =UNK04_0220C240 + mov r3, r6 + bl OS_SNPrintf + cmp r0, r5 + ldreq r1, [r4, #4] + movne r0, #1 + addeq r0, r1, r0 + streq r0, [r4, #4] + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAB60: .word 0x000019F4 +_021DAB64: .word UNK04_0220C240 + arm_func_end MOD04_021DAACC + + arm_func_start MOD04_021DAB68 +MOD04_021DAB68: ; 0x021DAB68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f0] + ldr r0, _021DAC8C ; =0x000019F4 + cmp r4, #0 + ldreq r6, _021DAC90 ; =UNK04_0220C244 + mov r8, r2 + add r5, sl, #0x1000 + add r4, sl, r0 + ldr r0, [r5, #0x9f0] + mov r7, r3 + add fp, r0, #1 + mov r2, #0 + mov sb, r1 + ldrne r6, _021DAC94 ; =UNK04_0220C248 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str fp, [r5, #0x9f0] + bl MOD04_021DD4FC + mov r5, r0 + mov r0, r6 + bl strlen + mov fp, r0 + mov r0, sb + bl strlen + sub r1, fp, #2 + add r2, r1, r0 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + add r2, r5, r2 + sub r1, r1, r0 + cmp r2, r1 + ble _021DAC28 + sub r2, r2, r1 + mov r0, sl + mov r1, r4 + add r2, r2, #1 + bl MOD04_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 +_021DAC28: + mov r2, r6 + mov r3, sb + bl OS_SNPrintf + ldr r2, [r4, #4] + mov r1, r7 + add r0, r2, r0 + str r0, [r4, #4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + mov r0, r8 + sub r3, r3, r2 + sub r3, r3, #1 + bl MOD04_021DD4FC + cmp r0, #0 + addlt sp, sp, #4 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #4] + mov r0, #0 + add r1, r1, r5 + str r1, [r4, #4] + ldr r1, [r4, #4] + strb r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DAC8C: .word 0x000019F4 +_021DAC90: .word UNK04_0220C244 +_021DAC94: .word UNK04_0220C248 + arm_func_end MOD04_021DAB68 + + arm_func_start MOD04_021DAC98 +MOD04_021DAC98: ; 0x021DAC98 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r6, r2 + mov r8, r0 + ldr r2, _021DAD7C ; =0x000019F4 + mov r0, r6 + mov r7, r1 + add r5, r8, r2 + bl strlen + mov r4, r0 + ldr r0, _021DAD80 ; =UNK04_0220C250 + bl strlen + mov sb, r0 + mov r0, r7 + bl strlen + sub r1, sb, #4 + add r0, r1, r0 + add r4, r4, r0 + ldr r2, [r5, #8] + ldr r1, [r5, #4] + add r0, r4, #1 + sub r1, r2, r1 + cmp r0, r1 + ble _021DAD1C + sub r2, r4, r1 + mov r0, r8 + mov r1, r5 + add r2, r2, #1 + bl MOD04_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DAD1C: + ldr r0, [r5] + ldr r1, _021DAD84 ; =UNK04_0220C148 + bl strstr + add r8, r0, #2 + ldrsb sb, [r0, #2] + mov r0, r8 + bl strlen + add r2, r0, #1 + add r0, r8, r4 + mov r1, r8 + bl memmove + ldr r2, _021DAD80 ; =UNK04_0220C250 + str r6, [sp] + mov r3, r7 + mov r0, r8 + add r1, r4, #1 + bl OS_SNPrintf + strb sb, [r8, r0] + ldr r1, [r5, #4] + mov r0, #0 + add r1, r1, r4 + str r1, [r5, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021DAD7C: .word 0x000019F4 +_021DAD80: .word UNK04_0220C250 +_021DAD84: .word UNK04_0220C148 + arm_func_end MOD04_021DAC98 + + arm_func_start MOD04_021DAD88 +MOD04_021DAD88: ; 0x021DAD88 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r0 + add r0, r7, #0x1000 + ldr r1, [r0, #8] + ldr r0, _021DAE40 ; =0x000019F4 + cmp r1, #0 + ldreq r6, _021DAE44 ; =UNK04_0220C25C + add r5, r7, r0 + add r0, r7, #0x1000 + ldrne r6, _021DAE48 ; =UNK04_0220C2B0 + ldr r0, [r0, #0x124] + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + add r1, r7, #0x1000 + mov r8, r0 + ldr r0, [r1, #0x128] + bl strlen + sub r1, r8, #4 + add r0, r1, r0 + add r1, r4, r0 + ldr r0, _021DAE40 ; =0x000019F4 + add r2, r1, #0x400 + add r1, r7, r0 + mov r0, r7 + bl MOD04_021DAA50 + cmp r0, #1 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r3, r7, #0x1000 + ldr r0, [r3, #0x124] + mov r2, r6 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x128] + bl OS_SNPrintf + ldr r1, [r5, #4] + add r0, r1, r0 + str r0, [r5, #4] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DAE40: .word 0x000019F4 +_021DAE44: .word UNK04_0220C25C +_021DAE48: .word UNK04_0220C2B0 + arm_func_end MOD04_021DAD88 + + arm_func_start MOD04_021DAE4C +MOD04_021DAE4C: ; 0x021DAE4C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + add r1, r5, #0x1000 + ldr r4, [r1, #0x14] + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021DAF00 ; =0x00001A34 + mov r2, #0x20 + add r1, r5, r1 + bl MOD04_021DA260 + ldr r1, _021DAF04 ; =0x00001A04 + mov r0, r5 + add r1, r5, r1 + bl MOD04_021DAA10 + ldr r1, _021DAF08 ; =0x000019F4 + mov r0, r5 + add r1, r5, r1 + bl MOD04_021DAA10 + add r0, r5, #0x1000 + ldr r1, [r0, #0x9c8] + cmp r1, #0 + beq _021DAEC0 + ldr r0, _021DAF0C ; =UNK04_0220C2D0 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9c8] +_021DAEC0: + add r0, r5, #0x1000 + ldr r1, [r0, #0x9cc] + cmp r1, #0 + beq _021DAEE8 + ldr r0, _021DAF10 ; =UNK04_0220C2E8 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9cc] +_021DAEE8: + ldr r2, _021DAF14 ; =0x00001C10 + mov r0, r5 + mov r1, #0 + bl MI_CpuFill8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DAF00: .word 0x00001A34 +_021DAF04: .word 0x00001A04 +_021DAF08: .word 0x000019F4 +_021DAF0C: .word UNK04_0220C2D0 +_021DAF10: .word UNK04_0220C2E8 +_021DAF14: .word 0x00001C10 + arm_func_end MOD04_021DAE4C + + arm_func_start MOD04_021DAF18 +MOD04_021DAF18: ; 0x021DAF18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + add r0, sl, #0x1000 + ldr fp, [r0, #0x1c] + ldr r0, _021DB224 ; =0x00001134 + ldr r1, _021DB228 ; =0x00001198 + ldr r2, _021DB22C ; =0x00001A04 + add r8, sl, r0 + cmp fp, #0 + mov r0, sl + add r6, sl, r1 + add r7, sl, r2 + mov r5, #0 + ldrle fp, _021DB230 ; =0x0000EA60 + bl MOD04_021DB35C + mov r0, sl + bl MOD04_021DB348 + movs r4, r0 + addeq r0, sl, #0x1000 + moveq r1, #2 + streq r1, [r0, #0x20] + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl CPS_SocUse + add r0, sl, #0x1000 + ldr r0, [r0, #0x12c] + cmp r0, #1 + bne _021DAFC8 + mov r0, r6 + mov r1, #0 + mov r2, #0x830 + bl MI_CpuFill8 + ldr r1, _021DB234 ; =MOD04_021DAAC0 + add r0, sl, #0x1000 + str r1, [r6, #0x810] + ldr r1, [r0, #0x124] + ldr r0, _021DB238 ; =UNK04_0220C0E4 + str r1, [r6, #0x800] + mov r1, #0xb + str r6, [r8, #0xc] + bl CPS_SetRootCa + mov r0, #1 + bl CPS_SetSsl +_021DAFC8: + add r0, sl, #0x1100 + ldrh r1, [r0, #0x30] + mov r2, r4 + mov r0, #0 + bl CPS_SocPingMode + bl CPS_TcpConnect + cmp r0, #0 + beq _021DB004 + add r0, sl, #0x1000 + mov r1, #3 + str r1, [r0, #0x20] + bl CPS_SocRelease + bl CPS_SocUnRegister + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DB004: + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f4] + mov r0, r4 + bl strlen + mov r1, r0 + mov r0, r4 + bl CPS_SocWrite + cmp r0, #0 + str r0, [sp, #8] + addle r0, sl, #0x1000 + movle r1, #5 + strle r1, [r0, #0x20] + ble _021DB20C + bl CPS_SocGetChar + mov r0, sl + bl MOD04_021DB3B8 + cmp r0, #0 + addeq r0, sl, #0x1000 + moveq r1, #7 + streq r1, [r0, #0x20] + beq _021DB20C + ldr r0, [r7] + str r0, [r7, #4] + ldr r1, [r7] + ldr r0, [r7, #0xc] + add r0, r1, r0 + str r0, [r7, #8] + bl OS_GetTick + mov r6, r0 + mov r0, fp, asr #0x1f + mov r8, r1 + str r0, [sp, #4] + mov r4, #0 +_021DB088: + ldr r0, _021DB23C ; =CPSMyIp + ldr r0, [r0] + cmp r0, #0 + addeq r0, sl, #0x1000 + moveq r1, #5 + streq r1, [r0, #0x20] + beq _021DB20C + bl CPS_SocGetLength + str r0, [sp, #8] + cmp r0, #0 + blt _021DB1E8 + cmp r0, #0 + ble _021DB16C + bl OS_GetTick + mov r6, r0 + add r0, sp, #8 + mov r8, r1 + bl CPS_SocRead + cmp r0, #0 + beq _021DB1E8 + ldr r2, [r7, #8] + ldr r1, [r7, #4] + sub r2, r2, #1 + ldr sb, [sp, #8] + sub r2, r2, r1 + cmp sb, r2 + movge sb, r2 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, [r7, #4] + cmp r5, #1 + add r0, r0, sb + str r0, [r7, #4] + ldr r0, [r7, #4] + strb r4, [r0] + bne _021DB144 + ldr r0, _021DB240 ; =0x00001A14 + add r0, sl, r0 + bl OS_LockMutex + add r1, sl, #0x1000 + ldr r2, [r1, #0xa30] + ldr r0, _021DB240 ; =0x00001A14 + add r2, r2, sb + add r0, sl, r0 + str r2, [r1, #0xa30] + bl OS_UnlockMutex + b _021DB150 +_021DB144: + mov r0, sl + bl MOD04_021DB248 + mov r5, r0 +_021DB150: + ldr r0, [sp, #8] + cmp r0, sb + bls _021DB164 + bl CPS_SocConsume + b _021DB1E8 +_021DB164: + mov r0, sb + bl CPS_SocConsume +_021DB16C: + add r0, sl, #0x1000 + ldr r1, [r0, #0xa2c] + cmp r1, #0 + blt _021DB188 + ldr r0, [r0, #0xa30] + cmp r0, r1 + bge _021DB1E8 +_021DB188: + bl OS_GetTick + subs r2, r0, r6 + sbc r0, r1, r8 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021DB244 ; =0x000082EA + mov r3, r4 + bl _ll_udiv + ldr r2, [sp, #4] + cmp r1, r2 + cmpeq r0, fp + addhi r0, sl, #0x1000 + movhi r1, #6 + strhi r1, [r0, #0x20] + bhi _021DB20C + mov r0, sl + bl MOD04_021DB3B8 + cmp r0, #0 + bne _021DB088 + add r0, sl, #0x1000 + mov r1, #7 + str r1, [r0, #0x20] + b _021DB20C +_021DB1E8: + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease + bl CPS_SocUnRegister + add r0, sl, #0x1000 + mov r1, #8 + str r1, [r0, #0x20] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DB20C: + bl CPS_TcpShutdown + bl CPS_TcpClose + bl CPS_SocRelease + bl CPS_SocUnRegister + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DB224: .word 0x00001134 +_021DB228: .word 0x00001198 +_021DB22C: .word 0x00001A04 +_021DB230: .word 0x0000EA60 +_021DB234: .word MOD04_021DAAC0 +_021DB238: .word UNK04_0220C0E4 +_021DB23C: .word CPSMyIp +_021DB240: .word 0x00001A14 +_021DB244: .word 0x000082EA + arm_func_end MOD04_021DAF18 + + arm_func_start MOD04_021DB248 +MOD04_021DB248: ; 0x021DB248 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + add r0, r5, #0x1000 + ldr r6, [r0, #0xa04] + ldr r2, _021DB334 ; =0x00001A04 + ldr r1, _021DB338 ; =UNK04_0220C148 + mov r0, r6 + add r4, r5, r2 + bl strstr + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r1, _021DB338 ; =UNK04_0220C148 + mov r0, r6 + bl strstr + ldr r1, _021DB33C ; =0x00001A14 + add r6, r0, #4 + add r0, r5, r1 + bl OS_LockMutex + ldr r0, [r4, #4] + ldr r1, _021DB33C ; =0x00001A14 + sub r2, r0, r6 + add r0, r5, #0x1000 + str r2, [r0, #0xa30] + add r0, r5, r1 + bl OS_UnlockMutex + ldr r0, [r4] + ldr r1, _021DB340 ; =UNK04_0220C300 + bl strstr + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DB340 ; =UNK04_0220C300 + bl strlen + add r7, r4, r0 + ldr r1, _021DB344 ; =UNK04_0220C164 + mov r0, r7 + bl strstr + mov r4, r0 + ldr r0, _021DB33C ; =0x00001A14 + ldrsb r6, [r4] + mov r1, #0 + add r0, r5, r0 + strb r1, [r4] + bl OS_LockMutex + mov r0, r7 + bl atol + add r1, r5, #0x1000 + ldr r2, _021DB33C ; =0x00001A14 + str r0, [r1, #0xa2c] + add r0, r5, r2 + bl OS_UnlockMutex + strb r6, [r4] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DB334: .word 0x00001A04 +_021DB338: .word UNK04_0220C148 +_021DB33C: .word 0x00001A14 +_021DB340: .word UNK04_0220C300 +_021DB344: .word UNK04_0220C164 + arm_func_end MOD04_021DB248 + + arm_func_start MOD04_021DB348 +MOD04_021DB348: ; 0x021DB348 + ldr ip, _021DB358 ; =CPS_Resolve + add r0, r0, #0x1000 + ldr r0, [r0, #0x124] + bx ip + .align 2, 0 +_021DB358: .word CPS_Resolve + arm_func_end MOD04_021DB348 + + arm_func_start MOD04_021DB35C +MOD04_021DB35C: ; 0x021DB35C + stmdb sp!, {r4, lr} + ldr r1, _021DB3AC ; =0x00001134 + mov r4, r0 + add r0, r4, r1 + mov r1, #0 + mov r2, #0x64 + bl MI_CpuFill8 + ldr r0, _021DB3B0 ; =0x00000B68 + add r1, r4, #0x1000 + str r0, [r1, #0x170] + ldr r3, [r1, #0x9c8] + ldr r0, _021DB3AC ; =0x00001134 + ldr r2, _021DB3B4 ; =0x000005EA + str r3, [r1, #0x174] + str r2, [r1, #0x17c] + ldr r2, [r1, #0x9cc] + add r0, r4, r0 + str r2, [r1, #0x180] + bl CPS_SocRegister + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB3AC: .word 0x00001134 +_021DB3B0: .word 0x00000B68 +_021DB3B4: .word 0x000005EA + arm_func_end MOD04_021DB35C + + arm_func_start MOD04_021DB3B8 +MOD04_021DB3B8: ; 0x021DB3B8 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldr r0, [r0, #0x12c] + cmp r0, #1 + bne _021DB3EC + ldr r0, _021DB438 ; =0x000019D0 + add r0, r4, r0 + bl OS_GetLowEntropyData + ldr r0, _021DB438 ; =0x000019D0 + mov r1, #0x20 + add r0, r4, r0 + bl CPS_SslAddRandomSeed +_021DB3EC: + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_LockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xc0c] + cmp r0, #1 + bne _021DB41C + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_UnlockMutex + mov r0, #0 + ldmia sp!, {r4, pc} +_021DB41C: + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_UnlockMutex + mov r0, #0xa + bl OS_Sleep + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB438: .word 0x000019D0 +_021DB43C: .word 0x00001BF4 + arm_func_end MOD04_021DB3B8 + + arm_func_start MOD04_021DB440 +MOD04_021DB440: ; 0x021DB440 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldrb r0, [r0] + cmp r0, #0xff + ldmneia sp!, {r4, pc} + ldr r0, _021DB49C ; =0x00001BF4 + add r0, r4, r0 + bl OS_LockMutex + ldr r0, _021DB49C ; =0x00001BF4 + add r1, r4, #0x1000 + mov r2, #1 + add r0, r4, r0 + str r2, [r1, #0xc0c] + bl OS_UnlockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _021DB4A0 ; =0x00001B34 + add r0, r4, r0 + bl OS_JoinThread + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB49C: .word 0x00001BF4 +_021DB4A0: .word 0x00001B34 + arm_func_end MOD04_021DB440 + + arm_func_start MOD04_021DB4A4 +MOD04_021DB4A4: ; 0x021DB4A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r3, _021DB55C ; =0x00001BF4 + mov r5, r0 + add r2, r5, #0x1000 + mov ip, #0 + add r0, r5, r3 + mov r4, r1 + str ip, [r2, #0xc0c] + bl OS_InitMutex + ldr r0, _021DB560 ; =0x00001A14 + add r0, r5, r0 + bl OS_InitMutex + add r0, r5, #0x1000 + ldr r0, [r0, #0x18] + cmp r0, #1 + ldreq r0, _021DB564 ; =UNK04_02210480 + moveq r1, #1 + streq r1, [r0] + ldrne r0, _021DB564 ; =UNK04_02210480 + movne r1, #0 + strne r1, [r0] + add r0, r5, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DB524 + ldr r0, _021DB568 ; =0x00001B34 + add r0, r5, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, pc} +_021DB524: + ldr r0, _021DB568 ; =0x00001B34 + mov r1, #0x1000 + str r1, [sp] + ldr r1, _021DB56C ; =MOD04_021DAF18 + mov r2, r5 + add r0, r5, r0 + add r3, r5, #0x1000 + str r4, [sp, #4] + bl OS_CreateThread + ldr r0, _021DB568 ; =0x00001B34 + add r0, r5, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DB55C: .word 0x00001BF4 +_021DB560: .word 0x00001A14 +_021DB564: .word UNK04_02210480 +_021DB568: .word 0x00001B34 +_021DB56C: .word MOD04_021DAF18 + arm_func_end MOD04_021DB4A4 + + arm_func_start MOD04_021DB570 +MOD04_021DB570: ; 0x021DB570 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _021DB5F4 ; =UNK04_0220C314 + ldr r2, _021DB5F8 ; =UNK04_0220C320 + mov r4, r0 + bl MOD04_021DAC98 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + add r0, r4, #0x1000 + ldr r0, [r0, #0x9f4] + ldr r1, _021DB5FC ; =UNK04_0220C148 + bl strstr + add r0, r0, #4 + bl strlen + movs r3, r0 + beq _021DB5E8 + ldr r2, _021DB600 ; =UNK04_0220C328 + add r0, sp, #0 + mov r1, #7 + bl OS_SNPrintf + ldr r1, _021DB604 ; =UNK04_0220C32C + add r2, sp, #0 + mov r0, r4 + bl MOD04_021DAC98 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_021DB5E8: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB5F4: .word UNK04_0220C314 +_021DB5F8: .word UNK04_0220C320 +_021DB5FC: .word UNK04_0220C148 +_021DB600: .word UNK04_0220C328 +_021DB604: .word UNK04_0220C32C + arm_func_end MOD04_021DB570 + + arm_func_start MOD04_021DB608 +MOD04_021DB608: ; 0x021DB608 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r2, _021DB714 ; =0x00001C10 + mov r6, r0 + ldr r4, [r5, #0xc] + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DB718 ; =0x00001004 + add r0, r6, #0x1000 + mvn r2, #0 + str r2, [r0, #0xa2c] + mov lr, r5 + str r2, [r0, #0xa30] + add ip, r6, r1 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _021DB71C ; =UNK04_0220C33C + ldr r1, _021DB720 ; =0x00000B68 + blx r4 + add r1, r6, #0x1000 + str r0, [r1, #0x9c8] + ldr r0, [r1, #0x9c8] + cmp r0, #0 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021DB724 ; =UNK04_0220C354 + ldr r1, _021DB728 ; =0x000005EA + blx r4 + add r2, r6, #0x1000 + str r0, [r2, #0x9cc] + ldr r0, [r2, #0x9cc] + cmp r0, #0 + moveq r0, #1 + streq r0, [r2, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _021DB72C ; =0x00001A04 + ldr r2, [r2, #0xc] + mov r0, r6 + add r1, r6, r1 + bl MOD04_021DAA50 + cmp r0, #0 + addeq r1, r6, #0x1000 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5] + mov r0, r6 + bl MOD04_021DA7E8 + cmp r0, #0 + addeq r1, r6, #0x1000 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl MOD04_021DAD88 + add r1, r6, #0x1000 + str r0, [r1, #0x20] + ldr r0, [r1, #0x20] + cmp r0, #0 + moveq r0, #0xff + streqb r0, [r1] + add r0, r6, #0x1000 + ldr r0, [r0, #0x20] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DB714: .word 0x00001C10 +_021DB718: .word 0x00001004 +_021DB71C: .word UNK04_0220C33C +_021DB720: .word 0x00000B68 +_021DB724: .word UNK04_0220C354 +_021DB728: .word 0x000005EA +_021DB72C: .word 0x00001A04 + arm_func_end MOD04_021DB608 + + .section .data + + .global UNK04_0220C0E4 ; I really don't know about this table, I'm gonna assume it's extern for now because it's weird +UNK04_0220C0E4: ; 0x0220C0E4 + .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8 + .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0 + .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC + + .global UNK04_0220C110 +UNK04_0220C110: ; 0x0220C110 + .asciz "FREE array_entry[i].label" + + .balign 4, 0 + .global UNK04_0220C12C +UNK04_0220C12C: ; 0x0220C12C + .asciz "FREE array_entry[i].value" + + .balign 4, 0 + .global UNK04_0220C148 +UNK04_0220C148: ; 0x0220C148 + .asciz "\r\n\r\n" + + .balign 4, 0 + .global UNK04_0220C150 +UNK04_0220C150: ; 0x0220C150 + .asciz " " + + .balign 4, 0 + .global UNK04_0220C154 +UNK04_0220C154: ; 0x0220C154 + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220C160 +UNK04_0220C160: ; 0x0220C160 + .asciz "200" + + .balign 4, 0 + .global UNK04_0220C164 +UNK04_0220C164: ; 0x0220C164 + .asciz "\r\n" + + .balign 4, 0 + .global UNK04_0220C168 +UNK04_0220C168: ; 0x0220C168 + .asciz ": " + + .balign 4, 0 + .global UNK04_0220C16C +UNK04_0220C16C: ; 0x0220C16C + .asciz "=" + + .balign 4, 0 + .global UNK04_0220C170 +UNK04_0220C170: ; 0x0220C170 + .asciz "&" + + .balign 4, 0 + .global UNK04_0220C174 +UNK04_0220C174: ; 0x0220C174 + .asciz "ALLOC result->entry[i].label" + + .balign 4, 0 + .global UNK04_0220C194 +UNK04_0220C194: ; 0x0220C194 + .asciz "ALLOC result->entry[i].value" + + .balign 4, 0 + .global UNK04_0220C1B4 +UNK04_0220C1B4: ; 0x0220C1B4 + .asciz "FREE result->entry[i].label" + + .balign 4, 0 + .global UNK04_0220C1D0 +UNK04_0220C1D0: ; 0x0220C1D0 + .asciz "FREE result->entry[i].value" + + .balign 4, 0 + .global UNK04_0220C1EC +UNK04_0220C1EC: ; 0x0220C1EC + .asciz "http://" + + .balign 4, 0 + .global UNK04_0220C1F4 +UNK04_0220C1F4: ; 0x0220C1F4 + .asciz "https://" + + .balign 4, 0 + .global UNK04_0220C200 +UNK04_0220C200: ; 0x0220C200 + .asciz ":" + + .balign 4, 0 + .global UNK04_0220C204 +UNK04_0220C204: ; 0x0220C204 + .asciz "/" + + .balign 4, 0 + .global UNK04_0220C208 +UNK04_0220C208: ; 0x0220C208 + .asciz "ALLOC newptr" + + .balign 4, 0 + .global UNK04_0220C218 +UNK04_0220C218: ; 0x0220C218 + .asciz "FREE buf->buffer" + + .balign 4, 0 + .global UNK04_0220C22C +UNK04_0220C22C: ; 0x0220C22C + .asciz "ALLOC buf->buffer" + + .balign 4, 0 + .global UNK04_0220C240 +UNK04_0220C240: ; 0x0220C240 + .asciz "%s" + + .balign 4, 0 + .global UNK04_0220C244 +UNK04_0220C244: ; 0x0220C244 + .asciz "%s=" + + .balign 4, 0 + .global UNK04_0220C248 +UNK04_0220C248: ; 0x0220C248 + .asciz "&%s=" + + .balign 4, 0 + .global UNK04_0220C250 +UNK04_0220C250: ; 0x0220C250 + .asciz "%s: %s\r\n" + + .balign 4, 0 + .global UNK04_0220C25C +UNK04_0220C25C: ; 0x0220C25C + .ascii "POST /%s HTTP/1.0\r\n" + .ascii "Content-type: application/x-www-form-urlencoded\r\n" + .asciz "Host: %s\r\n\r\n" + + .balign 4, 0 + .global UNK04_0220C2B0 +UNK04_0220C2B0: ; 0x0220C2B0 + .ascii "GET /%s HTTP/1.0\r\n" + .asciz "Host: %s\r\n\r\n" + + .balign 4, 0 + .global UNK04_0220C2D0 +UNK04_0220C2D0: ; 0x0220C2D0 + .asciz "FREE http->lowrecvbuf" + + .balign 4, 0 + .global UNK04_0220C2E8 +UNK04_0220C2E8: ; 0x0220C2E8 + .asciz "FREE http->lowsendbuf" + + .balign 4, 0 + .global UNK04_0220C300 +UNK04_0220C300: ; 0x0220C300 + .asciz "Content-Length: " + + .balign 4, 0 + .global UNK04_0220C314 +UNK04_0220C314: ; 0x0220C314 + .asciz "Connection" + + .balign 4, 0 + .global UNK04_0220C320 +UNK04_0220C320: ; 0x0220C320 + .asciz "close" + + .balign 4, 0 + .global UNK04_0220C328 +UNK04_0220C328: ; 0x0220C328 + .asciz "%d" + + .balign 4, 0 + .global UNK04_0220C32C +UNK04_0220C32C: ; 0x0220C32C + .asciz "Content-Length" + + .balign 4, 0 + .global UNK04_0220C33C +UNK04_0220C33C: ; 0x0220C33C + .asciz "ALLOC http->lowrecvbuf" + + .balign 4, 0 + .global UNK04_0220C354 +UNK04_0220C354: ; 0x0220C354 + .asciz "ALLOC http->lowsendbuf" + + .balign 4, 0 -- cgit v1.2.3 From 3e824244c8d3a0f43a687d8412651a244b50a65d Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 9 Aug 2021 02:58:29 +0100 Subject: another mod04 file --- arm9/arm9.lsf | 1 + arm9/global.inc | 5 + arm9/modules/04/asm/arm_04.s | 1494 +-------------------------------- arm9/modules/04/asm/mod04_021DB730.s | 1512 ++++++++++++++++++++++++++++++++++ 4 files changed, 1522 insertions(+), 1490 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DB730.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b0cf06f4..834780fa 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -661,6 +661,7 @@ Overlay MODULE_04 Object mod04_021D8D18.o Object mod04_021D9C2C.o Object mod04_021DA260.o + Object mod04_021DB730.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 81856abb..18dca976 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6131,6 +6131,11 @@ .extern MOD04_021DB4A4 .extern MOD04_021DB570 .extern MOD04_021DB608 +.extern MOD04_021DC794 +.extern MOD04_021DC7AC +.extern MOD04_021DC7F0 +.extern MOD04_021DC870 +.extern MOD04_021DC970 .extern MOD04_021DCA84 .extern MOD04_021DD36C .extern MOD04_021DD4FC diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 7d791941..26b8d60b 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,1364 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DB730 -MOD04_021DB730: ; 0x021DB730 - stmdb sp!, {r4, lr} - ldr r2, _021DB770 ; =UNK04_02210484 - ldr r1, _021DB774 ; =0x000011DC - ldr r2, [r2] - mov r4, r0 - add r0, r2, r1 - bl OS_LockMutex - ldr r2, _021DB770 ; =UNK04_02210484 - ldr r1, _021DB774 ; =0x000011DC - ldr r0, [r2] - add r0, r0, #0x1000 - str r4, [r0] - ldr r0, [r2] - add r0, r0, r1 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - .align 2, 0 -_021DB770: .word UNK04_02210484 -_021DB774: .word 0x000011DC - arm_func_end MOD04_021DB730 - - arm_func_start MOD04_021DB778 -MOD04_021DB778: ; 0x021DB778 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2d4 - ldr r5, _021DC670 ; =UNK04_02210484 - mov r0, #0 - str r0, [sp] - ldr r0, [r5] - ldr r7, [sp] - add r0, r0, #0x1000 - ldr sb, [r0, #0x108] - ldr r8, [r0, #0x10c] - mov r0, r7 - str r0, [sp, #8] - str r0, [sp, #0x1c] - mvn r0, #2 - str r0, [sp, #0x20] - mov r0, r7 - str r0, [sp, #0x24] - mvn r0, #3 - str r0, [sp, #0x28] - mov r0, r7 - str r0, [sp, #0x2c] - mov r0, #0x1000 - str r0, [sp, #0x14] - mov r0, #5 - str r0, [sp, #0x30] - mov r0, r7 - str r0, [sp, #0x34] - str r0, [sp, #0x38] - str r0, [sp, #0x3c] - mov r0, #4 - str r0, [sp, #0x40] - mov r0, r7 - str r0, [sp, #0x44] - str r0, [sp, #0x48] - str r0, [sp, #0x4c] - str r0, [sp, #0x50] - str r0, [sp, #0x58] - str r0, [sp, #0x54] - mvn r0, #4 - str r0, [sp, #0x5c] - mov r0, r7 - str r0, [sp, #0x60] - mvn r0, #1 - ldr r4, _021DC674 ; =UNK04_02210490 - mov r6, #1 - str r0, [sp, #0x18] -_021DB830: - ldr r0, _021DC678 ; =UNK04_02210494 - ldr r1, [sp, #0x14] - str r6, [r0, #4] - str r1, [r0, #8] - ldr r1, _021DC67C ; =0x00004E20 - str sb, [r0, #0xc] - str r1, [r0, #0x18] - str r8, [r0, #0x10] - ldr r0, _021DC680 ; =UNK04_0220C36C - ldr r1, [r5] - ldr r2, [r0] - ldr r0, _021DC678 ; =UNK04_02210494 - add r1, r1, #0x1000 - str r2, [r0] - ldr r0, [sp, #0x18] - str r0, [r1, #4] - ldr r0, [r4] - ldr r1, _021DC678 ; =UNK04_02210494 - bl MOD04_021DB608 - cmp r0, #0 - beq _021DB89C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DB89C: - ldr r0, [r4] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DB8C4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DB8C4: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r4] - bl MOD04_021DB4A4 - ldr r1, [r4] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DB8FC - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DB8FC: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DB91C - cmp r1, #8 - beq _021DB948 - b _021DB930 -_021DB91C: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DB930: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DB948: - ldr r1, [sp, #0x1c] - bl MOD04_021DA3DC - cmp r0, #1 - beq _021DB970 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DB970: - ldr r0, [r4] - ldr r1, _021DC68C ; =UNK04_0220C418 - bl MOD04_021DA388 - bl atol - mov sl, r0 - ldr r0, _021DC690 ; =errno - ldr r0, [r0] - cmp r0, #0x22 - bne _021DB9A0 - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DB9A0: - cmp sl, #0xc8 - beq _021DBCB4 - ldr r0, _021DC694 ; =0x0000012E - cmp sl, r0 - bne _021DBC9C - ldr r0, _021DC698 ; =UNK04_0221048C - str r6, [r0] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _021DBC0C - ldr r1, _021DC674 ; =UNK04_02210490 - mvn r2, #5 - str r2, [r0, #4] - ldr r0, [r1] - bl MOD04_021DAE4C - ldr r2, _021DC678 ; =UNK04_02210494 - ldr r0, _021DC69C ; =UNK04_0220BEB4 - ldr r3, _021DC67C ; =0x00004E20 - ldr r0, [r0] - mov r5, #0 - mov r4, #0x200 - ldr r1, _021DC6A0 ; =UNK04_0220C424 - str r0, [r2] - str r5, [r2, #4] - str r4, [r2, #8] - str sb, [r2, #0xc] - str r8, [r2, #0x10] - str r3, [r2, #0x18] - bl strcmp - cmp r0, #0 - ldrne r0, _021DC678 ; =UNK04_02210494 - movne r1, #1 - strne r1, [r0, #0x14] - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r1, _021DC678 ; =UNK04_02210494 - ldr r0, [r0] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DBA5C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBA5C: - add r0, sp, #0x240 - bl MOD04_021DA238 - cmp r0, #0 - beq _021DBA88 - ldr r0, _021DC674 ; =UNK04_02210490 - add r1, sp, #0x240 - ldr r0, [r0] - mov r2, #1 - bl MOD04_021D9C2C - cmp r0, #0 - bne _021DBAA0 -_021DBA88: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBAA0: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r1, _021DC6A4 ; =UNK04_0220C444 - ldr r0, [r0] - ldr r2, _021DC6A8 ; =UNK04_0220C44C - mov r3, #7 - bl MOD04_021DAB68 - cmp r0, #0 - bne _021DBAF8 - ldr r0, _021DC670 ; =UNK04_02210484 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r4, [r0, #0x118] - mov r0, r4 - bl strlen - ldr r1, _021DC674 ; =UNK04_02210490 - mov r3, r0 - ldr r0, [r1] - ldr r1, _021DC6AC ; =UNK04_0220C454 - mov r2, r4 - bl MOD04_021DAB68 - cmp r0, #0 - beq _021DBB10 -_021DBAF8: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBB10: - ldr r1, _021DC670 ; =UNK04_02210484 - ldr r0, _021DC6B0 ; =UNK04_0220C464 - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0x1000 - ldr r1, [r1, #0x118] - blx r8 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r0, [r0] - ldr r1, _021DC674 ; =UNK04_02210490 - add r0, r0, #0x1000 - str r2, [r0, #0x118] - ldr r0, [r1] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DBB6C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBB6C: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r2, _021DC674 ; =UNK04_02210490 - sub r1, r0, #1 - ldr r0, [r2] - bl MOD04_021DB4A4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DBBAC - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DBBAC: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DBBD0 - cmp r1, #8 - beq _021DBBFC - b _021DBBE4 -_021DBBD0: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DBBE4: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DBBFC: - bl MOD04_021DAE4C - mov r0, #7 - bl MOD04_021DB730 - b _021DC614 -_021DBC0C: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr fp, [r1, #0xa04] - cmp fp, #0 - bne _021DBC30 - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DBC30: - mov r0, fp - bl strlen - add r1, r0, #1 - ldr r0, _021DC6B4 ; =UNK04_0220C394 - blx sb - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #0x114] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x114] - str r0, [sp, #0xc] - cmp r0, #0 - bne _021DBC80 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DBC80: - mov r0, fp - bl strlen - mov r2, r0 - ldr r0, [sp, #0xc] - mov r1, fp - bl strncpy - b _021DBCB4 -_021DBC9C: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #0xa - bl MOD04_021DB730 - b _021DC614 -_021DBCB4: - ldr r0, [r4] - bl MOD04_021DAE4C - add r0, sp, #0x68 - bl DWCi_BM_GetWiFiInfo - ldr r2, [sp, #0x68] - ldr r1, [sp, #0x6c] - mov r0, #0 - cmp r1, r0 - cmpeq r2, r0 - bne _021DBDEC - ldr r1, [r5] - ldr r0, _021DC6B8 ; =UNK04_022104B0 - add r2, r1, #0x1000 - ldr r1, [sp, #0x20] - str r1, [r2, #4] - ldr r2, [sp, #0x24] - mov r1, r0 - strh r2, [r1] - strb r2, [r1, #0x34] - ldr r2, [r5] - ldr r1, [r4] - add r3, r2, #0x1000 - ldr fp, [r3, #0x108] - mov r2, r0 - str fp, [r2, #0x40] - ldr r3, [r3, #0x10c] - str r3, [r2, #0x44] - bl MOD04_021D9ACC - cmp r0, #0 - beq _021DBD38 - mov r0, #5 - bl MOD04_021DB730 - b _021DC614 -_021DBD38: - bl MOD04_021D98DC - bl MOD04_021D988C - cmp r0, #0x15 - beq _021DBDE8 - bl MOD04_021D988C - cmp r0, #9 - bne _021DBD6C - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - b _021DBDD8 -_021DBD6C: - add r0, sp, #0x7c - bl MOD04_021D97F8 - ldr r0, _021DC6BC ; =UNK04_02210488 - ldr r0, [r0] - cmp r0, #1 - bne _021DBDC4 - ldr r1, [sp, #0x7c] - ldr r0, _021DC6C0 ; =0xFFFFA4FA - cmp r1, r0 - beq _021DBDA0 - bl MOD04_021D988C - cmp r0, #0xb - bne _021DBDC4 -_021DBDA0: - ldr r0, _021DC670 ; =UNK04_02210484 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - bl MOD04_021D991C - mov r0, #0xb - bl MOD04_021DB730 - b _021DC614 -_021DBDC4: - ldr r0, _021DC670 ; =UNK04_02210484 - ldr r1, [sp, #0x7c] - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DBDD8: - bl MOD04_021D991C - mov r0, #6 - bl MOD04_021DB730 - b _021DC614 -_021DBDE8: - bl MOD04_021D991C -_021DBDEC: - cmp sl, #0xc8 - bne _021DBE14 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DBE14: - ldr r0, [r5] - ldr r1, _021DC6A0 ; =UNK04_0220C424 - add r2, r0, #0x1000 - ldr r0, [sp, #0x28] - str r0, [r2, #4] - ldr r0, _021DC678 ; =UNK04_02210494 - ldr r2, [sp, #0x2c] - str sb, [r0, #0xc] - str r2, [r0, #4] - ldr r2, [sp, #0x14] - str r8, [r0, #0x10] - str r2, [r0, #8] - ldr r2, _021DC6C4 ; =0x00009C40 - str r2, [r0, #0x18] - ldr r0, _021DC69C ; =UNK04_0220BEB4 - ldr r2, _021DC678 ; =UNK04_02210494 - ldr r0, [r0] - str r0, [r2] - bl strcmp - cmp r0, #0 - ldrne r0, _021DC678 ; =UNK04_02210494 - ldr r1, _021DC678 ; =UNK04_02210494 - strne r6, [r0, #0x14] - ldr r0, [r4] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DBE98 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBE98: - add r0, sp, #0x240 - bl MOD04_021DA238 - cmp r0, #0 - beq _021DBEC0 - ldr r0, [r4] - add r1, sp, #0x240 - mov r2, r6 - bl MOD04_021D9C2C - cmp r0, #0 - bne _021DBED8 -_021DBEC0: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBED8: - ldr r0, [r4] - ldr r1, _021DC6A4 ; =UNK04_0220C444 - ldr r2, _021DC6C8 ; =UNK04_0220C484 - ldr r3, [sp, #0x30] - bl MOD04_021DAB68 - cmp r0, #0 - bne _021DBF24 - ldr r0, [r5] - add r0, r0, #0x1000 - ldr sl, [r0, #0x114] - mov r0, sl - bl strlen - mov r3, r0 - ldr r0, [r4] - ldr r1, _021DC6CC ; =UNK04_0220C48C - mov r2, sl - bl MOD04_021DAB68 - cmp r0, #0 - beq _021DBF3C -_021DBF24: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DBF3C: - ldr r1, [r5] - ldr r0, _021DC6D0 ; =UNK04_0220C3B0 - add r1, r1, #0x1000 - ldr r2, [sp, #0x34] - ldr r1, [r1, #0x114] - blx r8 - ldr r0, [r5] - add r1, r0, #0x1000 - ldr r0, [sp, #0x38] - str r0, [r1, #0x114] - ldr r0, [r4] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DBF8C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DBF8C: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r4] - bl MOD04_021DB4A4 - ldr r1, [r4] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DBFC4 - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DBFC4: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DC02C - cmp r1, #3 - beq _021DBFEC - cmp r1, #8 - beq _021DC058 - b _021DC040 -_021DBFEC: - bl MOD04_021DAE4C - ldr r0, _021DC6BC ; =UNK04_02210488 - ldr r0, [r0] - cmp r0, #1 - bne _021DC020 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DC020: - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DC02C: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DC040: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DC058: - ldr r1, [sp, #0x3c] - bl MOD04_021DA3DC - cmp r0, #1 - beq _021DC080 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC080: - ldr r0, [r4] - ldr r1, _021DC68C ; =UNK04_0220C418 - bl MOD04_021DA388 - bl atol - mov sl, r0 - ldr r0, _021DC690 ; =errno - ldr r0, [r0] - cmp r0, #0x22 - bne _021DC0BC - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC0BC: - cmp sl, #0xc8 - beq _021DC118 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - ldr r0, _021DC6BC ; =UNK04_02210488 - ldr r0, [r0] - cmp r0, #1 - bne _021DC10C - ldr r0, _021DC694 ; =0x0000012E - cmp sl, r0 - bne _021DC10C - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DC10C: - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC118: - ldr r0, [r4] - ldr r1, _021DC6D4 ; =UNK04_0220C494 - ldr r3, [sp, #0x40] - add r2, sp, #0x64 - bl MOD04_021DA334 - cmp r0, #0 - bgt _021DC14C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC14C: - add r0, sp, #0x64 - bl atol - ldr r1, _021DC690 ; =errno - ldr r1, [r1] - cmp r1, #0x22 - bne _021DC17C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC17C: - ldr r1, _021DC6BC ; =UNK04_02210488 - ldr r1, [r1] - cmp r1, #1 - bne _021DC1B4 - cmp r0, #0x72 - bne _021DC1B4 - ldr r0, _021DC670 ; =UNK04_02210484 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl MOD04_021DB730 - b _021DC614 -_021DC1B4: - cmp r0, #0x64 - blt _021DC1D4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #6 - bl MOD04_021DB730 - b _021DC614 -_021DC1D4: - ldr r2, [sp, #0x44] - ldr r0, [r4] - ldr r1, _021DC6D8 ; =UNK04_0220C4A0 - mov r3, r2 - bl MOD04_021DA334 - mov fp, r0 - cmp fp, #0 - bgt _021DC20C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC20C: - ldr r2, [sp, #0x48] - ldr r0, [r4] - ldr r1, _021DC6DC ; =UNK04_0220C4A4 - mov r3, r2 - bl MOD04_021DA334 - str r0, [sp, #4] - cmp r0, #0 - bgt _021DC244 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC244: - ldr r2, [sp, #0x4c] - ldr r0, [r4] - ldr r1, _021DC6E0 ; =UNK04_0220C4AC - mov r3, r2 - bl MOD04_021DA334 - mov sl, r0 - ldr r0, _021DC6E4 ; =UNK04_0220C3CC - add r1, fp, #1 - blx sb - str r0, [sp] - cmp r0, #0 - bne _021DC28C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC28C: - ldr r1, [sp, #4] - ldr r0, _021DC6E8 ; =UNK04_0220C3D8 - add r1, r1, #1 - blx sb - movs r7, r0 - bne _021DC2BC - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC2BC: - cmp sl, #0 - ble _021DC2F4 - ldr r0, _021DC6EC ; =UNK04_0220C3E8 - add r1, sl, #1 - blx sb - str r0, [sp, #8] - cmp r0, #0 - bne _021DC2F4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC2F4: - ldr r0, [r4] - ldr r1, _021DC6D8 ; =UNK04_0220C4A0 - ldr r2, [sp] - add r3, fp, #1 - bl MOD04_021DA334 - cmp r0, #0 - bge _021DC328 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC328: - ldr r1, [sp, #4] - ldr r2, [sp, #0x50] - add r3, r1, #1 - ldr r1, [sp] - strb r2, [r1, r0] - ldr r0, [r4] - ldr r1, _021DC6DC ; =UNK04_0220C4A4 - mov r2, r7 - bl MOD04_021DA334 - cmp r0, #0 - bge _021DC36C - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC36C: - ldr r1, [sp, #0x54] - cmp sl, #0 - strb r1, [r7, r0] - mov fp, r1 - ble _021DC404 - ldr r0, [r4] - ldr r1, _021DC6E0 ; =UNK04_0220C4AC - ldr r2, [sp, #8] - add r3, sl, #1 - bl MOD04_021DA334 - cmp r0, #0 - bge _021DC3B4 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC3B4: - ldr r2, [sp, #0x58] - ldr r1, [sp, #8] - strb r2, [r1, r0] - mov r0, r1 - bl atol - ldr r1, _021DC690 ; =errno - ldr r1, [r1] - cmp r1, #0x22 - bne _021DC3F0 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #9 - bl MOD04_021DB730 - b _021DC614 -_021DC3F0: - mov r1, #0x3e8 - mul fp, r0, r1 - ldr r0, _021DC6F0 ; =0x0002BF20 - cmp fp, r0 - movgt fp, r0 -_021DC404: - ldr r0, [r4] - bl MOD04_021DAE4C - ldr r0, [r5] - ldr r1, _021DC678 ; =UNK04_02210494 - add r2, r0, #0x1000 - ldr r0, [sp, #0x5c] - str r0, [r2, #4] - mov r0, r1 - ldr r2, [sp] - str sb, [r0, #0xc] - str r2, [r0] - ldr r2, [sp, #0x60] - str r8, [r0, #0x10] - str r2, [r0, #4] - ldr r2, [sp, #0x14] - str r2, [r0, #8] - ldr r2, _021DC6F4 ; =0x0001D4C0 - str r2, [r0, #0x18] - ldr r0, [r4] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DC474 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DC474: - ldr r0, [r4] - mov r1, r7 - bl MOD04_021DAACC - cmp r0, #0 - beq _021DC4A0 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #8 - bl MOD04_021DB730 - b _021DC614 -_021DC4A0: - ldr r0, [r4] - bl MOD04_021DB570 - cmp r0, #0 - beq _021DC4C8 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #1 - bl MOD04_021DB730 - b _021DC614 -_021DC4C8: - ldr r0, _021DC684 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r4] - bl MOD04_021DB4A4 - ldr r1, [r4] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - beq _021DC500 - ldr r0, _021DC688 ; =0x00001B34 - add r0, r1, r0 - bl OS_JoinThread -_021DC500: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021DC520 - cmp r1, #8 - beq _021DC54C - b _021DC534 -_021DC520: - ldr r0, _021DC670 ; =UNK04_02210484 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021DC534: - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #3 - bl MOD04_021DB730 - b _021DC614 -_021DC54C: - mov r1, r6 - bl MOD04_021DA3DC - cmp r0, #1 - beq _021DC574 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC574: - ldr r0, [r4] - add r1, r0, #0x1000 - ldr sl, [r1, #0xa04] - cmp sl, #0 - bne _021DC598 - bl MOD04_021DAE4C - mov r0, #2 - bl MOD04_021DB730 - b _021DC614 -_021DC598: - mov r0, sl - bl strlen - add r1, r0, #1 - ldr r0, _021DC6F8 ; =UNK04_0220C3F8 - blx sb - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #0x118] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x118] - str r0, [sp, #0x10] - cmp r0, #0 - bne _021DC5E8 - ldr r0, _021DC674 ; =UNK04_02210490 - ldr r0, [r0] - bl MOD04_021DAE4C - mov r0, #4 - bl MOD04_021DB730 - b _021DC614 -_021DC5E8: - mov r0, sl - bl strlen - mov r2, r0 - ldr r0, [sp, #0x10] - mov r1, sl - bl strncpy - ldr r0, [r4] - bl MOD04_021DAE4C - mov r0, fp - bl OS_Sleep - b _021DB830 -_021DC614: - ldr r0, [sp] - cmp r0, #0 - beq _021DC630 - ldr r0, _021DC6FC ; =UNK04_0220C4B4 - ldr r1, [sp] - mov r2, #0 - blx r8 -_021DC630: - cmp r7, #0 - beq _021DC648 - ldr r0, _021DC700 ; =UNK04_0220C4C0 - mov r1, r7 - mov r2, #0 - blx r8 -_021DC648: - ldr r0, [sp, #8] - cmp r0, #0 - addeq sp, sp, #0x2d4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _021DC704 ; =UNK04_0220C4CC - ldr r1, [sp, #8] - mov r2, #0 - blx r8 - add sp, sp, #0x2d4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DC670: .word UNK04_02210484 -_021DC674: .word UNK04_02210490 -_021DC678: .word UNK04_02210494 -_021DC67C: .word 0x00004E20 -_021DC680: .word UNK04_0220C36C -_021DC684: .word OSi_ThreadInfo -_021DC688: .word 0x00001B34 -_021DC68C: .word UNK04_0220C418 -_021DC690: .word errno -_021DC694: .word 0x0000012E -_021DC698: .word UNK04_0221048C -_021DC69C: .word UNK04_0220BEB4 -_021DC6A0: .word UNK04_0220C424 -_021DC6A4: .word UNK04_0220C444 -_021DC6A8: .word UNK04_0220C44C -_021DC6AC: .word UNK04_0220C454 -_021DC6B0: .word UNK04_0220C464 -_021DC6B4: .word UNK04_0220C394 -_021DC6B8: .word UNK04_022104B0 -_021DC6BC: .word UNK04_02210488 -_021DC6C0: .word 0xFFFFA4FA -_021DC6C4: .word 0x00009C40 -_021DC6C8: .word UNK04_0220C484 -_021DC6CC: .word UNK04_0220C48C -_021DC6D0: .word UNK04_0220C3B0 -_021DC6D4: .word UNK04_0220C494 -_021DC6D8: .word UNK04_0220C4A0 -_021DC6DC: .word UNK04_0220C4A4 -_021DC6E0: .word UNK04_0220C4AC -_021DC6E4: .word UNK04_0220C3CC -_021DC6E8: .word UNK04_0220C3D8 -_021DC6EC: .word UNK04_0220C3E8 -_021DC6F0: .word 0x0002BF20 -_021DC6F4: .word 0x0001D4C0 -_021DC6F8: .word UNK04_0220C3F8 -_021DC6FC: .word UNK04_0220C4B4 -_021DC700: .word UNK04_0220C4C0 -_021DC704: .word UNK04_0220C4CC - arm_func_end MOD04_021DB778 - - arm_func_start MOD04_021DC708 -MOD04_021DC708: ; 0x021DC708 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _021DC788 ; =UNK04_02210484 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _021DC740 - ldr r0, _021DC78C ; =0x0000111C - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {pc} -_021DC740: - ldr r1, _021DC788 ; =UNK04_02210484 - ldr r0, _021DC78C ; =0x0000111C - ldr r2, [r1] - mov r3, #0x1000 - ldr r1, _021DC790 ; =MOD04_021DB778 - str r3, [sp] - mov ip, #0x10 - add r0, r2, r0 - add r3, r2, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r1, _021DC788 ; =UNK04_02210484 - ldr r0, _021DC78C ; =0x0000111C - ldr r1, [r1] - add r0, r1, r0 - bl OS_WakeupThreadDirect - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021DC788: .word UNK04_02210484 -_021DC78C: .word 0x0000111C -_021DC790: .word MOD04_021DB778 - arm_func_end MOD04_021DC708 - - arm_func_start MOD04_021DC794 -MOD04_021DC794: ; 0x021DC794 - ldr r0, _021DC7A8 ; =UNK04_02210484 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_021DC7A8: .word UNK04_02210484 - arm_func_end MOD04_021DC794 - - arm_func_start MOD04_021DC7AC -MOD04_021DC7AC: ; 0x021DC7AC - stmdb sp!, {r4, lr} - ldr r1, _021DC7E8 ; =UNK04_02210484 - ldr r0, _021DC7EC ; =0x000011DC - ldr r1, [r1] - add r0, r1, r0 - bl OS_LockMutex - ldr r1, _021DC7E8 ; =UNK04_02210484 - ldr r0, _021DC7EC ; =0x000011DC - ldr r2, [r1] - add r1, r2, #0x1000 - add r0, r2, r0 - ldr r4, [r1] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DC7E8: .word UNK04_02210484 -_021DC7EC: .word 0x000011DC - arm_func_end MOD04_021DC7AC - - arm_func_start MOD04_021DC7F0 -MOD04_021DC7F0: ; 0x021DC7F0 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DC864 ; =UNK04_02210484 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DC868 ; =UNK04_02210490 - ldr r0, [r0] - cmp r0, #0 - beq _021DC820 - bl MOD04_021DB440 -_021DC820: - bl MOD04_021D9974 - ldr r0, _021DC864 ; =UNK04_02210484 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _021DC848 - ldr r0, _021DC86C ; =0x0000111C - add r0, r1, r0 - bl OS_JoinThread -_021DC848: - ldr r0, _021DC864 ; =UNK04_02210484 - mvn r1, #6 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DC864: .word UNK04_02210484 -_021DC868: .word UNK04_02210490 -_021DC86C: .word 0x0000111C - arm_func_end MOD04_021DC7F0 - - arm_func_start MOD04_021DC870 -MOD04_021DC870: ; 0x021DC870 - stmdb sp!, {r4, lr} - ldr r1, _021DC958 ; =UNK04_02210484 - ldr r0, _021DC95C ; =UNK04_02210490 - ldr r1, [r1] - ldr r0, [r0] - add r1, r1, #0x1000 - cmp r0, #0 - ldr r4, [r1, #0x10c] - beq _021DC8B8 - bl MOD04_021DAE4C - ldr r1, _021DC95C ; =UNK04_02210490 - ldr r0, _021DC960 ; =UNK04_0220C4D8 - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _021DC95C ; =UNK04_02210490 - mov r1, #0 - str r1, [r0] -_021DC8B8: - bl MOD04_021D991C - ldr r0, _021DC958 ; =UNK04_02210484 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r0, #0x1000 - ldr r1, [r0, #0x114] - cmp r1, #0 - beq _021DC8FC - ldr r0, _021DC964 ; =UNK04_0220C3B0 - mov r2, #0 - blx r4 - ldr r0, _021DC958 ; =UNK04_02210484 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #0x114] -_021DC8FC: - ldr r0, _021DC958 ; =UNK04_02210484 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _021DC934 - ldr r0, _021DC968 ; =UNK04_0220C464 - mov r2, #0 - blx r4 - ldr r0, _021DC958 ; =UNK04_02210484 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #0x118] -_021DC934: - ldr r1, _021DC958 ; =UNK04_02210484 - ldr r0, _021DC96C ; =UNK04_0220C4E8 - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _021DC958 ; =UNK04_02210484 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_021DC958: .word UNK04_02210484 -_021DC95C: .word UNK04_02210490 -_021DC960: .word UNK04_0220C4D8 -_021DC964: .word UNK04_0220C3B0 -_021DC968: .word UNK04_0220C464 -_021DC96C: .word UNK04_0220C4E8 - arm_func_end MOD04_021DC870 - - arm_func_start MOD04_021DC970 -MOD04_021DC970: ; 0x021DC970 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r1, _021DCA5C ; =UNK04_02210484 - mov r5, r0 - ldr r0, [r1] - ldr r4, [r5] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #4 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021DCA60 ; =UNK04_0220C4FC - ldr r1, _021DCA64 ; =0x000011F4 - blx r4 - ldr r1, _021DCA5C ; =UNK04_02210484 - cmp r0, #0 - str r0, [r1] - addeq sp, sp, #4 - moveq r0, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r2, _021DCA64 ; =0x000011F4 - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021DCA5C ; =UNK04_02210484 - ldr r2, _021DCA68 ; =0xFFFE7961 - ldr r0, [r1] - ldr r3, _021DCA6C ; =0x00001108 - add r0, r0, #0x1000 - str r2, [r0, #4] - ldr ip, [r1] - ldmia r5, {r0, r1, r2} - add r3, ip, r3 - stmia r3, {r0, r1, r2} - ldr r0, _021DCA70 ; =UNK04_02210490 - ldr r0, [r0] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #4 - ldmneia sp!, {r4, r5, pc} - ldr r0, _021DCA74 ; =UNK04_0220C510 - ldr r1, _021DCA78 ; =0x00001C10 - blx r4 - ldr r1, _021DCA70 ; =UNK04_02210490 - cmp r0, #0 - str r0, [r1] - addeq sp, sp, #4 - moveq r0, #4 - ldmeqia sp!, {r4, r5, pc} - ldr r1, _021DCA5C ; =UNK04_02210484 - ldr r0, _021DCA7C ; =0x000011DC - ldr r2, [r1] - ldr r1, _021DCA80 ; =UNK04_0221048C - mov r3, #0 - add r0, r2, r0 - str r3, [r1] - bl OS_InitMutex - bl MOD04_021DC708 - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DCA5C: .word UNK04_02210484 -_021DCA60: .word UNK04_0220C4FC -_021DCA64: .word 0x000011F4 -_021DCA68: .word 0xFFFE7961 -_021DCA6C: .word 0x00001108 -_021DCA70: .word UNK04_02210490 -_021DCA74: .word UNK04_0220C510 -_021DCA78: .word 0x00001C10 -_021DCA7C: .word 0x000011DC -_021DCA80: .word UNK04_0221048C - arm_func_end MOD04_021DC970 - arm_func_start MOD04_021DCA84 MOD04_021DCA84: ; 0x021DCA84 stmdb sp!, {r4, r5, r6, r7, r8, lr} @@ -57015,12 +55657,13 @@ _0220BAB8: arm_func_end MOD04_url_strlen .section .rodata - .global UNK_0220BAC4 + + .global UNK04_0220BAC4 UNK04_0220BAC4: ; 0x0220BAC4 .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global UNK_0220BADC + .global UNK04_0220BADC UNK04_0220BADC: ; 0x0220BADC .byte 0x57, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x32 @@ -57172,124 +55815,7 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220C36C -UNK04_0220C36C: ; 0x0220C36C - .word UNK04_0220C370 - - .global UNK_0220C370 -UNK04_0220C370: ; 0x0220C370 - .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x74 - .byte 0x65, 0x73, 0x74, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69 - .byte 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x00, 0x00, 0x00 - - .global UNK_0220C394 -UNK04_0220C394: ; 0x0220C394 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00 - - .global UNK_0220C3B0 -UNK04_0220C3B0: ; 0x0220C3B0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B - .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00, 0x00 - - .global UNK_0220C3CC -UNK04_0220C3CC: ; 0x0220C3CC - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00 - - .global UNK_0220C3D8 -UNK04_0220C3D8: ; 0x0220C3D8 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00 - - .global UNK_0220C3E8 -UNK04_0220C3E8: ; 0x0220C3E8 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00 - - .global UNK_0220C3F8 -UNK04_0220C3F8: ; 0x0220C3F8 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00 - - .global UNK_0220C418 -UNK04_0220C418: ; 0x0220C418 - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220C424 -UNK04_0220C424: ; 0x0220C424 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 - .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 - - .global UNK_0220C444 -UNK04_0220C444: ; 0x0220C444 - .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220C44C -UNK04_0220C44C: ; 0x0220C44C - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 - - .global UNK_0220C454 -UNK04_0220C454: ; 0x0220C454 - .byte 0x48, 0x6F, 0x74, 0x53, 0x70, 0x6F, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00 - - .global UNK_0220C464 -UNK04_0220C464: ; 0x0220C464 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B - .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x00 - - .global UNK_0220C484 -UNK04_0220C484: ; 0x0220C484 - .byte 0x70, 0x61, 0x72, 0x73, 0x65, 0x00, 0x00, 0x00 - - .global UNK_0220C48C -UNK04_0220C48C: ; 0x0220C48C - .byte 0x48, 0x54, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C494 -UNK04_0220C494: ; 0x0220C494 - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4A0 -UNK04_0220C4A0: ; 0x0220C4A0 - .byte 0x75, 0x72, 0x6C, 0x00 - - .global UNK_0220C4A4 -UNK04_0220C4A4: ; 0x0220C4A4 - .byte 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4AC -UNK04_0220C4AC: ; 0x0220C4AC - .byte 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4B4 -UNK04_0220C4B4: ; 0x0220C4B4 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4C0 -UNK04_0220C4C0: ; 0x0220C4C0 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00 - - .global UNK_0220C4CC -UNK04_0220C4CC: ; 0x0220C4CC - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00 - - .global UNK_0220C4D8 -UNK04_0220C4D8: ; 0x0220C4D8 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4E8 -UNK04_0220C4E8: ; 0x0220C4E8 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C4FC -UNK04_0220C4FC: ; 0x0220C4FC - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x00, 0x00, 0x00 - - .global UNK_0220C510 -UNK04_0220C510: ; 0x0220C510 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00 - - .global UNK_0220C520 + .global UNK04_0220C520 UNK04_0220C520: ; 0x0220C520 .byte 0x44, 0x65, 0x63, 0x00 @@ -60465,18 +58991,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210490 -UNK04_02210490: ; 0x02210490 - .space 0x4 - - .global UNK04_02210494 -UNK04_02210494: ; 0x02210494 - .space 0x1C - - .global UNK04_022104B0 -UNK04_022104B0: ; 0x022104B0 - .space 0x48 - .global UNK04_022104F8 UNK04_022104F8: ; 0x022104F8 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DB730.s b/arm9/modules/04/asm/mod04_021DB730.s new file mode 100644 index 00000000..c506ed71 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DB730.s @@ -0,0 +1,1512 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DB730 +MOD04_021DB730: ; 0x021DB730 + stmdb sp!, {r4, lr} + ldr r2, _021DB770 ; =UNK04_02210484 + ldr r1, _021DB774 ; =0x000011DC + ldr r2, [r2] + mov r4, r0 + add r0, r2, r1 + bl OS_LockMutex + ldr r2, _021DB770 ; =UNK04_02210484 + ldr r1, _021DB774 ; =0x000011DC + ldr r0, [r2] + add r0, r0, #0x1000 + str r4, [r0] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB770: .word UNK04_02210484 +_021DB774: .word 0x000011DC + arm_func_end MOD04_021DB730 + + arm_func_start MOD04_021DB778 +MOD04_021DB778: ; 0x021DB778 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2d4 + ldr r5, _021DC670 ; =UNK04_02210484 + mov r0, #0 + str r0, [sp] + ldr r0, [r5] + ldr r7, [sp] + add r0, r0, #0x1000 + ldr sb, [r0, #0x108] + ldr r8, [r0, #0x10c] + mov r0, r7 + str r0, [sp, #8] + str r0, [sp, #0x1c] + mvn r0, #2 + str r0, [sp, #0x20] + mov r0, r7 + str r0, [sp, #0x24] + mvn r0, #3 + str r0, [sp, #0x28] + mov r0, r7 + str r0, [sp, #0x2c] + mov r0, #0x1000 + str r0, [sp, #0x14] + mov r0, #5 + str r0, [sp, #0x30] + mov r0, r7 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + mov r0, #4 + str r0, [sp, #0x40] + mov r0, r7 + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + str r0, [sp, #0x50] + str r0, [sp, #0x58] + str r0, [sp, #0x54] + mvn r0, #4 + str r0, [sp, #0x5c] + mov r0, r7 + str r0, [sp, #0x60] + mvn r0, #1 + ldr r4, _021DC674 ; =UNK04_02210490 + mov r6, #1 + str r0, [sp, #0x18] +_021DB830: + ldr r0, _021DC678 ; =UNK04_02210494 + ldr r1, [sp, #0x14] + str r6, [r0, #4] + str r1, [r0, #8] + ldr r1, _021DC67C ; =0x00004E20 + str sb, [r0, #0xc] + str r1, [r0, #0x18] + str r8, [r0, #0x10] + ldr r0, _021DC680 ; =UNK04_0220C36C + ldr r1, [r5] + ldr r2, [r0] + ldr r0, _021DC678 ; =UNK04_02210494 + add r1, r1, #0x1000 + str r2, [r0] + ldr r0, [sp, #0x18] + str r0, [r1, #4] + ldr r0, [r4] + ldr r1, _021DC678 ; =UNK04_02210494 + bl MOD04_021DB608 + cmp r0, #0 + beq _021DB89C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DB89C: + ldr r0, [r4] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DB8C4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DB8C4: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl MOD04_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DB8FC + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DB8FC: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DB91C + cmp r1, #8 + beq _021DB948 + b _021DB930 +_021DB91C: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DB930: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DB948: + ldr r1, [sp, #0x1c] + bl MOD04_021DA3DC + cmp r0, #1 + beq _021DB970 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DB970: + ldr r0, [r4] + ldr r1, _021DC68C ; =UNK04_0220C418 + bl MOD04_021DA388 + bl atol + mov sl, r0 + ldr r0, _021DC690 ; =errno + ldr r0, [r0] + cmp r0, #0x22 + bne _021DB9A0 + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DB9A0: + cmp sl, #0xc8 + beq _021DBCB4 + ldr r0, _021DC694 ; =0x0000012E + cmp sl, r0 + bne _021DBC9C + ldr r0, _021DC698 ; =UNK04_0221048C + str r6, [r0] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _021DBC0C + ldr r1, _021DC674 ; =UNK04_02210490 + mvn r2, #5 + str r2, [r0, #4] + ldr r0, [r1] + bl MOD04_021DAE4C + ldr r2, _021DC678 ; =UNK04_02210494 + ldr r0, _021DC69C ; =UNK04_0220BEB4 + ldr r3, _021DC67C ; =0x00004E20 + ldr r0, [r0] + mov r5, #0 + mov r4, #0x200 + ldr r1, _021DC6A0 ; =UNK04_0220C424 + str r0, [r2] + str r5, [r2, #4] + str r4, [r2, #8] + str sb, [r2, #0xc] + str r8, [r2, #0x10] + str r3, [r2, #0x18] + bl strcmp + cmp r0, #0 + ldrne r0, _021DC678 ; =UNK04_02210494 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r1, _021DC678 ; =UNK04_02210494 + ldr r0, [r0] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DBA5C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBA5C: + add r0, sp, #0x240 + bl MOD04_021DA238 + cmp r0, #0 + beq _021DBA88 + ldr r0, _021DC674 ; =UNK04_02210490 + add r1, sp, #0x240 + ldr r0, [r0] + mov r2, #1 + bl MOD04_021D9C2C + cmp r0, #0 + bne _021DBAA0 +_021DBA88: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBAA0: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r1, _021DC6A4 ; =UNK04_0220C444 + ldr r0, [r0] + ldr r2, _021DC6A8 ; =UNK04_0220C44C + mov r3, #7 + bl MOD04_021DAB68 + cmp r0, #0 + bne _021DBAF8 + ldr r0, _021DC670 ; =UNK04_02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r4, [r0, #0x118] + mov r0, r4 + bl strlen + ldr r1, _021DC674 ; =UNK04_02210490 + mov r3, r0 + ldr r0, [r1] + ldr r1, _021DC6AC ; =UNK04_0220C454 + mov r2, r4 + bl MOD04_021DAB68 + cmp r0, #0 + beq _021DBB10 +_021DBAF8: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBB10: + ldr r1, _021DC670 ; =UNK04_02210484 + ldr r0, _021DC6B0 ; =UNK04_0220C464 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0x1000 + ldr r1, [r1, #0x118] + blx r8 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r0, [r0] + ldr r1, _021DC674 ; =UNK04_02210490 + add r0, r0, #0x1000 + str r2, [r0, #0x118] + ldr r0, [r1] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DBB6C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBB6C: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r2, _021DC674 ; =UNK04_02210490 + sub r1, r0, #1 + ldr r0, [r2] + bl MOD04_021DB4A4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DBBAC + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DBBAC: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DBBD0 + cmp r1, #8 + beq _021DBBFC + b _021DBBE4 +_021DBBD0: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DBBE4: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DBBFC: + bl MOD04_021DAE4C + mov r0, #7 + bl MOD04_021DB730 + b _021DC614 +_021DBC0C: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr fp, [r1, #0xa04] + cmp fp, #0 + bne _021DBC30 + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DBC30: + mov r0, fp + bl strlen + add r1, r0, #1 + ldr r0, _021DC6B4 ; =UNK04_0220C394 + blx sb + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x114] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x114] + str r0, [sp, #0xc] + cmp r0, #0 + bne _021DBC80 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DBC80: + mov r0, fp + bl strlen + mov r2, r0 + ldr r0, [sp, #0xc] + mov r1, fp + bl strncpy + b _021DBCB4 +_021DBC9C: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #0xa + bl MOD04_021DB730 + b _021DC614 +_021DBCB4: + ldr r0, [r4] + bl MOD04_021DAE4C + add r0, sp, #0x68 + bl DWCi_BM_GetWiFiInfo + ldr r2, [sp, #0x68] + ldr r1, [sp, #0x6c] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + bne _021DBDEC + ldr r1, [r5] + ldr r0, _021DC6B8 ; =UNK04_022104B0 + add r2, r1, #0x1000 + ldr r1, [sp, #0x20] + str r1, [r2, #4] + ldr r2, [sp, #0x24] + mov r1, r0 + strh r2, [r1] + strb r2, [r1, #0x34] + ldr r2, [r5] + ldr r1, [r4] + add r3, r2, #0x1000 + ldr fp, [r3, #0x108] + mov r2, r0 + str fp, [r2, #0x40] + ldr r3, [r3, #0x10c] + str r3, [r2, #0x44] + bl MOD04_021D9ACC + cmp r0, #0 + beq _021DBD38 + mov r0, #5 + bl MOD04_021DB730 + b _021DC614 +_021DBD38: + bl MOD04_021D98DC + bl MOD04_021D988C + cmp r0, #0x15 + beq _021DBDE8 + bl MOD04_021D988C + cmp r0, #9 + bne _021DBD6C + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + b _021DBDD8 +_021DBD6C: + add r0, sp, #0x7c + bl MOD04_021D97F8 + ldr r0, _021DC6BC ; =UNK04_02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DBDC4 + ldr r1, [sp, #0x7c] + ldr r0, _021DC6C0 ; =0xFFFFA4FA + cmp r1, r0 + beq _021DBDA0 + bl MOD04_021D988C + cmp r0, #0xb + bne _021DBDC4 +_021DBDA0: + ldr r0, _021DC670 ; =UNK04_02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + bl MOD04_021D991C + mov r0, #0xb + bl MOD04_021DB730 + b _021DC614 +_021DBDC4: + ldr r0, _021DC670 ; =UNK04_02210484 + ldr r1, [sp, #0x7c] + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DBDD8: + bl MOD04_021D991C + mov r0, #6 + bl MOD04_021DB730 + b _021DC614 +_021DBDE8: + bl MOD04_021D991C +_021DBDEC: + cmp sl, #0xc8 + bne _021DBE14 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DBE14: + ldr r0, [r5] + ldr r1, _021DC6A0 ; =UNK04_0220C424 + add r2, r0, #0x1000 + ldr r0, [sp, #0x28] + str r0, [r2, #4] + ldr r0, _021DC678 ; =UNK04_02210494 + ldr r2, [sp, #0x2c] + str sb, [r0, #0xc] + str r2, [r0, #4] + ldr r2, [sp, #0x14] + str r8, [r0, #0x10] + str r2, [r0, #8] + ldr r2, _021DC6C4 ; =0x00009C40 + str r2, [r0, #0x18] + ldr r0, _021DC69C ; =UNK04_0220BEB4 + ldr r2, _021DC678 ; =UNK04_02210494 + ldr r0, [r0] + str r0, [r2] + bl strcmp + cmp r0, #0 + ldrne r0, _021DC678 ; =UNK04_02210494 + ldr r1, _021DC678 ; =UNK04_02210494 + strne r6, [r0, #0x14] + ldr r0, [r4] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DBE98 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBE98: + add r0, sp, #0x240 + bl MOD04_021DA238 + cmp r0, #0 + beq _021DBEC0 + ldr r0, [r4] + add r1, sp, #0x240 + mov r2, r6 + bl MOD04_021D9C2C + cmp r0, #0 + bne _021DBED8 +_021DBEC0: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBED8: + ldr r0, [r4] + ldr r1, _021DC6A4 ; =UNK04_0220C444 + ldr r2, _021DC6C8 ; =UNK04_0220C484 + ldr r3, [sp, #0x30] + bl MOD04_021DAB68 + cmp r0, #0 + bne _021DBF24 + ldr r0, [r5] + add r0, r0, #0x1000 + ldr sl, [r0, #0x114] + mov r0, sl + bl strlen + mov r3, r0 + ldr r0, [r4] + ldr r1, _021DC6CC ; =UNK04_0220C48C + mov r2, sl + bl MOD04_021DAB68 + cmp r0, #0 + beq _021DBF3C +_021DBF24: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DBF3C: + ldr r1, [r5] + ldr r0, _021DC6D0 ; =UNK04_0220C3B0 + add r1, r1, #0x1000 + ldr r2, [sp, #0x34] + ldr r1, [r1, #0x114] + blx r8 + ldr r0, [r5] + add r1, r0, #0x1000 + ldr r0, [sp, #0x38] + str r0, [r1, #0x114] + ldr r0, [r4] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DBF8C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DBF8C: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl MOD04_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DBFC4 + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DBFC4: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DC02C + cmp r1, #3 + beq _021DBFEC + cmp r1, #8 + beq _021DC058 + b _021DC040 +_021DBFEC: + bl MOD04_021DAE4C + ldr r0, _021DC6BC ; =UNK04_02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DC020 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DC020: + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DC02C: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DC040: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DC058: + ldr r1, [sp, #0x3c] + bl MOD04_021DA3DC + cmp r0, #1 + beq _021DC080 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC080: + ldr r0, [r4] + ldr r1, _021DC68C ; =UNK04_0220C418 + bl MOD04_021DA388 + bl atol + mov sl, r0 + ldr r0, _021DC690 ; =errno + ldr r0, [r0] + cmp r0, #0x22 + bne _021DC0BC + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC0BC: + cmp sl, #0xc8 + beq _021DC118 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + ldr r0, _021DC6BC ; =UNK04_02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DC10C + ldr r0, _021DC694 ; =0x0000012E + cmp sl, r0 + bne _021DC10C + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DC10C: + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC118: + ldr r0, [r4] + ldr r1, _021DC6D4 ; =UNK04_0220C494 + ldr r3, [sp, #0x40] + add r2, sp, #0x64 + bl MOD04_021DA334 + cmp r0, #0 + bgt _021DC14C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC14C: + add r0, sp, #0x64 + bl atol + ldr r1, _021DC690 ; =errno + ldr r1, [r1] + cmp r1, #0x22 + bne _021DC17C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC17C: + ldr r1, _021DC6BC ; =UNK04_02210488 + ldr r1, [r1] + cmp r1, #1 + bne _021DC1B4 + cmp r0, #0x72 + bne _021DC1B4 + ldr r0, _021DC670 ; =UNK04_02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl MOD04_021DB730 + b _021DC614 +_021DC1B4: + cmp r0, #0x64 + blt _021DC1D4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #6 + bl MOD04_021DB730 + b _021DC614 +_021DC1D4: + ldr r2, [sp, #0x44] + ldr r0, [r4] + ldr r1, _021DC6D8 ; =UNK04_0220C4A0 + mov r3, r2 + bl MOD04_021DA334 + mov fp, r0 + cmp fp, #0 + bgt _021DC20C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC20C: + ldr r2, [sp, #0x48] + ldr r0, [r4] + ldr r1, _021DC6DC ; =UNK04_0220C4A4 + mov r3, r2 + bl MOD04_021DA334 + str r0, [sp, #4] + cmp r0, #0 + bgt _021DC244 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC244: + ldr r2, [sp, #0x4c] + ldr r0, [r4] + ldr r1, _021DC6E0 ; =UNK04_0220C4AC + mov r3, r2 + bl MOD04_021DA334 + mov sl, r0 + ldr r0, _021DC6E4 ; =UNK04_0220C3CC + add r1, fp, #1 + blx sb + str r0, [sp] + cmp r0, #0 + bne _021DC28C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC28C: + ldr r1, [sp, #4] + ldr r0, _021DC6E8 ; =UNK04_0220C3D8 + add r1, r1, #1 + blx sb + movs r7, r0 + bne _021DC2BC + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC2BC: + cmp sl, #0 + ble _021DC2F4 + ldr r0, _021DC6EC ; =UNK04_0220C3E8 + add r1, sl, #1 + blx sb + str r0, [sp, #8] + cmp r0, #0 + bne _021DC2F4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC2F4: + ldr r0, [r4] + ldr r1, _021DC6D8 ; =UNK04_0220C4A0 + ldr r2, [sp] + add r3, fp, #1 + bl MOD04_021DA334 + cmp r0, #0 + bge _021DC328 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC328: + ldr r1, [sp, #4] + ldr r2, [sp, #0x50] + add r3, r1, #1 + ldr r1, [sp] + strb r2, [r1, r0] + ldr r0, [r4] + ldr r1, _021DC6DC ; =UNK04_0220C4A4 + mov r2, r7 + bl MOD04_021DA334 + cmp r0, #0 + bge _021DC36C + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC36C: + ldr r1, [sp, #0x54] + cmp sl, #0 + strb r1, [r7, r0] + mov fp, r1 + ble _021DC404 + ldr r0, [r4] + ldr r1, _021DC6E0 ; =UNK04_0220C4AC + ldr r2, [sp, #8] + add r3, sl, #1 + bl MOD04_021DA334 + cmp r0, #0 + bge _021DC3B4 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC3B4: + ldr r2, [sp, #0x58] + ldr r1, [sp, #8] + strb r2, [r1, r0] + mov r0, r1 + bl atol + ldr r1, _021DC690 ; =errno + ldr r1, [r1] + cmp r1, #0x22 + bne _021DC3F0 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #9 + bl MOD04_021DB730 + b _021DC614 +_021DC3F0: + mov r1, #0x3e8 + mul fp, r0, r1 + ldr r0, _021DC6F0 ; =0x0002BF20 + cmp fp, r0 + movgt fp, r0 +_021DC404: + ldr r0, [r4] + bl MOD04_021DAE4C + ldr r0, [r5] + ldr r1, _021DC678 ; =UNK04_02210494 + add r2, r0, #0x1000 + ldr r0, [sp, #0x5c] + str r0, [r2, #4] + mov r0, r1 + ldr r2, [sp] + str sb, [r0, #0xc] + str r2, [r0] + ldr r2, [sp, #0x60] + str r8, [r0, #0x10] + str r2, [r0, #4] + ldr r2, [sp, #0x14] + str r2, [r0, #8] + ldr r2, _021DC6F4 ; =0x0001D4C0 + str r2, [r0, #0x18] + ldr r0, [r4] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DC474 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DC474: + ldr r0, [r4] + mov r1, r7 + bl MOD04_021DAACC + cmp r0, #0 + beq _021DC4A0 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #8 + bl MOD04_021DB730 + b _021DC614 +_021DC4A0: + ldr r0, [r4] + bl MOD04_021DB570 + cmp r0, #0 + beq _021DC4C8 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #1 + bl MOD04_021DB730 + b _021DC614 +_021DC4C8: + ldr r0, _021DC684 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl MOD04_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DC500 + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DC500: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DC520 + cmp r1, #8 + beq _021DC54C + b _021DC534 +_021DC520: + ldr r0, _021DC670 ; =UNK04_02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DC534: + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #3 + bl MOD04_021DB730 + b _021DC614 +_021DC54C: + mov r1, r6 + bl MOD04_021DA3DC + cmp r0, #1 + beq _021DC574 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC574: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr sl, [r1, #0xa04] + cmp sl, #0 + bne _021DC598 + bl MOD04_021DAE4C + mov r0, #2 + bl MOD04_021DB730 + b _021DC614 +_021DC598: + mov r0, sl + bl strlen + add r1, r0, #1 + ldr r0, _021DC6F8 ; =UNK04_0220C3F8 + blx sb + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x118] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x118] + str r0, [sp, #0x10] + cmp r0, #0 + bne _021DC5E8 + ldr r0, _021DC674 ; =UNK04_02210490 + ldr r0, [r0] + bl MOD04_021DAE4C + mov r0, #4 + bl MOD04_021DB730 + b _021DC614 +_021DC5E8: + mov r0, sl + bl strlen + mov r2, r0 + ldr r0, [sp, #0x10] + mov r1, sl + bl strncpy + ldr r0, [r4] + bl MOD04_021DAE4C + mov r0, fp + bl OS_Sleep + b _021DB830 +_021DC614: + ldr r0, [sp] + cmp r0, #0 + beq _021DC630 + ldr r0, _021DC6FC ; =UNK04_0220C4B4 + ldr r1, [sp] + mov r2, #0 + blx r8 +_021DC630: + cmp r7, #0 + beq _021DC648 + ldr r0, _021DC700 ; =UNK04_0220C4C0 + mov r1, r7 + mov r2, #0 + blx r8 +_021DC648: + ldr r0, [sp, #8] + cmp r0, #0 + addeq sp, sp, #0x2d4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021DC704 ; =UNK04_0220C4CC + ldr r1, [sp, #8] + mov r2, #0 + blx r8 + add sp, sp, #0x2d4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DC670: .word UNK04_02210484 +_021DC674: .word UNK04_02210490 +_021DC678: .word UNK04_02210494 +_021DC67C: .word 0x00004E20 +_021DC680: .word UNK04_0220C36C +_021DC684: .word OSi_ThreadInfo +_021DC688: .word 0x00001B34 +_021DC68C: .word UNK04_0220C418 +_021DC690: .word errno +_021DC694: .word 0x0000012E +_021DC698: .word UNK04_0221048C +_021DC69C: .word UNK04_0220BEB4 +_021DC6A0: .word UNK04_0220C424 +_021DC6A4: .word UNK04_0220C444 +_021DC6A8: .word UNK04_0220C44C +_021DC6AC: .word UNK04_0220C454 +_021DC6B0: .word UNK04_0220C464 +_021DC6B4: .word UNK04_0220C394 +_021DC6B8: .word UNK04_022104B0 +_021DC6BC: .word UNK04_02210488 +_021DC6C0: .word 0xFFFFA4FA +_021DC6C4: .word 0x00009C40 +_021DC6C8: .word UNK04_0220C484 +_021DC6CC: .word UNK04_0220C48C +_021DC6D0: .word UNK04_0220C3B0 +_021DC6D4: .word UNK04_0220C494 +_021DC6D8: .word UNK04_0220C4A0 +_021DC6DC: .word UNK04_0220C4A4 +_021DC6E0: .word UNK04_0220C4AC +_021DC6E4: .word UNK04_0220C3CC +_021DC6E8: .word UNK04_0220C3D8 +_021DC6EC: .word UNK04_0220C3E8 +_021DC6F0: .word 0x0002BF20 +_021DC6F4: .word 0x0001D4C0 +_021DC6F8: .word UNK04_0220C3F8 +_021DC6FC: .word UNK04_0220C4B4 +_021DC700: .word UNK04_0220C4C0 +_021DC704: .word UNK04_0220C4CC + arm_func_end MOD04_021DB778 + + arm_func_start MOD04_021DC708 +MOD04_021DC708: ; 0x021DC708 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _021DC788 ; =UNK04_02210484 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _021DC740 + ldr r0, _021DC78C ; =0x0000111C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} +_021DC740: + ldr r1, _021DC788 ; =UNK04_02210484 + ldr r0, _021DC78C ; =0x0000111C + ldr r2, [r1] + mov r3, #0x1000 + ldr r1, _021DC790 ; =MOD04_021DB778 + str r3, [sp] + mov ip, #0x10 + add r0, r2, r0 + add r3, r2, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r1, _021DC788 ; =UNK04_02210484 + ldr r0, _021DC78C ; =0x0000111C + ldr r1, [r1] + add r0, r1, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021DC788: .word UNK04_02210484 +_021DC78C: .word 0x0000111C +_021DC790: .word MOD04_021DB778 + arm_func_end MOD04_021DC708 + + arm_func_start MOD04_021DC794 +MOD04_021DC794: ; 0x021DC794 + ldr r0, _021DC7A8 ; =UNK04_02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_021DC7A8: .word UNK04_02210484 + arm_func_end MOD04_021DC794 + + arm_func_start MOD04_021DC7AC +MOD04_021DC7AC: ; 0x021DC7AC + stmdb sp!, {r4, lr} + ldr r1, _021DC7E8 ; =UNK04_02210484 + ldr r0, _021DC7EC ; =0x000011DC + ldr r1, [r1] + add r0, r1, r0 + bl OS_LockMutex + ldr r1, _021DC7E8 ; =UNK04_02210484 + ldr r0, _021DC7EC ; =0x000011DC + ldr r2, [r1] + add r1, r2, #0x1000 + add r0, r2, r0 + ldr r4, [r1] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DC7E8: .word UNK04_02210484 +_021DC7EC: .word 0x000011DC + arm_func_end MOD04_021DC7AC + + arm_func_start MOD04_021DC7F0 +MOD04_021DC7F0: ; 0x021DC7F0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DC864 ; =UNK04_02210484 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DC868 ; =UNK04_02210490 + ldr r0, [r0] + cmp r0, #0 + beq _021DC820 + bl MOD04_021DB440 +_021DC820: + bl MOD04_021D9974 + ldr r0, _021DC864 ; =UNK04_02210484 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _021DC848 + ldr r0, _021DC86C ; =0x0000111C + add r0, r1, r0 + bl OS_JoinThread +_021DC848: + ldr r0, _021DC864 ; =UNK04_02210484 + mvn r1, #6 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DC864: .word UNK04_02210484 +_021DC868: .word UNK04_02210490 +_021DC86C: .word 0x0000111C + arm_func_end MOD04_021DC7F0 + + arm_func_start MOD04_021DC870 +MOD04_021DC870: ; 0x021DC870 + stmdb sp!, {r4, lr} + ldr r1, _021DC958 ; =UNK04_02210484 + ldr r0, _021DC95C ; =UNK04_02210490 + ldr r1, [r1] + ldr r0, [r0] + add r1, r1, #0x1000 + cmp r0, #0 + ldr r4, [r1, #0x10c] + beq _021DC8B8 + bl MOD04_021DAE4C + ldr r1, _021DC95C ; =UNK04_02210490 + ldr r0, _021DC960 ; =UNK04_0220C4D8 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021DC95C ; =UNK04_02210490 + mov r1, #0 + str r1, [r0] +_021DC8B8: + bl MOD04_021D991C + ldr r0, _021DC958 ; =UNK04_02210484 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r0, #0x1000 + ldr r1, [r0, #0x114] + cmp r1, #0 + beq _021DC8FC + ldr r0, _021DC964 ; =UNK04_0220C3B0 + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =UNK04_02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x114] +_021DC8FC: + ldr r0, _021DC958 ; =UNK04_02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _021DC934 + ldr r0, _021DC968 ; =UNK04_0220C464 + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =UNK04_02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x118] +_021DC934: + ldr r1, _021DC958 ; =UNK04_02210484 + ldr r0, _021DC96C ; =UNK04_0220C4E8 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =UNK04_02210484 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021DC958: .word UNK04_02210484 +_021DC95C: .word UNK04_02210490 +_021DC960: .word UNK04_0220C4D8 +_021DC964: .word UNK04_0220C3B0 +_021DC968: .word UNK04_0220C464 +_021DC96C: .word UNK04_0220C4E8 + arm_func_end MOD04_021DC870 + + arm_func_start MOD04_021DC970 +MOD04_021DC970: ; 0x021DC970 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _021DCA5C ; =UNK04_02210484 + mov r5, r0 + ldr r0, [r1] + ldr r4, [r5] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021DCA60 ; =UNK04_0220C4FC + ldr r1, _021DCA64 ; =0x000011F4 + blx r4 + ldr r1, _021DCA5C ; =UNK04_02210484 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021DCA64 ; =0x000011F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DCA5C ; =UNK04_02210484 + ldr r2, _021DCA68 ; =0xFFFE7961 + ldr r0, [r1] + ldr r3, _021DCA6C ; =0x00001108 + add r0, r0, #0x1000 + str r2, [r0, #4] + ldr ip, [r1] + ldmia r5, {r0, r1, r2} + add r3, ip, r3 + stmia r3, {r0, r1, r2} + ldr r0, _021DCA70 ; =UNK04_02210490 + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021DCA74 ; =UNK04_0220C510 + ldr r1, _021DCA78 ; =0x00001C10 + blx r4 + ldr r1, _021DCA70 ; =UNK04_02210490 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021DCA5C ; =UNK04_02210484 + ldr r0, _021DCA7C ; =0x000011DC + ldr r2, [r1] + ldr r1, _021DCA80 ; =UNK04_0221048C + mov r3, #0 + add r0, r2, r0 + str r3, [r1] + bl OS_InitMutex + bl MOD04_021DC708 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DCA5C: .word UNK04_02210484 +_021DCA60: .word UNK04_0220C4FC +_021DCA64: .word 0x000011F4 +_021DCA68: .word 0xFFFE7961 +_021DCA6C: .word 0x00001108 +_021DCA70: .word UNK04_02210490 +_021DCA74: .word UNK04_0220C510 +_021DCA78: .word 0x00001C10 +_021DCA7C: .word 0x000011DC +_021DCA80: .word UNK04_0221048C + arm_func_end MOD04_021DC970 + + .section .data + + .global UNK04_0220C36C +UNK04_0220C36C: ; 0x0220C36C + .word UNK04_0220C370 + + .global UNK04_0220C370 +UNK04_0220C370: ; 0x0220C370 + .asciz "http://conntest.nintendowifi.net/" + + .balign 4, 0 + .global UNK04_0220C394 +UNK04_0220C394: ; 0x0220C394 + .asciz "ALLOC DWCnetcheck->body_302" + + .balign 4, 0 + .global UNK04_0220C3B0 +UNK04_0220C3B0: ; 0x0220C3B0 + .asciz "FREE DWCnetcheck->body_302" + + .balign 4, 0 + .global UNK04_0220C3CC +UNK04_0220C3CC: ; 0x0220C3CC + .asciz "ALLOC url" + + .balign 4, 0 + .global UNK04_0220C3D8 +UNK04_0220C3D8: ; 0x0220C3D8 + .asciz "ALLOC data_len" + + .balign 4, 0 + .global UNK04_0220C3E8 +UNK04_0220C3E8: ; 0x0220C3E8 + .asciz "ALLOC wait_len" + + .balign 4, 0 + .global UNK04_0220C3F8 +UNK04_0220C3F8: ; 0x0220C3F8 + .asciz "ALLOC DWCnetcheck->body_wayport" + + .balign 4, 0 + .global UNK04_0220C418 +UNK04_0220C418: ; 0x0220C418 + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220C424 +UNK04_0220C424: ; 0x0220C424 + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220C444 +UNK04_0220C444: ; 0x0220C444 + .asciz "action" + + .balign 4, 0 + .global UNK04_0220C44C +UNK04_0220C44C: ; 0x0220C44C + .asciz "message" + + .balign 4, 0 + .global UNK04_0220C454 +UNK04_0220C454: ; 0x0220C454 + .asciz "HotSpotResponse" + + .balign 4, 0 + .global UNK04_0220C464 +UNK04_0220C464: ; 0x0220C464 + .asciz "FREE DWCnetcheck->body_wayport" + + .balign 4, 0 + .global UNK04_0220C484 +UNK04_0220C484: ; 0x0220C484 + .asciz "parse" + + .balign 4, 0 + .global UNK04_0220C48C +UNK04_0220C48C: ; 0x0220C48C + .asciz "HTML" + + .balign 4, 0 + .global UNK04_0220C494 +UNK04_0220C494: ; 0x0220C494 + .asciz "returncd" + + .balign 4, 0 + .global UNK04_0220C4A0 +UNK04_0220C4A0: ; 0x0220C4A0 + .asciz "url" + + .balign 4, 0 + .global UNK04_0220C4A4 +UNK04_0220C4A4: ; 0x0220C4A4 + .asciz "data" + + .balign 4, 0 + .global UNK04_0220C4AC +UNK04_0220C4AC: ; 0x0220C4AC + .asciz "wait" + + .balign 4, 0 + .global UNK04_0220C4B4 +UNK04_0220C4B4: ; 0x0220C4B4 + .asciz "FREE url" + + .balign 4, 0 + .global UNK04_0220C4C0 +UNK04_0220C4C0: ; 0x0220C4C0 + .asciz "FREE data" + + .balign 4, 0 + .global UNK04_0220C4CC +UNK04_0220C4CC: ; 0x0220C4CC + .asciz "FREE wait" + + .balign 4, 0 + .global UNK04_0220C4D8 +UNK04_0220C4D8: ; 0x0220C4D8 + .asciz "FREE DWChttp" + + .balign 4, 0 + .global UNK04_0220C4E8 +UNK04_0220C4E8: ; 0x0220C4E8 + .asciz "FREE DWCnetcheck" + + .balign 4, 0 + .global UNK04_0220C4FC +UNK04_0220C4FC: ; 0x0220C4FC + .asciz "ALLOC DWCnetcheck" + + .balign 4, 0 + .global UNK04_0220C510 +UNK04_0220C510: ; 0x0220C510 + .asciz "ALLOC DWChttp" + + .balign 4, 0 + .section .bss + + .global UNK04_02210490 +UNK04_02210490: ; 0x02210490 + .space 0x4 + + .global UNK04_02210494 +UNK04_02210494: ; 0x02210494 + .space 0x1C + + .global UNK04_022104B0 +UNK04_022104B0: ; 0x022104B0 + .space 0x48 -- cgit v1.2.3 From d3a9506d773546cf353440448cee7fd9d447bc1d Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 13 Aug 2021 15:45:20 +0100 Subject: two more mod04 files --- arm9/arm9.lsf | 2 + arm9/global.inc | 7 + arm9/modules/04/asm/arm_04.s | 746 ----------------------------------- arm9/modules/04/asm/mod04_021DC8A4.s | 240 +++++++++++ arm9/modules/04/asm/mod04_021DCCC8.s | 545 +++++++++++++++++++++++++ 5 files changed, 794 insertions(+), 746 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DC8A4.s create mode 100644 arm9/modules/04/asm/mod04_021DCCC8.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 834780fa..e8652298 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -662,6 +662,8 @@ Overlay MODULE_04 Object mod04_021D9C2C.o Object mod04_021DA260.o Object mod04_021DB730.o + Object mod04_021DC8A4.o + Object mod04_021DCCC8.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 18dca976..9a3575cb 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6137,8 +6137,13 @@ .extern MOD04_021DC870 .extern MOD04_021DC970 .extern MOD04_021DCA84 +.extern MOD04_021DCF00 +.extern MOD04_021DCFFC +.extern MOD04_021DD26C +.extern MOD04_021DD2C4 .extern MOD04_021DD36C .extern MOD04_021DD4FC +.extern MOD04_021DD6B0 .extern MOD04_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 @@ -8291,6 +8296,8 @@ .extern UNK04_02210484 .extern UNK04_02210488 .extern UNK04_0221048C +.extern UNK04_022104F8 +.extern UNK04_022104FC .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 26b8d60b..43c06600 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,632 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DCA84 -MOD04_021DCA84: ; 0x021DCA84 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 - mov r6, r0 - bl strlen - mov r4, r0 - ldr r0, _021DCCB4 ; =UNK04_0220C580 - bl strlen - cmp r4, r0 - bne _021DCCA8 - ldrsb r0, [r6, #7] - cmp r0, #0x20 - bne _021DCCA8 - ldrsb r0, [r6, #0xb] - cmp r0, #0x20 - bne _021DCCA8 - ldrsb r0, [r6, #0x10] - cmp r0, #0x20 - bne _021DCCA8 - ldrsb r0, [r6, #0x13] - cmp r0, #0x3a - bne _021DCCA8 - ldrsb r0, [r6, #0x16] - cmp r0, #0x3a - bne _021DCCA8 - ldrsb r0, [r6, #0x19] - cmp r0, #0x20 - bne _021DCCA8 - add r0, sp, #0 - bl RTC_GetDate - cmp r0, #0 - bne _021DCCA8 - add r0, sp, #0x10 - bl RTC_GetTime - cmp r0, #0 - bne _021DCCA8 - add r0, sp, #0 - add r1, sp, #0x10 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r5, r1 - mvn r0, #0 - cmp r5, r0 - cmpeq r4, r0 - beq _021DCCA8 - add r0, sp, #0x1c - mov r1, r6 - bl strcpy - mov r2, #0 - ldr r1, _021DCCB8 ; =errno - add r0, sp, #0x28 - strb r2, [sp, #0x23] - strb r2, [sp, #0x27] - strb r2, [sp, #0x2c] - strb r2, [sp, #0x2f] - strb r2, [sp, #0x32] - strb r2, [sp, #0x35] - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp] - ldr r1, [r1] - cmp r1, #0x22 - beq _021DCCA8 - sub r1, r0, #0x7d0 - mov r0, #0xd - str r1, [sp] - str r0, [sp, #4] - mov r8, #0 - ldr r7, _021DCCBC ; =UNK04_0220C550 - add r6, sp, #0x24 -_021DCB9C: - ldr r0, [r7, r8, lsl #2] - mov r1, r6 - bl strcmp - cmp r0, #0 - addeq r0, r8, #1 - streq r0, [sp, #4] - beq _021DCBC4 - add r8, r8, #1 - cmp r8, #0xc - blt _021DCB9C -_021DCBC4: - ldr r0, [sp, #4] - cmp r0, #0xc - bhi _021DCCA8 - ldr r1, _021DCCB8 ; =errno - mov r2, #0 - add r0, sp, #0x21 - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #8] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - mov r2, #0 - add r0, sp, #0x2d - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #0x10] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - mov r2, #0 - add r0, sp, #0x30 - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #0x14] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - mov r2, #0 - add r0, sp, #0x33 - str r2, [r1] - bl atol - ldr r1, _021DCCB8 ; =errno - str r0, [sp, #0x18] - ldr r0, [r1] - cmp r0, #0x22 - beq _021DCCA8 - add r0, sp, #0 - add r1, sp, #0x10 - bl RTC_ConvertDateTimeToSecond - mvn r2, #0 - cmp r1, r2 - cmpeq r0, r2 - beq _021DCCA8 - subs r4, r4, r0 - ldr r2, _021DCCC0 ; =UNK04_022104FC - sbc r3, r5, r1 - ldr r1, _021DCCC4 ; =UNK04_022104F8 - mov r0, #1 - str r3, [r2, #4] - str r0, [r1] - add sp, sp, #0x40 - str r4, [r2] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021DCCA8: - mov r0, #0 - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DCCB4: .word UNK04_0220C580 -_021DCCB8: .word errno -_021DCCBC: .word UNK04_0220C550 -_021DCCC0: .word UNK04_022104FC -_021DCCC4: .word UNK04_022104F8 - arm_func_end MOD04_021DCA84 - - arm_func_start MOD04_021DCCC8 -MOD04_021DCCC8: ; 0x021DCCC8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _021DCED4 ; =UNK04_02210504 - mov r1, #0 - ldr r0, [r0] - add r4, r0, #8 - mov r0, r4 - bl MOD04_021DA3DC - cmp r0, #0 - bne _021DCD08 - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCD08: - ldr r1, _021DCEDC ; =UNK04_0220C5A0 - mov r0, r4 - bl MOD04_021DA388 - cmp r0, #0 - beq _021DCD20 - bl MOD04_021DCA84 -_021DCD20: - ldr r1, _021DCEE0 ; =UNK04_0220C5A8 - mov r0, r4 - bl MOD04_021DA388 - cmp r0, #0 - bne _021DCD4C - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCD4C: - bl atol - ldr r1, _021DCEE4 ; =errno - mov r2, r0 - ldr r0, [r1] - cmp r0, #0x22 - bne _021DCD7C - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCD7C: - cmp r2, #0xc8 - beq _021DCDA0 - ldr r1, _021DCEE8 ; =0xFFFF9E58 - mov r0, #0x10 - sub r1, r1, r2 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCDA0: - ldr r1, _021DCEEC ; =UNK04_0220C5B4 - add r2, sp, #0 - mov r0, r4 - mov r3, #4 - bl MOD04_021DA334 - cmp r0, #0 - bgt _021DCDD4 - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCDD4: - add r0, sp, #0 - bl atol - ldr r1, _021DCEE4 ; =errno - mov r2, r0 - ldr r0, [r1] - cmp r0, #0x22 - bne _021DCE08 - ldr r1, _021DCED8 ; =0xFFFF9DF3 - mov r0, #0x10 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCE08: - cmp r2, #0x64 - blt _021DCE2C - ldr r1, _021DCEF0 ; =0xFFFFA240 - mov r0, #0x10 - sub r1, r1, r2 - bl MOD04_021DD6B0 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_021DCE2C: - ldr r0, _021DCED4 ; =UNK04_02210504 - ldr r1, _021DCEF4 ; =UNK04_0220C5C0 - ldr r2, [r0] - mov r0, r4 - add r2, r2, #0x1000 - ldr r2, [r2, #0xc18] - mov r3, #0x40 - add r2, r2, #4 - bl MOD04_021DA334 - ldr r0, _021DCED4 ; =UNK04_02210504 - ldr r1, _021DCEF8 ; =UNK04_0220C5C8 - ldr r2, [r0] - mov r0, r4 - add r2, r2, #0x1000 - ldr r2, [r2, #0xc18] - mov r3, #0x12c - add r2, r2, #0x45 - bl MOD04_021DA334 - ldr r1, _021DCEFC ; =UNK04_0220C5D8 - add r2, sp, #0 - mov r0, r4 - mov r3, #1 - bl MOD04_021DA334 - ldrsb r0, [sp] - cmp r0, #0x59 - bne _021DCEB0 - ldr r0, _021DCED4 ; =UNK04_02210504 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0xc18] - str r1, [r0] - b _021DCEC8 -_021DCEB0: - ldr r0, _021DCED4 ; =UNK04_02210504 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0xc18] - str r1, [r0] -_021DCEC8: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DCED4: .word UNK04_02210504 -_021DCED8: .word 0xFFFF9DF3 -_021DCEDC: .word UNK04_0220C5A0 -_021DCEE0: .word UNK04_0220C5A8 -_021DCEE4: .word errno -_021DCEE8: .word 0xFFFF9E58 -_021DCEEC: .word UNK04_0220C5B4 -_021DCEF0: .word 0xFFFFA240 -_021DCEF4: .word UNK04_0220C5C0 -_021DCEF8: .word UNK04_0220C5C8 -_021DCEFC: .word UNK04_0220C5D8 - arm_func_end MOD04_021DCCC8 - - arm_func_start MOD04_021DCF00 -MOD04_021DCF00: ; 0x021DCF00 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - add r0, r1, #0x1000 - ldr r0, [r0, #0xba8] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - ldr r0, _021DCFF4 ; =0x00001B3C - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #1 - bne _021DCFE4 - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x28] - cmp r0, #7 - beq _021DCFB0 - cmp r0, #8 - bne _021DCFC4 - bl MOD04_021DCCC8 - cmp r0, #0 - bne _021DCF94 - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - add sp, sp, #4 - mov r0, #4 - ldmfd sp!, {pc} -_021DCF94: - ldr r0, _021DCFF0 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - add sp, sp, #4 - mov r0, #3 - ldmfd sp!, {pc} -_021DCFB0: - add r0, r1, #8 - bl MOD04_021DAE4C - add sp, sp, #4 - mov r0, #5 - ldmfd sp!, {pc} -_021DCFC4: - add r0, r1, #8 - bl MOD04_021DAE4C - ldr r1, _021DCFF8 ; =0xFFFFA1DB - mov r0, #0x11 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #4 - ldmfd sp!, {pc} -_021DCFE4: - mov r0, #2 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DCFF0: .word UNK04_02210504 -_021DCFF4: .word 0x00001B3C -_021DCFF8: .word 0xFFFFA1DB - arm_func_end MOD04_021DCF00 - - arm_func_start MOD04_021DCFFC -MOD04_021DCFFC: ; 0x021DCFFC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xb4 - ldr r2, _021DD244 ; =UNK04_02210504 - mov r5, r0 - ldr r2, [r2] - mov r0, r1 - add r2, r2, #0x1000 - str r1, [r2, #0xc18] - mov r1, #0 - mov r2, #0x174 - bl MI_CpuFill8 - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba8] - cmp r0, #0 - beq _021DD058 - ldr r0, _021DD248 ; =0x00001B3C - add r0, r1, r0 - bl OS_IsThreadTerminated - cmp r0, #0 - bne _021DD058 - bl OS_Terminate -_021DD058: - ldr r0, _021DD24C ; =UNK04_0220BEB4 - ldr r1, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - mov r3, #0 - ldr r4, [r1] - mov r2, #0x1000 - str r0, [sp] - str r3, [sp, #4] - str r2, [sp, #8] - ldr r2, [r4] - ldr r1, _021DD250 ; =UNK04_0220C5E4 - str r2, [sp, #0xc] - ldr r2, [r4, #4] - str r2, [sp, #0x10] - bl strcmp - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x14] - moveq r0, #0 - ldr r2, _021DD254 ; =0x00004E20 - streq r0, [sp, #0x14] - add r1, sp, #0 - add r0, r4, #8 - str r2, [sp, #0x18] - bl MOD04_021DB608 - cmp r0, #0 - beq _021DD0DC - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD0DC: - add r0, sp, #0x1c - bl MOD04_021DA238 - cmp r0, #0 - beq _021DD10C - ldr r0, _021DD244 ; =UNK04_02210504 - add r1, sp, #0x1c - ldr r0, [r0] - mov r2, #0 - add r0, r0, #8 - bl MOD04_021D9C2C - cmp r0, #0 - bne _021DD134 -_021DD10C: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD134: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, _021DD25C ; =UNK04_0220C604 - ldr r0, [r0] - ldr r2, _021DD260 ; =UNK04_0220C60C - add r0, r0, #8 - mov r3, #6 - bl MOD04_021DAB68 - cmp r0, #0 - bne _021DD17C - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, _021DD264 ; =UNK04_0220C614 - ldr r0, [r0] - mov r2, r5 - add r0, r0, #8 - mov r3, #4 - bl MOD04_021DAB68 - cmp r0, #0 - beq _021DD1A4 -_021DD17C: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD1A4: - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DB570 - cmp r0, #0 - beq _021DD1E4 - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r0, [r0] - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #0xb4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD1E4: - ldr r0, _021DD268 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _021DD244 ; =UNK04_02210504 - ldr r2, [r1] - sub r1, r0, #1 - add r0, r2, #8 - bl MOD04_021DB4A4 - ldr r0, _021DD244 ; =UNK04_02210504 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba8] - cmp r0, #0 - addne sp, sp, #0xb4 - movne r0, #1 - ldmneia sp!, {r4, r5, pc} - add r0, r1, #8 - bl MOD04_021DAE4C - ldr r1, _021DD258 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - mov r0, #0 - add sp, sp, #0xb4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DD244: .word UNK04_02210504 -_021DD248: .word 0x00001B3C -_021DD24C: .word UNK04_0220BEB4 -_021DD250: .word UNK04_0220C5E4 -_021DD254: .word 0x00004E20 -_021DD258: .word 0xFFFFA1DC -_021DD25C: .word UNK04_0220C604 -_021DD260: .word UNK04_0220C60C -_021DD264: .word UNK04_0220C614 -_021DD268: .word OSi_ThreadInfo - arm_func_end MOD04_021DCFFC - - arm_func_start MOD04_021DD26C -MOD04_021DD26C: ; 0x021DD26C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DD2BC ; =UNK04_02210504 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - add r0, r0, #8 - bl MOD04_021DAE4C - ldr r1, _021DD2BC ; =UNK04_02210504 - ldr r0, _021DD2C0 ; =UNK04_0220C618 - ldr r1, [r1] - mov r2, #0 - ldr r3, [r1, #4] - blx r3 - ldr r0, _021DD2BC ; =UNK04_02210504 - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD2BC: .word UNK04_02210504 -_021DD2C0: .word UNK04_0220C618 - arm_func_end MOD04_021DD26C - - arm_func_start MOD04_021DD2C4 -MOD04_021DD2C4: ; 0x021DD2C4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021DD35C ; =UNK04_02210504 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - beq _021DD2FC - ldr r1, _021DD360 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD2FC: - ldr r0, _021DD364 ; =UNK04_0220C628 - ldr r1, _021DD368 ; =0x00001C1C - blx r5 - ldr r1, _021DD35C ; =UNK04_02210504 - cmp r0, #0 - str r0, [r1] - bne _021DD330 - ldr r1, _021DD360 ; =0xFFFFA1DC - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DD330: - ldr r2, _021DD368 ; =0x00001C1C - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _021DD35C ; =UNK04_02210504 - mov r0, #1 - ldr r2, [r1] - str r5, [r2] - ldr r1, [r1] - str r4, [r1, #4] - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DD35C: .word UNK04_02210504 -_021DD360: .word 0xFFFFA1DC -_021DD364: .word UNK04_0220C628 -_021DD368: .word 0x00001C1C - arm_func_end MOD04_021DD2C4 - arm_func_start MOD04_021DD36C MOD04_021DD36C: ; 0x021DD36C stmdb sp!, {r4, r5, r6, r7, r8, lr} @@ -55815,114 +55189,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK04_0220C520 -UNK04_0220C520: ; 0x0220C520 - .byte 0x44, 0x65, 0x63, 0x00 - - .global UNK_0220C524 -UNK04_0220C524: ; 0x0220C524 - .byte 0x4A, 0x75, 0x6C, 0x00 - - .global UNK_0220C528 -UNK04_0220C528: ; 0x0220C528 - .byte 0x4F, 0x63, 0x74, 0x00 - - .global UNK_0220C52C -UNK04_0220C52C: ; 0x0220C52C - .byte 0x53, 0x65, 0x70, 0x00 - - .global UNK_0220C530 -UNK04_0220C530: ; 0x0220C530 - .byte 0x41, 0x75, 0x67, 0x00 - - .global UNK_0220C534 -UNK04_0220C534: ; 0x0220C534 - .byte 0x4E, 0x6F, 0x76, 0x00 - - .global UNK_0220C538 -UNK04_0220C538: ; 0x0220C538 - .byte 0x4A, 0x75, 0x6E, 0x00 - - .global UNK_0220C53C -UNK04_0220C53C: ; 0x0220C53C - .byte 0x4D, 0x61, 0x79, 0x00 - - .global UNK_0220C540 -UNK04_0220C540: ; 0x0220C540 - .byte 0x41, 0x70, 0x72, 0x00 - - .global UNK_0220C544 -UNK04_0220C544: ; 0x0220C544 - .byte 0x4D, 0x61, 0x72, 0x00 - - .global UNK_0220C548 -UNK04_0220C548: ; 0x0220C548 - .byte 0x46, 0x65, 0x62, 0x00 - - .global UNK_0220C54C -UNK04_0220C54C: ; 0x0220C54C - .byte 0x4A, 0x61, 0x6E, 0x00 - - .global UNK_0220C550 -UNK04_0220C550: ; 0x0220C550 - .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540 - .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530 - .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520 - - .global UNK_0220C580 -UNK04_0220C580: ; 0x0220C580 - .byte 0x46, 0x72, 0x69, 0x2C, 0x20, 0x30, 0x33, 0x20, 0x4D, 0x61, 0x72, 0x20, 0x32, 0x30, 0x30, 0x36 - .byte 0x20, 0x30, 0x31, 0x3A, 0x32, 0x38, 0x3A, 0x31, 0x33, 0x20, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00 - - .global UNK_0220C5A0 -UNK04_0220C5A0: ; 0x0220C5A0 - .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C5A8 -UNK04_0220C5A8: ; 0x0220C5A8 - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00 - - .global UNK_0220C5B4 -UNK04_0220C5B4: ; 0x0220C5B4 - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C5C0 -UNK04_0220C5C0: ; 0x0220C5C0 - .byte 0x73, 0x76, 0x63, 0x68, 0x6F, 0x73, 0x74, 0x00 - - .global UNK_0220C5C8 -UNK04_0220C5C8: ; 0x0220C5C8 - .byte 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C5D8 -UNK04_0220C5D8: ; 0x0220C5D8 - .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00 - - .global UNK_0220C5E4 -UNK04_0220C5E4: ; 0x0220C5E4 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 - .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 - - .global UNK_0220C604 -UNK04_0220C604: ; 0x0220C604 - .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - - .global UNK_0220C60C -UNK04_0220C60C: ; 0x0220C60C - .byte 0x53, 0x56, 0x43, 0x4C, 0x4F, 0x43, 0x00, 0x00 - - .global UNK_0220C614 -UNK04_0220C614: ; 0x0220C614 - .byte 0x73, 0x76, 0x63, 0x00 - - .global UNK_0220C618 -UNK04_0220C618: ; 0x0220C618 - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C628 -UNK04_0220C628: ; 0x0220C628 - .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00 - .global UNK_0220C638 UNK04_0220C638: ; 0x0220C638 .word UNK04_0220C63C @@ -58991,18 +58257,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_022104F8 -UNK04_022104F8: ; 0x022104F8 - .space 0x4 - - .global UNK04_022104FC -UNK04_022104FC: ; 0x022104FC - .space 0x8 - - .global UNK04_02210504 -UNK04_02210504: ; 0x02210504 - .space 0x4 - .global UNK04_02210508 UNK04_02210508: ; 0x02210508 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DC8A4.s b/arm9/modules/04/asm/mod04_021DC8A4.s new file mode 100644 index 00000000..7668cb10 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DC8A4.s @@ -0,0 +1,240 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DCA84 +MOD04_021DCA84: ; 0x021DCA84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + mov r6, r0 + bl strlen + mov r4, r0 + ldr r0, _021DCCB4 ; =UNK04_0220C580 + bl strlen + cmp r4, r0 + bne _021DCCA8 + ldrsb r0, [r6, #7] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0xb] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0x10] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0x13] + cmp r0, #0x3a + bne _021DCCA8 + ldrsb r0, [r6, #0x16] + cmp r0, #0x3a + bne _021DCCA8 + ldrsb r0, [r6, #0x19] + cmp r0, #0x20 + bne _021DCCA8 + add r0, sp, #0 + bl RTC_GetDate + cmp r0, #0 + bne _021DCCA8 + add r0, sp, #0x10 + bl RTC_GetTime + cmp r0, #0 + bne _021DCCA8 + add r0, sp, #0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r5, r1 + mvn r0, #0 + cmp r5, r0 + cmpeq r4, r0 + beq _021DCCA8 + add r0, sp, #0x1c + mov r1, r6 + bl strcpy + mov r2, #0 + ldr r1, _021DCCB8 ; =errno + add r0, sp, #0x28 + strb r2, [sp, #0x23] + strb r2, [sp, #0x27] + strb r2, [sp, #0x2c] + strb r2, [sp, #0x2f] + strb r2, [sp, #0x32] + strb r2, [sp, #0x35] + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp] + ldr r1, [r1] + cmp r1, #0x22 + beq _021DCCA8 + sub r1, r0, #0x7d0 + mov r0, #0xd + str r1, [sp] + str r0, [sp, #4] + mov r8, #0 + ldr r7, _021DCCBC ; =UNK04_0220C550 + add r6, sp, #0x24 +_021DCB9C: + ldr r0, [r7, r8, lsl #2] + mov r1, r6 + bl strcmp + cmp r0, #0 + addeq r0, r8, #1 + streq r0, [sp, #4] + beq _021DCBC4 + add r8, r8, #1 + cmp r8, #0xc + blt _021DCB9C +_021DCBC4: + ldr r0, [sp, #4] + cmp r0, #0xc + bhi _021DCCA8 + ldr r1, _021DCCB8 ; =errno + mov r2, #0 + add r0, sp, #0x21 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #8] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x2d + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #0x10] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x30 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #0x14] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x33 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =errno + str r0, [sp, #0x18] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + add r0, sp, #0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + beq _021DCCA8 + subs r4, r4, r0 + ldr r2, _021DCCC0 ; =UNK04_022104FC + sbc r3, r5, r1 + ldr r1, _021DCCC4 ; =UNK04_022104F8 + mov r0, #1 + str r3, [r2, #4] + str r0, [r1] + add sp, sp, #0x40 + str r4, [r2] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021DCCA8: + mov r0, #0 + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DCCB4: .word UNK04_0220C580 +_021DCCB8: .word errno +_021DCCBC: .word UNK04_0220C550 +_021DCCC0: .word UNK04_022104FC +_021DCCC4: .word UNK04_022104F8 + arm_func_end MOD04_021DCA84 + + .section .data + + .global UNK04_0220C520 +UNK04_0220C520: ; 0x0220C520 + .asciz "Dec" + + .balign 4, 0 + .global UNK04_0220C524 +UNK04_0220C524: ; 0x0220C524 + .asciz "Jul" + + .balign 4, 0 + .global UNK04_0220C528 +UNK04_0220C528: ; 0x0220C528 + .asciz "Oct" + + .balign 4, 0 + .global UNK04_0220C52C +UNK04_0220C52C: ; 0x0220C52C + .asciz "Sep" + + .balign 4, 0 + .global UNK04_0220C530 +UNK04_0220C530: ; 0x0220C530 + .asciz "Aug" + + .balign 4, 0 + .global UNK04_0220C534 +UNK04_0220C534: ; 0x0220C534 + .asciz "Nov" + + .balign 4, 0 + .global UNK04_0220C538 +UNK04_0220C538: ; 0x0220C538 + .asciz "Jun" + + .balign 4, 0 + .global UNK04_0220C53C +UNK04_0220C53C: ; 0x0220C53C + .asciz "May" + + .balign 4, 0 + .global UNK04_0220C540 +UNK04_0220C540: ; 0x0220C540 + .asciz "Apr" + + .balign 4, 0 + .global UNK04_0220C544 +UNK04_0220C544: ; 0x0220C544 + .asciz "Mar" + + .balign 4, 0 + .global UNK04_0220C548 +UNK04_0220C548: ; 0x0220C548 + .asciz "Feb" + + .balign 4, 0 + .global UNK04_0220C54C +UNK04_0220C54C: ; 0x0220C54C + .asciz "Jan" + + .balign 4, 0 + .global UNK04_0220C550 +UNK04_0220C550: ; 0x0220C550 + .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540 + .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530 + .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520 + + .global UNK04_0220C580 +UNK04_0220C580: ; 0x0220C580 + .asciz "Fri, 03 Mar 2006 01:28:13 GMT" + + .balign 4, 0 + .section .bss + + .global UNK04_022104F8 +UNK04_022104F8: ; 0x022104F8 + .space 0x4 + + .global UNK04_022104FC +UNK04_022104FC: ; 0x022104FC + .space 0x8 diff --git a/arm9/modules/04/asm/mod04_021DCCC8.s b/arm9/modules/04/asm/mod04_021DCCC8.s new file mode 100644 index 00000000..a182f7c3 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DCCC8.s @@ -0,0 +1,545 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DCCC8 +MOD04_021DCCC8: ; 0x021DCCC8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _021DCED4 ; =UNK04_02210504 + mov r1, #0 + ldr r0, [r0] + add r4, r0, #8 + mov r0, r4 + bl MOD04_021DA3DC + cmp r0, #0 + bne _021DCD08 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD08: + ldr r1, _021DCEDC ; =UNK04_0220C5A0 + mov r0, r4 + bl MOD04_021DA388 + cmp r0, #0 + beq _021DCD20 + bl MOD04_021DCA84 +_021DCD20: + ldr r1, _021DCEE0 ; =UNK04_0220C5A8 + mov r0, r4 + bl MOD04_021DA388 + cmp r0, #0 + bne _021DCD4C + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD4C: + bl atol + ldr r1, _021DCEE4 ; =errno + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _021DCD7C + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD7C: + cmp r2, #0xc8 + beq _021DCDA0 + ldr r1, _021DCEE8 ; =0xFFFF9E58 + mov r0, #0x10 + sub r1, r1, r2 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCDA0: + ldr r1, _021DCEEC ; =UNK04_0220C5B4 + add r2, sp, #0 + mov r0, r4 + mov r3, #4 + bl MOD04_021DA334 + cmp r0, #0 + bgt _021DCDD4 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCDD4: + add r0, sp, #0 + bl atol + ldr r1, _021DCEE4 ; =errno + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _021DCE08 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCE08: + cmp r2, #0x64 + blt _021DCE2C + ldr r1, _021DCEF0 ; =0xFFFFA240 + mov r0, #0x10 + sub r1, r1, r2 + bl MOD04_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCE2C: + ldr r0, _021DCED4 ; =UNK04_02210504 + ldr r1, _021DCEF4 ; =UNK04_0220C5C0 + ldr r2, [r0] + mov r0, r4 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc18] + mov r3, #0x40 + add r2, r2, #4 + bl MOD04_021DA334 + ldr r0, _021DCED4 ; =UNK04_02210504 + ldr r1, _021DCEF8 ; =UNK04_0220C5C8 + ldr r2, [r0] + mov r0, r4 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc18] + mov r3, #0x12c + add r2, r2, #0x45 + bl MOD04_021DA334 + ldr r1, _021DCEFC ; =UNK04_0220C5D8 + add r2, sp, #0 + mov r0, r4 + mov r3, #1 + bl MOD04_021DA334 + ldrsb r0, [sp] + cmp r0, #0x59 + bne _021DCEB0 + ldr r0, _021DCED4 ; =UNK04_02210504 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc18] + str r1, [r0] + b _021DCEC8 +_021DCEB0: + ldr r0, _021DCED4 ; =UNK04_02210504 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc18] + str r1, [r0] +_021DCEC8: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DCED4: .word UNK04_02210504 +_021DCED8: .word 0xFFFF9DF3 +_021DCEDC: .word UNK04_0220C5A0 +_021DCEE0: .word UNK04_0220C5A8 +_021DCEE4: .word errno +_021DCEE8: .word 0xFFFF9E58 +_021DCEEC: .word UNK04_0220C5B4 +_021DCEF0: .word 0xFFFFA240 +_021DCEF4: .word UNK04_0220C5C0 +_021DCEF8: .word UNK04_0220C5C8 +_021DCEFC: .word UNK04_0220C5D8 + arm_func_end MOD04_021DCCC8 + + arm_func_start MOD04_021DCF00 +MOD04_021DCF00: ; 0x021DCF00 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r0, _021DCFF4 ; =0x00001B3C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #1 + bne _021DCFE4 + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x28] + cmp r0, #7 + beq _021DCFB0 + cmp r0, #8 + bne _021DCFC4 + bl MOD04_021DCCC8 + cmp r0, #0 + bne _021DCF94 + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + add sp, sp, #4 + mov r0, #4 + ldmfd sp!, {pc} +_021DCF94: + ldr r0, _021DCFF0 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + add sp, sp, #4 + mov r0, #3 + ldmfd sp!, {pc} +_021DCFB0: + add r0, r1, #8 + bl MOD04_021DAE4C + add sp, sp, #4 + mov r0, #5 + ldmfd sp!, {pc} +_021DCFC4: + add r0, r1, #8 + bl MOD04_021DAE4C + ldr r1, _021DCFF8 ; =0xFFFFA1DB + mov r0, #0x11 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #4 + ldmfd sp!, {pc} +_021DCFE4: + mov r0, #2 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DCFF0: .word UNK04_02210504 +_021DCFF4: .word 0x00001B3C +_021DCFF8: .word 0xFFFFA1DB + arm_func_end MOD04_021DCF00 + + arm_func_start MOD04_021DCFFC +MOD04_021DCFFC: ; 0x021DCFFC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xb4 + ldr r2, _021DD244 ; =UNK04_02210504 + mov r5, r0 + ldr r2, [r2] + mov r0, r1 + add r2, r2, #0x1000 + str r1, [r2, #0xc18] + mov r1, #0 + mov r2, #0x174 + bl MI_CpuFill8 + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + beq _021DD058 + ldr r0, _021DD248 ; =0x00001B3C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _021DD058 + bl OS_Terminate +_021DD058: + ldr r0, _021DD24C ; =UNK04_0220BEB4 + ldr r1, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + mov r3, #0 + ldr r4, [r1] + mov r2, #0x1000 + str r0, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + ldr r2, [r4] + ldr r1, _021DD250 ; =UNK04_0220C5E4 + str r2, [sp, #0xc] + ldr r2, [r4, #4] + str r2, [sp, #0x10] + bl strcmp + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + moveq r0, #0 + ldr r2, _021DD254 ; =0x00004E20 + streq r0, [sp, #0x14] + add r1, sp, #0 + add r0, r4, #8 + str r2, [sp, #0x18] + bl MOD04_021DB608 + cmp r0, #0 + beq _021DD0DC + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD0DC: + add r0, sp, #0x1c + bl MOD04_021DA238 + cmp r0, #0 + beq _021DD10C + ldr r0, _021DD244 ; =UNK04_02210504 + add r1, sp, #0x1c + ldr r0, [r0] + mov r2, #0 + add r0, r0, #8 + bl MOD04_021D9C2C + cmp r0, #0 + bne _021DD134 +_021DD10C: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD134: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, _021DD25C ; =UNK04_0220C604 + ldr r0, [r0] + ldr r2, _021DD260 ; =UNK04_0220C60C + add r0, r0, #8 + mov r3, #6 + bl MOD04_021DAB68 + cmp r0, #0 + bne _021DD17C + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, _021DD264 ; =UNK04_0220C614 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #8 + mov r3, #4 + bl MOD04_021DAB68 + cmp r0, #0 + beq _021DD1A4 +_021DD17C: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD1A4: + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DB570 + cmp r0, #0 + beq _021DD1E4 + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r0, [r0] + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD1E4: + ldr r0, _021DD268 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _021DD244 ; =UNK04_02210504 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #8 + bl MOD04_021DB4A4 + ldr r0, _021DD244 ; =UNK04_02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + addne sp, sp, #0xb4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + add r0, r1, #8 + bl MOD04_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + mov r0, #0 + add sp, sp, #0xb4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DD244: .word UNK04_02210504 +_021DD248: .word 0x00001B3C +_021DD24C: .word UNK04_0220BEB4 +_021DD250: .word UNK04_0220C5E4 +_021DD254: .word 0x00004E20 +_021DD258: .word 0xFFFFA1DC +_021DD25C: .word UNK04_0220C604 +_021DD260: .word UNK04_0220C60C +_021DD264: .word UNK04_0220C614 +_021DD268: .word OSi_ThreadInfo + arm_func_end MOD04_021DCFFC + + arm_func_start MOD04_021DD26C +MOD04_021DD26C: ; 0x021DD26C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DD2BC ; =UNK04_02210504 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + add r0, r0, #8 + bl MOD04_021DAE4C + ldr r1, _021DD2BC ; =UNK04_02210504 + ldr r0, _021DD2C0 ; =UNK04_0220C618 + ldr r1, [r1] + mov r2, #0 + ldr r3, [r1, #4] + blx r3 + ldr r0, _021DD2BC ; =UNK04_02210504 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD2BC: .word UNK04_02210504 +_021DD2C0: .word UNK04_0220C618 + arm_func_end MOD04_021DD26C + + arm_func_start MOD04_021DD2C4 +MOD04_021DD2C4: ; 0x021DD2C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DD35C ; =UNK04_02210504 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _021DD2FC + ldr r1, _021DD360 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD2FC: + ldr r0, _021DD364 ; =UNK04_0220C628 + ldr r1, _021DD368 ; =0x00001C1C + blx r5 + ldr r1, _021DD35C ; =UNK04_02210504 + cmp r0, #0 + str r0, [r1] + bne _021DD330 + ldr r1, _021DD360 ; =0xFFFFA1DC + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD330: + ldr r2, _021DD368 ; =0x00001C1C + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DD35C ; =UNK04_02210504 + mov r0, #1 + ldr r2, [r1] + str r5, [r2] + ldr r1, [r1] + str r4, [r1, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DD35C: .word UNK04_02210504 +_021DD360: .word 0xFFFFA1DC +_021DD364: .word UNK04_0220C628 +_021DD368: .word 0x00001C1C + arm_func_end MOD04_021DD2C4 + + .section .data + + .global UNK04_0220C5A0 +UNK04_0220C5A0: ; 0x0220C5A0 + .asciz "Date" + + .balign 4, 0 + .global UNK04_0220C5A8 +UNK04_0220C5A8: ; 0x0220C5A8 + .asciz "httpresult" + + .balign 4, 0 + .global UNK04_0220C5B4 +UNK04_0220C5B4: ; 0x0220C5B4 + .asciz "returncd" + + .balign 4, 0 + .global UNK04_0220C5C0 +UNK04_0220C5C0: ; 0x0220C5C0 + .asciz "svchost" + + .balign 4, 0 + .global UNK04_0220C5C8 +UNK04_0220C5C8: ; 0x0220C5C8 + .asciz "servicetoken" + + .balign 4, 0 + .global UNK04_0220C5D8 +UNK04_0220C5D8: ; 0x0220C5D8 + .asciz "statusdata" + + .balign 4, 0 + .global UNK04_0220C5E4 +UNK04_0220C5E4: ; 0x0220C5E4 + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220C604 +UNK04_0220C604: ; 0x0220C604 + .asciz "action" + + .balign 4, 0 + .global UNK04_0220C60C +UNK04_0220C60C: ; 0x0220C60C + .asciz "SVCLOC" + + .balign 4, 0 + .global UNK04_0220C614 +UNK04_0220C614: ; 0x0220C614 + .asciz "svc" + + .balign 4, 0 + .global UNK04_0220C618 +UNK04_0220C618: ; 0x0220C618 + .asciz "FREE intwork" + + .balign 4, 0 + .global UNK04_0220C628 +UNK04_0220C628: ; 0x0220C628 + .asciz "ALLOC intwork" + + .balign 4, 0 + .section .bss + + .global UNK04_02210504 +UNK04_02210504: ; 0x02210504 + .space 0x4 -- cgit v1.2.3 From 496ab2d25dd76329ef5bb95090291e237a56f474 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 14:51:17 +0100 Subject: literally one single random scrcmd func in a mod04 PR --- arm9/asm/scrcmd_asm.s | 26 -------------------------- arm9/src/scrcmd.c | 22 +++++++++++++++++++--- include/scrcmd.h | 8 ++++++++ 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 8dcbdf20..29106585 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -14,32 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203B174 -FUN_0203B174: ; 0x0203B174 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - mov r0, #0x4 - mov r1, #0x10 - add r7, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - bne _0203B18E - bl GF_AssertFail - pop {r3-r7, pc} -_0203B18E: - str r5, [r4, #0xc] - str r6, [r4, #0x4] - ldr r0, _0203B1A4 ; =FUN_0203B1A8 - add r1, r4, #0x0 - mov r2, #0x0 - str r7, [r4, #0x8] - bl FUN_0200CA44 - str r0, [r4, #0x0] - pop {r3-r7, pc} - nop -_0203B1A4: .word FUN_0203B1A8 - thumb_func_start FUN_0203B1A8 FUN_0203B1A8: ; 0x0203B1A8 push {r3-r5, lr} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index c79684a0..ceb1a1cf 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1,4 +1,5 @@ #include "scrcmd.h" +#include "unk_0200CA44.h" #include "unk_0204639C.h" #include "main.h" #include "options.h" @@ -54,11 +55,11 @@ extern void MOD05_021E26CC(u32 param0, u8 param1); extern void MOD05_021E2B80(u32 param0, u8 param1); extern void MOD05_021E2B9C(u32 param0, u8 param1); extern u32 FUN_0205AEA4(u32 param0, const void *ptr); -extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2); extern u32 FUN_02058B2C(u32 param0); extern u32 FUN_02058B4C(u32 param0); extern u32 FUN_020580B4(u32 param0, u32 param1); extern u32 FUN_02058060(u32 param0, u32 param1); +extern void FUN_0203B1A8(u32 param0, void *param1); extern u8 *UNK_020F34E0; @@ -79,6 +80,7 @@ static BOOL FUN_0203AD2C(struct ScriptContext *ctx); static BOOL FUN_0203AD78(struct ScriptContext *ctx); static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1); static BOOL FUN_0203B158(struct ScriptContext *ctx); +static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2); extern u8 sScriptConditionTable[6][3]; @@ -1355,13 +1357,13 @@ THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx) if (unk6 < unk2) { unk4[pos * 2] = 12; - unk4[pos * 2 + 1] = unk2 - unk6; + unk4[pos * 2 + 1] = (u16)(unk2 - unk6); pos++; } else if (unk6 > unk2) { unk4[pos * 2] = 13; - unk4[pos * 2 + 1] = unk6 - unk2; + unk4[pos * 2 + 1] = (u16)(unk6 - unk2); pos++; } @@ -1405,3 +1407,17 @@ THUMB_FUNC static BOOL FUN_0203B158(struct ScriptContext *ctx) u8 *unk = FUN_02039438(ctx->unk80, 4); return *unk == 0 ? TRUE : FALSE; } + +THUMB_FUNC static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2) +{ + UnkStruct_0203B174 *unkStruct = (UnkStruct_0203B174 *)AllocFromHeap(4, sizeof(UnkStruct_0203B174)); + if (unkStruct == NULL) + { + GF_AssertFail(); + return; + } + unkStruct->Unk0C = arg; + unkStruct->Unk04 = param1; + unkStruct->Unk08 = param2; + unkStruct->Unk00 = FUN_0200CA44(FUN_0203B1A8, unkStruct, 0); +} diff --git a/include/scrcmd.h b/include/scrcmd.h index 8c89e230..7a0ab21e 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -15,6 +15,14 @@ struct UnkStruct_0203A288 { u8 padding[1]; }; +typedef struct UnkStruct_0203B174 +{ + BOOL Unk00; + u32 Unk04; + void *Unk08; + struct UnkSavStruct80 *Unk0C; +} UnkStruct_0203B174; + //scrcmd.c BOOL ScrCmd_Nop(struct ScriptContext* ctx); BOOL ScrCmd_Dummy(struct ScriptContext* ctx); -- cgit v1.2.3 From bdd8885a810c5027e729c6bba3b8a1e61ef9c6ca Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 17:59:53 +0100 Subject: m --- arm9/arm9.lsf | 1 + arm9/modules/04/asm/arm_04.s | 244 ---------------------------------- arm9/modules/04/asm/mod04_021DD36C.s | 248 +++++++++++++++++++++++++++++++++++ 3 files changed, 249 insertions(+), 244 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD36C.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e8652298..fe408d4a 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -664,6 +664,7 @@ Overlay MODULE_04 Object mod04_021DB730.o Object mod04_021DC8A4.o Object mod04_021DCCC8.o + Object mod04_021DD36C.o Object arm_04.o } diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 43c06600..9aa15f74 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,238 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DD36C -MOD04_021DD36C: ; 0x021DD36C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ands r4, r1, #3 - addne sp, sp, #8 - mvnne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r6, #0 - mov r5, r6 - cmp r1, #0 - bls _021DD3AC -_021DD394: - ldrsb r4, [r0, r5] - add r5, r5, #1 - cmp r4, #0x2a - addne r6, r6, #6 - cmp r5, r1 - blo _021DD394 -_021DD3AC: - cmp r2, #0 - moveq r0, r6, asr #2 - addeq r0, r6, r0, lsr #29 - addeq sp, sp, #8 - moveq r0, r0, asr #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r4, r6, asr #2 - add r4, r6, r4, lsr #29 - mov r4, r4, asr #3 - cmp r3, r4 - addlo sp, sp, #8 - mvnlo r0, #0 - ldmloia sp!, {r4, r5, r6, r7, r8, pc} - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2] - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r6, r2 - add ip, sp, #0 - mov lr, #0 - mov r1, #0x3f - mov r3, #0x3e -_021DD408: - mov r8, lr - mov r5, ip -_021DD410: - ldrsb r7, [r0, r8] - cmp r7, #0x41 - blt _021DD42C - cmp r7, #0x5a - suble r7, r7, #0x41 - strleb r7, [r5] - ble _021DD474 -_021DD42C: - cmp r7, #0x61 - blt _021DD444 - cmp r7, #0x7a - suble r7, r7, #0x47 - strleb r7, [r5] - ble _021DD474 -_021DD444: - cmp r7, #0x30 - blt _021DD45C - cmp r7, #0x39 - addle r7, r7, #4 - strleb r7, [r5] - ble _021DD474 -_021DD45C: - cmp r7, #0x2e - streqb r3, [r5] - beq _021DD474 - cmp r7, #0x2d - streqb r1, [r5] - strneb lr, [r5] -_021DD474: - add r8, r8, #1 - cmp r8, #4 - add r5, r5, #1 - blt _021DD410 - ldrsb r8, [sp] - ldrsb r7, [sp, #1] - add r5, r6, #1 - mov r8, r8, lsl #2 - orr r7, r8, r7, asr #4 - sub r5, r5, r2 - strb r7, [r6] - cmp r5, r4 - add r0, r0, #4 - bge _021DD4F0 - ldrsb r8, [sp, #1] - ldrsb r7, [sp, #2] - add r5, r6, #2 - mov r8, r8, lsl #4 - orr r7, r8, r7, asr #2 - sub r5, r5, r2 - strb r7, [r6, #1] - cmp r5, r4 - bge _021DD4F0 - ldrsb r7, [sp, #2] - ldrsb r5, [sp, #3] - orr r5, r5, r7, lsl #6 - strb r5, [r6, #2] - add r6, r6, #3 - sub r5, r6, r2 - cmp r5, r4 - blt _021DD408 -_021DD4F0: - mov r0, r5 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MOD04_021DD36C - - arm_func_start MOD04_021DD4FC -MOD04_021DD4FC: ; 0x021DD4FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, _021DD69C ; =0xAAAAAAAB - str r2, [sp] - umull r4, r5, r1, r4 - ldr r6, _021DD6A0 ; =0x00000003 - mov r5, r5, lsr #1 - umull r4, r5, r6, r5 - mov sl, r0 - subs r5, r1, r4 - movne r4, #4 - ldr r2, _021DD69C ; =0xAAAAAAAB - ldr r0, [sp] - moveq r4, #0 - cmp r0, #0 - umull r0, r2, r1, r2 - mov r2, r2, lsr #1 - addeq sp, sp, #0xc - add r0, r4, r2, lsl #2 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r3, r0 - addlo sp, sp, #0xc - mvnlo r0, #0 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r7, sl, r1 - ldr r6, [sp] - cmp sl, r7 - beq _021DD68C - mov r0, #1 - mov r5, #0 - str r0, [sp, #4] - mov fp, #3 - mov r4, #0x2a -_021DD580: - sub sb, r7, sl - ldr r1, _021DD6A4 ; =0x2AAAAAAB - mov r0, sb, lsl #3 - smull r2, r3, r1, r0 - ldr r1, _021DD6A8 ; =0x00000006 - add r3, r3, r0, lsr #31 - smull r2, r3, r1, r3 - subs r3, r0, r2 - ldr r1, _021DD6A4 ; =0x2AAAAAAB - ldrne r8, [sp, #4] - smull r2, r3, r1, r0 - moveq r8, r5 - add r3, r3, r0, lsr #31 - cmp sb, #3 - movge sb, fp - add r0, sp, #8 - mov r1, r5 - mov r2, fp - add r8, r3, r8 - bl MI_CpuFill8 - mov r0, sl - add r1, sp, #8 - mov r2, sb - bl MI_CpuCopy8 - ldr r0, _021DD6AC ; =UNK04_0220C638 - cmp r8, #2 - ldr r1, [r0] - ldrb r0, [sp, #8] - mov r0, r0, asr #2 - ldrsb r0, [r1, r0] - strb r0, [r6] - strltb r4, [r6, #1] - blt _021DD628 - ldrb r2, [sp, #8] - ldr r0, _021DD6AC ; =UNK04_0220C638 - ldrb r1, [sp, #9] - mov r2, r2, lsl #4 - and r2, r2, #0x3f - ldr r0, [r0] - orr r1, r2, r1, asr #4 - ldrsb r0, [r0, r1] - strb r0, [r6, #1] -_021DD628: - cmp r8, #3 - strltb r4, [r6, #2] - blt _021DD658 - ldrb r2, [sp, #9] - ldr r0, _021DD6AC ; =UNK04_0220C638 - ldrb r1, [sp, #0xa] - mov r2, r2, lsl #2 - and r2, r2, #0x3f - ldr r0, [r0] - orr r1, r2, r1, asr #6 - ldrsb r0, [r0, r1] - strb r0, [r6, #2] -_021DD658: - cmp r8, #4 - strltb r4, [r6, #3] - blt _021DD67C - ldr r0, _021DD6AC ; =UNK04_0220C638 - ldrb r1, [sp, #0xa] - ldr r2, [r0] - and r0, r1, #0x3f - ldrsb r0, [r2, r0] - strb r0, [r6, #3] -_021DD67C: - add sl, sl, sb - cmp sl, r7 - add r6, r6, #4 - bne _021DD580 -_021DD68C: - ldr r0, [sp] - sub r0, r6, r0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_021DD69C: .word 0xAAAAAAAB -_021DD6A0: .word 0x00000003 -_021DD6A4: .word 0x2AAAAAAB -_021DD6A8: .word 0x00000006 -_021DD6AC: .word UNK04_0220C638 - arm_func_end MOD04_021DD4FC - arm_func_start MOD04_021DD6B0 MOD04_021DD6B0: ; 0x021DD6B0 ldr r3, _021DD6CC ; =UNK04_02210508 @@ -55189,18 +54957,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220C638 -UNK04_0220C638: ; 0x0220C638 - .word UNK04_0220C63C - - .global UNK_0220C63C -UNK04_0220C63C: ; 0x0220C63C - .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C - .byte 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62 - .byte 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72 - .byte 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 - .byte 0x38, 0x39, 0x2E, 0x2D, 0x00, 0x00, 0x00, 0x00 - .global UNK_0220C680 UNK04_0220C680: ; 0x0220C680 .byte 0x01, 0x00, 0x01, 0x00 diff --git a/arm9/modules/04/asm/mod04_021DD36C.s b/arm9/modules/04/asm/mod04_021DD36C.s new file mode 100644 index 00000000..19966827 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD36C.s @@ -0,0 +1,248 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD36C +MOD04_021DD36C: ; 0x021DD36C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ands r4, r1, #3 + addne sp, sp, #8 + mvnne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r6, #0 + mov r5, r6 + cmp r1, #0 + bls _021DD3AC +_021DD394: + ldrsb r4, [r0, r5] + add r5, r5, #1 + cmp r4, #0x2a + addne r6, r6, #6 + cmp r5, r1 + blo _021DD394 +_021DD3AC: + cmp r2, #0 + moveq r0, r6, asr #2 + addeq r0, r6, r0, lsr #29 + addeq sp, sp, #8 + moveq r0, r0, asr #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, r6, asr #2 + add r4, r6, r4, lsr #29 + mov r4, r4, asr #3 + cmp r3, r4 + addlo sp, sp, #8 + mvnlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2] + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r6, r2 + add ip, sp, #0 + mov lr, #0 + mov r1, #0x3f + mov r3, #0x3e +_021DD408: + mov r8, lr + mov r5, ip +_021DD410: + ldrsb r7, [r0, r8] + cmp r7, #0x41 + blt _021DD42C + cmp r7, #0x5a + suble r7, r7, #0x41 + strleb r7, [r5] + ble _021DD474 +_021DD42C: + cmp r7, #0x61 + blt _021DD444 + cmp r7, #0x7a + suble r7, r7, #0x47 + strleb r7, [r5] + ble _021DD474 +_021DD444: + cmp r7, #0x30 + blt _021DD45C + cmp r7, #0x39 + addle r7, r7, #4 + strleb r7, [r5] + ble _021DD474 +_021DD45C: + cmp r7, #0x2e + streqb r3, [r5] + beq _021DD474 + cmp r7, #0x2d + streqb r1, [r5] + strneb lr, [r5] +_021DD474: + add r8, r8, #1 + cmp r8, #4 + add r5, r5, #1 + blt _021DD410 + ldrsb r8, [sp] + ldrsb r7, [sp, #1] + add r5, r6, #1 + mov r8, r8, lsl #2 + orr r7, r8, r7, asr #4 + sub r5, r5, r2 + strb r7, [r6] + cmp r5, r4 + add r0, r0, #4 + bge _021DD4F0 + ldrsb r8, [sp, #1] + ldrsb r7, [sp, #2] + add r5, r6, #2 + mov r8, r8, lsl #4 + orr r7, r8, r7, asr #2 + sub r5, r5, r2 + strb r7, [r6, #1] + cmp r5, r4 + bge _021DD4F0 + ldrsb r7, [sp, #2] + ldrsb r5, [sp, #3] + orr r5, r5, r7, lsl #6 + strb r5, [r6, #2] + add r6, r6, #3 + sub r5, r6, r2 + cmp r5, r4 + blt _021DD408 +_021DD4F0: + mov r0, r5 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end MOD04_021DD36C + + arm_func_start MOD04_021DD4FC +MOD04_021DD4FC: ; 0x021DD4FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r4, _021DD69C ; =0xAAAAAAAB + str r2, [sp] + umull r4, r5, r1, r4 + ldr r6, _021DD6A0 ; =0x00000003 + mov r5, r5, lsr #1 + umull r4, r5, r6, r5 + mov sl, r0 + subs r5, r1, r4 + movne r4, #4 + ldr r2, _021DD69C ; =0xAAAAAAAB + ldr r0, [sp] + moveq r4, #0 + cmp r0, #0 + umull r0, r2, r1, r2 + mov r2, r2, lsr #1 + addeq sp, sp, #0xc + add r0, r4, r2, lsl #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r3, r0 + addlo sp, sp, #0xc + mvnlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r7, sl, r1 + ldr r6, [sp] + cmp sl, r7 + beq _021DD68C + mov r0, #1 + mov r5, #0 + str r0, [sp, #4] + mov fp, #3 + mov r4, #0x2a +_021DD580: + sub sb, r7, sl + ldr r1, _021DD6A4 ; =0x2AAAAAAB + mov r0, sb, lsl #3 + smull r2, r3, r1, r0 + ldr r1, _021DD6A8 ; =0x00000006 + add r3, r3, r0, lsr #31 + smull r2, r3, r1, r3 + subs r3, r0, r2 + ldr r1, _021DD6A4 ; =0x2AAAAAAB + ldrne r8, [sp, #4] + smull r2, r3, r1, r0 + moveq r8, r5 + add r3, r3, r0, lsr #31 + cmp sb, #3 + movge sb, fp + add r0, sp, #8 + mov r1, r5 + mov r2, fp + add r8, r3, r8 + bl MI_CpuFill8 + mov r0, sl + add r1, sp, #8 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, _021DD6AC ; =UNK04_0220C638 + cmp r8, #2 + ldr r1, [r0] + ldrb r0, [sp, #8] + mov r0, r0, asr #2 + ldrsb r0, [r1, r0] + strb r0, [r6] + strltb r4, [r6, #1] + blt _021DD628 + ldrb r2, [sp, #8] + ldr r0, _021DD6AC ; =UNK04_0220C638 + ldrb r1, [sp, #9] + mov r2, r2, lsl #4 + and r2, r2, #0x3f + ldr r0, [r0] + orr r1, r2, r1, asr #4 + ldrsb r0, [r0, r1] + strb r0, [r6, #1] +_021DD628: + cmp r8, #3 + strltb r4, [r6, #2] + blt _021DD658 + ldrb r2, [sp, #9] + ldr r0, _021DD6AC ; =UNK04_0220C638 + ldrb r1, [sp, #0xa] + mov r2, r2, lsl #2 + and r2, r2, #0x3f + ldr r0, [r0] + orr r1, r2, r1, asr #6 + ldrsb r0, [r0, r1] + strb r0, [r6, #2] +_021DD658: + cmp r8, #4 + strltb r4, [r6, #3] + blt _021DD67C + ldr r0, _021DD6AC ; =UNK04_0220C638 + ldrb r1, [sp, #0xa] + ldr r2, [r0] + and r0, r1, #0x3f + ldrsb r0, [r2, r0] + strb r0, [r6, #3] +_021DD67C: + add sl, sl, sb + cmp sl, r7 + add r6, r6, #4 + bne _021DD580 +_021DD68C: + ldr r0, [sp] + sub r0, r6, r0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DD69C: .word 0xAAAAAAAB +_021DD6A0: .word 0x00000003 +_021DD6A4: .word 0x2AAAAAAB +_021DD6A8: .word 0x00000006 +_021DD6AC: .word UNK04_0220C638 + arm_func_end MOD04_021DD4FC + + .section .data + + .global UNK04_0220C638 +UNK04_0220C638: ; 0x0220C638 + .word UNK04_0220C63C + + .global UNK04_0220C63C +UNK04_0220C63C: ; 0x0220C63C + .asciz "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-" + + .balign 4, 0 -- cgit v1.2.3 From ffb7a81a6ed6cfc4239285157938dbc2e4446ebc Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 18:07:07 +0100 Subject: o --- arm9/arm9.lsf | 1 + arm9/global.inc | 1 + arm9/modules/04/asm/arm_04.s | 139 --------------------------------- arm9/modules/04/asm/mod04_021DD6B0.s | 145 +++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 139 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD6B0.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index fe408d4a..2eaaeb89 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -665,6 +665,7 @@ Overlay MODULE_04 Object mod04_021DC8A4.o Object mod04_021DCCC8.o Object mod04_021DD36C.o + Object mod04_021DD6B0.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 9a3575cb..f3916409 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6144,6 +6144,7 @@ .extern MOD04_021DD36C .extern MOD04_021DD4FC .extern MOD04_021DD6B0 +.extern MOD04_021DD6D4 .extern MOD04_021DD6F0 .extern MOD04_021DD718 .extern MOD04_021DD808 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 9aa15f74..23fd3766 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,137 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DD6B0 -MOD04_021DD6B0: ; 0x021DD6B0 - ldr r3, _021DD6CC ; =UNK04_02210508 - ldr r2, [r3] - cmp r2, #9 - ldrne r2, _021DD6D0 ; =UNK04_0221050C - strne r0, [r3] - strne r1, [r2] - bx lr - .align 2, 0 -_021DD6CC: .word UNK04_02210508 -_021DD6D0: .word UNK04_0221050C - arm_func_end MOD04_021DD6B0 - - arm_func_start MOD04_021DD6D4 -MOD04_021DD6D4: ; 0x021DD6D4 - ldr r0, _021DD6EC ; =UNK04_02210508 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_021DD6EC: .word UNK04_02210508 - arm_func_end MOD04_021DD6D4 - - arm_func_start MOD04_021DD6F0 -MOD04_021DD6F0: ; 0x021DD6F0 - ldr r1, _021DD710 ; =UNK04_02210508 - ldr r0, [r1] - cmp r0, #9 - movne r2, #0 - ldrne r0, _021DD714 ; =UNK04_0221050C - strne r2, [r1] - strne r2, [r0] - bx lr - .align 2, 0 -_021DD710: .word UNK04_02210508 -_021DD714: .word UNK04_0221050C - arm_func_end MOD04_021DD6F0 - - arm_func_start MOD04_021DD718 -MOD04_021DD718: ; 0x021DD718 - cmp r0, #0 - ldrne r2, _021DD800 ; =UNK04_0221050C - ldrne r2, [r2] - strne r2, [r0] - cmp r1, #0 - beq _021DD7F4 - ldr r0, _021DD804 ; =UNK04_02210508 - ldr r0, [r0] - cmp r0, #0x11 - addls pc, pc, r0, lsl #2 - b _021DD7EC -_021DD744: ; jump table - b _021DD7EC ; case 0 - b _021DD7BC ; case 1 - b _021DD78C ; case 2 - b _021DD78C ; case 3 - b _021DD78C ; case 4 - b _021DD78C ; case 5 - b _021DD798 ; case 6 - b _021DD7A4 ; case 7 - b _021DD78C ; case 8 - b _021DD7BC ; case 9 - b _021DD7B0 ; case 10 - b _021DD7B0 ; case 11 - b _021DD7B0 ; case 12 - b _021DD7B0 ; case 13 - b _021DD7C8 ; case 14 - b _021DD7D4 ; case 15 - b _021DD7E0 ; case 16 - b _021DD7D4 ; case 17 -_021DD78C: - mov r0, #6 - str r0, [r1] - b _021DD7F4 -_021DD798: - mov r0, #3 - str r0, [r1] - b _021DD7F4 -_021DD7A4: - mov r0, #4 - str r0, [r1] - b _021DD7F4 -_021DD7B0: - mov r0, #1 - str r0, [r1] - b _021DD7F4 -_021DD7BC: - mov r0, #7 - str r0, [r1] - b _021DD7F4 -_021DD7C8: - mov r0, #5 - str r0, [r1] - b _021DD7F4 -_021DD7D4: - mov r0, #6 - str r0, [r1] - b _021DD7F4 -_021DD7E0: - mov r0, #2 - str r0, [r1] - b _021DD7F4 -_021DD7EC: - mov r0, #0 - str r0, [r1] -_021DD7F4: - ldr r0, _021DD804 ; =UNK04_02210508 - ldr r0, [r0] - bx lr - .align 2, 0 -_021DD800: .word UNK04_0221050C -_021DD804: .word UNK04_02210508 - arm_func_end MOD04_021DD718 - - arm_func_start MOD04_021DD808 -MOD04_021DD808: ; 0x021DD808 - cmp r0, #0 - ldrne r1, _021DD824 ; =UNK04_0221050C - ldrne r1, [r1] - strne r1, [r0] - ldr r0, _021DD828 ; =UNK04_02210508 - ldr r0, [r0] - bx lr - .align 2, 0 -_021DD824: .word UNK04_0221050C -_021DD828: .word UNK04_02210508 - arm_func_end MOD04_021DD808 - arm_func_start MOD04_021DD82C MOD04_021DD82C: ; 0x021DD82C ldr ip, _021DD840 ; =MOD04_021DD904 @@ -58013,14 +57882,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210508 -UNK04_02210508: ; 0x02210508 - .space 0x4 - - .global UNK04_0221050C -UNK04_0221050C: ; 0x0221050C - .space 0x4 - .global UNK04_02210510 UNK04_02210510: ; 0x02210510 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DD6B0.s b/arm9/modules/04/asm/mod04_021DD6B0.s new file mode 100644 index 00000000..4b9455e6 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD6B0.s @@ -0,0 +1,145 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD6B0 +MOD04_021DD6B0: ; 0x021DD6B0 + ldr r3, _021DD6CC ; =UNK04_02210508 + ldr r2, [r3] + cmp r2, #9 + ldrne r2, _021DD6D0 ; =UNK04_0221050C + strne r0, [r3] + strne r1, [r2] + bx lr + .align 2, 0 +_021DD6CC: .word UNK04_02210508 +_021DD6D0: .word UNK04_0221050C + arm_func_end MOD04_021DD6B0 + + arm_func_start MOD04_021DD6D4 +MOD04_021DD6D4: ; 0x021DD6D4 + ldr r0, _021DD6EC ; =UNK04_02210508 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_021DD6EC: .word UNK04_02210508 + arm_func_end MOD04_021DD6D4 + + arm_func_start MOD04_021DD6F0 +MOD04_021DD6F0: ; 0x021DD6F0 + ldr r1, _021DD710 ; =UNK04_02210508 + ldr r0, [r1] + cmp r0, #9 + movne r2, #0 + ldrne r0, _021DD714 ; =UNK04_0221050C + strne r2, [r1] + strne r2, [r0] + bx lr + .align 2, 0 +_021DD710: .word UNK04_02210508 +_021DD714: .word UNK04_0221050C + arm_func_end MOD04_021DD6F0 + + arm_func_start MOD04_021DD718 +MOD04_021DD718: ; 0x021DD718 + cmp r0, #0 + ldrne r2, _021DD800 ; =UNK04_0221050C + ldrne r2, [r2] + strne r2, [r0] + cmp r1, #0 + beq _021DD7F4 + ldr r0, _021DD804 ; =UNK04_02210508 + ldr r0, [r0] + cmp r0, #0x11 + addls pc, pc, r0, lsl #2 + b _021DD7EC +_021DD744: ; jump table + b _021DD7EC ; case 0 + b _021DD7BC ; case 1 + b _021DD78C ; case 2 + b _021DD78C ; case 3 + b _021DD78C ; case 4 + b _021DD78C ; case 5 + b _021DD798 ; case 6 + b _021DD7A4 ; case 7 + b _021DD78C ; case 8 + b _021DD7BC ; case 9 + b _021DD7B0 ; case 10 + b _021DD7B0 ; case 11 + b _021DD7B0 ; case 12 + b _021DD7B0 ; case 13 + b _021DD7C8 ; case 14 + b _021DD7D4 ; case 15 + b _021DD7E0 ; case 16 + b _021DD7D4 ; case 17 +_021DD78C: + mov r0, #6 + str r0, [r1] + b _021DD7F4 +_021DD798: + mov r0, #3 + str r0, [r1] + b _021DD7F4 +_021DD7A4: + mov r0, #4 + str r0, [r1] + b _021DD7F4 +_021DD7B0: + mov r0, #1 + str r0, [r1] + b _021DD7F4 +_021DD7BC: + mov r0, #7 + str r0, [r1] + b _021DD7F4 +_021DD7C8: + mov r0, #5 + str r0, [r1] + b _021DD7F4 +_021DD7D4: + mov r0, #6 + str r0, [r1] + b _021DD7F4 +_021DD7E0: + mov r0, #2 + str r0, [r1] + b _021DD7F4 +_021DD7EC: + mov r0, #0 + str r0, [r1] +_021DD7F4: + ldr r0, _021DD804 ; =UNK04_02210508 + ldr r0, [r0] + bx lr + .align 2, 0 +_021DD800: .word UNK04_0221050C +_021DD804: .word UNK04_02210508 + arm_func_end MOD04_021DD718 + + arm_func_start MOD04_021DD808 +MOD04_021DD808: ; 0x021DD808 + cmp r0, #0 + ldrne r1, _021DD824 ; =UNK04_0221050C + ldrne r1, [r1] + strne r1, [r0] + ldr r0, _021DD828 ; =UNK04_02210508 + ldr r0, [r0] + bx lr + .align 2, 0 +_021DD824: .word UNK04_0221050C +_021DD828: .word UNK04_02210508 + arm_func_end MOD04_021DD808 + + .section .bss + + .global UNK04_02210508 +UNK04_02210508: ; 0x02210508 + .space 0x4 + + .global UNK04_0221050C +UNK04_0221050C: ; 0x0221050C + .space 0x4 \ No newline at end of file -- cgit v1.2.3 From 5eb6b79b7f664af76802e5765dfe1a301e3f85f7 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 18:11:59 +0100 Subject: d --- arm9/arm9.lsf | 1 + arm9/global.inc | 1 + arm9/modules/04/asm/arm_04.s | 139 --------------------------------- arm9/modules/04/asm/mod04_021DD82C.s | 145 +++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 139 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD82C.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 2eaaeb89..c7dbe13c 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -666,6 +666,7 @@ Overlay MODULE_04 Object mod04_021DCCC8.o Object mod04_021DD36C.o Object mod04_021DD6B0.o + Object mod04_021DD82C.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f3916409..450e43b9 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6152,6 +6152,7 @@ .extern MOD04_021DD844 .extern MOD04_021DD860 .extern MOD04_021DD904 +.extern MOD04_021DD924 .extern MOD04_021DD944 .extern MOD04_021DD968 .extern MOD04_021DD984 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 23fd3766..714a88a0 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,137 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DD82C -MOD04_021DD82C: ; 0x021DD82C - ldr ip, _021DD840 ; =MOD04_021DD904 - mov r1, r0 - mov r0, #5 - mov r2, #0 - bx ip - .align 2, 0 -_021DD840: .word MOD04_021DD904 - arm_func_end MOD04_021DD82C - - arm_func_start MOD04_021DD844 -MOD04_021DD844: ; 0x021DD844 - ldr ip, _021DD85C ; =MOD04_021DD8E8 - mov r2, r1 - mov r1, r0 - mov r3, r2 - mov r0, #5 - bx ip - .align 2, 0 -_021DD85C: .word MOD04_021DD8E8 - arm_func_end MOD04_021DD844 - - arm_func_start MOD04_021DD860 -MOD04_021DD860: ; 0x021DD860 - ldr ip, _021DD870 ; =MOD04_021DD944 - mov r1, r0 - mov r0, #5 - bx ip - .align 2, 0 -_021DD870: .word MOD04_021DD944 - arm_func_end MOD04_021DD860 - - arm_func_start MOD04_021DD874 -MOD04_021DD874: ; 0x021DD874 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr ip, _021DD8E0 ; =UNK04_02210514 - mov r4, r2 - mov r7, r3 - mov r5, r1 - ldr r2, [sp, #0x18] - ldr r3, [ip] - mov r1, r7 - mov r8, r0 - blx r3 - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r5, #0 - beq _021DD8D8 - mov r0, r5 - mov r1, r6 - mov r2, r7 - bl MI_CpuCopy8 - ldr r1, _021DD8E4 ; =UNK04_02210510 - mov r0, r8 - ldr r3, [r1] - mov r1, r5 - mov r2, r4 - blx r3 -_021DD8D8: - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_021DD8E0: .word UNK04_02210514 -_021DD8E4: .word UNK04_02210510 - arm_func_end MOD04_021DD874 - - arm_func_start MOD04_021DD8E8 -MOD04_021DD8E8: ; 0x021DD8E8 - stmdb sp!, {lr} - sub sp, sp, #4 - mov ip, #0x20 - str ip, [sp] - bl MOD04_021DD874 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DD8E8 - - arm_func_start MOD04_021DD904 -MOD04_021DD904: ; 0x021DD904 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r3, _021DD920 ; =UNK04_02210510 - ldr r3, [r3] - blx r3 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD920: .word UNK04_02210510 - arm_func_end MOD04_021DD904 - - arm_func_start MOD04_021DD924 -MOD04_021DD924: ; 0x021DD924 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r3, _021DD940 ; =UNK04_02210514 - ldr r3, [r3] - blx r3 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD940: .word UNK04_02210514 - arm_func_end MOD04_021DD924 - - arm_func_start MOD04_021DD944 -MOD04_021DD944: ; 0x021DD944 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r3, _021DD964 ; =UNK04_02210514 - mov r2, #0x20 - ldr r3, [r3] - blx r3 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD964: .word UNK04_02210514 - arm_func_end MOD04_021DD944 - - arm_func_start MOD04_021DD968 -MOD04_021DD968: ; 0x021DD968 - ldr r3, _021DD97C ; =UNK04_02210514 - ldr r2, _021DD980 ; =UNK04_02210510 - str r0, [r3] - str r1, [r2] - bx lr - .align 2, 0 -_021DD97C: .word UNK04_02210514 -_021DD980: .word UNK04_02210510 - arm_func_end MOD04_021DD968 - arm_func_start MOD04_021DD984 MOD04_021DD984: ; 0x021DD984 stmdb sp!, {lr} @@ -57882,14 +57751,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210510 -UNK04_02210510: ; 0x02210510 - .space 0x4 - - .global UNK04_02210514 -UNK04_02210514: ; 0x02210514 - .space 0x4 - .global UNK04_02210518 UNK04_02210518: ; 0x02210518 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DD82C.s b/arm9/modules/04/asm/mod04_021DD82C.s new file mode 100644 index 00000000..7c697698 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD82C.s @@ -0,0 +1,145 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD82C +MOD04_021DD82C: ; 0x021DD82C + ldr ip, _021DD840 ; =MOD04_021DD904 + mov r1, r0 + mov r0, #5 + mov r2, #0 + bx ip + .align 2, 0 +_021DD840: .word MOD04_021DD904 + arm_func_end MOD04_021DD82C + + arm_func_start MOD04_021DD844 +MOD04_021DD844: ; 0x021DD844 + ldr ip, _021DD85C ; =MOD04_021DD8E8 + mov r2, r1 + mov r1, r0 + mov r3, r2 + mov r0, #5 + bx ip + .align 2, 0 +_021DD85C: .word MOD04_021DD8E8 + arm_func_end MOD04_021DD844 + + arm_func_start MOD04_021DD860 +MOD04_021DD860: ; 0x021DD860 + ldr ip, _021DD870 ; =MOD04_021DD944 + mov r1, r0 + mov r0, #5 + bx ip + .align 2, 0 +_021DD870: .word MOD04_021DD944 + arm_func_end MOD04_021DD860 + + arm_func_start MOD04_021DD874 +MOD04_021DD874: ; 0x021DD874 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _021DD8E0 ; =UNK04_02210514 + mov r4, r2 + mov r7, r3 + mov r5, r1 + ldr r2, [sp, #0x18] + ldr r3, [ip] + mov r1, r7 + mov r8, r0 + blx r3 + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r5, #0 + beq _021DD8D8 + mov r0, r5 + mov r1, r6 + mov r2, r7 + bl MI_CpuCopy8 + ldr r1, _021DD8E4 ; =UNK04_02210510 + mov r0, r8 + ldr r3, [r1] + mov r1, r5 + mov r2, r4 + blx r3 +_021DD8D8: + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DD8E0: .word UNK04_02210514 +_021DD8E4: .word UNK04_02210510 + arm_func_end MOD04_021DD874 + + arm_func_start MOD04_021DD8E8 +MOD04_021DD8E8: ; 0x021DD8E8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0x20 + str ip, [sp] + bl MOD04_021DD874 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DD8E8 + + arm_func_start MOD04_021DD904 +MOD04_021DD904: ; 0x021DD904 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD920 ; =UNK04_02210510 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD920: .word UNK04_02210510 + arm_func_end MOD04_021DD904 + + arm_func_start MOD04_021DD924 +MOD04_021DD924: ; 0x021DD924 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD940 ; =UNK04_02210514 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD940: .word UNK04_02210514 + arm_func_end MOD04_021DD924 + + arm_func_start MOD04_021DD944 +MOD04_021DD944: ; 0x021DD944 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD964 ; =UNK04_02210514 + mov r2, #0x20 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD964: .word UNK04_02210514 + arm_func_end MOD04_021DD944 + + arm_func_start MOD04_021DD968 +MOD04_021DD968: ; 0x021DD968 + ldr r3, _021DD97C ; =UNK04_02210514 + ldr r2, _021DD980 ; =UNK04_02210510 + str r0, [r3] + str r1, [r2] + bx lr + .align 2, 0 +_021DD97C: .word UNK04_02210514 +_021DD980: .word UNK04_02210510 + arm_func_end MOD04_021DD968 + + .section .bss + + .global UNK04_02210510 +UNK04_02210510: ; 0x02210510 + .space 0x4 + + .global UNK04_02210514 +UNK04_02210514: ; 0x02210514 + .space 0x4 -- cgit v1.2.3 From 49db60f9daaaed66e77f57ba5a5e5570ba70ffc4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 18:24:26 +0100 Subject: u --- arm9/arm9.lsf | 1 + arm9/global.inc | 4 + arm9/modules/04/asm/arm_04.s | 452 +---------------------------------- arm9/modules/04/asm/mod04_021DD984.s | 452 +++++++++++++++++++++++++++++++++++ 4 files changed, 460 insertions(+), 449 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DD984.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c7dbe13c..63021023 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -667,6 +667,7 @@ Overlay MODULE_04 Object mod04_021DD36C.o Object mod04_021DD6B0.o Object mod04_021DD82C.o + Object mod04_021DD984.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 450e43b9..9eae5042 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6207,6 +6207,7 @@ .extern MOD04_021EB59C .extern MOD04_021EB9A4 .extern MOD04_021EB9D8 +.extern MOD04_021EBA28 .extern MOD04_021EBAB8 .extern MOD04_021EBAE8 .extern MOD04_021EBB80 @@ -8294,6 +8295,9 @@ .extern UNK04_0220CF18 .extern UNK04_0220D0CC .extern UNK04_0220D1A8 +.extern UNK04_0220D280 +.extern UNK04_0220D2A8 +.extern UNK04_0220D2CC .extern UNK04_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 714a88a0..32f47cef 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,448 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DD984 -MOD04_021DD984: ; 0x021DD984 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DDCE8 - bl MOD04_021DDB14 - cmp r0, #0 - beq _021DD9CC - bl MOD04_021EBAB8 - mov r2, r0 - cmp r2, #0x63 - ldr r1, _021DD9D8 ; =0xFFFF2D10 - movhi r2, #0x63 - mov r0, #8 - sub r1, r1, r2 - bl MOD04_021DD6B0 - bl MOD04_021DDBBC - add sp, sp, #4 - mov r0, #1 - ldmfd sp!, {pc} -_021DD9CC: - mov r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DD9D8: .word 0xFFFF2D10 - arm_func_end MOD04_021DD984 - - arm_func_start MOD04_021DD9DC -MOD04_021DD9DC: ; 0x021DD9DC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r1, #0 - mov r2, #0x3c - mov r4, r0 - bl MI_CpuFill8 - mov r0, #0xff - str r0, [r4, #4] - bl MOD04_021DDC1C - cmp r0, #4 - addne sp, sp, #0x18 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - bl MOD04_021EBAB8 - str r0, [r4] - bl OS_DisableInterrupts - mov r6, r0 - bl WCM_GetApMacAddress - mov r5, r0 - mov r1, #6 - bl DC_InvalidateRange - cmp r5, #0 - bne _021DDA4C - mov r0, r6 - bl OS_RestoreInterrupts - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DDA4C: - mov r0, r5 - add r1, r4, #0x33 - mov r2, #6 - bl MI_CpuCopy8 - ldr r0, [r4] - cmp r0, #0 - blt _021DDAB0 - cmp r0, #3 - bge _021DDAB0 - add r0, sp, #0 - bl WCM_GetApEssid - mov r5, r0 - mov r1, #0x20 - bl DC_InvalidateRange - cmp r5, #0 - bne _021DDAA0 - mov r0, r6 - bl OS_RestoreInterrupts - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021DDAA0: - ldrh r2, [sp] - mov r0, r5 - add r1, r4, #0x12 - bl MI_CpuCopy8 -_021DDAB0: - mov r0, r6 - bl OS_RestoreInterrupts - add r0, sp, #2 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - add r0, sp, #2 - bl MOD04_021EBA28 - cmp r0, #1 - bne _021DDAFC - ldrb r1, [sp, #8] - cmp r1, #0 - beq _021DDAFC - sub r3, r1, #0x30 - add r0, sp, #9 - add r1, r4, #8 - mov r2, #9 - str r3, [r4, #4] - bl MI_CpuCopy8 -_021DDAFC: - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DD9DC - - arm_func_start MOD04_021DDB08 -MOD04_021DDB08: ; 0x021DDB08 - ldr ip, _021DDB10 ; =WCM_GetLinkLevel - bx ip - .align 2, 0 -_021DDB10: .word WCM_GetLinkLevel - arm_func_end MOD04_021DDB08 - - arm_func_start MOD04_021DDB14 -MOD04_021DDB14: ; 0x021DDB14 - ldr r0, _021DDB3C ; =UNK04_02210518 - ldr r0, [r0] - cmp r0, #0 - beq _021DDB34 - ldrh r0, [r0, #4] - cmp r0, #6 - moveq r0, #1 - bxeq lr -_021DDB34: - mov r0, #0 - bx lr - .align 2, 0 -_021DDB3C: .word UNK04_02210518 - arm_func_end MOD04_021DDB14 - - arm_func_start MOD04_021DDB40 -MOD04_021DDB40: ; 0x021DDB40 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDBB8 ; =UNK04_02210518 - ldr r2, [r0] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - ldrh r1, [r2, #4] - cmp r1, #8 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - cmp r1, #1 - moveq r1, #0 - streq r1, [r0] - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - mov r0, #5 - strh r0, [r2, #4] - bl MOD04_021EB9D8 - cmp r0, #0 - ldrne r0, _021DDBB8 ; =UNK04_02210518 - movne r1, #0 - strne r1, [r0] - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDBB8: .word UNK04_02210518 - arm_func_end MOD04_021DDB40 - - arm_func_start MOD04_021DDBBC -MOD04_021DDBBC: ; 0x021DDBBC - stmdb sp!, {r4, lr} - ldr r0, _021DDC18 ; =UNK04_02210518 - ldr r1, [r0] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - ldrh r1, [r1, #4] - cmp r1, #1 - moveq r1, #0 - streq r1, [r0] - ldmeqia sp!, {r4, pc} - bl MOD04_021EB9D8 - cmp r0, #0 - bne _021DDC08 - mov r4, #0xa -_021DDBF4: - mov r0, r4 - bl OS_Sleep - bl MOD04_021EB9D8 - cmp r0, #0 - beq _021DDBF4 -_021DDC08: - ldr r0, _021DDC18 ; =UNK04_02210518 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_021DDC18: .word UNK04_02210518 - arm_func_end MOD04_021DDBBC - - arm_func_start MOD04_021DDC1C -MOD04_021DDC1C: ; 0x021DDC1C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDCE4 ; =UNK04_02210518 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldrh r0, [r0, #4] - cmp r0, #1 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021EBAE8 - mov r1, r0 - cmp r1, #5 - bne _021DDC80 - ldr r1, _021DDCE4 ; =UNK04_02210518 - mov r0, #4 - ldr r3, [r1] - mov r2, #1 - strh r0, [r3, #4] - ldr r1, [r1] - add sp, sp, #4 - strh r2, [r1, #6] - ldmfd sp!, {pc} -_021DDC80: - cmp r1, #0 - bge _021DDCD8 - mvn r0, #9 - cmp r1, r0 - blt _021DDCB8 - sub r1, r1, #0x2bc - mov r0, #9 - bl MOD04_021DD6B0 - ldr r1, _021DDCE4 ; =UNK04_02210518 - mov r0, #8 - ldr r1, [r1] - add sp, sp, #4 - strh r0, [r1, #4] - ldmfd sp!, {pc} -_021DDCB8: - mov r0, #5 - bl MOD04_021DD6B0 - ldr r1, _021DDCE4 ; =UNK04_02210518 - mov r0, #7 - ldr r1, [r1] - add sp, sp, #4 - strh r0, [r1, #4] - ldmfd sp!, {pc} -_021DDCD8: - mov r0, #2 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDCE4: .word UNK04_02210518 - arm_func_end MOD04_021DDC1C - - arm_func_start MOD04_021DDCE8 -MOD04_021DDCE8: ; 0x021DDCE8 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDD78 ; =UNK04_02210518 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldrh r0, [r1, #4] - cmp r0, #2 - bne _021DDD28 - bl MOD04_021EBB80 - ldr r1, _021DDD78 ; =UNK04_02210518 - add sp, sp, #4 - ldr r1, [r1] - str r0, [r1] - ldmfd sp!, {pc} -_021DDD28: - cmp r0, #4 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldrh r0, [r1, #6] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl WCM_GetPhase - cmp r0, #9 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - ldr r0, _021DDD78 ; =UNK04_02210518 - mov r3, #0 - ldr r2, [r0] - mov r1, #6 - strh r3, [r2, #6] - ldr r0, [r0] - strh r1, [r0, #4] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDD78: .word UNK04_02210518 - arm_func_end MOD04_021DDCE8 - - arm_func_start MOD04_021DDD7C -MOD04_021DDD7C: ; 0x021DDD7C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DDDC8 ; =UNK04_02210518 - ldr r1, [r0] - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - ldr r0, [r1] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - mov r0, #3 - strh r0, [r1, #4] - bl MOD04_021DDC1C - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDDC8: .word UNK04_02210518 - arm_func_end MOD04_021DDD7C - - arm_func_start MOD04_021DDDCC -MOD04_021DDDCC: ; 0x021DDDCC - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _021DDE70 ; =UNK04_02210518 - ldr r0, [r0] - cmp r0, #0 - beq _021DDE5C - ldrh r0, [r0, #4] - cmp r0, #1 - addne sp, sp, #0xc - ldmneia sp!, {pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - ldr r0, _021DDE70 ; =UNK04_02210518 - ldr r3, _021DDE74 ; =MOD04_021DD944 - ldr lr, [r0] - ldr r2, _021DDE78 ; =MOD04_021DD904 - ldrh ip, [lr, #8] - add r0, sp, #0 - mov r1, #2 - strb ip, [sp, #8] - ldrh ip, [lr, #0xa] - strb ip, [sp, #9] - str r3, [sp] - str r2, [sp, #4] - strh r1, [lr, #4] - bl MOD04_021EBC60 - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {pc} - mov r0, #9 - mvn r1, #5 - bl MOD04_021DD6B0 - add sp, sp, #0xc - ldmfd sp!, {pc} -_021DDE5C: - mov r0, #9 - mvn r1, #3 - bl MOD04_021DD6B0 - add sp, sp, #0xc - ldmfd sp!, {pc} - .align 2, 0 -_021DDE70: .word UNK04_02210518 -_021DDE74: .word MOD04_021DD944 -_021DDE78: .word MOD04_021DD904 - arm_func_end MOD04_021DDDCC - - arm_func_start MOD04_021DDE7C -MOD04_021DDE7C: ; 0x021DDE7C - stmdb sp!, {lr} - sub sp, sp, #4 - cmp r0, #0 - beq _021DDEA4 - cmp r0, #1 - beq _021DDEB4 - cmp r0, #2 - beq _021DDEC4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021DDEA4: - ldr r0, _021DDED4 ; =UNK04_0220D280 - bl MOD04_021D9C1C - add sp, sp, #4 - ldmfd sp!, {pc} -_021DDEB4: - ldr r0, _021DDED8 ; =UNK04_0220D2A8 - bl MOD04_021D9C1C - add sp, sp, #4 - ldmfd sp!, {pc} -_021DDEC4: - ldr r0, _021DDEDC ; =UNK04_0220D2CC - bl MOD04_021D9C1C - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DDED4: .word UNK04_0220D280 -_021DDED8: .word UNK04_0220D2A8 -_021DDEDC: .word UNK04_0220D2CC - arm_func_end MOD04_021DDE7C - - arm_func_start MOD04_021DDEE0 -MOD04_021DDEE0: ; 0x021DDEE0 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _021DDF3C ; =UNK04_02210518 - mov r6, r0 - ldr r2, [r2] - mov r5, r1 - mov r4, r3 - cmp r2, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - strh r5, [r6, #8] - mov r0, #1 - strh r0, [r6, #0xa] - strh r0, [r6, #4] - mov r0, #0 - ldr r1, _021DDF3C ; =UNK04_02210518 - strh r0, [r6, #6] - str r6, [r1] - bl MOD04_021DDE7C - mov r0, r4 - bl CPS_SetSslHandshakePriority - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DDF3C: .word UNK04_02210518 - arm_func_end MOD04_021DDEE0 - arm_func_start MOD04_021DDF40 MOD04_021DDF40: ; 0x021DDF40 ldr ip, _021DDF48 ; =MOD04_021D9974 @@ -55050,19 +54608,19 @@ UNK04_0220D200: ; 0x0220D200 .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00 - .global UNK_0220D280 + .global UNK04_0220D280 UNK04_0220D280: ; 0x0220D280 .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x74, 0x65, 0x73, 0x74 .byte 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65 .byte 0x74, 0x2F, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D2A8 + .global UNK04_0220D2A8 UNK04_0220D2A8: ; 0x0220D2A8 .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x64, 0x65, 0x76, 0x2E .byte 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74 .byte 0x2F, 0x61, 0x63, 0x00 - .global UNK_0220D2CC + .global UNK04_0220D2CC UNK04_0220D2CC: ; 0x0220D2CC .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 @@ -57751,10 +57309,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210518 -UNK04_02210518: ; 0x02210518 - .space 0x4 - .global UNK04_0221051C UNK04_0221051C: ; 0x0221051C .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DD984.s b/arm9/modules/04/asm/mod04_021DD984.s new file mode 100644 index 00000000..c66ab3dd --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DD984.s @@ -0,0 +1,452 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DD984 +MOD04_021DD984: ; 0x021DD984 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DDCE8 + bl MOD04_021DDB14 + cmp r0, #0 + beq _021DD9CC + bl MOD04_021EBAB8 + mov r2, r0 + cmp r2, #0x63 + ldr r1, _021DD9D8 ; =0xFFFF2D10 + movhi r2, #0x63 + mov r0, #8 + sub r1, r1, r2 + bl MOD04_021DD6B0 + bl MOD04_021DDBBC + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021DD9CC: + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD9D8: .word 0xFFFF2D10 + arm_func_end MOD04_021DD984 + + arm_func_start MOD04_021DD9DC +MOD04_021DD9DC: ; 0x021DD9DC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r1, #0 + mov r2, #0x3c + mov r4, r0 + bl MI_CpuFill8 + mov r0, #0xff + str r0, [r4, #4] + bl MOD04_021DDC1C + cmp r0, #4 + addne sp, sp, #0x18 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD04_021EBAB8 + str r0, [r4] + bl OS_DisableInterrupts + mov r6, r0 + bl WCM_GetApMacAddress + mov r5, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DDA4C + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DDA4C: + mov r0, r5 + add r1, r4, #0x33 + mov r2, #6 + bl MI_CpuCopy8 + ldr r0, [r4] + cmp r0, #0 + blt _021DDAB0 + cmp r0, #3 + bge _021DDAB0 + add r0, sp, #0 + bl WCM_GetApEssid + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DDAA0 + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DDAA0: + ldrh r2, [sp] + mov r0, r5 + add r1, r4, #0x12 + bl MI_CpuCopy8 +_021DDAB0: + mov r0, r6 + bl OS_RestoreInterrupts + add r0, sp, #2 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + add r0, sp, #2 + bl MOD04_021EBA28 + cmp r0, #1 + bne _021DDAFC + ldrb r1, [sp, #8] + cmp r1, #0 + beq _021DDAFC + sub r3, r1, #0x30 + add r0, sp, #9 + add r1, r4, #8 + mov r2, #9 + str r3, [r4, #4] + bl MI_CpuCopy8 +_021DDAFC: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DD9DC + + arm_func_start MOD04_021DDB08 +MOD04_021DDB08: ; 0x021DDB08 + ldr ip, _021DDB10 ; =WCM_GetLinkLevel + bx ip + .align 2, 0 +_021DDB10: .word WCM_GetLinkLevel + arm_func_end MOD04_021DDB08 + + arm_func_start MOD04_021DDB14 +MOD04_021DDB14: ; 0x021DDB14 + ldr r0, _021DDB3C ; =UNK04_02210518 + ldr r0, [r0] + cmp r0, #0 + beq _021DDB34 + ldrh r0, [r0, #4] + cmp r0, #6 + moveq r0, #1 + bxeq lr +_021DDB34: + mov r0, #0 + bx lr + .align 2, 0 +_021DDB3C: .word UNK04_02210518 + arm_func_end MOD04_021DDB14 + + arm_func_start MOD04_021DDB40 +MOD04_021DDB40: ; 0x021DDB40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDBB8 ; =UNK04_02210518 + ldr r2, [r0] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldrh r1, [r2, #4] + cmp r1, #8 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + mov r0, #5 + strh r0, [r2, #4] + bl MOD04_021EB9D8 + cmp r0, #0 + ldrne r0, _021DDBB8 ; =UNK04_02210518 + movne r1, #0 + strne r1, [r0] + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDBB8: .word UNK04_02210518 + arm_func_end MOD04_021DDB40 + + arm_func_start MOD04_021DDBBC +MOD04_021DDBBC: ; 0x021DDBBC + stmdb sp!, {r4, lr} + ldr r0, _021DDC18 ; =UNK04_02210518 + ldr r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldrh r1, [r1, #4] + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + ldmeqia sp!, {r4, pc} + bl MOD04_021EB9D8 + cmp r0, #0 + bne _021DDC08 + mov r4, #0xa +_021DDBF4: + mov r0, r4 + bl OS_Sleep + bl MOD04_021EB9D8 + cmp r0, #0 + beq _021DDBF4 +_021DDC08: + ldr r0, _021DDC18 ; =UNK04_02210518 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021DDC18: .word UNK04_02210518 + arm_func_end MOD04_021DDBBC + + arm_func_start MOD04_021DDC1C +MOD04_021DDC1C: ; 0x021DDC1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDCE4 ; =UNK04_02210518 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldrh r0, [r0, #4] + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021EBAE8 + mov r1, r0 + cmp r1, #5 + bne _021DDC80 + ldr r1, _021DDCE4 ; =UNK04_02210518 + mov r0, #4 + ldr r3, [r1] + mov r2, #1 + strh r0, [r3, #4] + ldr r1, [r1] + add sp, sp, #4 + strh r2, [r1, #6] + ldmfd sp!, {pc} +_021DDC80: + cmp r1, #0 + bge _021DDCD8 + mvn r0, #9 + cmp r1, r0 + blt _021DDCB8 + sub r1, r1, #0x2bc + mov r0, #9 + bl MOD04_021DD6B0 + ldr r1, _021DDCE4 ; =UNK04_02210518 + mov r0, #8 + ldr r1, [r1] + add sp, sp, #4 + strh r0, [r1, #4] + ldmfd sp!, {pc} +_021DDCB8: + mov r0, #5 + bl MOD04_021DD6B0 + ldr r1, _021DDCE4 ; =UNK04_02210518 + mov r0, #7 + ldr r1, [r1] + add sp, sp, #4 + strh r0, [r1, #4] + ldmfd sp!, {pc} +_021DDCD8: + mov r0, #2 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDCE4: .word UNK04_02210518 + arm_func_end MOD04_021DDC1C + + arm_func_start MOD04_021DDCE8 +MOD04_021DDCE8: ; 0x021DDCE8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDD78 ; =UNK04_02210518 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldrh r0, [r1, #4] + cmp r0, #2 + bne _021DDD28 + bl MOD04_021EBB80 + ldr r1, _021DDD78 ; =UNK04_02210518 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1] + ldmfd sp!, {pc} +_021DDD28: + cmp r0, #4 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r0, [r1, #6] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl WCM_GetPhase + cmp r0, #9 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DDD78 ; =UNK04_02210518 + mov r3, #0 + ldr r2, [r0] + mov r1, #6 + strh r3, [r2, #6] + ldr r0, [r0] + strh r1, [r0, #4] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDD78: .word UNK04_02210518 + arm_func_end MOD04_021DDCE8 + + arm_func_start MOD04_021DDD7C +MOD04_021DDD7C: ; 0x021DDD7C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDDC8 ; =UNK04_02210518 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldr r0, [r1] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r0, #3 + strh r0, [r1, #4] + bl MOD04_021DDC1C + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDDC8: .word UNK04_02210518 + arm_func_end MOD04_021DDD7C + + arm_func_start MOD04_021DDDCC +MOD04_021DDDCC: ; 0x021DDDCC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _021DDE70 ; =UNK04_02210518 + ldr r0, [r0] + cmp r0, #0 + beq _021DDE5C + ldrh r0, [r0, #4] + cmp r0, #1 + addne sp, sp, #0xc + ldmneia sp!, {pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _021DDE70 ; =UNK04_02210518 + ldr r3, _021DDE74 ; =MOD04_021DD944 + ldr lr, [r0] + ldr r2, _021DDE78 ; =MOD04_021DD904 + ldrh ip, [lr, #8] + add r0, sp, #0 + mov r1, #2 + strb ip, [sp, #8] + ldrh ip, [lr, #0xa] + strb ip, [sp, #9] + str r3, [sp] + str r2, [sp, #4] + strh r1, [lr, #4] + bl MOD04_021EBC60 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + mov r0, #9 + mvn r1, #5 + bl MOD04_021DD6B0 + add sp, sp, #0xc + ldmfd sp!, {pc} +_021DDE5C: + mov r0, #9 + mvn r1, #3 + bl MOD04_021DD6B0 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021DDE70: .word UNK04_02210518 +_021DDE74: .word MOD04_021DD944 +_021DDE78: .word MOD04_021DD904 + arm_func_end MOD04_021DDDCC + + arm_func_start MOD04_021DDE7C +MOD04_021DDE7C: ; 0x021DDE7C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021DDEA4 + cmp r0, #1 + beq _021DDEB4 + cmp r0, #2 + beq _021DDEC4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEA4: + ldr r0, _021DDED4 ; =UNK04_0220D280 + bl MOD04_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEB4: + ldr r0, _021DDED8 ; =UNK04_0220D2A8 + bl MOD04_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEC4: + ldr r0, _021DDEDC ; =UNK04_0220D2CC + bl MOD04_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDED4: .word UNK04_0220D280 +_021DDED8: .word UNK04_0220D2A8 +_021DDEDC: .word UNK04_0220D2CC + arm_func_end MOD04_021DDE7C + + arm_func_start MOD04_021DDEE0 +MOD04_021DDEE0: ; 0x021DDEE0 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _021DDF3C ; =UNK04_02210518 + mov r6, r0 + ldr r2, [r2] + mov r5, r1 + mov r4, r3 + cmp r2, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + strh r5, [r6, #8] + mov r0, #1 + strh r0, [r6, #0xa] + strh r0, [r6, #4] + mov r0, #0 + ldr r1, _021DDF3C ; =UNK04_02210518 + strh r0, [r6, #6] + str r6, [r1] + bl MOD04_021DDE7C + mov r0, r4 + bl CPS_SetSslHandshakePriority + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DDF3C: .word UNK04_02210518 + arm_func_end MOD04_021DDEE0 + + .section .bss + + .global UNK04_02210518 +UNK04_02210518: ; 0x02210518 + .space 0x4 -- cgit v1.2.3 From 2958ecc0fc0aea7c3e12138b2c7caf6fcd770295 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 19:28:41 +0100 Subject: l --- arm9/arm9.lsf | 1 + arm9/global.inc | 3 - arm9/modules/04/asm/arm_04.s | 372 ----------------------------- arm9/modules/04/asm/mod04_021DD984.s | 17 ++ arm9/modules/04/asm/mod04_0220C680_certs.s | 325 +++++++++++++++++++++++++ 5 files changed, 343 insertions(+), 375 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_0220C680_certs.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 63021023..7a71025b 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -665,6 +665,7 @@ Overlay MODULE_04 Object mod04_021DC8A4.o Object mod04_021DCCC8.o Object mod04_021DD36C.o + Object mod04_0220C680_certs.o Object mod04_021DD6B0.o Object mod04_021DD82C.o Object mod04_021DD984.o diff --git a/arm9/global.inc b/arm9/global.inc index 9eae5042..f2607bf6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8295,9 +8295,6 @@ .extern UNK04_0220CF18 .extern UNK04_0220D0CC .extern UNK04_0220D1A8 -.extern UNK04_0220D280 -.extern UNK04_0220D2A8 -.extern UNK04_0220D2CC .extern UNK04_02210480 .extern UNK04_02210484 .extern UNK04_02210488 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 32f47cef..645fa1b7 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -54253,378 +54253,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220C680 -UNK04_0220C680: ; 0x0220C680 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220C684 -UNK04_0220C684: ; 0x0220C684 - .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003 - .word UNK04_0220C680 - - .global UNK_0220C698 -UNK04_0220C698: ; 0x0220C698 - .byte 0x42, 0x45, 0x2C, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x6E - .byte 0x76, 0x2D, 0x73, 0x61, 0x2C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x47 - .byte 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43 - .byte 0x41, 0x00, 0x00, 0x00 - - .global UNK_0220C6CC -UNK04_0220C6CC: ; 0x0220C6CC - .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB - .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD - .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89 - .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70 - .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C - .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35 - .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39 - .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC - .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74 - .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5 - .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F - .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77 - .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9 - .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19 - .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C - .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F - .byte 0x7F, 0x93, 0x90, 0xCF - - .global UNK_0220C7CC -UNK04_0220C7CC: ; 0x0220C7CC - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220C7D0 -UNK04_0220C7D0: ; 0x0220C7D0 - .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003 - .word UNK04_0220C7CC - - .global UNK_0220C7E4 -UNK04_0220C7E4: ; 0x0220C7E4 - .byte 0x49, 0x45, 0x2C, 0x20 - .byte 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x2C, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72 - .byte 0x54, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65 - .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220C81C -UNK04_0220C81C: ; 0x0220C81C - .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A - .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29 - .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2 - .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52 - .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8 - .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8 - .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F - .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12 - .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68 - .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC - .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C - .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F - .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9 - .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99 - .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68 - .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90 - .byte 0xDC, 0x27, 0x1A, 0x39 - - .global UNK_0220C91C -UNK04_0220C91C: ; 0x0220C91C - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220C920 -UNK04_0220C920: ; 0x0220C920 - .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003 - .word UNK04_0220C91C - - .global UNK_0220C934 -UNK04_0220C934: ; 0x0220C934 - .byte 0x55, 0x53, 0x2C, 0x20 - .byte 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C - .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20 - .byte 0x53, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C - .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20 - .byte 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00 - - .global UNK_0220C984 -UNK04_0220C984: ; 0x0220C984 - .byte 0x95, 0x0F, 0xA0, 0xB6 - .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B - .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A - .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F - .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95 - .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9 - .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85 - .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80 - .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99 - - .global UNK_0220CA04 -UNK04_0220CA04: ; 0x0220CA04 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220CA08 -UNK04_0220CA08: ; 0x0220CA08 - .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003 - .word UNK04_0220CA04 - - .global UNK_0220CA1C -UNK04_0220CA1C: ; 0x0220CA1C - .byte 0x55, 0x53, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70 - .byte 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62 - .byte 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220CA48 -UNK04_0220CA48: ; 0x0220CA48 - .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9 - .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD - .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66 - .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5 - .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF - .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25 - .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24 - .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03 - - .global UNK_0220CAC8 -UNK04_0220CAC8: ; 0x0220CAC8 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220CACC -UNK04_0220CACC: ; 0x0220CACC - .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003 - .word UNK04_0220CAC8 - - .global UNK_0220CAE0 -UNK04_0220CAE0: ; 0x0220CAE0 - .byte 0x55, 0x53, 0x2C, 0x20, 0x57, 0x61, 0x73, 0x68 - .byte 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F - .byte 0x20, 0x6F, 0x66, 0x20, 0x41, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x49, 0x6E, 0x63, 0x2C - .byte 0x20, 0x4E, 0x4F, 0x41, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x20, 0x43 - .byte 0x41, 0x2C, 0x20, 0x63, 0x61, 0x40, 0x6E, 0x6F, 0x61, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E - .byte 0x64, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00 - - .global UNK_0220CB30 -UNK04_0220CB30: ; 0x0220CB30 - .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF - .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21 - .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD - .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B - .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40 - .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31 - .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66 - .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C - .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B - - .global UNK_0220CBB0 -UNK04_0220CBB0: ; 0x0220CBB0 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220CBB4 -UNK04_0220CBB4: ; 0x0220CBB4 - .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003 - .word UNK04_0220CBB0 - - .global UNK_0220CBC8 -UNK04_0220CBC8: ; 0x0220CBC8 - .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE - .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A - .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17 - .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0 - .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C - .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F - .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD - .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37 - - .global UNK_0220CC48 -UNK04_0220CC48: ; 0x0220CC48 - .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65 - .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61 - .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63 - .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69 - .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6D, 0x69 - .byte 0x75, 0x6D, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x70, 0x72 - .byte 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x2D, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61 - .byte 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00 - - .global UNK_0220CCD0 -UNK04_0220CCD0: ; 0x0220CCD0 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220CCD4 -UNK04_0220CCD4: ; 0x0220CCD4 - .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003 - .word UNK04_0220CCD0 - - .global UNK_0220CCE8 -UNK04_0220CCE8: ; 0x0220CCE8 - .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65 - .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61 - .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63 - .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69 - .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65 - .byte 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2D, 0x63, 0x65, 0x72 - .byte 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00, 0x00 - - .global UNK_0220CD68 -UNK04_0220CD68: ; 0x0220CD68 - .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75 - .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20 - .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15 - .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD - .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B - .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C - .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B - .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D - - .global UNK_0220CDE8 -UNK04_0220CDE8: ; 0x0220CDE8 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220CDEC -UNK04_0220CDEC: ; 0x0220CDEC - .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003 - .word UNK04_0220CDE8 - - .global UNK_0220CE00 -UNK04_0220CE00: ; 0x0220CE00 - .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0 - .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D - .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F - .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47 - .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77 - .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D - .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97 - .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61 - .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67 - - .global UNK_0220CE80 -UNK04_0220CE80: ; 0x0220CE80 - .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69 - .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73 - .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61 - .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x32, 0x2C - .byte 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69 - .byte 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61 - .byte 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E - .byte 0x6C, 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75 - .byte 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00 - - .global UNK_0220CF14 -UNK04_0220CF14: ; 0x0220CF14 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220CF18 -UNK04_0220CF18: ; 0x0220CF18 - .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003 - .word UNK04_0220CF14 - - .global UNK_0220CF2C -UNK04_0220CF2C: ; 0x0220CF2C - .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E - .byte 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E - .byte 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x2C, 0x20 - .byte 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67 - .byte 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75 - .byte 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C - .byte 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, 0x61, 0x73 - .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61 - .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x33, 0x00 - - .global UNK_0220CFC8 -UNK04_0220CFC8: ; 0x0220CFC8 - .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9 - .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5 - .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D - .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67 - .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69 - .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0 - .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC - .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3 - .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED - .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF - .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76 - .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8 - .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2 - .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63 - .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D - .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97 - - .global UNK_0220D0C8 -UNK04_0220D0C8: ; 0x0220D0C8 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220D0CC -UNK04_0220D0CC: ; 0x0220D0CC - .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003 - .word UNK04_0220D0C8 - - .global UNK_0220D0E0 -UNK04_0220D0E0: ; 0x0220D0E0 - .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69 - .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73 - .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61 - .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E - .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00 - - .global UNK_0220D124 -UNK04_0220D124: ; 0x0220D124 - .byte 0xC9, 0x5C, 0x59, 0x9E - .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45 - .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25 - .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00 - .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6 - .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F - .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20 - .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15 - .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7 - - .global UNK_0220D1A4 -UNK04_0220D1A4: ; 0x0220D1A4 - .byte 0x01, 0x00, 0x01, 0x00 - - .global UNK04_0220D1A8 -UNK04_0220D1A8: ; 0x0220D1A8 - .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003 - .word UNK04_0220D1A4 - - .global UNK_0220D1BC -UNK04_0220D1BC: ; 0x0220D1BC - .byte 0x55, 0x53, 0x2C, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x61, 0x74, 0x61 - .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C - .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74 - .byte 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00 - - .global UNK_0220D200 -UNK04_0220D200: ; 0x0220D200 - .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A - .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB - .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82 - .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05 - .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D - .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98 - .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49 - .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD - .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00 - - .global UNK04_0220D280 -UNK04_0220D280: ; 0x0220D280 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x74, 0x65, 0x73, 0x74 - .byte 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65 - .byte 0x74, 0x2F, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00 - - .global UNK04_0220D2A8 -UNK04_0220D2A8: ; 0x0220D2A8 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x64, 0x65, 0x76, 0x2E - .byte 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74 - .byte 0x2F, 0x61, 0x63, 0x00 - - .global UNK04_0220D2CC -UNK04_0220D2CC: ; 0x0220D2CC - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74 - .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00 - .global UNK_0220D2EC UNK04_0220D2EC: ; 0x0220D2EC .byte 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/04/asm/mod04_021DD984.s b/arm9/modules/04/asm/mod04_021DD984.s index c66ab3dd..fa1292f3 100644 --- a/arm9/modules/04/asm/mod04_021DD984.s +++ b/arm9/modules/04/asm/mod04_021DD984.s @@ -445,6 +445,23 @@ MOD04_021DDEE0: ; 0x021DDEE0 _021DDF3C: .word UNK04_02210518 arm_func_end MOD04_021DDEE0 + .section .data + + .global UNK04_0220D280 +UNK04_0220D280: ; 0x0220D280 + .asciz "https://nas.test.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220D2A8 +UNK04_0220D2A8: ; 0x0220D2A8 + .asciz "https://nas.dev.nintendowifi.net/ac" + + .balign 4, 0 + .global UNK04_0220D2CC +UNK04_0220D2CC: ; 0x0220D2CC + .asciz "https://nas.nintendowifi.net/ac" + + .balign 4, 0 .section .bss .global UNK04_02210518 diff --git a/arm9/modules/04/asm/mod04_0220C680_certs.s b/arm9/modules/04/asm/mod04_0220C680_certs.s new file mode 100644 index 00000000..0117740f --- /dev/null +++ b/arm9/modules/04/asm/mod04_0220C680_certs.s @@ -0,0 +1,325 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .data + .balign 4, 0 + + .global UNK04_0220C680 +UNK04_0220C680: ; 0x0220C680 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220C684 +UNK04_0220C684: ; 0x0220C684 + .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003 + .word UNK04_0220C680 + + .global UNK04_0220C698 +UNK04_0220C698: ; 0x0220C698 + .asciz "BE, GlobalSign nv-sa, Root CA, GlobalSign Root CA" + + .balign 4, 0 + .global UNK04_0220C6CC +UNK04_0220C6CC: ; 0x0220C6CC + .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB + .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD + .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89 + .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70 + .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C + .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35 + .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39 + .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC + .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74 + .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5 + .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F + .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77 + .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9 + .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19 + .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C + .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F + .byte 0x7F, 0x93, 0x90, 0xCF + + .global UNK04_0220C7CC +UNK04_0220C7CC: ; 0x0220C7CC + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220C7D0 +UNK04_0220C7D0: ; 0x0220C7D0 + .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003 + .word UNK04_0220C7CC + + .global UNK04_0220C7E4 +UNK04_0220C7E4: ; 0x0220C7E4 + .asciz "IE, Baltimore, CyberTrust, Baltimore CyberTrust Root" + + .balign 4, 0 + .global UNK04_0220C81C +UNK04_0220C81C: ; 0x0220C81C + .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A + .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29 + .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2 + .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52 + .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8 + .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8 + .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F + .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12 + .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68 + .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC + .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C + .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F + .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9 + .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99 + .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68 + .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90 + .byte 0xDC, 0x27, 0x1A, 0x39 + + .global UNK04_0220C91C +UNK04_0220C91C: ; 0x0220C91C + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220C920 +UNK04_0220C920: ; 0x0220C920 + .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003 + .word UNK04_0220C91C + + .global UNK04_0220C934 +UNK04_0220C934: ; 0x0220C934 + .asciz "US, GTE Corporation, GTE CyberTrust Solutions, Inc., GTE CyberTrust Global Root" + + .balign 4, 0 + .global UNK04_0220C984 +UNK04_0220C984: ; 0x0220C984 + .byte 0x95, 0x0F, 0xA0, 0xB6 + .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B + .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A + .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F + .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95 + .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9 + .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85 + .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80 + .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99 + + .global UNK04_0220CA04 +UNK04_0220CA04: ; 0x0220CA04 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CA08 +UNK04_0220CA08: ; 0x0220CA08 + .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003 + .word UNK04_0220CA04 + + .global UNK04_0220CA1C +UNK04_0220CA1C: ; 0x0220CA1C + .asciz "US, GTE Corporation, GTE CyberTrust Root" + + .balign 4, 0 + .global UNK04_0220CA48 +UNK04_0220CA48: ; 0x0220CA48 + .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9 + .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD + .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66 + .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5 + .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF + .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25 + .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24 + .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03 + + .global UNK04_0220CAC8 +UNK04_0220CAC8: ; 0x0220CAC8 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CACC +UNK04_0220CACC: ; 0x0220CACC + .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003 + .word UNK04_0220CAC8 + + .global UNK04_0220CAE0 +UNK04_0220CAE0: ; 0x0220CAE0 + .asciz "US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com" + + .balign 4, 0 + .global UNK04_0220CB30 +UNK04_0220CB30: ; 0x0220CB30 + .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF + .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21 + .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD + .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B + .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40 + .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31 + .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66 + .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C + .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B + + .global UNK04_0220CBB0 +UNK04_0220CBB0: ; 0x0220CBB0 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CBB4 +UNK04_0220CBB4: ; 0x0220CBB4 + .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003 + .word UNK04_0220CBB0 + + .global UNK04_0220CBC8 +UNK04_0220CBC8: ; 0x0220CBC8 + .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE + .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A + .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17 + .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0 + .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C + .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F + .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD + .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37 + + .global UNK04_0220CC48 +UNK04_0220CC48: ; 0x0220CC48 + .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, " + .asciz "Thawte Premium Server CA, premium-server@thawte.com" + + .balign 4, 0 + .global UNK04_0220CCD0 +UNK04_0220CCD0: ; 0x0220CCD0 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CCD4 +UNK04_0220CCD4: ; 0x0220CCD4 + .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003 + .word UNK04_0220CCD0 + + .global UNK04_0220CCE8 +UNK04_0220CCE8: ; 0x0220CCE8 + .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, " + .asciz "Thawte Server CA, server-certs@thawte.com" + + .balign 4, 0 + .global UNK04_0220CD68 +UNK04_0220CD68: ; 0x0220CD68 + .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75 + .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20 + .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15 + .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD + .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B + .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C + .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B + .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D + + .global UNK04_0220CDE8 +UNK04_0220CDE8: ; 0x0220CDE8 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CDEC +UNK04_0220CDEC: ; 0x0220CDEC + .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003 + .word UNK04_0220CDE8 + + .global UNK04_0220CE00 +UNK04_0220CE00: ; 0x0220CE00 + .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0 + .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D + .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F + .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47 + .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77 + .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D + .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97 + .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61 + .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67 + + .global UNK04_0220CE80 +UNK04_0220CE80: ; 0x0220CE80 + .ascii "US, VeriSign, Inc., Class 3 Public Primary Certification Authority - G2, (c) 1998 VeriSign, Inc." + .asciz " - For authorized use only, VeriSign Trust Network" + + .balign 4, 0 + .global UNK04_0220CF14 +UNK04_0220CF14: ; 0x0220CF14 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220CF18 +UNK04_0220CF18: ; 0x0220CF18 + .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003 + .word UNK04_0220CF14 + + .global UNK04_0220CF2C +UNK04_0220CF2C: ; 0x0220CF2C + .ascii "US, VeriSign, Inc., VeriSign Trust Network, (c) 1999 VeriSign, Inc. - For authorized use only, " + .asciz "VeriSign Class 3 Public Primary Certification Authority - G3" + + .balign 4, 0 + .global UNK04_0220CFC8 +UNK04_0220CFC8: ; 0x0220CFC8 + .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9 + .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5 + .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D + .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67 + .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69 + .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0 + .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC + .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3 + .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED + .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF + .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76 + .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8 + .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2 + .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63 + .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D + .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97 + + .global UNK04_0220D0C8 +UNK04_0220D0C8: ; 0x0220D0C8 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220D0CC +UNK04_0220D0CC: ; 0x0220D0CC + .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003 + .word UNK04_0220D0C8 + + .global UNK04_0220D0E0 +UNK04_0220D0E0: ; 0x0220D0E0 + .asciz "US, VeriSign, Inc., Class 3 Public Primary Certification Authority" + + .balign 4, 0 + .global UNK04_0220D124 +UNK04_0220D124: ; 0x0220D124 + .byte 0xC9, 0x5C, 0x59, 0x9E + .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45 + .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25 + .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00 + .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6 + .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F + .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20 + .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15 + .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7 + + .global UNK04_0220D1A4 +UNK04_0220D1A4: ; 0x0220D1A4 + .byte 0x01, 0x00, 0x01 + + .balign 4, 0 + .global UNK04_0220D1A8 +UNK04_0220D1A8: ; 0x0220D1A8 + .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003 + .word UNK04_0220D1A4 + + .global UNK04_0220D1BC +UNK04_0220D1BC: ; 0x0220D1BC + .asciz "US, RSA Data Security, Inc., Secure Server Certification Authority" + + .balign 4, 0 + .global UNK04_0220D200 +UNK04_0220D200: ; 0x0220D200 + .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A + .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB + .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82 + .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05 + .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D + .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98 + .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49 + .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD + .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00 -- cgit v1.2.3 From 79375b4aa98c8e2980bde41be6fc8e9e0781b9fd Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 19:38:27 +0100 Subject: e --- arm9/arm9.lsf | 1 + arm9/global.inc | 2 + arm9/modules/04/asm/arm_04.s | 282 --------------------------------- arm9/modules/04/asm/mod04_021DDF40.s | 291 +++++++++++++++++++++++++++++++++++ 4 files changed, 294 insertions(+), 282 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DDF40.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 7a71025b..c7d05c12 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -669,6 +669,7 @@ Overlay MODULE_04 Object mod04_021DD6B0.o Object mod04_021DD82C.o Object mod04_021DD984.o + Object mod04_021DDF40.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f2607bf6..7332b638 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6169,6 +6169,8 @@ .extern MOD04_021DDF40 .extern MOD04_021DDF4C .extern MOD04_021DE05C +.extern MOD04_021DE150 +.extern MOD04_021DE174 .extern MOD04_021DE1F8 .extern MOD04_021DE2D0 .extern MOD04_021DE308 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 645fa1b7..e5ec274a 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,276 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DDF40 -MOD04_021DDF40: ; 0x021DDF40 - ldr ip, _021DDF48 ; =MOD04_021D9974 - bx ip - .align 2, 0 -_021DDF48: .word MOD04_021D9974 - arm_func_end MOD04_021DDF40 - - arm_func_start MOD04_021DDF4C -MOD04_021DDF4C: ; 0x021DDF4C - stmdb sp!, {lr} - sub sp, sp, #0x1c4 - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #0x1c4 - moveq r0, #0 - ldmeqia sp!, {pc} - add r0, r0, #0x1000 - ldr r0, [r0, #0xba0] - cmp r0, #0 - addeq sp, sp, #0x1c4 - moveq r0, #1 - ldmeqia sp!, {pc} - bl MOD04_021D988C - cmp r0, #0 - beq _021DDFA4 - cmp r0, #0x14 - beq _021DDFE0 - cmp r0, #0x15 - beq _021DDFB0 - b _021DE010 -_021DDFA4: - add sp, sp, #0x1c4 - mov r0, #2 - ldmfd sp!, {pc} -_021DDFB0: - bl MOD04_021D991C - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r2, _021DE058 ; =0x00001E1C - ldr r1, [r0] - mov r0, #4 - bl MOD04_021DD904 - ldr r0, _021DE054 ; =UNK04_0221051C - mov r1, #0 - str r1, [r0] - add sp, sp, #0x1c4 - mov r0, #3 - ldmfd sp!, {pc} -_021DDFE0: - bl MOD04_021D991C - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r2, _021DE058 ; =0x00001E1C - ldr r1, [r0] - mov r0, #4 - bl MOD04_021DD904 - ldr r0, _021DE054 ; =UNK04_0221051C - mov r1, #0 - str r1, [r0] - add sp, sp, #0x1c4 - mov r0, #5 - ldmfd sp!, {pc} -_021DE010: - add r0, sp, #0 - bl MOD04_021D97F8 - bl MOD04_021D991C - ldr r0, _021DE054 ; =UNK04_0221051C - ldr r2, _021DE058 ; =0x00001E1C - ldr r1, [r0] - mov r0, #4 - bl MOD04_021DD904 - ldr r1, [sp] - ldr r2, _021DE054 ; =UNK04_0221051C - mov r3, #0 - mov r0, #2 - str r3, [r2] - bl MOD04_021DD6B0 - mov r0, #4 - add sp, sp, #0x1c4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE054: .word UNK04_0221051C -_021DE058: .word 0x00001E1C - arm_func_end MOD04_021DDF4C - - arm_func_start MOD04_021DE05C -MOD04_021DE05C: ; 0x021DE05C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021DE130 ; =UNK04_0221051C - ldr r0, [r0] - cmp r0, #0 - beq _021DE078 - bl OS_Terminate -_021DE078: - ldr r1, _021DE134 ; =0x00001E1C - mov r0, #4 - bl MOD04_021DD944 - ldr r1, _021DE130 ; =UNK04_0221051C - cmp r0, #0 - str r0, [r1] - bne _021DE0AC - ldr r1, _021DE138 ; =0xFFFFB17C - mov r0, #9 - bl MOD04_021DD6B0 - add sp, sp, #4 - mov r0, #0 - ldmfd sp!, {pc} -_021DE0AC: - ldr r2, _021DE134 ; =0x00001E1C - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _021DE130 ; =UNK04_0221051C - ldr r1, _021DE13C ; =0x00001C44 - ldr r2, [r0] - ldr r0, _021DE140 ; =UNK04_0220D2EC - add r1, r2, r1 - mov r2, #9 - bl MI_CpuCopy8 - ldr r1, _021DE130 ; =UNK04_0221051C - ldr r2, _021DE144 ; =MOD04_021DD944 - ldr r0, [r1] - ldr r3, _021DE148 ; =MOD04_021DD904 - add r0, r0, #0x1000 - str r2, [r0, #0xc50] - ldr r0, [r1] - ldr r2, _021DE14C ; =0x00001C10 - add r0, r0, #0x1000 - str r3, [r0, #0xc54] - ldr r1, [r1] - add r0, r1, r2 - bl MOD04_021D9ACC - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {pc} - ldr r1, _021DE138 ; =0xFFFFB17C - mov r0, #9 - bl MOD04_021DD6B0 - mov r0, #0 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE130: .word UNK04_0221051C -_021DE134: .word 0x00001E1C -_021DE138: .word 0xFFFFB17C -_021DE13C: .word 0x00001C44 -_021DE140: .word UNK04_0220D2EC -_021DE144: .word MOD04_021DD944 -_021DE148: .word MOD04_021DD904 -_021DE14C: .word 0x00001C10 - arm_func_end MOD04_021DE05C - - arm_func_start MOD04_021DE150 -MOD04_021DE150: ; 0x021DE150 - stmdb sp!, {r4, lr} - bl MOD04_021DCF00 - mov r4, r0 - sub r0, r4, #3 - cmp r0, #2 - bhi _021DE16C - bl MOD04_021DD26C -_021DE16C: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DE150 - - arm_func_start MOD04_021DE174 -MOD04_021DE174: ; 0x021DE174 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - ldr r0, _021DE1EC ; =MOD04_021DD944 - ldr r1, _021DE1F0 ; =MOD04_021DD904 - bl MOD04_021DD2C4 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - mov r0, r5 - bl strlen - cmp r0, #0 - bne _021DE1C0 - ldr r0, _021DE1F4 ; =UNK04_0220D2F0 - mov r1, r4 - bl MOD04_021DCFFC - b _021DE1CC -_021DE1C0: - mov r0, r5 - mov r1, r4 - bl MOD04_021DCFFC -_021DE1CC: - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r4, r5, pc} - bl MOD04_021DD26C - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DE1EC: .word MOD04_021DD944 -_021DE1F0: .word MOD04_021DD904 -_021DE1F4: .word UNK04_0220D2F0 - arm_func_end MOD04_021DE174 - - arm_func_start MOD04_021DE1F8 -MOD04_021DE1F8: ; 0x021DE1F8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - ldr r2, _021DE2C4 ; =UNK04_022104F8 - mov r5, r0 - ldr r2, [r2] - mov r4, r1 - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - bl RTC_GetDate - cmp r0, #0 - bne _021DE23C - mov r0, r4 - bl RTC_GetTime - cmp r0, #0 - beq _021DE248 -_021DE23C: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DE248: - mov r0, r5 - mov r1, r4 - bl RTC_ConvertDateTimeToSecond - mvn r2, #0 - cmp r1, r2 - cmpeq r0, r2 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, pc} - ldr r2, _021DE2C8 ; =UNK04_022104FC - mov ip, #0 - ldr lr, [r2] - ldr r3, [r2, #4] - subs r2, r0, lr - sbc r3, r1, r3 - subs r0, r2, ip - sbcs r0, r3, ip - blt _021DE2A0 - ldr r0, _021DE2CC ; =0xBC19137F - subs r0, r0, r2 - sbcs r0, ip, r3 - bge _021DE2AC -_021DE2A0: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021DE2AC: - mov r0, r5 - mov r1, r4 - bl RTC_ConvertSecondToDateTime - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021DE2C4: .word UNK04_022104F8 -_021DE2C8: .word UNK04_022104FC -_021DE2CC: .word 0xBC19137F - arm_func_end MOD04_021DE1F8 - arm_func_start MOD04_021DE2D0 MOD04_021DE2D0: ; 0x021DE2D0 stmdb sp!, {r4, r5, lr} @@ -54253,14 +53983,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D2EC -UNK04_0220D2EC: ; 0x0220D2EC - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D2F0 -UNK04_0220D2F0: ; 0x0220D2F0 - .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D2F8 UNK04_0220D2F8: ; 0x0220D2F8 .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 @@ -56937,10 +56659,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_0221051C -UNK04_0221051C: ; 0x0221051C - .space 0x4 - .global UNK04_02210520 UNK04_02210520: ; 0x02210520 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s new file mode 100644 index 00000000..92320fd3 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DDF40.s @@ -0,0 +1,291 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DDF40 +MOD04_021DDF40: ; 0x021DDF40 + ldr ip, _021DDF48 ; =MOD04_021D9974 + bx ip + .align 2, 0 +_021DDF48: .word MOD04_021D9974 + arm_func_end MOD04_021DDF40 + + arm_func_start MOD04_021DDF4C +MOD04_021DDF4C: ; 0x021DDF4C + stmdb sp!, {lr} + sub sp, sp, #0x1c4 + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0x1c4 + moveq r0, #0 + ldmeqia sp!, {pc} + add r0, r0, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + addeq sp, sp, #0x1c4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD04_021D988C + cmp r0, #0 + beq _021DDFA4 + cmp r0, #0x14 + beq _021DDFE0 + cmp r0, #0x15 + beq _021DDFB0 + b _021DE010 +_021DDFA4: + add sp, sp, #0x1c4 + mov r0, #2 + ldmfd sp!, {pc} +_021DDFB0: + bl MOD04_021D991C + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl MOD04_021DD904 + ldr r0, _021DE054 ; =UNK04_0221051C + mov r1, #0 + str r1, [r0] + add sp, sp, #0x1c4 + mov r0, #3 + ldmfd sp!, {pc} +_021DDFE0: + bl MOD04_021D991C + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl MOD04_021DD904 + ldr r0, _021DE054 ; =UNK04_0221051C + mov r1, #0 + str r1, [r0] + add sp, sp, #0x1c4 + mov r0, #5 + ldmfd sp!, {pc} +_021DE010: + add r0, sp, #0 + bl MOD04_021D97F8 + bl MOD04_021D991C + ldr r0, _021DE054 ; =UNK04_0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl MOD04_021DD904 + ldr r1, [sp] + ldr r2, _021DE054 ; =UNK04_0221051C + mov r3, #0 + mov r0, #2 + str r3, [r2] + bl MOD04_021DD6B0 + mov r0, #4 + add sp, sp, #0x1c4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE054: .word UNK04_0221051C +_021DE058: .word 0x00001E1C + arm_func_end MOD04_021DDF4C + + arm_func_start MOD04_021DE05C +MOD04_021DE05C: ; 0x021DE05C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DE130 ; =UNK04_0221051C + ldr r0, [r0] + cmp r0, #0 + beq _021DE078 + bl OS_Terminate +_021DE078: + ldr r1, _021DE134 ; =0x00001E1C + mov r0, #4 + bl MOD04_021DD944 + ldr r1, _021DE130 ; =UNK04_0221051C + cmp r0, #0 + str r0, [r1] + bne _021DE0AC + ldr r1, _021DE138 ; =0xFFFFB17C + mov r0, #9 + bl MOD04_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021DE0AC: + ldr r2, _021DE134 ; =0x00001E1C + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _021DE130 ; =UNK04_0221051C + ldr r1, _021DE13C ; =0x00001C44 + ldr r2, [r0] + ldr r0, _021DE140 ; =UNK04_0220D2EC + add r1, r2, r1 + mov r2, #9 + bl MI_CpuCopy8 + ldr r1, _021DE130 ; =UNK04_0221051C + ldr r2, _021DE144 ; =MOD04_021DD944 + ldr r0, [r1] + ldr r3, _021DE148 ; =MOD04_021DD904 + add r0, r0, #0x1000 + str r2, [r0, #0xc50] + ldr r0, [r1] + ldr r2, _021DE14C ; =0x00001C10 + add r0, r0, #0x1000 + str r3, [r0, #0xc54] + ldr r1, [r1] + add r0, r1, r2 + bl MOD04_021D9ACC + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r1, _021DE138 ; =0xFFFFB17C + mov r0, #9 + bl MOD04_021DD6B0 + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE130: .word UNK04_0221051C +_021DE134: .word 0x00001E1C +_021DE138: .word 0xFFFFB17C +_021DE13C: .word 0x00001C44 +_021DE140: .word UNK04_0220D2EC +_021DE144: .word MOD04_021DD944 +_021DE148: .word MOD04_021DD904 +_021DE14C: .word 0x00001C10 + arm_func_end MOD04_021DE05C + + arm_func_start MOD04_021DE150 +MOD04_021DE150: ; 0x021DE150 + stmdb sp!, {r4, lr} + bl MOD04_021DCF00 + mov r4, r0 + sub r0, r4, #3 + cmp r0, #2 + bhi _021DE16C + bl MOD04_021DD26C +_021DE16C: + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DE150 + + arm_func_start MOD04_021DE174 +MOD04_021DE174: ; 0x021DE174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + ldr r0, _021DE1EC ; =MOD04_021DD944 + ldr r1, _021DE1F0 ; =MOD04_021DD904 + bl MOD04_021DD2C4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + bl strlen + cmp r0, #0 + bne _021DE1C0 + ldr r0, _021DE1F4 ; =UNK04_0220D2F0 + mov r1, r4 + bl MOD04_021DCFFC + b _021DE1CC +_021DE1C0: + mov r0, r5 + mov r1, r4 + bl MOD04_021DCFFC +_021DE1CC: + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + bl MOD04_021DD26C + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DE1EC: .word MOD04_021DD944 +_021DE1F0: .word MOD04_021DD904 +_021DE1F4: .word UNK04_0220D2F0 + arm_func_end MOD04_021DE174 + + arm_func_start MOD04_021DE1F8 +MOD04_021DE1F8: ; 0x021DE1F8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DE2C4 ; =UNK04_022104F8 + mov r5, r0 + ldr r2, [r2] + mov r4, r1 + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + bl RTC_GetDate + cmp r0, #0 + bne _021DE23C + mov r0, r4 + bl RTC_GetTime + cmp r0, #0 + beq _021DE248 +_021DE23C: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DE248: + mov r0, r5 + mov r1, r4 + bl RTC_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021DE2C8 ; =UNK04_022104FC + mov ip, #0 + ldr lr, [r2] + ldr r3, [r2, #4] + subs r2, r0, lr + sbc r3, r1, r3 + subs r0, r2, ip + sbcs r0, r3, ip + blt _021DE2A0 + ldr r0, _021DE2CC ; =0xBC19137F + subs r0, r0, r2 + sbcs r0, ip, r3 + bge _021DE2AC +_021DE2A0: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DE2AC: + mov r0, r5 + mov r1, r4 + bl RTC_ConvertSecondToDateTime + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DE2C4: .word UNK04_022104F8 +_021DE2C8: .word UNK04_022104FC +_021DE2CC: .word 0xBC19137F + arm_func_end MOD04_021DE1F8 + + .section .data + + .global UNK_0220D2EC +UNK04_0220D2EC: ; 0x0220D2EC + .byte 0x00, 0x00, 0x00, 0x00 + + .global UNK_0220D2F0 +UNK04_0220D2F0: ; 0x0220D2F0 + .asciz "0000" + + .balign 4, 0 + .section .bss + + .global UNK04_0221051C +UNK04_0221051C: ; 0x0221051C + .space 0x4 -- cgit v1.2.3 From 52da4a5a72a753d99ec0fdcd44429dcdbfeed1d4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 20:04:33 +0100 Subject: 0 --- arm9/arm9.lsf | 1 + arm9/global.inc | 8 + arm9/modules/04/asm/arm_04.s | 473 ---------------------------------- arm9/modules/04/asm/mod04_021DDF40.s | 4 +- arm9/modules/04/asm/mod04_021DE2D0.s | 482 +++++++++++++++++++++++++++++++++++ 5 files changed, 493 insertions(+), 475 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DE2D0.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c7d05c12..ba722fd1 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -670,6 +670,7 @@ Overlay MODULE_04 Object mod04_021DD82C.o Object mod04_021DD984.o Object mod04_021DDF40.o + Object mod04_021DE2D0.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 7332b638..c7772ac0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6236,6 +6236,14 @@ .extern MOD04_021F024C .extern MOD04_021F0250 .extern MOD04_021F025C +.extern MOD04_022069DC +.extern MOD04_02206E6C +.extern MOD04_02206EFC +.extern MOD04_02207158 +.extern MOD04_02207330 +.extern MOD04_0220733C +.extern MOD04_022074EC +.extern MOD04_022077A8 .extern MOD05_021D74E0 .extern MOD05_021D7A20 .extern MOD05_021D7A28 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index e5ec274a..28b7edca 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,461 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DE2D0 -MOD04_021DE2D0: ; 0x021DE2D0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl MOD04_02207330 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021DE2D0 - - arm_func_start MOD04_021DE308 -MOD04_021DE308: ; 0x021DE308 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {pc} - bl MOD04_02207158 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DE308 - - arm_func_start MOD04_021DE330 -MOD04_021DE330: ; 0x021DE330 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_0220733C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE330 - - arm_func_start MOD04_021DE364 -MOD04_021DE364: ; 0x021DE364 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xb0 - mul r2, r4, r0 - mov r0, r6 - mov r1, #0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_022074EC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE364 - - arm_func_start MOD04_021DE3AC -MOD04_021DE3AC: ; 0x021DE3AC - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl MOD04_022077A8 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DE3AC - - arm_func_start MOD04_021DE3D0 -MOD04_021DE3D0: ; 0x021DE3D0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_022069DC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE3D0 - - arm_func_start MOD04_021DE404 -MOD04_021DE404: ; 0x021DE404 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DE454 ; =UNK04_02210520 - ldr r2, [r1] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - str r0, [r2, #4] - ldr r0, [r1] - ldr r0, [r0, #0x48] - cmp r0, #0 - bne _021DE440 - bl MOD04_021DE730 - b _021DE448 -_021DE440: - ldr r0, _021DE458 ; =MOD04_021DE730 - bl MOD04_02206E6C -_021DE448: - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE454: .word UNK04_02210520 -_021DE458: .word MOD04_021DE730 - arm_func_end MOD04_021DE404 - - arm_func_start MOD04_021DE45C -MOD04_021DE45C: ; 0x021DE45C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xa80 - mov r1, #0x20 - bl MOD04_021DE884 - ldr r2, _021DE568 ; =UNK04_02210520 - mov r1, #0 - str r0, [r2] - str r1, [r0, #0x48] - ldr r0, [r2] - mov r2, #0xa80 - bl MI_CpuFill8 - ldr r0, _021DE568 ; =UNK04_02210520 - mov r1, r5 - ldr r3, [r0] - mov r2, #0x1f - str r6, [r3] - ldr r0, [r0] - add r0, r0, #8 - bl strncpy - ldr r0, _021DE568 ; =UNK04_02210520 - mov r1, r4 - ldr r0, [r0] - mov r2, #0x1f - add r0, r0, #0x28 - bl strncpy - ldr r1, _021DE568 ; =UNK04_02210520 - ldr r0, _021DE56C ; =UNK04_0220D2F8 - ldr r1, [r1] - add r1, r1, #0x4c - bl MOD04_021DE174 - cmp r0, #0 - bne _021DE520 - ldr r0, _021DE568 ; =UNK04_02210520 - ldr r0, [r0] - bl MOD04_021DE86C - ldr r1, _021DE568 ; =UNK04_02210520 - mov r0, #0 - str r0, [r1] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_021DE520: - ldr r0, _021DE568 ; =UNK04_02210520 - mov r2, #0x800 - ldr r0, [r0] - ldr r1, _021DE570 ; =MOD04_021DE574 - add r0, r0, #0x9c0 - mov r3, r0 - str r2, [sp] - mov ip, #0x10 - mov r2, #0 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _021DE568 ; =UNK04_02210520 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DE568: .word UNK04_02210520 -_021DE56C: .word UNK04_0220D2F8 -_021DE570: .word MOD04_021DE574 - arm_func_end MOD04_021DE45C - - arm_func_start MOD04_021DE574 -MOD04_021DE574: ; 0x021DE574 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2a4 - mov r7, #0 - mov r6, #6 - mvn r5, #0 - mov r4, #0x64 -_021DE58C: - bl MOD04_021DE150 - cmp r0, #3 - bne _021DE6AC - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r5, [r0] - add r0, r5, #0x50 - bl strlen - mov r4, r0 - ldr r0, _021DE71C ; =UNK04_0220D300 - bl strlen - add r0, r4, r0 - cmp r0, #0xff - bls _021DE5D8 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE5D8: - ldr r2, _021DE720 ; =UNK04_0220D314 - add r0, sp, #0x10 - add r3, r5, #0x50 - mov r1, #0x100 - bl OS_SNPrintf - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r4, [r0] - add r0, r4, #0x91 - bl strlen - mov r1, r0 - add r2, sp, #0x110 - add r0, r4, #0x91 - mov r3, #0x190 - bl MOD04_021DD4FC - cmp r0, #0 - bge _021DE630 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE630: - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r4, _021DE724 ; =MOD04_021DE774 - ldr r2, [r0] - ldr r0, _021DE728 ; =MOD04_021DE884 - add r1, r2, #8 - str r1, [sp] - add r1, r2, #0x28 - str r1, [sp, #4] - ldr r1, _021DE72C ; =MOD04_021DE86C - add r2, sp, #0x10 - add r3, sp, #0x110 - str r4, [sp, #8] - bl MOD04_02206EFC - cmp r0, #0 - bne _021DE684 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE684: - ldr r1, _021DE718 ; =UNK04_02210520 - mov r0, #0 - ldr r3, [r1] - mov r4, #1 - mov r1, r0 - mvn r2, #0 - str r4, [r3, #0x48] - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE6AC: - cmp r0, #4 - bne _021DE6EC - add r0, sp, #0xc - bl MOD04_021DD808 - ldr r1, [sp, #0xc] - mov r0, #0xe - bl MOD04_021DD6B0 - ldr r1, _021DE718 ; =UNK04_02210520 - mov r0, #0 - ldr r2, [r1] - mov r1, #3 - ldr r3, [r2] - mvn r2, #0 - blx r3 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE6EC: - cmp r0, #5 - bne _021DE704 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl MOD04_021DE774 -_021DE704: - mov r0, r4 - bl OS_Sleep - b _021DE58C - arm_func_end MOD04_021DE574 - - arm_func_start MOD04_021DE710 -MOD04_021DE710: ; 0x021DE710 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DE718: .word UNK04_02210520 -_021DE71C: .word UNK04_0220D300 -_021DE720: .word UNK04_0220D314 -_021DE724: .word MOD04_021DE774 -_021DE728: .word MOD04_021DE884 -_021DE72C: .word MOD04_021DE86C - arm_func_end MOD04_021DE710 - - arm_func_start MOD04_021DE730 -MOD04_021DE730: ; 0x021DE730 - stmdb sp!, {r4, lr} - ldr r0, _021DE770 ; =UNK04_02210520 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_JoinThread - ldr r0, _021DE770 ; =UNK04_02210520 - ldr r0, [r0] - ldr r4, [r0, #4] - bl MOD04_021DE86C - ldr r0, _021DE770 ; =UNK04_02210520 - mov r1, #0 - str r1, [r0] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - blx r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DE770: .word UNK04_02210520 - arm_func_end MOD04_021DE730 - - arm_func_start MOD04_021DE774 -MOD04_021DE774: ; 0x021DE774 - stmdb sp!, {r4, r5, r6, lr} - movs r5, r1 - mov r6, r0 - mov r4, r2 - bne _021DE79C - ldr r3, _021DE854 ; =UNK04_02210520 - ldr r3, [r3] - ldr r3, [r3] - blx r3 - ldmia sp!, {r4, r5, r6, pc} -_021DE79C: - cmp r5, #8 - addls pc, pc, r5, lsl #2 - b _021DE830 -_021DE7A8: ; jump table - b _021DE830 ; case 0 - b _021DE7CC ; case 1 - b _021DE7DC ; case 2 - b _021DE7E4 ; case 3 - b _021DE7F4 ; case 4 - b _021DE804 ; case 5 - b _021DE834 ; case 6 - b _021DE818 ; case 7 - b _021DE820 ; case 8 -_021DE7CC: - ldr r1, _021DE858 ; =0xFFFF86E7 - mov r0, #9 - bl MOD04_021DD6B0 - b _021DE834 -_021DE7DC: - bl OS_Terminate - b _021DE834 -_021DE7E4: - ldr r1, _021DE85C ; =0xFFFF86D4 - mov r0, #0xf - bl MOD04_021DD6B0 - b _021DE834 -_021DE7F4: - ldr r1, _021DE860 ; =0xFFFF86CA - mov r0, #0xe - bl MOD04_021DD6B0 - b _021DE834 -_021DE804: - ldr r1, _021DE864 ; =0xFFFF86E8 - mov r0, #0xe - sub r1, r1, r4 - bl MOD04_021DD6B0 - b _021DE834 -_021DE818: - bl OS_Terminate - b _021DE834 -_021DE820: - ldr r1, _021DE868 ; =0xFFFF86DF - mov r0, #9 - bl MOD04_021DD6B0 - b _021DE834 -_021DE830: - bl OS_Terminate -_021DE834: - ldr r1, _021DE854 ; =UNK04_02210520 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - ldr r3, [r2] - mov r2, r4 - blx r3 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DE854: .word UNK04_02210520 -_021DE858: .word 0xFFFF86E7 -_021DE85C: .word 0xFFFF86D4 -_021DE860: .word 0xFFFF86CA -_021DE864: .word 0xFFFF86E8 -_021DE868: .word 0xFFFF86DF - arm_func_end MOD04_021DE774 - - arm_func_start MOD04_021DE86C -MOD04_021DE86C: ; 0x021DE86C - ldr ip, _021DE880 ; =MOD04_021DD904 - mov r1, r0 - mov r0, #6 - mov r2, #0 - bx ip - .align 2, 0 -_021DE880: .word MOD04_021DD904 - arm_func_end MOD04_021DE86C - - arm_func_start MOD04_021DE884 -MOD04_021DE884: ; 0x021DE884 - ldr ip, _021DE898 ; =MOD04_021DD924 - mov r2, r1 - mov r1, r0 - mov r0, #6 - bx ip - .align 2, 0 -_021DE898: .word MOD04_021DD924 - arm_func_end MOD04_021DE884 - arm_func_start MOD04_021DE89C MOD04_021DE89C: ; 0x021DE89C ldrh r1, [r0] @@ -53983,20 +53528,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D2F8 -UNK04_0220D2F8: ; 0x0220D2F8 - .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D300 -UNK04_0220D300: ; 0x0220D300 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C, 0x6F, 0x61 - .byte 0x64, 0x00, 0x00, 0x00 - - .global UNK_0220D314 -UNK04_0220D314: ; 0x0220D314 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x25, 0x73, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C - .byte 0x6F, 0x61, 0x64, 0x00 - .global UNK_0220D328 UNK04_0220D328: ; 0x0220D328 .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 @@ -56659,10 +56190,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210520 -UNK04_02210520: ; 0x02210520 - .space 0x4 - .global UNK04_02210524 UNK04_02210524: ; 0x02210524 .space 0x18 diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s index 92320fd3..6be2d80a 100644 --- a/arm9/modules/04/asm/mod04_021DDF40.s +++ b/arm9/modules/04/asm/mod04_021DDF40.s @@ -275,11 +275,11 @@ _021DE2CC: .word 0xBC19137F .section .data - .global UNK_0220D2EC + .global UNK04_0220D2EC UNK04_0220D2EC: ; 0x0220D2EC .byte 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D2F0 + .global UNK04_0220D2F0 UNK04_0220D2F0: ; 0x0220D2F0 .asciz "0000" diff --git a/arm9/modules/04/asm/mod04_021DE2D0.s b/arm9/modules/04/asm/mod04_021DE2D0.s new file mode 100644 index 00000000..27ad8bc1 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DE2D0.s @@ -0,0 +1,482 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DE2D0 +MOD04_021DE2D0: ; 0x021DE2D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl MOD04_02207330 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021DE2D0 + + arm_func_start MOD04_021DE308 +MOD04_021DE308: ; 0x021DE308 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD04_02207158 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DE308 + + arm_func_start MOD04_021DE330 +MOD04_021DE330: ; 0x021DE330 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_0220733C + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE330 + + arm_func_start MOD04_021DE364 +MOD04_021DE364: ; 0x021DE364 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xb0 + mul r2, r4, r0 + mov r0, r6 + mov r1, #0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_022074EC + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE364 + + arm_func_start MOD04_021DE3AC +MOD04_021DE3AC: ; 0x021DE3AC + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD04_022077A8 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DE3AC + + arm_func_start MOD04_021DE3D0 +MOD04_021DE3D0: ; 0x021DE3D0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_022069DC + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE3D0 + + arm_func_start MOD04_021DE404 +MOD04_021DE404: ; 0x021DE404 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DE454 ; =UNK04_02210520 + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #0x48] + cmp r0, #0 + bne _021DE440 + bl MOD04_021DE730 + b _021DE448 +_021DE440: + ldr r0, _021DE458 ; =MOD04_021DE730 + bl MOD04_02206E6C +_021DE448: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE454: .word UNK04_02210520 +_021DE458: .word MOD04_021DE730 + arm_func_end MOD04_021DE404 + + arm_func_start MOD04_021DE45C +MOD04_021DE45C: ; 0x021DE45C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xa80 + mov r1, #0x20 + bl MOD04_021DE884 + ldr r2, _021DE568 ; =UNK04_02210520 + mov r1, #0 + str r0, [r2] + str r1, [r0, #0x48] + ldr r0, [r2] + mov r2, #0xa80 + bl MI_CpuFill8 + ldr r0, _021DE568 ; =UNK04_02210520 + mov r1, r5 + ldr r3, [r0] + mov r2, #0x1f + str r6, [r3] + ldr r0, [r0] + add r0, r0, #8 + bl strncpy + ldr r0, _021DE568 ; =UNK04_02210520 + mov r1, r4 + ldr r0, [r0] + mov r2, #0x1f + add r0, r0, #0x28 + bl strncpy + ldr r1, _021DE568 ; =UNK04_02210520 + ldr r0, _021DE56C ; =UNK04_0220D2F8 + ldr r1, [r1] + add r1, r1, #0x4c + bl MOD04_021DE174 + cmp r0, #0 + bne _021DE520 + ldr r0, _021DE568 ; =UNK04_02210520 + ldr r0, [r0] + bl MOD04_021DE86C + ldr r1, _021DE568 ; =UNK04_02210520 + mov r0, #0 + str r0, [r1] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021DE520: + ldr r0, _021DE568 ; =UNK04_02210520 + mov r2, #0x800 + ldr r0, [r0] + ldr r1, _021DE570 ; =MOD04_021DE574 + add r0, r0, #0x9c0 + mov r3, r0 + str r2, [sp] + mov ip, #0x10 + mov r2, #0 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _021DE568 ; =UNK04_02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE568: .word UNK04_02210520 +_021DE56C: .word UNK04_0220D2F8 +_021DE570: .word MOD04_021DE574 + arm_func_end MOD04_021DE45C + + arm_func_start MOD04_021DE574 +MOD04_021DE574: ; 0x021DE574 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x2a4 + mov r7, #0 + mov r6, #6 + mvn r5, #0 + mov r4, #0x64 +_021DE58C: + bl MOD04_021DE150 + cmp r0, #3 + bne _021DE6AC + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r5, [r0] + add r0, r5, #0x50 + bl strlen + mov r4, r0 + ldr r0, _021DE71C ; =UNK04_0220D300 + bl strlen + add r0, r4, r0 + cmp r0, #0xff + bls _021DE5D8 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE5D8: + ldr r2, _021DE720 ; =UNK04_0220D314 + add r0, sp, #0x10 + add r3, r5, #0x50 + mov r1, #0x100 + bl OS_SNPrintf + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r4, [r0] + add r0, r4, #0x91 + bl strlen + mov r1, r0 + add r2, sp, #0x110 + add r0, r4, #0x91 + mov r3, #0x190 + bl MOD04_021DD4FC + cmp r0, #0 + bge _021DE630 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE630: + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r4, _021DE724 ; =MOD04_021DE774 + ldr r2, [r0] + ldr r0, _021DE728 ; =MOD04_021DE884 + add r1, r2, #8 + str r1, [sp] + add r1, r2, #0x28 + str r1, [sp, #4] + ldr r1, _021DE72C ; =MOD04_021DE86C + add r2, sp, #0x10 + add r3, sp, #0x110 + str r4, [sp, #8] + bl MOD04_02206EFC + cmp r0, #0 + bne _021DE684 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE684: + ldr r1, _021DE718 ; =UNK04_02210520 + mov r0, #0 + ldr r3, [r1] + mov r4, #1 + mov r1, r0 + mvn r2, #0 + str r4, [r3, #0x48] + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6AC: + cmp r0, #4 + bne _021DE6EC + add r0, sp, #0xc + bl MOD04_021DD808 + ldr r1, [sp, #0xc] + mov r0, #0xe + bl MOD04_021DD6B0 + ldr r1, _021DE718 ; =UNK04_02210520 + mov r0, #0 + ldr r2, [r1] + mov r1, #3 + ldr r3, [r2] + mvn r2, #0 + blx r3 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6EC: + cmp r0, #5 + bne _021DE704 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD04_021DE774 +_021DE704: + mov r0, r4 + bl OS_Sleep + b _021DE58C + arm_func_end MOD04_021DE574 + + arm_func_start MOD04_021DE710 +MOD04_021DE710: ; 0x021DE710 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE718: .word UNK04_02210520 +_021DE71C: .word UNK04_0220D300 +_021DE720: .word UNK04_0220D314 +_021DE724: .word MOD04_021DE774 +_021DE728: .word MOD04_021DE884 +_021DE72C: .word MOD04_021DE86C + arm_func_end MOD04_021DE710 + + arm_func_start MOD04_021DE730 +MOD04_021DE730: ; 0x021DE730 + stmdb sp!, {r4, lr} + ldr r0, _021DE770 ; =UNK04_02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_JoinThread + ldr r0, _021DE770 ; =UNK04_02210520 + ldr r0, [r0] + ldr r4, [r0, #4] + bl MOD04_021DE86C + ldr r0, _021DE770 ; =UNK04_02210520 + mov r1, #0 + str r1, [r0] + cmp r4, #0 + ldmeqia sp!, {r4, pc} + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE770: .word UNK04_02210520 + arm_func_end MOD04_021DE730 + + arm_func_start MOD04_021DE774 +MOD04_021DE774: ; 0x021DE774 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r1 + mov r6, r0 + mov r4, r2 + bne _021DE79C + ldr r3, _021DE854 ; =UNK04_02210520 + ldr r3, [r3] + ldr r3, [r3] + blx r3 + ldmia sp!, {r4, r5, r6, pc} +_021DE79C: + cmp r5, #8 + addls pc, pc, r5, lsl #2 + b _021DE830 +_021DE7A8: ; jump table + b _021DE830 ; case 0 + b _021DE7CC ; case 1 + b _021DE7DC ; case 2 + b _021DE7E4 ; case 3 + b _021DE7F4 ; case 4 + b _021DE804 ; case 5 + b _021DE834 ; case 6 + b _021DE818 ; case 7 + b _021DE820 ; case 8 +_021DE7CC: + ldr r1, _021DE858 ; =0xFFFF86E7 + mov r0, #9 + bl MOD04_021DD6B0 + b _021DE834 +_021DE7DC: + bl OS_Terminate + b _021DE834 +_021DE7E4: + ldr r1, _021DE85C ; =0xFFFF86D4 + mov r0, #0xf + bl MOD04_021DD6B0 + b _021DE834 +_021DE7F4: + ldr r1, _021DE860 ; =0xFFFF86CA + mov r0, #0xe + bl MOD04_021DD6B0 + b _021DE834 +_021DE804: + ldr r1, _021DE864 ; =0xFFFF86E8 + mov r0, #0xe + sub r1, r1, r4 + bl MOD04_021DD6B0 + b _021DE834 +_021DE818: + bl OS_Terminate + b _021DE834 +_021DE820: + ldr r1, _021DE868 ; =0xFFFF86DF + mov r0, #9 + bl MOD04_021DD6B0 + b _021DE834 +_021DE830: + bl OS_Terminate +_021DE834: + ldr r1, _021DE854 ; =UNK04_02210520 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + ldr r3, [r2] + mov r2, r4 + blx r3 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE854: .word UNK04_02210520 +_021DE858: .word 0xFFFF86E7 +_021DE85C: .word 0xFFFF86D4 +_021DE860: .word 0xFFFF86CA +_021DE864: .word 0xFFFF86E8 +_021DE868: .word 0xFFFF86DF + arm_func_end MOD04_021DE774 + + arm_func_start MOD04_021DE86C +MOD04_021DE86C: ; 0x021DE86C + ldr ip, _021DE880 ; =MOD04_021DD904 + mov r1, r0 + mov r0, #6 + mov r2, #0 + bx ip + .align 2, 0 +_021DE880: .word MOD04_021DD904 + arm_func_end MOD04_021DE86C + + arm_func_start MOD04_021DE884 +MOD04_021DE884: ; 0x021DE884 + ldr ip, _021DE898 ; =MOD04_021DD924 + mov r2, r1 + mov r1, r0 + mov r0, #6 + bx ip + .align 2, 0 +_021DE898: .word MOD04_021DD924 + arm_func_end MOD04_021DE884 + + .section .data + + .global UNK04_0220D2F8 +UNK04_0220D2F8: ; 0x0220D2F8 + .asciz "9000" + + .balign 4, 0 + .global UNK04_0220D300 +UNK04_0220D300: ; 0x0220D300 + .asciz "https:///download" + + .balign 4, 0 + .global UNK04_0220D314 +UNK04_0220D314: ; 0x0220D314 + .asciz "https://%s/download" + + .balign 4, 0 + .section .bss + + .global UNK04_02210520 +UNK04_02210520: ; 0x02210520 + .space 0x4 -- cgit v1.2.3 From 93e1e9884e1b857bf32b4db0a718510790840f88 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 20:10:04 +0100 Subject: 4 --- arm9/arm9.lsf | 1 + arm9/global.inc | 5 + arm9/modules/04/asm/arm_04.s | 226 --------------------------------- arm9/modules/04/asm/mod04_021DE89C.s | 236 +++++++++++++++++++++++++++++++++++ 4 files changed, 242 insertions(+), 226 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DE89C.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ba722fd1..ed1a7956 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -671,6 +671,7 @@ Overlay MODULE_04 Object mod04_021DD984.o Object mod04_021DDF40.o Object mod04_021DE2D0.o + Object mod04_021DE89C.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index c7772ac0..e4276c87 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6180,6 +6180,11 @@ .extern MOD04_021DE3D0 .extern MOD04_021DE404 .extern MOD04_021DE45C +.extern MOD04_021DE89C +.extern MOD04_021DE8C8 +.extern MOD04_021DE9F4 +.extern MOD04_021DEB0C +.extern MOD04_021DEB54 .extern MOD04_021DF95C .extern MOD04_021DF978 .extern MOD04_021DFA40 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 28b7edca..ec23a828 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,224 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DE89C -MOD04_021DE89C: ; 0x021DE89C - ldrh r1, [r0] - mov r2, #0 - cmp r1, #0 - beq _021DE8C0 -_021DE8AC: - add r2, r2, #1 - mov r1, r2, lsl #1 - ldrh r1, [r0, r1] - cmp r1, #0 - bne _021DE8AC -_021DE8C0: - mov r0, r2 - bx lr - arm_func_end MOD04_021DE89C - - arm_func_start MOD04_021DE8C8 -MOD04_021DE8C8: ; 0x021DE8C8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _021DE9E4 ; =UNK04_02210524 - mov r1, #0 - ldr r3, [r2, #4] - ldr ip, [r2] - cmp r3, r1 - mov r4, r0 - cmpeq ip, r1 - bne _021DE98C - ldr r0, [r2, #0xc] - ldr r3, [r2, #8] - cmp r0, r1 - cmpeq r3, r1 - bne _021DE98C - ldr r0, [r2, #0x14] - ldr r2, [r2, #0x10] - cmp r0, r1 - cmpeq r2, r1 - bne _021DE98C - add r0, sp, #0 - bl OS_GetMacAddress - bl OS_GetTick - ldr r2, [sp] - ldr r3, [sp, #4] - mov lr, r2, lsr #0x18 - mov r2, r1, lsl #0x18 - orr lr, lr, r3, lsl #8 - mvn r1, #0xff000000 - mov ip, r3, lsr #0x18 - and r1, lr, r1 - orr r3, r1, r0, lsl #24 - and r1, ip, #0 - orr r2, r2, r0, lsr #8 - orr r1, r1, r2 - str r1, [sp, #4] - ldr ip, _021DE9E4 ; =UNK04_02210524 - add r0, sp, #0 - str r3, [sp] - ldmia r0, {r2, r3} - stmia ip, {r2, r3} - ldr r3, _021DE9E8 ; =0x6C078965 - ldr r2, _021DE9EC ; =0x5D588B65 - ldr r1, _021DE9F0 ; =0x00269EC3 - mov r0, #0 - str r3, [ip, #8] - str r2, [ip, #0xc] - str r1, [ip, #0x10] - str r0, [ip, #0x14] -_021DE98C: - ldr r1, _021DE9E4 ; =UNK04_02210524 - ldr r3, [r1, #8] - ldr r2, [r1] - ldr r0, [r1, #4] - umull lr, ip, r3, r2 - mla ip, r3, r0, ip - ldr r0, [r1, #0xc] - ldr r3, [r1, #0x10] - mla ip, r0, r2, ip - adds r2, r3, lr - ldr r0, [r1, #0x14] - str r2, [r1] - adc r0, r0, ip - cmp r4, #0 - str r0, [r1, #4] - movne r3, #0 - umullne r2, r1, r0, r4 - mlane r1, r0, r3, r1 - mlane r1, r3, r4, r1 - movne r0, r1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DE9E4: .word UNK04_02210524 -_021DE9E8: .word 0x6C078965 -_021DE9EC: .word 0x5D588B65 -_021DE9F0: .word 0x00269EC3 - arm_func_end MOD04_021DE8C8 - - arm_func_start MOD04_021DE9F4 -MOD04_021DE9F4: ; 0x021DE9F4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - movs r4, r1 - mov r7, r0 - mov r6, r3 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r0, r2 - mov r1, r6 - bl strchr - movs r5, r0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} -_021DEA30: - mov r0, r7 - bl strlen - mov r2, r0 - mov r1, r7 - add r0, r5, #1 - bl strncmp - cmp r0, #0 - bne _021DEA68 - mov r0, r7 - bl strlen - add r0, r0, r5 - ldrsb r0, [r0, #1] - cmp r6, r0 - beq _021DEAA4 -_021DEA68: - mov r1, r6 - add r0, r5, #1 - bl strchr - cmp r0, #0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r0, #1 - bl strchr - movs r5, r0 - bne _021DEA30 - add sp, sp, #4 - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DEAA4: - mov r1, r6 - add r0, r5, #1 - bl strchr - movs r5, r0 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r5, #1 - bl strchr - cmp r0, #0 - addne r1, r5, #1 - subne r6, r0, r1 - bne _021DEAE8 - add r0, r5, #1 - bl strlen - mov r6, r0 -_021DEAE8: - mov r0, r4 - mov r2, r6 - add r1, r5, #1 - bl strncpy - mov r1, #0 - mov r0, r6 - strb r1, [r4, r6] - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end MOD04_021DE9F4 - - arm_func_start MOD04_021DEB0C -MOD04_021DEB0C: ; 0x021DEB0C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #4 - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r4, r3 - mov r0, r5 - mov r1, #0 - bl strchr - mov r2, r0 - mov r0, r7 - mov r1, r6 - mov r3, r4 - bl MOD04_021DEB54 - mov r0, r5 - bl strlen - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end MOD04_021DEB0C - - arm_func_start MOD04_021DEB54 -MOD04_021DEB54: ; 0x021DEB54 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - str r0, [sp] - mov r4, r2 - str r3, [sp, #4] - str r1, [sp, #8] - ldr r2, _021DEB8C ; =UNK04_0220D328 - mov r0, r4 - mov r1, #0x1000 - bl OS_SNPrintf - mov r0, r4 - bl strlen - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DEB8C: .word UNK04_0220D328 - arm_func_end MOD04_021DEB54 - arm_func_start MOD04_021DEB90 MOD04_021DEB90: ; 0x021DEB90 stmdb sp!, {lr} @@ -53528,10 +53310,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D328 -UNK04_0220D328: ; 0x0220D328 - .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D334 UNK04_0220D334: ; 0x0220D334 .byte 0x00, 0x00, 0x00, 0x00 @@ -56190,10 +55968,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210524 -UNK04_02210524: ; 0x02210524 - .space 0x18 - .global UNK04_0221053C UNK04_0221053C: ; 0x0221053C .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021DE89C.s b/arm9/modules/04/asm/mod04_021DE89C.s new file mode 100644 index 00000000..f4ff2977 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DE89C.s @@ -0,0 +1,236 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DE89C +MOD04_021DE89C: ; 0x021DE89C + ldrh r1, [r0] + mov r2, #0 + cmp r1, #0 + beq _021DE8C0 +_021DE8AC: + add r2, r2, #1 + mov r1, r2, lsl #1 + ldrh r1, [r0, r1] + cmp r1, #0 + bne _021DE8AC +_021DE8C0: + mov r0, r2 + bx lr + arm_func_end MOD04_021DE89C + + arm_func_start MOD04_021DE8C8 +MOD04_021DE8C8: ; 0x021DE8C8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _021DE9E4 ; =UNK04_02210524 + mov r1, #0 + ldr r3, [r2, #4] + ldr ip, [r2] + cmp r3, r1 + mov r4, r0 + cmpeq ip, r1 + bne _021DE98C + ldr r0, [r2, #0xc] + ldr r3, [r2, #8] + cmp r0, r1 + cmpeq r3, r1 + bne _021DE98C + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + cmp r0, r1 + cmpeq r2, r1 + bne _021DE98C + add r0, sp, #0 + bl OS_GetMacAddress + bl OS_GetTick + ldr r2, [sp] + ldr r3, [sp, #4] + mov lr, r2, lsr #0x18 + mov r2, r1, lsl #0x18 + orr lr, lr, r3, lsl #8 + mvn r1, #0xff000000 + mov ip, r3, lsr #0x18 + and r1, lr, r1 + orr r3, r1, r0, lsl #24 + and r1, ip, #0 + orr r2, r2, r0, lsr #8 + orr r1, r1, r2 + str r1, [sp, #4] + ldr ip, _021DE9E4 ; =UNK04_02210524 + add r0, sp, #0 + str r3, [sp] + ldmia r0, {r2, r3} + stmia ip, {r2, r3} + ldr r3, _021DE9E8 ; =0x6C078965 + ldr r2, _021DE9EC ; =0x5D588B65 + ldr r1, _021DE9F0 ; =0x00269EC3 + mov r0, #0 + str r3, [ip, #8] + str r2, [ip, #0xc] + str r1, [ip, #0x10] + str r0, [ip, #0x14] +_021DE98C: + ldr r1, _021DE9E4 ; =UNK04_02210524 + ldr r3, [r1, #8] + ldr r2, [r1] + ldr r0, [r1, #4] + umull lr, ip, r3, r2 + mla ip, r3, r0, ip + ldr r0, [r1, #0xc] + ldr r3, [r1, #0x10] + mla ip, r0, r2, ip + adds r2, r3, lr + ldr r0, [r1, #0x14] + str r2, [r1] + adc r0, r0, ip + cmp r4, #0 + str r0, [r1, #4] + movne r3, #0 + umullne r2, r1, r0, r4 + mlane r1, r0, r3, r1 + mlane r1, r3, r4, r1 + movne r0, r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE9E4: .word UNK04_02210524 +_021DE9E8: .word 0x6C078965 +_021DE9EC: .word 0x5D588B65 +_021DE9F0: .word 0x00269EC3 + arm_func_end MOD04_021DE8C8 + + arm_func_start MOD04_021DE9F4 +MOD04_021DE9F4: ; 0x021DE9F4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r4, r1 + mov r7, r0 + mov r6, r3 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r2 + mov r1, r6 + bl strchr + movs r5, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021DEA30: + mov r0, r7 + bl strlen + mov r2, r0 + mov r1, r7 + add r0, r5, #1 + bl strncmp + cmp r0, #0 + bne _021DEA68 + mov r0, r7 + bl strlen + add r0, r0, r5 + ldrsb r0, [r0, #1] + cmp r6, r0 + beq _021DEAA4 +_021DEA68: + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r0, #1 + bl strchr + movs r5, r0 + bne _021DEA30 + add sp, sp, #4 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DEAA4: + mov r1, r6 + add r0, r5, #1 + bl strchr + movs r5, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addne r1, r5, #1 + subne r6, r0, r1 + bne _021DEAE8 + add r0, r5, #1 + bl strlen + mov r6, r0 +_021DEAE8: + mov r0, r4 + mov r2, r6 + add r1, r5, #1 + bl strncpy + mov r1, #0 + mov r0, r6 + strb r1, [r4, r6] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end MOD04_021DE9F4 + + arm_func_start MOD04_021DEB0C +MOD04_021DEB0C: ; 0x021DEB0C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r4, r3 + mov r0, r5 + mov r1, #0 + bl strchr + mov r2, r0 + mov r0, r7 + mov r1, r6 + mov r3, r4 + bl MOD04_021DEB54 + mov r0, r5 + bl strlen + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end MOD04_021DEB0C + + arm_func_start MOD04_021DEB54 +MOD04_021DEB54: ; 0x021DEB54 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + str r0, [sp] + mov r4, r2 + str r3, [sp, #4] + str r1, [sp, #8] + ldr r2, _021DEB8C ; =UNK04_0220D328 + mov r0, r4 + mov r1, #0x1000 + bl OS_SNPrintf + mov r0, r4 + bl strlen + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DEB8C: .word UNK04_0220D328 + arm_func_end MOD04_021DEB54 + + .section .data + + .global UNK04_0220D328 +UNK04_0220D328: ; 0x0220D328 + .asciz "%c%s%c%s" + + .balign 4, 0 + + .section .bss + + .global UNK04_02210524 +UNK04_02210524: ; 0x02210524 + .space 0x18 -- cgit v1.2.3 From 6d864e78e737cec5387da17e5062b9e64bcec5eb Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 16 Aug 2021 21:43:23 +0100 Subject: another file --- arm9/arm9.lsf | 1 + arm9/global.inc | 81 ++ arm9/modules/04/asm/arm_04.s | 2032 --------------------------------- arm9/modules/04/asm/mod04_021DEB90.s | 2044 ++++++++++++++++++++++++++++++++++ 4 files changed, 2126 insertions(+), 2032 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021DEB90.s 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 -- cgit v1.2.3 From 5b5d2638dc1ffe73295ce239185c3c652f9ab3d3 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 17 Aug 2021 13:41:32 +0100 Subject: mod04_021E05FC --- arm9/arm9.lsf | 1 + arm9/global.inc | 7 + arm9/modules/04/asm/arm_04.s | 822 ---------------------------------- arm9/modules/04/asm/mod04_021E05FC.s | 830 +++++++++++++++++++++++++++++++++++ 4 files changed, 838 insertions(+), 822 deletions(-) create mode 100644 arm9/modules/04/asm/mod04_021E05FC.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 5b9fee47..31f43a15 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -673,6 +673,7 @@ Overlay MODULE_04 Object mod04_021DE2D0.o Object mod04_021DE89C.o Object mod04_021DEB90.o + Object mod04_021E05FC.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f08623d5..59162090 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6208,8 +6208,10 @@ .extern MOD04_021DFF74 .extern MOD04_021E0200 .extern MOD04_021E0374 +.extern MOD04_021E05FC .extern MOD04_021E0E48 .extern MOD04_021E0EAC +.extern MOD04_021E0F00 .extern MOD04_021E0F1C .extern MOD04_021E1034 .extern MOD04_021E1074 @@ -6248,6 +6250,7 @@ .extern MOD04_021E9568 .extern MOD04_021E9FD0 .extern MOD04_021EA138 +.extern MOD04_021EA1E0 .extern MOD04_021EA368 .extern MOD04_021EA530 .extern MOD04_021EA9C4 @@ -6302,6 +6305,10 @@ .extern MOD04_021F05F4 .extern MOD04_021F0664 .extern MOD04_021F06E4 +.extern MOD04_021F0B30 +.extern MOD04_021F0B9C +.extern MOD04_021F0D54 +.extern MOD04_021F0D8C .extern MOD04_021F0EB0 .extern MOD04_021F0F18 .extern MOD04_021F0F64 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 5d87ee03..696e0b3b 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,812 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021E05FC -MOD04_021E05FC: ; 0x021E05FC - ldr r0, _021E0624 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - beq _021E061C - ldr r0, [r0, #4] - cmp r0, #5 - moveq r0, #1 - bxeq lr -_021E061C: - mov r0, #0 - bx lr - .align 2, 0 -_021E0624: .word UNK04_022106C8 - arm_func_end MOD04_021E05FC - - arm_func_start MOD04_021E0628 -MOD04_021E0628: ; 0x021E0628 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r4, r1 - ldr r1, [r4] - mov r5, r0 - cmp r1, #0 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r1, _021E07CC ; =UNK04_022106C8 - ldr r2, [r1] - ldr r1, [r2, #4] - cmp r1, #3 - bne _021E0704 - ldrsb r1, [r4, #0x8e] - cmp r1, #0 - bne _021E06DC - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #8 - add r0, r0, #4 - bl DWCi_Acc_LoginIdToUserName - ldr r1, _021E07D0 ; =0x00000705 - add r2, sp, #8 - mov r0, r5 - bl MOD04_021F0B30 - bl MOD04_021E0DB0 - cmp r0, #0 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r0, _021E07CC ; =UNK04_022106C8 - mov r3, #4 - ldr r1, [r0] - ldr r0, _021E07D4 ; =MOD04_021E0628 - str r3, [r1, #4] - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - add sp, sp, #0x4c - cmp r0, #0 - ldmia sp!, {r4, r5, pc} -_021E06DC: - bl MOD04_021F0D54 - ldr r0, _021E07D8 ; =MOD04_021E0C80 - mov r1, #0 - bl MOD04_021E0A00 - ldr r0, _021E07CC ; =UNK04_022106C8 - mov r1, #1 - ldr r0, [r0] - add sp, sp, #0x4c - str r1, [r0, #4] - ldmia sp!, {r4, r5, pc} -_021E0704: - cmp r1, #4 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #0x1d - add r0, r0, #4 - bl DWCi_Acc_LoginIdToUserName - add r1, sp, #0x1d - add r0, r4, #0x8e - bl strcmp - cmp r0, #0 - bne _021E079C - ldr r0, _021E07CC ; =UNK04_022106C8 - add r2, sp, #0x32 - ldr r0, [r0] - ldr r1, [r0, #0xc] - add r0, r0, #0x3c - bl DWCi_Acc_LoginIdToUserName - ldr r0, _021E07CC ; =UNK04_022106C8 - ldr r2, [r4, #4] - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r1, r1, #0x3c - bl DWCi_Acc_SetLoginIdToUserData - mov r0, r5 - bl MOD04_021F0D54 - ldr r0, _021E07CC ; =UNK04_022106C8 - ldr r1, _021E07DC ; =UNK04_022106C4 - ldr r4, [r0] - ldr r0, _021E07E0 ; =UNK04_022106CC - ldr r2, [r1] - ldr r3, [r0] - add r0, r4, #0x48 - add r1, r4, #0x148 - blx r3 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_021E079C: - ldr r0, _021E07D4 ; =MOD04_021E0628 - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - cmp r0, #0 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E07CC: .word UNK04_022106C8 -_021E07D0: .word 0x00000705 -_021E07D4: .word MOD04_021E0628 -_021E07D8: .word MOD04_021E0C80 -_021E07DC: .word UNK04_022106C4 -_021E07E0: .word UNK04_022106CC - arm_func_end MOD04_021E0628 - - arm_func_start MOD04_021E07E4 -MOD04_021E07E4: ; 0x021E07E4 - stmdb sp!, {lr} - sub sp, sp, #0x3d4 - bl MOD04_021D988C - cmp r0, #0x15 - bne _021E08BC - add r0, sp, #0 - bl MOD04_021D97F8 - ldr r0, _021E09DC ; =UNK04_022106C8 - add r1, sp, #0x4a - ldr r0, [r0] - add r0, r0, #0x48 - bl strcpy - ldr r0, _021E09DC ; =UNK04_022106C8 - add r1, sp, #0x100 - ldr r0, [r0] - add r1, r1, #0x77 - add r0, r0, #0x148 - bl strcpy - bl MOD04_021D991C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E09DC ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x24] - ldr r0, [r0] - ldr r0, [r0, #0x1c] - bl DWCi_Acc_IsAuthentic - cmp r0, #0 - beq _021E0898 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r1, _021E09E0 ; =UNK04_022106C4 - ldr ip, [r0] - ldr r0, _021E09E4 ; =UNK04_022106CC - ldr r2, [r1] - ldr r3, [r0] - add r0, ip, #0x48 - add r1, ip, #0x148 - blx r3 - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E0898: - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r2, _021E09E8 ; =MOD04_021E0C98 - ldr r1, [r0] - mov r3, #3 - add r0, r1, #0x48 - add r1, r1, #0x148 - bl MOD04_021E0BE0 - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E08BC: - bl MOD04_021D988C - cmp r0, #0 - addeq sp, sp, #0x3d4 - ldmeqia sp!, {pc} - bl OS_GetTick - ldr r3, _021E09DC ; =UNK04_022106C8 - ldr r2, _021E09EC ; =0x000082EA - ldr ip, [r3] - mov r3, #0 - ldr lr, [ip, #0x28] - ldr ip, [ip, #0x2c] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _021E09F0 ; =0x00002710 - cmp r1, #0 - cmpeq r0, r2 - bls _021E0958 - add r0, sp, #0x1c4 - bl MOD04_021D97F8 - bl MOD04_021D991C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E09DC ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - mov r0, #2 - str r2, [r1, #0x24] - ldr r1, [sp, #0x1c4] - bl MOD04_021E0EAC - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E0958: - bl MOD04_021D991C - add r0, sp, #0x388 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x10] - bl MOD04_021DE89C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r2, r0, lsl #1 - ldr r1, [r1] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0x388 - bl MI_CpuCopy8 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r1, _021E09F4 ; =0x00000251 - ldr r2, [r0] - add r0, sp, #0x3bc - add r1, r2, r1 - bl strcpy - ldr r2, _021E09F8 ; =MOD04_021DD944 - ldr r0, _021E09DC ; =UNK04_022106C8 - str r2, [sp, #0x3c8] - ldr r2, _021E09FC ; =MOD04_021DD904 - ldr r1, [r0] - str r2, [sp, #0x3cc] - ldr r1, [r1, #0x24] - add r0, sp, #0x388 - bl MOD04_021D9ACC - add sp, sp, #0x3d4 - ldmfd sp!, {pc} - .align 2, 0 -_021E09DC: .word UNK04_022106C8 -_021E09E0: .word UNK04_022106C4 -_021E09E4: .word UNK04_022106CC -_021E09E8: .word MOD04_021E0C98 -_021E09EC: .word 0x000082EA -_021E09F0: .word 0x00002710 -_021E09F4: .word 0x00000251 -_021E09F8: .word MOD04_021DD944 -_021E09FC: .word MOD04_021DD904 - arm_func_end MOD04_021E07E4 - - arm_func_start MOD04_021E0A00 -MOD04_021E0A00: ; 0x021E0A00 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r5, r0 - mov r4, r1 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r2, _021E0BBC ; =UNK04_022106CC - ldr r1, _021E0BC0 ; =UNK04_022106C4 - ldr r0, [r0] - str r5, [r2] - str r4, [r1] - ldr r0, [r0, #0x1c] - bl DWCi_Acc_IsAuthentic - cmp r0, #0 - beq _021E0A68 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r2, r1, #0x248 - ldr r1, [r0, #0x24] - add r0, r0, #0x10 - bl DWCi_Acc_LoginIdToUserName - b _021E0B1C -_021E0A68: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - add r0, r0, #0x3c - bl DWCi_Acc_IsValidLoginId - cmp r0, #0 - bne _021E0AD0 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x1c] - add r0, r0, #4 - bl DWCi_Acc_CheckConsoleUserId - cmp r0, #0 - beq _021E0ABC - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r3, r1, #0x3c - add r0, r0, #4 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - b _021E0B04 -_021E0ABC: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - add r0, r0, #0x3c - bl DWCi_Acc_CreateTempLoginId - b _021E0B04 -_021E0AD0: - bl OS_GetTick - ldr r2, _021E0BC4 ; =0x6C078965 - ldr r3, _021E0BC8 ; =0x5D588B65 - umull ip, r4, r0, r2 - mla r4, r0, r3, r4 - ldr r3, _021E0BB8 ; =UNK04_022106C8 - ldr r0, _021E0BCC ; =0x00269EC3 - mla r4, r1, r2, r4 - adds r0, ip, r0 - ldr r3, [r3] - adc r1, r4, #0 - add r0, r3, #0x3c - bl DWCi_Acc_SetPlayerId -_021E0B04: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r2, [r0] - ldr r1, [r2, #0xc] - add r0, r2, #0x3c - add r2, r2, #0x248 - bl DWCi_Acc_LoginIdToUserName -_021E0B1C: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x10] - bl MOD04_021DE89C - ldr r1, _021E0BB8 ; =UNK04_022106C8 - mov r2, r0, lsl #1 - ldr r1, [r1] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0 - bl MI_CpuCopy8 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, _021E0BD0 ; =0x00000251 - ldr r2, [r0] - add r0, sp, #0x34 - add r1, r2, r1 - bl strcpy - ldr r4, _021E0BD4 ; =MOD04_021DD944 - ldr r3, _021E0BD8 ; =MOD04_021DD904 - ldr r1, _021E0BDC ; =0x00001C10 - mov r0, #0 - mov r2, #4 - str r4, [sp, #0x40] - str r3, [sp, #0x44] - bl MOD04_021DD924 - ldr r1, _021E0BB8 ; =UNK04_022106C8 - mov r4, r0 - ldr r0, [r1] - str r4, [r0, #0x24] - bl OS_GetTick - ldr r2, _021E0BB8 ; =UNK04_022106C8 - ldr r2, [r2] - str r0, [r2, #0x28] - str r1, [r2, #0x2c] - mov r1, r4 - add r0, sp, #0 - bl MOD04_021D9ACC - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E0BB8: .word UNK04_022106C8 -_021E0BBC: .word UNK04_022106CC -_021E0BC0: .word UNK04_022106C4 -_021E0BC4: .word 0x6C078965 -_021E0BC8: .word 0x5D588B65 -_021E0BCC: .word 0x00269EC3 -_021E0BD0: .word 0x00000251 -_021E0BD4: .word MOD04_021DD944 -_021E0BD8: .word MOD04_021DD904 -_021E0BDC: .word 0x00001C10 - arm_func_end MOD04_021E0A00 - - arm_func_start MOD04_021E0BE0 -MOD04_021E0BE0: ; 0x021E0BE0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r4, _021E0C7C ; =UNK04_022106C8 - mov r6, r1 - ldr r4, [r4] - mov r1, r0 - add r0, r4, #0x48 - mov r5, r2 - mov r4, r3 - bl strcpy - ldr r0, _021E0C7C ; =UNK04_022106C8 - mov r1, r6 - ldr r0, [r0] - add r0, r0, #0x148 - bl strcpy - ldr r0, _021E0C7C ; =UNK04_022106C8 - ldr r6, [r0] - bl OS_GetTick - str r0, [r6, #0x34] - str r1, [r6, #0x38] - mov r3, #1 - ldr r0, _021E0C7C ; =UNK04_022106C8 - str r3, [r6, #0x30] - ldr r2, [r0] - mov r1, #0 - str r1, [sp] - str r5, [sp, #4] - str r1, [sp, #8] - ldr r0, [r2] - add r1, r2, #0x48 - add r2, r2, #0x148 - bl MOD04_021F0D8C - bl MOD04_021E0DB0 - cmp r0, #0 - ldreq r0, _021E0C7C ; =UNK04_022106C8 - ldreq r0, [r0] - streq r4, [r0, #4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E0C7C: .word UNK04_022106C8 - arm_func_end MOD04_021E0BE0 - - arm_func_start MOD04_021E0C80 -MOD04_021E0C80: ; 0x021E0C80 - ldr ip, _021E0C90 ; =MOD04_021E0BE0 - ldr r2, _021E0C94 ; =MOD04_021E0C98 - mov r3, #2 - bx ip - .align 2, 0 -_021E0C90: .word MOD04_021E0BE0 -_021E0C94: .word MOD04_021E0C98 - arm_func_end MOD04_021E0C80 - - arm_func_start MOD04_021E0C98 -MOD04_021E0C98: ; 0x021E0C98 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r3, _021E0DA0 ; =UNK04_022106C8 - mov r2, #0 - ldr ip, [r3] - mov r4, r1 - str r2, [ip, #0x30] - ldr r1, [r4] - cmp r1, #0 - bne _021E0D90 - ldr ip, [r3] - ldr r1, [ip, #4] - cmp r1, #2 - bne _021E0D5C - ldr r1, [ip, #0x1c] - ldr r0, [r4, #4] - ldr r1, [r1, #0x1c] - cmp r1, r0 - bne _021E0D48 - ldr r1, _021E0DA4 ; =UNK04_0220D34C - mov r3, #5 - mov r0, #1 - str r3, [ip, #4] - bl MOD04_021E1E30 - bl MOD04_021E0DB0 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, _021E0DA0 ; =UNK04_022106C8 - ldr r1, [r4, #4] - ldr r3, [r0] - mov r0, #0 - ldr r2, [r3, #0x18] - ldr r3, [r3, #0x14] - blx r3 - bl MOD04_021DF7C4 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #4] - bl MOD04_021EA1E0 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, pc} -_021E0D48: - ldr r1, _021E0DA8 ; =0xFFFF15A0 - mov r0, #6 - bl MOD04_021E0EAC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_021E0D5C: - cmp r1, #3 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r1, _021E0DAC ; =MOD04_021E0628 - mov r3, r2 - str r1, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, pc} -_021E0D90: - mov r0, r1 - bl MOD04_021E0DB0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0DA0: .word UNK04_022106C8 -_021E0DA4: .word UNK04_0220D34C -_021E0DA8: .word 0xFFFF15A0 -_021E0DAC: .word MOD04_021E0628 - arm_func_end MOD04_021E0C98 - - arm_func_start MOD04_021E0DB0 -MOD04_021E0DB0: ; 0x021E0DB0 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _021E0E0C -_021E0DCC: ; jump table - b _021E0E0C ; case 0 - b _021E0DE0 ; case 1 - b _021E0DEC ; case 2 - b _021E0DF8 ; case 3 - b _021E0E04 ; case 4 -_021E0DE0: - mov r0, #9 - mvn r2, #0 - b _021E0E0C -_021E0DEC: - mov r0, #9 - mvn r2, #1 - b _021E0E0C -_021E0DF8: - mov r0, #6 - mvn r2, #9 - b _021E0E0C -_021E0E04: - mov r0, #6 - mvn r2, #0x13 -_021E0E0C: - ldr r1, _021E0E20 ; =0xFFFF11B8 - add r1, r2, r1 - bl MOD04_021E0EAC - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0E20: .word 0xFFFF11B8 - arm_func_end MOD04_021E0DB0 - - arm_func_start MOD04_021E0E24 -MOD04_021E0E24: ; 0x021E0E24 - ldr r0, _021E0E44 ; =UNK04_022106C8 - ldr r2, [r0] - cmp r2, #0 - movne r1, #0 - strne r1, [r2, #4] - ldrne r0, [r0] - strne r1, [r0, #0x30] - bx lr - .align 2, 0 -_021E0E44: .word UNK04_022106C8 - arm_func_end MOD04_021E0E24 - - arm_func_start MOD04_021E0E48 -MOD04_021E0E48: ; 0x021E0E48 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E0EA8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _021E0E94 - bl MOD04_021D9974 - bl MOD04_021D991C - ldr r1, _021E0EA8 ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E0EA8 ; =UNK04_022106C8 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x24] -_021E0E94: - ldr r0, _021E0EA8 ; =UNK04_022106C8 - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E0EA8: .word UNK04_022106C8 - arm_func_end MOD04_021E0E48 - - arm_func_start MOD04_021E0EAC -MOD04_021E0EAC: ; 0x021E0EAC - stmdb sp!, {r4, lr} - ldr r2, _021E0EFC ; =UNK04_022106C8 - mov r4, r0 - ldr r2, [r2] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021DD6B0 - ldr r0, _021E0EFC ; =UNK04_022106C8 - ldr r0, [r0] - ldr r3, [r0, #0x14] - cmp r3, #0 - beq _021E0EF4 - ldr r2, [r0, #0x18] - mov r0, r4 - mov r1, #0 - blx r3 -_021E0EF4: - bl MOD04_021E0E24 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0EFC: .word UNK04_022106C8 - arm_func_end MOD04_021E0EAC - - arm_func_start MOD04_021E0F00 -MOD04_021E0F00: ; 0x021E0F00 - ldr r0, _021E0F18 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x1c] - moveq r0, #0 - bx lr - .align 2, 0 -_021E0F18: .word UNK04_022106C8 - arm_func_end MOD04_021E0F00 - - arm_func_start MOD04_021E0F1C -MOD04_021E0F1C: ; 0x021E0F1C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r0, [r0] - 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, _021E1024 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _021E101C -_021E0F60: ; jump table - b _021E101C ; case 0 - b _021E0F78 ; case 1 - b _021E0F84 ; case 2 - b _021E0F84 ; case 3 - b _021E0F84 ; case 4 - b _021E101C ; case 5 -_021E0F78: - bl MOD04_021E07E4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0F84: - ldr r0, [r1] - cmp r0, #0 - beq _021E0FA0 - ldr r1, [r0] - cmp r1, #0 - beq _021E0FA0 - bl MOD04_021F0F18 -_021E0FA0: - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x30] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl OS_GetTick - ldr r3, _021E1024 ; =UNK04_022106C8 - ldr r2, _021E1028 ; =0x000082EA - ldr ip, [r3] - mov r3, #0 - ldr lr, [ip, #0x34] - ldr ip, [ip, #0x38] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _021E102C ; =0x0000EA60 - cmp r1, #0 - cmpeq r0, r2 - addls sp, sp, #4 - ldmlsia sp!, {pc} - ldr r1, _021E1030 ; =0xFFFF1172 - mov r0, #6 - bl MOD04_021E0EAC - ldr r0, _021E1024 ; =UNK04_022106C8 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x30] -_021E101C: - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E1024: .word UNK04_022106C8 -_021E1028: .word 0x000082EA -_021E102C: .word 0x0000EA60 -_021E1030: .word 0xFFFF1172 - arm_func_end MOD04_021E0F1C - - arm_func_start MOD04_021E1034 -MOD04_021E1034: ; 0x021E1034 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E106C ; =MOD04_021E0C80 - mov r1, #0 - bl MOD04_021E0A00 - ldr r0, _021E1070 ; =UNK04_022106C8 - mov r3, #1 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - str r1, [r0, #0x30] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E106C: .word MOD04_021E0C80 -_021E1070: .word UNK04_022106C8 - arm_func_end MOD04_021E1034 - - arm_func_start MOD04_021E1074 -MOD04_021E1074: ; 0x021E1074 - stmdb sp!, {r4, r5, r6, lr} - ldr ip, _021E10F4 ; =UNK04_022106C8 - mov r6, r1 - mov r5, r2 - mov r1, #0 - mov r2, #0x260 - mov r4, r3 - str r0, [ip] - bl MI_CpuFill8 - ldr r0, _021E10F4 ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - ldr ip, [sp, #0x10] - str r5, [r1] - ldr r1, [r0] - ldr r5, [sp, #0x14] - str r2, [r1, #4] - ldr r1, [r0] - ldr r3, [sp, #0x18] - str r4, [r1, #8] - ldr r1, [r0] - ldr r2, [sp, #0x1c] - str ip, [r1, #0xc] - ldr r1, [r0] - str r5, [r1, #0x10] - ldr r1, [r0] - str r3, [r1, #0x14] - ldr r1, [r0] - str r2, [r1, #0x18] - ldr r0, [r0] - str r6, [r0, #0x1c] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E10F4: .word UNK04_022106C8 - arm_func_end MOD04_021E1074 - arm_func_start MOD04_021E10F8 MOD04_021E10F8: ; 0x021E10F8 ldr r0, _021E1108 ; =UNK04_022106D0 @@ -51314,10 +50508,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D34C -UNK04_0220D34C: ; 0x0220D34C - .byte 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D350 UNK04_0220D350: ; 0x0220D350 .byte 0x00, 0x00, 0x00, 0x00 @@ -53952,18 +53142,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_022106C4 -UNK04_022106C4: ; 0x022106C4 - .space 0x4 - - .global UNK04_022106C8 -UNK04_022106C8: ; 0x022106C8 - .space 0x4 - - .global UNK04_022106CC -UNK04_022106CC: ; 0x022106CC - .space 0x4 - .global UNK04_022106D0 UNK04_022106D0: ; 0x022106D0 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s new file mode 100644 index 00000000..21395d39 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021E05FC.s @@ -0,0 +1,830 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021E05FC +MOD04_021E05FC: ; 0x021E05FC + ldr r0, _021E0624 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + beq _021E061C + ldr r0, [r0, #4] + cmp r0, #5 + moveq r0, #1 + bxeq lr +_021E061C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0624: .word UNK04_022106C8 + arm_func_end MOD04_021E05FC + + arm_func_start MOD04_021E0628 +MOD04_021E0628: ; 0x021E0628 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r4, r1 + ldr r1, [r4] + mov r5, r0 + cmp r1, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r1, _021E07CC ; =UNK04_022106C8 + ldr r2, [r1] + ldr r1, [r2, #4] + cmp r1, #3 + bne _021E0704 + ldrsb r1, [r4, #0x8e] + cmp r1, #0 + bne _021E06DC + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #8 + add r0, r0, #4 + bl DWCi_Acc_LoginIdToUserName + ldr r1, _021E07D0 ; =0x00000705 + add r2, sp, #8 + mov r0, r5 + bl MOD04_021F0B30 + bl MOD04_021E0DB0 + cmp r0, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, _021E07CC ; =UNK04_022106C8 + mov r3, #4 + ldr r1, [r0] + ldr r0, _021E07D4 ; =MOD04_021E0628 + str r3, [r1, #4] + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + add sp, sp, #0x4c + cmp r0, #0 + ldmia sp!, {r4, r5, pc} +_021E06DC: + bl MOD04_021F0D54 + ldr r0, _021E07D8 ; =MOD04_021E0C80 + mov r1, #0 + bl MOD04_021E0A00 + ldr r0, _021E07CC ; =UNK04_022106C8 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #0x4c + str r1, [r0, #4] + ldmia sp!, {r4, r5, pc} +_021E0704: + cmp r1, #4 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #0x1d + add r0, r0, #4 + bl DWCi_Acc_LoginIdToUserName + add r1, sp, #0x1d + add r0, r4, #0x8e + bl strcmp + cmp r0, #0 + bne _021E079C + ldr r0, _021E07CC ; =UNK04_022106C8 + add r2, sp, #0x32 + ldr r0, [r0] + ldr r1, [r0, #0xc] + add r0, r0, #0x3c + bl DWCi_Acc_LoginIdToUserName + ldr r0, _021E07CC ; =UNK04_022106C8 + ldr r2, [r4, #4] + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r1, r1, #0x3c + bl DWCi_Acc_SetLoginIdToUserData + mov r0, r5 + bl MOD04_021F0D54 + ldr r0, _021E07CC ; =UNK04_022106C8 + ldr r1, _021E07DC ; =UNK04_022106C4 + ldr r4, [r0] + ldr r0, _021E07E0 ; =UNK04_022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, r4, #0x48 + add r1, r4, #0x148 + blx r3 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} +_021E079C: + ldr r0, _021E07D4 ; =MOD04_021E0628 + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + cmp r0, #0 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E07CC: .word UNK04_022106C8 +_021E07D0: .word 0x00000705 +_021E07D4: .word MOD04_021E0628 +_021E07D8: .word MOD04_021E0C80 +_021E07DC: .word UNK04_022106C4 +_021E07E0: .word UNK04_022106CC + arm_func_end MOD04_021E0628 + + arm_func_start MOD04_021E07E4 +MOD04_021E07E4: ; 0x021E07E4 + stmdb sp!, {lr} + sub sp, sp, #0x3d4 + bl MOD04_021D988C + cmp r0, #0x15 + bne _021E08BC + add r0, sp, #0 + bl MOD04_021D97F8 + ldr r0, _021E09DC ; =UNK04_022106C8 + add r1, sp, #0x4a + ldr r0, [r0] + add r0, r0, #0x48 + bl strcpy + ldr r0, _021E09DC ; =UNK04_022106C8 + add r1, sp, #0x100 + ldr r0, [r0] + add r1, r1, #0x77 + add r0, r0, #0x148 + bl strcpy + bl MOD04_021D991C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E09DC ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x24] + ldr r0, [r0] + ldr r0, [r0, #0x1c] + bl DWCi_Acc_IsAuthentic + cmp r0, #0 + beq _021E0898 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r1, _021E09E0 ; =UNK04_022106C4 + ldr ip, [r0] + ldr r0, _021E09E4 ; =UNK04_022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, ip, #0x48 + add r1, ip, #0x148 + blx r3 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0898: + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r2, _021E09E8 ; =MOD04_021E0C98 + ldr r1, [r0] + mov r3, #3 + add r0, r1, #0x48 + add r1, r1, #0x148 + bl MOD04_021E0BE0 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E08BC: + bl MOD04_021D988C + cmp r0, #0 + addeq sp, sp, #0x3d4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E09DC ; =UNK04_022106C8 + ldr r2, _021E09EC ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x28] + ldr ip, [ip, #0x2c] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E09F0 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _021E0958 + add r0, sp, #0x1c4 + bl MOD04_021D97F8 + bl MOD04_021D991C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E09DC ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + mov r0, #2 + str r2, [r1, #0x24] + ldr r1, [sp, #0x1c4] + bl MOD04_021E0EAC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0958: + bl MOD04_021D991C + add r0, sp, #0x388 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD04_021DE89C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0x388 + bl MI_CpuCopy8 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r1, _021E09F4 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x3bc + add r1, r2, r1 + bl strcpy + ldr r2, _021E09F8 ; =MOD04_021DD944 + ldr r0, _021E09DC ; =UNK04_022106C8 + str r2, [sp, #0x3c8] + ldr r2, _021E09FC ; =MOD04_021DD904 + ldr r1, [r0] + str r2, [sp, #0x3cc] + ldr r1, [r1, #0x24] + add r0, sp, #0x388 + bl MOD04_021D9ACC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} + .align 2, 0 +_021E09DC: .word UNK04_022106C8 +_021E09E0: .word UNK04_022106C4 +_021E09E4: .word UNK04_022106CC +_021E09E8: .word MOD04_021E0C98 +_021E09EC: .word 0x000082EA +_021E09F0: .word 0x00002710 +_021E09F4: .word 0x00000251 +_021E09F8: .word MOD04_021DD944 +_021E09FC: .word MOD04_021DD904 + arm_func_end MOD04_021E07E4 + + arm_func_start MOD04_021E0A00 +MOD04_021E0A00: ; 0x021E0A00 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r2, _021E0BBC ; =UNK04_022106CC + ldr r1, _021E0BC0 ; =UNK04_022106C4 + ldr r0, [r0] + str r5, [r2] + str r4, [r1] + ldr r0, [r0, #0x1c] + bl DWCi_Acc_IsAuthentic + cmp r0, #0 + beq _021E0A68 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r2, r1, #0x248 + ldr r1, [r0, #0x24] + add r0, r0, #0x10 + bl DWCi_Acc_LoginIdToUserName + b _021E0B1C +_021E0A68: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl DWCi_Acc_IsValidLoginId + cmp r0, #0 + bne _021E0AD0 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + add r0, r0, #4 + bl DWCi_Acc_CheckConsoleUserId + cmp r0, #0 + beq _021E0ABC + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r3, r1, #0x3c + add r0, r0, #4 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + b _021E0B04 +_021E0ABC: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl DWCi_Acc_CreateTempLoginId + b _021E0B04 +_021E0AD0: + bl OS_GetTick + ldr r2, _021E0BC4 ; =0x6C078965 + ldr r3, _021E0BC8 ; =0x5D588B65 + umull ip, r4, r0, r2 + mla r4, r0, r3, r4 + ldr r3, _021E0BB8 ; =UNK04_022106C8 + ldr r0, _021E0BCC ; =0x00269EC3 + mla r4, r1, r2, r4 + adds r0, ip, r0 + ldr r3, [r3] + adc r1, r4, #0 + add r0, r3, #0x3c + bl DWCi_Acc_SetPlayerId +_021E0B04: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r2, [r0] + ldr r1, [r2, #0xc] + add r0, r2, #0x3c + add r2, r2, #0x248 + bl DWCi_Acc_LoginIdToUserName +_021E0B1C: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD04_021DE89C + ldr r1, _021E0BB8 ; =UNK04_022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0 + bl MI_CpuCopy8 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, _021E0BD0 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x34 + add r1, r2, r1 + bl strcpy + ldr r4, _021E0BD4 ; =MOD04_021DD944 + ldr r3, _021E0BD8 ; =MOD04_021DD904 + ldr r1, _021E0BDC ; =0x00001C10 + mov r0, #0 + mov r2, #4 + str r4, [sp, #0x40] + str r3, [sp, #0x44] + bl MOD04_021DD924 + ldr r1, _021E0BB8 ; =UNK04_022106C8 + mov r4, r0 + ldr r0, [r1] + str r4, [r0, #0x24] + bl OS_GetTick + ldr r2, _021E0BB8 ; =UNK04_022106C8 + ldr r2, [r2] + str r0, [r2, #0x28] + str r1, [r2, #0x2c] + mov r1, r4 + add r0, sp, #0 + bl MOD04_021D9ACC + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E0BB8: .word UNK04_022106C8 +_021E0BBC: .word UNK04_022106CC +_021E0BC0: .word UNK04_022106C4 +_021E0BC4: .word 0x6C078965 +_021E0BC8: .word 0x5D588B65 +_021E0BCC: .word 0x00269EC3 +_021E0BD0: .word 0x00000251 +_021E0BD4: .word MOD04_021DD944 +_021E0BD8: .word MOD04_021DD904 +_021E0BDC: .word 0x00001C10 + arm_func_end MOD04_021E0A00 + + arm_func_start MOD04_021E0BE0 +MOD04_021E0BE0: ; 0x021E0BE0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r4, _021E0C7C ; =UNK04_022106C8 + mov r6, r1 + ldr r4, [r4] + mov r1, r0 + add r0, r4, #0x48 + mov r5, r2 + mov r4, r3 + bl strcpy + ldr r0, _021E0C7C ; =UNK04_022106C8 + mov r1, r6 + ldr r0, [r0] + add r0, r0, #0x148 + bl strcpy + ldr r0, _021E0C7C ; =UNK04_022106C8 + ldr r6, [r0] + bl OS_GetTick + str r0, [r6, #0x34] + str r1, [r6, #0x38] + mov r3, #1 + ldr r0, _021E0C7C ; =UNK04_022106C8 + str r3, [r6, #0x30] + ldr r2, [r0] + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, r2, #0x48 + add r2, r2, #0x148 + bl MOD04_021F0D8C + bl MOD04_021E0DB0 + cmp r0, #0 + ldreq r0, _021E0C7C ; =UNK04_022106C8 + ldreq r0, [r0] + streq r4, [r0, #4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E0C7C: .word UNK04_022106C8 + arm_func_end MOD04_021E0BE0 + + arm_func_start MOD04_021E0C80 +MOD04_021E0C80: ; 0x021E0C80 + ldr ip, _021E0C90 ; =MOD04_021E0BE0 + ldr r2, _021E0C94 ; =MOD04_021E0C98 + mov r3, #2 + bx ip + .align 2, 0 +_021E0C90: .word MOD04_021E0BE0 +_021E0C94: .word MOD04_021E0C98 + arm_func_end MOD04_021E0C80 + + arm_func_start MOD04_021E0C98 +MOD04_021E0C98: ; 0x021E0C98 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r3, _021E0DA0 ; =UNK04_022106C8 + mov r2, #0 + ldr ip, [r3] + mov r4, r1 + str r2, [ip, #0x30] + ldr r1, [r4] + cmp r1, #0 + bne _021E0D90 + ldr ip, [r3] + ldr r1, [ip, #4] + cmp r1, #2 + bne _021E0D5C + ldr r1, [ip, #0x1c] + ldr r0, [r4, #4] + ldr r1, [r1, #0x1c] + cmp r1, r0 + bne _021E0D48 + ldr r1, _021E0DA4 ; =UNK04_0220D34C + mov r3, #5 + mov r0, #1 + str r3, [ip, #4] + bl MOD04_021E1E30 + bl MOD04_021E0DB0 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, _021E0DA0 ; =UNK04_022106C8 + ldr r1, [r4, #4] + ldr r3, [r0] + mov r0, #0 + ldr r2, [r3, #0x18] + ldr r3, [r3, #0x14] + blx r3 + bl MOD04_021DF7C4 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #4] + bl MOD04_021EA1E0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D48: + ldr r1, _021E0DA8 ; =0xFFFF15A0 + mov r0, #6 + bl MOD04_021E0EAC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_021E0D5C: + cmp r1, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r1, _021E0DAC ; =MOD04_021E0628 + mov r3, r2 + str r1, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D90: + mov r0, r1 + bl MOD04_021E0DB0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0DA0: .word UNK04_022106C8 +_021E0DA4: .word UNK04_0220D34C +_021E0DA8: .word 0xFFFF15A0 +_021E0DAC: .word MOD04_021E0628 + arm_func_end MOD04_021E0C98 + + arm_func_start MOD04_021E0DB0 +MOD04_021E0DB0: ; 0x021E0DB0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E0E0C +_021E0DCC: ; jump table + b _021E0E0C ; case 0 + b _021E0DE0 ; case 1 + b _021E0DEC ; case 2 + b _021E0DF8 ; case 3 + b _021E0E04 ; case 4 +_021E0DE0: + mov r0, #9 + mvn r2, #0 + b _021E0E0C +_021E0DEC: + mov r0, #9 + mvn r2, #1 + b _021E0E0C +_021E0DF8: + mov r0, #6 + mvn r2, #9 + b _021E0E0C +_021E0E04: + mov r0, #6 + mvn r2, #0x13 +_021E0E0C: + ldr r1, _021E0E20 ; =0xFFFF11B8 + add r1, r2, r1 + bl MOD04_021E0EAC + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0E20: .word 0xFFFF11B8 + arm_func_end MOD04_021E0DB0 + + arm_func_start MOD04_021E0E24 +MOD04_021E0E24: ; 0x021E0E24 + ldr r0, _021E0E44 ; =UNK04_022106C8 + ldr r2, [r0] + cmp r2, #0 + movne r1, #0 + strne r1, [r2, #4] + ldrne r0, [r0] + strne r1, [r0, #0x30] + bx lr + .align 2, 0 +_021E0E44: .word UNK04_022106C8 + arm_func_end MOD04_021E0E24 + + arm_func_start MOD04_021E0E48 +MOD04_021E0E48: ; 0x021E0E48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0EA8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _021E0E94 + bl MOD04_021D9974 + bl MOD04_021D991C + ldr r1, _021E0EA8 ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E0EA8 ; =UNK04_022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x24] +_021E0E94: + ldr r0, _021E0EA8 ; =UNK04_022106C8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0EA8: .word UNK04_022106C8 + arm_func_end MOD04_021E0E48 + + arm_func_start MOD04_021E0EAC +MOD04_021E0EAC: ; 0x021E0EAC + stmdb sp!, {r4, lr} + ldr r2, _021E0EFC ; =UNK04_022106C8 + mov r4, r0 + ldr r2, [r2] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021DD6B0 + ldr r0, _021E0EFC ; =UNK04_022106C8 + ldr r0, [r0] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _021E0EF4 + ldr r2, [r0, #0x18] + mov r0, r4 + mov r1, #0 + blx r3 +_021E0EF4: + bl MOD04_021E0E24 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0EFC: .word UNK04_022106C8 + arm_func_end MOD04_021E0EAC + + arm_func_start MOD04_021E0F00 +MOD04_021E0F00: ; 0x021E0F00 + ldr r0, _021E0F18 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x1c] + moveq r0, #0 + bx lr + .align 2, 0 +_021E0F18: .word UNK04_022106C8 + arm_func_end MOD04_021E0F00 + + arm_func_start MOD04_021E0F1C +MOD04_021E0F1C: ; 0x021E0F1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r0, [r0] + 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, _021E1024 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021E101C +_021E0F60: ; jump table + b _021E101C ; case 0 + b _021E0F78 ; case 1 + b _021E0F84 ; case 2 + b _021E0F84 ; case 3 + b _021E0F84 ; case 4 + b _021E101C ; case 5 +_021E0F78: + bl MOD04_021E07E4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0F84: + ldr r0, [r1] + cmp r0, #0 + beq _021E0FA0 + ldr r1, [r0] + cmp r1, #0 + beq _021E0FA0 + bl MOD04_021F0F18 +_021E0FA0: + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x30] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E1024 ; =UNK04_022106C8 + ldr r2, _021E1028 ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x34] + ldr ip, [ip, #0x38] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E102C ; =0x0000EA60 + cmp r1, #0 + cmpeq r0, r2 + addls sp, sp, #4 + ldmlsia sp!, {pc} + ldr r1, _021E1030 ; =0xFFFF1172 + mov r0, #6 + bl MOD04_021E0EAC + ldr r0, _021E1024 ; =UNK04_022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x30] +_021E101C: + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1024: .word UNK04_022106C8 +_021E1028: .word 0x000082EA +_021E102C: .word 0x0000EA60 +_021E1030: .word 0xFFFF1172 + arm_func_end MOD04_021E0F1C + + arm_func_start MOD04_021E1034 +MOD04_021E1034: ; 0x021E1034 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E106C ; =MOD04_021E0C80 + mov r1, #0 + bl MOD04_021E0A00 + ldr r0, _021E1070 ; =UNK04_022106C8 + mov r3, #1 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + str r1, [r0, #0x30] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E106C: .word MOD04_021E0C80 +_021E1070: .word UNK04_022106C8 + arm_func_end MOD04_021E1034 + + arm_func_start MOD04_021E1074 +MOD04_021E1074: ; 0x021E1074 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _021E10F4 ; =UNK04_022106C8 + mov r6, r1 + mov r5, r2 + mov r1, #0 + mov r2, #0x260 + mov r4, r3 + str r0, [ip] + bl MI_CpuFill8 + ldr r0, _021E10F4 ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + ldr ip, [sp, #0x10] + str r5, [r1] + ldr r1, [r0] + ldr r5, [sp, #0x14] + str r2, [r1, #4] + ldr r1, [r0] + ldr r3, [sp, #0x18] + str r4, [r1, #8] + ldr r1, [r0] + ldr r2, [sp, #0x1c] + str ip, [r1, #0xc] + ldr r1, [r0] + str r5, [r1, #0x10] + ldr r1, [r0] + str r3, [r1, #0x14] + ldr r1, [r0] + str r2, [r1, #0x18] + ldr r0, [r0] + str r6, [r0, #0x1c] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E10F4: .word UNK04_022106C8 + arm_func_end MOD04_021E1074 + + .section .data + + .global UNK_0220D34C +UNK04_0220D34C: ; 0x0220D34C + .byte 0x00, 0x00, 0x00, 0x00 + + .section .bss + + .global UNK04_022106C4 +UNK04_022106C4: ; 0x022106C4 + .space 0x4 + + .global UNK04_022106C8 +UNK04_022106C8: ; 0x022106C8 + .space 0x4 + + .global UNK04_022106CC +UNK04_022106CC: ; 0x022106CC + .space 0x4 -- cgit v1.2.3