pmd-sky/asm/main_020022C4.s
2026-02-09 12:33:16 -05:00

1362 lines
25 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_020022C4.inc"
.text
arm_func_start sub_020022C4
sub_020022C4: ; 0x020022C4
mov r1, #1
str r1, [r0]
bx lr
arm_func_end sub_020022C4
arm_func_start sub_020022D0
sub_020022D0: ; 0x020022D0
ldr r3, [r0]
ldr r2, _020022F4 ; =0x5D588B65
mul r2, r3, r2
add r3, r2, #1
mov r2, r3, lsr #0x10
mul r1, r2, r1
str r3, [r0]
mov r0, r1, lsr #0x10
bx lr
.align 2, 0
_020022F4: .word 0x5D588B65
arm_func_end sub_020022D0
arm_func_start RandIntSafe
RandIntSafe: ; 0x020022F8
stmdb sp!, {r4, lr}
mov r4, r0
bl Rand16Bit
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mul r0, r1, r4
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
arm_func_end RandIntSafe
arm_func_start RandRangeSafe
RandRangeSafe: ; 0x02002318
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
cmp r5, r4
ldmeqia sp!, {r3, r4, r5, pc}
bge _0200234C
bl Rand16Bit
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
sub r0, r4, r5
mul r0, r1, r0
add r0, r5, r0, asr #16
ldmia sp!, {r3, r4, r5, pc}
_0200234C:
bl Rand16Bit
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
sub r0, r5, r4
mul r0, r1, r0
add r0, r4, r0, asr #16
ldmia sp!, {r3, r4, r5, pc}
arm_func_end RandRangeSafe
arm_func_start sub_02002368
sub_02002368: ; 0x02002368
b _02002378
_0200236C:
cmp r2, r1
bxeq lr
add r0, r0, #1
arm_func_end sub_02002368
_02002378:
ldrsb r2, [r0]
cmp r2, #0
bne _0200236C
mov r0, #0
bx lr
arm_func_start sub_0200238C
sub_0200238C: ; 0x0200238C
cmp r0, #0x41
bxlt lr
cmp r0, #0x5a
addle r0, r0, #0x20
movle r0, r0, lsl #0x18
movle r0, r0, asr #0x18
bx lr
arm_func_end sub_0200238C
arm_func_start sub_020023A8
sub_020023A8: ; 0x020023A8
mov ip, #0
b _020023E4
_020023B0:
ldrsb r3, [r1]
cmp r3, #0
bne _020023D8
mov r1, #0x20
b _020023CC
_020023C4:
strb r1, [r0], #1
add ip, ip, #1
_020023CC:
cmp ip, r2
blt _020023C4
b _020023EC
_020023D8:
add r1, r1, #1
strb r3, [r0], #1
add ip, ip, #1
_020023E4:
cmp ip, r2
blt _020023B0
_020023EC:
mov r1, #0
strb r1, [r0]
bx lr
arm_func_end sub_020023A8
arm_func_start sub_020023F8
sub_020023F8: ; 0x020023F8
stmdb sp!, {r3, lr}
mov lr, #0
b _02002428
_02002404:
ldrsb ip, [r0], #1
ldrsb r3, [r1], #1
cmp r3, ip
movne r0, #0
ldmneia sp!, {r3, pc}
cmp ip, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
add lr, lr, #1
_02002428:
cmp lr, r2
blt _02002404
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_020023F8
arm_func_start WaitForever
WaitForever: ; 0x02002438
stmdb sp!, {r3, lr}
bl sub_02079C14
_02002440:
bl WaitForInterrupt
b _02002440
arm_func_end WaitForever
arm_func_start sub_02002448
sub_02002448: ; 0x02002448
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02003AD0
bl sub_02002580
mov r1, #1
bl sub_020027F8
bl sub_02079C14
bl GX_DispOff
ldr r3, _02002498 ; =0x04001000
ldr r0, _0200249C ; =_02092464
ldr r2, [r3]
mov r1, r4
bic r2, r2, #0x10000
str r2, [r3]
bl Debug_Print0
mov r0, r4
bl sub_0207B930
bl sub_02079C14
_02002490:
bl WaitForInterrupt
b _02002490
.align 2, 0
_02002498: .word 0x04001000
_0200249C: .word _02092464
arm_func_end sub_02002448
arm_func_start sub_020024A0
sub_020024A0: ; 0x020024A0
ldr r0, _020024AC ; =0x027FFC20
ldr r0, [r0]
bx lr
.align 2, 0
_020024AC: .word 0x027FFC20
arm_func_end sub_020024A0
arm_func_start sub_020024B0
sub_020024B0: ; 0x020024B0
ldr ip, _020024BC ; =sub_020845D8
mov r0, #0
bx ip
.align 2, 0
_020024BC: .word sub_020845D8
arm_func_end sub_020024B0
arm_func_start sub_020024C0
sub_020024C0: ; 0x020024C0
ldr ip, _020024CC ; =sub_020845D8
ldr r0, _020024D0 ; =sub_020024D4
bx ip
.align 2, 0
_020024CC: .word sub_020845D8
_020024D0: .word sub_020024D4
arm_func_end sub_020024C0
arm_func_start sub_020024D4
sub_020024D4: ; 0x020024D4
stmdb sp!, {r3, lr}
bl CardPullOut
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020024D4
arm_func_start sub_020024E4
sub_020024E4: ; 0x020024E4
stmdb sp!, {r3, lr}
ldr r0, _0200256C ; =_0229AFCC
bl OS_InitMutex
ldr r0, _0200256C ; =_0229AFCC
bl sub_0207A048
mov r1, #0
ldr r0, _02002570 ; =_0229AFE4
mov r2, r1
_02002504:
add r1, r1, #1
cmp r1, #8
str r2, [r0], #4
blt _02002504
ldr r1, _02002574 ; =_0229AFC0
ldr r0, _0200256C ; =_0229AFCC
str r2, [r1]
str r2, [r1, #4]
str r2, [r1, #8]
bl sub_0207A0CC
ldr r1, _02002578 ; =_022B966C
ldr r0, _0200257C ; =_0229B004
ldr r1, [r1, #4]
mov r2, #0
stmia r0, {r1, r2}
str r2, [r0, #8]
str r2, [r0, #0xc]
mov r1, #7
str r1, [r0, #0x10]
str r2, [r0, #0x14]
bl sub_020026E4
ldr r0, _02002578 ; =_022B966C
mov r1, #7
ldr r0, [r0, #4]
bl sub_02079A64
ldmia sp!, {r3, pc}
.align 2, 0
_0200256C: .word _0229AFCC
_02002570: .word _0229AFE4
_02002574: .word _0229AFC0
_02002578: .word _022B966C
_0200257C: .word _0229B004
arm_func_end sub_020024E4
arm_func_start sub_02002580
sub_02002580: ; 0x02002580
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020025E8 ; =_022B966C
ldr r0, _020025EC ; =_0229AFCC
ldr r4, [r1, #4]
bl sub_0207A048
ldr r0, _020025F0 ; =_0229AFC0
mov r1, #0
ldr r3, [r0]
ldr r2, _020025F4 ; =_0229AFE4
b _020025CC
_020025A8:
ldr r5, [r2]
ldr r0, [r5]
cmp r0, r4
bne _020025C4
ldr r0, _020025EC ; =_0229AFCC
bl sub_0207A0CC
b _020025E0
_020025C4:
add r1, r1, #1
add r2, r2, #4
_020025CC:
cmp r1, r3
blt _020025A8
ldr r0, _020025EC ; =_0229AFCC
bl sub_0207A0CC
mov r5, #0
_020025E0:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020025E8: .word _022B966C
_020025EC: .word _0229AFCC
_020025F0: .word _0229AFC0
_020025F4: .word _0229AFE4
arm_func_end sub_02002580
; https://decomp.me/scratch/Gairr
arm_func_start sub_020025F8
sub_020025F8: ; 0x020025F8
stmdb sp!, {r4, lr}
cmp r0, #0
beq _02002614
ldr r0, [r0]
mov r1, #0
bl sub_02079844
ldmia sp!, {r4, pc}
_02002614:
mov r4, #0
_02002618:
mov r0, r4
bl OS_SleepThread
b _02002618
arm_func_end sub_020025F8
arm_func_start sub_02002624
sub_02002624: ; 0x02002624
ldmia sp!, {r4, pc}
arm_func_end sub_02002624
arm_func_start sub_02002628
sub_02002628: ; 0x02002628
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02002658 ; =_022B966C
mov r5, r0
ldr r0, [r2, #4]
mov r4, r1
str r0, [r5]
bl sub_02079B0C
str r0, [r5, #4]
ldr r0, [r5]
mov r1, r4
bl sub_02079A64
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02002658: .word _022B966C
arm_func_end sub_02002628
arm_func_start sub_0200265C
sub_0200265C: ; 0x0200265C
ldr ip, _0200266C ; =sub_02079A64
mov r1, r0
ldmia r1, {r0, r1}
bx ip
.align 2, 0
_0200266C: .word sub_02079A64
arm_func_end sub_0200265C
arm_func_start sub_02002670
sub_02002670: ; 0x02002670
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020026AC ; =_022B966C
ldr r5, [r0, #4]
mov r0, r5
bl sub_02079B0C
mov r4, r0
mov r0, r5
mov r1, #7
bl sub_02079A64
ldr r0, _020026B0 ; =_0229AFCC
bl sub_0207A048
ldr r0, _020026B4 ; =_020AEF30
str r5, [r0]
str r4, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020026AC: .word _022B966C
_020026B0: .word _0229AFCC
_020026B4: .word _020AEF30
arm_func_end sub_02002670
arm_func_start sub_020026B8
sub_020026B8: ; 0x020026B8
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020026DC ; =_020AEF30
ldr r0, _020026E0 ; =_0229AFCC
ldmia r1, {r4, r5}
bl sub_0207A0CC
mov r0, r4
mov r1, r5
bl sub_02079A64
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020026DC: .word _020AEF30
_020026E0: .word _0229AFCC
arm_func_end sub_020026B8
arm_func_start sub_020026E4
sub_020026E4: ; 0x020026E4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002768 ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
mov r4, r0
mov r0, r5
mov r1, #7
bl sub_02079A64
ldr r0, _0200276C ; =_0229AFCC
bl sub_0207A048
ldr r0, _02002770 ; =_0229AFC0
ldr r3, [r0]
cmp r3, #8
bge _02002750
add r1, r3, #1
ldr r2, _02002774 ; =_0229AFE4
str r1, [r0]
ldr r1, [r0]
str r6, [r2, r3, lsl #2]
str r1, [r0, #4]
ldr r2, [r0, #4]
ldr r1, [r0, #8]
cmp r2, r1
ldrgt r1, [r0, #4]
strgt r1, [r0, #8]
_02002750:
ldr r0, _0200276C ; =_0229AFCC
bl sub_0207A0CC
mov r0, r5
mov r1, r4
bl sub_02079A64
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002768: .word _022B966C
_0200276C: .word _0229AFCC
_02002770: .word _0229AFC0
_02002774: .word _0229AFE4
arm_func_end sub_020026E4
arm_func_start sub_02002778
sub_02002778: ; 0x02002778
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r0
mov ip, r1
add r0, r4, #0x1c
mov r5, ip
str r0, [r4]
mov r6, r2
ldmia r5!, {r0, r1, r2, r3}
add lr, r4, #4
stmia lr!, {r0, r1, r2, r3}
ldr r0, [r5]
mov r2, r6
str r0, [lr]
str r6, [r4, #0x18]
ldr r1, [ip, #8]
str r1, [sp]
ldr r0, [ip, #0xc]
bic r3, r1, #7
str r0, [sp, #4]
ldmia ip, {r1, lr}
ldr r0, [r4]
add r3, lr, r3
bl StartThread
mov r0, r4
bl sub_020026E4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02002778
arm_func_start sub_020027E8
sub_020027E8: ; 0x020027E8
ldr ip, _020027F4 ; =OS_WakeupThreadDirect
ldr r0, [r0]
bx ip
.align 2, 0
_020027F4: .word OS_WakeupThreadDirect
arm_func_end sub_020027E8
arm_func_start sub_020027F8
sub_020027F8: ; 0x020027F8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r0, [r6]
mov r5, r1
bl sub_02079B0C
mov r4, r0
ldr r0, [r6]
mov r1, r5
bl sub_02079A64
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020027F8
arm_func_start sub_02002824
sub_02002824: ; 0x02002824
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002854 ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
mov r4, r0
mov r0, r5
mov r1, r6
bl sub_02079A64
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002854: .word _022B966C
arm_func_end sub_02002824
arm_func_start sub_02002858
sub_02002858: ; 0x02002858
str r1, [r0, #0x14]
bx lr
arm_func_end sub_02002858
arm_func_start sub_02002860
sub_02002860: ; 0x02002860
cmp r0, #0
ldrne r1, [r0]
cmpne r1, #0
ldrne r0, [r0, #0x14]
moveq r0, #0
bx lr
arm_func_end sub_02002860
arm_func_start sub_02002878
sub_02002878: ; 0x02002878
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02002580
cmp r0, #0
beq _020028A4
ldr r0, [r0, #0x14]
cmp r0, r4
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
_020028A4:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_02002878
arm_func_start sub_020028AC
sub_020028AC: ; 0x020028AC
bx lr
arm_func_end sub_020028AC
arm_func_start sub_020028B0
sub_020028B0: ; 0x020028B0
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_InitMutex
mov r0, r4
bl sub_0207A048
bl sub_02002670
ldr r0, _020028F4 ; =_0229B0E0
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
ldr r2, [r0]
ldr r1, [r0, #4]
cmp r2, r1
ldrgt r1, [r0]
strgt r1, [r0, #4]
bl sub_020026B8
ldmia sp!, {r4, pc}
.align 2, 0
_020028F4: .word _0229B0E0
arm_func_end sub_020028B0
arm_func_start sub_020028F8
sub_020028F8: ; 0x020028F8
ldr ip, _02002900 ; =sub_0207A0CC
bx ip
.align 2, 0
_02002900: .word sub_0207A0CC
arm_func_end sub_020028F8
arm_func_start sub_02002904
sub_02002904: ; 0x02002904
ldr ip, _0200290C ; =sub_0207A048
bx ip
.align 2, 0
_0200290C: .word sub_0207A048
arm_func_end sub_02002904
arm_func_start sub_02002910
sub_02002910: ; 0x02002910
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_0207A164
tst r0, #0xff
beq _02002944
ldr r0, [r4, #0xc]
cmp r0, #1
movle r0, #1
ldmleia sp!, {r4, pc}
mov r0, r4
bl sub_0207A0CC
mov r0, #0
ldmia sp!, {r4, pc}
_02002944:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_02002910
arm_func_start sub_0200294C
sub_0200294C: ; 0x0200294C
bx lr
arm_func_end sub_0200294C
arm_func_start sub_02002950
sub_02002950: ; 0x02002950
stmdb sp!, {r3, lr}
mov r3, r0
add r1, r3, #4
add r0, r3, #8
mov r2, #1
str r1, [r3]
bl sub_02079DB8
bl sub_02002670
ldr r0, _0200299C ; =_0229B0E8
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
ldr r2, [r0]
ldr r1, [r0, #4]
cmp r2, r1
ldrgt r1, [r0]
strgt r1, [r0, #4]
bl sub_020026B8
ldmia sp!, {r3, pc}
.align 2, 0
_0200299C: .word _0229B0E8
arm_func_end sub_02002950
arm_func_start sub_020029A0
sub_020029A0: ; 0x020029A0
ldr ip, _020029B4 ; =sub_02079DE0
mov r1, #0
mov r2, r1
add r0, r0, #8
bx ip
.align 2, 0
_020029B4: .word sub_02079DE0
arm_func_end sub_020029A0
arm_func_start sub_020029B8
sub_020029B8: ; 0x020029B8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _02002A40 ; =_022B966C
mov r4, r0
ldr sb, [r1, #4]
mov r7, #0
mov r0, sb
bl sub_02079B0C
mov r8, r0
mov r0, sb
mov r1, #7
bl sub_02079A64
mov r5, r7
b _020029F0
_020029EC:
add r7, r7, #1
_020029F0:
mov r1, r5
mov r2, r5
add r0, r4, #8
bl sub_02079DE0
cmp r0, #0
bne _020029EC
add r6, sp, #0
mov r5, #0
_02002A10:
mov r1, r6
mov r2, r5
add r0, r4, #8
bl sub_02079E74
cmp r0, #0
subne r7, r7, #1
bne _02002A10
mov r0, sb
mov r1, r8
bl sub_02079A64
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02002A40: .word _022B966C
arm_func_end sub_020029B8
arm_func_start sub_02002A44
sub_02002A44: ; 0x02002A44
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _02002A94 ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
mov r4, r0
mov r0, r5
mov r1, #6
bl sub_02079A64
add r1, sp, #0
add r0, r6, #8
mov r2, #1
bl sub_02079E74
mov r0, r5
mov r1, r4
bl sub_02079A64
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02002A94: .word _022B966C
arm_func_end sub_02002A44
arm_func_start sub_02002A98
sub_02002A98: ; 0x02002A98
bx lr
arm_func_end sub_02002A98
arm_func_start sub_02002A9C
sub_02002A9C: ; 0x02002A9C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
str r1, [r6, #0xa4]
add r1, r6, #4
str r2, [r6, #0xa8]
str r1, [r6]
ldr r2, [r6, #0xa4]
add r0, r6, #0x84
bl sub_02079DB8
mov r5, #0
mov r4, r5
b _02002AE0
_02002ACC:
mov r1, r4
mov r2, r4
add r0, r6, #0x84
bl sub_02079DE0
add r5, r5, #1
_02002AE0:
ldr r0, [r6, #0xa8]
cmp r5, r0
blt _02002ACC
bl sub_02002670
ldr r0, _02002B1C ; =_0229B0F0
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
ldr r2, [r0]
ldr r1, [r0, #4]
cmp r2, r1
ldrgt r1, [r0]
strgt r1, [r0, #4]
bl sub_020026B8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002B1C: .word _0229B0F0
arm_func_end sub_02002A9C
arm_func_start sub_02002B20
sub_02002B20: ; 0x02002B20
ldr ip, _02002B34 ; =sub_02079DE0
mov r1, #0
mov r2, r1
add r0, r0, #0x84
bx ip
.align 2, 0
_02002B34: .word sub_02079DE0
arm_func_end sub_02002B20
arm_func_start sub_02002B38
sub_02002B38: ; 0x02002B38
ldr ip, _02002B4C ; =sub_02079DE0
mov r1, #0
mov r2, r1
add r0, r0, #0x84
bx ip
.align 2, 0
_02002B4C: .word sub_02079DE0
arm_func_end sub_02002B38
arm_func_start sub_02002B50
sub_02002B50: ; 0x02002B50
stmdb sp!, {r3, lr}
ldr r1, [r0, #0x98]
cmp r1, #0
movne r0, #0
ldmneia sp!, {r3, pc}
mov r1, #0
mov r2, r1
add r0, r0, #0x84
bl sub_02079DE0
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_02002B50
arm_func_start sub_02002B7C
sub_02002B7C: ; 0x02002B7C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _02002BCC ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
mov r4, r0
mov r0, r5
mov r1, #6
bl sub_02079A64
add r1, sp, #0
add r0, r6, #0x84
mov r2, #1
bl sub_02079E74
mov r0, r5
mov r1, r4
bl sub_02079A64
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02002BCC: .word _022B966C
arm_func_end sub_02002B7C
arm_func_start sub_02002BD0
sub_02002BD0: ; 0x02002BD0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _02002C28 ; =_022B966C
mov r5, r0
ldr r6, [r1, #4]
mov r0, r6
bl sub_02079B0C
mov r4, r0
mov r0, r6
mov r1, #6
bl sub_02079A64
add r1, sp, #0
add r0, r5, #0x84
mov r2, #0
bl sub_02079E74
and r5, r0, #0xff
mov r0, r6
mov r1, r4
bl sub_02079A64
mov r0, r5
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02002C28: .word _022B966C
arm_func_end sub_02002BD0
arm_func_start sub_02002C2C
sub_02002C2C: ; 0x02002C2C
ldr ip, _02002C38 ; =OS_InitMutex
ldr r0, _02002C3C ; =_0229B0F8
bx ip
.align 2, 0
_02002C38: .word OS_InitMutex
_02002C3C: .word _0229B0F8
arm_func_end sub_02002C2C
arm_func_start sub_02002C40
sub_02002C40: ; 0x02002C40
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002CA4 ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
mov r4, r0
mov r0, r5
mov r1, #7
bl sub_02079A64
ldr r0, _02002CA8 ; =_0229B0F8
bl sub_0207A048
mov r0, r6
bl sub_020028B0
bl sub_02002580
str r0, [r6, #0x18]
mov r0, #0
str r0, [r6, #0x20]
str r0, [r6, #0x1c]
ldr r0, _02002CA8 ; =_0229B0F8
bl sub_0207A0CC
mov r0, r5
mov r1, r4
bl sub_02079A64
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002CA4: .word _022B966C
_02002CA8: .word _0229B0F8
arm_func_end sub_02002C40
arm_func_start sub_02002CAC
sub_02002CAC: ; 0x02002CAC
str r1, [r0, #0x20]
bx lr
arm_func_end sub_02002CAC
arm_func_start sub_02002CB4
sub_02002CB4: ; 0x02002CB4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002D10 ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
ldr r1, [r6, #0x20]
mov r4, r0
cmp r1, #0
beq _02002CF4
cmp r1, r4
movhs r4, #0
bhs _02002CF8
mov r0, r5
bl sub_02079A64
b _02002CF8
_02002CF4:
mov r4, #0
_02002CF8:
mov r0, r6
bl sub_02002904
str r4, [r6, #0x1c]
bl sub_02002580
str r0, [r6, #0x18]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002D10: .word _022B966C
arm_func_end sub_02002CB4
arm_func_start sub_02002D14
sub_02002D14: ; 0x02002D14
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02002D7C ; =_022B966C
mov r7, r0
ldr r5, [r2, #4]
mov r6, r1
mov r0, r5
bl sub_02079B0C
ldr r1, [r7, #0x20]
mov r4, r0
cmp r1, #0
beq _02002D58
cmp r1, r4
movhs r4, #0
bhs _02002D5C
mov r0, r5
bl sub_02079A64
b _02002D5C
_02002D58:
mov r4, #0
_02002D5C:
mov r0, r6
bl sub_02002B7C
mov r0, r7
bl sub_02002904
str r4, [r7, #0x1c]
bl sub_02002580
str r0, [r7, #0x18]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02002D7C: .word _022B966C
arm_func_end sub_02002D14
arm_func_start sub_02002D80
sub_02002D80: ; 0x02002D80
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
bl sub_02002580
mov r4, r0
ldr r0, [r4]
bl sub_02079B0C
ldr r1, [r7, #0x20]
mov r5, r0
cmp r1, #0
beq _02002DC4
cmp r1, r5
movhs r5, #0
bhs _02002DC8
ldr r0, [r4]
bl sub_02079A64
b _02002DC8
_02002DC4:
mov r5, #0
_02002DC8:
mov r0, r6
bl sub_02002BD0
cmp r0, #0
beq _02002DF4
mov r0, r7
bl sub_02002904
str r5, [r7, #0x1c]
bl sub_02002580
str r0, [r7, #0x18]
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_02002DF4:
cmp r5, #0
beq _02002E08
mov r0, r4
mov r1, r5
bl sub_020027F8
_02002E08:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02002D80
arm_func_start sub_02002E10
sub_02002E10: ; 0x02002E10
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02002E94 ; =_022B966C
mov r6, r0
ldr r5, [r1, #4]
mov r0, r5
bl sub_02079B0C
ldr r1, [r6, #0x20]
mov r4, r0
cmp r1, #0
beq _02002E50
cmp r1, r4
movhs r4, #0
bhs _02002E54
mov r0, r5
bl sub_02079A64
b _02002E54
_02002E50:
mov r4, #0
_02002E54:
mov r0, r6
bl sub_02002910
cmp r0, #0
beq _02002E78
str r4, [r6, #0x1c]
bl sub_02002580
str r0, [r6, #0x18]
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_02002E78:
cmp r4, #0
beq _02002E8C
mov r0, r5
mov r1, r4
bl sub_02079A64
_02002E8C:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02002E94: .word _022B966C
arm_func_end sub_02002E10
arm_func_start sub_02002E98
sub_02002E98: ; 0x02002E98
stmdb sp!, {r3, r4, r5, lr}
ldr r4, [r0, #0x1c]
ldr r5, [r0, #0x18]
mov r1, #0
str r1, [r0, #0x1c]
str r1, [r0, #0x18]
bl sub_020028F8
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl sub_020027F8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02002E98
arm_func_start sub_02002ECC
sub_02002ECC: ; 0x02002ECC
stmdb sp!, {r4, r5, r6, lr}
ldr r4, [r0, #0x1c]
ldr r5, [r0, #0x18]
mov r2, #0
str r2, [r0, #0x18]
mov r6, r1
str r2, [r0, #0x1c]
bl sub_020028F8
mov r0, r6
bl sub_02002B20
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r5
mov r1, r4
bl sub_020027F8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02002ECC
arm_func_start sub_02002F0C
sub_02002F0C: ; 0x02002F0C
stmdb sp!, {r3, lr}
ldr r0, _02002F30 ; =_020AEF58
bl sub_02002C40
ldr r0, _02002F30 ; =_020AEF58
mov r1, #7
bl sub_02002CAC
ldr r0, _02002F30 ; =_020AEF58
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_02002F30: .word _020AEF58
arm_func_end sub_02002F0C
arm_func_start sub_02002F34
sub_02002F34: ; 0x02002F34
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, _02002F78 ; =_020AEF58
mov r4, r1
bl sub_02002CB4
mov r0, r4, lsl #2
mov r1, #1
bl MemAlloc
str r0, [r5, #0x20]
str r4, [r5, #0x24]
ldr r1, [r5, #0x20]
mov r0, r5
mov r2, r4
bl sub_02079DB8
ldr r0, _02002F78 ; =_020AEF58
bl sub_02002E98
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02002F78: .word _020AEF58
arm_func_end sub_02002F34
arm_func_start sub_02002F7C
sub_02002F7C: ; 0x02002F7C
stmdb sp!, {r3, lr}
cmp r2, #0
movne r2, #1
moveq r2, #0
bl sub_02079DE0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_02002F7C
arm_func_start sub_02002F98
sub_02002F98: ; 0x02002F98
stmdb sp!, {r3, lr}
cmp r2, #0
movne r2, #1
moveq r2, #0
bl sub_02079E74
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_02002F98
arm_func_start sub_02002FB4
sub_02002FB4: ; 0x02002FB4
bx lr
arm_func_end sub_02002FB4
arm_func_start sub_02002FB8
sub_02002FB8: ; 0x02002FB8
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _02003024 ; =_0229B110
mov r6, #0
strh r6, [r0]
cmp r6, #6
ldr r5, _02003028 ; =_0229B114
bge _0200301C
mov r4, r6
b _02003014
_02002FDC:
mov r0, r5
bl sub_02002C40
cmp r6, #4
str r4, [r5, #0x24]
cmpne r6, #5
bne _02003000
bl OS_GetLockID
strh r0, [r5, #0x28]
b _02003004
_02003000:
strh r4, [r5, #0x28]
_02003004:
mov r0, r5
bl sub_02002E98
add r6, r6, #1
add r5, r5, #0x2c
_02003014:
cmp r6, #6
blt _02002FDC
_0200301C:
bl sub_020059A8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02003024: .word _0229B110
_02003028: .word _0229B114
arm_func_end sub_02002FB8
arm_func_start sub_0200302C
sub_0200302C: ; 0x0200302C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
movs r8, r0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
bl sub_02002580
mov r7, r0
mov r6, #0
ldr r5, _020030C4 ; =_0229B114
mov r4, #1
ldr sl, _020030C8 ; =_0229B110
b _020030B8
_02003054:
mov r0, r4, lsl r6
mov sb, r0, lsl #0x10
tst r8, sb, lsr #16
beq _020030B0
mov r0, r5
bl sub_02002CB4
bl InterruptMasterDisable
ldrh r0, [sl]
ldrh r0, [sl]
str r7, [r5, #0x24]
orr r0, r0, sb, lsr #16
strh r0, [sl]
bl InterruptMasterEnable
cmp r6, #4
beq _0200309C
cmp r6, #5
beq _020030A8
b _020030B0
_0200309C:
ldrh r0, [r5, #0x28]
bl sub_02083434
b _020030B0
_020030A8:
ldrh r0, [r5, #0x28]
bl sub_0208346C
_020030B0:
add r6, r6, #1
add r5, r5, #0x2c
_020030B8:
cmp r6, #6
blt _02003054
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020030C4: .word _0229B114
_020030C8: .word _0229B110
arm_func_end sub_0200302C
arm_func_start InterruptMasterDisable
InterruptMasterDisable: ; 0x020030CC
ldr r2, _020030E0 ; =0x04000208
mov r1, #0
ldrh r0, [r2]
strh r1, [r2]
bx lr
.align 2, 0
_020030E0: .word 0x04000208
arm_func_end InterruptMasterDisable
arm_func_start InterruptMasterEnable
InterruptMasterEnable: ; 0x020030E4
ldr r2, _020030F8 ; =0x04000208
mov r1, #1
ldrh r0, [r2]
strh r1, [r2]
bx lr
.align 2, 0
_020030F8: .word 0x04000208
arm_func_end InterruptMasterEnable
arm_func_start sub_020030FC
sub_020030FC: ; 0x020030FC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
movs sl, r0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
bl sub_02002580
mov r1, #7
mov r8, r0
bl sub_020027F8
mov sb, r0
mov r7, #0
ldr r6, _020031B8 ; =_0229B114
mov fp, #1
ldr r5, _020031BC ; =_0229B110
b _020031A0
_02003130:
mov r0, fp, lsl r7
mov r4, r0, lsl #0x10
tst sl, r4, lsr #16
beq _02003198
cmp r7, #4
beq _02003154
cmp r7, #5
beq _02003160
b _02003168
_02003154:
ldrh r0, [r6, #0x28]
bl sub_02083450
b _02003168
_02003160:
ldrh r0, [r6, #0x28]
bl sub_0208347C
_02003168:
bl InterruptMasterDisable
ldrh r0, [r5]
mvn r1, r4, lsr #16
ldrh r0, [r5]
ldrh r2, [r5]
mov r0, #0
str r0, [r6, #0x24]
and r0, r2, r1
strh r0, [r5]
bl InterruptMasterEnable
mov r0, r6
bl sub_02002E98
_02003198:
add r7, r7, #1
add r6, r6, #0x2c
_020031A0:
cmp r7, #6
blt _02003130
mov r0, r8
mov r1, sb
bl sub_020027F8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020031B8: .word _0229B114
_020031BC: .word _0229B110
arm_func_end sub_020030FC
arm_func_start sub_020031C0
sub_020031C0: ; 0x020031C0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl sub_02002580
mov r5, #0
mov lr, r5
cmp r5, #6
ldr ip, _02003218 ; =_0229B114
bge _02003210
mov r3, #1
b _02003208
_020031E8:
mov r1, r3, lsl lr
mov r1, r1, lsl #0x10
tst r4, r1, lsr #16
ldrne r2, [ip, #0x24]
add lr, lr, #1
cmpne r2, r0
orrne r5, r5, r1, lsr #16
add ip, ip, #0x2c
_02003208:
cmp lr, #6
blt _020031E8
_02003210:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02003218: .word _0229B114
arm_func_end sub_020031C0
arm_func_start InitMemAllocTableVeneer
InitMemAllocTableVeneer: ; 0x0200321C
ldr ip, _02003224 ; =InitMemAllocTable
bx ip
.align 2, 0
_02003224: .word InitMemAllocTable
arm_func_end InitMemAllocTableVeneer