diff options
author | red031000 <rubenru09@aol.com> | 2021-08-16 20:04:33 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2021-08-16 20:04:33 +0100 |
commit | 52da4a5a72a753d99ec0fdcd44429dcdbfeed1d4 (patch) | |
tree | a5e85979c1eb41f7aae932cc8f8c2c0e64b0bfb4 | |
parent | 79375b4aa98c8e2980bde41be6fc8e9e0781b9fd (diff) |
0
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/global.inc | 8 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 473 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021DDF40.s | 4 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021DE2D0.s | 482 |
5 files changed, 493 insertions, 475 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c7d05c12..ba722fd1 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -670,6 +670,7 @@ Overlay MODULE_04 Object mod04_021DD82C.o Object mod04_021DD984.o Object mod04_021DDF40.o + Object mod04_021DE2D0.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index 7332b638..c7772ac0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6236,6 +6236,14 @@ .extern MOD04_021F024C .extern MOD04_021F0250 .extern MOD04_021F025C +.extern MOD04_022069DC +.extern MOD04_02206E6C +.extern MOD04_02206EFC +.extern MOD04_02207158 +.extern MOD04_02207330 +.extern MOD04_0220733C +.extern MOD04_022074EC +.extern MOD04_022077A8 .extern MOD05_021D74E0 .extern MOD05_021D7A20 .extern MOD05_021D7A28 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index e5ec274a..28b7edca 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,461 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021DE2D0 -MOD04_021DE2D0: ; 0x021DE2D0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - mov r5, r0 - mov r4, r1 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl MOD04_02207330 - add sp, sp, #4 - ldmia sp!, {r4, r5, pc} - arm_func_end MOD04_021DE2D0 - - arm_func_start MOD04_021DE308 -MOD04_021DE308: ; 0x021DE308 - stmdb sp!, {lr} - sub sp, sp, #4 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {pc} - bl MOD04_02207158 - add sp, sp, #4 - ldmfd sp!, {pc} - arm_func_end MOD04_021DE308 - - arm_func_start MOD04_021DE330 -MOD04_021DE330: ; 0x021DE330 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_0220733C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE330 - - arm_func_start MOD04_021DE364 -MOD04_021DE364: ; 0x021DE364 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xb0 - mul r2, r4, r0 - mov r0, r6 - mov r1, #0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_022074EC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE364 - - arm_func_start MOD04_021DE3AC -MOD04_021DE3AC: ; 0x021DE3AC - stmdb sp!, {r4, lr} - mov r4, r0 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl MOD04_022077A8 - ldmia sp!, {r4, pc} - arm_func_end MOD04_021DE3AC - - arm_func_start MOD04_021DE3D0 -MOD04_021DE3D0: ; 0x021DE3D0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MOD04_022069DC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MOD04_021DE3D0 - - arm_func_start MOD04_021DE404 -MOD04_021DE404: ; 0x021DE404 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r1, _021DE454 ; =UNK04_02210520 - ldr r2, [r1] - cmp r2, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {pc} - str r0, [r2, #4] - ldr r0, [r1] - ldr r0, [r0, #0x48] - cmp r0, #0 - bne _021DE440 - bl MOD04_021DE730 - b _021DE448 -_021DE440: - ldr r0, _021DE458 ; =MOD04_021DE730 - bl MOD04_02206E6C -_021DE448: - mov r0, #1 - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021DE454: .word UNK04_02210520 -_021DE458: .word MOD04_021DE730 - arm_func_end MOD04_021DE404 - - arm_func_start MOD04_021DE45C -MOD04_021DE45C: ; 0x021DE45C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xa80 - mov r1, #0x20 - bl MOD04_021DE884 - ldr r2, _021DE568 ; =UNK04_02210520 - mov r1, #0 - str r0, [r2] - str r1, [r0, #0x48] - ldr r0, [r2] - mov r2, #0xa80 - bl MI_CpuFill8 - ldr r0, _021DE568 ; =UNK04_02210520 - mov r1, r5 - ldr r3, [r0] - mov r2, #0x1f - str r6, [r3] - ldr r0, [r0] - add r0, r0, #8 - bl strncpy - ldr r0, _021DE568 ; =UNK04_02210520 - mov r1, r4 - ldr r0, [r0] - mov r2, #0x1f - add r0, r0, #0x28 - bl strncpy - ldr r1, _021DE568 ; =UNK04_02210520 - ldr r0, _021DE56C ; =UNK04_0220D2F8 - ldr r1, [r1] - add r1, r1, #0x4c - bl MOD04_021DE174 - cmp r0, #0 - bne _021DE520 - ldr r0, _021DE568 ; =UNK04_02210520 - ldr r0, [r0] - bl MOD04_021DE86C - ldr r1, _021DE568 ; =UNK04_02210520 - mov r0, #0 - str r0, [r1] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_021DE520: - ldr r0, _021DE568 ; =UNK04_02210520 - mov r2, #0x800 - ldr r0, [r0] - ldr r1, _021DE570 ; =MOD04_021DE574 - add r0, r0, #0x9c0 - mov r3, r0 - str r2, [sp] - mov ip, #0x10 - mov r2, #0 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _021DE568 ; =UNK04_02210520 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DE568: .word UNK04_02210520 -_021DE56C: .word UNK04_0220D2F8 -_021DE570: .word MOD04_021DE574 - arm_func_end MOD04_021DE45C - - arm_func_start MOD04_021DE574 -MOD04_021DE574: ; 0x021DE574 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2a4 - mov r7, #0 - mov r6, #6 - mvn r5, #0 - mov r4, #0x64 -_021DE58C: - bl MOD04_021DE150 - cmp r0, #3 - bne _021DE6AC - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r5, [r0] - add r0, r5, #0x50 - bl strlen - mov r4, r0 - ldr r0, _021DE71C ; =UNK04_0220D300 - bl strlen - add r0, r4, r0 - cmp r0, #0xff - bls _021DE5D8 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE5D8: - ldr r2, _021DE720 ; =UNK04_0220D314 - add r0, sp, #0x10 - add r3, r5, #0x50 - mov r1, #0x100 - bl OS_SNPrintf - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r4, [r0] - add r0, r4, #0x91 - bl strlen - mov r1, r0 - add r2, sp, #0x110 - add r0, r4, #0x91 - mov r3, #0x190 - bl MOD04_021DD4FC - cmp r0, #0 - bge _021DE630 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE630: - ldr r0, _021DE718 ; =UNK04_02210520 - ldr r4, _021DE724 ; =MOD04_021DE774 - ldr r2, [r0] - ldr r0, _021DE728 ; =MOD04_021DE884 - add r1, r2, #8 - str r1, [sp] - add r1, r2, #0x28 - str r1, [sp, #4] - ldr r1, _021DE72C ; =MOD04_021DE86C - add r2, sp, #0x10 - add r3, sp, #0x110 - str r4, [sp, #8] - bl MOD04_02206EFC - cmp r0, #0 - bne _021DE684 - mov r0, #0 - mov r1, #8 - mvn r2, #0 - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE684: - ldr r1, _021DE718 ; =UNK04_02210520 - mov r0, #0 - ldr r3, [r1] - mov r4, #1 - mov r1, r0 - mvn r2, #0 - str r4, [r3, #0x48] - bl MOD04_021DE774 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE6AC: - cmp r0, #4 - bne _021DE6EC - add r0, sp, #0xc - bl MOD04_021DD808 - ldr r1, [sp, #0xc] - mov r0, #0xe - bl MOD04_021DD6B0 - ldr r1, _021DE718 ; =UNK04_02210520 - mov r0, #0 - ldr r2, [r1] - mov r1, #3 - ldr r3, [r2] - mvn r2, #0 - blx r3 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} -_021DE6EC: - cmp r0, #5 - bne _021DE704 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl MOD04_021DE774 -_021DE704: - mov r0, r4 - bl OS_Sleep - b _021DE58C - arm_func_end MOD04_021DE574 - - arm_func_start MOD04_021DE710 -MOD04_021DE710: ; 0x021DE710 - add sp, sp, #0x2a4 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_021DE718: .word UNK04_02210520 -_021DE71C: .word UNK04_0220D300 -_021DE720: .word UNK04_0220D314 -_021DE724: .word MOD04_021DE774 -_021DE728: .word MOD04_021DE884 -_021DE72C: .word MOD04_021DE86C - arm_func_end MOD04_021DE710 - - arm_func_start MOD04_021DE730 -MOD04_021DE730: ; 0x021DE730 - stmdb sp!, {r4, lr} - ldr r0, _021DE770 ; =UNK04_02210520 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_JoinThread - ldr r0, _021DE770 ; =UNK04_02210520 - ldr r0, [r0] - ldr r4, [r0, #4] - bl MOD04_021DE86C - ldr r0, _021DE770 ; =UNK04_02210520 - mov r1, #0 - str r1, [r0] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - blx r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021DE770: .word UNK04_02210520 - arm_func_end MOD04_021DE730 - - arm_func_start MOD04_021DE774 -MOD04_021DE774: ; 0x021DE774 - stmdb sp!, {r4, r5, r6, lr} - movs r5, r1 - mov r6, r0 - mov r4, r2 - bne _021DE79C - ldr r3, _021DE854 ; =UNK04_02210520 - ldr r3, [r3] - ldr r3, [r3] - blx r3 - ldmia sp!, {r4, r5, r6, pc} -_021DE79C: - cmp r5, #8 - addls pc, pc, r5, lsl #2 - b _021DE830 -_021DE7A8: ; jump table - b _021DE830 ; case 0 - b _021DE7CC ; case 1 - b _021DE7DC ; case 2 - b _021DE7E4 ; case 3 - b _021DE7F4 ; case 4 - b _021DE804 ; case 5 - b _021DE834 ; case 6 - b _021DE818 ; case 7 - b _021DE820 ; case 8 -_021DE7CC: - ldr r1, _021DE858 ; =0xFFFF86E7 - mov r0, #9 - bl MOD04_021DD6B0 - b _021DE834 -_021DE7DC: - bl OS_Terminate - b _021DE834 -_021DE7E4: - ldr r1, _021DE85C ; =0xFFFF86D4 - mov r0, #0xf - bl MOD04_021DD6B0 - b _021DE834 -_021DE7F4: - ldr r1, _021DE860 ; =0xFFFF86CA - mov r0, #0xe - bl MOD04_021DD6B0 - b _021DE834 -_021DE804: - ldr r1, _021DE864 ; =0xFFFF86E8 - mov r0, #0xe - sub r1, r1, r4 - bl MOD04_021DD6B0 - b _021DE834 -_021DE818: - bl OS_Terminate - b _021DE834 -_021DE820: - ldr r1, _021DE868 ; =0xFFFF86DF - mov r0, #9 - bl MOD04_021DD6B0 - b _021DE834 -_021DE830: - bl OS_Terminate -_021DE834: - ldr r1, _021DE854 ; =UNK04_02210520 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - ldr r3, [r2] - mov r2, r4 - blx r3 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021DE854: .word UNK04_02210520 -_021DE858: .word 0xFFFF86E7 -_021DE85C: .word 0xFFFF86D4 -_021DE860: .word 0xFFFF86CA -_021DE864: .word 0xFFFF86E8 -_021DE868: .word 0xFFFF86DF - arm_func_end MOD04_021DE774 - - arm_func_start MOD04_021DE86C -MOD04_021DE86C: ; 0x021DE86C - ldr ip, _021DE880 ; =MOD04_021DD904 - mov r1, r0 - mov r0, #6 - mov r2, #0 - bx ip - .align 2, 0 -_021DE880: .word MOD04_021DD904 - arm_func_end MOD04_021DE86C - - arm_func_start MOD04_021DE884 -MOD04_021DE884: ; 0x021DE884 - ldr ip, _021DE898 ; =MOD04_021DD924 - mov r2, r1 - mov r1, r0 - mov r0, #6 - bx ip - .align 2, 0 -_021DE898: .word MOD04_021DD924 - arm_func_end MOD04_021DE884 - arm_func_start MOD04_021DE89C MOD04_021DE89C: ; 0x021DE89C ldrh r1, [r0] @@ -53983,20 +53528,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D2F8 -UNK04_0220D2F8: ; 0x0220D2F8 - .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0220D300 -UNK04_0220D300: ; 0x0220D300 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C, 0x6F, 0x61 - .byte 0x64, 0x00, 0x00, 0x00 - - .global UNK_0220D314 -UNK04_0220D314: ; 0x0220D314 - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x25, 0x73, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C - .byte 0x6F, 0x61, 0x64, 0x00 - .global UNK_0220D328 UNK04_0220D328: ; 0x0220D328 .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 @@ -56659,10 +56190,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_02210520 -UNK04_02210520: ; 0x02210520 - .space 0x4 - .global UNK04_02210524 UNK04_02210524: ; 0x02210524 .space 0x18 diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s index 92320fd3..6be2d80a 100644 --- a/arm9/modules/04/asm/mod04_021DDF40.s +++ b/arm9/modules/04/asm/mod04_021DDF40.s @@ -275,11 +275,11 @@ _021DE2CC: .word 0xBC19137F .section .data - .global UNK_0220D2EC + .global UNK04_0220D2EC UNK04_0220D2EC: ; 0x0220D2EC .byte 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D2F0 + .global UNK04_0220D2F0 UNK04_0220D2F0: ; 0x0220D2F0 .asciz "0000" diff --git a/arm9/modules/04/asm/mod04_021DE2D0.s b/arm9/modules/04/asm/mod04_021DE2D0.s new file mode 100644 index 00000000..27ad8bc1 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021DE2D0.s @@ -0,0 +1,482 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021DE2D0 +MOD04_021DE2D0: ; 0x021DE2D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl MOD04_02207330 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + arm_func_end MOD04_021DE2D0 + + arm_func_start MOD04_021DE308 +MOD04_021DE308: ; 0x021DE308 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD04_02207158 + add sp, sp, #4 + ldmfd sp!, {pc} + arm_func_end MOD04_021DE308 + + arm_func_start MOD04_021DE330 +MOD04_021DE330: ; 0x021DE330 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_0220733C + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE330 + + arm_func_start MOD04_021DE364 +MOD04_021DE364: ; 0x021DE364 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xb0 + mul r2, r4, r0 + mov r0, r6 + mov r1, #0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_022074EC + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE364 + + arm_func_start MOD04_021DE3AC +MOD04_021DE3AC: ; 0x021DE3AC + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD04_022077A8 + ldmia sp!, {r4, pc} + arm_func_end MOD04_021DE3AC + + arm_func_start MOD04_021DE3D0 +MOD04_021DE3D0: ; 0x021DE3D0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD04_022069DC + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MOD04_021DE3D0 + + arm_func_start MOD04_021DE404 +MOD04_021DE404: ; 0x021DE404 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DE454 ; =UNK04_02210520 + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #0x48] + cmp r0, #0 + bne _021DE440 + bl MOD04_021DE730 + b _021DE448 +_021DE440: + ldr r0, _021DE458 ; =MOD04_021DE730 + bl MOD04_02206E6C +_021DE448: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE454: .word UNK04_02210520 +_021DE458: .word MOD04_021DE730 + arm_func_end MOD04_021DE404 + + arm_func_start MOD04_021DE45C +MOD04_021DE45C: ; 0x021DE45C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xa80 + mov r1, #0x20 + bl MOD04_021DE884 + ldr r2, _021DE568 ; =UNK04_02210520 + mov r1, #0 + str r0, [r2] + str r1, [r0, #0x48] + ldr r0, [r2] + mov r2, #0xa80 + bl MI_CpuFill8 + ldr r0, _021DE568 ; =UNK04_02210520 + mov r1, r5 + ldr r3, [r0] + mov r2, #0x1f + str r6, [r3] + ldr r0, [r0] + add r0, r0, #8 + bl strncpy + ldr r0, _021DE568 ; =UNK04_02210520 + mov r1, r4 + ldr r0, [r0] + mov r2, #0x1f + add r0, r0, #0x28 + bl strncpy + ldr r1, _021DE568 ; =UNK04_02210520 + ldr r0, _021DE56C ; =UNK04_0220D2F8 + ldr r1, [r1] + add r1, r1, #0x4c + bl MOD04_021DE174 + cmp r0, #0 + bne _021DE520 + ldr r0, _021DE568 ; =UNK04_02210520 + ldr r0, [r0] + bl MOD04_021DE86C + ldr r1, _021DE568 ; =UNK04_02210520 + mov r0, #0 + str r0, [r1] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021DE520: + ldr r0, _021DE568 ; =UNK04_02210520 + mov r2, #0x800 + ldr r0, [r0] + ldr r1, _021DE570 ; =MOD04_021DE574 + add r0, r0, #0x9c0 + mov r3, r0 + str r2, [sp] + mov ip, #0x10 + mov r2, #0 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _021DE568 ; =UNK04_02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE568: .word UNK04_02210520 +_021DE56C: .word UNK04_0220D2F8 +_021DE570: .word MOD04_021DE574 + arm_func_end MOD04_021DE45C + + arm_func_start MOD04_021DE574 +MOD04_021DE574: ; 0x021DE574 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x2a4 + mov r7, #0 + mov r6, #6 + mvn r5, #0 + mov r4, #0x64 +_021DE58C: + bl MOD04_021DE150 + cmp r0, #3 + bne _021DE6AC + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r5, [r0] + add r0, r5, #0x50 + bl strlen + mov r4, r0 + ldr r0, _021DE71C ; =UNK04_0220D300 + bl strlen + add r0, r4, r0 + cmp r0, #0xff + bls _021DE5D8 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE5D8: + ldr r2, _021DE720 ; =UNK04_0220D314 + add r0, sp, #0x10 + add r3, r5, #0x50 + mov r1, #0x100 + bl OS_SNPrintf + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r4, [r0] + add r0, r4, #0x91 + bl strlen + mov r1, r0 + add r2, sp, #0x110 + add r0, r4, #0x91 + mov r3, #0x190 + bl MOD04_021DD4FC + cmp r0, #0 + bge _021DE630 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE630: + ldr r0, _021DE718 ; =UNK04_02210520 + ldr r4, _021DE724 ; =MOD04_021DE774 + ldr r2, [r0] + ldr r0, _021DE728 ; =MOD04_021DE884 + add r1, r2, #8 + str r1, [sp] + add r1, r2, #0x28 + str r1, [sp, #4] + ldr r1, _021DE72C ; =MOD04_021DE86C + add r2, sp, #0x10 + add r3, sp, #0x110 + str r4, [sp, #8] + bl MOD04_02206EFC + cmp r0, #0 + bne _021DE684 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE684: + ldr r1, _021DE718 ; =UNK04_02210520 + mov r0, #0 + ldr r3, [r1] + mov r4, #1 + mov r1, r0 + mvn r2, #0 + str r4, [r3, #0x48] + bl MOD04_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6AC: + cmp r0, #4 + bne _021DE6EC + add r0, sp, #0xc + bl MOD04_021DD808 + ldr r1, [sp, #0xc] + mov r0, #0xe + bl MOD04_021DD6B0 + ldr r1, _021DE718 ; =UNK04_02210520 + mov r0, #0 + ldr r2, [r1] + mov r1, #3 + ldr r3, [r2] + mvn r2, #0 + blx r3 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6EC: + cmp r0, #5 + bne _021DE704 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD04_021DE774 +_021DE704: + mov r0, r4 + bl OS_Sleep + b _021DE58C + arm_func_end MOD04_021DE574 + + arm_func_start MOD04_021DE710 +MOD04_021DE710: ; 0x021DE710 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE718: .word UNK04_02210520 +_021DE71C: .word UNK04_0220D300 +_021DE720: .word UNK04_0220D314 +_021DE724: .word MOD04_021DE774 +_021DE728: .word MOD04_021DE884 +_021DE72C: .word MOD04_021DE86C + arm_func_end MOD04_021DE710 + + arm_func_start MOD04_021DE730 +MOD04_021DE730: ; 0x021DE730 + stmdb sp!, {r4, lr} + ldr r0, _021DE770 ; =UNK04_02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_JoinThread + ldr r0, _021DE770 ; =UNK04_02210520 + ldr r0, [r0] + ldr r4, [r0, #4] + bl MOD04_021DE86C + ldr r0, _021DE770 ; =UNK04_02210520 + mov r1, #0 + str r1, [r0] + cmp r4, #0 + ldmeqia sp!, {r4, pc} + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE770: .word UNK04_02210520 + arm_func_end MOD04_021DE730 + + arm_func_start MOD04_021DE774 +MOD04_021DE774: ; 0x021DE774 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r1 + mov r6, r0 + mov r4, r2 + bne _021DE79C + ldr r3, _021DE854 ; =UNK04_02210520 + ldr r3, [r3] + ldr r3, [r3] + blx r3 + ldmia sp!, {r4, r5, r6, pc} +_021DE79C: + cmp r5, #8 + addls pc, pc, r5, lsl #2 + b _021DE830 +_021DE7A8: ; jump table + b _021DE830 ; case 0 + b _021DE7CC ; case 1 + b _021DE7DC ; case 2 + b _021DE7E4 ; case 3 + b _021DE7F4 ; case 4 + b _021DE804 ; case 5 + b _021DE834 ; case 6 + b _021DE818 ; case 7 + b _021DE820 ; case 8 +_021DE7CC: + ldr r1, _021DE858 ; =0xFFFF86E7 + mov r0, #9 + bl MOD04_021DD6B0 + b _021DE834 +_021DE7DC: + bl OS_Terminate + b _021DE834 +_021DE7E4: + ldr r1, _021DE85C ; =0xFFFF86D4 + mov r0, #0xf + bl MOD04_021DD6B0 + b _021DE834 +_021DE7F4: + ldr r1, _021DE860 ; =0xFFFF86CA + mov r0, #0xe + bl MOD04_021DD6B0 + b _021DE834 +_021DE804: + ldr r1, _021DE864 ; =0xFFFF86E8 + mov r0, #0xe + sub r1, r1, r4 + bl MOD04_021DD6B0 + b _021DE834 +_021DE818: + bl OS_Terminate + b _021DE834 +_021DE820: + ldr r1, _021DE868 ; =0xFFFF86DF + mov r0, #9 + bl MOD04_021DD6B0 + b _021DE834 +_021DE830: + bl OS_Terminate +_021DE834: + ldr r1, _021DE854 ; =UNK04_02210520 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + ldr r3, [r2] + mov r2, r4 + blx r3 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE854: .word UNK04_02210520 +_021DE858: .word 0xFFFF86E7 +_021DE85C: .word 0xFFFF86D4 +_021DE860: .word 0xFFFF86CA +_021DE864: .word 0xFFFF86E8 +_021DE868: .word 0xFFFF86DF + arm_func_end MOD04_021DE774 + + arm_func_start MOD04_021DE86C +MOD04_021DE86C: ; 0x021DE86C + ldr ip, _021DE880 ; =MOD04_021DD904 + mov r1, r0 + mov r0, #6 + mov r2, #0 + bx ip + .align 2, 0 +_021DE880: .word MOD04_021DD904 + arm_func_end MOD04_021DE86C + + arm_func_start MOD04_021DE884 +MOD04_021DE884: ; 0x021DE884 + ldr ip, _021DE898 ; =MOD04_021DD924 + mov r2, r1 + mov r1, r0 + mov r0, #6 + bx ip + .align 2, 0 +_021DE898: .word MOD04_021DD924 + arm_func_end MOD04_021DE884 + + .section .data + + .global UNK04_0220D2F8 +UNK04_0220D2F8: ; 0x0220D2F8 + .asciz "9000" + + .balign 4, 0 + .global UNK04_0220D300 +UNK04_0220D300: ; 0x0220D300 + .asciz "https:///download" + + .balign 4, 0 + .global UNK04_0220D314 +UNK04_0220D314: ; 0x0220D314 + .asciz "https://%s/download" + + .balign 4, 0 + .section .bss + + .global UNK04_02210520 +UNK04_02210520: ; 0x02210520 + .space 0x4 |