This commit is contained in:
red031000 2021-08-16 20:04:33 +01:00
parent 79375b4aa9
commit 52da4a5a72
No known key found for this signature in database
GPG Key ID: A3C87CFF2DC536C2
5 changed files with 493 additions and 475 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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