diff options
author | red031000 <rubenru09@aol.com> | 2021-08-07 23:39:10 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2021-08-16 14:26:00 +0100 |
commit | 1de157cf027c604a35537ad457bf476eb3068c7c (patch) | |
tree | 57be15dd37dd876626d6d575d65007bcf21afba8 | |
parent | 168950d7e03129c23ddce331593823d1d48411cf (diff) |
start to split mod04
-rw-r--r-- | arm9/arm9.lsf | 5 | ||||
-rw-r--r-- | arm9/global.inc | 21 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 1727 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021D74E0.s (renamed from arm9/modules/04/asm/thumb_04.s) | 850 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021D868C.s | 845 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021D8D18.s | 1233 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021D9C2C.s | 549 |
7 files changed, 2660 insertions, 2570 deletions
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/thumb_04.s b/arm9/modules/04/asm/mod04_021D74E0.s index 6f673fe8..4eba9197 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/mod04_021D74E0.s @@ -2302,856 +2302,22 @@ MOD04_021D8678: ; 0x021D8678 _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 + .section .bss - .global UNK04_0220BAC0 -UNK04_0220BAC0: ; 0x0220BAC0 - .byte 0x0D, 0x0D, 0x0D + .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" - - .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 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 |