pokeheartgold/lib/asm/nitro.s
2021-09-18 18:02:59 -04:00

25312 lines
480 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.public GXi_DmaId
.bss
.public GX_ResetBankForClearImage
.public G2_GetBG0ScrPtr
.public G2S_GetBG0ScrPtr
.public G2_GetBG1ScrPtr
.public G2S_GetBG1ScrPtr
.public G2_GetBG2ScrPtr
.public G2S_GetBG2ScrPtr
.public G2_GetBG3ScrPtr
.public G2S_GetBG3ScrPtr
.public G3_LoadMtx44
_021E1618:
.space 0x3D78
.text
arm_func_start OS_WaitIrq
OS_WaitIrq: ; 0x020D0E6C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r1
bl OS_DisableInterrupts
cmp r5, #0
beq _020D0E9C
ldr r1, _020D0ED8 ; =OSi_IntrTable
mvn r2, r4
add r1, r1, #0x3000
ldr r3, [r1, #0xff8]
and r2, r3, r2
str r2, [r1, #0xff8]
_020D0E9C:
bl OS_RestoreInterrupts
ldr r1, _020D0ED8 ; =OSi_IntrTable
add r0, r1, #0x3000
ldr r0, [r0, #0xff8]
tst r4, r0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r1, #0x3f8
ldr r5, _020D0EDC ; =0x027E0060
add r6, r0, #0x3c00
_020D0EC0:
mov r0, r5
bl sub_020D1E7C
ldr r0, [r6]
tst r4, r0
beq _020D0EC0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D0ED8: .word OSi_IntrTable
_020D0EDC: .word 0x027E0060
arm_func_end OS_WaitIrq
arm_func_start sub_020D0EE0
sub_020D0EE0: ; 0x020D0EE0
bx lr
arm_func_end sub_020D0EE0
arm_func_start sub_020D0EE4
sub_020D0EE4: ; 0x020D0EE4
stmdb sp!, {r3, r4, r5, lr}
mov r1, #0xc
mul r5, r0, r1
ldr r2, _020D0F58 ; =0x021E1618
ldr r3, _020D0F5C ; =_02110C84
mov r4, r0, lsl #1
ldr r1, [r2, r5]
mov r0, #0
ldrh r3, [r3, r4]
mov r4, #1
str r0, [r2, r5]
cmp r1, #0
mov r4, r4, lsl r3
beq _020D0F28
ldr r0, _020D0F60 ; =0x021E1620
ldr r0, [r0, r5]
blx r1
_020D0F28:
ldr r0, _020D0F64 ; =OSi_IntrTable
ldr r1, _020D0F68 ; =0x021E161C
add r0, r0, #0x3000
ldr r2, [r0, #0xff8]
ldr r1, [r1, r5]
orr r2, r2, r4
str r2, [r0, #0xff8]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r0, r4
bl OS_DisableIrqMask
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D0F58: .word 0x021E1618
_020D0F5C: .word _02110C84
_020D0F60: .word 0x021E1620
_020D0F64: .word OSi_IntrTable
_020D0F68: .word 0x021E161C
arm_func_end sub_020D0EE4
arm_func_start sub_020D0F6C
sub_020D0F6C: ; 0x020D0F6C
ldr ip, _020D0F78 ; =sub_020D0EE4
mov r0, #0
bx ip
.align 2, 0
_020D0F78: .word sub_020D0EE4
arm_func_end sub_020D0F6C
arm_func_start sub_020D0F7C
sub_020D0F7C: ; 0x020D0F7C
ldr ip, _020D0F88 ; =sub_020D0EE4
mov r0, #1
bx ip
.align 2, 0
_020D0F88: .word sub_020D0EE4
arm_func_end sub_020D0F7C
arm_func_start sub_020D0F8C
sub_020D0F8C: ; 0x020D0F8C
ldr ip, _020D0F98 ; =sub_020D0EE4
mov r0, #2
bx ip
.align 2, 0
_020D0F98: .word sub_020D0EE4
arm_func_end sub_020D0F8C
arm_func_start sub_020D0F9C
sub_020D0F9C: ; 0x020D0F9C
ldr ip, _020D0FA8 ; =sub_020D0EE4
mov r0, #3
bx ip
.align 2, 0
_020D0FA8: .word sub_020D0EE4
arm_func_end sub_020D0F9C
arm_func_start sub_020D0FAC
sub_020D0FAC: ; 0x020D0FAC
ldr ip, _020D0FB8 ; =sub_020D0EE4
mov r0, #4
bx ip
.align 2, 0
_020D0FB8: .word sub_020D0EE4
arm_func_end sub_020D0FAC
arm_func_start sub_020D0FBC
sub_020D0FBC: ; 0x020D0FBC
ldr ip, _020D0FC8 ; =sub_020D0EE4
mov r0, #5
bx ip
.align 2, 0
_020D0FC8: .word sub_020D0EE4
arm_func_end sub_020D0FBC
arm_func_start sub_020D0FCC
sub_020D0FCC: ; 0x020D0FCC
ldr ip, _020D0FD8 ; =sub_020D0EE4
mov r0, #6
bx ip
.align 2, 0
_020D0FD8: .word sub_020D0EE4
arm_func_end sub_020D0FCC
arm_func_start sub_020D0FDC
sub_020D0FDC: ; 0x020D0FDC
ldr ip, _020D0FE8 ; =sub_020D0EE4
mov r0, #7
bx ip
.align 2, 0
_020D0FE8: .word sub_020D0EE4
arm_func_end sub_020D0FDC
arm_func_start sub_020D0FEC
sub_020D0FEC: ; 0x020D0FEC
ldr r0, _020D1000 ; =0x027E0060
mov r1, #0
str r1, [r0, #4]
str r1, [r0]
bx lr
.align 2, 0
_020D1000: .word 0x027E0060
arm_func_end sub_020D0FEC
arm_func_start OS_SetIrqFunction
OS_SetIrqFunction: ; 0x020D1004
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r8, #0
mov r2, #0xc
ldr r4, _020D1084 ; =OSi_IntrTable
ldr r6, _020D1088 ; =0x021E1618
mov r7, r8
mov lr, r8
mov ip, #1
mov r3, r2
_020D1028:
tst r0, #1
beq _020D1070
mov sb, r7
cmp r8, #8
blt _020D104C
cmp r8, #0xb
suble r5, r8, #8
mlale sb, r5, r3, r6
ble _020D1068
_020D104C:
cmp r8, #3
blt _020D1064
cmp r8, #6
addle r5, r8, #1
mlale sb, r5, r2, r6
ble _020D1068
_020D1064:
str r1, [r4, r8, lsl #2]
_020D1068:
cmp sb, #0
stmneia sb, {r1, ip, lr}
_020D1070:
add r8, r8, #1
cmp r8, #0x16
mov r0, r0, lsr #1
blt _020D1028
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020D1084: .word OSi_IntrTable
_020D1088: .word 0x021E1618
arm_func_end OS_SetIrqFunction
arm_func_start sub_020D108C
sub_020D108C: ; 0x020D108C
ldr r2, _020D1110 ; =OSi_IntrTable
mov r1, #0
_020D1094:
tst r0, #1
beq _020D10F4
cmp r1, #8
blt _020D10C4
cmp r1, #0xb
bgt _020D10C4
sub r1, r1, #8
mov r0, #0xc
mul r2, r1, r0
ldr r0, _020D1114 ; =0x021E1618
ldr r0, [r0, r2]
bx lr
_020D10C4:
cmp r1, #3
blt _020D10EC
cmp r1, #6
bgt _020D10EC
add r1, r1, #1
mov r0, #0xc
mul r2, r1, r0
ldr r0, _020D1114 ; =0x021E1618
ldr r0, [r0, r2]
bx lr
_020D10EC:
ldr r0, [r2]
bx lr
_020D10F4:
add r1, r1, #1
cmp r1, #0x16
mov r0, r0, lsr #1
add r2, r2, #4
blt _020D1094
mov r0, #0
bx lr
.align 2, 0
_020D1110: .word OSi_IntrTable
_020D1114: .word 0x021E1618
arm_func_end sub_020D108C
arm_func_start sub_020D1118
sub_020D1118: ; 0x020D1118
stmdb sp!, {r4, r5, r6, lr}
mov r3, #0xc
mul r6, r0, r3
ldr ip, _020D1154 ; =0x021E1618
add r4, r0, #8
mov r5, #1
mov r0, r5, lsl r4
ldr r3, _020D1158 ; =0x021E1620
str r1, [ip, r6]
str r2, [r3, r6]
bl OS_EnableIrqMask
and r1, r0, r5, lsl r4
ldr r0, _020D115C ; =0x021E161C
str r1, [r0, r6]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D1154: .word 0x021E1618
_020D1158: .word 0x021E1620
_020D115C: .word 0x021E161C
arm_func_end sub_020D1118
arm_func_start sub_020D1160
sub_020D1160: ; 0x020D1160
stmdb sp!, {r4, lr}
mov r3, #0xc
mul r4, r0, r3
ldr ip, _020D119C ; =0x021E1648
add r0, r0, #3
mov r3, #1
mov r0, r3, lsl r0
ldr r3, _020D11A0 ; =0x021E1650
str r1, [ip, r4]
str r2, [r3, r4]
bl OS_EnableIrqMask
ldr r0, _020D11A4 ; =0x021E164C
mov r1, #1
str r1, [r0, r4]
ldmia sp!, {r4, pc}
.align 2, 0
_020D119C: .word 0x021E1648
_020D11A0: .word 0x021E1650
_020D11A4: .word 0x021E164C
arm_func_end sub_020D1160
arm_func_start OS_SetIrqMask
OS_SetIrqMask: ; 0x020D11A8
ldr r3, _020D11D0 ; =0x04000208
mov r1, #0
ldrh r2, [r3]
strh r1, [r3]
ldr r1, [r3, #8]
str r0, [r3, #8]
ldrh r0, [r3]
mov r0, r1
strh r2, [r3]
bx lr
.align 2, 0
_020D11D0: .word 0x04000208
arm_func_end OS_SetIrqMask
arm_func_start OS_EnableIrqMask
OS_EnableIrqMask: ; 0x020D11D4
ldr r3, _020D1200 ; =0x04000208
mov r1, #0
ldrh r2, [r3]
strh r1, [r3]
ldr r1, [r3, #8]
orr r0, r1, r0
str r0, [r3, #8]
ldrh r0, [r3]
mov r0, r1
strh r2, [r3]
bx lr
.align 2, 0
_020D1200: .word 0x04000208
arm_func_end OS_EnableIrqMask
arm_func_start OS_DisableIrqMask
OS_DisableIrqMask: ; 0x020D1204
ldr ip, _020D1230 ; =0x04000208
mov r2, #0
ldrh r3, [ip]
mvn r1, r0
strh r2, [ip]
ldr r0, [ip, #8]
and r1, r0, r1
str r1, [ip, #8]
ldrh r1, [ip]
strh r3, [ip]
bx lr
.align 2, 0
_020D1230: .word 0x04000208
arm_func_end OS_DisableIrqMask
arm_func_start OS_ResetRequestIrqMask
OS_ResetRequestIrqMask: ; 0x020D1234
ldr r3, _020D125C ; =0x04000208
mov r1, #0
ldrh r2, [r3]
strh r1, [r3]
ldr r1, [r3, #0xc]
str r0, [r3, #0xc]
ldrh r0, [r3]
mov r0, r1
strh r2, [r3]
bx lr
.align 2, 0
_020D125C: .word 0x04000208
arm_func_end OS_ResetRequestIrqMask
arm_func_start sub_020D1260
sub_020D1260: ; 0x020D1260
ldr ip, _020D1284 ; =OSi_IntrTable
ldr r3, _020D1288 ; =0xFDDB597D
add r0, ip, #0x3000
ldr r2, _020D128C ; =0x7BF9DD5B
ldr r1, _020D1290 ; =0x00000800
str r3, [r0, #0xf7c]
add r0, ip, #0x3f80
str r2, [r0, -r1]
bx lr
.align 2, 0
_020D1284: .word OSi_IntrTable
_020D1288: .word 0xFDDB597D
_020D128C: .word 0x7BF9DD5B
_020D1290: .word 0x00000800
arm_func_end sub_020D1260
arm_func_start sub_020D1294
sub_020D1294: ; 0x020D1294
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _020D1350 ; =0x021E1678
ldr r0, [r3]
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r1, _020D1354 ; =0x027FFFF0
mov r4, #1
mov r2, #0
mov r0, #0x7e
str r4, [r3]
str r2, [r1]
bl sub_020D13AC
ldr r5, _020D1354 ; =0x027FFFF0
ldrh r0, [r5, #6]
cmp r0, #0
beq _020D12EC
mov r4, #0x400
_020D12D8:
mov r0, r4
bl SVC_WaitByLoop
ldrh r0, [r5, #6]
cmp r0, #0
bne _020D12D8
_020D12EC:
ldr ip, _020D1358 ; =0x027FFFB0
mvn r0, #0
str r0, [ip]
mov r3, r0, lsl #0x10
add r1, ip, #0x10
mov r0, #0
mov r2, #0x28
str r3, [ip, #4]
bl MIi_CpuClear32
ldr ip, _020D135C ; =0x04000204
ldr r1, _020D1354 ; =0x027FFFF0
ldrh r3, [ip]
mov r0, #0x7e
mov r2, #0
orr r3, r3, #0x800
strh r3, [ip]
ldrh r3, [ip]
orr r3, r3, #0x80
strh r3, [ip]
bl sub_020D1430
ldr r1, _020D1354 ; =0x027FFFF0
mov r0, #0x7f
mov r2, #0
bl sub_020D13AC
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D1350: .word 0x021E1678
_020D1354: .word 0x027FFFF0
_020D1358: .word 0x027FFFB0
_020D135C: .word 0x04000204
arm_func_end sub_020D1294
arm_func_start sub_020D1360
sub_020D1360: ; 0x020D1360
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
bl sub_020D1440
cmp r0, #0
ldmleia sp!, {r4, r5, r6, r7, r8, pc}
mov r4, #0x400
_020D1384:
mov r0, r4
bl SVC_WaitByLoop
mov r0, r8
mov r1, r7
mov r2, r6
mov r3, r5
bl sub_020D1440
cmp r0, #0
bgt _020D1384
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020D1360
arm_func_start sub_020D13AC
sub_020D13AC: ; 0x020D13AC
ldr ip, _020D13B8 ; =sub_020D1360
mov r3, #0
bx ip
.align 2, 0
_020D13B8: .word sub_020D1360
arm_func_end sub_020D13AC
arm_func_start sub_020D13BC
sub_020D13BC: ; 0x020D13BC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
ldrh r1, [r7, #4]
mov r6, r2
mov r5, r3
cmp r0, r1
mvnne r0, #1
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
cmp r5, #0
beq _020D13EC
bl sub_020D3A64
b _020D13F0
_020D13EC:
bl OS_DisableInterrupts
_020D13F0:
mov r4, r0
mov r0, #0
strh r0, [r7, #4]
cmp r6, #0
beq _020D1408
blx r6
_020D1408:
mov r0, #0
str r0, [r7]
cmp r5, #0
mov r0, r4
beq _020D1424
bl sub_020D3A78
b _020D1428
_020D1424:
bl OS_RestoreInterrupts
_020D1428:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D13BC
arm_func_start sub_020D1430
sub_020D1430: ; 0x020D1430
ldr ip, _020D143C ; =sub_020D13BC
mov r3, #0
bx ip
.align 2, 0
_020D143C: .word sub_020D13BC
arm_func_end sub_020D1430
arm_func_start sub_020D1440
sub_020D1440: ; 0x020D1440
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
movs r6, r3
mov sb, r0
mov r8, r1
mov r7, r2
beq _020D1460
bl sub_020D3A64
b _020D1464
_020D1460:
bl OS_DisableInterrupts
_020D1464:
mov r5, r0
mov r0, sb
mov r1, r8
bl sub_020D4BE0
movs r4, r0
bne _020D148C
cmp r7, #0
beq _020D1488
blx r7
_020D1488:
strh sb, [r8, #4]
_020D148C:
cmp r6, #0
mov r0, r5
beq _020D14A0
bl sub_020D3A78
b _020D14A4
_020D14A0:
bl OS_RestoreInterrupts
_020D14A4:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_020D1440
arm_func_start sub_020D14AC
sub_020D14AC: ; 0x020D14AC
ldr ip, _020D14C0 ; =sub_020D1360
ldr r1, _020D14C4 ; =0x027FFFE8
ldr r2, _020D14C8 ; =sub_020D1518
mov r3, #1
bx ip
.align 2, 0
_020D14C0: .word sub_020D1360
_020D14C4: .word 0x027FFFE8
_020D14C8: .word sub_020D1518
arm_func_end sub_020D14AC
arm_func_start sub_020D14CC
sub_020D14CC: ; 0x020D14CC
ldr ip, _020D14E0 ; =sub_020D13BC
ldr r1, _020D14E4 ; =0x027FFFE8
ldr r2, _020D14E8 ; =sub_020D1530
mov r3, #1
bx ip
.align 2, 0
_020D14E0: .word sub_020D13BC
_020D14E4: .word 0x027FFFE8
_020D14E8: .word sub_020D1530
arm_func_end sub_020D14CC
arm_func_start sub_020D14EC
sub_020D14EC: ; 0x020D14EC
ldr r1, _020D14F4 ; =sub_020D14CC
bx r1
.align 2, 0
_020D14F4: .word sub_020D14CC
arm_func_end sub_020D14EC
arm_func_start sub_020D14F8
sub_020D14F8: ; 0x020D14F8
ldr ip, _020D150C ; =sub_020D1440
ldr r1, _020D1510 ; =0x027FFFE8
ldr r2, _020D1514 ; =sub_020D1518
mov r3, #1
bx ip
.align 2, 0
_020D150C: .word sub_020D1440
_020D1510: .word 0x027FFFE8
_020D1514: .word sub_020D1518
arm_func_end sub_020D14F8
arm_func_start sub_020D1518
sub_020D1518: ; 0x020D1518
ldr r1, _020D152C ; =0x04000204
ldrh r0, [r1]
bic r0, r0, #0x80
strh r0, [r1]
bx lr
.align 2, 0
_020D152C: .word 0x04000204
arm_func_end sub_020D1518
arm_func_start sub_020D1530
sub_020D1530: ; 0x020D1530
ldr r1, _020D1544 ; =0x04000204
ldrh r0, [r1]
orr r0, r0, #0x80
strh r0, [r1]
bx lr
.align 2, 0
_020D1544: .word 0x04000204
arm_func_end sub_020D1530
arm_func_start sub_020D1548
sub_020D1548: ; 0x020D1548
ldr ip, _020D1558 ; =sub_020D13AC
ldr r1, _020D155C ; =0x027FFFE0
ldr r2, _020D1560 ; =sub_020D158C
bx ip
.align 2, 0
_020D1558: .word sub_020D13AC
_020D155C: .word 0x027FFFE0
_020D1560: .word sub_020D158C
arm_func_end sub_020D1548
arm_func_start sub_020D1564
sub_020D1564: ; 0x020D1564
ldr ip, _020D1574 ; =sub_020D1430
ldr r1, _020D1578 ; =0x027FFFE0
ldr r2, _020D157C ; =sub_020D15A4
bx ip
.align 2, 0
_020D1574: .word sub_020D1430
_020D1578: .word 0x027FFFE0
_020D157C: .word sub_020D15A4
arm_func_end sub_020D1564
arm_func_start sub_020D1580
sub_020D1580: ; 0x020D1580
ldr r1, _020D1588 ; =sub_020D1564
bx r1
.align 2, 0
_020D1588: .word sub_020D1564
arm_func_end sub_020D1580
arm_func_start sub_020D158C
sub_020D158C: ; 0x020D158C
ldr r1, _020D15A0 ; =0x04000204
ldrh r0, [r1]
bic r0, r0, #0x800
strh r0, [r1]
bx lr
.align 2, 0
_020D15A0: .word 0x04000204
arm_func_end sub_020D158C
arm_func_start sub_020D15A4
sub_020D15A4: ; 0x020D15A4
ldr r1, _020D15B8 ; =0x04000204
ldrh r0, [r1]
orr r0, r0, #0x800
strh r0, [r1]
bx lr
.align 2, 0
_020D15B8: .word 0x04000204
arm_func_end sub_020D15A4
arm_func_start sub_020D15BC
sub_020D15BC: ; 0x020D15BC
ldrh r0, [r0, #4]
bx lr
arm_func_end sub_020D15BC
arm_func_start OS_GetLockID
OS_GetLockID: ; 0x020D15C4
ldr r3, _020D1614 ; =0x027FFFB0
ldr r1, [r3]
clz r2, r1
cmp r2, #0x20
movne r0, #0x40
bne _020D15F8
add r3, r3, #4
ldr r1, [r3]
clz r2, r1
cmp r2, #0x20
ldr r0, _020D1618 ; =0xFFFFFFFD
bxeq lr
mov r0, #0x60
_020D15F8:
add r0, r0, r2
mov r1, #0x80000000
mov r1, r1, lsr r2
ldr r2, [r3]
bic r2, r2, r1
str r2, [r3]
bx lr
.align 2, 0
_020D1614: .word 0x027FFFB0
_020D1618: .word 0xFFFFFFFD
arm_func_end OS_GetLockID
arm_func_start OS_ReleaseLockID
OS_ReleaseLockID: ; 0x020D161C
ldr r3, _020D1648 ; =0x027FFFB0
cmp r0, #0x60
addpl r3, r3, #4
subpl r0, r0, #0x60
submi r0, r0, #0x40
mov r1, #0x80000000
mov r1, r1, lsr r0
ldr r2, [r3]
orr r2, r2, r1
str r2, [r3]
bx lr
.align 2, 0
_020D1648: .word 0x027FFFB0
arm_func_end OS_ReleaseLockID
arm_func_start sub_020D164C
sub_020D164C: ; 0x020D164C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl sub_020D1674
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end sub_020D164C
arm_func_start sub_020D1674
sub_020D1674: ; 0x020D1674
ldr ip, _020D1688 ; =sub_020D16B4
mov r3, r2
mov r2, r1
mvn r1, #0x80000000
bx ip
.align 2, 0
_020D1688: .word sub_020D16B4
arm_func_end sub_020D1674
arm_func_start sub_020D168C
sub_020D168C: ; 0x020D168C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r3, sp, #0x10
bic r3, r3, #3
ldr r2, [sp, #0x10]
add r3, r3, #4
bl sub_020D16B4
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end sub_020D168C
arm_func_start sub_020D16B4
sub_020D16B4: ; 0x020D16B4
ldr ip, _020D16BC ; =sub_020E3F44
bx ip
.align 2, 0
_020D16BC: .word sub_020E3F44
arm_func_end sub_020D16B4
arm_func_start sub_020D16C0
sub_020D16C0: ; 0x020D16C0
ldr r1, _020D16D4 ; =0x021E167C
ldr r0, [r1, #0x20]
add r0, r0, #1
str r0, [r1, #0x20]
bx lr
.align 2, 0
_020D16D4: .word 0x021E167C
arm_func_end sub_020D16C0
arm_func_start sub_020D16D8
sub_020D16D8: ; 0x020D16D8
ldr ip, [r0]
b _020D16EC
_020D16E0:
cmp ip, r1
bxeq lr
ldr ip, [ip, #0x80]
_020D16EC:
cmp ip, #0
beq _020D1704
ldr r3, [ip, #0x70]
ldr r2, [r1, #0x70]
cmp r3, r2
bls _020D16E0
_020D1704:
cmp ip, #0
bne _020D1730
ldr r2, [r0, #4]
cmp r2, #0
streq r1, [r0]
strne r1, [r2, #0x80]
str r2, [r1, #0x7c]
mov r2, #0
str r2, [r1, #0x80]
str r1, [r0, #4]
bx lr
_020D1730:
ldr r2, [ip, #0x7c]
cmp r2, #0
streq r1, [r0]
strne r1, [r2, #0x80]
str r2, [r1, #0x7c]
str ip, [r1, #0x80]
str r1, [ip, #0x7c]
bx lr
arm_func_end sub_020D16D8
arm_func_start sub_020D1750
sub_020D1750: ; 0x020D1750
ldr r2, [r0]
cmp r2, #0
beq _020D177C
ldr r1, [r2, #0x80]
str r1, [r0]
cmp r1, #0
movne r0, #0
strne r0, [r1, #0x7c]
moveq r1, #0
streq r1, [r0, #4]
streq r1, [r2, #0x78]
_020D177C:
mov r0, r2
bx lr
arm_func_end sub_020D1750
arm_func_start sub_020D1784
sub_020D1784: ; 0x020D1784
ldr ip, [r0]
mov r2, ip
cmp ip, #0
beq _020D17D0
_020D1794:
cmp r2, r1
ldr r3, [r2, #0x80]
bne _020D17C4
cmp ip, r2
ldr ip, [r2, #0x7c]
streq r3, [r0]
strne r3, [ip, #0x80]
ldr r1, [r0, #4]
cmp r1, r2
streq ip, [r0, #4]
strne ip, [r3, #0x7c]
b _020D17D0
_020D17C4:
mov r2, r3
cmp r3, #0
bne _020D1794
_020D17D0:
mov r0, r2
bx lr
arm_func_end sub_020D1784
arm_func_start sub_020D17D8
sub_020D17D8: ; 0x020D17D8
ldr r2, [r0]
cmp r2, #0
beq _020D1800
ldr r1, [r2, #0x10]
str r1, [r0]
cmp r1, #0
movne r0, #0
strne r0, [r1, #0x14]
moveq r1, #0
streq r1, [r0, #4]
_020D1800:
mov r0, r2
bx lr
arm_func_end sub_020D17D8
arm_func_start sub_020D1808
sub_020D1808: ; 0x020D1808
stmdb sp!, {r3, lr}
ldr r1, _020D1864 ; =0x021E167C
mov ip, #0
ldr lr, [r1, #0x2c]
mov r3, lr
b _020D1828
_020D1820:
mov ip, r3
ldr r3, [r3, #0x68]
_020D1828:
cmp r3, #0
beq _020D1840
ldr r2, [r3, #0x70]
ldr r1, [r0, #0x70]
cmp r2, r1
blo _020D1820
_020D1840:
cmp ip, #0
ldrne r1, [ip, #0x68]
strne r1, [r0, #0x68]
strne r0, [ip, #0x68]
ldmneia sp!, {r3, pc}
ldr r1, _020D1864 ; =0x021E167C
str lr, [r0, #0x68]
str r0, [r1, #0x2c]
ldmia sp!, {r3, pc}
.align 2, 0
_020D1864: .word 0x021E167C
arm_func_end sub_020D1808
arm_func_start sub_020D1868
sub_020D1868: ; 0x020D1868
ldr r1, _020D18AC ; =0x021E167C
mov r2, #0
ldr r1, [r1, #0x2c]
b _020D1880
_020D1878:
mov r2, r1
ldr r1, [r1, #0x68]
_020D1880:
cmp r1, #0
cmpne r1, r0
bne _020D1878
cmp r2, #0
ldrne r0, [r0, #0x68]
strne r0, [r2, #0x68]
bxne lr
ldr r1, [r0, #0x68]
ldr r0, _020D18AC ; =0x021E167C
str r1, [r0, #0x2c]
bx lr
.align 2, 0
_020D18AC: .word 0x021E167C
arm_func_end sub_020D1868
arm_func_start sub_020D18B0
sub_020D18B0: ; 0x020D18B0
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _020D1970 ; =0x021E167C
ldr r1, [r0, #4]
cmp r1, #0
ldmneia sp!, {r4, r5, r6, pc}
ldrh r0, [r0, #0x26]
ldr r4, _020D1974 ; =0x021E16A0
cmp r0, #0
bne _020D18E0
bl OS_GetProcMode
cmp r0, #0x12
bne _020D18EC
_020D18E0:
mov r0, #1
strh r0, [r4]
ldmia sp!, {r4, r5, r6, pc}
_020D18EC:
ldr r0, _020D1970 ; =0x021E167C
ldr r0, [r0, #8]
ldr r6, [r0]
bl sub_020D1F5C
mov r5, r0
cmp r6, r5
cmpne r5, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [r6, #0x64]
cmp r0, #2
beq _020D1928
mov r0, r6
bl sub_020D22D8
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
_020D1928:
ldr r0, _020D1970 ; =0x021E167C
ldr r2, [r0]
cmp r2, #0
beq _020D1944
mov r0, r6
mov r1, r5
blx r2
_020D1944:
ldr r2, [r4, #0xc]
cmp r2, #0
beq _020D195C
mov r0, r6
mov r1, r5
blx r2
_020D195C:
ldr r1, _020D1970 ; =0x021E167C
mov r0, r5
str r5, [r1, #0x28]
bl sub_020D2324
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D1970: .word 0x021E167C
_020D1974: .word 0x021E16A0
arm_func_end sub_020D18B0
arm_func_start sub_020D1978
sub_020D1978: ; 0x020D1978
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r0, _020D1A8C ; =0x021E167C
ldr r1, [r0, #0xc]
cmp r1, #0
addne sp, sp, #8
ldmneia sp!, {r3, pc}
mov r3, #1
ldr r2, _020D1A90 ; =0x021E16A4
str r3, [r0, #0xc]
str r2, [r0, #8]
ldr r1, _020D1A94 ; =0x021E1770
mov r2, #0x10
str r2, [r1, #0x70]
mov r2, #0
str r2, [r1, #0x6c]
str r3, [r1, #0x64]
str r2, [r1, #0x68]
str r2, [r1, #0x74]
ldr r2, _020D1A98 ; =0x00000000
str r1, [r0, #0x2c]
str r1, [r0, #0x28]
cmp r2, #0
ldrle r0, _020D1A9C ; =0x027E0080
ble _020D19EC
ldr r1, _020D1AA0 ; =OSi_IntrTable
ldr r0, _020D1AA4 ; =0x00000800
add r1, r1, #0x3f80
sub r0, r1, r0
_020D19EC:
ldr r1, _020D1AA0 ; =OSi_IntrTable
sub ip, r0, r2
ldr r0, _020D1AA4 ; =0x00000800
add r1, r1, #0x3f80
sub r3, r1, r0
ldr r2, _020D1A94 ; =0x021E1770
mov r0, #0
str r3, [r2, #0x94]
str ip, [r2, #0x90]
ldr r1, _020D1AA8 ; =0xFDDB597D
str r0, [r2, #0x98]
str r1, [r3, #-4]
ldr r3, [r2, #0x90]
ldr ip, _020D1AAC ; =0x7BF9DD5B
ldr r1, _020D1A8C ; =0x021E167C
str ip, [r3]
str r0, [r2, #0xa0]
str r0, [r2, #0x9c]
strh r0, [r1, #0x24]
ldr r3, _020D1AB0 ; =0x021E16A0
ldr r2, _020D1AB4 ; =0x027FFFA0
strh r0, [r1, #0x26]
str r3, [r2]
bl sub_020D21C4
mov r2, #0xc8
str r2, [sp]
mov ip, #0x1f
ldr r0, _020D1AB8 ; =0x021E16B0
ldr r1, _020D1ABC ; =sub_020D21EC
ldr r3, _020D1AC0 ; =0x021E18F8
mov r2, #0
str ip, [sp, #4]
bl sub_020D1AD4
ldr r0, _020D1AB8 ; =0x021E16B0
mov r1, #0x20
str r1, [r0, #0x70]
mov r1, #1
str r1, [r0, #0x64]
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020D1A8C: .word 0x021E167C
_020D1A90: .word 0x021E16A4
_020D1A94: .word 0x021E1770
_020D1A98: .word 0x00000000
_020D1A9C: .word 0x027E0080
_020D1AA0: .word OSi_IntrTable
_020D1AA4: .word 0x00000800
_020D1AA8: .word 0xFDDB597D
_020D1AAC: .word 0x7BF9DD5B
_020D1AB0: .word 0x021E16A0
_020D1AB4: .word 0x027FFFA0
_020D1AB8: .word 0x021E16B0
_020D1ABC: .word sub_020D21EC
_020D1AC0: .word 0x021E18F8
arm_func_end sub_020D1978
arm_func_start sub_020D1AC4
sub_020D1AC4: ; 0x020D1AC4
ldr r0, _020D1AD0 ; =0x021E1688
ldr r0, [r0]
bx lr
.align 2, 0
_020D1AD0: .word 0x021E1688
arm_func_end sub_020D1AC4
arm_func_start sub_020D1AD4
sub_020D1AD4: ; 0x020D1AD4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r5, r1
mov r7, r2
mov r6, r3
bl OS_DisableInterrupts
mov r4, r0
bl sub_020D16C0
ldr r2, [sp, #0x1c]
mov r1, #0
str r2, [r8, #0x70]
str r0, [r8, #0x6c]
str r1, [r8, #0x64]
mov r0, r8
str r1, [r8, #0x74]
bl sub_020D1808
ldr r0, [sp, #0x18]
mov r1, r5
str r6, [r8, #0x94]
sub r5, r6, r0
sub r2, r6, #4
mov ip, #0
str r5, [r8, #0x90]
str ip, [r8, #0x98]
ldr r6, _020D1BC4 ; =0xFDDB597D
ldr r0, [r8, #0x94]
ldr r3, _020D1BC8 ; =0x7BF9DD5B
str r6, [r0, #-4]
ldr r0, [r8, #0x90]
str r3, [r0]
str ip, [r8, #0xa0]
mov r0, r8
str ip, [r8, #0x9c]
bl sub_020D226C
ldr r2, _020D1BCC ; =sub_020D1BD0
str r7, [r8, #4]
str r2, [r8, #0x3c]
ldr r2, [sp, #0x18]
add r1, r5, #4
mov r0, #0
sub r2, r2, #8
bl MIi_CpuClear32
mov r1, #0
str r1, [r8, #0x84]
str r1, [r8, #0x88]
mov r0, r8
str r1, [r8, #0x8c]
bl sub_020D2264
mov r0, #0
str r0, [r8, #0x78]
str r0, [r8, #0x80]
add r1, r8, #0xa4
mov r2, #0xc
str r0, [r8, #0x7c]
bl MIi_CpuClear32
mov r1, #0
mov r0, r4
str r1, [r8, #0xb0]
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D1BC4: .word 0xFDDB597D
_020D1BC8: .word 0x7BF9DD5B
_020D1BCC: .word sub_020D1BD0
arm_func_end sub_020D1AD4
arm_func_start sub_020D1BD0
sub_020D1BD0: ; 0x020D1BD0
stmdb sp!, {r3, lr}
bl OS_DisableInterrupts
ldr r0, _020D1BEC ; =0x021E167C
mov r1, #0
ldr r0, [r0, #0x28]
bl sub_020D1BF0
ldmia sp!, {r3, pc}
.align 2, 0
_020D1BEC: .word 0x021E167C
arm_func_end sub_020D1BD0
arm_func_start sub_020D1BF0
sub_020D1BF0: ; 0x020D1BF0
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _020D1C44 ; =0x021E167C
mov r5, r0
ldr r2, [r2, #0x1c]
mov r4, r1
cmp r2, #0
beq _020D1C38
ldr r1, _020D1C48 ; =sub_020D1C4C
bl sub_020D226C
str r4, [r5, #4]
ldr r1, [r5]
mov r0, r5
orr r1, r1, #0x80
str r1, [r5]
mov r1, #1
str r1, [r5, #0x64]
bl sub_020D2324
ldmia sp!, {r3, r4, r5, pc}
_020D1C38:
mov r0, r4
bl sub_020D1C4C
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D1C44: .word 0x021E167C
_020D1C48: .word sub_020D1C4C
arm_func_end sub_020D1BF0
arm_func_start sub_020D1C4C
sub_020D1C4C: ; 0x020D1C4C
stmdb sp!, {r3, lr}
ldr r1, _020D1C80 ; =0x021E167C
ldr r1, [r1, #8]
ldr r3, [r1]
ldr r2, [r3, #0xb4]
cmp r2, #0
beq _020D1C78
mov r1, #0
str r1, [r3, #0xb4]
blx r2
bl OS_DisableInterrupts
_020D1C78:
bl sub_020D1C84
ldmia sp!, {r3, pc}
.align 2, 0
_020D1C80: .word 0x021E167C
arm_func_end sub_020D1C4C
arm_func_start sub_020D1C84
sub_020D1C84: ; 0x020D1C84
stmdb sp!, {r4, lr}
ldr r0, _020D1CDC ; =0x021E167C
ldr r0, [r0, #8]
ldr r4, [r0]
bl sub_020D21FC
mov r0, r4
bl sub_020D26F8
ldr r0, [r4, #0x78]
cmp r0, #0
beq _020D1CB4
mov r1, r4
bl sub_020D1784
_020D1CB4:
mov r0, r4
bl sub_020D1868
mov r1, #2
add r0, r4, #0x9c
str r1, [r4, #0x64]
bl sub_020D1ECC
bl sub_020D2230
bl sub_020D1F84
bl OS_Terminate
ldmia sp!, {r4, pc}
.align 2, 0
_020D1CDC: .word 0x021E167C
arm_func_end sub_020D1C84
arm_func_start sub_020D1CE0
sub_020D1CE0: ; 0x020D1CE0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020D1D58 ; =0x021E167C
mov r4, r0
ldr r0, [r1, #0x28]
cmp r0, r5
bne _020D1D04
bl sub_020D1C84
_020D1D04:
bl sub_020D21FC
mov r0, r5
bl sub_020D26F8
mov r0, r5
bl sub_020D1E20
ldr r0, [r5, #0x78]
cmp r0, #0
beq _020D1D2C
mov r1, r5
bl sub_020D1784
_020D1D2C:
mov r0, r5
bl sub_020D1868
mov r1, #2
add r0, r5, #0x9c
str r1, [r5, #0x64]
bl sub_020D1ECC
bl sub_020D2230
mov r0, r4
bl OS_RestoreInterrupts
bl sub_020D1F84
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D1D58: .word 0x021E167C
arm_func_end sub_020D1CE0
arm_func_start sub_020D1D5C
sub_020D1D5C: ; 0x020D1D5C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_020D2100
mov r2, r0
mov r0, r5
mov r1, r4
bl sub_020D1D80
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D1D5C
arm_func_start sub_020D1D80
sub_020D1D80: ; 0x020D1D80
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl OS_DisableInterrupts
ldr r1, _020D1E18 ; =0x021E167C
mov r4, r0
ldr r0, [r1, #0x28]
cmp r7, r0
bne _020D1DB4
mov r0, r7
mov r1, r6
bl sub_020D1BF0
_020D1DB4:
mov r0, r7
bl sub_020D1E20
ldr r0, _020D1E18 ; =0x021E167C
ldr r1, _020D1E1C ; =sub_020D1C4C
ldr r2, [r0, #0x1c]
cmp r2, #0
ldreq r0, [r7, #0x94]
subeq r2, r0, #4
mov r0, r7
bl sub_020D226C
str r6, [r7, #4]
ldr r1, [r7]
mov r0, #1
orr r1, r1, #0x80
str r1, [r7]
str r0, [r7, #0x64]
bl sub_020D21FC
mov r0, r7
mov r1, r5
bl sub_020D2058
bl sub_020D2230
bl sub_020D18B0
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D1E18: .word 0x021E167C
_020D1E1C: .word sub_020D1C4C
arm_func_end sub_020D1D80
arm_func_start sub_020D1E20
sub_020D1E20: ; 0x020D1E20
stmdb sp!, {r3, lr}
ldr r0, [r0, #0xb0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_020D3854
ldmia sp!, {r3, pc}
arm_func_end sub_020D1E20
arm_func_start sub_020D1E38
sub_020D1E38: ; 0x020D1E38
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, [r5, #0x64]
mov r4, r0
cmp r1, #2
beq _020D1E5C
add r0, r5, #0x9c
bl sub_020D1E7C
_020D1E5C:
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D1E38
arm_func_start sub_020D1E68
sub_020D1E68: ; 0x020D1E68
ldr r0, [r0, #0x64]
cmp r0, #2
moveq r0, #1
movne r0, #0
bx lr
arm_func_end sub_020D1E68
arm_func_start sub_020D1E7C
sub_020D1E7C: ; 0x020D1E7C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
bl OS_DisableInterrupts
ldr r1, _020D1EC8 ; =0x021E167C
mov r4, r0
ldr r0, [r1, #8]
cmp r6, #0
ldr r5, [r0]
beq _020D1EB0
mov r0, r6
mov r1, r5
str r6, [r5, #0x78]
bl sub_020D16D8
_020D1EB0:
mov r0, #0
str r0, [r5, #0x64]
bl sub_020D18B0
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D1EC8: .word 0x021E167C
arm_func_end sub_020D1E7C
arm_func_start sub_020D1ECC
sub_020D1ECC: ; 0x020D1ECC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
bl OS_DisableInterrupts
ldr r1, [r7]
mov r6, r0
cmp r1, #0
beq _020D1F28
beq _020D1F18
mov r5, #1
mov r4, #0
_020D1EF4:
mov r0, r7
bl sub_020D1750
str r5, [r0, #0x64]
str r4, [r0, #0x78]
str r4, [r0, #0x80]
str r4, [r0, #0x7c]
ldr r0, [r7]
cmp r0, #0
bne _020D1EF4
_020D1F18:
mov r0, #0
str r0, [r7, #4]
str r0, [r7]
bl sub_020D18B0
_020D1F28:
mov r0, r6
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D1ECC
arm_func_start sub_020D1F34
sub_020D1F34: ; 0x020D1F34
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
mov r1, #1
mov r4, r0
str r1, [r5, #0x64]
bl sub_020D18B0
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D1F34
arm_func_start sub_020D1F5C
sub_020D1F5C: ; 0x020D1F5C
ldr r0, _020D1F80 ; =0x021E167C
ldr r0, [r0, #0x2c]
b _020D1F6C
_020D1F68:
ldr r0, [r0, #0x68]
_020D1F6C:
cmp r0, #0
ldrne r1, [r0, #0x64]
cmpne r1, #1
bne _020D1F68
bx lr
.align 2, 0
_020D1F80: .word 0x021E167C
arm_func_end sub_020D1F5C
arm_func_start sub_020D1F84
sub_020D1F84: ; 0x020D1F84
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
mov r4, r0
bl sub_020D18B0
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
arm_func_end sub_020D1F84
arm_func_start sub_020D1FA0
sub_020D1FA0: ; 0x020D1FA0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r0, _020D2054 ; =0x021E167C
mov r4, #0
mov r5, r4
mov r6, r4
ldr r8, [r0, #0x28]
bl OS_DisableInterrupts
ldr r1, _020D2054 ; =0x021E167C
mov r7, r0
ldr r1, [r1, #0x2c]
mov r0, r4
cmp r1, #0
beq _020D2000
ldr r2, [r8, #0x70]
_020D1FD8:
cmp r1, r8
moveq r4, r0
ldr r0, [r1, #0x70]
cmp r2, r0
moveq r5, r1
mov r0, r1
ldr r1, [r1, #0x68]
addeq r6, r6, #1
cmp r1, #0
bne _020D1FD8
_020D2000:
cmp r6, #1
ble _020D2010
cmp r5, r8
bne _020D201C
_020D2010:
mov r0, r7
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D201C:
cmp r4, #0
ldrne r0, [r8, #0x68]
strne r0, [r4, #0x68]
bne _020D2038
ldr r1, [r8, #0x68]
ldr r0, _020D2054 ; =0x021E167C
str r1, [r0, #0x2c]
_020D2038:
ldr r0, [r5, #0x68]
str r0, [r8, #0x68]
str r8, [r5, #0x68]
bl sub_020D18B0
mov r0, r7
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D2054: .word 0x021E167C
arm_func_end sub_020D1FA0
arm_func_start sub_020D2058
sub_020D2058: ; 0x020D2058
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _020D20F8 ; =0x021E167C
mov r7, r0
mov r6, r1
ldr r8, [r2, #0x2c]
mov r4, #0
bl OS_DisableInterrupts
mov r5, r0
b _020D2084
_020D207C:
mov r4, r8
ldr r8, [r8, #0x68]
_020D2084:
cmp r8, #0
cmpne r8, r7
bne _020D207C
cmp r8, #0
ldrne r0, _020D20FC ; =0x021E16B0
cmpne r8, r0
bne _020D20B0
mov r0, r5
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D20B0:
ldr r0, [r8, #0x70]
cmp r0, r6
beq _020D20E8
cmp r4, #0
ldrne r0, [r7, #0x68]
strne r0, [r4, #0x68]
bne _020D20D8
ldr r1, [r7, #0x68]
ldr r0, _020D20F8 ; =0x021E167C
str r1, [r0, #0x2c]
_020D20D8:
mov r0, r7
str r6, [r7, #0x70]
bl sub_020D1808
bl sub_020D18B0
_020D20E8:
mov r0, r5
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D20F8: .word 0x021E167C
_020D20FC: .word 0x021E16B0
arm_func_end sub_020D2058
arm_func_start sub_020D2100
sub_020D2100: ; 0x020D2100
ldr r0, [r0, #0x70]
bx lr
arm_func_end sub_020D2100
arm_func_start sub_020D2108
sub_020D2108: ; 0x020D2108
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x34
mov r5, r0
add r0, sp, #8
bl sub_020D36AC
ldr r0, _020D2198 ; =0x021E167C
ldr r0, [r0, #8]
ldr r0, [r0]
str r0, [sp, #4]
bl OS_DisableInterrupts
ldr r1, _020D219C ; =0x000082EA
mov r4, r0
umull r0, ip, r5, r1
mov r1, r0, lsr #6
ldr r3, [sp, #4]
add r0, sp, #8
str r0, [r3, #0xb0]
add r2, sp, #4
str r2, [sp]
ldr r3, _020D21A0 ; =sub_020D21A4
mov r2, ip, lsr #6
orr r1, r1, ip, lsl #26
bl sub_020D37E8
ldr r0, [sp, #4]
cmp r0, #0
beq _020D2188
mov r5, #0
_020D2174:
mov r0, r5
bl sub_020D1E7C
ldr r0, [sp, #4]
cmp r0, #0
bne _020D2174
_020D2188:
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #0x34
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020D2198: .word 0x021E167C
_020D219C: .word 0x000082EA
_020D21A0: .word sub_020D21A4
arm_func_end sub_020D2108
arm_func_start sub_020D21A4
sub_020D21A4: ; 0x020D21A4
ldr r2, [r0]
mov r1, #0
str r1, [r0]
ldr ip, _020D21C0 ; =sub_020D1F34
mov r0, r2
str r1, [r2, #0xb0]
bx ip
.align 2, 0
_020D21C0: .word sub_020D1F34
arm_func_end sub_020D21A4
arm_func_start sub_020D21C4
sub_020D21C4: ; 0x020D21C4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020D21E8 ; =0x021E167C
ldr r4, [r1, #0x30]
str r5, [r1, #0x30]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D21E8: .word 0x021E167C
arm_func_end sub_020D21C4
arm_func_start sub_020D21EC
sub_020D21EC: ; 0x020D21EC
stmdb sp!, {r3, lr}
bl sub_020D3A24
_020D21F4:
bl sub_020D3F58
b _020D21F4
arm_func_end sub_020D21EC
arm_func_start sub_020D21FC
sub_020D21FC: ; 0x020D21FC
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r2, _020D222C ; =0x021E167C
mvn r1, #0
ldr r3, [r2, #4]
cmp r3, r1
addlo r1, r3, #1
movlo r4, r3
strlo r1, [r2, #4]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D222C: .word 0x021E167C
arm_func_end sub_020D21FC
arm_func_start sub_020D2230
sub_020D2230: ; 0x020D2230
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020D2260 ; =0x021E167C
mov r4, #0
ldr r3, [r1, #4]
cmp r3, #0
subne r2, r3, #1
movne r4, r3
strne r2, [r1, #4]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D2260: .word 0x021E167C
arm_func_end sub_020D2230
arm_func_start sub_020D2264
sub_020D2264: ; 0x020D2264
str r1, [r0, #0xb4]
bx lr
arm_func_end sub_020D2264
arm_func_start sub_020D226C
sub_020D226C: ; 0x020D226C
add r1, r1, #4
str r1, [r0, #0x40]
str r2, [r0, #0x44]
sub r2, r2, #0x40
tst r2, #4
subne r2, r2, #4
str r2, [r0, #0x38]
ands r1, r1, #1
movne r1, #0x3f
moveq r1, #0x1f
str r1, [r0]
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
str r1, [r0, #0x10]
str r1, [r0, #0x14]
str r1, [r0, #0x18]
str r1, [r0, #0x1c]
str r1, [r0, #0x20]
str r1, [r0, #0x24]
str r1, [r0, #0x28]
str r1, [r0, #0x2c]
str r1, [r0, #0x30]
str r1, [r0, #0x34]
str r1, [r0, #0x3c]
bx lr
arm_func_end sub_020D226C
arm_func_start sub_020D22D8
sub_020D22D8: ; 0x020D22D8
stmdb sp!, {r0, lr}
add r0, r0, #0x48
ldr r1, _020D2320 ; =sub_020D9BF4
blx r1
ldmia sp!, {r0, lr}
add r1, r0, #0
mrs r2, cpsr
str r2, [r1], #4
mov r0, #0xd3
msr cpsr_c, r0
str sp, [r1, #0x40]
msr cpsr_c, r2
mov r0, #1
stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr}
add r0, pc, #0x8 ; =_020D2320
str r0, [r1, #0x3c]
mov r0, #0
bx lr
.align 2, 0
_020D2320: .word sub_020D9BF4
arm_func_end sub_020D22D8
arm_func_start sub_020D2324
sub_020D2324: ; 0x020D2324
stmdb sp!, {r0, lr}
add r0, r0, #0x48
ldr r1, _020D2364 ; =sub_020D9C34
blx r1
ldmia sp!, {r0, lr}
mrs r1, cpsr
bic r1, r1, #0x1f
orr r1, r1, #0xd3
msr cpsr_c, r1
ldr r1, [r0], #4
msr spsr_fsxc, r1
ldr sp, [r0, #0x40]
ldr lr, [r0, #0x3c]
ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
nop
subs pc, lr, #4
.align 2, 0
_020D2364: .word sub_020D9C34
arm_func_end sub_020D2324
arm_func_start sub_020D2368
sub_020D2368: ; 0x020D2368
mov r0, #0
bx lr
arm_func_end sub_020D2368
arm_func_start sub_020D2370
sub_020D2370: ; 0x020D2370
ldr r0, _020D2380 ; =0x82000001
ldr r1, _020D2384 ; =_02110C94
str r0, [r1]
bx lr
.align 2, 0
_020D2380: .word 0x82000001
_020D2384: .word _02110C94
arm_func_end sub_020D2370
arm_func_start sub_020D2388
sub_020D2388: ; 0x020D2388
mov r3, #0
str r3, [r0, #4]
str r3, [r0]
str r3, [r0, #0xc]
str r3, [r0, #8]
str r1, [r0, #0x10]
str r2, [r0, #0x14]
str r3, [r0, #0x18]
str r3, [r0, #0x1c]
bx lr
arm_func_end sub_020D2388
arm_func_start sub_020D23B0
sub_020D23B0: ; 0x020D23B0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
mov r4, r1
mov r7, r2
bl OS_DisableInterrupts
ldr r2, [r5, #0x1c]
ldr r1, [r5, #0x14]
mov r6, r0
cmp r1, r2
bgt _020D240C
and r7, r7, #1
_020D23DC:
cmp r7, #0
bne _020D23F4
mov r0, r6
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D23F4:
mov r0, r5
bl sub_020D1E7C
ldr r2, [r5, #0x1c]
ldr r1, [r5, #0x14]
cmp r1, r2
ble _020D23DC
_020D240C:
ldr r0, [r5, #0x18]
add r0, r0, r2
bl _s32_div_f
ldr r2, [r5, #0x10]
add r0, r5, #8
str r4, [r2, r1, lsl #2]
ldr r1, [r5, #0x1c]
add r1, r1, #1
str r1, [r5, #0x1c]
bl sub_020D1ECC
mov r0, r6
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D23B0
arm_func_start sub_020D2444
sub_020D2444: ; 0x020D2444
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, r1
mov r7, r2
bl OS_DisableInterrupts
ldr r1, [r6, #0x1c]
mov r4, r0
cmp r1, #0
bne _020D2498
and r7, r7, #1
_020D246C:
cmp r7, #0
bne _020D2484
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D2484:
add r0, r6, #8
bl sub_020D1E7C
ldr r0, [r6, #0x1c]
cmp r0, #0
beq _020D246C
_020D2498:
cmp r5, #0
beq _020D24B0
ldr r1, [r6, #0x10]
ldr r0, [r6, #0x18]
ldr r0, [r1, r0, lsl #2]
str r0, [r5]
_020D24B0:
ldr r0, [r6, #0x18]
ldr r1, [r6, #0x14]
add r0, r0, #1
bl _s32_div_f
str r1, [r6, #0x18]
ldr r1, [r6, #0x1c]
mov r0, r6
sub r1, r1, #1
str r1, [r6, #0x1c]
bl sub_020D1ECC
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D2444
arm_func_start sub_020D24E8
sub_020D24E8: ; 0x020D24E8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, r1
mov r7, r2
bl OS_DisableInterrupts
ldr r1, [r6, #0x14]
ldr r2, [r6, #0x1c]
mov r4, r0
cmp r1, r2
bgt _020D2544
and r7, r7, #1
_020D2514:
cmp r7, #0
bne _020D252C
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D252C:
mov r0, r6
bl sub_020D1E7C
ldr r1, [r6, #0x14]
ldr r0, [r6, #0x1c]
cmp r1, r0
ble _020D2514
_020D2544:
ldr r0, [r6, #0x18]
add r0, r0, r1
sub r0, r0, #1
bl _s32_div_f
str r1, [r6, #0x18]
ldr r0, [r6, #0x10]
str r5, [r0, r1, lsl #2]
ldr r1, [r6, #0x1c]
add r0, r6, #8
add r1, r1, #1
str r1, [r6, #0x1c]
bl sub_020D1ECC
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D24E8
arm_func_start sub_020D2584
sub_020D2584: ; 0x020D2584
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, r1
mov r7, r2
bl OS_DisableInterrupts
ldr r1, [r6, #0x1c]
mov r4, r0
cmp r1, #0
bne _020D25D8
and r7, r7, #1
_020D25AC:
cmp r7, #0
bne _020D25C4
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D25C4:
add r0, r6, #8
bl sub_020D1E7C
ldr r0, [r6, #0x1c]
cmp r0, #0
beq _020D25AC
_020D25D8:
cmp r5, #0
beq _020D25F0
ldr r1, [r6, #0x10]
ldr r0, [r6, #0x18]
ldr r0, [r1, r0, lsl #2]
str r0, [r5]
_020D25F0:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D2584
arm_func_start sub_020D2600
sub_020D2600: ; 0x020D2600
mov r1, #0
str r1, [r0, #4]
str r1, [r0]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
arm_func_end sub_020D2600
arm_func_start OS_LockMutex
OS_LockMutex: ; 0x020D2618
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020D2698 ; =0x021E16A0
mov r4, r0
ldr r7, [r1, #4]
mov r6, #0
_020D2634:
ldr r0, [r5, #8]
cmp r0, #0
bne _020D2660
str r7, [r5, #8]
ldr r1, [r5, #0xc]
mov r0, r7
add r2, r1, #1
mov r1, r5
str r2, [r5, #0xc]
bl sub_020D27A8
b _020D268C
_020D2660:
cmp r0, r7
bne _020D2678
ldr r0, [r5, #0xc]
add r0, r0, #1
str r0, [r5, #0xc]
b _020D268C
_020D2678:
mov r0, r5
str r5, [r7, #0x84]
bl sub_020D1E7C
str r6, [r7, #0x84]
b _020D2634
_020D268C:
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D2698: .word 0x021E16A0
arm_func_end OS_LockMutex
arm_func_start OS_UnlockMutex
OS_UnlockMutex: ; 0x020D269C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020D26F4 ; =0x021E16A0
mov r4, r0
ldr r0, [r1, #4]
ldr r1, [r5, #8]
cmp r1, r0
bne _020D26E8
ldr r1, [r5, #0xc]
subs r1, r1, #1
str r1, [r5, #0xc]
bne _020D26E8
mov r1, r5
bl sub_020D27CC
mov r1, #0
mov r0, r5
str r1, [r5, #8]
bl sub_020D1ECC
_020D26E8:
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D26F4: .word 0x021E16A0
arm_func_end OS_UnlockMutex
arm_func_start sub_020D26F8
sub_020D26F8: ; 0x020D26F8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, [r5, #0x88]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r4, #0
_020D2710:
add r0, r5, #0x88
bl sub_020D17D8
str r4, [r0, #0xc]
str r4, [r0, #8]
bl sub_020D1ECC
ldr r0, [r5, #0x88]
cmp r0, #0
bne _020D2710
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D26F8
arm_func_start OS_TryLockMutex
OS_TryLockMutex: ; 0x020D2734
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r2, [r5, #8]
ldr r1, _020D27A4 ; =0x021E16A0
mov r4, r0
cmp r2, #0
ldr r0, [r1, #4]
bne _020D2778
str r0, [r5, #8]
ldr r2, [r5, #0xc]
mov r1, r5
add r2, r2, #1
str r2, [r5, #0xc]
bl sub_020D27A8
mov r6, #1
b _020D2794
_020D2778:
cmp r2, r0
movne r6, #0
bne _020D2794
ldr r0, [r5, #0xc]
mov r6, #1
add r0, r0, #1
str r0, [r5, #0xc]
_020D2794:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D27A4: .word 0x021E16A0
arm_func_end OS_TryLockMutex
arm_func_start sub_020D27A8
sub_020D27A8: ; 0x020D27A8
ldr r2, [r0, #0x8c]
cmp r2, #0
streq r1, [r0, #0x88]
strne r1, [r2, #0x10]
str r2, [r1, #0x14]
mov r2, #0
str r2, [r1, #0x10]
str r1, [r0, #0x8c]
bx lr
arm_func_end sub_020D27A8
arm_func_start sub_020D27CC
sub_020D27CC: ; 0x020D27CC
ldr r2, [r1, #0x10]
ldr r1, [r1, #0x14]
cmp r2, #0
streq r1, [r0, #0x8c]
strne r1, [r2, #0x14]
cmp r1, #0
streq r2, [r0, #0x88]
strne r2, [r1, #0x10]
bx lr
arm_func_end sub_020D27CC
arm_func_start sub_020D27F0
sub_020D27F0: ; 0x020D27F0
mov r0, #0
mcr p15, 0, r0, c7, c6, 0
bx lr
arm_func_end sub_020D27F0
arm_func_start sub_020D27FC
sub_020D27FC: ; 0x020D27FC
mov r1, #0
_020D2800:
mov r0, #0
_020D2804:
orr r2, r1, r0
mcr p15, 0, r2, c7, c10, 2
add r0, r0, #0x20
cmp r0, #0x400
blt _020D2804
add r1, r1, #0x40000000
cmp r1, #0
bne _020D2800
bx lr
arm_func_end sub_020D27FC
arm_func_start sub_020D2828
sub_020D2828: ; 0x020D2828
mov ip, #0
mov r1, #0
_020D2830:
mov r0, #0
_020D2834:
orr r2, r1, r0
mcr p15, 0, ip, c7, c10, 4
mcr p15, 0, r2, c7, c14, 2
add r0, r0, #0x20
cmp r0, #0x400
blt _020D2834
add r1, r1, #0x40000000
cmp r1, #0
bne _020D2830
bx lr
arm_func_end sub_020D2828
arm_func_start sub_020D285C
sub_020D285C: ; 0x020D285C
add r1, r1, r0
bic r0, r0, #0x1f
_020D2864:
mcr p15, 0, r0, c7, c6, 1
add r0, r0, #0x20
cmp r0, r1
blt _020D2864
bx lr
arm_func_end sub_020D285C
arm_func_start sub_020D2878
sub_020D2878: ; 0x020D2878
add r1, r1, r0
bic r0, r0, #0x1f
_020D2880:
mcr p15, 0, r0, c7, c10, 1
add r0, r0, #0x20
cmp r0, r1
blt _020D2880
bx lr
arm_func_end sub_020D2878
arm_func_start DC_FlushRange
DC_FlushRange: ; 0x020D2894
mov ip, #0
add r1, r1, r0
bic r0, r0, #0x1f
_020D28A0:
mcr p15, 0, ip, c7, c10, 4
mcr p15, 0, r0, c7, c14, 1
add r0, r0, #0x20
cmp r0, r1
blt _020D28A0
bx lr
arm_func_end DC_FlushRange
arm_func_start sub_020D28B8
sub_020D28B8: ; 0x020D28B8
mov r0, #0
mcr p15, 0, r0, c7, c10, 4
bx lr
arm_func_end sub_020D28B8
arm_func_start sub_020D28C4
sub_020D28C4: ; 0x020D28C4
mov r0, #0
mcr p15, 0, r0, c7, c5, 0
bx lr
arm_func_end sub_020D28C4
arm_func_start IC_InvalidateRange
IC_InvalidateRange: ; 0x020D28D0
add r1, r1, r0
bic r0, r0, #0x1f
_020D28D8:
mcr p15, 0, r0, c7, c5, 1
add r0, r0, #0x20
cmp r0, r1
blt _020D28D8
bx lr
arm_func_end IC_InvalidateRange
arm_func_start sub_020D28EC
sub_020D28EC: ; 0x020D28EC
mov ip, #0x4000000
ldr r1, [ip, #0x208]
str ip, [ip, #0x208]
_020D28F8:
ldrh r0, [ip, #6]
cmp r0, #0
bne _020D28F8
str r1, [ip, #0x208]
bx lr
arm_func_end sub_020D28EC
arm_func_start sub_020D290C
sub_020D290C: ; 0x020D290C
stmdb sp!, {r3, lr}
bl sub_020D2954
bl sub_020D6548
bl sub_020D1294
bl sub_020D2A58
bl sub_020D0FEC
bl sub_020D1260
bl sub_020D31A0
bl sub_020D502C
bl sub_020D39DC
bl sub_020D3CFC
bl sub_020D1978
bl sub_020D3AD0
bl sub_020E16E4
bl sub_020DD84C
bl sub_020DADE8
bl sub_020D28EC
ldmia sp!, {r3, pc}
arm_func_end sub_020D290C
arm_func_start sub_020D2954
sub_020D2954: ; 0x020D2954
stmdb sp!, {r3, lr}
ldr r1, _020D2A54 ; =0x021E18F8
ldr r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r2, #1
mov r0, #0
str r2, [r1]
bl sub_020D2AEC
mov r1, r0
mov r0, #0
bl sub_020D2C78
mov r0, #0
bl sub_020D2BD0
mov r1, r0
mov r0, #0
bl sub_020D2C8C
mov r0, #2
mov r1, #0
bl sub_020D2C8C
mov r0, #2
mov r1, #0
bl sub_020D2C78
mov r0, #3
bl sub_020D2AEC
mov r1, r0
mov r0, #3
bl sub_020D2C78
mov r0, #3
bl sub_020D2BD0
mov r1, r0
mov r0, #3
bl sub_020D2C8C
mov r0, #4
bl sub_020D2AEC
mov r1, r0
mov r0, #4
bl sub_020D2C78
mov r0, #4
bl sub_020D2BD0
mov r1, r0
mov r0, #4
bl sub_020D2C8C
mov r0, #5
bl sub_020D2AEC
mov r1, r0
mov r0, #5
bl sub_020D2C78
mov r0, #5
bl sub_020D2BD0
mov r1, r0
mov r0, #5
bl sub_020D2C8C
mov r0, #6
bl sub_020D2AEC
mov r1, r0
mov r0, #6
bl sub_020D2C78
mov r0, #6
bl sub_020D2BD0
mov r1, r0
mov r0, #6
bl sub_020D2C8C
ldmia sp!, {r3, pc}
.align 2, 0
_020D2A54: .word 0x021E18F8
arm_func_end sub_020D2954
arm_func_start sub_020D2A58
sub_020D2A58: ; 0x020D2A58
stmdb sp!, {r3, lr}
mov r0, #2
bl sub_020D2AEC
mov r1, r0
mov r0, #2
bl sub_020D2C78
mov r0, #2
bl sub_020D2BD0
mov r1, r0
mov r0, #2
bl sub_020D2C8C
ldr r0, _020D2AB8 ; =0x021E18F8
ldr r0, [r0, #4]
cmp r0, #0
beq _020D2AA4
bl sub_020D2370
and r0, r0, #3
cmp r0, #1
ldmneia sp!, {r3, pc}
_020D2AA4:
ldr r0, _020D2ABC ; =0x0200002B
bl sub_020D3190
ldr r0, _020D2AC0 ; =0x023E0021
bl sub_020D3198
ldmia sp!, {r3, pc}
.align 2, 0
_020D2AB8: .word 0x021E18F8
_020D2ABC: .word 0x0200002B
_020D2AC0: .word 0x023E0021
arm_func_end sub_020D2A58
arm_func_start sub_020D2AC4
sub_020D2AC4: ; 0x020D2AC4
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
ldr r0, [r0, #0xdc4]
bx lr
arm_func_end sub_020D2AC4
arm_func_start sub_020D2AD8
sub_020D2AD8: ; 0x020D2AD8
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
ldr r0, [r0, #0xda0]
bx lr
arm_func_end sub_020D2AD8
arm_func_start sub_020D2AEC
sub_020D2AEC: ; 0x020D2AEC
stmdb sp!, {r3, lr}
cmp r0, #6
addls pc, pc, r0, lsl #2
b _020D2BA8
_020D2AFC: ; jump table
b _020D2B18 ; case 0
b _020D2BA8 ; case 1
b _020D2B20 ; case 2
b _020D2B50 ; case 3
b _020D2B58 ; case 4
b _020D2B98 ; case 5
b _020D2BA0 ; case 6
_020D2B18:
ldr r0, _020D2BB0 ; =0x023E0000
ldmia sp!, {r3, pc}
_020D2B20:
ldr r0, _020D2BB4 ; =0x021E18F8
ldr r0, [r0, #4]
cmp r0, #0
beq _020D2B40
bl sub_020D2370
and r0, r0, #3
cmp r0, #1
bne _020D2B48
_020D2B40:
mov r0, #0
ldmia sp!, {r3, pc}
_020D2B48:
mov r0, #0x2700000
ldmia sp!, {r3, pc}
_020D2B50:
mov r0, #0x2000000
ldmia sp!, {r3, pc}
_020D2B58:
ldr r0, _020D2BB8 ; =OSi_IntrTable
ldr r1, _020D2BBC ; =0x00000000
ldr r2, _020D2BC0 ; =0x00000800
add r3, r0, #0x3f80
cmp r1, #0
sub r2, r3, r2
bne _020D2B84
ldr r1, _020D2BC4 ; =0x027E0080
cmp r0, r1
movlo r0, r1
ldmia sp!, {r3, pc}
_020D2B84:
cmp r1, #0
ldrlt r0, _020D2BC4 ; =0x027E0080
sublt r0, r0, r1
subge r0, r2, r1
ldmia sp!, {r3, pc}
_020D2B98:
ldr r0, _020D2BC8 ; =0x027FF680
ldmia sp!, {r3, pc}
_020D2BA0:
ldr r0, _020D2BCC ; =0x037F8000
ldmia sp!, {r3, pc}
_020D2BA8:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020D2BB0: .word 0x023E0000
_020D2BB4: .word 0x021E18F8
_020D2BB8: .word OSi_IntrTable
_020D2BBC: .word 0x00000000
_020D2BC0: .word 0x00000800
_020D2BC4: .word 0x027E0080
_020D2BC8: .word 0x027FF680
_020D2BCC: .word 0x037F8000
arm_func_end sub_020D2AEC
arm_func_start sub_020D2BD0
sub_020D2BD0: ; 0x020D2BD0
stmdb sp!, {r3, lr}
cmp r0, #6
addls pc, pc, r0, lsl #2
b _020D2C54
_020D2BE0: ; jump table
b _020D2BFC ; case 0
b _020D2C54 ; case 1
b _020D2C04 ; case 2
b _020D2C34 ; case 3
b _020D2C3C ; case 4
b _020D2C44 ; case 5
b _020D2C4C ; case 6
_020D2BFC:
ldr r0, _020D2C5C ; =0x0226EC40
ldmia sp!, {r3, pc}
_020D2C04:
ldr r0, _020D2C60 ; =0x021E18F8
ldr r0, [r0, #4]
cmp r0, #0
beq _020D2C24
bl sub_020D2370
and r0, r0, #3
cmp r0, #1
bne _020D2C2C
_020D2C24:
mov r0, #0
ldmia sp!, {r3, pc}
_020D2C2C:
ldr r0, _020D2C64 ; =0x023E0000
ldmia sp!, {r3, pc}
_020D2C34:
ldr r0, _020D2C68 ; =0x01FF8620
ldmia sp!, {r3, pc}
_020D2C3C:
ldr r0, _020D2C6C ; =0x027E0080
ldmia sp!, {r3, pc}
_020D2C44:
ldr r0, _020D2C70 ; =0x027FF000
ldmia sp!, {r3, pc}
_020D2C4C:
ldr r0, _020D2C74 ; =0x037F8000
ldmia sp!, {r3, pc}
_020D2C54:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020D2C5C: .word 0x0226EC40
_020D2C60: .word 0x021E18F8
_020D2C64: .word 0x023E0000
_020D2C68: .word 0x01FF8620
_020D2C6C: .word 0x027E0080
_020D2C70: .word 0x027FF000
_020D2C74: .word 0x037F8000
arm_func_end sub_020D2BD0
arm_func_start sub_020D2C78
sub_020D2C78: ; 0x020D2C78
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
str r1, [r0, #0xdc4]
bx lr
arm_func_end sub_020D2C78
arm_func_start sub_020D2C8C
sub_020D2C8C: ; 0x020D2C8C
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
str r1, [r0, #0xda0]
bx lr
arm_func_end sub_020D2C8C
arm_func_start OS_AllocFromArenaLo
OS_AllocFromArenaLo: ; 0x020D2CA0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_020D2AD8
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
add r0, r0, r5
sub r1, r5, #1
mvn r2, r1
sub r0, r0, #1
and r4, r2, r0
add r0, r4, r6
add r0, r0, r5
sub r1, r0, #1
mov r0, r7
and r5, r2, r1
bl sub_020D2AC4
cmp r5, r0
movhi r0, #0
ldmhiia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r7
mov r1, r5
bl sub_020D2C8C
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end OS_AllocFromArenaLo
arm_func_start OS_AllocFromArenaHi
OS_AllocFromArenaHi: ; 0x020D2D0C
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r6, r1
mov r5, r2
bl sub_020D2AC4
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
sub r1, r5, #1
mvn r2, r1
and r0, r0, r2
sub r1, r0, r6
mov r0, r4
and r5, r1, r2
bl sub_020D2AD8
cmp r5, r0
movlo r0, #0
ldmloia sp!, {r4, r5, r6, pc}
mov r0, r4
mov r1, r5
bl sub_020D2C78
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
arm_func_end OS_AllocFromArenaHi
arm_func_start sub_020D2D68
sub_020D2D68: ; 0x020D2D68
str r0, [r1, #4]
mov r2, #0
str r2, [r1]
cmp r0, #0
strne r1, [r0]
mov r0, r1
bx lr
arm_func_end sub_020D2D68
arm_func_start sub_020D2D84
sub_020D2D84: ; 0x020D2D84
ldr r3, [r1, #4]
cmp r3, #0
ldrne r2, [r1]
strne r2, [r3]
ldr r2, [r1]
cmp r2, #0
ldreq r0, [r1, #4]
ldrne r1, [r1, #4]
strne r1, [r2, #4]
bx lr
arm_func_end sub_020D2D84
arm_func_start sub_020D2DAC
sub_020D2DAC: ; 0x020D2DAC
stmdb sp!, {r3, lr}
mov lr, r0
cmp r0, #0
mov ip, #0
beq _020D2DD8
_020D2DC0:
cmp r1, lr
bls _020D2DD8
mov ip, lr
ldr lr, [lr, #4]
cmp lr, #0
bne _020D2DC0
_020D2DD8:
stmia r1, {ip, lr}
cmp lr, #0
beq _020D2E14
str r1, [lr]
ldr r3, [r1, #8]
add r2, r1, r3
cmp r2, lr
bne _020D2E14
ldr r2, [lr, #8]
add r2, r3, r2
str r2, [r1, #8]
ldr lr, [lr, #4]
str lr, [r1, #4]
cmp lr, #0
strne r1, [lr]
_020D2E14:
cmp ip, #0
beq _020D2E4C
str r1, [ip, #4]
ldr r2, [ip, #8]
add r3, ip, r2
cmp r3, r1
ldmneia sp!, {r3, pc}
ldr r1, [r1, #8]
cmp lr, #0
add r1, r2, r1
str r1, [ip, #8]
str lr, [ip, #4]
strne ip, [lr]
ldmia sp!, {r3, pc}
_020D2E4C:
mov r0, r1
ldmia sp!, {r3, pc}
arm_func_end sub_020D2DAC
arm_func_start OS_AllocFromHeap
OS_AllocFromHeap: ; 0x020D2E54
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r0
mov r5, r1
mov r7, r2
bl OS_DisableInterrupts
ldr r1, _020D2F58 ; =0x021E1900
mov r6, r0
ldr r1, [r1, r4, lsl #2]
cmp r1, #0
bne _020D2E88
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D2E88:
cmp r5, #0
ldrlt r5, [r1]
ldr r1, [r1, #0x10]
mov r0, #0xc
mla r4, r5, r0, r1
ldr r0, [r4, #4]
add r1, r7, #0x3f
mov r5, r0
cmp r0, #0
bic r7, r1, #0x1f
beq _020D2ECC
_020D2EB4:
ldr r1, [r5, #8]
cmp r7, r1
ble _020D2ECC
ldr r5, [r5, #4]
cmp r5, #0
bne _020D2EB4
_020D2ECC:
cmp r5, #0
bne _020D2EE4
mov r0, r6
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D2EE4:
ldr r1, [r5, #8]
sub r1, r1, r7
cmp r1, #0x40
bhs _020D2F04
mov r1, r5
bl sub_020D2D84
str r0, [r4, #4]
b _020D2F38
_020D2F04:
str r7, [r5, #8]
add r2, r5, r7
str r1, [r2, #8]
ldr r0, [r5]
str r0, [r5, r7]
ldr r0, [r5, #4]
str r0, [r2, #4]
cmp r0, #0
strne r2, [r0]
ldr r0, [r2]
cmp r0, #0
strne r2, [r0, #4]
streq r2, [r4, #4]
_020D2F38:
ldr r0, [r4, #8]
mov r1, r5
bl sub_020D2D68
str r0, [r4, #8]
mov r0, r6
bl OS_RestoreInterrupts
add r0, r5, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D2F58: .word 0x021E1900
arm_func_end OS_AllocFromHeap
arm_func_start OS_FreeToHeap
OS_FreeToHeap: ; 0x020D2F5C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl OS_DisableInterrupts
ldr r1, _020D2FC0 ; =0x021E1900
mov r4, r0
ldr r0, [r1, r7, lsl #2]
cmp r6, #0
ldrlt r6, [r0]
ldr r1, [r0, #0x10]
mov r0, #0xc
mla r7, r6, r0, r1
sub r5, r5, #0x20
ldr r0, [r7, #8]
mov r1, r5
bl sub_020D2D84
str r0, [r7, #8]
ldr r0, [r7, #4]
mov r1, r5
bl sub_020D2DAC
str r0, [r7, #4]
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D2FC0: .word 0x021E1900
arm_func_end OS_FreeToHeap
arm_func_start sub_020D2FC4
sub_020D2FC4: ; 0x020D2FC4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r5, r1
bl OS_DisableInterrupts
ldr r1, _020D2FF0 ; =0x021E1900
ldr r1, [r1, r4, lsl #2]
ldr r4, [r1]
str r5, [r1]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D2FF0: .word 0x021E1900
arm_func_end sub_020D2FC4
arm_func_start sub_020D2FF4
sub_020D2FF4: ; 0x020D2FF4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r5, r1
mov r4, r2
mov r6, r3
bl OS_DisableInterrupts
ldr r2, _020D3098 ; =0x021E1900
mov r1, #0xc
str r5, [r2, r7, lsl #2]
add r2, r5, #0x14
str r2, [r5, #0x10]
mul r1, r6, r1
str r6, [r5, #4]
cmp r6, #0
mov lr, #0
ble _020D3068
mov r6, lr
mvn ip, #0
mov r3, lr
_020D3040:
ldr r2, [r5, #0x10]
add lr, lr, #1
str ip, [r2, r6]
add r2, r2, r6
str r3, [r2, #8]
str r3, [r2, #4]
ldr r2, [r5, #4]
add r6, r6, #0xc
cmp lr, r2
blt _020D3040
_020D3068:
mvn r2, #0
str r2, [r5]
ldr r3, [r5, #0x10]
bic r2, r4, #0x1f
add r1, r3, r1
add r1, r1, #0x1f
bic r1, r1, #0x1f
str r1, [r5, #8]
str r2, [r5, #0xc]
bl OS_RestoreInterrupts
ldr r0, [r5, #8]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D3098: .word 0x021E1900
arm_func_end sub_020D2FF4
arm_func_start sub_020D309C
sub_020D309C: ; 0x020D309C
ldr r1, _020D30AC ; =0x021E1900
mov r2, #0
str r2, [r1, r0, lsl #2]
bx lr
.align 2, 0
_020D30AC: .word 0x021E1900
arm_func_end sub_020D309C
arm_func_start sub_020D30B0
sub_020D30B0: ; 0x020D30B0
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r6, r1
mov r5, r2
bl OS_DisableInterrupts
ldr r2, _020D3144 ; =0x021E1900
add r1, r6, #0x1f
ldr r2, [r2, r4, lsl #2]
bic r6, r1, #0x1f
ldr ip, [r2, #4]
bic r5, r5, #0x1f
cmp ip, #0
mov r4, #0
ble _020D3138
ldr r3, [r2, #0x10]
_020D30EC:
ldr r1, [r3]
cmp r1, #0
bge _020D3128
sub r1, r5, r6
str r1, [r3]
mov r2, #0
str r2, [r6]
str r2, [r6, #4]
ldr r1, [r3]
str r1, [r6, #8]
str r6, [r3, #4]
str r2, [r3, #8]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
_020D3128:
add r4, r4, #1
cmp r4, ip
add r3, r3, #0xc
blt _020D30EC
_020D3138:
bl OS_RestoreInterrupts
mvn r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D3144: .word 0x021E1900
arm_func_end sub_020D30B0
arm_func_start sub_020D3148
sub_020D3148: ; 0x020D3148
mrc p15, 0, r0, c9, c1, 0
ldr r1, _020D3158 ; =0xFFFFF000
and r0, r0, r1
bx lr
.align 2, 0
_020D3158: .word 0xFFFFF000
arm_func_end sub_020D3148
arm_func_start sub_020D315C
sub_020D315C: ; 0x020D315C
mrc p15, 0, r0, c1, c0, 0
orr r0, r0, #1
mcr p15, 0, r0, c1, c0, 0
bx lr
arm_func_end sub_020D315C
arm_func_start sub_020D316C
sub_020D316C: ; 0x020D316C
mrc p15, 0, r0, c1, c0, 0
bic r0, r0, #1
mcr p15, 0, r0, c1, c0, 0
bx lr
arm_func_end sub_020D316C
arm_func_start sub_020D317C
sub_020D317C: ; 0x020D317C
mrc p15, 0, r2, c5, c0, 2
bic r2, r2, r0
orr r2, r2, r1
mcr p15, 0, r2, c5, c0, 2
bx lr
arm_func_end sub_020D317C
arm_func_start sub_020D3190
sub_020D3190: ; 0x020D3190
mcr p15, 0, r0, c6, c1, 0
bx lr
arm_func_end sub_020D3190
arm_func_start sub_020D3198
sub_020D3198: ; 0x020D3198
mcr p15, 0, r0, c6, c2, 0
bx lr
arm_func_end sub_020D3198
arm_func_start sub_020D31A0
sub_020D31A0: ; 0x020D31A0
ldr r0, _020D3200 ; =0x027FFD9C
ldr r1, [r0]
cmp r1, #0x2600000
blo _020D31C0
cmp r1, #0x2800000
ldrlo r0, _020D3204 ; =0x021E1924
strlo r1, [r0]
blo _020D31CC
_020D31C0:
ldr r0, _020D3204 ; =0x021E1924
mov r1, #0
str r1, [r0]
_020D31CC:
ldr r0, _020D3204 ; =0x021E1924
ldr r0, [r0]
cmp r0, #0
bne _020D31F0
ldr r2, _020D3208 ; =sub_020D3210
ldr r1, _020D3200 ; =0x027FFD9C
ldr r0, _020D320C ; =0x027E3000
str r2, [r1]
str r2, [r0, #0xfdc]
_020D31F0:
ldr r0, _020D3204 ; =0x021E1924
mov r1, #0
str r1, [r0, #8]
bx lr
.align 2, 0
_020D3200: .word 0x027FFD9C
_020D3204: .word 0x021E1924
_020D3208: .word sub_020D3210
_020D320C: .word 0x027E3000
arm_func_end sub_020D31A0
arm_func_start sub_020D3210
sub_020D3210: ; 0x020D3210
ldr ip, _020D327C ; =0x021E1924
ldr ip, [ip]
cmp ip, #0
movne lr, pc
bxne ip
ldr ip, _020D3280 ; =0x02000000
stmdb ip!, {r0, r1, r2, r3, sp, lr}
and r0, sp, #1
mov sp, ip
mrs r1, cpsr
and r1, r1, #0x1f
teq r1, #0x17
bne _020D324C
bl sub_020D3284
b _020D3258
_020D324C:
teq r1, #0x1b
bne _020D3258
bl sub_020D3284
_020D3258:
ldr ip, _020D327C ; =0x021E1924
ldr ip, [ip]
cmp ip, #0
_020D3264:
beq _020D3264
_020D3268:
nop
b _020D3268
_020D3270: ; 0x020D3270
ldmia sp!, {r0, r1, r2, r3, ip, lr}
mov sp, ip
bx lr
.align 2, 0
_020D327C: .word 0x021E1924
_020D3280: .word 0x02000000
arm_func_end sub_020D3210
arm_func_start sub_020D3284
sub_020D3284: ; 0x020D3284
stmdb sp!, {r0, lr}
bl sub_020D3298
bl sub_020D3328
ldmia sp!, {r0, lr}
bx lr
arm_func_end sub_020D3284
arm_func_start sub_020D3298
sub_020D3298: ; 0x020D3298
ldr r1, _020D3324 ; =0x021E1950
mrs r2, cpsr
str r2, [r1, #0x74]
str r0, [r1, #0x6c]
ldr r0, [ip]
str r0, [r1, #4]
ldr r0, [ip, #4]
str r0, [r1, #8]
ldr r0, [ip, #8]
str r0, [r1, #0xc]
ldr r0, [ip, #0xc]
str r0, [r1, #0x10]
ldr r2, [ip, #0x10]
bic r2, r2, #1
add r0, r1, #0x14
stmia r0, {r4, r5, r6, r7, r8, sb, sl, fp}
str ip, [r1, #0x70]
ldr r0, [r2]
str r0, [r1, #0x64]
ldr r3, [r2, #4]
str r3, [r1]
ldr r0, [r2, #8]
str r0, [r1, #0x34]
ldr r0, [r2, #0xc]
str r0, [r1, #0x40]
mrs r0, cpsr
orr r3, r3, #0x80
bic r3, r3, #0x20
msr cpsr_fsxc, r3
str sp, [r1, #0x38]
str lr, [r1, #0x3c]
mrs r2, spsr
str r2, [r1, #0x7c]
msr cpsr_fsxc, r0
bx lr
.align 2, 0
_020D3324: .word 0x021E1950
arm_func_end sub_020D3298
arm_func_start sub_020D3328
sub_020D3328: ; 0x020D3328
stmdb sp!, {r3, lr}
ldr r0, _020D338C ; =0x021E1924
ldr r0, [r0, #8]
cmp r0, #0
ldmeqia sp!, {r3, pc}
mrs r2, cpsr
mov r0, sp
ldr r1, _020D3390 ; =0x0000009F
msr cpsr_fsxc, r1
mov r1, sp
mov sp, r0
stmdb sp!, {r1, r2}
bl sub_020D315C
ldr r0, _020D3394 ; =0x021E1950
ldr r1, _020D3398 ; =0x021E1928
ldr r1, [r1]
ldr ip, _020D339C ; =0x021E192C
ldr ip, [ip]
ldr lr, _020D33A0 ; =sub_020D3378
bx ip
arm_func_end sub_020D3328
arm_func_start sub_020D3378
sub_020D3378: ; 0x020D3378
bl sub_020D316C
ldmia sp!, {r1, r2}
mov sp, r1
msr cpsr_fsxc, r2
ldmia sp!, {r3, pc}
.align 2, 0
_020D338C: .word 0x021E1924
_020D3390: .word 0x0000009F
_020D3394: .word 0x021E1950
_020D3398: .word 0x021E1928
_020D339C: .word 0x021E192C
_020D33A0: .word sub_020D3378
arm_func_end sub_020D3378
arm_func_start sub_020D33A4
sub_020D33A4: ; 0x020D33A4
ldr r1, _020D33BC ; =0x021E19D0
mov r2, #1
ldrh r3, [r1]
orr r0, r3, r2, lsl r0
strh r0, [r1]
bx lr
.align 2, 0
_020D33BC: .word 0x021E19D0
arm_func_end sub_020D33A4
arm_func_start sub_020D33C0
sub_020D33C0: ; 0x020D33C0
stmdb sp!, {r3, lr}
ldr r1, _020D342C ; =0x021E19D4
ldrh r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r2, #1
mov r0, #0
strh r2, [r1]
bl sub_020D33A4
ldr r0, _020D342C ; =0x021E19D4
mov r2, #0
str r2, [r0, #8]
ldr r3, _020D3430 ; =0x04000102
str r2, [r0, #0xc]
strh r2, [r3]
ldr r1, _020D3434 ; =sub_020D3448
strh r2, [r3, #-2]
mov r2, #0xc1
mov r0, #8
strh r2, [r3]
bl OS_SetIrqFunction
mov r0, #8
bl OS_EnableIrqMask
ldr r0, _020D342C ; =0x021E19D4
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020D342C: .word 0x021E19D4
_020D3430: .word 0x04000102
_020D3434: .word sub_020D3448
arm_func_end sub_020D33C0
arm_func_start sub_020D3438
sub_020D3438: ; 0x020D3438
ldr r0, _020D3444 ; =0x021E19D4
ldrh r0, [r0]
bx lr
.align 2, 0
_020D3444: .word 0x021E19D4
arm_func_end sub_020D3438
arm_func_start sub_020D3448
sub_020D3448: ; 0x020D3448
ldr r0, _020D34A0 ; =0x021E19D4
mov r3, #0
ldr r2, [r0, #8]
ldr r1, [r0, #0xc]
adds r2, r2, #1
str r2, [r0, #8]
adc r1, r1, #0
str r1, [r0, #0xc]
ldr r1, [r0, #4]
cmp r1, #0
beq _020D348C
ldr r2, _020D34A4 ; =0x04000102
mov r1, #0xc1
strh r3, [r2]
strh r3, [r2, #-2]
strh r1, [r2]
str r3, [r0, #4]
_020D348C:
ldr ip, _020D34A8 ; =sub_020D1160
mov r0, #0
ldr r1, _020D34AC ; =sub_020D3448
mov r2, r0
bx ip
.align 2, 0
_020D34A0: .word 0x021E19D4
_020D34A4: .word 0x04000102
_020D34A8: .word sub_020D1160
_020D34AC: .word sub_020D3448
arm_func_end sub_020D3448
arm_func_start sub_020D34B0
sub_020D34B0: ; 0x020D34B0
stmdb sp!, {lr}
sub sp, sp, #0xc
bl OS_DisableInterrupts
ldr lr, _020D3544 ; =0x04000100
ldr r2, _020D3548 ; =0x0000FFFF
ldrh ip, [lr]
ldr r3, _020D354C ; =0x021E19D4
sub r1, r2, #0x10000
strh ip, [sp]
ldr ip, [r3, #8]
ldr r3, [r3, #0xc]
and ip, ip, r1
and r1, r3, r2
str ip, [sp, #4]
str r1, [sp, #8]
ldr r1, [lr, #0x114]
tst r1, #8
beq _020D351C
ldrh r1, [sp]
tst r1, #0x8000
bne _020D351C
ldr r2, [sp, #4]
ldr r1, [sp, #8]
adds r2, r2, #1
adc r1, r1, #0
str r2, [sp, #4]
str r1, [sp, #8]
_020D351C:
bl OS_RestoreInterrupts
ldr r2, [sp, #4]
ldr r1, [sp, #8]
ldrh r0, [sp]
mov r1, r1, lsl #0x10
orr r1, r1, r2, lsr #16
orr r1, r1, r0, asr #31
orr r0, r0, r2, lsl #16
add sp, sp, #0xc
ldmia sp!, {pc}
.align 2, 0
_020D3544: .word 0x04000100
_020D3548: .word 0x0000FFFF
_020D354C: .word 0x021E19D4
arm_func_end sub_020D34B0
arm_func_start sub_020D3550
sub_020D3550: ; 0x020D3550
ldr r0, _020D355C ; =0x04000100
ldrh r0, [r0]
bx lr
.align 2, 0
_020D355C: .word 0x04000100
arm_func_end sub_020D3550
arm_func_start sub_020D3560
sub_020D3560: ; 0x020D3560
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r1
bl OS_DisableInterrupts
mov r3, r5, lsr #0x10
mov ip, #1
rsb r1, ip, #0x10000
ldr lr, _020D35C4 ; =0x04000214
mov r6, #8
ldr r2, _020D35C8 ; =0x021E19D4
str r6, [lr]
str ip, [r2, #4]
orr r3, r3, r4, lsl #16
str r3, [r2, #8]
mov r4, r4, lsr #0x10
ldr r3, _020D35CC ; =0x04000102
str r4, [r2, #0xc]
mov r2, #0
strh r2, [r3]
and r1, r5, r1
strh r1, [r3, #-2]
mov r1, #0xc1
strh r1, [r3]
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D35C4: .word 0x04000214
_020D35C8: .word 0x021E19D4
_020D35CC: .word 0x04000102
arm_func_end sub_020D3560
arm_func_start sub_020D35D0
sub_020D35D0: ; 0x020D35D0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl sub_020D34B0
ldr r3, _020D364C ; =0x04000106
mov r2, #0
strh r2, [r3]
ldr ip, [r4, #0xc]
ldr r3, [r4, #0x10]
subs r5, ip, r0
sbc r4, r3, r1
ldr r1, _020D3650 ; =sub_020D38DC
mov r0, #1
bl sub_020D1160
subs r0, r5, #0
mov r3, #0
sbcs r0, r4, #0
ldrlt r3, _020D3654 ; =0x0000FFFE
blt _020D3630
subs r0, r5, #0x10000
sbcs r0, r4, r3
bge _020D3630
mvn r0, r5
mov r0, r0, lsl #0x10
mov r3, r0, lsr #0x10
_020D3630:
ldr r2, _020D3658 ; =0x04000104
mov r1, #0xc1
strh r3, [r2]
mov r0, #0x10
strh r1, [r2, #2]
bl OS_EnableIrqMask
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D364C: .word 0x04000106
_020D3650: .word sub_020D38DC
_020D3654: .word 0x0000FFFE
_020D3658: .word 0x04000104
arm_func_end sub_020D35D0
arm_func_start sub_020D365C
sub_020D365C: ; 0x020D365C
stmdb sp!, {r3, lr}
ldr r1, _020D3698 ; =0x021E19E4
ldrh r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #1
strh r0, [r1]
bl sub_020D33A4
ldr r1, _020D3698 ; =0x021E19E4
mov r2, #0
str r2, [r1, #4]
mov r0, #0x10
str r2, [r1, #8]
bl OS_DisableIrqMask
ldmia sp!, {r3, pc}
.align 2, 0
_020D3698: .word 0x021E19E4
arm_func_end sub_020D365C
arm_func_start sub_020D369C
sub_020D369C: ; 0x020D369C
ldr r0, _020D36A8 ; =0x021E19E4
ldrh r0, [r0]
bx lr
.align 2, 0
_020D36A8: .word 0x021E19E4
arm_func_end sub_020D369C
arm_func_start sub_020D36AC
sub_020D36AC: ; 0x020D36AC
mov r1, #0
str r1, [r0]
str r1, [r0, #8]
bx lr
arm_func_end sub_020D36AC
arm_func_start sub_020D36BC
sub_020D36BC: ; 0x020D36BC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r0, [r8, #0x20]
ldr r3, [r8, #0x1c]
cmp r0, #0
mov r7, r1
mov r6, r2
cmpeq r3, #0
beq _020D3730
bl sub_020D34B0
ldr r6, [r8, #0x28]
ldr r7, [r8, #0x24]
cmp r6, r1
cmpeq r7, r0
bhs _020D3730
ldr r5, [r8, #0x1c]
ldr r4, [r8, #0x20]
subs r0, r0, r7
mov r2, r5
mov r3, r4
sbc r1, r1, r6
bl _ll_udiv
adds r2, r0, #1
adc r0, r1, #0
umull r3, r1, r5, r2
mla r1, r5, r0, r1
mla r1, r4, r2, r1
adds r7, r7, r3
adc r6, r6, r1
_020D3730:
str r7, [r8, #0xc]
ldr r0, _020D37E4 ; =0x021E19E4
str r6, [r8, #0x10]
ldr r5, [r0, #4]
cmp r5, #0
beq _020D37AC
mov r2, #0
mov r1, r2
_020D3750:
ldr r3, [r5, #0xc]
ldr r0, [r5, #0x10]
subs r4, r7, r3
sbc r3, r6, r0
subs r0, r4, r1
sbcs r0, r3, r2
bge _020D37A0
ldr r0, [r5, #0x14]
str r0, [r8, #0x14]
str r8, [r5, #0x14]
str r5, [r8, #0x18]
ldr r0, [r8, #0x14]
cmp r0, #0
strne r8, [r0, #0x18]
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r1, _020D37E4 ; =0x021E19E4
mov r0, r8
str r8, [r1, #4]
bl sub_020D35D0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D37A0:
ldr r5, [r5, #0x18]
cmp r5, #0
bne _020D3750
_020D37AC:
ldr r1, _020D37E4 ; =0x021E19E4
mov r0, #0
str r0, [r8, #0x18]
ldr r0, [r1, #8]
str r8, [r1, #8]
str r0, [r8, #0x14]
cmp r0, #0
strne r8, [r0, #0x18]
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
str r8, [r1, #8]
mov r0, r8
str r8, [r1, #4]
bl sub_020D35D0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D37E4: .word 0x021E19E4
arm_func_end sub_020D36BC
arm_func_start sub_020D37E8
sub_020D37E8: ; 0x020D37E8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
movs r6, r0
mov r5, r1
mov r4, r2
mov r7, r3
beq _020D380C
ldr r0, [r6]
cmp r0, #0
beq _020D3810
_020D380C:
bl OS_Terminate
_020D3810:
bl OS_DisableInterrupts
mov r1, #0
str r1, [r6, #0x1c]
str r1, [r6, #0x20]
str r7, [r6]
ldr r1, [sp, #0x18]
mov r7, r0
str r1, [r6, #4]
bl sub_020D34B0
adds r3, r5, r0
adc r2, r4, r1
mov r0, r6
mov r1, r3
bl sub_020D36BC
mov r0, r7
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D37E8
arm_func_start sub_020D3854
sub_020D3854: ; 0x020D3854
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, [r5]
mov r4, r0
cmp r1, #0
bne _020D3878
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
_020D3878:
ldr r0, [r5, #0x18]
cmp r0, #0
ldrne r1, [r5, #0x14]
strne r1, [r0, #0x14]
bne _020D3898
ldr r2, [r5, #0x14]
ldr r1, _020D38D8 ; =0x021E19E4
str r2, [r1, #8]
_020D3898:
ldr r1, [r5, #0x14]
cmp r1, #0
strne r0, [r1, #0x18]
bne _020D38BC
ldr r1, _020D38D8 ; =0x021E19E4
cmp r0, #0
str r0, [r1, #4]
beq _020D38BC
bl sub_020D35D0
_020D38BC:
mov r1, #0
str r1, [r5]
str r1, [r5, #0x1c]
mov r0, r4
str r1, [r5, #0x20]
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D38D8: .word 0x021E19E4
arm_func_end sub_020D3854
arm_func_start sub_020D38DC
sub_020D38DC: ; 0x020D38DC
stmdb sp!, {r0, lr}
bl sub_020D38EC
ldmia sp!, {r0, lr}
bx lr
arm_func_end sub_020D38DC
arm_func_start sub_020D38EC
sub_020D38EC: ; 0x020D38EC
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020D39D0 ; =0x04000106
mov r2, #0
mov r0, #0x10
strh r2, [r1]
bl OS_DisableIrqMask
ldr r0, _020D39D4 ; =OSi_IntrTable
add r0, r0, #0x3000
ldr r1, [r0, #0xff8]
orr r1, r1, #0x10
str r1, [r0, #0xff8]
bl sub_020D34B0
ldr r2, _020D39D8 ; =0x021E19E4
ldr r4, [r2, #4]
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r3, [r4, #0x10]
ldr ip, [r4, #0xc]
cmp r1, r3
cmpeq r0, ip
bhs _020D394C
mov r0, r4
bl sub_020D35D0
ldmia sp!, {r3, r4, r5, pc}
_020D394C:
ldr r1, [r4, #0x18]
mov r0, #0
str r1, [r2, #4]
cmp r1, #0
streq r0, [r2, #8]
strne r0, [r1, #0x14]
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x1c]
cmp r0, #0
ldr r5, [r4]
mov r0, #0
cmpeq r1, #0
streq r0, [r4]
cmp r5, #0
beq _020D3990
ldr r0, [r4, #4]
blx r5
_020D3990:
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x1c]
cmp r0, #0
cmpeq r1, #0
mov r1, #0
beq _020D39B8
mov r0, r4
mov r2, r1
str r5, [r4]
bl sub_020D36BC
_020D39B8:
ldr r0, _020D39D8 ; =0x021E19E4
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
bl sub_020D35D0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D39D0: .word 0x04000106
_020D39D4: .word OSi_IntrTable
_020D39D8: .word 0x021E19E4
arm_func_end sub_020D38EC
arm_func_start sub_020D39DC
sub_020D39DC: ; 0x020D39DC
stmdb sp!, {r3, lr}
ldr r1, _020D3A20 ; =0x021E19F0
ldrh r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #1
strh r0, [r1]
mov r2, #0
str r2, [r1, #0xc]
mov r0, #4
str r2, [r1, #0x10]
bl OS_DisableIrqMask
ldr r0, _020D3A20 ; =0x021E19F0
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020D3A20: .word 0x021E19F0
arm_func_end sub_020D39DC
arm_func_start sub_020D3A24
sub_020D3A24: ; 0x020D3A24
mrs r0, cpsr
bic r1, r0, #0x80
msr cpsr_c, r1
and r0, r0, #0x80
bx lr
arm_func_end sub_020D3A24
arm_func_start OS_DisableInterrupts
OS_DisableInterrupts: ; 0x020D3A38
mrs r0, cpsr
orr r1, r0, #0x80
msr cpsr_c, r1
and r0, r0, #0x80
bx lr
arm_func_end OS_DisableInterrupts
arm_func_start OS_RestoreInterrupts
OS_RestoreInterrupts: ; 0x020D3A4C
mrs r1, cpsr
bic r2, r1, #0x80
orr r2, r2, r0
msr cpsr_c, r2
and r0, r1, #0x80
bx lr
arm_func_end OS_RestoreInterrupts
arm_func_start sub_020D3A64
sub_020D3A64: ; 0x020D3A64
mrs r0, cpsr
orr r1, r0, #0xc0
msr cpsr_c, r1
and r0, r0, #0xc0
bx lr
arm_func_end sub_020D3A64
arm_func_start sub_020D3A78
sub_020D3A78: ; 0x020D3A78
mrs r1, cpsr
bic r2, r1, #0xc0
orr r2, r2, r0
msr cpsr_c, r2
and r0, r1, #0xc0
bx lr
arm_func_end sub_020D3A78
arm_func_start sub_020D3A90
sub_020D3A90: ; 0x020D3A90
mrs r0, cpsr
and r0, r0, #0x80
bx lr
arm_func_end sub_020D3A90
arm_func_start OS_GetProcMode
OS_GetProcMode: ; 0x020D3A9C
mrs r0, cpsr
and r0, r0, #0x1f
bx lr
sub_020D3AA8:
subs r0, r0, #4
bhs sub_020D3AA8
bx lr
arm_func_end OS_GetProcMode
arm_func_start sub_020D3AB4
sub_020D3AB4: ; 0x020D3AB4
stmdb sp!, {r3, lr}
mov r0, #1
bl SVC_WaitByLoop
mov r0, #1
mov r1, r0
bl OS_WaitIrq
ldmia sp!, {r3, pc}
arm_func_end sub_020D3AB4
arm_func_start sub_020D3AD0
sub_020D3AD0: ; 0x020D3AD0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020D3B1C ; =0x021E1A04
ldrh r1, [r0, #2]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0, #2]
bl sub_020D6548
mov r5, #0xc
mov r4, #1
_020D3AF8:
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020D3AF8
ldr r1, _020D3B20 ; =sub_020D3B24
mov r0, #0xc
bl sub_020D6654
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D3B1C: .word 0x021E1A04
_020D3B20: .word sub_020D3B24
arm_func_end sub_020D3AD0
arm_func_start sub_020D3B24
sub_020D3B24: ; 0x020D3B24
stmdb sp!, {r3, lr}
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r0, r0, lsr #0x10
cmp r0, #0x10
bne _020D3B4C
ldr r0, _020D3B54 ; =0x021E1A04
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, pc}
_020D3B4C:
bl OS_Terminate
ldmia sp!, {r3, pc}
.align 2, 0
_020D3B54: .word 0x021E1A04
arm_func_end sub_020D3B24
arm_func_start sub_020D3B58
sub_020D3B58: ; 0x020D3B58
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0, lsl #8
mov r5, #0xc
mov r4, #0
_020D3B68:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_020D66C4
cmp r0, #0
bne _020D3B68
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020D3B58
arm_func_start OS_ResetSystem
OS_ResetSystem: ; 0x020D3B84
stmdb sp!, {r4, lr}
ldr r1, _020D3C14 ; =0x027FFC40
mov r4, r0
ldrh r0, [r1]
cmp r0, #2
moveq r0, #1
movne r0, #0
cmp r0, #0
beq _020D3BAC
bl OS_Terminate
_020D3BAC:
bl OS_GetLockID
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020DC96C
ldr r0, _020D3C18 ; =0x00000000
bl sub_020D4294
ldr r0, _020D3C1C ; =0x00000001
bl sub_020D4294
ldr r0, _020D3C20 ; =0x00000002
bl sub_020D4294
ldr r0, _020D3C24 ; =0x00000003
bl sub_020D4294
ldr r0, _020D3C28 ; =0x00040000
bl OS_SetIrqMask
ldr r0, _020D3C2C ; =0xFFFBFFFF
bl OS_ResetRequestIrqMask
ldr r1, _020D3C30 ; =0x027FFC20
ldr r0, _020D3C34 ; =0x00000010
str r4, [r1]
bl sub_020D3B58
ldr r0, _020D3C38 ; =0x027E3F80
ldr r1, _020D3C3C ; =0x00000800
sub r0, r0, r1
mov sp, r0
bl sub_01FF81B4
ldmia sp!, {r4, pc}
.align 2, 0
_020D3C14: .word 0x027FFC40
_020D3C18: .word 0x00000000
_020D3C1C: .word 0x00000001
_020D3C20: .word 0x00000002
_020D3C24: .word 0x00000003
_020D3C28: .word 0x00040000
_020D3C2C: .word 0xFFFBFFFF
_020D3C30: .word 0x027FFC20
_020D3C34: .word 0x00000010
_020D3C38: .word 0x027E3F80
_020D3C3C: .word 0x00000800
arm_func_end OS_ResetSystem
arm_func_start OS_GetMacAddress
OS_GetMacAddress: ; 0x020D3C40
ldr ip, _020D3C54 ; =MIi_CpuCopy8
mov r1, r0
ldr r0, _020D3C58 ; =0x027FFCF4
mov r2, #6
bx ip
.align 2, 0
_020D3C54: .word MIi_CpuCopy8
_020D3C58: .word 0x027FFCF4
arm_func_end OS_GetMacAddress
arm_func_start OS_GetOwnerInfo
OS_GetOwnerInfo: ; 0x020D3C5C
stmdb sp!, {r4, lr}
ldr ip, _020D3CDC ; =0x027FFC80
mov r4, r0
ldrh r2, [ip, #0x64]
add r0, ip, #6
add r1, r4, #4
mov r2, r2, lsl #0x1d
mov r2, r2, lsr #0x1d
strb r2, [r4]
ldrb r3, [ip, #2]
mov r2, #0x14
mov r3, r3, lsl #0x1c
mov r3, r3, lsr #0x1c
strb r3, [r4, #1]
ldrb r3, [ip, #3]
strb r3, [r4, #2]
ldrb r3, [ip, #4]
strb r3, [r4, #3]
ldrb r3, [ip, #0x1a]
strh r3, [r4, #0x1a]
ldrb r3, [ip, #0x50]
strh r3, [r4, #0x52]
bl MIi_CpuCopy16
ldr r0, _020D3CDC ; =0x027FFC80
add r1, r4, #0x1c
add r0, r0, #0x1c
mov r2, #0x34
bl MIi_CpuCopy16
mov r0, #0
strh r0, [r4, #0x18]
strh r0, [r4, #0x50]
ldmia sp!, {r4, pc}
.align 2, 0
_020D3CDC: .word 0x027FFC80
arm_func_end OS_GetOwnerInfo
arm_func_start OS_GetOwnerRtcOffset
OS_GetOwnerRtcOffset: ; 0x020D3CE0
ldr r1, _020D3CF0 ; =0x027FFC80
ldr r0, [r1, #0x68]
ldr r1, [r1, #0x6c]
bx lr
.align 2, 0
_020D3CF0: .word 0x027FFC80
arm_func_end OS_GetOwnerRtcOffset
arm_func_start sub_020D3CF4
sub_020D3CF4: ; 0x020D3CF4
clz r0, r0
bx lr
arm_func_end sub_020D3CF4
arm_func_start sub_020D3CFC
sub_020D3CFC: ; 0x020D3CFC
ldr r0, _020D3D28 ; =0x021E1A08
mov r3, #0
str r3, [r0]
ldr r0, _020D3D2C ; =0x021E1A0C
mov r2, r3
_020D3D10:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #9
blt _020D3D10
bx lr
.align 2, 0
_020D3D28: .word 0x021E1A08
_020D3D2C: .word 0x021E1A0C
arm_func_end sub_020D3CFC
arm_func_start sub_020D3D30
sub_020D3D30: ; 0x020D3D30
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r7, r0
mov r8, r1
bl OS_DisableInterrupts
ldr r1, _020D3DE4 ; =0x021E1A08
mov r6, r0
ldr r0, [r1]
ldr sb, _020D3DE8 ; =0x021E1A0C
and r5, r7, r0
mov r4, #1
_020D3D58:
mov r0, r5
bl sub_020D3CF4
rsbs r1, r0, #0x1f
bmi _020D3D90
mov r0, r1, lsl #1
ldrh r0, [sb, r0]
mvn r1, r4, lsl r1
cmp r8, r0
and r5, r5, r1
beq _020D3D58
mov r0, r6
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_020D3D90:
ldr r0, _020D3DEC ; =0x000001FF
ldr r4, _020D3DE8 ; =0x021E1A0C
ldr sb, _020D3DE4 ; =0x021E1A08
and r7, r7, r0
mov r5, #1
_020D3DA4:
mov r0, r7
bl sub_020D3CF4
rsbs r1, r0, #0x1f
bmi _020D3DD4
ldr r0, [sb]
mvn r2, r5, lsl r1
orr r0, r0, r5, lsl r1
mov r1, r1, lsl #1
strh r8, [r4, r1]
str r0, [sb]
and r7, r7, r2
b _020D3DA4
_020D3DD4:
mov r0, r6
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020D3DE4: .word 0x021E1A08
_020D3DE8: .word 0x021E1A0C
_020D3DEC: .word 0x000001FF
arm_func_end sub_020D3D30
arm_func_start OSi_UnlockVram
OSi_UnlockVram: ; 0x020D3DF0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r5, r0
mov sl, r1
bl OS_DisableInterrupts
ldr r4, _020D3E6C ; =0x021E1A08
ldr r1, _020D3E70 ; =0x000001FF
ldr r2, [r4]
mov sb, r0
and r0, r5, r2
ldr r6, _020D3E74 ; =0x021E1A0C
and r8, r0, r1
mov r7, #1
mov r5, #0
_020D3E24:
mov r0, r8
bl sub_020D3CF4
rsbs r2, r0, #0x1f
bmi _020D3E60
mov r1, r2, lsl #1
ldrh r0, [r6, r1]
mvn r2, r7, lsl r2
cmp sl, r0
and r8, r8, r2
bne _020D3E24
ldr r0, [r4]
strh r5, [r6, r1]
and r0, r0, r2
str r0, [r4]
b _020D3E24
_020D3E60:
mov r0, sb
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020D3E6C: .word 0x021E1A08
_020D3E70: .word 0x000001FF
_020D3E74: .word 0x021E1A0C
arm_func_end OSi_UnlockVram
arm_func_start sub_020D3E78
sub_020D3E78: ; 0x020D3E78
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _020D3F38 ; =0x04000006
mov r5, r0
ldrh r6, [r1]
ldr r4, _020D3F3C ; =0x027FFC00
bl sub_020D3550
orr r0, r0, r6, lsl #16
str r0, [r5]
ldr r1, _020D3F40 ; =0x021E19DC
ldrh ip, [r4, #0xf8]
ldr r3, [r1]
ldr r2, [r1, #4]
mov r0, r4
eor r2, r3, ip, lsl #16
str r2, [r5, #4]
ldr r2, [r1]
ldr r3, [r0, #0x3c]
ldr r2, [r1, #4]
ldr r1, [r4, #0xf4]
ldr ip, _020D3F44 ; =0x04000600
eor r1, r2, r1
eor r2, r3, r1
str r2, [r5, #8]
ldr r1, [ip]
eor r1, r2, r1
str r1, [r5, #8]
ldr r2, [r0, #0x1e8]
add r1, r0, #0x300
str r2, [r5, #0xc]
ldr r3, [r0, #0x1ec]
sub r2, ip, #0x4d0
str r3, [r5, #0x10]
ldr r3, [r0, #0x390]
ldrh r4, [r1, #0x94]
add r0, r0, #0x3a8
eor r3, r3, r4, lsl #16
str r3, [r5, #0x14]
ldrh r4, [r1, #0xaa]
ldrh r3, [r1, #0xac]
orr r3, r3, r4, lsl #16
str r3, [r5, #0x18]
ldrh r2, [r2]
ldrh r0, [r0]
ldrh r1, [r1, #0x98]
orr r0, r2, r0
orr r0, r0, r1, lsl #16
str r0, [r5, #0x1c]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D3F38: .word 0x04000006
_020D3F3C: .word 0x027FFC00
_020D3F40: .word 0x021E19DC
_020D3F44: .word 0x04000600
arm_func_end sub_020D3E78
arm_func_start OS_Terminate
OS_Terminate: ; 0x020D3F48
stmdb sp!, {r3, lr}
_020D3F4C:
bl OS_DisableInterrupts
bl sub_020D3F58
b _020D3F4C
arm_func_end OS_Terminate
arm_func_start sub_020D3F58
sub_020D3F58: ; 0x020D3F58
mov r0, #0
mcr p15, 0, r0, c7, c0, 4
bx lr
arm_func_end sub_020D3F58
arm_func_start sub_020D3F64
sub_020D3F64: ; 0x020D3F64
ldr r1, _020D3F70 ; =0x04000247
strb r0, [r1]
bx lr
.align 2, 0
_020D3F70: .word 0x04000247
arm_func_end sub_020D3F64
arm_func_start MI_DmaFill32
MI_DmaFill32: ; 0x020D3F74
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r4, r3
mov r8, r0
mov r7, r1
mov r6, r2
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r0, r8, r8, lsl #1
add r0, r0, #2
mov r0, r0, lsl #2
add r0, r0, #0xb0
add r5, r0, #0x4000000
_020D3FA0:
ldr r0, [r5]
tst r0, #0x80000000
bne _020D3FA0
bl OS_DisableInterrupts
mov r2, r8, lsl #2
add r1, r2, #0xe0
mov r3, r4, lsr #2
mov r4, r0
add ip, r2, #0x4000000
mov r0, r8
mov r2, r7
add r1, r1, #0x4000000
orr r3, r3, #0x85000000
str r6, [ip, #0xe0]
bl sub_01FF851C
mov r0, r4
bl OS_RestoreInterrupts
_020D3FE4:
ldr r0, [r5]
tst r0, #0x80000000
bne _020D3FE4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end MI_DmaFill32
arm_func_start MI_DmaCopy32
MI_DmaCopy32: ; 0x020D3FF4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, r3
mov r6, r2
mov r2, r5
mov r3, #0
mov r8, r0
mov r7, r1
bl sub_020D4394
cmp r5, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r0, r8, r8, lsl #1
add r0, r0, #2
mov r0, r0, lsl #2
add r0, r0, #0xb0
add r4, r0, #0x4000000
_020D4030:
ldr r0, [r4]
tst r0, #0x80000000
bne _020D4030
mov r3, r5, lsr #2
mov r0, r8
mov r1, r7
mov r2, r6
orr r3, r3, #0x84000000
bl sub_01FF8488
_020D4054:
ldr r0, [r4]
tst r0, #0x80000000
bne _020D4054
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end MI_DmaCopy32
arm_func_start MI_DmaCopy16
MI_DmaCopy16: ; 0x020D4064
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r5, r3
mov r8, r0
mov r7, r1
mov r6, r2
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r2, r5
mov r3, #0
bl sub_020D4394
add r0, r8, r8, lsl #1
add r0, r0, #2
mov r0, r0, lsl #2
add r0, r0, #0xb0
add r4, r0, #0x4000000
_020D409C:
ldr r0, [r4]
tst r0, #0x80000000
bne _020D409C
mov r3, r5, lsr #1
mov r0, r8
mov r1, r7
mov r2, r6
orr r3, r3, #0x80000000
bl sub_01FF8488
_020D40C0:
ldr r0, [r4]
tst r0, #0x80000000
bne _020D40C0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end MI_DmaCopy16
arm_func_start MI_DmaFill32Async
MI_DmaFill32Async: ; 0x020D40D0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r4, r3
mov r7, r0
mov r6, r1
mov r5, r2
ldr r8, [sp, #0x18]
bne _020D4100
cmp r8, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, [sp, #0x1c]
blx r8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D4100:
bl MI_WaitDma
cmp r8, #0
beq _020D4158
ldr r2, [sp, #0x1c]
mov r0, r7
mov r1, r8
bl sub_020D1118
bl OS_DisableInterrupts
mov r3, r4, lsr #2
mov r2, r7, lsl #2
add r1, r2, #0xe0
add r2, r2, #0x4000000
str r5, [r2, #0xe0]
mov r4, r0
mov r0, r7
mov r2, r6
add r1, r1, #0x4000000
orr r3, r3, #0xc5000000
bl sub_01FF84F8
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D4158:
bl OS_DisableInterrupts
mov r2, r7, lsl #2
add r1, r2, #0xe0
mov r3, r4, lsr #2
mov r4, r0
add ip, r2, #0x4000000
mov r0, r7
mov r2, r6
add r1, r1, #0x4000000
orr r3, r3, #0x85000000
str r5, [ip, #0xe0]
bl sub_01FF84F8
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end MI_DmaFill32Async
arm_func_start MI_DmaCopy32Async
MI_DmaCopy32Async: ; 0x020D4194
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, r3
mov r6, r2
mov r2, r5
mov r3, #0
mov r8, r0
mov r7, r1
ldr r4, [sp, #0x18]
bl sub_020D4394
cmp r5, #0
bne _020D41D4
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, [sp, #0x1c]
blx r4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D41D4:
mov r0, r8
bl MI_WaitDma
cmp r4, #0
beq _020D4210
ldr r2, [sp, #0x1c]
mov r0, r8
mov r1, r4
bl sub_020D1118
mov r3, r5, lsr #2
mov r0, r8
mov r1, r7
mov r2, r6
orr r3, r3, #0xc4000000
bl sub_01FF8448
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D4210:
mov r3, r5, lsr #2
mov r0, r8
mov r1, r7
mov r2, r6
orr r3, r3, #0x84000000
bl sub_01FF8448
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end MI_DmaCopy32Async
arm_func_start MI_WaitDma
MI_WaitDma: ; 0x020D422C
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_DisableInterrupts
add r1, r4, r4, lsl #1
add r1, r1, #2
mov r1, r1, lsl #2
add r1, r1, #0xb0
add r2, r1, #0x4000000
_020D424C:
ldr r1, [r2]
tst r1, #0x80000000
bne _020D424C
cmp r4, #0
bne _020D4288
mov r1, #0xc
mul r2, r4, r1
add r1, r2, #0xb0
add r2, r2, #0x4000000
mov r3, #0
str r3, [r2, #0xb0]
add r2, r1, #0x4000000
ldr r1, _020D4290 ; =0x81400001
str r3, [r2, #4]
str r1, [r2, #8]
_020D4288:
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020D4290: .word 0x81400001
arm_func_end MI_WaitDma
arm_func_start sub_020D4294
sub_020D4294: ; 0x020D4294
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_DisableInterrupts
mov r1, #6
mul r1, r4, r1
add r1, r1, #5
mov r1, r1, lsl #1
add r1, r1, #0x4000000
ldrh r2, [r1, #0xb0]
cmp r4, #0
bic r2, r2, #0x3a00
strh r2, [r1, #0xb0]
ldrh r2, [r1, #0xb0]
bic r2, r2, #0x8000
strh r2, [r1, #0xb0]
ldrh r2, [r1, #0xb0]
ldrh r1, [r1, #0xb0]
bne _020D4304
mov r1, #0xc
mul r2, r4, r1
add r1, r2, #0xb0
add r2, r2, #0x4000000
mov r3, #0
str r3, [r2, #0xb0]
add r2, r1, #0x4000000
ldr r1, _020D430C ; =0x81400001
str r3, [r2, #4]
str r1, [r2, #8]
_020D4304:
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020D430C: .word 0x81400001
arm_func_end sub_020D4294
arm_func_start sub_020D4310
sub_020D4310: ; 0x020D4310
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r5, _020D4390 ; =0x040000B8
mov r7, r0
mov r6, r1
mov r4, #0
_020D4324:
cmp r4, r7
beq _020D437C
ldr r0, [r5]
tst r0, #0x80000000
andne r0, r0, #0x38000000
cmpne r0, r6
beq _020D437C
cmp r0, #0x8000000
cmpeq r6, #0x10000000
beq _020D437C
cmp r0, #0x10000000
cmpeq r6, #0x8000000
beq _020D437C
cmp r0, #0x18000000
cmpne r0, #0x20000000
cmpne r0, #0x28000000
cmpne r0, #0x30000000
cmpne r0, #0x38000000
cmpne r0, #0x8000000
cmpne r0, #0x10000000
bne _020D437C
bl OS_Terminate
_020D437C:
add r4, r4, #1
cmp r4, #3
add r5, r5, #0xc
blt _020D4324
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D4390: .word 0x040000B8
arm_func_end sub_020D4310
arm_func_start sub_020D4394
sub_020D4394: ; 0x020D4394
stmdb sp!, {r3, lr}
cmp r0, #0
ldmneia sp!, {r3, pc}
cmp r3, #0
and ip, r1, #0xff000000
beq _020D43B8
cmp r3, #0x800000
subeq r1, r1, r2
b _020D43BC
_020D43B8:
add r1, r1, r2
_020D43BC:
cmp ip, #0x4000000
and r0, r1, #0xff000000
beq _020D43E0
cmp ip, #0x8000000
bhs _020D43E0
cmp r0, #0x4000000
beq _020D43E0
cmp r0, #0x8000000
ldmloia sp!, {r3, pc}
_020D43E0:
bl OS_Terminate
ldmia sp!, {r3, pc}
arm_func_end sub_020D4394
arm_func_start sub_020D43E8
sub_020D43E8: ; 0x020D43E8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r1
mov r7, r0
mov r4, r3
mov r1, #0x10000000
mov r5, r2
bl sub_020D4310
mov r0, r7
mov r1, r6
mov r2, r4
mov r3, #0
bl sub_020D4394
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r7
bl MI_WaitDma
ldr r3, _020D4444 ; =0x96600000
mov r0, r7
mov r1, r6
mov r2, r5
orr r3, r3, r4, lsr #2
bl sub_01FF8448
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D4444: .word 0x96600000
arm_func_end sub_020D43E8
arm_func_start sub_020D4448
sub_020D4448: ; 0x020D4448
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r1
mov r7, r0
mov r4, r3
mov r1, #0x10000000
mov r5, r2
bl sub_020D4310
mov r0, r7
mov r1, r6
mov r2, r4
mov r3, #0
bl sub_020D4394
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r7
bl MI_WaitDma
ldr r3, _020D44A4 ; =0x92600000
mov r0, r7
mov r1, r6
mov r2, r5
orr r3, r3, r4, lsr #1
bl sub_01FF8448
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D44A4: .word 0x92600000
arm_func_end sub_020D4448
arm_func_start sub_020D44A8
sub_020D44A8: ; 0x020D44A8
stmdb sp!, {r4, lr}
mov r4, r0
cmp r2, #0
bne _020D44CC
cmp r3, #0
ldmeqia sp!, {r4, pc}
ldr r0, [sp, #8]
blx r3
ldmia sp!, {r4, pc}
_020D44CC:
ldr r0, _020D4594 ; =0x021E1A20
_020D44D0:
ldr ip, [r0]
cmp ip, #0
bne _020D44D0
ldr ip, _020D4598 ; =0x04000600
_020D44E0:
ldr r0, [ip]
and r0, r0, #0x7000000
mov r0, r0, lsr #0x18
tst r0, #2
beq _020D44E0
ldr ip, _020D4594 ; =0x021E1A20
mov r0, #1
str r0, [ip]
str r4, [ip, #4]
str r1, [ip, #8]
str r2, [ip, #0xc]
str r3, [ip, #0x10]
ldr lr, [sp, #8]
mov r0, r4
mov r3, #0
str lr, [ip, #0x14]
bl sub_020D4394
mov r0, r4
bl MI_WaitDma
bl OS_DisableInterrupts
ldr r1, _020D4598 ; =0x04000600
mov r4, r0
ldr r0, [r1]
ldr r1, _020D4594 ; =0x021E1A20
and r0, r0, #0xc0000000
mov r2, r0, lsr #0x1e
mov r0, #0x200000
str r2, [r1, #0x18]
bl sub_020D108C
ldr r1, _020D4594 ; =0x021E1A20
ldr r2, _020D4598 ; =0x04000600
str r0, [r1, #0x1c]
ldr r0, [r2]
ldr r1, _020D459C ; =sub_020D45A0
bic r0, r0, #0xc0000000
orr r3, r0, #0x40000000
mov r0, #0x200000
str r3, [r2]
bl OS_SetIrqFunction
mov r0, #0x200000
bl OS_EnableIrqMask
bl sub_020D45A0
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020D4594: .word 0x021E1A20
_020D4598: .word 0x04000600
_020D459C: .word sub_020D45A0
arm_func_end sub_020D44A8
arm_func_start sub_020D45A0
sub_020D45A0: ; 0x020D45A0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020D463C ; =0x021E1A20
ldr r5, [r0, #0xc]
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, _020D463C ; =0x021E1A20
cmp r5, #0x1d8
ldr r1, [r0, #0xc]
movhs r5, #0x1d8
ldr r4, [r0, #8]
subs r1, r1, r5
str r1, [r0, #0xc]
add r1, r4, r5
str r1, [r0, #8]
bne _020D4618
ldr r0, [r0, #4]
ldr r1, _020D4640 ; =sub_020D464C
mov r2, #0
bl sub_020D1118
ldr r0, _020D463C ; =0x021E1A20
mov r3, #0x3bc00000
rsb r3, r3, #0
ldr r0, [r0, #4]
ldr r2, _020D4644 ; =0x04000400
mov r1, r4
orr r3, r3, r5, lsr #2
bl sub_01FF8448
mov r0, #0x200000
bl OS_ResetRequestIrqMask
ldmia sp!, {r3, r4, r5, pc}
_020D4618:
ldr r3, _020D4648 ; =0x84400000
ldr r0, [r0, #4]
ldr r2, _020D4644 ; =0x04000400
mov r1, r4
orr r3, r3, r5, lsr #2
bl sub_01FF8448
mov r0, #0x200000
bl OS_ResetRequestIrqMask
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D463C: .word 0x021E1A20
_020D4640: .word sub_020D464C
_020D4644: .word 0x04000400
_020D4648: .word 0x84400000
arm_func_end sub_020D45A0
arm_func_start sub_020D464C
sub_020D464C: ; 0x020D464C
stmdb sp!, {r3, lr}
mov r0, #0x200000
bl OS_DisableIrqMask
ldr r2, _020D46A4 ; =0x04000600
ldr r0, _020D46A8 ; =0x021E1A20
ldr r1, [r2]
ldr r3, [r0, #0x18]
bic r1, r1, #0xc0000000
orr r1, r1, r3, lsl #30
str r1, [r2]
ldr r1, [r0, #0x1c]
mov r0, #0x200000
bl OS_SetIrqFunction
ldr r0, _020D46A8 ; =0x021E1A20
mov r1, #0
str r1, [r0]
ldr r1, [r0, #0x10]
ldr r0, [r0, #0x14]
cmp r1, #0
ldmeqia sp!, {r3, pc}
blx r1
ldmia sp!, {r3, pc}
.align 2, 0
_020D46A4: .word 0x04000600
_020D46A8: .word 0x021E1A20
arm_func_end sub_020D464C
arm_func_start sub_020D46AC
sub_020D46AC: ; 0x020D46AC
stmdb sp!, {r4, r5, r6, lr}
movs r4, r2
mov r6, r0
mov r5, r1
bne _020D46D4
cmp r3, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [sp, #0x10]
blx r3
ldmia sp!, {r4, r5, r6, pc}
_020D46D4:
ldr r0, _020D4758 ; =0x021E1A20
_020D46D8:
ldr r1, [r0]
cmp r1, #0
bne _020D46D8
ldr r2, _020D4758 ; =0x021E1A20
mov r0, #1
str r0, [r2]
str r6, [r2, #4]
ldr ip, [sp, #0x10]
str r3, [r2, #0x10]
mov r0, r6
mov r1, #0x38000000
str ip, [r2, #0x14]
bl sub_020D4310
mov r0, r6
mov r1, r5
mov r2, r4
mov r3, #0
bl sub_020D4394
mov r0, r6
bl MI_WaitDma
mov r0, r6
ldr r1, _020D475C ; =sub_020D4764
mov r2, #0
bl sub_020D1118
mov r0, r6
mov r1, r5
ldr r2, _020D4760 ; =0x04000400
mov r3, #0x3c00000
rsb r3, r3, #0
orr r3, r3, r4, lsr #2
bl sub_01FF8448
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D4758: .word 0x021E1A20
_020D475C: .word sub_020D4764
_020D4760: .word 0x04000400
arm_func_end sub_020D46AC
arm_func_start sub_020D4764
sub_020D4764: ; 0x020D4764
stmdb sp!, {r3, lr}
ldr r0, _020D478C ; =0x021E1A20
mov r1, #0
str r1, [r0]
ldr r1, [r0, #0x10]
ldr r0, [r0, #0x14]
cmp r1, #0
ldmeqia sp!, {r3, pc}
blx r1
ldmia sp!, {r3, pc}
.align 2, 0
_020D478C: .word 0x021E1A20
arm_func_end sub_020D4764
arm_func_start MIi_CpuClear16
MIi_CpuClear16: ; 0x020D4790
mov r3, #0
_020D4794:
cmp r3, r2
blt _020D47A0
b _020D47A4
_020D47A0:
strh r0, [r1, r3]
_020D47A4:
blt _020D47AC
b _020D47B0
_020D47AC:
add r3, r3, #2
_020D47B0:
blt _020D4794
bx lr
arm_func_end MIi_CpuClear16
arm_func_start MIi_CpuCopy16
MIi_CpuCopy16: ; 0x020D47B8
mov ip, #0
_020D47BC:
cmp ip, r2
blt _020D47C8
b _020D47CC
_020D47C8:
ldrh r3, [r0, ip]
_020D47CC:
blt _020D47D4
b _020D47D8
_020D47D4:
strh r3, [r1, ip]
_020D47D8:
blt _020D47E0
b _020D47E4
_020D47E0:
add ip, ip, #2
_020D47E4:
blt _020D47BC
bx lr
arm_func_end MIi_CpuCopy16
arm_func_start MIi_CpuClear32
MIi_CpuClear32: ; 0x020D47EC
add ip, r1, r2
_020D47F0:
cmp r1, ip
blt _020D47FC
b _020D4800
_020D47FC:
stmia r1!, {r0}
_020D4800:
blt _020D47F0
bx lr
arm_func_end MIi_CpuClear32
arm_func_start MIi_CpuCopy32
MIi_CpuCopy32: ; 0x020D4808
add ip, r1, r2
_020D480C:
cmp r1, ip
blt _020D4818
b _020D481C
_020D4818:
ldmia r0!, {r2}
_020D481C:
blt _020D4824
b _020D4828
_020D4824:
stmia r1!, {r2}
_020D4828:
blt _020D480C
bx lr
arm_func_end MIi_CpuCopy32
arm_func_start sub_020D4830
sub_020D4830: ; 0x020D4830
add ip, r0, r2
_020D4834:
cmp r0, ip
blt _020D4840
b _020D4844
_020D4840:
ldmia r0!, {r2}
_020D4844:
blt _020D484C
b _020D4850
_020D484C:
str r2, [r1]
_020D4850:
blt _020D4834
bx lr
arm_func_end sub_020D4830
arm_func_start MIi_CpuClearFast
MIi_CpuClearFast: ; 0x020D4858
stmdb sp!, {r4, r5, r6, r7, r8, sb}
add sb, r1, r2
mov ip, r2, lsr #5
add ip, r1, ip, lsl #5
mov r2, r0
mov r3, r2
mov r4, r2
mov r5, r2
mov r6, r2
mov r7, r2
mov r8, r2
_020D4884:
cmp r1, ip
blt _020D4890
b _020D4894
_020D4890:
stmia r1!, {r0, r2, r3, r4, r5, r6, r7, r8}
_020D4894:
blt _020D4884
_020D4898:
cmp r1, sb
blt _020D48A4
b _020D48A8
_020D48A4:
stmia r1!, {r0}
_020D48A8:
blt _020D4898
ldmia sp!, {r4, r5, r6, r7, r8, sb}
bx lr
arm_func_end MIi_CpuClearFast
arm_func_start MIi_CpuCopyFast
MIi_CpuCopyFast: ; 0x020D48B4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl}
add sl, r1, r2
mov ip, r2, lsr #5
add ip, r1, ip, lsl #5
_020D48C4:
cmp r1, ip
blt _020D48D0
b _020D48D4
_020D48D0:
ldmia r0!, {r2, r3, r4, r5, r6, r7, r8, sb}
_020D48D4:
blt _020D48DC
b _020D48E0
_020D48DC:
stmia r1!, {r2, r3, r4, r5, r6, r7, r8, sb}
_020D48E0:
blt _020D48C4
_020D48E4:
cmp r1, sl
blt _020D48F0
b _020D48F4
_020D48F0:
ldmia r0!, {r2}
_020D48F4:
blt _020D48FC
b _020D4900
_020D48FC:
stmia r1!, {r2}
_020D4900:
blt _020D48E4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl}
bx lr
arm_func_end MIi_CpuCopyFast
arm_func_start MI_Copy32B
MI_Copy32B: ; 0x020D490C
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3}
stmia r1!, {r2, r3}
bx lr
arm_func_end MI_Copy32B
arm_func_start MI_Copy36B
MI_Copy36B: ; 0x020D4928
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
bx lr
arm_func_end MI_Copy36B
arm_func_start MI_Copy48B
MI_Copy48B: ; 0x020D4944
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
bx lr
arm_func_end MI_Copy48B
arm_func_start MI_Copy64B
MI_Copy64B: ; 0x020D4968
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0!, {r2, r3, ip}
stmia r1!, {r2, r3, ip}
ldmia r0, {r0, r2, r3, ip}
stmia r1!, {r0, r2, r3, ip}
bx lr
arm_func_end MI_Copy64B
arm_func_start MI_CpuFill8
MI_CpuFill8: ; 0x020D4994
cmp r2, #0
beq _020D49A0
b _020D49A4
_020D49A0:
bx lr
_020D49A4:
tst r0, #1
beq _020D49D0
ldrh ip, [r0, #-1]
and ip, ip, #0xff
orr r3, ip, r1, lsl #8
strh r3, [r0, #-1]
add r0, r0, #1
subs r2, r2, #1
beq _020D49CC
b _020D49D0
_020D49CC:
bx lr
_020D49D0:
cmp r2, #2
blo _020D4A28
orr r1, r1, r1, lsl #8
tst r0, #2
beq _020D49F8
strh r1, [r0], #2
subs r2, r2, #2
beq _020D49F4
b _020D49F8
_020D49F4:
bx lr
_020D49F8:
orr r1, r1, r1, lsl #16
bics r3, r2, #3
beq _020D4A18
sub r2, r2, r3
add ip, r3, r0
_020D4A0C:
str r1, [r0], #4
cmp r0, ip
blo _020D4A0C
_020D4A18:
tst r2, #2
bne _020D4A24
b _020D4A28
_020D4A24:
strh r1, [r0], #2
_020D4A28:
tst r2, #1
beq _020D4A34
b _020D4A38
_020D4A34:
bx lr
_020D4A38:
ldrh r3, [r0]
and r3, r3, #0xff00
and r1, r1, #0xff
orr r1, r1, r3
strh r1, [r0]
bx lr
arm_func_end MI_CpuFill8
arm_func_start MIi_CpuCopy8
MIi_CpuCopy8: ; 0x020D4A50
cmp r2, #0
beq _020D4A5C
b _020D4A60
_020D4A5C:
bx lr
_020D4A60:
tst r1, #1
beq _020D4AB8
ldrh ip, [r1, #-1]
and ip, ip, #0xff
tst r0, #1
bne _020D4A7C
b _020D4A80
_020D4A7C:
ldrh r3, [r0, #-1]
_020D4A80:
bne _020D4A88
b _020D4A8C
_020D4A88:
mov r3, r3, lsr #8
_020D4A8C:
beq _020D4A94
b _020D4A98
_020D4A94:
ldrh r3, [r0]
_020D4A98:
orr r3, ip, r3, lsl #8
strh r3, [r1, #-1]
add r0, r0, #1
add r1, r1, #1
subs r2, r2, #1
beq _020D4AB4
b _020D4AB8
_020D4AB4:
bx lr
_020D4AB8:
eor ip, r1, r0
tst ip, #1
beq _020D4B14
bic r0, r0, #1
ldrh ip, [r0], #2
mov r3, ip, lsr #8
subs r2, r2, #2
blo _020D4AF0
_020D4AD8:
ldrh ip, [r0], #2
orr ip, r3, ip, lsl #8
strh ip, [r1], #2
mov r3, ip, lsr #0x10
subs r2, r2, #2
bhs _020D4AD8
_020D4AF0:
tst r2, #1
beq _020D4AFC
b _020D4B00
_020D4AFC:
bx lr
_020D4B00:
ldrh ip, [r1]
and ip, ip, #0xff00
orr ip, ip, r3
strh ip, [r1]
bx lr
_020D4B14:
tst ip, #2
beq _020D4B40
bics r3, r2, #1
beq _020D4BA4
sub r2, r2, r3
add ip, r3, r1
_020D4B2C:
ldrh r3, [r0], #2
strh r3, [r1], #2
cmp r1, ip
blo _020D4B2C
b _020D4BA4
_020D4B40:
cmp r2, #2
blo _020D4BA4
tst r1, #2
beq _020D4B68
ldrh r3, [r0], #2
strh r3, [r1], #2
subs r2, r2, #2
beq _020D4B64
b _020D4B68
_020D4B64:
bx lr
_020D4B68:
bics r3, r2, #3
beq _020D4B88
sub r2, r2, r3
add ip, r3, r1
_020D4B78:
ldr r3, [r0], #4
str r3, [r1], #4
cmp r1, ip
blo _020D4B78
_020D4B88:
tst r2, #2
bne _020D4B94
b _020D4B98
_020D4B94:
ldrh r3, [r0], #2
_020D4B98:
bne _020D4BA0
b _020D4BA4
_020D4BA0:
strh r3, [r1], #2
_020D4BA4:
tst r2, #1
beq _020D4BB0
b _020D4BB4
_020D4BB0:
bx lr
_020D4BB4:
ldrh r2, [r1]
ldrh r0, [r0]
and r2, r2, #0xff00
and r0, r0, #0xff
orr r0, r2, r0
strh r0, [r1]
bx lr
arm_func_end MIi_CpuCopy8
thumb_func_start sub_020D4BD0
sub_020D4BD0: ; 0x020D4BD0
mov r1, #0
mov r2, #0
mov r3, #0
stmia r0!, {r1, r2, r3}
stmia r0!, {r1, r2, r3}
stmia r0!, {r1, r2, r3}
bx lr
thumb_func_end sub_020D4BD0
.balign 4, 0
arm_func_start sub_020D4BE0
sub_020D4BE0: ; 0x020D4BE0
swp r0, r0, [r1]
bx lr
arm_func_end sub_020D4BE0
arm_func_start MI_UncompressLZ8
MI_UncompressLZ8: ; 0x020D4BE8
stmdb sp!, {r4, r5, r6, r7, lr}
ldr r5, [r0], #4
mov r2, r5, lsr #8
mov r7, #0
tst r5, #0xf
bne _020D4C04
b _020D4C08
_020D4C04:
mov r7, #1
_020D4C08:
cmp r2, #0
ble _020D4CE0
ldrb lr, [r0], #1
mov r4, #8
_020D4C18:
subs r4, r4, #1
blt _020D4C08
tst lr, #0x80
bne _020D4C3C
ldrb r6, [r0], #1
swpb r6, r6, [r1]
add r1, r1, #1
sub r2, r2, #1
b _020D4CC8
_020D4C3C:
ldrb r5, [r0]
cmp r7, #0
beq _020D4C4C
b _020D4C50
_020D4C4C:
mov r6, #3
_020D4C50:
beq _020D4C94
tst r5, #0xe0
bne _020D4C60
b _020D4C64
_020D4C60:
mov r6, #1
_020D4C64:
bne _020D4C94
add r0, r0, #1
and r6, r5, #0xf
mov r6, r6, lsl #4
tst r5, #0x10
beq _020D4C8C
mov r6, r6, lsl #8
ldrb r5, [r0], #1
add r6, r6, r5, lsl #4
add r6, r6, #0x100
_020D4C8C:
add r6, r6, #0x11
ldrb r5, [r0]
_020D4C94:
add r3, r6, r5, asr #4
add r0, r0, #1
and r5, r5, #0xf
mov ip, r5, lsl #8
ldrb r6, [r0], #1
orr r5, r6, ip
add ip, r5, #1
sub r2, r2, r3
_020D4CB4:
ldrb r5, [r1, -ip]
swpb r5, r5, [r1]
add r1, r1, #1
subs r3, r3, #1
bgt _020D4CB4
_020D4CC8:
cmp r2, #0
bgt _020D4CD4
b _020D4CD8
_020D4CD4:
mov lr, lr, lsl #1
_020D4CD8:
bgt _020D4C18
b _020D4C08
_020D4CE0:
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
arm_func_end MI_UncompressLZ8
arm_func_start sub_020D4CE8
sub_020D4CE8: ; 0x020D4CE8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r1
mov r6, r0
mov r7, r3
mvn r1, #0
mov r4, r2
bl sub_020D4310
mov r0, r6
mov r1, r5
mov r2, r7
mov r3, #0x1000000
bl sub_020D4394
cmp r7, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
add r0, r6, r6, lsl #1
add r0, r0, #2
mov r0, r0, lsl #2
add r0, r0, #0xb0
add r1, r0, #0x4000000
_020D4D34:
ldr r0, [r1]
tst r0, #0x80000000
bne _020D4D34
ldr r3, _020D4D58 ; =0xAF000001
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_01FF8448
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D4D58: .word 0xAF000001
arm_func_end sub_020D4CE8
arm_func_start sub_020D4D5C
sub_020D4D5C: ; 0x020D4D5C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
mov sl, r0
movs r0, r3
ldrne r0, _020D4F30 ; =0x00010110
str r3, [sp, #4]
strne r0, [sp, #8]
moveq r0, #0x12
streq r0, [sp, #8]
ldr r0, [sp, #4]
mov sb, r1
cmp r0, #0
movne r1, #1
mov r0, sb, lsl #8
moveq r1, #0
orr r0, r0, #0x10
mov r8, r2
orr r0, r0, r1
str sl, [sp, #0x10]
mov r7, sb
cmp sb, #0
str r0, [r8], #4
mov r4, #4
beq _020D4EFC
_020D4DBC:
ldr r0, _020D4F34 ; =0x00000111
mov r5, #0
str r8, [sp, #0xc]
mov r6, r5
add r8, r8, #1
add r4, r4, #1
rsb fp, r0, #0
_020D4DD8:
cmp sb, #0
mov r0, r5, lsl #1
and r5, r0, #0xff
beq _020D4EDC
ldr r0, [sp, #8]
mov r1, sl
str r0, [sp]
ldr r0, [sp, #0x10]
mov r2, sb
add r3, sp, #0x14
bl sub_020D4F38
cmp r0, #0
beq _020D4EBC
orr r1, r5, #1
add r2, r4, #2
cmp r2, r7
and r5, r1, #0xff
addhs sp, sp, #0x18
movhs r0, #0
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r1, [sp, #4]
cmp r1, #0
beq _020D4E84
ldr r1, _020D4F34 ; =0x00000111
cmp r0, r1
blo _020D4E64
mov r4, r2
add r1, r0, fp
mov r2, r1, lsr #0xc
orr r2, r2, #0x10
strb r2, [r8]
mov r2, r1, lsr #4
strb r2, [r8, #1]
add r8, r8, #2
b _020D4E88
_020D4E64:
cmp r0, #0x11
sublo r1, r0, #1
blo _020D4E88
sub r1, r0, #0x11
mov r2, r1, lsr #4
strb r2, [r8], #1
add r4, r4, #1
b _020D4E88
_020D4E84:
sub r1, r0, #3
_020D4E88:
ldrh r2, [sp, #0x14]
add r4, r4, #2
add sl, sl, r0
sub r2, r2, #1
mov r2, r2, asr #8
orr r1, r2, r1, lsl #4
strb r1, [r8]
sub sb, sb, r0
ldrh r0, [sp, #0x14]
sub r0, r0, #1
strb r0, [r8, #1]
add r8, r8, #2
b _020D4EDC
_020D4EBC:
add r4, r4, #1
cmp r4, r7
addhs sp, sp, #0x18
movhs r0, #0
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldrb r0, [sl], #1
sub sb, sb, #1
strb r0, [r8], #1
_020D4EDC:
add r0, r6, #1
and r6, r0, #0xff
cmp r6, #8
blo _020D4DD8
ldr r0, [sp, #0xc]
cmp sb, #0
strb r5, [r0]
bne _020D4DBC
_020D4EFC:
tst r4, #3
mov r2, #0
beq _020D4F24
mov r1, r2
_020D4F0C:
add r0, r2, #1
and r2, r0, #0xff
add r0, r4, r2
tst r0, #3
strb r1, [r8], #1
bne _020D4F0C
_020D4F24:
mov r0, r4
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020D4F30: .word 0x00010110
_020D4F34: .word 0x00000111
arm_func_end sub_020D4D5C
arm_func_start sub_020D4F38
sub_020D4F38: ; 0x020D4F38
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r7, [sp, #0x20]
mov r4, #2
cmp r2, #3
movlo r0, #0
ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
sub ip, r1, #0x1000
cmp ip, r0
movlo ip, r0
sub r6, r1, ip
cmp r6, #2
blt _020D5018
_020D4F68:
mov r0, r1
ldrb r5, [r1]
b _020D4F84
_020D4F74:
add ip, ip, #1
sub r6, r1, ip
cmp r6, #2
blt _020D5018
_020D4F84:
ldrb r8, [ip]
cmp r5, r8
ldreqb sb, [r1, #1]
ldreqb r8, [ip, #1]
cmpeq sb, r8
ldreqb sb, [r1, #2]
ldreqb r8, [ip, #2]
cmpeq sb, r8
bne _020D4F74
add sl, ip, #3
add r0, r0, #3
mov r5, #3
b _020D4FCC
_020D4FB8:
add r5, r5, #1
cmp r5, r7
add r0, r0, #1
add sl, sl, #1
beq _020D4FE8
_020D4FCC:
sub r8, r0, r1
cmp r8, r2
bhs _020D4FE8
ldrb sb, [r0]
ldrb r8, [sl]
cmp sb, r8
beq _020D4FB8
_020D4FE8:
cmp r5, r4
bls _020D5008
mov r0, r6, lsl #0x10
cmp r5, r7
mov r4, r5
mov lr, r0, lsr #0x10
cmpne r5, r2
beq _020D5018
_020D5008:
add ip, ip, #1
sub r6, r1, ip
cmp r6, #2
bge _020D4F68
_020D5018:
cmp r4, #3
movlo r0, #0
movhs r0, r4
strhsh lr, [r3]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_020D4F38
arm_func_start sub_020D502C
sub_020D502C: ; 0x020D502C
stmdb sp!, {r3, lr}
mov r0, #3
bl sub_020D3F64
mov r0, #0
bl sub_020D4294
ldmia sp!, {r3, pc}
arm_func_end sub_020D502C
arm_func_start sub_020D5044
sub_020D5044: ; 0x020D5044
stmdb sp!, {r3, lr}
mov r2, #0
mov r1, r0
mov r3, r2
mov r0, #1
str r2, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5044
arm_func_start sub_020D5064
sub_020D5064: ; 0x020D5064
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #2
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5064
arm_func_start sub_020D508C
sub_020D508C: ; 0x020D508C
stmdb sp!, {r3, lr}
mov r2, #0
mov r1, r0
mov r3, r2
mov r0, #3
str r2, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D508C
arm_func_start sub_020D50AC
sub_020D50AC: ; 0x020D50AC
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #4
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D50AC
arm_func_start sub_020D50CC
sub_020D50CC: ; 0x020D50CC
ldr ip, _020D50E0 ; =sub_020D543C
mov r2, r1
mov r1, #0x1a
mov r3, #2
bx ip
.align 2, 0
_020D50E0: .word sub_020D543C
arm_func_end sub_020D50CC
arm_func_start sub_020D50E4
sub_020D50E4: ; 0x020D50E4
ldr ip, _020D50F8 ; =sub_020D543C
mov r2, r1
mov r1, #6
mov r3, #2
bx ip
.align 2, 0
_020D50F8: .word sub_020D543C
arm_func_end sub_020D50E4
arm_func_start sub_020D50FC
sub_020D50FC: ; 0x020D50FC
ldr ip, _020D5110 ; =sub_020D543C
mov r2, r1
mov r1, #4
mov r3, #1
bx ip
.align 2, 0
_020D5110: .word sub_020D543C
arm_func_end sub_020D50FC
arm_func_start sub_020D5114
sub_020D5114: ; 0x020D5114
stmdb sp!, {r3, lr}
mov r3, r2
mov ip, #2
mov r2, #0xc
str ip, [sp]
bl sub_020D5464
ldmia sp!, {r3, pc}
arm_func_end sub_020D5114
arm_func_start sub_020D5130
sub_020D5130: ; 0x020D5130
stmdb sp!, {r3, lr}
mov r3, r2
mov ip, #1
mov r2, #9
str ip, [sp]
bl sub_020D5464
ldmia sp!, {r3, pc}
arm_func_end sub_020D5130
arm_func_start sub_020D514C
sub_020D514C: ; 0x020D514C
stmdb sp!, {r3, lr}
mov lr, r1
mov r3, r2
mov ip, #0
mov r1, r0
mov r2, lr
mov r0, #9
str ip, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D514C
arm_func_start sub_020D5174
sub_020D5174: ; 0x020D5174
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #0xc
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5174
arm_func_start sub_020D519C
sub_020D519C: ; 0x020D519C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r7, r2
mov sb, r0
mov r8, r1
mov r6, r3
mov r5, r7
mov r4, #0
b _020D51D4
_020D51BC:
tst r5, #1
beq _020D51CC
mov r0, r4
bl sub_020D5C70
_020D51CC:
add r4, r4, #1
mov r5, r5, lsr #1
_020D51D4:
cmp r4, #8
bge _020D51E4
cmp r5, #0
bne _020D51BC
_020D51E4:
mov r1, sb
mov r2, r8
mov r3, r7
mov r0, #0xd
str r6, [sp]
bl sub_020D548C
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_020D519C
arm_func_start sub_020D5200
sub_020D5200: ; 0x020D5200
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r4, r2
mov r5, r1
ldr r2, [sp, #0x18]
mov r6, r0
mov r1, r3
bl sub_020D5C90
str r0, [sp]
mov r1, r6
mov r2, r5
mov r3, r4
mov r0, #0x12
bl sub_020D548C
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end sub_020D5200
arm_func_start sub_020D5240
sub_020D5240: ; 0x020D5240
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x1a
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5240
arm_func_start sub_020D5260
sub_020D5260: ; 0x020D5260
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x1b
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5260
arm_func_start sub_020D5280
sub_020D5280: ; 0x020D5280
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x13
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5280
arm_func_start sub_020D52A0
sub_020D52A0: ; 0x020D52A0
stmdb sp!, {r3, lr}
mov lr, r1
mov r3, r2
mov ip, #0
mov r1, r0
mov r2, lr
mov r0, #0x14
str ip, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D52A0
arm_func_start sub_020D52C8
sub_020D52C8: ; 0x020D52C8
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x15
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D52C8
arm_func_start sub_020D52E8
sub_020D52E8: ; 0x020D52E8
stmdb sp!, {r3, r4, r5, lr}
ldr ip, [sp, #0x1c]
mov r1, r1, lsl #0x18
orr r4, r1, r3, lsl #26
ldr r5, [sp, #0x24]
mov r1, ip, lsl #0x16
ldr r3, [sp, #0x18]
ldr ip, [sp, #0x10]
orr r4, r4, r5, lsl #16
orr r4, ip, r4
ldr lr, [sp, #0x20]
orr r3, r1, r3, lsl #24
ldr ip, [sp, #0x14]
orr r1, r0, lr, lsl #16
orr r3, ip, r3
mov r0, #0xe
str r4, [sp]
bl sub_020D548C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D52E8
arm_func_start sub_020D5334
sub_020D5334: ; 0x020D5334
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x1e
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5334
arm_func_start sub_020D5354
sub_020D5354: ; 0x020D5354
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x1f
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5354
arm_func_start sub_020D5374
sub_020D5374: ; 0x020D5374
stmdb sp!, {r3, lr}
mov r2, r1
mov r3, #0
mov r1, r0
mov r0, #0x20
str r3, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5374
arm_func_start sub_020D5394
sub_020D5394: ; 0x020D5394
stmdb sp!, {r3, lr}
mov r2, #0
mov r1, r0
mov r3, r2
mov r0, #0x17
str r2, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5394
arm_func_start sub_020D53B4
sub_020D53B4: ; 0x020D53B4
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #0x19
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D53B4
arm_func_start sub_020D53DC
sub_020D53DC: ; 0x020D53DC
stmdb sp!, {r3, lr}
mov r2, #0
mov r1, r0
mov r3, r2
mov r0, #0x18
str r2, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D53DC
arm_func_start sub_020D53FC
sub_020D53FC: ; 0x020D53FC
stmdb sp!, {r3, lr}
mov r2, #0
mov r0, #0x18
mov r3, r2
sub r1, r0, #0x19
str r2, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D53FC
arm_func_start sub_020D541C
sub_020D541C: ; 0x020D541C
stmdb sp!, {r3, lr}
mov r2, #0
mov r1, r0
mov r3, r2
mov r0, #0x21
str r2, [sp]
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D541C
arm_func_start sub_020D543C
sub_020D543C: ; 0x020D543C
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #6
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D543C
arm_func_start sub_020D5464
sub_020D5464: ; 0x020D5464
stmdb sp!, {r3, lr}
ldr ip, [sp, #8]
mov lr, r2
str r3, [sp]
mov r2, r1
orr r1, r0, ip, lsl #24
mov r3, lr
mov r0, #7
bl sub_020D548C
ldmia sp!, {r3, pc}
arm_func_end sub_020D5464
arm_func_start sub_020D548C
sub_020D548C: ; 0x020D548C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r0, #1
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020D5714
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
str r7, [r0, #4]
str r6, [r0, #8]
str r5, [r0, #0xc]
ldr r1, [sp, #0x18]
str r4, [r0, #0x10]
str r1, [r0, #0x14]
bl sub_020D579C
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D548C
arm_func_start sub_020D54D0
sub_020D54D0: ; 0x020D54D0
stmdb sp!, {r3, lr}
ldr r1, _020D5500 ; =0x021E1A40
ldr r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _020D5504 ; =0x021E1A44
mov r2, #1
str r2, [r1]
bl sub_020D2600
bl sub_020D5530
bl sub_020D5C40
ldmia sp!, {r3, pc}
.align 2, 0
_020D5500: .word 0x021E1A40
_020D5504: .word 0x021E1A44
arm_func_end sub_020D54D0
arm_func_start sub_020D5508
sub_020D5508: ; 0x020D5508
ldr ip, _020D5514 ; =OS_LockMutex
ldr r0, _020D5518 ; =0x021E1A44
bx ip
.align 2, 0
_020D5514: .word OS_LockMutex
_020D5518: .word 0x021E1A44
arm_func_end sub_020D5508
arm_func_start sub_020D551C
sub_020D551C: ; 0x020D551C
ldr ip, _020D5528 ; =OS_UnlockMutex
ldr r0, _020D552C ; =0x021E1A44
bx ip
.align 2, 0
_020D5528: .word OS_UnlockMutex
_020D552C: .word 0x021E1A44
arm_func_end sub_020D551C
arm_func_start sub_020D5530
sub_020D5530: ; 0x020D5530
stmdb sp!, {r4, lr}
bl sub_020D5B30
ldr lr, _020D55EC ; =0x021E1D40
ldr r0, _020D55F0 ; =0x021E1A60
mov r4, #0
str lr, [r0]
mov r0, #0x18
mov r1, r0
b _020D5568
_020D5554:
add r3, r4, #1
mul r2, r4, r1
mla ip, r3, r0, lr
mov r4, r3
str ip, [lr, r2]
_020D5568:
cmp r4, #0xff
blt _020D5554
ldr r0, _020D55F4 ; =0x021E2A60
mov r3, #0
str r3, [r0, #0xac8]
ldr r1, _020D55F8 ; =0x021E3528
ldr r2, _020D55F0 ; =0x021E1A60
mov r0, #1
str r1, [r2, #0x10]
str r3, [r2, #8]
str r3, [r2, #0xc]
str r3, [r2, #0x1c]
str r3, [r2, #0x14]
str r3, [r2, #0x18]
str r0, [r2, #0x20]
ldr r0, _020D55FC ; =0x021E1AC0
ldr r1, _020D5600 ; =0x021E35A0
str r3, [r2, #4]
str r0, [r1]
bl sub_020D6068
mov r0, #1
bl sub_020D5714
cmp r0, #0
ldmeqia sp!, {r4, pc}
mov r2, #0x1d
ldr r1, _020D5600 ; =0x021E35A0
str r2, [r0, #4]
ldr r1, [r1]
str r1, [r0, #8]
bl sub_020D579C
mov r0, #1
bl sub_020D57D4
ldmia sp!, {r4, pc}
.align 2, 0
_020D55EC: .word 0x021E1D40
_020D55F0: .word 0x021E1A60
_020D55F4: .word 0x021E2A60
_020D55F8: .word 0x021E3528
_020D55FC: .word 0x021E1AC0
_020D5600: .word 0x021E35A0
arm_func_end sub_020D5530
arm_func_start sub_020D5604
sub_020D5604: ; 0x020D5604
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl OS_DisableInterrupts
mov r4, r0
tst r5, #1
beq _020D5660
bl sub_020D6040
ldr r5, _020D570C ; =0x021E1A60
ldr r1, [r5, #4]
cmp r1, r0
bne _020D5684
mov r6, #0x64
_020D5634:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r6
bl sub_020D3AA8
bl OS_DisableInterrupts
mov r4, r0
bl sub_020D6040
ldr r1, [r5, #4]
cmp r1, r0
beq _020D5634
b _020D5684
_020D5660:
bl sub_020D6040
ldr r1, _020D570C ; =0x021E1A60
ldr r1, [r1, #4]
cmp r1, r0
bne _020D5684
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_020D5684:
ldr r0, _020D570C ; =0x021E1A60
ldr r2, _020D5710 ; =0x021E1A84
ldr r3, [r0, #0x14]
add r1, r3, #1
ldr r5, [r2, r3, lsl #2]
str r1, [r0, #0x14]
cmp r1, #8
movgt r1, #0
strgt r1, [r0, #0x14]
ldr r0, [r5]
mov r2, r5
cmp r0, #0
beq _020D56C8
_020D56B8:
ldr r2, [r2]
ldr r0, [r2]
cmp r0, #0
bne _020D56B8
_020D56C8:
ldr r0, _020D570C ; =0x021E1A60
ldr r1, [r0, #0x10]
cmp r1, #0
strne r5, [r1]
streq r5, [r0]
ldr r1, _020D570C ; =0x021E1A60
mov r0, r4
str r2, [r1, #0x10]
ldr r2, [r1, #0x1c]
sub r2, r2, #1
str r2, [r1, #0x1c]
ldr r2, [r1, #4]
add r2, r2, #1
str r2, [r1, #4]
bl OS_RestoreInterrupts
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D570C: .word 0x021E1A60
_020D5710: .word 0x021E1A84
arm_func_end sub_020D5604
arm_func_start sub_020D5714
sub_020D5714: ; 0x020D5714
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_020D5C00
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
bl sub_020D5BB8
cmp r0, #0
ldmneia sp!, {r4, pc}
tst r4, #1
moveq r0, #0
ldmeqia sp!, {r4, pc}
bl sub_020D5AF0
cmp r0, #0
ble _020D5774
mov r4, #0
_020D5754:
mov r0, r4
bl sub_020D5604
cmp r0, #0
bne _020D5754
bl sub_020D5BB8
cmp r0, #0
beq _020D577C
ldmia sp!, {r4, pc}
_020D5774:
mov r0, #1
bl sub_020D57D4
_020D577C:
bl sub_020D5B90
mov r4, #1
_020D5784:
mov r0, r4
bl sub_020D5604
bl sub_020D5BB8
cmp r0, #0
beq _020D5784
ldmia sp!, {r4, pc}
arm_func_end sub_020D5714
arm_func_start sub_020D579C
sub_020D579C: ; 0x020D579C
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_DisableInterrupts
ldr r1, _020D57D0 ; =0x021E1A60
ldr r2, [r1, #0xc]
cmp r2, #0
streq r4, [r1, #8]
strne r4, [r2]
str r4, [r1, #0xc]
mov r1, #0
str r1, [r4]
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020D57D0: .word 0x021E1A60
arm_func_end sub_020D579C
arm_func_start sub_020D57D4
sub_020D57D4: ; 0x020D57D4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
bl OS_DisableInterrupts
ldr r4, _020D5984 ; =0x021E1A60
mov sb, r0
ldr r1, [r4, #8]
cmp r1, #0
bne _020D5800
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D5800:
ldr r1, [r4, #0x1c]
cmp r1, #8
blt _020D5858
tst sl, #1
bne _020D5820
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D5820:
mov r5, #1
_020D5824:
mov r0, r5
bl sub_020D5604
ldr r0, [r4, #0x1c]
cmp r0, #8
bge _020D5824
ldr r0, _020D5984 ; =0x021E1A60
ldr r0, [r0, #8]
cmp r0, #0
bne _020D5858
mov r0, sb
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D5858:
ldr r0, _020D5988 ; =0x021E1D40
mov r1, #0x1800
bl DC_FlushRange
ldr r1, _020D5984 ; =0x021E1A60
mov r0, #7
ldr r1, [r1, #8]
mov r2, #0
bl sub_020D66C4
cmp r0, #0
bge _020D5918
tst sl, #1
bne _020D5898
mov r0, sb
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D5898:
mov fp, #0
mov r5, #7
mov r8, fp
ldr r7, _020D5988 ; =0x021E1D40
mov r6, #0x1800
ldr r4, _020D5984 ; =0x021E1A60
b _020D58F4
_020D58B4:
mov r0, sb
bl OS_RestoreInterrupts
mov r0, r8
bl sub_020D5604
bl OS_DisableInterrupts
mov sb, r0
mov r0, r7
mov r1, r6
bl DC_FlushRange
ldr r0, [r4, #8]
cmp r0, #0
bne _020D58F4
mov r0, sb
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D58F4:
ldr r0, [r4, #0x1c]
cmp r0, #8
bge _020D58B4
ldr r1, [r4, #8]
mov r0, r5
mov r2, fp
bl sub_020D66C4
cmp r0, #0
blt _020D58B4
_020D5918:
ldr r0, _020D5984 ; =0x021E1A60
ldr r2, _020D598C ; =0x021E1A84
ldr r3, [r0, #0x18]
ldr r4, [r0, #8]
add r1, r3, #1
str r4, [r2, r3, lsl #2]
str r1, [r0, #0x18]
cmp r1, #8
movgt r1, #0
strgt r1, [r0, #0x18]
ldr r1, _020D5984 ; =0x021E1A60
mov r0, #0
str r0, [r1, #8]
str r0, [r1, #0xc]
ldr r2, [r1, #0x1c]
mov r0, sb
add r2, r2, #1
str r2, [r1, #0x1c]
ldr r2, [r1, #0x20]
add r2, r2, #1
str r2, [r1, #0x20]
bl OS_RestoreInterrupts
tst sl, #2
beq _020D597C
bl sub_020D5B90
_020D597C:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020D5984: .word 0x021E1A60
_020D5988: .word 0x021E1D40
_020D598C: .word 0x021E1A84
arm_func_end sub_020D57D4
arm_func_start sub_020D5990
sub_020D5990: ; 0x020D5990
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_020D5A28
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r4, #0
_020D59A8:
mov r0, r4
bl sub_020D5604
cmp r0, #0
bne _020D59A8
mov r0, r5
bl sub_020D5A28
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
bl sub_020D5B90
mov r0, r5
bl sub_020D5A28
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r4, #1
_020D59E0:
mov r0, r4
bl sub_020D5604
mov r0, r5
bl sub_020D5A28
cmp r0, #0
beq _020D59E0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D5990
arm_func_start sub_020D59FC
sub_020D59FC: ; 0x020D59FC
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020D5A24 ; =0x021E1A60
ldr r2, [r1, #8]
cmp r2, #0
ldreq r4, [r1, #4]
ldrne r4, [r1, #0x20]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D5A24: .word 0x021E1A60
arm_func_end sub_020D59FC
arm_func_start sub_020D5A28
sub_020D5A28: ; 0x020D5A28
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_DisableInterrupts
ldr r1, _020D5A74 ; =0x021E1A60
ldr r1, [r1, #4]
cmp r4, r1
bls _020D5A58
sub r1, r4, r1
cmp r1, #0x80000000
movlo r4, #0
movhs r4, #1
b _020D5A68
_020D5A58:
sub r1, r1, r4
cmp r1, #0x80000000
movlo r4, #1
movhs r4, #0
_020D5A68:
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D5A74: .word 0x021E1A60
arm_func_end sub_020D5A28
arm_func_start sub_020D5A78
sub_020D5A78: ; 0x020D5A78
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020D5AB0 ; =0x021E1A60
mov r4, #0
ldr r1, [r1]
cmp r1, #0
beq _020D5AA4
_020D5A94:
ldr r1, [r1]
add r4, r4, #1
cmp r1, #0
bne _020D5A94
_020D5AA4:
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D5AB0: .word 0x021E1A60
arm_func_end sub_020D5A78
arm_func_start sub_020D5AB4
sub_020D5AB4: ; 0x020D5AB4
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020D5AEC ; =0x021E1A60
mov r4, #0
ldr r1, [r1, #8]
cmp r1, #0
beq _020D5AE0
_020D5AD0:
ldr r1, [r1]
add r4, r4, #1
cmp r1, #0
bne _020D5AD0
_020D5AE0:
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D5AEC: .word 0x021E1A60
arm_func_end sub_020D5AB4
arm_func_start sub_020D5AF0
sub_020D5AF0: ; 0x020D5AF0
stmdb sp!, {r4, lr}
bl sub_020D5A78
mov r4, r0
bl sub_020D5AB4
rsb r1, r4, #0x100
sub r0, r1, r0
ldmia sp!, {r4, pc}
arm_func_end sub_020D5AF0
arm_func_start sub_020D5B0C
sub_020D5B0C: ; 0x020D5B0C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl OS_DisableInterrupts
mov r4, r0
mov r0, r5
bl sub_020D5CC0
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D5B0C
arm_func_start sub_020D5B30
sub_020D5B30: ; 0x020D5B30
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _020D5B8C ; =sub_020D5B0C
mov r0, #7
bl sub_020D6654
bl sub_020D5C00
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, #7
mov r1, #1
bl sub_020D66A0
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r6, #0x64
mov r5, #7
mov r4, #1
_020D5B6C:
mov r0, r6
bl sub_020D3AA8
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020D5B6C
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D5B8C: .word sub_020D5B0C
arm_func_end sub_020D5B30
arm_func_start sub_020D5B90
sub_020D5B90: ; 0x020D5B90
stmdb sp!, {r3, r4, r5, lr}
mov r5, #7
mov r4, #0
_020D5B9C:
mov r0, r5
mov r1, r4
mov r2, r4
bl sub_020D66C4
cmp r0, #0
blt _020D5B9C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D5B90
arm_func_start sub_020D5BB8
sub_020D5BB8: ; 0x020D5BB8
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020D5BFC ; =0x021E1A60
ldr r4, [r1]
cmp r4, #0
bne _020D5BDC
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r4, pc}
_020D5BDC:
ldr r2, [r4]
str r2, [r1]
cmp r2, #0
moveq r2, #0
streq r2, [r1, #0x10]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020D5BFC: .word 0x021E1A60
arm_func_end sub_020D5BB8
arm_func_start sub_020D5C00
sub_020D5C00: ; 0x020D5C00
stmdb sp!, {r4, lr}
bl sub_020D2368
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, pc}
bl OS_DisableInterrupts
ldr r1, _020D5C3C ; =0x04FFF200
mov r2, #0x10
str r2, [r1]
ldr r4, [r1]
bl OS_RestoreInterrupts
cmp r4, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_020D5C3C: .word 0x04FFF200
arm_func_end sub_020D5C00
arm_func_start sub_020D5C40
sub_020D5C40: ; 0x020D5C40
mov r1, #0
ldr r2, _020D5C6C ; =0x021E3540
mov r0, r1
_020D5C4C:
str r0, [r2]
str r0, [r2, #4]
add r1, r1, #1
strb r0, [r2, #8]
cmp r1, #8
add r2, r2, #0xc
blt _020D5C4C
bx lr
.align 2, 0
_020D5C6C: .word 0x021E3540
arm_func_end sub_020D5C40
arm_func_start sub_020D5C70
sub_020D5C70: ; 0x020D5C70
ldr r2, _020D5C8C ; =0x021E3540
mov r1, #0xc
mla r1, r0, r1, r2
ldrb r0, [r1, #8]
add r0, r0, #1
strb r0, [r1, #8]
bx lr
.align 2, 0
_020D5C8C: .word 0x021E3540
arm_func_end sub_020D5C70
arm_func_start sub_020D5C90
sub_020D5C90: ; 0x020D5C90
mov r3, #0xc
mul r3, r0, r3
ldr r0, _020D5CBC ; =0x021E3540
str r1, [r0, r3]
add r1, r0, r3
str r2, [r1, #4]
ldrb r0, [r1, #8]
add r0, r0, #1
strb r0, [r1, #8]
and r0, r0, #0xff
bx lr
.align 2, 0
_020D5CBC: .word 0x021E3540
arm_func_end sub_020D5C90
arm_func_start sub_020D5CC0
sub_020D5CC0: ; 0x020D5CC0
stmdb sp!, {r3, lr}
ldr r3, _020D5D00 ; =0x021E3540
and r2, r0, #0xff
mov r1, #0xc
mla r3, r2, r1, r3
mov r1, r0, asr #8
ldrb r0, [r3, #8]
and r1, r1, #0xff
cmp r1, r0
ldmneia sp!, {r3, pc}
ldr r1, [r3]
cmp r1, #0
ldmeqia sp!, {r3, pc}
ldr r0, [r3, #4]
blx r1
ldmia sp!, {r3, pc}
.align 2, 0
_020D5D00: .word 0x021E3540
arm_func_end sub_020D5CC0
arm_func_start sub_020D5D04
sub_020D5D04: ; 0x020D5D04
stmdb sp!, {r3, lr}
ldr r0, _020D5D2C ; =0x021E35A0
mov r1, #4
ldr r0, [r0]
add r0, r0, #4
bl sub_020D285C
ldr r0, _020D5D2C ; =0x021E35A0
ldr r0, [r0]
ldr r0, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020D5D2C: .word 0x021E35A0
arm_func_end sub_020D5D04
arm_func_start sub_020D5D30
sub_020D5D30: ; 0x020D5D30
stmdb sp!, {r3, lr}
ldr r0, _020D5D58 ; =0x021E35A0
mov r1, #2
ldr r0, [r0]
add r0, r0, #8
bl sub_020D285C
ldr r0, _020D5D58 ; =0x021E35A0
ldr r0, [r0]
ldrh r0, [r0, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_020D5D58: .word 0x021E35A0
arm_func_end sub_020D5D30
arm_func_start sub_020D5D5C
sub_020D5D5C: ; 0x020D5D5C
stmdb sp!, {r3, r4, r5, lr}
mov r2, #0x24
mul r4, r0, r2
ldr r0, _020D5DA0 ; =0x021E35A0
mov r5, r1
ldr r0, [r0]
mov r1, #2
add r0, r0, #0x20
add r0, r0, r4
add r0, r0, r5, lsl #1
bl sub_020D285C
ldr r0, _020D5DA0 ; =0x021E35A0
ldr r0, [r0]
add r0, r0, r4
add r0, r0, r5, lsl #1
ldrsh r0, [r0, #0x20]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D5DA0: .word 0x021E35A0
arm_func_end sub_020D5D5C
arm_func_start sub_020D5DA4
sub_020D5DA4: ; 0x020D5DA4
stmdb sp!, {r3, lr}
cmp r1, #0
blt _020D5DB8
cmp r1, #0xf
ble _020D5DC0
_020D5DB8:
mov r0, #0
ldmia sp!, {r3, pc}
_020D5DC0:
add r3, r0, #0x1000
ldr r3, [r3, #0x1c4]
mov lr, #1
ldr ip, [r2]
tst r3, lr, lsl r1
moveq lr, #0
mov r3, lr, lsl #0x1f
bic ip, ip, #2
orr ip, ip, r3, lsr #30
mov r3, ip, lsl #0x1e
str ip, [r2]
movs r3, r3, asr #0x1f
beq _020D5E94
add r0, r0, r1, lsl #2
add r0, r0, #0x1000
ldr r0, [r0, #0x180]
ldr r3, [r2]
tst r0, #0x80000000
movne lr, #1
moveq lr, #0
bic ip, r3, #1
and r3, lr, #1
orr r3, ip, r3
str r3, [r2]
and r1, r0, #0x7f
strh r1, [r2, #4]
ldrh r1, [r2, #4]
and r3, r0, #0x300
mov r3, r3, lsr #8
mov r1, r1, lsl #4
strh r1, [r2, #4]
cmp r3, #3
addls pc, pc, r3, lsl #2
b _020D5E84
_020D5E48: ; jump table
b _020D5E84 ; case 0
b _020D5E58 ; case 1
b _020D5E68 ; case 2
b _020D5E78 ; case 3
_020D5E58:
ldrh r1, [r2, #4]
mov r1, r1, asr #1
strh r1, [r2, #4]
b _020D5E84
_020D5E68:
ldrh r1, [r2, #4]
mov r1, r1, asr #2
strh r1, [r2, #4]
b _020D5E84
_020D5E78:
ldrh r1, [r2, #4]
mov r1, r1, asr #4
strh r1, [r2, #4]
_020D5E84:
and r0, r0, #0x7f0000
mov r0, r0, lsr #0x10
strb r0, [r2, #6]
b _020D5F2C
_020D5E94:
mov r3, #0x54
mla r0, r1, r3, r0
ldrb r1, [r0, #3]
bic r3, ip, #1
mov r1, r1, lsl #0x1f
mov r1, r1, lsr #0x1f
and r1, r1, #1
orr r1, r3, r1
str r1, [r2]
ldrb r1, [r0, #2]
str r1, [r2, #8]
ldrh r3, [r0, #0x24]
and r1, r3, #0xff
strh r1, [r2, #4]
ldrh r1, [r2, #4]
mov r3, r3, asr #8
cmp r3, #3
mov r1, r1, lsl #4
strh r1, [r2, #4]
addls pc, pc, r3, lsl #2
b _020D5F24
_020D5EE8: ; jump table
b _020D5F24 ; case 0
b _020D5EF8 ; case 1
b _020D5F08 ; case 2
b _020D5F18 ; case 3
_020D5EF8:
ldrh r1, [r2, #4]
mov r1, r1, asr #1
strh r1, [r2, #4]
b _020D5F24
_020D5F08:
ldrh r1, [r2, #4]
mov r1, r1, asr #2
strh r1, [r2, #4]
b _020D5F24
_020D5F18:
ldrh r1, [r2, #4]
mov r1, r1, asr #4
strh r1, [r2, #4]
_020D5F24:
ldrb r0, [r0, #0x23]
strb r0, [r2, #6]
_020D5F2C:
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_020D5DA4
arm_func_start sub_020D5F34
sub_020D5F34: ; 0x020D5F34
stmdb sp!, {r4, lr}
cmp r1, #0
blt _020D5F48
cmp r1, #0xf
ble _020D5F50
_020D5F48:
mov r0, #0
ldmia sp!, {r4, pc}
_020D5F50:
cmp r2, #0
blt _020D5F60
cmp r2, #0xf
ble _020D5F68
_020D5F60:
mov r0, #0
ldmia sp!, {r4, pc}
_020D5F68:
mov ip, #0x24
mla ip, r1, ip, r0
add r1, ip, r2
ldrb r2, [r1, #0x548]
cmp r2, #0xff
moveq r0, #0
ldmeqia sp!, {r4, pc}
add r1, r0, #0x780
add ip, r1, r2, lsl #6
ldrh r2, [ip, #2]
add r1, r0, #0x1000
strh r2, [r3]
ldrb r2, [ip, #4]
strb r2, [r3, #2]
ldrb r2, [ip, #5]
strb r2, [r3, #3]
ldrsb r2, [ip, #6]
strb r2, [r3, #4]
ldrb r2, [ip, #7]
strb r2, [r3, #5]
ldrsb r2, [ip, #8]
add r2, r2, #0x40
strb r2, [r3, #6]
ldrsb r2, [ip, #0x13]
strb r2, [r3, #7]
ldr r2, [ip, #0x3c]
ldr r1, [r1, #0x1c0]
cmp r2, #0
moveq r4, #0
subne r1, r2, r1
addne r4, r0, r1
mov r1, #0
strb r1, [r3, #9]
cmp r4, #0
beq _020D6038
add r1, r0, #0x1000
mov ip, #0
_020D5FFC:
ldrb r2, [r3, #9]
ldrb lr, [r4]
add r2, r3, r2
strb lr, [r2, #0xa]
ldrb r2, [r3, #9]
add r2, r2, #1
strb r2, [r3, #9]
ldr r2, [r4, #0x50]
ldr lr, [r1, #0x1c0]
cmp r2, #0
moveq r4, ip
subne r2, r2, lr
addne r4, r0, r2
cmp r4, #0
bne _020D5FFC
_020D6038:
mov r0, #1
ldmia sp!, {r4, pc}
arm_func_end sub_020D5F34
arm_func_start sub_020D6040
sub_020D6040: ; 0x020D6040
stmdb sp!, {r3, lr}
ldr r0, _020D6064 ; =0x021E35A0
mov r1, #4
ldr r0, [r0]
bl sub_020D285C
ldr r0, _020D6064 ; =0x021E35A0
ldr r0, [r0]
ldr r0, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020D6064: .word 0x021E35A0
arm_func_end sub_020D6040
arm_func_start sub_020D6068
sub_020D6068: ; 0x020D6068
stmdb sp!, {r4, lr}
mov ip, #0
str ip, [r0, #4]
strh ip, [r0, #8]
strh ip, [r0, #0xa]
mov r4, r0
str ip, [r0]
mvn r2, #0
mov r3, ip
_020D608C:
mov lr, r3
str r3, [r4, #0x40]
_020D6094:
add r1, r4, lr, lsl #1
add lr, lr, #1
strh r2, [r1, #0x20]
cmp lr, #0x10
blt _020D6094
add ip, ip, #1
cmp ip, #0x10
add r4, r4, #0x24
blt _020D608C
mov r3, #0
mvn r2, #0
_020D60C0:
add r1, r0, r3, lsl #1
add r1, r1, #0x200
add r3, r3, #1
strh r2, [r1, #0x60]
cmp r3, #0x10
blt _020D60C0
mov r1, #0x280
bl DC_FlushRange
ldmia sp!, {r4, pc}
arm_func_end sub_020D6068
arm_func_start sub_020D60E4
sub_020D60E4: ; 0x020D60E4
ldr r1, _020D614C ; =0xFFFFFD2D
cmp r0, r1
movlt r0, r1
blt _020D60FC
cmp r0, #0
movgt r0, #0
_020D60FC:
add r1, r0, #0xd3
mvn r2, #0xef
cmp r0, r2
ldr r3, _020D6150 ; =0x0210DE50
add r1, r1, #0x200
ldrb r3, [r3, r1]
movlt r0, #3
blt _020D613C
add r1, r2, #0x78
cmp r0, r1
movlt r0, #2
blt _020D613C
add r1, r2, #0xb4
cmp r0, r1
movlt r0, #1
movge r0, #0
_020D613C:
orr r0, r3, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
.align 2, 0
_020D614C: .word 0xFFFFFD2D
_020D6150: .word 0x0210DE50
arm_func_end sub_020D60E4
arm_func_start sub_020D6154
sub_020D6154: ; 0x020D6154
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020D5508
add r3, r6, r5, lsl #3
ldr r2, [r3, #0x18]
cmp r2, #0
beq _020D61E4
cmp r4, r2
bne _020D6188
bl sub_020D551C
ldmia sp!, {r4, r5, r6, pc}
_020D6188:
add r1, r6, #0x18
ldr r0, [r2, #0x18]
add ip, r1, r5, lsl #3
cmp ip, r0
bne _020D61B4
ldr r0, [r3, #0x1c]
mov r1, #0x3c
str r0, [r2, #0x18]
ldr r0, [r3, #0x18]
bl sub_020D2878
b _020D61E4
_020D61B4:
cmp r0, #0
beq _020D61D0
_020D61BC:
ldr r1, [r0, #4]
cmp ip, r1
movne r0, r1
cmpne r1, #0
bne _020D61BC
_020D61D0:
add r1, r6, r5, lsl #3
ldr r2, [r1, #0x1c]
mov r1, #8
str r2, [r0, #4]
bl sub_020D2878
_020D61E4:
add r0, r6, #0x18
ldr r1, [r4, #0x18]
add r0, r0, r5, lsl #3
str r0, [r4, #0x18]
add r0, r6, r5, lsl #3
str r1, [r0, #0x1c]
str r4, [r0, #0x18]
bl sub_020D551C
mov r0, r6
mov r1, #0x3c
bl sub_020D2878
mov r0, r4
mov r1, #0x3c
bl sub_020D2878
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020D6154
arm_func_start sub_020D6220
sub_020D6220: ; 0x020D6220
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r7, r0
bl sub_020D5508
add r5, r7, #0x18
mov r6, #0
mov r8, #8
mov r4, #0x3c
_020D623C:
add r1, r7, r6, lsl #3
ldr r0, [r1, #0x18]
cmp r0, #0
beq _020D62A0
ldr r3, [r0, #0x18]
cmp r5, r3
bne _020D626C
ldr r2, [r1, #0x1c]
mov r1, r4
str r2, [r0, #0x18]
bl sub_020D2878
b _020D62A0
_020D626C:
cmp r3, #0
beq _020D6288
_020D6274:
ldr r0, [r3, #4]
cmp r5, r0
movne r3, r0
cmpne r0, #0
bne _020D6274
_020D6288:
add r0, r7, r6, lsl #3
ldr r2, [r0, #0x1c]
mov r0, r3
mov r1, r8
str r2, [r3, #4]
bl sub_020D2878
_020D62A0:
add r6, r6, #1
cmp r6, #4
add r5, r5, #8
blt _020D623C
bl sub_020D551C
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020D6220
arm_func_start sub_020D62B8
sub_020D62B8: ; 0x020D62B8
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
bl sub_020D5508
ldr r0, [r4, #0x18]
cmp r0, #0
beq _020D62F8
mov r5, #0
mov r4, #8
_020D62D8:
ldr r6, [r0, #4]
mov r1, r4
str r5, [r0]
str r5, [r0, #4]
bl sub_020D2878
mov r0, r6
cmp r6, #0
bne _020D62D8
_020D62F8:
bl sub_020D551C
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020D62B8
arm_func_start sub_020D6300
sub_020D6300: ; 0x020D6300
sub sp, sp, #8
mov r1, #0
str r1, [r0]
str r1, [sp]
str r1, [sp, #4]
str r1, [r0, #4]
add sp, sp, #8
bx lr
arm_func_end sub_020D6300
arm_func_start sub_020D6320
sub_020D6320: ; 0x020D6320
stmdb sp!, {r3, r4, r5, lr}
ldr r4, [r2]
ldr r3, [r0, #0x38]
cmp r4, r3
bhs _020D64C8
mov ip, #0
_020D6338:
add r3, r0, r4, lsl #2
ldr r4, [r3, #0x3c]
and r3, r4, #0xff
strb r4, [r1]
cmp r3, #0x10
mov r4, r4, lsr #8
bgt _020D6380
cmp r3, #0x10
bge _020D63CC
cmp r3, #5
addls pc, pc, r3, lsl #2
b _020D64AC
_020D6368: ; jump table
b _020D64AC ; case 0
b _020D638C ; case 1
b _020D638C ; case 2
b _020D638C ; case 3
b _020D638C ; case 4
b _020D638C ; case 5
_020D6380:
cmp r3, #0x11
beq _020D6440
b _020D64AC
_020D638C:
add r5, r0, r4
ldrh r4, [r0, r4]
ldrh r3, [r5, #2]
mov r0, #1
strh r4, [r1, #2]
strh r3, [r1, #4]
ldrh r4, [r5, #4]
ldrh r3, [r5, #6]
strh r4, [r1, #6]
strh r3, [r1, #8]
ldrh r3, [r5, #8]
strh r3, [r1, #0xa]
ldr r1, [r2]
add r1, r1, #1
str r1, [r2]
ldmia sp!, {r3, r4, r5, pc}
_020D63CC:
add r5, r0, r4
b _020D6420
_020D63D4:
mov r0, #0xc
mla ip, lr, r0, r5
ldrh r4, [ip, #2]
ldrh r3, [ip, #4]
mov r0, #1
strh r4, [r1]
strh r3, [r1, #2]
ldrh r4, [ip, #6]
ldrh r3, [ip, #8]
strh r4, [r1, #4]
strh r3, [r1, #6]
ldrh r4, [ip, #0xa]
ldrh r3, [ip, #0xc]
strh r4, [r1, #8]
strh r3, [r1, #0xa]
ldr r1, [r2, #4]
add r1, r1, #1
str r1, [r2, #4]
ldmia sp!, {r3, r4, r5, pc}
_020D6420:
ldrb r4, [r5, #1]
ldrb r3, [r5]
ldr lr, [r2, #4]
sub r3, r4, r3
add r3, r3, #1
cmp lr, r3
blo _020D63D4
b _020D64AC
_020D6440:
add r4, r0, r4
b _020D64A0
_020D6448:
ldrb lr, [r4, r3]
cmp lr, #0
beq _020D64AC
mov r0, #0xc
mla lr, r3, r0, r4
ldrh ip, [lr, #8]
ldrh r3, [lr, #0xa]
mov r0, #1
strh ip, [r1]
strh r3, [r1, #2]
ldrh ip, [lr, #0xc]
ldrh r3, [lr, #0xe]
strh ip, [r1, #4]
strh r3, [r1, #6]
ldrh ip, [lr, #0x10]
ldrh r3, [lr, #0x12]
strh ip, [r1, #8]
strh r3, [r1, #0xa]
ldr r1, [r2, #4]
add r1, r1, #1
str r1, [r2, #4]
ldmia sp!, {r3, r4, r5, pc}
_020D64A0:
ldr r3, [r2, #4]
cmp r3, #8
blo _020D6448
_020D64AC:
ldr r3, [r2]
add r3, r3, #1
stmia r2, {r3, ip}
ldr r4, [r2]
ldr r3, [r0, #0x38]
cmp r4, r3
blo _020D6338
_020D64C8:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D6320
arm_func_start sub_020D64D0
sub_020D64D0: ; 0x020D64D0
ldr r0, [r0, #0x38]
bx lr
arm_func_end sub_020D64D0
arm_func_start sub_020D64D8
sub_020D64D8: ; 0x020D64D8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020D5508
add r0, r6, #0x3c
add r2, r6, r5, lsl #2
add r0, r0, r5, lsl #2
mov r1, #4
str r4, [r2, #0x3c]
bl sub_020D2878
bl sub_020D551C
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020D64D8
arm_func_start sub_020D650C
sub_020D650C: ; 0x020D650C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_020D5508
add r0, r5, r4, lsl #2
ldr r4, [r0, #0x3c]
cmp r4, #0
beq _020D6538
cmp r4, #0x2000000
addlo r4, r5, r4
b _020D653C
_020D6538:
mov r4, #0
_020D653C:
bl sub_020D551C
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D650C
arm_func_start sub_020D6548
sub_020D6548: ; 0x020D6548
ldr ip, _020D6550 ; =sub_020D6554
bx ip
.align 2, 0
_020D6550: .word sub_020D6554
arm_func_end sub_020D6548
arm_func_start sub_020D6554
sub_020D6554: ; 0x020D6554
stmdb sp!, {r3, r4, r5, lr}
bl OS_DisableInterrupts
ldr r1, _020D6638 ; =0x021E35A4
mov r4, r0
ldrh r0, [r1]
cmp r0, #0
bne _020D662C
mov r2, #1
strh r2, [r1]
mov r2, #0
ldr r0, _020D663C ; =0x027FFC00
mov r1, r2
str r2, [r0, #0x388]
ldr r0, _020D6640 ; =0x021E35A8
_020D658C:
str r1, [r0, r2, lsl #2]
add r2, r2, #1
cmp r2, #0x20
blt _020D658C
ldr r2, _020D6644 ; =0x0000C408
ldr r1, _020D6648 ; =0x04000184
mov r0, #0x40000
strh r2, [r1]
bl OS_ResetRequestIrqMask
ldr r1, _020D664C ; =sub_020D674C
mov r0, #0x40000
bl OS_SetIrqFunction
mov r0, #0x40000
bl OS_EnableIrqMask
mov r5, #0
ldr r3, _020D6650 ; =0x04000180
mov r1, r5
mov r2, #0x3e8
_020D65D4:
ldrh r0, [r3]
ands lr, r0, #0xf
mov r0, lr, lsl #8
strh r0, [r3]
bne _020D65F0
cmp r5, #4
bgt _020D662C
_020D65F0:
ldrh r0, [r3]
mov ip, r2
and r0, r0, #0xf
cmp r0, lr
bne _020D6624
_020D6604:
cmp ip, #0
movle r5, r1
ble _020D6624
ldrh r0, [r3]
sub ip, ip, #1
and r0, r0, #0xf
cmp r0, lr
beq _020D6604
_020D6624:
add r5, r5, #1
b _020D65D4
_020D662C:
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D6638: .word 0x021E35A4
_020D663C: .word 0x027FFC00
_020D6640: .word 0x021E35A8
_020D6644: .word 0x0000C408
_020D6648: .word 0x04000184
_020D664C: .word sub_020D674C
_020D6650: .word 0x04000180
arm_func_end sub_020D6554
arm_func_start sub_020D6654
sub_020D6654: ; 0x020D6654
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r5, r1
bl OS_DisableInterrupts
ldr r1, _020D6698 ; =0x021E35A8
ldr r3, _020D669C ; =0x027FFC00
str r5, [r1, r4, lsl #2]
cmp r5, #0
ldrne r2, [r3, #0x388]
mov r1, #1
orrne r1, r2, r1, lsl r4
mvneq r1, r1, lsl r4
ldreq r2, [r3, #0x388]
andeq r1, r2, r1
str r1, [r3, #0x388]
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D6698: .word 0x021E35A8
_020D669C: .word 0x027FFC00
arm_func_end sub_020D6654
arm_func_start sub_020D66A0
sub_020D66A0: ; 0x020D66A0
ldr r2, _020D66C0 ; =0x027FFC00
mov r3, #1
add r1, r2, r1, lsl #2
ldr r1, [r1, #0x388]
tst r1, r3, lsl r0
moveq r3, #0
mov r0, r3
bx lr
.align 2, 0
_020D66C0: .word 0x027FFC00
arm_func_end sub_020D66A0
arm_func_start sub_020D66C4
sub_020D66C4: ; 0x020D66C4
stmdb sp!, {r3, lr}
ldr ip, [sp]
ldr r3, _020D6748 ; =0x04000184
bic ip, ip, #0x1f
and r0, r0, #0x1f
orr ip, ip, r0
ldrh r0, [r3]
bic ip, ip, #0x20
mov r2, r2, lsl #0x1f
orr r2, ip, r2, lsr #26
and r2, r2, #0x3f
orr r1, r2, r1, lsl #6
str r1, [sp]
tst r0, #0x4000
beq _020D6714
ldrh r1, [r3]
mvn r0, #0
orr r1, r1, #0xc000
strh r1, [r3]
ldmia sp!, {r3, pc}
_020D6714:
bl OS_DisableInterrupts
ldr r2, _020D6748 ; =0x04000184
ldrh r1, [r2]
tst r1, #2
beq _020D6734
bl OS_RestoreInterrupts
mvn r0, #1
ldmia sp!, {r3, pc}
_020D6734:
ldr r1, [sp]
str r1, [r2, #4]
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020D6748: .word 0x04000184
arm_func_end sub_020D66C4
arm_func_start sub_020D674C
sub_020D674C: ; 0x020D674C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #4
mvn r8, #3
ldr r6, [sp]
ldr sb, _020D685C ; =0x04000184
ldr r4, _020D6860 ; =0x021E35A8
add sl, r8, #1
mov r7, #0x4100000
mov r5, #0
_020D6770:
ldrh r0, [sb]
tst r0, #0x4000
beq _020D6790
ldrh r0, [sb]
add r1, r8, #1
orr r0, r0, #0xc000
strh r0, [sb]
b _020D67BC
_020D6790:
bl OS_DisableInterrupts
ldrh r1, [sb]
tst r1, #0x100
beq _020D67AC
bl OS_RestoreInterrupts
mov r1, r8
b _020D67BC
_020D67AC:
ldr r6, [r7]
str r6, [sp]
bl OS_RestoreInterrupts
mov r1, r5
_020D67BC:
cmp r1, r8
addeq sp, sp, #4
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
cmp r1, sl
beq _020D6770
mov r0, r6, lsl #0x1b
movs r0, r0, lsr #0x1b
beq _020D6770
ldr r3, [r4, r0, lsl #2]
cmp r3, #0
beq _020D67FC
mov r2, r6, lsl #0x1a
mov r1, r6, lsr #6
mov r2, r2, lsr #0x1f
blx r3
b _020D6770
_020D67FC:
mov r0, r6, lsl #0x1a
movs r0, r0, lsr #0x1f
bne _020D6770
ldrh r0, [sb]
orr r6, r6, #0x20
str r6, [sp]
tst r0, #0x4000
beq _020D682C
ldrh r0, [sb]
orr r0, r0, #0xc000
strh r0, [sb]
b _020D6770
_020D682C:
bl OS_DisableInterrupts
ldrh r1, [sb]
tst r1, #2
beq _020D6844
bl OS_RestoreInterrupts
b _020D6770
_020D6844:
mov r1, r6
str r1, [sb, #4]
bl OS_RestoreInterrupts
b _020D6770
arm_func_end sub_020D674C
arm_func_start sub_020D6854
sub_020D6854: ; 0x020D6854
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020D685C: .word 0x04000184
_020D6860: .word 0x021E35A8
arm_func_end sub_020D6854
arm_func_start sub_020D6864
sub_020D6864: ; 0x020D6864
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r1
bl OS_DisableInterrupts
ldr r1, [r5]
mov r6, r0
ldr r0, [r5, #4]
cmp r1, #0
strne r0, [r1, #4]
cmp r0, #0
strne r1, [r0]
mov r0, #0
str r0, [r5]
str r0, [r5, #4]
ldr r1, [r5, #0xc]
add r0, r5, #0x18
bic r1, r1, #0x4f
str r1, [r5, #0xc]
str r4, [r5, #0x14]
bl sub_020D1ECC
mov r0, r6
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020D6864
arm_func_start sub_020D68C0
sub_020D68C0: ; 0x020D68C0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r0, [r8, #0xc]
ldr r5, [r8, #8]
mov r7, r1
mov r1, #1
tst r0, #4
mov r6, r1, lsl r7
moveq r1, #0
ldr r0, [r5, #0x1c]
cmp r1, #0
orrne r0, r0, #0x200
orreq r0, r0, #0x100
str r0, [r5, #0x1c]
ldr r0, [r5, #0x58]
tst r0, r6
beq _020D6968
ldr r2, [r5, #0x54]
mov r0, r8
mov r1, r7
blx r2
mov r4, r0
cmp r4, #8
addls pc, pc, r4, lsl #2
b _020D696C
_020D6924: ; jump table
b _020D6948 ; case 0
b _020D6948 ; case 1
b _020D696C ; case 2
b _020D696C ; case 3
b _020D6948 ; case 4
b _020D696C ; case 5
b _020D696C ; case 6
b _020D696C ; case 7
b _020D6950 ; case 8
_020D6948:
str r4, [r8, #0x14]
b _020D696C
_020D6950:
ldr r1, [r5, #0x58]
mvn r0, r6
and r0, r1, r0
str r0, [r5, #0x58]
mov r4, #7
b _020D696C
_020D6968:
mov r4, #7
_020D696C:
cmp r4, #7
bne _020D6988
ldr r1, _020D6A4C ; =0x0210E124
mov r0, r8
ldr r1, [r1, r7, lsl #2]
blx r1
mov r4, r0
_020D6988:
cmp r4, #6
bne _020D6A00
ldr r0, [r8, #0xc]
tst r0, #4
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D6A44
bl OS_DisableInterrupts
ldr r1, [r5, #0x1c]
mov r7, r0
tst r1, #0x200
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D69F0
mov r4, #0
mov r6, #1
_020D69D0:
add r0, r5, #0xc
bl sub_020D1E7C
ldr r0, [r5, #0x1c]
tst r0, #0x200
movne r0, r6
moveq r0, r4
cmp r0, #0
bne _020D69D0
_020D69F0:
mov r0, r7
ldr r4, [r8, #0x14]
bl OS_RestoreInterrupts
b _020D6A44
_020D6A00:
ldr r0, [r8, #0xc]
tst r0, #4
movne r0, #1
moveq r0, #0
cmp r0, #0
bne _020D6A34
ldr r1, [r5, #0x1c]
mov r0, r8
bic r2, r1, #0x100
mov r1, r4
str r2, [r5, #0x1c]
bl sub_020D6864
b _020D6A44
_020D6A34:
ldr r0, [r5, #0x1c]
bic r0, r0, #0x200
str r0, [r5, #0x1c]
str r4, [r8, #0x14]
_020D6A44:
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D6A4C: .word 0x0210E124
arm_func_end sub_020D68C0
arm_func_start sub_020D6A50
sub_020D6A50: ; 0x020D6A50
stmdb sp!, {r3, lr}
cmp r2, #0
mov lr, #0
bls _020D6A98
_020D6A60:
ldrb ip, [r0, lr]
ldrb r3, [r1, lr]
sub ip, ip, #0x41
cmp ip, #0x19
sub r3, r3, #0x41
addls ip, ip, #0x20
cmp r3, #0x19
addls r3, r3, #0x20
cmp ip, r3
subne r0, ip, r3
ldmneia sp!, {r3, pc}
add lr, lr, #1
cmp lr, r2
blo _020D6A60
_020D6A98:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020D6A50
arm_func_start sub_020D6AA0
sub_020D6AA0: ; 0x020D6AA0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r7, r0
ldr r4, [r7]
mov r6, r2
ldr r2, [r4, #0x1c]
mov r0, r4
orr r2, r2, #0x200
str r2, [r4, #0x1c]
ldr r2, [r7, #4]
ldr r5, [r4, #0x50]
mov r3, r6
blx r5
cmp r0, #0
cmpne r0, #1
beq _020D6AE8
cmp r0, #6
beq _020D6AF8
b _020D6B50
_020D6AE8:
ldr r1, [r4, #0x1c]
bic r1, r1, #0x200
str r1, [r4, #0x1c]
b _020D6B50
_020D6AF8:
bl OS_DisableInterrupts
ldr r1, [r4, #0x1c]
mov r5, r0
tst r1, #0x200
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D6B40
mov r8, #0
mov sb, #1
_020D6B20:
add r0, r4, #0xc
bl sub_020D1E7C
ldr r0, [r4, #0x1c]
tst r0, #0x200
movne r0, sb
moveq r0, r8
cmp r0, #0
bne _020D6B20
_020D6B40:
mov r0, r5
bl OS_RestoreInterrupts
ldr r0, [r4, #0x24]
ldr r0, [r0, #0x14]
_020D6B50:
ldr r1, [r7, #4]
add r1, r1, r6
str r1, [r7, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_020D6AA0
arm_func_start sub_020D6B60
sub_020D6B60: ; 0x020D6B60
ldr r3, [r0, #0xc]
mov r2, #0
orr r3, r3, #4
str r3, [r0, #0xc]
ldr r3, [r0, #8]
ldr ip, _020D6B90 ; =sub_020D68C0
str r3, [r0, #0x30]
str r2, [r0, #0x38]
strh r2, [r0, #0x36]
strh r1, [r0, #0x34]
mov r1, #2
bx ip
.align 2, 0
_020D6B90: .word sub_020D68C0
arm_func_end sub_020D6B60
arm_func_start sub_020D6B94
sub_020D6B94: ; 0x020D6B94
stmdb sp!, {r3, lr}
ldr r2, [r0, #0x2c]
ldr r3, [r0, #0x38]
ldr lr, [r0, #8]
ldr r1, [r0, #0x30]
add ip, r2, r3
str ip, [r0, #0x2c]
ldr ip, [lr, #0x48]
mov r0, lr
blx ip
ldmia sp!, {r3, pc}
arm_func_end sub_020D6B94
arm_func_start sub_020D6BC0
sub_020D6BC0: ; 0x020D6BC0
stmdb sp!, {r3, lr}
ldr r2, [r0, #0x2c]
ldr r3, [r0, #0x38]
ldr lr, [r0, #8]
ldr r1, [r0, #0x30]
add ip, r2, r3
str ip, [r0, #0x2c]
ldr ip, [lr, #0x4c]
mov r0, lr
blx ip
ldmia sp!, {r3, pc}
arm_func_end sub_020D6BC0
arm_func_start sub_020D6BEC
sub_020D6BEC: ; 0x020D6BEC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r6, r0
ldr r4, [r6, #8]
add r5, r6, #0x30
str r4, [sp]
ldrh r1, [r5, #4]
ldr r2, [r4, #0x34]
add r0, sp, #0
add r3, r2, r1, lsl #3
add r1, sp, #8
mov r2, #8
str r3, [sp, #4]
bl sub_020D6AA0
movs r3, r0
bne _020D6C74
add ip, r6, #0x20
ldmia r5, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldrh r0, [r5, #6]
cmp r0, #0
ldreq r0, [r5, #8]
cmpeq r0, #0
bne _020D6C64
ldrh r0, [sp, #0xc]
strh r0, [r6, #0x26]
ldr r1, [r4, #0x34]
ldr r0, [sp, #8]
add r0, r1, r0
str r0, [r6, #0x28]
_020D6C64:
ldrh r1, [sp, #0xe]
ldr r0, _020D6C80 ; =0x00000FFF
and r0, r1, r0
str r0, [r6, #0x2c]
_020D6C74:
mov r0, r3
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D6C80: .word 0x00000FFF
arm_func_end sub_020D6BEC
arm_func_start sub_020D6C84
sub_020D6C84: ; 0x020D6C84
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
ldr r4, [r5, #0x30]
ldr r1, [r5, #8]
add r0, sp, #4
str r1, [sp, #4]
ldr r3, [r5, #0x28]
add r1, sp, #0
mov r2, #1
str r3, [sp, #8]
bl sub_020D6AA0
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, pc}
ldrb r1, [sp]
and r2, r1, #0x7f
mov r1, r1, asr #7
str r2, [r4, #0x10]
and r1, r1, #1
str r1, [r4, #0xc]
ldr r2, [r4, #0x10]
cmp r2, #0
addeq sp, sp, #0xc
moveq r0, #1
ldmeqia sp!, {r4, r5, pc}
ldr r1, [r5, #0x34]
cmp r1, #0
bne _020D6D24
add r0, sp, #4
add r1, r4, #0x14
bl sub_020D6AA0
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, pc}
ldr r1, [r4, #0x10]
mov r2, #0
add r1, r4, r1
strb r2, [r1, #0x14]
b _020D6D30
_020D6D24:
ldr r1, [sp, #8]
add r1, r1, r2
str r1, [sp, #8]
_020D6D30:
ldr r1, [r4, #0xc]
cmp r1, #0
beq _020D6D80
add r0, sp, #4
add r1, sp, #2
mov r2, #2
bl sub_020D6AA0
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, pc}
ldr r2, [r5, #8]
ldr r1, _020D6DAC ; =0x00000FFF
str r2, [r4]
ldrh r3, [sp, #2]
mov r2, #0
and r1, r3, r1
strh r1, [r4, #4]
strh r2, [r4, #6]
str r2, [r4, #8]
b _020D6D9C
_020D6D80:
ldr r1, [r5, #8]
str r1, [r4]
ldrh r1, [r5, #0x26]
str r1, [r4, #4]
ldrh r1, [r5, #0x26]
add r1, r1, #1
strh r1, [r5, #0x26]
_020D6D9C:
ldr r1, [sp, #8]
str r1, [r5, #0x28]
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020D6DAC: .word 0x00000FFF
arm_func_end sub_020D6C84
arm_func_start sub_020D6DB0
sub_020D6DB0: ; 0x020D6DB0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x94
mov sb, r0
ldr r5, [sb, #0x3c]
mov r1, #2
ldr r6, [sb, #0x40]
bl sub_020D68C0
ldrb r3, [r5]
cmp r3, #0
beq _020D6F68
_020D6DD8:
mov r8, #0
mov r0, #1
mov r1, r8
b _020D6DEC
_020D6DE8:
add r8, r8, #1
_020D6DEC:
ldrb r7, [r5, r8]
mov r2, r1
cmp r7, #0
cmpne r7, #0x2f
cmpne r7, #0x5c
movne r2, r0
cmp r2, #0
bne _020D6DE8
cmp r7, #0
cmpeq r6, #0
movne r7, #1
cmp r8, #0
addeq sp, sp, #0x94
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
cmp r3, #0x2e
bne _020D6E80
cmp r8, #1
addeq r5, r5, #1
beq _020D6F4C
ldrb r0, [r5, #1]
cmp r8, #2
moveq r1, #1
movne r1, #0
cmp r0, #0x2e
moveq r0, #1
movne r0, #0
tst r1, r0
beq _020D6E80
ldrh r0, [sb, #0x24]
cmp r0, #0
beq _020D6E78
ldr r1, [sb, #0x2c]
mov r0, sb
bl sub_020D6B60
_020D6E78:
add r5, r5, #2
b _020D6F4C
_020D6E80:
cmp r8, #0x7f
addgt sp, sp, #0x94
movgt r0, #1
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
add r1, sp, #0
mov r0, #0
str r1, [sb, #0x30]
str r0, [sb, #0x34]
add sl, sp, #0x14
mov r4, #3
_020D6EA8:
mov r0, sb
mov r1, r4
bl sub_020D68C0
cmp r0, #0
addne sp, sp, #0x94
movne r0, #1
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
ldr r0, [sp, #0xc]
cmp r7, r0
ldreq r0, [sp, #0x10]
cmpeq r8, r0
bne _020D6EA8
mov r0, r5
mov r1, sl
mov r2, r8
bl sub_020D6A50
cmp r0, #0
bne _020D6EA8
cmp r7, #0
beq _020D6F1C
add r0, sp, #0
add r3, sb, #0x30
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, sb
mov r1, #2
add r5, r5, r8
bl sub_020D68C0
b _020D6F4C
_020D6F1C:
cmp r6, #0
addne sp, sp, #0x94
movne r0, #1
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
ldr r3, [sb, #0x44]
ldr r2, [sp]
ldr r1, [sp, #4]
add sp, sp, #0x94
str r2, [r3]
mov r0, #0
str r1, [r3, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
_020D6F4C:
ldrb r0, [r5]
cmp r0, #0
movne r0, #1
moveq r0, #0
ldrb r3, [r5, r0]!
cmp r3, #0
bne _020D6DD8
_020D6F68:
cmp r6, #0
addeq sp, sp, #0x94
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
ldr r3, [sb, #0x44]
add r0, sb, #0x20
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, #0
add sp, sp, #0x94
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_020D6DB0
arm_func_start sub_020D6F94
sub_020D6F94: ; 0x020D6F94
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xe0
mov sl, r0
ldr r1, [sl, #8]
add r0, sp, #4
str r1, [sp]
bl FS_InitFile
ldr r0, [sl, #8]
str r0, [sp, #0xc]
ldr r0, [sl, #0xc]
tst r0, #0x20
movne r0, #1
moveq r0, #0
cmp r0, #0
ldrneh sb, [sl, #0x24]
movne r6, #0x10000
bne _020D7078
ldrh r0, [sl, #0x38]
ldr r6, [sl, #0x20]
cmp r0, #0
ldrneh sb, [sl, #0x3a]
bne _020D7078
mov r7, #0
mov r8, r7
mov sb, #0x10000
add r5, sp, #4
mov r4, #3
add fp, sp, #0x4c
_020D7004:
mov r0, r5
mov r1, r7
bl sub_020D6B60
mov r2, #1
cmp r7, #0
mov r0, r5
mov r1, #3
ldreq r8, [sp, #0x30]
str fp, [sp, #0x34]
str r2, [sp, #0x38]
bl sub_020D68C0
cmp r0, #0
bne _020D7064
_020D7038:
ldr r0, [sp, #0x58]
cmp r0, #0
ldreq r0, [sp, #0x50]
cmpeq r0, r6
ldreqh sb, [sp, #0x28]
beq _020D7064
mov r0, r5
mov r1, r4
bl sub_020D68C0
cmp r0, #0
beq _020D7038
_020D7064:
cmp sb, #0x10000
bne _020D7078
add r7, r7, #1
cmp r7, r8
blo _020D7004
_020D7078:
cmp sb, #0x10000
bne _020D7094
mov r0, #0
strh r0, [sl, #0x38]
add sp, sp, #0xe0
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D7094:
ldrh r0, [sl, #0x38]
cmp r0, #0
bne _020D7178
ldr r0, [sp]
mov r1, #0
ldr r0, [r0]
cmp r0, #0xff
addls r8, r1, #1
bls _020D70C4
cmp r0, #0xff00
addls r8, r1, #2
addhi r8, r1, #3
_020D70C4:
cmp r6, #0x10000
ldrne r0, [sp, #0x5c]
add r8, r8, #2
addne r8, r8, r0
mov r7, sb
cmp sb, #0
beq _020D716C
add r0, sp, #4
mov r1, sb
bl sub_020D6B60
add r5, sp, #4
mov r4, #3
add fp, sp, #0x4c
_020D70F8:
ldr r1, [sp, #0x30]
mov r0, r5
bl sub_020D6B60
mov r1, #1
str r1, [sp, #0x38]
mov r0, r5
mov r1, #3
str fp, [sp, #0x34]
bl sub_020D68C0
cmp r0, #0
bne _020D7160
_020D7124:
ldr r0, [sp, #0x58]
cmp r0, #0
beq _020D714C
ldrh r0, [sp, #0x50]
cmp r0, r7
bne _020D714C
ldr r0, [sp, #0x5c]
add r0, r0, #1
add r8, r8, r0
b _020D7160
_020D714C:
mov r0, r5
mov r1, r4
bl sub_020D68C0
cmp r0, #0
beq _020D7124
_020D7160:
ldrh r7, [sp, #0x28]
cmp r7, #0
bne _020D70F8
_020D716C:
add r0, r8, #1
strh r0, [sl, #0x38]
strh sb, [sl, #0x3a]
_020D7178:
ldr r5, [sl, #0x30]
cmp r5, #0
addeq sp, sp, #0xe0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldrh r4, [sl, #0x38]
ldr r0, [sl, #0x34]
cmp r0, r4
addlo sp, sp, #0xe0
movlo r0, #1
ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [sp]
mov r7, #0
ldr r0, [r0]
cmp r0, #0xff
movls r8, #1
bls _020D71C8
cmp r0, #0xff00
movls r8, #2
movhi r8, #3
_020D71C8:
ldr r0, [sp]
mov r1, r5
mov r2, r8
bl MIi_CpuCopy8
add r1, r7, r8
ldr r0, _020D733C ; =_02110C98
add r1, r5, r1
mov r2, #2
bl MIi_CpuCopy8
add r0, sp, #4
mov r1, sb
bl sub_020D6B60
cmp r6, #0x10000
beq _020D7278
add r3, sp, #0x4c
mov r2, #0
add r0, sp, #4
mov r1, #3
str r3, [sp, #0x34]
str r2, [sp, #0x38]
bl sub_020D68C0
cmp r0, #0
bne _020D7254
add r8, sp, #4
mov r7, #3
_020D722C:
ldr r0, [sp, #0x58]
cmp r0, #0
ldreq r0, [sp, #0x50]
cmpeq r0, r6
beq _020D7254
mov r0, r8
mov r1, r7
bl sub_020D68C0
cmp r0, #0
beq _020D722C
_020D7254:
ldr r0, [sp, #0x5c]
add r1, r5, r4
add r6, r0, #1
add r0, sp, #0x60
mov r2, r6
sub r1, r1, r6
bl MIi_CpuCopy8
sub r4, r4, r6
b _020D7288
_020D7278:
add r0, r5, r4
mov r1, #0
strb r1, [r0, #-1]
sub r4, r4, #1
_020D7288:
cmp sb, #0
beq _020D7330
add sl, sp, #4
mov r6, #3
add r8, sp, #0x4c
mov r7, #0
mov fp, #0x2f
_020D72A4:
ldr r1, [sp, #0x30]
mov r0, sl
bl sub_020D6B60
add r1, r5, r4
str r8, [sp, #0x34]
str r7, [sp, #0x38]
strb fp, [r1, #-1]
mov r0, sl
mov r1, #3
sub r4, r4, #1
bl sub_020D68C0
cmp r0, #0
bne _020D7324
_020D72D8:
ldr r0, [sp, #0x58]
cmp r0, #0
beq _020D7310
ldrh r0, [sp, #0x50]
cmp r0, sb
bne _020D7310
ldr sb, [sp, #0x5c]
add r1, r5, r4
add r0, sp, #0x60
mov r2, sb
sub r1, r1, sb
bl MIi_CpuCopy8
sub r4, r4, sb
b _020D7324
_020D7310:
mov r0, sl
mov r1, r6
bl sub_020D68C0
cmp r0, #0
beq _020D72D8
_020D7324:
ldrh sb, [sp, #0x28]
cmp sb, #0
bne _020D72A4
_020D7330:
mov r0, #0
add sp, sp, #0xe0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020D733C: .word _02110C98
arm_func_end sub_020D6F94
arm_func_start sub_020D7340
sub_020D7340: ; 0x020D7340
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r0
ldr r1, [r5, #8]
ldr r4, [r5, #0x34]
ldr r0, [r1, #0x30]
mov r2, r4, lsl #3
cmp r0, r4, lsl #3
addls sp, sp, #0x10
movls r0, #1
ldmlsia sp!, {r3, r4, r5, pc}
str r1, [sp]
ldr r1, [r1, #0x2c]
add r0, sp, #0
add r3, r1, r2
add r1, sp, #8
mov r2, #8
str r3, [sp, #4]
bl sub_020D6AA0
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r3, r4, r5, pc}
ldr r1, [sp, #8]
mov r0, r5
str r1, [r5, #0x30]
ldr r2, [sp, #0xc]
mov r1, #7
str r2, [r5, #0x34]
str r4, [r5, #0x38]
bl sub_020D68C0
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D7340
arm_func_start sub_020D73C0
sub_020D73C0: ; 0x020D73C0
ldr r1, [r0, #0x30]
str r1, [r0, #0x24]
ldr r1, [r0, #0x30]
str r1, [r0, #0x2c]
ldr r1, [r0, #0x34]
str r1, [r0, #0x28]
ldr r1, [r0, #0x38]
str r1, [r0, #0x20]
mov r0, #0
bx lr
arm_func_end sub_020D73C0
arm_func_start sub_020D73E8
sub_020D73E8: ; 0x020D73E8
mov r0, #0
bx lr
arm_func_end sub_020D73E8
arm_func_start sub_020D73F0
sub_020D73F0: ; 0x020D73F0
stmdb sp!, {r3, lr}
cmp r1, #3
mov r3, #0
bgt _020D7440
mov ip, r3
cmp r1, #0
ble _020D7440
mov lr, r3
_020D7410:
ldrb r2, [r0, ip]
cmp r2, #0
beq _020D7440
sub r2, r2, #0x41
cmp r2, #0x19
addls r2, r2, #0x61
addhi r2, r2, #0x41
add ip, ip, #1
orr r3, r3, r2, lsl lr
cmp ip, r1
add lr, lr, #8
blt _020D7410
_020D7440:
mov r0, r3
ldmia sp!, {r3, pc}
arm_func_end sub_020D73F0
arm_func_start sub_020D7448
sub_020D7448: ; 0x020D7448
stmdb sp!, {r3, lr}
ldr r0, [r0, #0x28]
add r0, r0, r2
mov r2, r3
bl MIi_CpuCopy8
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020D7448
arm_func_start sub_020D7464
sub_020D7464: ; 0x020D7464
stmdb sp!, {r3, lr}
ldr ip, [r0, #0x28]
mov r0, r1
add r1, ip, r2
mov r2, r3
bl MIi_CpuCopy8
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020D7464
arm_func_start sub_020D7484
sub_020D7484: ; 0x020D7484
stmdb sp!, {r3, lr}
mov r0, r2
mov r2, r3
bl MIi_CpuCopy8
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020D7484
arm_func_start sub_020D749C
sub_020D749C: ; 0x020D749C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x48
mov r6, r0
bl OS_DisableInterrupts
ldr r1, [r6, #0x1c]
mov r4, r0
tst r1, #0x20
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D7530
ldr r0, [r6, #0x1c]
bic r0, r0, #0x20
str r0, [r6, #0x1c]
ldr r0, [r6, #0x24]
cmp r0, #0
beq _020D7530
mov r8, #0
mov sb, #1
mov r7, #3
_020D74EC:
ldr r1, [r0, #0xc]
ldr r5, [r0, #4]
tst r1, #2
movne r1, sb
moveq r1, r8
cmp r1, #0
beq _020D7524
ldr r1, [r6, #0x24]
cmp r1, r0
mov r1, r7
streq r5, [r6, #0x24]
bl sub_020D6864
cmp r5, #0
ldreq r5, [r6, #0x24]
_020D7524:
mov r0, r5
cmp r5, #0
bne _020D74EC
_020D7530:
ldr r0, [r6, #0x1c]
tst r0, #0x40
movne r0, #1
moveq r0, #0
cmp r0, #0
bne _020D7620
ldr r0, [r6, #0x1c]
tst r0, #8
movne r0, #1
moveq r0, #0
cmp r0, #0
bne _020D7620
ldr r5, [r6, #0x24]
cmp r5, #0
beq _020D7620
ldr r0, [r6, #0x1c]
tst r0, #0x10
movne r0, #1
moveq r0, #0
cmp r0, #0
moveq r7, #1
movne r7, #0
cmp r7, #0
ldrne r0, [r6, #0x1c]
orrne r0, r0, #0x10
strne r0, [r6, #0x1c]
mov r0, r4
bl OS_RestoreInterrupts
cmp r7, #0
beq _020D75C4
ldr r0, [r6, #0x58]
tst r0, #0x200
beq _020D75C4
ldr r2, [r6, #0x54]
mov r0, r5
mov r1, #9
blx r2
_020D75C4:
bl OS_DisableInterrupts
ldr r1, [r5, #0xc]
mov r4, r0
orr r0, r1, #0x40
str r0, [r5, #0xc]
ldr r0, [r5, #0xc]
tst r0, #4
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D760C
add r0, r5, #0x18
bl sub_020D1ECC
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #0x48
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_020D760C:
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #0x48
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_020D7620:
ldr r0, [r6, #0x1c]
tst r0, #0x10
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D766C
ldr r0, [r6, #0x1c]
bic r0, r0, #0x10
str r0, [r6, #0x1c]
ldr r0, [r6, #0x58]
tst r0, #0x400
beq _020D766C
add r0, sp, #0
bl FS_InitFile
str r6, [sp, #8]
ldr r2, [r6, #0x54]
add r0, sp, #0
mov r1, #0xa
blx r2
_020D766C:
ldr r0, [r6, #0x1c]
tst r0, #0x40
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D769C
ldr r1, [r6, #0x1c]
add r0, r6, #0x14
bic r1, r1, #0x40
orr r1, r1, #8
str r1, [r6, #0x1c]
bl sub_020D1ECC
_020D769C:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #0
add sp, sp, #0x48
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_020D749C
arm_func_start sub_020D76B0
sub_020D76B0: ; 0x020D76B0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r6, r0
ldr r4, [r6, #8]
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r7, #0
mov r8, #1
_020D76C8:
bl OS_DisableInterrupts
ldr r1, [r6, #0xc]
mov r5, r0
orr r0, r1, #0x40
str r0, [r6, #0xc]
ldr r0, [r6, #0xc]
tst r0, #4
movne r0, r8
moveq r0, r7
cmp r0, #0
beq _020D7708
add r0, r6, #0x18
bl sub_020D1ECC
mov r0, r5
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D7708:
ldr r1, [r6, #0xc]
mov r0, r5
orr r1, r1, #8
str r1, [r6, #0xc]
bl OS_RestoreInterrupts
ldr r1, [r6, #0x10]
mov r0, r6
bl sub_020D68C0
cmp r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r4
bl sub_020D749C
movs r6, r0
bne _020D76C8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020D76B0
arm_func_start sub_020D7744
sub_020D7744: ; 0x020D7744
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x10]
bl sub_020D68C0
mov r1, r0
mov r0, r4
bl sub_020D6864
ldr r0, [r4, #8]
bl sub_020D749C
cmp r0, #0
beq _020D7774
bl sub_020D76B0
_020D7774:
ldr r0, [r4, #0x14]
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_020D7744
arm_func_start sub_020D7788
sub_020D7788: ; 0x020D7788
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
ldr r4, [r6, #8]
mov r2, #1
str r1, [r6, #0x10]
mov r0, #2
str r0, [r6, #0x14]
ldr r0, [r6, #0xc]
mov r7, r2, lsl r1
orr r0, r0, #1
str r0, [r6, #0xc]
bl OS_DisableInterrupts
ldr r1, [r4, #0x1c]
mov r5, r0
tst r1, #0x80
beq _020D77E4
mov r0, r6
mov r1, #3
bl sub_020D6864
mov r0, r5
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D77E4:
tst r7, #0x1fc
ldrne r0, [r6, #0xc]
orrne r0, r0, #4
strne r0, [r6, #0xc]
ldr r1, [r6]
ldr r2, [r6, #4]
cmp r1, #0
strne r2, [r1, #4]
cmp r2, #0
add r0, r4, #0x20
strne r1, [r2]
ldr r1, [r0, #4]
cmp r1, #0
beq _020D782C
_020D781C:
mov r0, r1
ldr r1, [r1, #4]
cmp r1, #0
bne _020D781C
_020D782C:
str r6, [r0, #4]
str r0, [r6]
mov r1, #0
str r1, [r6, #4]
ldr r0, [r4, #0x1c]
tst r0, #8
movne r1, #1
cmp r1, #0
bne _020D78DC
ldr r0, [r4, #0x1c]
tst r0, #0x10
movne r0, #1
moveq r0, #0
cmp r0, #0
bne _020D78DC
ldr r1, [r4, #0x1c]
mov r0, r5
orr r1, r1, #0x10
str r1, [r4, #0x1c]
bl OS_RestoreInterrupts
ldr r0, [r4, #0x58]
tst r0, #0x200
beq _020D7898
ldr r2, [r4, #0x54]
mov r0, r6
mov r1, #9
blx r2
_020D7898:
bl OS_DisableInterrupts
ldr r1, [r6, #0xc]
orr r1, r1, #0x40
str r1, [r6, #0xc]
ldr r1, [r6, #0xc]
tst r1, #4
movne r1, #1
moveq r1, #0
cmp r1, #0
bne _020D78D4
bl OS_RestoreInterrupts
mov r0, r6
bl sub_020D76B0
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D78D4:
bl OS_RestoreInterrupts
b _020D7920
_020D78DC:
ldr r0, [r6, #0xc]
tst r0, #4
movne r0, #1
moveq r0, #0
cmp r0, #0
bne _020D7904
mov r0, r5
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D7904:
add r0, r6, #0x18
bl sub_020D1E7C
ldr r0, [r6, #0xc]
tst r0, #0x40
beq _020D7904
mov r0, r5
bl OS_RestoreInterrupts
_020D7920:
mov r0, r6
bl sub_020D7744
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D7788
arm_func_start sub_020D792C
sub_020D792C: ; 0x020D792C
stmdb sp!, {r4, lr}
mov r1, #0
mov r2, #0x5c
mov r4, r0
bl MI_CpuFill8
mov r0, #0
str r0, [r4, #0x10]
str r0, [r4, #0xc]
str r0, [r4, #0x18]
str r0, [r4, #0x14]
ldmia sp!, {r4, pc}
arm_func_end sub_020D792C
arm_func_start sub_020D7958
sub_020D7958: ; 0x020D7958
stmdb sp!, {r3, r4, r5, lr}
bl sub_020D73F0
mov r4, r0
bl OS_DisableInterrupts
ldr r1, _020D7994 ; =0x021E3628
ldr r5, [r1]
b _020D7978
_020D7974:
ldr r5, [r5, #4]
_020D7978:
cmp r5, #0
ldrne r1, [r5]
cmpne r1, r4
bne _020D7974
bl OS_RestoreInterrupts
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D7994: .word 0x021E3628
arm_func_end sub_020D7958
arm_func_start sub_020D7998
sub_020D7998: ; 0x020D7998
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r1
mov r5, r2
mov r7, r0
mov r8, #0
bl OS_DisableInterrupts
mov r4, r0
mov r0, r6
mov r1, r5
bl sub_020D7958
cmp r0, #0
bne _020D7A38
ldr r0, _020D7A48 ; =0x021E3628
ldr r1, [r0]
cmp r1, #0
bne _020D79F4
str r7, [r0]
str r7, [r0, #4]
mov r1, r8
str r1, [r0, #0xc]
strh r1, [r0, #0xa]
strh r1, [r0, #8]
b _020D7A18
_020D79F4:
ldr r0, [r1, #4]
cmp r0, #0
beq _020D7A10
_020D7A00:
mov r1, r0
ldr r0, [r0, #4]
cmp r0, #0
bne _020D7A00
_020D7A10:
str r7, [r1, #4]
str r1, [r7, #8]
_020D7A18:
mov r0, r6
mov r1, r5
bl sub_020D73F0
str r0, [r7]
ldr r0, [r7, #0x1c]
mov r8, #1
orr r0, r0, #1
str r0, [r7, #0x1c]
_020D7A38:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D7A48: .word 0x021E3628
arm_func_end sub_020D7998
arm_func_start sub_020D7A4C
sub_020D7A4C: ; 0x020D7A4C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
bl OS_DisableInterrupts
ldr r2, [r4, #4]
mov r3, #0
cmp r2, #0
ldrne r1, [r4, #8]
strne r1, [r2, #8]
ldr r2, [r4, #8]
cmp r2, #0
ldrne r1, [r4, #4]
strne r1, [r2, #4]
str r3, [r4]
str r3, [r4, #8]
str r3, [r4, #4]
ldr r2, [r4, #0x1c]
ldr r1, _020D7ACC ; =0x021E3628
bic r2, r2, #1
str r2, [r4, #0x1c]
ldr r2, [r1, #4]
cmp r2, r4
bne _020D7AC4
ldr r2, [r1]
str r2, [r1, #4]
str r3, [r1, #0xc]
strh r3, [r1, #0xa]
strh r3, [r1, #8]
_020D7AC4:
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020D7ACC: .word 0x021E3628
arm_func_end sub_020D7A4C
arm_func_start sub_020D7AD0
sub_020D7AD0: ; 0x020D7AD0
str r1, [r0, #0x28]
str r3, [r0, #0x30]
str r2, [r0, #0x3c]
ldr r3, [sp, #4]
str r2, [r0, #0x2c]
ldr ip, [sp, #8]
ldr r1, [sp]
str r3, [r0, #0x38]
str r1, [r0, #0x40]
str r1, [r0, #0x34]
cmp ip, #0
ldreq ip, _020D7B38 ; =sub_020D7448
ldr r1, [sp, #0xc]
str ip, [r0, #0x48]
cmp r1, #0
ldreq r1, _020D7B3C ; =sub_020D7464
str r1, [r0, #0x4c]
ldr r2, [r0, #0x48]
mov r1, #0
str r2, [r0, #0x50]
str r1, [r0, #0x44]
ldr r1, [r0, #0x1c]
orr r1, r1, #2
str r1, [r0, #0x1c]
mov r0, #1
bx lr
.align 2, 0
_020D7B38: .word sub_020D7448
_020D7B3C: .word sub_020D7464
arm_func_end sub_020D7AD0
arm_func_start sub_020D7B40
sub_020D7B40: ; 0x020D7B40
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
bl OS_DisableInterrupts
ldr r1, [r6, #0x1c]
mov r4, r0
tst r1, #2
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D7BF0
mov r0, r6
ldr r1, [r6, #0x1c]
bl sub_020D7DB0
ldr r1, [r6, #0x1c]
mov r5, r0
orr r0, r1, #0x80
str r0, [r6, #0x1c]
ldr r0, [r6, #0x24]
cmp r0, #0
beq _020D7BAC
mov r7, #3
_020D7B94:
ldr r8, [r0, #4]
mov r1, r7
bl sub_020D6864
mov r0, r8
cmp r8, #0
bne _020D7B94
_020D7BAC:
mov r0, #0
str r0, [r6, #0x24]
cmp r5, #0
beq _020D7BC4
mov r0, r6
bl sub_020D7E4C
_020D7BC4:
mov r0, #0
str r0, [r6, #0x28]
str r0, [r6, #0x2c]
str r0, [r6, #0x30]
str r0, [r6, #0x34]
str r0, [r6, #0x38]
str r0, [r6, #0x40]
str r0, [r6, #0x3c]
ldr r0, [r6, #0x1c]
bic r0, r0, #0xa2
str r0, [r6, #0x1c]
_020D7BF0:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020D7B40
arm_func_start sub_020D7C00
sub_020D7C00: ; 0x020D7C00
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x4c
mov r7, r0
ldr r3, [r7, #0x30]
ldr r0, [r7, #0x38]
mov r6, r1
add r0, r3, r0
add r0, r0, #0x3f
bic r4, r0, #0x1f
cmp r4, r2
bhi _020D7D14
add r1, r6, #0x1f
add r0, sp, #4
bic r5, r1, #0x1f
bl FS_InitFile
ldr r2, [r7, #0x2c]
mvn r0, #0
str r0, [sp]
ldr r3, [r7, #0x30]
add r0, sp, #4
mov r1, r7
add r3, r2, r3
bl sub_020D81C0
cmp r0, #0
beq _020D7C94
ldr r2, [r7, #0x30]
add r0, sp, #4
mov r1, r5
bl FS_ReadFile
cmp r0, #0
bge _020D7C8C
ldr r2, [r7, #0x30]
mov r0, r5
mov r1, #0
bl MI_CpuFill8
_020D7C8C:
add r0, sp, #4
bl FS_CloseFile
_020D7C94:
str r5, [r7, #0x2c]
ldr ip, [r7, #0x30]
ldr r2, [r7, #0x34]
mvn r0, #0
str r0, [sp]
ldr r3, [r7, #0x38]
add r0, sp, #4
mov r1, r7
add r3, r2, r3
add r5, r5, ip
bl sub_020D81C0
cmp r0, #0
beq _020D7CF8
ldr r2, [r7, #0x38]
add r0, sp, #4
mov r1, r5
bl FS_ReadFile
cmp r0, #0
bge _020D7CF0
ldr r2, [r7, #0x38]
mov r0, r5
mov r1, #0
bl MI_CpuFill8
_020D7CF0:
add r0, sp, #4
bl FS_CloseFile
_020D7CF8:
str r5, [r7, #0x34]
ldr r0, _020D7D20 ; =sub_020D7484
str r6, [r7, #0x44]
str r0, [r7, #0x50]
ldr r0, [r7, #0x1c]
orr r0, r0, #4
str r0, [r7, #0x1c]
_020D7D14:
mov r0, r4
add sp, sp, #0x4c
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_020D7D20: .word sub_020D7484
arm_func_end sub_020D7C00
arm_func_start sub_020D7D24
sub_020D7D24: ; 0x020D7D24
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, [r5, #0x1c]
mov r4, #0
tst r0, #2
movne r0, #1
moveq r0, r4
cmp r0, #0
beq _020D7DA8
mov r0, r5
bl sub_020D7DB0
ldr r1, [r5, #0x1c]
tst r1, #4
movne r1, #1
moveq r1, #0
cmp r1, #0
beq _020D7D98
ldr r2, [r5, #0x1c]
mov r1, #0
bic r2, r2, #4
str r2, [r5, #0x1c]
ldr r4, [r5, #0x44]
str r1, [r5, #0x44]
ldr r1, [r5, #0x3c]
str r1, [r5, #0x2c]
ldr r1, [r5, #0x40]
str r1, [r5, #0x34]
ldr r1, [r5, #0x48]
str r1, [r5, #0x50]
_020D7D98:
cmp r0, #0
beq _020D7DA8
mov r0, r5
bl sub_020D7E4C
_020D7DA8:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D7D24
arm_func_start sub_020D7DB0
sub_020D7DB0: ; 0x020D7DB0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
bl OS_DisableInterrupts
ldr r1, [r6, #0x1c]
mov r4, r0
tst r1, #8
movne r0, #1
moveq r0, #0
cmp r0, #0
moveq r5, #1
movne r5, #0
cmp r5, #0
beq _020D7E3C
ldr r0, [r6, #0x1c]
tst r0, #0x10
movne r0, #1
moveq r0, #0
cmp r0, #0
ldr r0, [r6, #0x1c]
beq _020D7E34
orr r0, r0, #0x40
str r0, [r6, #0x1c]
mov r7, #0
mov r8, #1
_020D7E10:
add r0, r6, #0x14
bl sub_020D1E7C
ldr r0, [r6, #0x1c]
tst r0, #0x40
movne r0, r8
moveq r0, r7
cmp r0, #0
bne _020D7E10
b _020D7E3C
_020D7E34:
orr r0, r0, #8
str r0, [r6, #0x1c]
_020D7E3C:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020D7DB0
arm_func_start sub_020D7E4C
sub_020D7E4C: ; 0x020D7E4C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r0
mov r5, #0
bl OS_DisableInterrupts
ldr r1, [r4, #0x1c]
mov r6, r0
tst r1, #8
movne r0, #1
moveq r0, r5
cmp r0, #0
moveq r7, #1
movne r7, #0
cmp r7, #0
bne _020D7E9C
ldr r1, [r4, #0x1c]
mov r0, r4
bic r1, r1, #8
str r1, [r4, #0x1c]
bl sub_020D749C
mov r5, r0
_020D7E9C:
mov r0, r6
bl OS_RestoreInterrupts
cmp r5, #0
beq _020D7EB4
mov r0, r5
bl sub_020D76B0
_020D7EB4:
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D7E4C
arm_func_start sub_020D7EBC
sub_020D7EBC: ; 0x020D7EBC
cmp r2, #0
moveq r1, #0
beq _020D7ED0
cmp r1, #0
moveq r2, #0
_020D7ED0:
str r1, [r0, #0x54]
str r2, [r0, #0x58]
bx lr
arm_func_end sub_020D7EBC
arm_func_start sub_020D7EDC
sub_020D7EDC: ; 0x020D7EDC
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
ldr r0, [r4, #0x1c]
mov r6, r1
tst r0, #0x100
movne r0, #1
moveq r0, #0
cmp r0, #0
beq _020D7F30
ldr r1, [r4, #0x1c]
ldr r0, [r4, #0x24]
bic r2, r1, #0x100
mov r1, r6
str r2, [r4, #0x1c]
bl sub_020D6864
mov r0, r4
bl sub_020D749C
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
bl sub_020D76B0
ldmia sp!, {r4, r5, r6, pc}
_020D7F30:
ldr r5, [r4, #0x24]
bl OS_DisableInterrupts
str r6, [r5, #0x14]
ldr r1, [r4, #0x1c]
mov r5, r0
bic r1, r1, #0x200
add r0, r4, #0xc
str r1, [r4, #0x1c]
bl sub_020D1ECC
mov r0, r5
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020D7EDC
arm_func_start sub_020D7F60
sub_020D7F60: ; 0x020D7F60
stmdb sp!, {r3, lr}
ldr r1, _020D7F84 ; =0x021E3638
ldr r2, [r1]
cmp r2, #0
ldmneia sp!, {r3, pc}
mov r2, #1
str r2, [r1]
bl sub_020D8590
ldmia sp!, {r3, pc}
.align 2, 0
_020D7F84: .word 0x021E3638
arm_func_end sub_020D7F60
arm_func_start sub_020D7F88
sub_020D7F88: ; 0x020D7F88
ldr r0, _020D7F94 ; =0x021E3638
ldr r0, [r0]
bx lr
.align 2, 0
_020D7F94: .word 0x021E3638
arm_func_end sub_020D7F88
arm_func_start FS_InitFile
FS_InitFile: ; 0x020D7F98
mov r2, #0
str r2, [r0]
str r2, [r0, #4]
str r2, [r0, #0x1c]
str r2, [r0, #0x18]
str r2, [r0, #8]
mov r1, #0xe
str r1, [r0, #0x10]
str r2, [r0, #0xc]
bx lr
arm_func_end FS_InitFile
arm_func_start sub_020D7FC0
sub_020D7FC0: ; 0x020D7FC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc
mov r7, r1
ldrb r1, [r7]
mov r8, r0
mov r6, r2
cmp r1, #0x2f
mov r5, r3
cmpne r1, #0x5c
bne _020D800C
ldr r0, _020D8100 ; =0x021E362C
mov r1, #0
ldr r0, [r0]
strh r1, [sp, #4]
str r0, [sp]
str r1, [sp, #8]
strh r1, [sp, #6]
add r7, r7, #1
b _020D80B0
_020D800C:
ldr r0, _020D8100 ; =0x021E362C
add r3, sp, #0
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r4, #0
_020D8020:
ldrb r0, [r7, r4]
cmp r0, #0
cmpne r0, #0x2f
cmpne r0, #0x5c
beq _020D80B0
cmp r0, #0x3a
bne _020D80A4
mov r0, r7
mov r1, r4
bl sub_020D7958
cmp r0, #0
addeq sp, sp, #0xc
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc}
ldr r1, [r0, #0x1c]
tst r1, #2
movne r1, #1
moveq r1, #0
cmp r1, #0
addeq sp, sp, #0xc
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc}
mov r1, #0
str r0, [sp]
str r1, [sp, #8]
strh r1, [sp, #6]
strh r1, [sp, #4]
add r0, r4, #1
ldrb r0, [r7, r0]!
cmp r0, #0x2f
cmpne r0, #0x5c
addeq r7, r7, #1
b _020D80B0
_020D80A4:
add r4, r4, #1
cmp r4, #3
ble _020D8020
_020D80B0:
ldr r1, [sp]
add r0, sp, #0
str r1, [r8, #8]
str r7, [r8, #0x3c]
add r3, r8, #0x30
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
cmp r5, #0
moveq r0, #0
streq r0, [r8, #0x40]
streq r6, [r8, #0x44]
beq _020D80EC
mov r0, #1
str r0, [r8, #0x40]
str r5, [r8, #0x44]
_020D80EC:
mov r0, r8
mov r1, #4
bl sub_020D7788
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D8100: .word 0x021E362C
arm_func_end sub_020D7FC0
arm_func_start sub_020D8104
sub_020D8104: ; 0x020D8104
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldr r4, [r7, #0x2c]
ldr r0, [r7, #0x28]
mov r6, r2
str r1, [r7, #0x30]
sub r0, r0, r4
cmp r6, r0
movgt r6, r0
cmp r6, #0
movlt r6, #0
str r2, [r7, #0x34]
mov r5, r3
str r6, [r7, #0x38]
cmp r5, #0
ldreq r0, [r7, #0xc]
mov r1, #0
orreq r0, r0, #4
streq r0, [r7, #0xc]
mov r0, r7
bl sub_020D7788
cmp r5, #0
bne _020D8178
mov r0, r7
bl FS_WaitAsync
cmp r0, #0
ldrne r0, [r7, #0x2c]
subne r6, r0, r4
mvneq r6, #0
_020D8178:
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020D8104
arm_func_start sub_020D8180
sub_020D8180: ; 0x020D8180
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x48
mov r5, r0
add r0, sp, #0
mov r4, r1
bl FS_InitFile
add r0, sp, #0
mov r1, r4
mov r2, r5
mov r3, #0
bl sub_020D7FC0
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #0x48
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020D8180
arm_func_start sub_020D81C0
sub_020D81C0: ; 0x020D81C0
stmdb sp!, {r4, lr}
mov r4, r0
str r1, [r4, #8]
ldr ip, [sp, #8]
mov r1, #7
str ip, [r4, #0x38]
str r2, [r4, #0x30]
str r3, [r4, #0x34]
bl sub_020D7788
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r1, [r4, #0xc]
mov r0, #1
orr r1, r1, #0x10
bic r1, r1, #0x20
str r1, [r4, #0xc]
ldmia sp!, {r4, pc}
arm_func_end sub_020D81C0
arm_func_start sub_020D8208
sub_020D8208: ; 0x020D8208
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
ldr r1, [sp, #0xc]
mov r4, r0
cmp r1, #0
moveq r0, #0
ldmeqia sp!, {r4, lr}
addeq sp, sp, #0x10
bxeq lr
str r1, [r4, #8]
str r1, [r4, #0x30]
ldr r2, [sp, #0x10]
mov r1, #6
str r2, [r4, #0x34]
bl sub_020D7788
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, lr}
addeq sp, sp, #0x10
bxeq lr
ldr r1, [r4, #0xc]
mov r0, #1
orr r1, r1, #0x10
bic r1, r1, #0x20
str r1, [r4, #0xc]
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
arm_func_end sub_020D8208
arm_func_start FS_OpenFile
FS_OpenFile: ; 0x020D8278
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
add r0, sp, #0
bl sub_020D8180
cmp r0, #0
beq _020D82B4
add r1, sp, #0
mov r0, r4
ldmia r1, {r1, r2}
bl sub_020D8208
cmp r0, #0
addne sp, sp, #8
movne r0, #1
ldmneia sp!, {r4, pc}
_020D82B4:
mov r0, #0
add sp, sp, #8
ldmia sp!, {r4, pc}
arm_func_end FS_OpenFile
arm_func_start FS_CloseFile
FS_CloseFile: ; 0x020D82C0
stmdb sp!, {r4, lr}
mov r1, #8
mov r4, r0
bl sub_020D7788
cmp r0, #0
mov r0, #0
ldmeqia sp!, {r4, pc}
str r0, [r4, #8]
mov r0, #0xe
str r0, [r4, #0x10]
ldr r1, [r4, #0xc]
mov r0, #1
bic r1, r1, #0x30
str r1, [r4, #0xc]
ldmia sp!, {r4, pc}
arm_func_end FS_CloseFile
arm_func_start FS_WaitAsync
FS_WaitAsync: ; 0x020D82FC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
mov r5, #0
bl OS_DisableInterrupts
ldr r1, [r6, #0xc]
mov r4, r0
tst r1, #1
movne r0, #1
moveq r0, r5
cmp r0, #0
beq _020D838C
ldr r0, [r6, #0xc]
tst r0, #0x44
moveq r5, #1
movne r5, #0
cmp r5, #0
beq _020D8364
ldr r0, [r6, #0xc]
orr r0, r0, #4
str r0, [r6, #0xc]
_020D834C:
add r0, r6, #0x18
bl sub_020D1E7C
ldr r0, [r6, #0xc]
tst r0, #0x40
beq _020D834C
b _020D838C
_020D8364:
mov r7, #0
mov r8, #1
_020D836C:
add r0, r6, #0x18
bl sub_020D1E7C
ldr r0, [r6, #0xc]
tst r0, #1
movne r0, r8
moveq r0, r7
cmp r0, #0
bne _020D836C
_020D838C:
mov r0, r4
bl OS_RestoreInterrupts
cmp r5, #0
beq _020D83A8
mov r0, r6
bl sub_020D7744
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D83A8:
ldr r0, [r6, #0x14]
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end FS_WaitAsync
arm_func_start sub_020D83BC
sub_020D83BC: ; 0x020D83BC
ldr ip, _020D83C8 ; =sub_020D8104
mov r3, #1
bx ip
.align 2, 0
_020D83C8: .word sub_020D8104
arm_func_end sub_020D83BC
arm_func_start FS_ReadFile
FS_ReadFile: ; 0x020D83CC
ldr ip, _020D83D8 ; =sub_020D8104
mov r3, #0
bx ip
.align 2, 0
_020D83D8: .word sub_020D8104
arm_func_end FS_ReadFile
arm_func_start FS_SeekFile
FS_SeekFile: ; 0x020D83DC
cmp r2, #0
beq _020D83F8
cmp r2, #1
beq _020D8404
cmp r2, #2
beq _020D8410
b _020D841C
_020D83F8:
ldr r2, [r0, #0x24]
add r1, r1, r2
b _020D8424
_020D8404:
ldr r2, [r0, #0x2c]
add r1, r1, r2
b _020D8424
_020D8410:
ldr r2, [r0, #0x28]
add r1, r1, r2
b _020D8424
_020D841C:
mov r0, #0
bx lr
_020D8424:
ldr r2, [r0, #0x24]
cmp r1, r2
movlt r1, r2
ldr r2, [r0, #0x28]
cmp r1, r2
movgt r1, r2
str r1, [r0, #0x2c]
mov r0, #1
bx lr
arm_func_end FS_SeekFile
arm_func_start sub_020D8448
sub_020D8448: ; 0x020D8448
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x54
mov r4, r0
add r0, sp, #0xc
bl FS_InitFile
add r0, sp, #0xc
add r3, sp, #0
mov r1, r4
mov r2, #0
bl sub_020D7FC0
cmp r0, #0
addeq sp, sp, #0x54
moveq r0, #0
ldmeqia sp!, {r3, r4, pc}
ldr r3, _020D849C ; =0x021E362C
add r0, sp, #0
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, #1
add sp, sp, #0x54
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020D849C: .word 0x021E362C
arm_func_end sub_020D8448
arm_func_start sub_020D84A0
sub_020D84A0: ; 0x020D84A0
stmdb sp!, {r4, lr}
mov r4, r0
bl CARD_IsPulledOut
cmp r0, #0
movne r1, #5
moveq r1, #0
mov r0, r4
bl sub_020D7EDC
ldmia sp!, {r4, pc}
arm_func_end sub_020D84A0
arm_func_start sub_020D84C4
sub_020D84C4: ; 0x020D84C4
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr ip, _020D8504 ; =sub_020D84A0
mov lr, r1
str ip, [sp]
str r0, [sp, #4]
mov r1, #1
ldr r0, _020D8508 ; =0x021E363C
str r1, [sp, #8]
mov r1, r2
ldr r0, [r0, #4]
mov r2, lr
bl sub_020DD754
mov r0, #6
add sp, sp, #0xc
ldmia sp!, {pc}
.align 2, 0
_020D8504: .word sub_020D84A0
_020D8508: .word 0x021E363C
arm_func_end sub_020D84C4
arm_func_start sub_020D850C
sub_020D850C: ; 0x020D850C
mov r0, #1
bx lr
arm_func_end sub_020D850C
arm_func_start sub_020D8514
sub_020D8514: ; 0x020D8514
stmdb sp!, {r3, lr}
cmp r1, #1
beq _020D856C
cmp r1, #9
beq _020D8534
cmp r1, #0xa
beq _020D8550
b _020D8574
_020D8534:
ldr r0, _020D857C ; =0x021E363C
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020DC96C
mov r0, #0
ldmia sp!, {r3, pc}
_020D8550:
ldr r0, _020D857C ; =0x021E363C
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020DC988
mov r0, #0
ldmia sp!, {r3, pc}
_020D856C:
mov r0, #4
ldmia sp!, {r3, pc}
_020D8574:
mov r0, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020D857C: .word 0x021E363C
arm_func_end sub_020D8514
arm_func_start sub_020D8580
sub_020D8580: ; 0x020D8580
mov r0, #1
bx lr
arm_func_end sub_020D8580
arm_func_start sub_020D8588
sub_020D8588: ; 0x020D8588
mov r0, #4
bx lr
arm_func_end sub_020D8588
arm_func_start sub_020D8590
sub_020D8590: ; 0x020D8590
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, _020D86B0 ; =0x021E363C
str r0, [r1, #4]
bl OS_GetLockID
ldr r1, _020D86B0 ; =0x021E363C
mov r2, #0
str r0, [r1]
str r2, [r1, #8]
str r2, [r1, #0xc]
str r2, [r1, #0x10]
str r2, [r1, #0x14]
bl sub_020DD84C
ldr r0, _020D86B4 ; =0x021E3654
bl sub_020D792C
ldr r0, _020D86B4 ; =0x021E3654
ldr r1, _020D86B8 ; =_02110C9C
mov r2, #3
bl sub_020D7998
ldr r4, _020D86BC ; =0x027FFC40
ldrh r0, [r4]
cmp r0, #2
bne _020D8648
ldr r3, _020D86B0 ; =0x021E363C
mvn r2, #0
str r2, [r3, #8]
mov ip, #0
str ip, [r3, #0xc]
str r2, [r3, #0x10]
ldr r0, _020D86B4 ; =0x021E3654
ldr r1, _020D86C0 ; =sub_020D8588
str ip, [r3, #0x14]
bl sub_020D7EBC
mov r1, #0
str r1, [sp]
ldr r0, _020D86C4 ; =sub_020D8580
str r1, [sp, #4]
str r0, [sp, #8]
ldr ip, _020D86C8 ; =sub_020D850C
ldr r0, _020D86B4 ; =0x021E3654
mov r2, r1
mov r3, r1
str ip, [sp, #0xc]
bl sub_020D7AD0
add sp, sp, #0x10
ldmia sp!, {r4, pc}
_020D8648:
ldr r0, _020D86B4 ; =0x021E3654
ldr r1, _020D86CC ; =sub_020D8514
ldr r2, _020D86D0 ; =0x00000602
bl sub_020D7EBC
ldr r1, [r4, #0x200]
mvn r0, #0
cmp r1, r0
cmpne r1, #0
ldrne r2, [r4, #0x208]
cmpne r2, r0
cmpne r2, #0
addeq sp, sp, #0x10
ldmeqia sp!, {r4, pc}
str r1, [sp]
ldr r0, [r4, #0x204]
ldr r1, _020D86D4 ; =sub_020D84C4
str r0, [sp, #4]
ldr r0, _020D86C8 ; =sub_020D850C
str r1, [sp, #8]
str r0, [sp, #0xc]
ldr r3, [r4, #0x20c]
ldr r0, _020D86B4 ; =0x021E3654
mov r1, #0
bl sub_020D7AD0
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_020D86B0: .word 0x021E363C
_020D86B4: .word 0x021E3654
_020D86B8: .word _02110C9C
_020D86BC: .word 0x027FFC40
_020D86C0: .word sub_020D8588
_020D86C4: .word sub_020D8580
_020D86C8: .word sub_020D850C
_020D86CC: .word sub_020D8514
_020D86D0: .word 0x00000602
_020D86D4: .word sub_020D84C4
arm_func_end sub_020D8590
arm_func_start FS_SetDefaultDMA
FS_SetDefaultDMA: ; 0x020D86D8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
bl OS_DisableInterrupts
mov r4, r0
ldr r1, _020D8720 ; =0x021E363C
ldr r0, _020D8724 ; =0x021E3654
ldr r5, [r1, #4]
bl sub_020D7DB0
ldr r1, _020D8720 ; =0x021E363C
cmp r0, #0
str r6, [r1, #4]
beq _020D8710
ldr r0, _020D8724 ; =0x021E3654
bl sub_020D7E4C
_020D8710:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D8720: .word 0x021E363C
_020D8724: .word 0x021E3654
arm_func_end FS_SetDefaultDMA
arm_func_start sub_020D8728
sub_020D8728: ; 0x020D8728
ldr ip, _020D8740 ; =sub_020D7C00
mov r3, r0
mov r2, r1
ldr r0, _020D8744 ; =0x021E3654
mov r1, r3
bx ip
.align 2, 0
_020D8740: .word sub_020D7C00
_020D8744: .word 0x021E3654
arm_func_end sub_020D8728
arm_func_start FSi_GetOverlayBinarySize
FSi_GetOverlayBinarySize: ; 0x020D8748
ldr r1, [r0, #0x1c]
mov r2, r1, lsr #0x18
tst r2, #1
movne r0, r1, lsl #8
movne r0, r0, lsr #8
ldreq r0, [r0, #8]
bx lr
arm_func_end FSi_GetOverlayBinarySize
arm_func_start FS_ClearOverlayImage
FS_ClearOverlayImage: ; 0x020D8764
stmdb sp!, {r4, r5, r6, lr}
ldr r1, [r0, #0xc]
ldmib r0, {r4, r5}
add r6, r5, r1
mov r0, r4
mov r1, r6
bl IC_InvalidateRange
mov r0, r4
mov r1, r6
bl sub_020D285C
add r0, r4, r5
sub r2, r6, r5
mov r1, #0
bl MI_CpuFill8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end FS_ClearOverlayImage
arm_func_start FS_GetOverlayFileID
FS_GetOverlayFileID: ; 0x020D87A0
sub sp, sp, #8
ldr r1, [r1, #0x18]
ldr r2, _020D87C4 ; =0x021E3654
str r1, [sp, #4]
str r2, [r0]
str r2, [sp]
str r1, [r0, #4]
add sp, sp, #8
bx lr
.align 2, 0
_020D87C4: .word 0x021E3654
arm_func_end FS_GetOverlayFileID
arm_func_start FSi_LoadOverlayInfoCore
FSi_LoadOverlayInfoCore: ; 0x020D87C8
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x54
movs sb, r1
ldreq r7, [sp, #0x74]
ldreq r6, [sp, #0x70]
ldrne r7, [sp, #0x7c]
ldrne r6, [sp, #0x78]
cmp r7, r2, lsl #5
mov r4, r0
mov r8, r3
mov r5, r2, lsl #5
addls sp, sp, #0x54
movls r0, #0
ldmlsia sp!, {r4, r5, r6, r7, r8, sb, pc}
add r0, sp, #0xc
bl FS_InitFile
mvn ip, #0
add r0, sp, #0xc
mov r1, r8
add r2, r6, r5
add r3, r6, r7
str ip, [sp]
bl sub_020D81C0
cmp r0, #0
addeq sp, sp, #0x54
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
add r0, sp, #0xc
mov r1, r4
mov r2, #0x20
bl FS_ReadFile
cmp r0, #0x20
add r0, sp, #0xc
beq _020D8860
bl FS_CloseFile
add sp, sp, #0x54
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_020D8860:
bl FS_CloseFile
add r0, sp, #4
mov r1, r4
str sb, [r4, #0x20]
bl FS_GetOverlayFileID
add r1, sp, #4
add r0, sp, #0xc
ldmia r1, {r1, r2}
bl sub_020D8208
cmp r0, #0
addeq sp, sp, #0x54
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
ldr r1, [sp, #0x30]
add r0, sp, #0xc
str r1, [r4, #0x24]
ldr r2, [sp, #0x34]
ldr r1, [sp, #0x30]
sub r1, r2, r1
str r1, [r4, #0x28]
bl FS_CloseFile
mov r0, #1
add sp, sp, #0x54
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
arm_func_end FSi_LoadOverlayInfoCore
arm_func_start FS_LoadOverlayInfo
FS_LoadOverlayInfo: ; 0x020D88C0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x60
movs r4, r1
mov r5, r0
ldreq r0, _020D89AC ; =0x021E3644
ldrne r0, _020D89B0 ; =0x021E364C
ldr ip, [r0]
cmp ip, #0
beq _020D8970
ldr r0, [r0, #4]
mov r3, r2, lsl #5
cmp r0, r2, lsl #5
addls sp, sp, #0x60
movls r0, #0
ldmlsia sp!, {r3, r4, r5, pc}
mov r1, r5
add r0, ip, r3
mov r2, #0x20
bl MIi_CpuCopy8
add r0, sp, #0x18
str r4, [r5, #0x20]
bl FS_InitFile
add r0, sp, #0x10
mov r1, r5
bl FS_GetOverlayFileID
add r1, sp, #0x10
add r0, sp, #0x18
ldmia r1, {r1, r2}
bl sub_020D8208
cmp r0, #0
addeq sp, sp, #0x60
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, [sp, #0x3c]
add r0, sp, #0x18
str r1, [r5, #0x24]
ldr r2, [sp, #0x40]
ldr r1, [sp, #0x3c]
sub r1, r2, r1
str r1, [r5, #0x28]
bl FS_CloseFile
add sp, sp, #0x60
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
_020D8970:
ldr ip, _020D89B4 ; =0x027FFE50
ldr r3, _020D89B8 ; =0x021E3654
ldr r1, [ip]
mov r0, r5
str r1, [sp]
ldr r5, [ip, #4]
mov r1, r4
str r5, [sp, #4]
ldr r4, [ip, #8]
str r4, [sp, #8]
ldr r4, [ip, #0xc]
str r4, [sp, #0xc]
bl FSi_LoadOverlayInfoCore
add sp, sp, #0x60
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D89AC: .word 0x021E3644
_020D89B0: .word 0x021E364C
_020D89B4: .word 0x027FFE50
_020D89B8: .word 0x021E3654
arm_func_end FS_LoadOverlayInfo
arm_func_start FS_LoadOverlayImageAsync
FS_LoadOverlayImageAsync: ; 0x020D89BC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r1
mov r6, r0
mov r0, r5
bl FS_InitFile
add r0, sp, #0
mov r1, r6
bl FS_GetOverlayFileID
add r1, sp, #0
mov r0, r5
ldmia r1, {r1, r2}
bl sub_020D8208
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
bl FSi_GetOverlayBinarySize
mov r4, r0
mov r0, r6
bl FS_ClearOverlayImage
ldr r1, [r6, #4]
mov r0, r5
mov r2, r4
bl sub_020D83BC
cmp r4, r0
addeq sp, sp, #8
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r5
bl FS_CloseFile
mov r0, #0
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end FS_LoadOverlayImageAsync
arm_func_start FS_LoadOverlayImage
FS_LoadOverlayImage: ; 0x020D8A48
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x50
mov r5, r0
add r0, sp, #8
bl FS_InitFile
add r0, sp, #0
mov r1, r5
bl FS_GetOverlayFileID
add r1, sp, #0
add r0, sp, #8
ldmia r1, {r1, r2}
bl sub_020D8208
cmp r0, #0
addeq sp, sp, #0x50
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
bl FSi_GetOverlayBinarySize
mov r4, r0
mov r0, r5
bl FS_ClearOverlayImage
ldr r1, [r5, #4]
add r0, sp, #8
mov r2, r4
bl FS_ReadFile
cmp r4, r0
add r0, sp, #8
beq _020D8AC8
bl FS_CloseFile
add sp, sp, #0x50
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_020D8AC8:
bl FS_CloseFile
mov r0, #1
add sp, sp, #0x50
ldmia sp!, {r3, r4, r5, pc}
arm_func_end FS_LoadOverlayImage
arm_func_start FSi_CompareDigest
FSi_CompareDigest: ; 0x020D8AD8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x58
mov r4, r0
mov r6, r1
mov r5, r2
add r0, sp, #0x44
mov r1, #0
mov r2, #0x14
bl MI_CpuFill8
ldr r2, _020D8B68 ; =_02110CA0
add r1, sp, #4
ldmia r2, {r0, r2}
bl MIi_CpuCopy8
ldr r3, _020D8B68 ; =_02110CA0
mov r1, r6
ldr ip, [r3, #4]
mov r2, r5
add r0, sp, #0x44
add r3, sp, #4
str ip, [sp]
bl sub_020D9714
add r3, sp, #0x44
mov r2, #0
_020D8B34:
ldr r1, [r3]
ldr r0, [r4, r2]
cmp r1, r0
bne _020D8B54
add r2, r2, #4
cmp r2, #0x14
add r3, r3, #4
blo _020D8B34
_020D8B54:
cmp r2, #0x14
moveq r0, #1
movne r0, #0
add sp, sp, #0x58
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020D8B68: .word _02110CA0
arm_func_end FSi_CompareDigest
arm_func_start FS_StartOverlay
FS_StartOverlay: ; 0x020D8B6C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl FSi_GetOverlayBinarySize
ldr r1, _020D8C50 ; =0x027FFC40
mov r4, r0
ldrh r0, [r1]
cmp r0, #2
bne _020D8BFC
ldr r1, [r5, #0x1c]
mov r0, #0
mov r1, r1, lsr #0x18
tst r1, #2
beq _020D8BDC
ldr r1, _020D8C54 ; =SDK_OVERLAY_DIGEST_END
ldr r3, _020D8C58 ; =SDK_OVERLAY_DIGEST
ldr r2, _020D8C5C ; =0x66666667
sub ip, r1, r3
smull r1, lr, r2, ip
mov r1, ip, lsr #0x1f
ldr r2, [r5]
add lr, r1, lr, asr #3
cmp r2, lr
bhs _020D8BDC
mov r0, #0x14
mla r0, r2, r0, r3
ldr r1, [r5, #4]
mov r2, r4
bl FSi_CompareDigest
_020D8BDC:
cmp r0, #0
bne _020D8BFC
ldr r0, [r5, #4]
mov r2, r4
mov r1, #0
bl MI_CpuFill8
bl OS_Terminate
ldmia sp!, {r3, r4, r5, pc}
_020D8BFC:
ldr r0, [r5, #0x1c]
mov r0, r0, lsr #0x18
tst r0, #1
beq _020D8C18
ldr r0, [r5, #4]
add r0, r0, r4
bl MIi_UncompressBackward
_020D8C18:
ldmib r5, {r0, r1}
bl DC_FlushRange
ldr r4, [r5, #0x10]
ldr r5, [r5, #0x14]
cmp r4, r5
ldmhsia sp!, {r3, r4, r5, pc}
_020D8C30:
ldr r0, [r4]
cmp r0, #0
beq _020D8C40
blx r0
_020D8C40:
add r4, r4, #4
cmp r4, r5
blo _020D8C30
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D8C50: .word 0x027FFC40
_020D8C54: .word SDK_OVERLAY_DIGEST_END
_020D8C58: .word SDK_OVERLAY_DIGEST
_020D8C5C: .word 0x66666667
arm_func_end FS_StartOverlay
arm_func_start FS_EndOverlay
FS_EndOverlay: ; 0x020D8C60
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov fp, r0
_020D8C68:
ldr r1, [fp, #8]
ldr r0, [fp, #0xc]
mov r4, #0
ldr r6, [fp, #4]
add r0, r1, r0
mov r5, r4
add r7, r6, r0
bl OS_DisableInterrupts
ldr r1, _020D8D4C ; =0x021E58E8
mov ip, r4
ldr lr, [r1]
mov r8, lr
cmp lr, #0
beq _020D8D14
mov r2, r4
_020D8CA4:
ldr sl, [r8, #8]
ldr sb, [r8]
cmp sl, #0
ldr r3, [r8, #4]
bne _020D8CC8
cmp r3, r6
blo _020D8CC8
cmp r3, r7
blo _020D8CD8
_020D8CC8:
cmp sl, r6
blo _020D8D04
cmp sl, r7
bhs _020D8D04
_020D8CD8:
cmp r5, #0
strne r8, [r5]
moveq r4, r8
cmp lr, r8
streq sb, [r1]
moveq lr, sb
str r2, [r8]
cmp ip, #0
mov r5, r8
strne sb, [ip]
b _020D8D08
_020D8D04:
mov ip, r8
_020D8D08:
mov r8, sb
cmp sb, #0
bne _020D8CA4
_020D8D14:
bl OS_RestoreInterrupts
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D8D20:
ldr r1, [r4, #4]
ldr r5, [r4]
cmp r1, #0
beq _020D8D38
ldr r0, [r4, #8]
blx r1
_020D8D38:
mov r4, r5
cmp r5, #0
bne _020D8D20
b _020D8C68
_020D8D48:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020D8D4C: .word 0x021E58E8
arm_func_end FS_EndOverlay
arm_func_start FS_UnloadOverlayImage
FS_UnloadOverlayImage: ; 0x020D8D50
stmdb sp!, {r3, lr}
bl FS_EndOverlay
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end FS_UnloadOverlayImage
arm_func_start FS_LoadOverlay
FS_LoadOverlay: ; 0x020D8D60
stmdb sp!, {lr}
sub sp, sp, #0x2c
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl FS_LoadOverlayInfo
cmp r0, #0
beq _020D8D94
add r0, sp, #0
bl FS_LoadOverlayImage
cmp r0, #0
bne _020D8DA0
_020D8D94:
add sp, sp, #0x2c
mov r0, #0
ldmia sp!, {pc}
_020D8DA0:
add r0, sp, #0
bl FS_StartOverlay
mov r0, #1
add sp, sp, #0x2c
ldmia sp!, {pc}
arm_func_end FS_LoadOverlay
arm_func_start FS_UnloadOverlay
FS_UnloadOverlay: ; 0x020D8DB4
stmdb sp!, {lr}
sub sp, sp, #0x2c
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl FS_LoadOverlayInfo
cmp r0, #0
beq _020D8DE8
add r0, sp, #0
bl FS_UnloadOverlayImage
cmp r0, #0
bne _020D8DF4
_020D8DE8:
add sp, sp, #0x2c
mov r0, #0
ldmia sp!, {pc}
_020D8DF4:
mov r0, #1
add sp, sp, #0x2c
ldmia sp!, {pc}
arm_func_end FS_UnloadOverlay
arm_func_start sub_020D8E00
sub_020D8E00: ; 0x020D8E00
ldr r2, _020D8E30 ; =0x67452301
ldr r1, _020D8E34 ; =0xEFCDAB89
str r2, [r0]
ldr r2, _020D8E38 ; =0x98BADCFE
str r1, [r0, #4]
ldr r1, _020D8E3C ; =0x10325476
str r2, [r0, #8]
str r1, [r0, #0xc]
mov r1, #0
str r1, [r0, #0x10]
str r1, [r0, #0x14]
bx lr
.align 2, 0
_020D8E30: .word 0x67452301
_020D8E34: .word 0xEFCDAB89
_020D8E38: .word 0x98BADCFE
_020D8E3C: .word 0x10325476
arm_func_end sub_020D8E00
arm_func_start sub_020D8E40
sub_020D8E40: ; 0x020D8E40
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
ldr r3, [r6, #0x10]
mov r4, r2
and ip, r3, #0x3f
ldr r0, [r6, #0x14]
adds r3, r3, r4
str r3, [r6, #0x10]
adc r0, r0, #0
rsb r7, ip, #0x40
mov r5, r1
str r0, [r6, #0x14]
cmp r7, r4
bls _020D8E94
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r1, r6, #0x18
mov r0, r5
add r1, r1, ip
bl MIi_CpuCopy8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020D8E94:
add r1, r6, #0x18
mov r0, r5
mov r2, r7
add r1, r1, ip
bl MIi_CpuCopy8
mov r0, r6
bl sub_020D8FC0
sub r4, r4, r7
mov r8, r4, lsr #6
cmp r8, #0
add r7, r5, r7
ble _020D8EF0
mov r5, #0x40
_020D8EC8:
mov r0, r7
mov r2, r5
add r1, r6, #0x18
bl MIi_CpuCopy8
mov r0, r6
add r7, r7, #0x40
bl sub_020D8FC0
sub r8, r8, #1
cmp r8, #0
bgt _020D8EC8
_020D8EF0:
ands r2, r4, #0x3f
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r7
add r1, r6, #0x18
bl MIi_CpuCopy8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020D8E40
arm_func_start sub_020D8F08
sub_020D8F08: ; 0x020D8F08
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
ldr r1, [r4, #0x14]
ldr r3, [r4, #0x10]
mov r5, r0
mov r6, r1, lsl #3
ldr r1, _020D8FBC ; =_02110CA8
mov r0, r4
mov r2, #1
orr r6, r6, r3, lsr #29
mov r7, r3, lsl #3
bl sub_020D8E40
ldr r0, [r4, #0x10]
mov r1, #0
and r3, r0, #0x3f
rsb r2, r3, #0x40
cmp r2, #8
bhs _020D8F6C
add r0, r4, #0x18
add r0, r0, r3
bl MI_CpuFill8
mov r0, r4
bl sub_020D8FC0
mov r3, #0
mov r2, #0x40
_020D8F6C:
cmp r2, #8
bls _020D8F88
add r0, r4, #0x18
add r0, r0, r3
sub r2, r2, #8
mov r1, #0
bl MI_CpuFill8
_020D8F88:
str r7, [r4, #0x50]
mov r0, r4
str r6, [r4, #0x54]
bl sub_020D8FC0
mov r0, r4
mov r1, r5
mov r2, #0x10
bl MIi_CpuCopy8
mov r0, r4
mov r1, #0
mov r2, #0x58
bl MI_CpuFill8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D8FBC: .word _02110CA8
arm_func_end sub_020D8F08
arm_func_start sub_020D8FC0
sub_020D8FC0: ; 0x020D8FC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldmia r0, {r2, r3, ip, lr}
add r4, r0, #0x18
ldr r5, _020D936C ; =_02110D6C
mov r7, r4
mov r8, #0
_020D8FD8:
mvn r1, r3
and r6, r3, ip
and r1, r1, lr
orr r1, r6, r1
ldr r6, [r7]
add r1, r2, r1
ldr r2, [r5]
add r1, r6, r1
add r2, r2, r1
mov r1, r2, lsr #0x19
orr r1, r1, r2, lsl #7
add r2, r3, r1
mvn r1, r2
and r6, r2, r3
and r1, r1, ip
orr r1, r6, r1
ldr r6, [r7, #4]
add r1, lr, r1
ldr sb, [r5, #4]
add r1, r6, r1
add r6, sb, r1
mov r1, r6, lsr #0x14
orr r1, r1, r6, lsl #12
add lr, r2, r1
mvn r1, lr
and r6, lr, r2
and r1, r1, r3
orr r1, r6, r1
ldr sb, [r7, #8]
add r6, ip, r1
ldr r1, [r7, #0xc]
add sb, sb, r6
ldr sl, [r5, #8]
ldr r6, [r5, #0xc]
add sl, sl, sb
mov sb, sl, lsr #0xf
orr sb, sb, sl, lsl #17
add ip, lr, sb
add r5, r5, #0x10
add r7, r7, #0x10
and sl, ip, lr
mvn sb, ip
and sb, sb, r2
orr sb, sl, sb
add r3, r3, sb
add r1, r1, r3
add r3, r6, r1
mov r1, r3, lsr #0xa
orr r1, r1, r3, lsl #22
add r3, ip, r1
add r8, r8, #1
cmp r8, #4
blt _020D8FD8
ldr r1, _020D9370 ; =_02110CAC
mov r6, #0
_020D90B4:
mvn r7, lr
ldr sb, [r1]
and r8, r3, lr
and r7, ip, r7
orr r7, r8, r7
ldr r8, [r4, sb, lsl #2]
add r2, r2, r7
ldr r7, [r5]
add r2, r8, r2
add r7, r7, r2
mov r2, r7, lsr #0x1b
orr r2, r2, r7, lsl #5
add r2, r3, r2
mvn r8, ip
ldr r7, [r1, #4]
and sb, r2, ip
and r8, r3, r8
orr sl, sb, r8
mvn r8, r3
ldr sb, [r1, #8]
ldr fp, [r4, r7, lsl #2]
add r7, lr, sl
add r7, fp, r7
ldr sl, [r5, #4]
ldr sb, [r4, sb, lsl #2]
add sl, sl, r7
ldr r7, [r1, #0xc]
and r8, r2, r8
ldr r7, [r4, r7, lsl #2]
mov fp, sl, lsr #0x17
orr sl, fp, sl, lsl #9
add lr, r2, sl
ldr sl, [r5, #8]
and fp, lr, r3
orr r8, fp, r8
add r8, ip, r8
add r8, sb, r8
add sb, sl, r8
mov r8, sb, lsr #0x12
orr r8, r8, sb, lsl #14
add ip, lr, r8
mvn r8, r2
and sb, lr, r8
ldr r8, [r5, #0xc]
add r5, r5, #0x10
add r1, r1, #0x10
and sl, ip, r2
orr sb, sl, sb
add r3, r3, sb
add r3, r7, r3
add r7, r8, r3
mov r3, r7, lsr #0xc
orr r3, r3, r7, lsl #20
add r3, ip, r3
add r6, r6, #1
cmp r6, #4
blt _020D90B4
mov r6, #0
_020D919C:
ldr r8, [r1]
eor r7, r3, ip
eor r7, lr, r7
ldr r8, [r4, r8, lsl #2]
add r2, r2, r7
ldr r7, [r5]
add r2, r8, r2
add r7, r7, r2
mov r2, r7, lsr #0x1c
orr r2, r2, r7, lsl #4
add r2, r3, r2
ldr r8, [r1, #4]
eor r7, r2, r3
eor r7, ip, r7
ldr r8, [r4, r8, lsl #2]
add r7, lr, r7
ldr sb, [r1, #8]
ldr sl, [r5, #4]
add r7, r8, r7
add r8, sl, r7
mov r7, r8, lsr #0x15
orr r7, r7, r8, lsl #11
add lr, r2, r7
eor r8, lr, r2
ldr r7, [r1, #0xc]
ldr sb, [r4, sb, lsl #2]
eor r8, r3, r8
add r8, ip, r8
add sb, sb, r8
ldr sl, [r5, #8]
ldr r8, [r4, r7, lsl #2]
add sb, sl, sb
mov r7, sb, lsr #0x10
orr r7, r7, sb, lsl #16
add ip, lr, r7
eor r7, ip, lr
eor r7, r2, r7
add r3, r3, r7
add r3, r8, r3
ldr r7, [r5, #0xc]
add r5, r5, #0x10
add r7, r7, r3
add r1, r1, #0x10
mov r3, r7, lsr #9
orr r3, r3, r7, lsl #23
add r3, ip, r3
add r6, r6, #1
cmp r6, #4
blt _020D919C
mov r8, #0
_020D9264:
mvn r6, lr
ldr r7, [r1]
orr r6, r3, r6
eor r6, ip, r6
ldr r7, [r4, r7, lsl #2]
add r2, r2, r6
ldr r6, [r5]
add r2, r7, r2
add r6, r6, r2
mov r2, r6, lsr #0x1a
orr r2, r2, r6, lsl #6
add r2, r3, r2
mvn r6, ip
ldr sb, [r1, #4]
orr r6, r2, r6
eor r7, r3, r6
ldr r6, [r1, #8]
ldr sb, [r4, sb, lsl #2]
add r7, lr, r7
ldr sl, [r5, #4]
add r7, sb, r7
add sb, sl, r7
mov r7, sb, lsr #0x16
orr sb, r7, sb, lsl #10
ldr r7, [r1, #0xc]
add lr, r2, sb
mvn sb, r3
ldr r6, [r4, r6, lsl #2]
orr sb, lr, sb
eor sb, r2, sb
add sb, ip, sb
add sb, r6, sb
ldr sl, [r5, #8]
ldr r6, [r4, r7, lsl #2]
add sb, sl, sb
mov r7, sb, lsr #0x11
orr sb, r7, sb, lsl #15
ldr r7, [r5, #0xc]
add ip, lr, sb
add r5, r5, #0x10
add r1, r1, #0x10
mvn sb, r2
orr sb, ip, sb
eor sb, lr, sb
add r3, r3, sb
add r3, r6, r3
add r6, r7, r3
mov r3, r6, lsr #0xb
orr r3, r3, r6, lsl #21
add r3, ip, r3
add r8, r8, #1
cmp r8, #4
blt _020D9264
ldr r1, [r0]
add r1, r1, r2
str r1, [r0]
ldr r1, [r0, #4]
add r1, r1, r3
str r1, [r0, #4]
ldr r1, [r0, #8]
add r1, r1, ip
str r1, [r0, #8]
ldr r1, [r0, #0xc]
add r1, r1, lr
str r1, [r0, #0xc]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020D936C: .word _02110D6C
_020D9370: .word _02110CAC
arm_func_end sub_020D8FC0
arm_func_start sub_020D9374
sub_020D9374: ; 0x020D9374
ldr r1, _020D93B0 ; =0x67452301
ldr r2, _020D93B4 ; =0xEFCDAB89
str r1, [r0]
ldr r1, _020D93B8 ; =0x98BADCFE
str r2, [r0, #4]
ldr r2, _020D93BC ; =0x10325476
str r1, [r0, #8]
ldr r1, _020D93C0 ; =0xC3D2E1F0
str r2, [r0, #0xc]
str r1, [r0, #0x10]
mov r1, #0
str r1, [r0, #0x14]
str r1, [r0, #0x18]
str r1, [r0, #0x1c]
bx lr
.align 2, 0
_020D93B0: .word 0x67452301
_020D93B4: .word 0xEFCDAB89
_020D93B8: .word 0x98BADCFE
_020D93BC: .word 0x10325476
_020D93C0: .word 0xC3D2E1F0
arm_func_end sub_020D9374
arm_func_start sub_020D93C4
sub_020D93C4: ; 0x020D93C4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
movs r8, r2
mov sb, r1
add r6, sl, #0x20
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [sl, #0x14]
add r1, r0, r8, lsl #3
cmp r1, r0
ldrlo r0, [sl, #0x18]
addlo r0, r0, #1
strlo r0, [sl, #0x18]
ldr r0, [sl, #0x18]
add r0, r0, r8, lsr #29
str r0, [sl, #0x18]
str r1, [sl, #0x14]
ldr r1, [sl, #0x1c]
cmp r1, #0
beq _020D947C
add r0, r1, r8
cmp r0, #0x40
blo _020D945C
rsb r4, r1, #0x40
mov r0, sb
mov r2, r4
add r1, r6, r1
bl MIi_CpuCopy8
ldr r1, _020D9514 ; =_02110E70
mov r0, sl
ldr r3, [r1]
mov r1, r6
mov r2, #0x40
sub r8, r8, r4
add sb, sb, r4
blx r3
mov r0, #0
str r0, [sl, #0x1c]
b _020D947C
_020D945C:
mov r0, sb
mov r2, r8
add r1, r6, r1
bl MIi_CpuCopy8
ldr r0, [sl, #0x1c]
add r0, r0, r8
str r0, [sl, #0x1c]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020D947C:
cmp r8, #0x40
blo _020D94F4
bic r7, r8, #0x3f
tst sb, #3
sub r8, r8, r7
bne _020D94B4
ldr r1, _020D9514 ; =_02110E70
mov r0, sl
ldr r3, [r1]
mov r1, sb
mov r2, r7
blx r3
add sb, sb, r7
b _020D94F4
_020D94B4:
mov r5, #0x40
ldr r4, _020D9514 ; =_02110E70
mov fp, r5
_020D94C0:
mov r0, sb
mov r1, r6
mov r2, r5
bl MIi_CpuCopy8
ldr r3, [r4]
mov r0, sl
mov r1, r6
add sb, sb, #0x40
mov r2, fp
blx r3
sub r7, r7, #0x40
cmp r7, #0
bgt _020D94C0
_020D94F4:
str r8, [sl, #0x1c]
cmp r8, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r0, sb
mov r1, r6
mov r2, r8
bl MIi_CpuCopy8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020D9514: .word _02110E70
arm_func_end sub_020D93C4
arm_func_start sub_020D9518
sub_020D9518: ; 0x020D9518
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, lr}
ldr r0, [sp, #0x10]
mov r6, r1
ldr r3, [r0, #0x1c]
add r4, r0, #0x20
tst r3, #3
mov r2, r3, asr #2
moveq r0, #0
streq r0, [r4, r2, lsl #2]
ldr r1, [sp, #0x10]
mov r0, #0x80
add r5, r1, #0x20
strb r0, [r5, r3]
add r3, r3, #1
tst r3, #3
beq _020D9570
mov r0, #0
_020D9560:
strb r0, [r5, r3]
add r3, r3, #1
tst r3, #3
bne _020D9560
_020D9570:
ldr r0, [sp, #0x10]
add r2, r2, #1
ldr r0, [r0, #0x1c]
cmp r0, #0x38
blt _020D95BC
cmp r2, #0x10
bge _020D95A0
mov r0, #0
_020D9590:
str r0, [r4, r2, lsl #2]
add r2, r2, #1
cmp r2, #0x10
blt _020D9590
_020D95A0:
ldr r1, _020D9710 ; =_02110E70
ldr r0, [sp, #0x10]
ldr r3, [r1]
mov r1, r4
mov r2, #0x40
blx r3
mov r2, #0
_020D95BC:
cmp r2, #0xe
bge _020D95D8
mov r0, #0
_020D95C8:
str r0, [r4, r2, lsl #2]
add r2, r2, #1
cmp r2, #0xe
blt _020D95C8
_020D95D8:
ldr r0, [sp, #0x10]
ldr r3, _020D9710 ; =_02110E70
ldr r2, [r0, #0x14]
mov r1, r4
strb r2, [r5, #0x3f]
mov r0, r2, lsr #8
strb r0, [r5, #0x3e]
mov r0, r2, lsr #0x10
strb r0, [r5, #0x3d]
mov r0, r2, lsr #0x18
strb r0, [r5, #0x3c]
ldr r0, [sp, #0x10]
mov r2, #0x40
ldr r4, [r0, #0x18]
strb r4, [r5, #0x3b]
mov r0, r4, lsr #8
strb r0, [r5, #0x3a]
mov r0, r4, lsr #0x10
strb r0, [r5, #0x39]
mov r0, r4, lsr #0x18
strb r0, [r5, #0x38]
ldr r0, [sp, #0x10]
ldr r3, [r3]
blx r3
ldr r0, [sp, #0x10]
ldr r1, [r0]
mov r0, r1, lsr #0x18
strb r0, [r6]
mov r0, r1, lsr #0x10
strb r0, [r6, #1]
mov r0, r1, lsr #8
strb r0, [r6, #2]
strb r1, [r6, #3]
ldr r0, [sp, #0x10]
ldr r1, [r0, #4]
mov r0, r1, lsr #0x18
strb r0, [r6, #4]
mov r0, r1, lsr #0x10
strb r0, [r6, #5]
mov r0, r1, lsr #8
strb r0, [r6, #6]
strb r1, [r6, #7]
ldr r0, [sp, #0x10]
ldr r1, [r0, #8]
mov r0, r1, lsr #0x18
strb r0, [r6, #8]
mov r0, r1, lsr #0x10
strb r0, [r6, #9]
mov r0, r1, lsr #8
strb r0, [r6, #0xa]
strb r1, [r6, #0xb]
ldr r0, [sp, #0x10]
ldr r1, [r0, #0xc]
mov r0, r1, lsr #0x18
strb r0, [r6, #0xc]
mov r0, r1, lsr #0x10
strb r0, [r6, #0xd]
mov r0, r1, lsr #8
strb r0, [r6, #0xe]
strb r1, [r6, #0xf]
ldr r0, [sp, #0x10]
ldr r1, [r0, #0x10]
mov r0, r1, lsr #0x18
strb r0, [r6, #0x10]
mov r0, r1, lsr #0x10
strb r0, [r6, #0x11]
mov r0, r1, lsr #8
strb r0, [r6, #0x12]
strb r1, [r6, #0x13]
ldr r3, [sp, #0x10]
mov r0, #0
add r1, sp, #0x10
mov r2, #4
str r0, [r3, #0x1c]
bl MIi_CpuClear32
ldmia sp!, {r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020D9710: .word _02110E70
arm_func_end sub_020D9518
arm_func_start sub_020D9714
sub_020D9714: ; 0x020D9714
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xa0
ldr lr, _020D9798 ; =0x0210E188
add ip, sp, #8
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
mov r4, ip
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
add lr, sp, #0x38
add ip, sp, #0x24
str lr, [sp, #0x10]
ldr lr, _020D979C ; =sub_020D9374
str ip, [sp, #0x14]
ldr ip, _020D97A0 ; =sub_020D93C4
str lr, [sp, #0x18]
ldr lr, _020D97A4 ; =sub_020D9518
str ip, [sp, #0x1c]
ldr ip, [sp, #0xb8]
str lr, [sp, #0x20]
str ip, [sp]
mov r3, r5
mov r0, r8
mov r1, r7
mov r2, r6
str r4, [sp, #4]
bl sub_020D97A8
add sp, sp, #0xa0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020D9798: .word 0x0210E188
_020D979C: .word sub_020D9374
_020D97A0: .word sub_020D93C4
_020D97A4: .word sub_020D9518
arm_func_end sub_020D9714
arm_func_start sub_020D97A8
sub_020D97A8: ; 0x020D97A8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc0
ldr r5, [sp, #0xe0]
ldr r4, [sp, #0xe4]
mov r8, r1
movs sb, r0
mov r7, r2
cmpne r8, #0
mov r6, r3
cmpne r7, #0
cmpne r6, #0
cmpne r5, #0
cmpne r4, #0
addeq sp, sp, #0xc0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldr r0, [r4, #4]
cmp r5, r0
ble _020D9828
ldr r0, [r4, #8]
ldr r1, [r4, #0x10]
blx r1
ldr r0, [r4, #8]
ldr r3, [r4, #0x14]
mov r1, r6
mov r2, r5
blx r3
ldr r0, [r4, #8]
ldr r2, [r4, #0x18]
add r1, sp, #0x80
blx r2
ldr r5, [r4]
add r6, sp, #0x80
_020D9828:
cmp r5, #0
mov r2, #0
ble _020D9850
add r1, sp, #0x40
_020D9838:
ldrb r0, [r6, r2]
add r2, r2, #1
cmp r2, r5
eor r0, r0, #0x36
strb r0, [r1], #1
blt _020D9838
_020D9850:
ldr r0, [r4, #4]
cmp r2, r0
bge _020D987C
add r0, sp, #0x40
add r3, r0, r2
mov r1, #0x36
_020D9868:
strb r1, [r3], #1
ldr r0, [r4, #4]
add r2, r2, #1
cmp r2, r0
blt _020D9868
_020D987C:
ldr r0, [r4, #8]
ldr r1, [r4, #0x10]
blx r1
ldr r0, [r4, #8]
ldr r2, [r4, #4]
ldr r3, [r4, #0x14]
add r1, sp, #0x40
blx r3
ldr r0, [r4, #8]
ldr r3, [r4, #0x14]
mov r1, r8
mov r2, r7
blx r3
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x18]
blx r2
cmp r5, #0
mov r3, #0
ble _020D98E8
add r1, sp, #0
_020D98D0:
ldrb r0, [r6, r3]
add r3, r3, #1
cmp r3, r5
eor r0, r0, #0x5c
strb r0, [r1], #1
blt _020D98D0
_020D98E8:
ldr r0, [r4, #4]
cmp r3, r0
bge _020D9914
add r0, sp, #0
add r2, r0, r3
mov r1, #0x5c
_020D9900:
strb r1, [r2], #1
ldr r0, [r4, #4]
add r3, r3, #1
cmp r3, r0
blt _020D9900
_020D9914:
ldr r0, [r4, #8]
ldr r1, [r4, #0x10]
blx r1
ldr r0, [r4, #8]
ldr r2, [r4, #4]
ldr r3, [r4, #0x14]
add r1, sp, #0
blx r3
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4]
ldr r3, [r4, #0x14]
blx r3
ldr r0, [r4, #8]
ldr r2, [r4, #0x18]
mov r1, sb
blx r2
add sp, sp, #0xc0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
arm_func_end sub_020D97A8
_020D9960: .word 0x00FF00FF
_020D9964: .word 0x5A827999
_020D9968: .word 0x6ED9EBA1
_020D996C: .word 0x8F1BBCDC
_020D9970: .word 0xCA62C1D6
arm_func_end sub_020D97A8
arm_func_start sub_020D9974
sub_020D9974: ; 0x020D9974
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr}
ldmia r0, {r3, sb, sl, fp, ip}
sub sp, sp, #0x84
str r2, [sp, #0x80]
_020D9984:
ldr r8, _020D9964 ; =0x5A827999
ldr r7, _020D9960 ; =0x00FF00FF
mov r6, sp
mov r5, #0
_020D9994:
ldr r4, [r1], #4
add r2, r8, ip
add r2, r2, r3, ror #27
and lr, r4, r7
and r4, r7, r4, ror #24
orr r4, r4, lr, ror #8
str r4, [r6, #0x40]
str r4, [r6], #4
add r2, r2, r4
eor r4, sl, fp
and r4, r4, sb
eor r4, r4, fp
add r2, r2, r4
mov sb, sb, ror #2
mov ip, fp
mov fp, sl
mov sl, sb
mov sb, r3
mov r3, r2
add r5, r5, #4
cmp r5, #0x40
blt _020D9994
mov r7, #0
mov r6, sp
_020D99F4:
ldr r2, [r6]
ldr r5, [r6, #8]
ldr r4, [r6, #0x20]
ldr lr, [r6, #0x34]
eor r2, r2, r5
eor r4, r4, lr
eor r2, r2, r4
mov r2, r2, ror #0x1f
str r2, [r6, #0x40]
str r2, [r6], #4
add r2, r2, ip
add r2, r2, r8
add r2, r2, r3, ror #27
eor r4, sl, fp
and r4, r4, sb
eor r4, r4, fp
add r2, r2, r4
mov sb, sb, ror #2
mov ip, fp
mov fp, sl
mov sl, sb
mov sb, r3
mov r3, r2
add r7, r7, #4
cmp r7, #0x10
blt _020D99F4
ldr r8, _020D9968 ; =0x6ED9EBA1
mov r7, #0
_020D9A64:
ldr r2, [r6]
ldr r4, [r6, #8]
ldr lr, [r6, #0x20]
ldr r5, [r6, #0x34]
eor r2, r2, r4
eor lr, lr, r5
eor r2, r2, lr
mov r2, r2, ror #0x1f
str r2, [r6, #0x40]
str r2, [r6], #4
add r2, r2, ip
add r2, r2, r8
add r2, r2, r3, ror #27
eor lr, sb, sl
eor lr, lr, fp
add r2, r2, lr
mov sb, sb, ror #2
mov ip, fp
mov fp, sl
mov sl, sb
mov sb, r3
mov r3, r2
add r7, r7, #1
cmp r7, #0xc
moveq r6, sp
cmp r7, #0x14
blt _020D9A64
ldr r8, _020D996C ; =0x8F1BBCDC
mov r7, #0
_020D9AD8:
ldr r2, [r6]
ldr lr, [r6, #8]
ldr r5, [r6, #0x20]
ldr r4, [r6, #0x34]
eor r2, r2, lr
eor r5, r5, r4
eor r2, r2, r5
mov r2, r2, ror #0x1f
str r2, [r6, #0x40]
str r2, [r6], #4
add r2, r2, ip
add r2, r2, r8
add r2, r2, r3, ror #27
orr r5, sb, sl
and r5, r5, fp
and r4, sb, sl
orr r5, r5, r4
add r2, r2, r5
mov sb, sb, ror #2
mov ip, fp
mov fp, sl
mov sl, sb
mov sb, r3
mov r3, r2
add r7, r7, #1
cmp r7, #8
moveq r6, sp
cmp r7, #0x14
blt _020D9AD8
ldr r8, _020D9970 ; =0xCA62C1D6
mov r7, #0
_020D9B54:
ldr r2, [r6]
ldr r5, [r6, #8]
ldr r4, [r6, #0x20]
ldr lr, [r6, #0x34]
eor r2, r2, r5
eor r4, r4, lr
eor r2, r2, r4
mov r2, r2, ror #0x1f
str r2, [r6, #0x40]
str r2, [r6], #4
add r2, r2, ip
add r2, r2, r8
add r2, r2, r3, ror #27
eor r4, sb, sl
eor r4, r4, fp
add r2, r2, r4
mov sb, sb, ror #2
mov ip, fp
mov fp, sl
mov sl, sb
mov sb, r3
mov r3, r2
add r7, r7, #1
cmp r7, #4
moveq r6, sp
cmp r7, #0x14
blt _020D9B54
ldmia r0, {r2, r4, r6, r7, lr}
add r3, r3, r2
add sb, sb, r4
add sl, sl, r6
add fp, fp, r7
add ip, ip, lr
stmia r0, {r3, sb, sl, fp, ip}
ldr lr, [sp, #0x80]
subs lr, lr, #0x40
str lr, [sp, #0x80]
bgt _020D9984
add sp, sp, #0x84
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}
arm_func_end sub_020D9974
arm_func_start sub_020D9BF4
sub_020D9BF4: ; 0x020D9BF4
ldr r1, _020D9C30 ; =0x04000290
stmdb sp!, {r4}
ldmia r1, {r2, r3, r4, ip}
stmia r0!, {r2, r3, r4, ip}
ldrh ip, [r1, #-0x10]
add r1, r1, #0x28
ldmia r1, {r2, r3}
stmia r0!, {r2, r3}
and ip, ip, #3
ldrh r2, [r1, #-8]
strh ip, [r0]
and r2, r2, #1
strh r2, [r0, #2]
ldmia sp!, {r4}
bx lr
.align 2, 0
_020D9C30: .word 0x04000290
arm_func_end sub_020D9BF4
arm_func_start sub_020D9C34
sub_020D9C34: ; 0x020D9C34
stmdb sp!, {r4}
ldr r1, _020D9C6C ; =0x04000290
ldmia r0, {r2, r3, r4, ip}
stmia r1, {r2, r3, r4, ip}
ldrh r2, [r0, #0x18]
ldrh r3, [r0, #0x1a]
strh r2, [r1, #-0x10]
strh r3, [r1, #0x20]
add r0, r0, #0x10
add r1, r1, #0x28
ldmia r0, {r2, r3}
stmia r1, {r2, r3}
ldmia sp!, {r4}
bx lr
.align 2, 0
_020D9C6C: .word 0x04000290
arm_func_end sub_020D9C34
arm_func_start sub_020D9C70
sub_020D9C70: ; 0x020D9C70
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r0, r1, lsl #0x10
mov r3, r0, lsr #0x10
and r0, r3, #0x7f00
mov r0, r0, lsl #8
cmp r2, #0
mov r0, r0, lsr #0x10
beq _020D9CCC
ldr r1, _020D9EE8 ; =0x021E36B0
mov r2, #1
ldrh r3, [r1, #0x38]
orr r2, r3, r2, lsl r0
strh r2, [r1, #0x38]
ldr r3, [r1, #4]
cmp r3, #0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r1, #4
mov r2, #0
blx r3
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D9CCC:
cmp r0, #0x10
bne _020D9D84
ldr r1, _020D9EE8 ; =0x021E36B0
ldrh r2, [r1, #0x10]
add r2, r2, #1
strh r2, [r1, #0x10]
ldrh r3, [r1, #0x10]
ldrh r2, [r1, #0x18]
cmp r3, r2
movhs r2, #0
strhsh r2, [r1, #0x10]
ldr r2, _020D9EEC ; =0x027FFFAA
ldr r1, _020D9EE8 ; =0x021E36B0
ldrh r3, [r2]
ldrh r2, [r2, #2]
ldrh lr, [r1, #0x10]
strh r3, [sp, #4]
strh r2, [sp, #6]
ldr r5, [sp, #4]
ldr r7, [r1, #0x14]
mov r2, r5, lsl #7
mov r3, r2, lsr #0x1f
mov r4, r5, lsl #8
mov r2, r5, lsl #5
mov ip, r5, lsl #0x14
mov r2, r2, lsr #0x1e
mov r6, lr, lsl #3
mov r5, ip, lsr #0x14
strh r5, [r7, r6]
add r5, r7, lr, lsl #3
mov r4, r4, lsr #0x14
strh r4, [r5, #2]
and r3, r3, #0xff
strh r3, [r5, #4]
and r2, r2, #0xff
strh r2, [r5, #6]
ldr r3, [r1, #4]
cmp r3, #0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrh r2, [r1, #0x10]
mov r1, #0
and r2, r2, #0xff
blx r3
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D9D84:
tst r1, #0x1000000
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
and r1, r3, #0xff
cmp r1, #4
addls pc, pc, r1, lsl #2
b _020D9EDC
_020D9DA0: ; jump table
b _020D9DB4 ; case 0
b _020D9EDC ; case 1
b _020D9E88 ; case 2
b _020D9E90 ; case 3
b _020D9E80 ; case 4
_020D9DB4:
cmp r0, #0
beq _020D9DD8
cmp r0, #1
beq _020D9E38
cmp r0, #2
ldreq r1, _020D9EE8 ; =0x021E36B0
moveq r2, #0
streqh r2, [r1, #0x36]
b _020D9E44
_020D9DD8:
ldr r2, _020D9EEC ; =0x027FFFAA
ldr r1, _020D9EE8 ; =0x021E36B0
ldrh r4, [r2]
ldrh r3, [r2, #2]
mov r2, #0
strh r4, [sp]
strh r3, [sp, #2]
ldr r4, [sp]
mov r3, r4, lsl #0x14
mov r5, r3, lsr #0x14
mov lr, r4, lsl #8
mov r3, r4, lsl #7
mov ip, r3, lsr #0x1f
mov r3, r4, lsl #5
mov r3, r3, lsr #0x1e
strh r5, [r1, #8]
mov lr, lr, lsr #0x14
strh lr, [r1, #0xa]
and ip, ip, #0xff
strh ip, [r1, #0xc]
and r3, r3, #0xff
strh r3, [r1, #0xe]
strh r2, [r1, #0x36]
b _020D9E44
_020D9E38:
ldr r1, _020D9EE8 ; =0x021E36B0
mov r2, #2
strh r2, [r1, #0x36]
_020D9E44:
ldr r1, _020D9EE8 ; =0x021E36B0
mov r2, #1
ldrh r3, [r1, #0x3a]
mvn r2, r2, lsl r0
and r2, r3, r2
strh r2, [r1, #0x3a]
ldr r3, [r1, #4]
cmp r3, #0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r1, #0
mov r2, r1
blx r3
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D9E80:
mov r4, #3
b _020D9E94
_020D9E88:
mov r4, #1
b _020D9E94
_020D9E90:
mov r4, #2
_020D9E94:
ldr r1, _020D9EE8 ; =0x021E36B0
mov ip, #1
ldrh r3, [r1, #0x38]
mvn r2, ip, lsl r0
orr r3, r3, ip, lsl r0
strh r3, [r1, #0x38]
ldrh r3, [r1, #0x3a]
and r2, r3, r2
strh r2, [r1, #0x3a]
ldr r3, [r1, #4]
cmp r3, #0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
and r1, r4, #0xff
mov r2, #0
blx r3
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020D9EDC:
bl OS_Terminate
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020D9EE8: .word 0x021E36B0
_020D9EEC: .word 0x027FFFAA
arm_func_end sub_020D9C70
arm_func_start sub_020D9EF0
sub_020D9EF0: ; 0x020D9EF0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020D9F60 ; =0x021E36B0
ldrh r1, [r0]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0]
bl sub_020D6548
ldr r0, _020D9F60 ; =0x021E36B0
mov r1, #0
strh r1, [r0, #0x10]
str r1, [r0, #4]
str r1, [r0, #0x14]
strh r1, [r0, #0x36]
strh r1, [r0, #0x34]
strh r1, [r0, #0x3a]
strh r1, [r0, #0x38]
mov r5, #6
mov r4, #1
_020D9F3C:
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020D9F3C
ldr r1, _020D9F64 ; =sub_020D9C70
mov r0, #6
bl sub_020D6654
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020D9F60: .word 0x021E36B0
_020D9F64: .word sub_020D9C70
arm_func_end sub_020D9EF0
arm_func_start sub_020D9F68
sub_020D9F68: ; 0x020D9F68
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x14
ldr ip, _020D9FF8 ; =0x027FFC80
mov r4, r0
ldrh r1, [ip, #0x58]
ldrh r2, [ip, #0x5a]
ldrh r0, [ip, #0x5e]
cmp r1, #0
ldrh lr, [ip, #0x60]
cmpeq r0, #0
cmpeq r2, #0
ldrb r3, [ip, #0x5c]
ldrb r5, [ip, #0x5d]
ldrb r6, [ip, #0x62]
ldrb ip, [ip, #0x63]
cmpeq lr, #0
beq _020D9FCC
str r5, [sp]
stmib sp, {r0, lr}
str r6, [sp, #0xc]
mov r0, r4
str ip, [sp, #0x10]
bl sub_020DA4F4
cmp r0, #0
beq _020D9FEC
_020D9FCC:
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, pc}
_020D9FEC:
mov r0, #1
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_020D9FF8: .word 0x027FFC80
arm_func_end sub_020D9F68
arm_func_start sub_020D9FFC
sub_020D9FFC: ; 0x020D9FFC
stmdb sp!, {r4, lr}
movs r4, r0
bne _020DA018
ldr r0, _020DA118 ; =0x021E36B0
mov r1, #0
strh r1, [r0, #0x34]
ldmia sp!, {r4, pc}
_020DA018:
bl OS_DisableInterrupts
ldrsh r2, [r4, #4]
cmp r2, #0
beq _020DA07C
ldr r3, _020DA11C ; =0x04000280
mov r1, #0
strh r1, [r3]
mov r1, #0x10000000
str r1, [r3, #0x10]
str r2, [r3, #0x18]
mov r1, #0
str r1, [r3, #0x1c]
ldrsh r2, [r4]
ldr r1, _020DA118 ; =0x021E36B0
str r2, [r1, #0x1c]
ldrsh r2, [r4, #4]
str r2, [r1, #0x20]
_020DA05C:
ldrh r1, [r3]
tst r1, #0x8000
bne _020DA05C
ldr r2, _020DA120 ; =0x040002A0
ldr r1, _020DA118 ; =0x021E36B0
ldr r2, [r2]
str r2, [r1, #0x24]
b _020DA090
_020DA07C:
ldr r1, _020DA118 ; =0x021E36B0
mov r2, #0
str r2, [r1, #0x1c]
str r2, [r1, #0x20]
str r2, [r1, #0x24]
_020DA090:
ldrsh r2, [r4, #6]
cmp r2, #0
beq _020DA0F0
ldr r3, _020DA11C ; =0x04000280
mov r1, #0
strh r1, [r3]
mov r1, #0x10000000
str r1, [r3, #0x10]
str r2, [r3, #0x18]
mov r1, #0
str r1, [r3, #0x1c]
ldrsh r2, [r4, #2]
ldr r1, _020DA118 ; =0x021E36B0
str r2, [r1, #0x28]
ldrsh r2, [r4, #6]
str r2, [r1, #0x2c]
_020DA0D0:
ldrh r1, [r3]
tst r1, #0x8000
bne _020DA0D0
ldr r2, _020DA120 ; =0x040002A0
ldr r1, _020DA118 ; =0x021E36B0
ldr r2, [r2]
str r2, [r1, #0x30]
b _020DA104
_020DA0F0:
ldr r1, _020DA118 ; =0x021E36B0
mov r2, #0
str r2, [r1, #0x28]
str r2, [r1, #0x2c]
str r2, [r1, #0x30]
_020DA104:
bl OS_RestoreInterrupts
ldr r0, _020DA118 ; =0x021E36B0
mov r1, #1
strh r1, [r0, #0x34]
ldmia sp!, {r4, pc}
.align 2, 0
_020DA118: .word 0x021E36B0
_020DA11C: .word 0x04000280
_020DA120: .word 0x040002A0
arm_func_end sub_020D9FFC
arm_func_start sub_020DA124
sub_020DA124: ; 0x020DA124
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
mov r4, r0
mov r0, #6
mov r1, #0x3000000
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movge r0, #1
movlt r0, #0
cmp r0, #0
bne _020DA18C
mov r0, r4
bl OS_RestoreInterrupts
ldr r0, _020DA1B4 ; =0x021E36B0
ldrh r1, [r0, #0x38]
orr r1, r1, #1
strh r1, [r0, #0x38]
ldr r3, [r0, #4]
cmp r3, #0
ldmeqia sp!, {r4, pc}
mov r0, #0
mov r2, r0
mov r1, #4
blx r3
ldmia sp!, {r4, pc}
_020DA18C:
ldr r1, _020DA1B4 ; =0x021E36B0
mov r0, r4
ldrh r2, [r1, #0x3a]
orr r2, r2, #1
strh r2, [r1, #0x3a]
ldrh r2, [r1, #0x38]
bic r2, r2, #1
strh r2, [r1, #0x38]
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020DA1B4: .word 0x021E36B0
arm_func_end sub_020DA124
arm_func_start sub_020DA1B8
sub_020DA1B8: ; 0x020DA1B8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
bl sub_020DA804
ldr r1, _020DA204 ; =0x021E36B0
ldrh r0, [r1, #0x38]
tst r0, #1
movne r0, #1
ldmneia sp!, {r4, pc}
ldrh r3, [r1, #8]
ldrh r2, [r1, #0xa]
mov r0, #0
strh r3, [r4]
strh r2, [r4, #2]
ldrh r2, [r1, #0xc]
ldrh r1, [r1, #0xe]
strh r2, [r4, #4]
strh r1, [r4, #6]
ldmia sp!, {r4, pc}
.align 2, 0
_020DA204: .word 0x021E36B0
arm_func_end sub_020DA1B8
arm_func_start sub_020DA208
sub_020DA208: ; 0x020DA208
stmdb sp!, {r3, r4, r5, lr}
ldr ip, _020DA304 ; =0x021E36B0
mov lr, #0
str r2, [ip, #0x14]
mov r5, r1
strh lr, [ip, #0x10]
strh r5, [ip, #0x12]
mov r4, r0
strh r3, [ip, #0x18]
cmp r3, #0
bls _020DA250
mov r1, lr
_020DA238:
ldr r0, [ip, #0x14]
add r0, r0, lr, lsl #3
add lr, lr, #1
strh r1, [r0, #4]
cmp lr, r3
blo _020DA238
_020DA250:
bl OS_DisableInterrupts
and r1, r5, #0xff
orr r1, r1, #0x100
mov r5, r0
orr r1, r1, #0x2000000
mov r0, #6
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
blt _020DA29C
orr r1, r4, #0x10000
orr r1, r1, #0x1000000
mov r0, #6
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
movge r0, #1
_020DA29C:
tst r0, #0xff
bne _020DA2DC
mov r0, r5
bl OS_RestoreInterrupts
ldr r0, _020DA304 ; =0x021E36B0
ldrh r1, [r0, #0x38]
orr r1, r1, #2
strh r1, [r0, #0x38]
ldr r3, [r0, #4]
cmp r3, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
mov r1, #4
mov r2, #0
blx r3
ldmia sp!, {r3, r4, r5, pc}
_020DA2DC:
ldr r1, _020DA304 ; =0x021E36B0
mov r0, r5
ldrh r2, [r1, #0x3a]
orr r2, r2, #2
strh r2, [r1, #0x3a]
ldrh r2, [r1, #0x38]
bic r2, r2, #2
strh r2, [r1, #0x38]
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DA304: .word 0x021E36B0
arm_func_end sub_020DA208
arm_func_start sub_020DA308
sub_020DA308: ; 0x020DA308
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
mov r4, r0
ldr r1, _020DA398 ; =0x03000200
mov r0, #6
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movge r0, #1
movlt r0, #0
cmp r0, #0
bne _020DA370
mov r0, r4
bl OS_RestoreInterrupts
ldr r0, _020DA39C ; =0x021E36B0
ldrh r1, [r0, #0x38]
orr r1, r1, #4
strh r1, [r0, #0x38]
ldr r3, [r0, #4]
cmp r3, #0
ldmeqia sp!, {r4, pc}
mov r0, #2
mov r1, #4
mov r2, #0
blx r3
ldmia sp!, {r4, pc}
_020DA370:
ldr r1, _020DA39C ; =0x021E36B0
mov r0, r4
ldrh r2, [r1, #0x3a]
orr r2, r2, #4
strh r2, [r1, #0x3a]
ldrh r2, [r1, #0x38]
bic r2, r2, #4
strh r2, [r1, #0x38]
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
.align 2, 0
_020DA398: .word 0x03000200
_020DA39C: .word 0x021E36B0
arm_func_end sub_020DA308
arm_func_start sub_020DA3A0
sub_020DA3A0: ; 0x020DA3A0
stmdb sp!, {r4, lr}
ldr ip, _020DA4E0 ; =0x021E36B0
mov r1, #3
strh r1, [r0, #6]
ldrh r1, [ip, #0x12]
ldrh r2, [ip, #0x10]
cmp r1, #1
ldrneh r1, [ip, #0x18]
cmpne r1, #1
bne _020DA3FC
ldr r1, _020DA4E0 ; =0x021E36B0
mov ip, r2, lsl #3
ldr r1, [r1, #0x14]
add r3, r1, r2, lsl #3
ldrh r2, [r1, ip]
ldrh r1, [r3, #2]
strh r2, [r0]
strh r1, [r0, #2]
ldrh r2, [r3, #4]
ldrh r1, [r3, #6]
strh r2, [r0, #4]
strh r1, [r0, #6]
ldmia sp!, {r4, pc}
_020DA3FC:
mov r1, #0
b _020DA4BC
_020DA404:
subs lr, r2, r1
ldr r3, [ip, #0x14]
addmi lr, lr, r4
add r3, r3, lr, lsl #3
ldrh lr, [r3, #4]
cmp lr, #0
bne _020DA444
ldrh r2, [r3]
ldrh r1, [r3, #2]
strh r2, [r0]
strh r1, [r0, #2]
ldrh r2, [r3, #4]
ldrh r1, [r3, #6]
strh r2, [r0, #4]
strh r1, [r0, #6]
ldmia sp!, {r4, pc}
_020DA444:
ldrh lr, [r0, #6]
tst lr, #1
beq _020DA474
ldrh lr, [r3, #6]
tst lr, #1
bne _020DA474
ldrh lr, [r3]
cmp r1, #0
strh lr, [r0]
ldrneh lr, [r0, #6]
bicne lr, lr, #1
strneh lr, [r0, #6]
_020DA474:
ldrh lr, [r0, #6]
tst lr, #2
beq _020DA4A4
ldrh lr, [r3, #6]
tst lr, #2
bne _020DA4A4
ldrh r3, [r3, #2]
cmp r1, #0
strh r3, [r0, #2]
ldrneh r3, [r0, #6]
bicne r3, r3, #2
strneh r3, [r0, #6]
_020DA4A4:
ldrh r3, [r0, #6]
cmp r3, #0
moveq r1, #1
streqh r1, [r0, #4]
ldmeqia sp!, {r4, pc}
add r1, r1, #1
_020DA4BC:
ldrh r3, [ip, #0x12]
cmp r1, r3
ldrlth r4, [ip, #0x18]
sublt r3, r4, #1
cmplt r1, r3
blt _020DA404
mov r1, #1
strh r1, [r0, #4]
ldmia sp!, {r4, pc}
.align 2, 0
_020DA4E0: .word 0x021E36B0
arm_func_end sub_020DA3A0
arm_func_start sub_020DA4E4
sub_020DA4E4: ; 0x020DA4E4
ldr r0, _020DA4F0 ; =0x021E36B0
ldrh r0, [r0, #0x10]
bx lr
.align 2, 0
_020DA4F0: .word 0x021E36B0
arm_func_end sub_020DA4E4
arm_func_start sub_020DA4F4
sub_020DA4F4: ; 0x020DA4F4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, r1
mov r8, r2
cmp sb, #0x1000
cmplo r8, #0x1000
ldrloh r4, [sp, #0x2c]
mov r7, r3
mov sl, r0
cmplo r4, #0x1000
ldrloh r3, [sp, #0x30]
cmplo r3, #0x1000
movhs r0, #1
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r7, #0x100
ldrloh r2, [sp, #0x34]
cmplo r2, #0x100
ldrloh r1, [sp, #0x28]
cmplo r1, #0xc0
ldrloh r0, [sp, #0x38]
cmplo r0, #0xc0
movhs r0, #1
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r7, r2
cmpne r1, r0
cmpne sb, r4
cmpne r8, r3
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
bl OS_DisableInterrupts
ldrh lr, [sp, #0x2c]
ldrh ip, [sp, #0x34]
ldr r3, _020DA6D8 ; =0x04000280
sub r1, sb, lr
mov r2, #0
ldrh r4, [sp, #0x38]
ldrh r5, [sp, #0x28]
ldrh r6, [sp, #0x30]
strh r2, [r3]
mov r1, r1, lsl #8
str r1, [r3, #0x10]
sub r1, r7, ip
str r1, [r3, #0x18]
mov r1, r2
sub r2, r5, r4
str r1, [r3, #0x1c]
sub r1, r8, r6
str r2, [sp]
_020DA5B0:
ldrh r2, [r3]
tst r2, #0x8000
bne _020DA5B0
mov fp, r1, lsl #8
ldr r1, _020DA6DC ; =0x040002A0
ldr r2, [r1]
mov r1, #0
strh r1, [r3]
ldr r1, _020DA6DC ; =0x040002A0
cmp r2, #0x8000
str fp, [r1, #-0x10]
sub r3, r1, #8
ldr r1, [sp]
mov fp, #0
stmia r3, {r1, fp}
bge _020DA600
mov r1, fp
sub r1, r1, #0x8000
cmp r2, r1
bge _020DA60C
_020DA600:
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020DA60C:
strh r2, [sl, #4]
ldrsh r2, [sl, #4]
add r1, r7, ip
add r3, sb, lr
mul r1, r2, r1
rsb r1, r1, r3, lsl #8
mov r1, r1, lsl #9
mov r2, r1, asr #0x10
cmp r2, #0x8000
bge _020DA644
mov r1, fp
sub r1, r1, #0x8000
cmp r2, r1
bge _020DA650
_020DA644:
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020DA650:
ldr r1, _020DA6DC ; =0x040002A0
strh r2, [sl]
sub r2, r1, #0x20
_020DA65C:
ldrh r1, [r2]
tst r1, #0x8000
bne _020DA65C
ldr r1, _020DA6DC ; =0x040002A0
ldr r7, [r1]
bl OS_RestoreInterrupts
cmp r7, #0x8000
bge _020DA68C
mov r1, #0x8000
rsb r1, r1, #0
cmp r7, r1
bge _020DA694
_020DA68C:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020DA694:
strh r7, [sl, #6]
ldrsh r2, [sl, #6]
add r0, r5, r4
add r3, r8, r6
mul r0, r2, r0
rsb r0, r0, r3, lsl #8
mov r0, r0, lsl #9
mov r0, r0, asr #0x10
cmp r0, #0x8000
bge _020DA6C4
cmp r0, r1
bge _020DA6CC
_020DA6C4:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020DA6CC:
strh r0, [sl, #2]
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DA6D8: .word 0x04000280
_020DA6DC: .word 0x040002A0
arm_func_end sub_020DA4F4
arm_func_start sub_020DA6E0
sub_020DA6E0: ; 0x020DA6E0
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _020DA7FC ; =0x021E36B0
ldrh r2, [r2, #0x34]
cmp r2, #0
bne _020DA718
ldrh r3, [r1]
ldrh r2, [r1, #2]
strh r3, [r0]
strh r2, [r0, #2]
ldrh r2, [r1, #4]
ldrh r1, [r1, #6]
strh r2, [r0, #4]
strh r1, [r0, #6]
ldmia sp!, {r4, r5, r6, pc}
_020DA718:
ldrh r3, [r1, #4]
ldr r2, _020DA800 ; =0x021E36CC
strh r3, [r0, #4]
ldrh r3, [r1, #6]
strh r3, [r0, #6]
ldrh r3, [r1, #4]
cmp r3, #0
bne _020DA748
mov r1, #0
strh r1, [r0]
strh r1, [r0, #2]
ldmia sp!, {r4, r5, r6, pc}
_020DA748:
ldrh r4, [r1]
ldr r3, [r2]
ldr lr, [r2, #8]
mov r4, r4, lsl #2
subs ip, r4, r3
mov r3, r3, asr #0x1f
rsc r3, r3, r4, asr #31
umull r6, r5, lr, ip
mla r5, lr, r3, r5
mov r3, lr, asr #0x1f
mla r5, r3, ip, r5
mov r3, r6, lsr #0x16
orr r3, r3, r5, lsl #10
strh r3, [r0]
ldrsh r3, [r0]
cmp r3, #0
movlt r3, #0
strlth r3, [r0]
blt _020DA7A0
cmp r3, #0xff
movgt r3, #0xff
strgth r3, [r0]
_020DA7A0:
ldrh r3, [r1, #2]
ldr r1, [r2, #0xc]
ldr ip, [r2, #0x14]
mov r2, r3, lsl #2
subs r3, r2, r1
mov r1, r1, asr #0x1f
rsc r1, r1, r2, asr #31
umull r4, lr, ip, r3
mla lr, ip, r1, lr
mov r1, ip, asr #0x1f
mla lr, r1, r3, lr
mov r1, r4, lsr #0x16
orr r1, r1, lr, lsl #10
strh r1, [r0, #2]
ldrsh r1, [r0, #2]
cmp r1, #0
movlt r1, #0
strlth r1, [r0, #2]
ldmltia sp!, {r4, r5, r6, pc}
cmp r1, #0xbf
movgt r1, #0xbf
strgth r1, [r0, #2]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DA7FC: .word 0x021E36B0
_020DA800: .word 0x021E36CC
arm_func_end sub_020DA6E0
arm_func_start sub_020DA804
sub_020DA804: ; 0x020DA804
ldr r1, _020DA818 ; =0x021E36B0
_020DA808:
ldrh r2, [r1, #0x3a]
tst r2, r0
bne _020DA808
bx lr
.align 2, 0
_020DA818: .word 0x021E36B0
arm_func_end sub_020DA804
arm_func_start sub_020DA81C
sub_020DA81C: ; 0x020DA81C
ldr r1, _020DA82C ; =0x021E36B0
ldrh r1, [r1, #0x38]
and r0, r1, r0
bx lr
.align 2, 0
_020DA82C: .word 0x021E36B0
arm_func_end sub_020DA81C
arm_func_start MIC_Init
MIC_Init: ; 0x020DA830
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020DA894 ; =0x021E36EC
ldrh r1, [r0]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0]
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #8]
bl sub_020D6548
mov r5, #9
mov r4, #1
_020DA864:
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020DA864
ldr r2, _020DA898 ; =0x027FFF90
mov r3, #0
ldr r1, _020DA89C ; =sub_020DAAA8
mov r0, #9
str r3, [r2]
bl sub_020D6654
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DA894: .word 0x021E36EC
_020DA898: .word 0x027FFF90
_020DA89C: .word sub_020DAAA8
arm_func_end MIC_Init
arm_func_start sub_020DA8A0
sub_020DA8A0: ; 0x020DA8A0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldr r0, [r7, #4]
mov r6, r1
tst r0, #0x1f
mov r5, r2
movne r0, #2
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r7, #8]
tst r0, #0x1f
movne r0, #2
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
cmp r0, #0
moveq r0, #2
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r7, #0xc]
cmp r0, #0x400
movlo r0, #2
ldmloia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r7]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _020DA944
_020DA8FC: ; jump table
b _020DA914 ; case 0
b _020DA91C ; case 1
b _020DA924 ; case 2
b _020DA92C ; case 3
b _020DA934 ; case 4
b _020DA93C ; case 5
_020DA914:
mov r1, #0
b _020DA94C
_020DA91C:
mov r1, #1
b _020DA94C
_020DA924:
mov r1, #2
b _020DA94C
_020DA92C:
mov r1, #3
b _020DA94C
_020DA934:
mov r1, #5
b _020DA94C
_020DA93C:
mov r1, #7
b _020DA94C
_020DA944:
mov r0, #2
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020DA94C:
ldr r0, [r7, #0x10]
cmp r0, #0
orrne r0, r1, #0x10
andne r0, r0, #0xff
andeq r0, r1, #0xff
and r4, r0, #0xff
bl OS_DisableInterrupts
ldr r1, _020DA9C8 ; =0x021E36EC
ldr r2, [r1, #4]
cmp r2, #0
beq _020DA984
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020DA984:
mov r2, #1
str r2, [r1, #4]
bl OS_RestoreInterrupts
ldr r0, _020DA9C8 ; =0x021E36EC
mov r3, r4
str r6, [r0, #8]
str r5, [r0, #0xc]
ldr r1, [r7, #0x14]
str r1, [r0, #0x14]
ldr r1, [r7, #0x18]
str r1, [r0, #0x18]
ldmib r7, {r0, r1, r2}
bl sub_020DABD0
cmp r0, #0
movne r0, #0
moveq r0, #3
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DA9C8: .word 0x021E36EC
arm_func_end sub_020DA8A0
arm_func_start sub_020DA9CC
sub_020DA9CC: ; 0x020DA9CC
stmdb sp!, {r3, lr}
ldr r1, _020DA9FC ; =sub_020DACFC
mov r2, #0
bl sub_020DA8A0
ldr r1, _020DAA00 ; =0x021E36EC
cmp r0, #0
str r0, [r1, #0x10]
bne _020DA9F0
bl sub_020DAD0C
_020DA9F0:
ldr r0, _020DAA00 ; =0x021E36EC
ldr r0, [r0, #0x10]
ldmia sp!, {r3, pc}
.align 2, 0
_020DA9FC: .word sub_020DACFC
_020DAA00: .word 0x021E36EC
arm_func_end sub_020DA9CC
arm_func_start sub_020DAA04
sub_020DAA04: ; 0x020DAA04
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl OS_DisableInterrupts
ldr r1, _020DAA5C ; =0x021E36EC
ldr r2, [r1, #4]
cmp r2, #0
beq _020DAA30
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
_020DAA30:
mov r2, #1
str r2, [r1, #4]
bl OS_RestoreInterrupts
ldr r0, _020DAA5C ; =0x021E36EC
str r5, [r0, #8]
str r4, [r0, #0xc]
bl sub_020DACD4
cmp r0, #0
movne r0, #0
moveq r0, #3
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DAA5C: .word 0x021E36EC
arm_func_end sub_020DAA04
arm_func_start sub_020DAA60
sub_020DAA60: ; 0x020DAA60
stmdb sp!, {r3, lr}
ldr r0, _020DAA90 ; =sub_020DACFC
mov r1, #0
bl sub_020DAA04
ldr r1, _020DAA94 ; =0x021E36EC
cmp r0, #0
str r0, [r1, #0x10]
bne _020DAA84
bl sub_020DAD0C
_020DAA84:
ldr r0, _020DAA94 ; =0x021E36EC
ldr r0, [r0, #0x10]
ldmia sp!, {r3, pc}
.align 2, 0
_020DAA90: .word sub_020DACFC
_020DAA94: .word 0x021E36EC
arm_func_end sub_020DAA60
arm_func_start sub_020DAA98
sub_020DAA98: ; 0x020DAA98
ldr r0, _020DAAA4 ; =0x027FFF90
ldr r0, [r0]
bx lr
.align 2, 0
_020DAAA4: .word 0x027FFF90
arm_func_end sub_020DAA98
arm_func_start sub_020DAAA8
sub_020DAAA8: ; 0x020DAAA8
stmdb sp!, {r4, lr}
mov r4, r1
cmp r2, #0
beq _020DAAF0
ldr r0, _020DABC8 ; =0x021E36EC
ldr r1, [r0, #4]
cmp r1, #0
movne r1, #0
strne r1, [r0, #4]
ldr r0, _020DABC8 ; =0x021E36EC
ldr r2, [r0, #8]
cmp r2, #0
beq _020DAAF0
mov r1, #0
str r1, [r0, #8]
ldr r1, [r0, #0xc]
mov r0, #6
blx r2
_020DAAF0:
and r0, r4, #0x7f00
and r1, r4, #0xff
mov r0, r0, lsl #8
cmp r1, #4
mov r2, r0, lsr #0x10
addls pc, pc, r1, lsl #2
b _020DAB48
_020DAB0C: ; jump table
b _020DAB20 ; case 0
b _020DAB28 ; case 1
b _020DAB30 ; case 2
b _020DAB38 ; case 3
b _020DAB40 ; case 4
_020DAB20:
mov r0, #0
b _020DAB4C
_020DAB28:
mov r0, #4
b _020DAB4C
_020DAB30:
mov r0, #2
b _020DAB4C
_020DAB38:
mov r0, #5
b _020DAB4C
_020DAB40:
mov r0, #1
b _020DAB4C
_020DAB48:
mov r0, #6
_020DAB4C:
cmp r2, #0x51
bne _020DAB70
ldr r1, _020DABC8 ; =0x021E36EC
ldr r2, [r1, #0x14]
cmp r2, #0
ldmeqia sp!, {r4, pc}
ldr r1, [r1, #0x18]
blx r2
ldmia sp!, {r4, pc}
_020DAB70:
cmp r2, #0x40
bne _020DAB90
ldr r1, _020DABC8 ; =0x021E36EC
ldr r2, [r1, #0x1c]
cmp r2, #0
ldrne r1, _020DABCC ; =0x027FFF94
ldrneh r1, [r1]
strneh r1, [r2]
_020DAB90:
ldr r1, _020DABC8 ; =0x021E36EC
ldr r2, [r1, #4]
cmp r2, #0
movne r2, #0
strne r2, [r1, #4]
ldr r1, _020DABC8 ; =0x021E36EC
ldr r3, [r1, #8]
cmp r3, #0
ldmeqia sp!, {r4, pc}
mov r2, #0
str r2, [r1, #8]
ldr r1, [r1, #0xc]
blx r3
ldmia sp!, {r4, pc}
.align 2, 0
_020DABC8: .word 0x021E36EC
_020DABCC: .word 0x027FFF94
arm_func_end sub_020DAAA8
arm_func_start sub_020DABD0
sub_020DABD0: ; 0x020DABD0
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
orr r1, r3, #0x4100
mov r6, r0
mov r4, r2
orr r1, r1, #0x2000000
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
ldmltia sp!, {r4, r5, r6, pc}
mov r0, r6, lsr #0x10
orr r1, r0, #0x10000
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
ldmltia sp!, {r4, r5, r6, pc}
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
orr r1, r0, #0x20000
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
ldmltia sp!, {r4, r5, r6, pc}
mov r0, r5, lsr #0x10
orr r1, r0, #0x30000
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
ldmltia sp!, {r4, r5, r6, pc}
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
orr r1, r0, #0x40000
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
ldmltia sp!, {r4, r5, r6, pc}
mov r0, r4, lsr #0x10
orr r1, r0, #0x50000
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movlt r0, #0
ldmltia sp!, {r4, r5, r6, pc}
ldr r1, _020DACD0 ; =0x01060000
mov r0, r4, lsl #0x10
orr r1, r1, r0, lsr #16
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movge r0, #1
movlt r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DACD0: .word 0x01060000
arm_func_end sub_020DABD0
arm_func_start sub_020DACD4
sub_020DACD4: ; 0x020DACD4
stmdb sp!, {r3, lr}
ldr r1, _020DACF8 ; =0x03004200
mov r0, #9
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movge r0, #1
movlt r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020DACF8: .word 0x03004200
arm_func_end sub_020DACD4
arm_func_start sub_020DACFC
sub_020DACFC: ; 0x020DACFC
ldr r1, _020DAD08 ; =0x021E36EC
str r0, [r1, #0x10]
bx lr
.align 2, 0
_020DAD08: .word 0x021E36EC
arm_func_end sub_020DACFC
arm_func_start sub_020DAD0C
sub_020DAD0C: ; 0x020DAD0C
ldr ip, _020DAD20 ; =0x021E36F0
_020DAD10:
ldr r0, [ip]
cmp r0, #1
beq _020DAD10
bx lr
.align 2, 0
_020DAD20: .word 0x021E36F0
arm_func_end sub_020DAD0C
arm_func_start sub_020DAD24
sub_020DAD24: ; 0x020DAD24
stmdb sp!, {r3, lr}
bl OS_DisableInterrupts
ldr r1, _020DAD5C ; =0x021E370C
ldr r2, [r1, #0x1c]
cmp r2, #0
beq _020DAD48
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r3, pc}
_020DAD48:
mov r2, #1
str r2, [r1, #0x1c]
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_020DAD5C: .word 0x021E370C
arm_func_end sub_020DAD24
arm_func_start sub_020DAD60
sub_020DAD60: ; 0x020DAD60
stmdb sp!, {r4, lr}
ldr r0, _020DAD98 ; =0x021E370C
ldr r4, _020DAD9C ; =0x021E3728
ldr r0, [r0, #0x1c]
cmp r0, #0
ldmeqia sp!, {r4, pc}
_020DAD78:
bl sub_020D3A90
cmp r0, #0x80
bne _020DAD88
bl sub_020D674C
_020DAD88:
ldr r0, [r4]
cmp r0, #0
bne _020DAD78
ldmia sp!, {r4, pc}
.align 2, 0
_020DAD98: .word 0x021E370C
_020DAD9C: .word 0x021E3728
arm_func_end sub_020DAD60
arm_func_start sub_020DADA0
sub_020DADA0: ; 0x020DADA0
str r0, [r1]
bx lr
arm_func_end sub_020DADA0
arm_func_start sub_020DADA8
sub_020DADA8: ; 0x020DADA8
stmdb sp!, {r3, lr}
ldr r2, _020DADE4 ; =0x021E370C
ldr r1, [r2, #0x1c]
ldr ip, [r2, #0x20]
cmp r1, #0
ldr r1, [r2, #0x24]
movne r3, #0
strne r3, [r2, #0x1c]
cmp ip, #0
ldmeqia sp!, {r3, pc}
ldr r2, _020DADE4 ; =0x021E370C
mov r3, #0
str r3, [r2, #0x20]
blx ip
ldmia sp!, {r3, pc}
.align 2, 0
_020DADE4: .word 0x021E370C
arm_func_end sub_020DADA8
arm_func_start sub_020DADE8
sub_020DADE8: ; 0x020DADE8
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020DAE78 ; =0x021E370C
ldrh r1, [r0]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0]
mov r1, #0
str r1, [r0, #0x1c]
str r1, [r0, #0x20]
bl sub_020D6548
mov r5, #8
mov r4, #1
_020DAE1C:
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020DAE1C
ldr r1, _020DAE7C ; =sub_020DAE8C
mov r0, #8
bl sub_020D6654
mov r3, #0
ldr r0, _020DAE80 ; =0x021E3750
mov r2, r3
_020DAE48:
mov r1, r3, lsl #3
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #5
blt _020DAE48
ldr r0, _020DAE84 ; =0x021E3738
bl sub_020D2600
ldr r1, _020DAE88 ; =0x027FFC3C
ldr r0, _020DAE78 ; =0x021E370C
ldr r1, [r1]
str r1, [r0, #0x10]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DAE78: .word 0x021E370C
_020DAE7C: .word sub_020DAE8C
_020DAE80: .word 0x021E3750
_020DAE84: .word 0x021E3738
_020DAE88: .word 0x027FFC3C
arm_func_end sub_020DADE8
arm_func_start sub_020DAE8C
sub_020DAE8C: ; 0x020DAE8C
stmdb sp!, {r3, lr}
cmp r2, #0
beq _020DAEA4
mov r0, #2
bl sub_020DADA8
ldmia sp!, {r3, pc}
_020DAEA4:
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r2, r0, lsr #0x10
and r0, r1, #0xff
cmp r2, #0x70
blo _020DAEF4
cmp r2, #0x74
bhi _020DAEF4
ldr r1, _020DAF48 ; =0x021E3754
sub r2, r2, #0x70
ldr r1, [r1, r2, lsl #3]
and r0, r0, #0xff
cmp r1, #0
strneh r0, [r1]
mov r1, r2, lsl #3
ldr r0, _020DAF4C ; =0x021E3750
mov r2, #1
strh r2, [r0, r1]
mov r0, #0
b _020DAF40
_020DAEF4:
cmp r2, #0x60
bne _020DAF0C
ldr r1, _020DAF50 ; =0x021E370C
mov r2, #1
str r2, [r1, #4]
b _020DAF40
_020DAF0C:
cmp r2, #0x62
bne _020DAF24
ldr r1, _020DAF50 ; =0x021E370C
mov r2, #1
str r2, [r1, #8]
b _020DAF40
_020DAF24:
cmp r2, #0x67
bne _020DAF40
ldr r1, _020DAF50 ; =0x021E370C
ldr r1, [r1, #0x28]
cmp r1, #0
strne r0, [r1]
mov r0, #0
_020DAF40:
bl sub_020DADA8
ldmia sp!, {r3, pc}
.align 2, 0
_020DAF48: .word 0x021E3754
_020DAF4C: .word 0x021E3750
_020DAF50: .word 0x021E370C
arm_func_end sub_020DAE8C
arm_func_start sub_020DAF54
sub_020DAF54: ; 0x020DAF54
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_020DAD24
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _020DAFDC ; =0x021E370C
mov r2, #0
ldr r0, _020DAFE0 ; =0x03006000
str r2, [r1, #4]
bl sub_020DB410
ldr r0, _020DAFDC ; =0x021E370C
_020DAF88:
ldr r1, [r0, #4]
cmp r1, #0
beq _020DAF88
ldr ip, _020DAFDC ; =0x021E370C
mov r0, #0
str r0, [ip, #4]
mov r2, r0
mov r1, #2
mov r3, #1
str r0, [ip, #8]
bl sub_020DB67C
and r0, r5, #0xff
orr r0, r0, #0x6100
orr r0, r0, #0x2000000
bl sub_020DB410
ldr r1, _020DAFE4 ; =0x01010000
mov r0, r4, lsl #0x10
orr r0, r1, r0, lsr #16
bl sub_020DB410
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DAFDC: .word 0x021E370C
_020DAFE0: .word 0x03006000
_020DAFE4: .word 0x01010000
arm_func_end sub_020DAF54
arm_func_start sub_020DAFE8
sub_020DAFE8: ; 0x020DAFE8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020DAD24
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6, lsr #0x10
and r0, r0, #0xff
ldr r1, _020DB040 ; =0x021E370C
orr r0, r0, #0x6300
str r5, [r1, #0x20]
orr r0, r0, #0x2000000
str r4, [r1, #0x24]
bl sub_020DB410
ldr r1, _020DB044 ; =0x01010000
mov r0, r6, lsl #0x10
orr r0, r1, r0, lsr #16
bl sub_020DB410
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DB040: .word 0x021E370C
_020DB044: .word 0x01010000
arm_func_end sub_020DAFE8
arm_func_start sub_020DB048
sub_020DB048: ; 0x020DB048
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
mov r4, r1
mov r7, r2
mov r6, r3
bl sub_020DAD24
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r1, _020DB0A8 ; =0x021E370C
and r0, r5, #0xff
str r7, [r1, #0x20]
orr r0, r0, #0x6500
ldr r2, _020DB0AC ; =0x021E3750
str r6, [r1, #0x24]
mov r3, r5, lsl #3
mov ip, #0
ldr r1, _020DB0B0 ; =0x021E3754
strh ip, [r2, r3]
orr r0, r0, #0x3000000
str r4, [r1, r5, lsl #3]
bl sub_020DB410
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DB0A8: .word 0x021E370C
_020DB0AC: .word 0x021E3750
_020DB0B0: .word 0x021E3754
arm_func_end sub_020DB048
arm_func_start sub_020DB0B4
sub_020DB0B4: ; 0x020DB0B4
stmdb sp!, {r3, lr}
ldr r2, _020DB0D8 ; =sub_020DADA0
add r3, sp, #0
bl sub_020DB048
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB0D8: .word sub_020DADA0
arm_func_end sub_020DB0B4
arm_func_start sub_020DB0DC
sub_020DB0DC: ; 0x020DB0DC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020DAD24
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
and r0, r7, #0xff
ldr r1, _020DB134 ; =0x021E370C
orr r0, r0, #0x6400
str r5, [r1, #0x20]
orr r0, r0, #0x2000000
str r4, [r1, #0x24]
bl sub_020DB410
ldr r1, _020DB138 ; =0x01010000
mov r0, r6, lsl #0x10
orr r0, r1, r0, lsr #16
bl sub_020DB410
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DB134: .word 0x021E370C
_020DB138: .word 0x01010000
arm_func_end sub_020DB0DC
arm_func_start sub_020DB13C
sub_020DB13C: ; 0x020DB13C
stmdb sp!, {r3, lr}
ldr r2, _020DB160 ; =sub_020DADA0
add r3, sp, #0
bl sub_020DB0DC
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB160: .word sub_020DADA0
arm_func_end sub_020DB13C
arm_func_start sub_020DB164
sub_020DB164: ; 0x020DB164
stmdb sp!, {r3, lr}
cmp r0, #1
beq _020DB184
cmp r0, #2
beq _020DB194
cmp r0, #3
beq _020DB18C
b _020DB19C
_020DB184:
mov r0, #1
b _020DB1A0
_020DB18C:
mov r0, #2
b _020DB1A0
_020DB194:
mov r0, #3
b _020DB1A0
_020DB19C:
mov r0, #0
_020DB1A0:
cmp r0, #0
ldreq r0, _020DB1B4 ; =0x0000FFFF
ldmeqia sp!, {r3, pc}
bl sub_020DAFE8
ldmia sp!, {r3, pc}
.align 2, 0
_020DB1B4: .word 0x0000FFFF
arm_func_end sub_020DB164
arm_func_start sub_020DB1B8
sub_020DB1B8: ; 0x020DB1B8
stmdb sp!, {r3, lr}
ldr r1, _020DB1DC ; =sub_020DADA0
add r2, sp, #0
bl sub_020DB164
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB1DC: .word sub_020DADA0
arm_func_end sub_020DB1B8
arm_func_start sub_020DB1E0
sub_020DB1E0: ; 0x020DB1E0
stmdb sp!, {r3, lr}
cmp r0, #0
mov ip, #0
bne _020DB204
cmp r1, #1
moveq ip, #6
cmp r1, #0
moveq ip, #7
b _020DB238
_020DB204:
cmp r0, #1
bne _020DB220
cmp r1, #1
moveq ip, #4
cmp r1, #0
moveq ip, #5
b _020DB238
_020DB220:
cmp r0, #2
bne _020DB238
cmp r1, #1
moveq ip, #8
cmp r1, #0
moveq ip, #9
_020DB238:
cmp ip, #0
ldreq r0, _020DB258 ; =0x0000FFFF
ldmeqia sp!, {r3, pc}
mov r1, r2
mov r0, ip
mov r2, r3
bl sub_020DAFE8
ldmia sp!, {r3, pc}
.align 2, 0
_020DB258: .word 0x0000FFFF
arm_func_end sub_020DB1E0
arm_func_start PM_SetBackLight
PM_SetBackLight: ; 0x020DB25C
stmdb sp!, {r3, lr}
ldr r2, _020DB280 ; =sub_020DADA0
add r3, sp, #0
bl sub_020DB1E0
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB280: .word sub_020DADA0
arm_func_end PM_SetBackLight
arm_func_start sub_020DB284
sub_020DB284: ; 0x020DB284
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r7, r0
ldr r0, _020DB32C ; =0x00996A00
mov r6, r1
bl sub_020D3AA8
bl sub_020DB794
cmp r0, #1
beq _020DB314
add r0, sp, #4
add r1, sp, #0
bl PM_GetBackLight
ldr r0, [sp, #4]
cmp r0, #0
beq _020DB2CC
mov r0, #0
mov r1, r0
bl PM_SetBackLight
_020DB2CC:
ldr r0, [sp]
cmp r0, #0
beq _020DB2E4
mov r0, #1
mov r1, #0
bl PM_SetBackLight
_020DB2E4:
mov r0, #1
bl sub_020DB774
cmp r0, #0
bne _020DB314
ldr r5, _020DB32C ; =0x00996A00
mov r4, #1
_020DB2FC:
mov r0, r5
bl sub_020D3AA8
mov r0, r4
bl sub_020DB774
cmp r0, #0
beq _020DB2FC
_020DB314:
mov r1, r7
mov r2, r6
mov r0, #0xe
bl sub_020DAFE8
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DB32C: .word 0x00996A00
arm_func_end sub_020DB284
arm_func_start PM_ForceToPowerOff
PM_ForceToPowerOff: ; 0x020DB330
stmdb sp!, {r3, lr}
ldr r0, _020DB354 ; =sub_020DADA0
add r1, sp, #0
bl sub_020DB284
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB354: .word sub_020DADA0
arm_func_end PM_ForceToPowerOff
arm_func_start PM_SetAmp
PM_SetAmp: ; 0x020DB358
ldr r1, _020DB368 ; =0x021E370C
ldr ip, _020DB36C ; =sub_020DB370
str r0, [r1, #0x14]
bx ip
.align 2, 0
_020DB368: .word 0x021E370C
_020DB36C: .word sub_020DB370
arm_func_end PM_SetAmp
arm_func_start sub_020DB370
sub_020DB370: ; 0x020DB370
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_020DB794
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
mov r0, r4, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #2
bl sub_020DB13C
ldmia sp!, {r4, pc}
arm_func_end sub_020DB370
arm_func_start PM_SetAmpGain
PM_SetAmpGain: ; 0x020DB39C
ldr ip, _020DB3B0 ; =sub_020DB13C
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #3
bx ip
.align 2, 0
_020DB3B0: .word sub_020DB13C
arm_func_end PM_SetAmpGain
arm_func_start PM_GetBackLight
PM_GetBackLight: ; 0x020DB3B4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
add r1, sp, #0
mov r0, #0
bl sub_020DB0B4
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
cmp r5, #0
beq _020DB3F0
ldrh r1, [sp]
tst r1, #8
movne r1, #1
moveq r1, #0
str r1, [r5]
_020DB3F0:
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrh r1, [sp]
tst r1, #4
movne r1, #1
moveq r1, #0
str r1, [r4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end PM_GetBackLight
arm_func_start sub_020DB410
sub_020DB410: ; 0x020DB410
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, #8
mov r4, #0
_020DB420:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_020D66C4
cmp r0, #0
bne _020DB420
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020DB410
arm_func_start PM_GoSleepMode
PM_GoSleepMode: ; 0x020DB43C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
ldr r3, _020DB660 ; =0x021E370C
mov sl, r0
ldr r0, [r3, #0xc]
mov sb, r1
mov fp, r2
mov r4, #0
bl sub_020DB938
ldr r1, _020DB664 ; =0x04000208
mov r0, r4
ldrh r8, [r1]
strh r0, [r1]
bl OS_DisableInterrupts
str r0, [sp, #8]
ldr r0, _020DB668 ; =0x003FFFFF
bl OS_DisableIrqMask
str r0, [sp, #4]
bl sub_020D3438
cmp r0, #0
movne r0, #8
moveq r0, r4
orr r0, r0, #0x40000
bl OS_SetIrqMask
ldr r0, [sp, #8]
bl OS_RestoreInterrupts
ldr r2, _020DB664 ; =0x04000208
mov r0, #1
ldrh r1, [r2]
tst sl, #8
strh r0, [r2]
beq _020DB4CC
ldr r0, _020DB66C ; =0x027FFC40
ldrh r0, [r0]
cmp r0, #2
biceq sl, sl, #8
_020DB4CC:
tst sl, #0x10
beq _020DB4E0
bl sub_020E1134
cmp r0, #0
biceq sl, sl, #0x10
_020DB4E0:
mov r1, #0x4000000
add r0, r1, #0x1000
ldr r5, [r1]
ldr r6, [r0]
bl sub_020DB794
str r0, [sp]
add r0, sp, #0x14
add r1, sp, #0x10
bl PM_GetBackLight
mov r0, #2
mov r1, #0
bl PM_SetBackLight
ldr r2, _020DB670 ; =0x027FFC3C
ldr r0, [r2]
str r0, [sp, #0xc]
_020DB51C:
ldr r1, [r2]
ldr r0, [sp, #0xc]
cmp r0, r1
beq _020DB51C
ldr r0, [r2]
mov r2, #0x4000000
str r0, [sp, #0xc]
ldr r0, [r2]
add r1, r2, #0x1000
bic r0, r0, #0x30000
str r0, [r2]
ldr r0, [r1]
bic r0, r0, #0x10000
str r0, [r1]
ldr r2, _020DB670 ; =0x027FFC3C
_020DB558:
ldr r1, [r2]
ldr r0, [sp, #0xc]
cmp r0, r1
beq _020DB558
ldr r0, [r2]
str r0, [sp, #0xc]
ldr r2, _020DB670 ; =0x027FFC3C
_020DB574:
ldr r1, [r2]
ldr r0, [sp, #0xc]
cmp r0, r1
beq _020DB574
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x10]
orr r0, sl, r0, lsl #5
orr r0, r0, r1, lsl #6
mov r0, r0, lsl #0x10
mov r7, r0, lsr #0x10
orr r0, sb, fp
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
_020DB5A8:
mov r0, r7
mov r1, sb
bl sub_020DAF54
cmp r0, #0
bne _020DB5A8
bl sub_020D3F58
tst sl, #8
beq _020DB5D8
ldr r0, _020DB674 ; =0x04000214
ldr r0, [r0]
tst r0, #0x100000
movne r4, #1
_020DB5D8:
cmp r4, #0
bne _020DB618
ldr r0, [sp]
cmp r0, #1
mov r0, #1
bne _020DB604
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_020DB67C
b _020DB608
_020DB604:
bl sub_020DB1B8
_020DB608:
mov r0, #0x4000000
str r5, [r0]
add r0, r0, #0x1000
str r6, [r0]
_020DB618:
ldr r0, _020DB678 ; =0x00708100
bl sub_020D3AA8
bl OS_DisableInterrupts
ldr r0, [sp, #4]
bl OS_SetIrqMask
ldr r0, [sp, #8]
bl OS_RestoreInterrupts
ldr r1, _020DB664 ; =0x04000208
cmp r4, #0
ldrh r0, [r1]
strh r8, [r1]
beq _020DB64C
bl PM_ForceToPowerOff
_020DB64C:
ldr r0, _020DB660 ; =0x021E370C
ldr r0, [r0, #0x18]
bl sub_020DB938
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DB660: .word 0x021E370C
_020DB664: .word 0x04000208
_020DB668: .word 0x003FFFFF
_020DB66C: .word 0x027FFC40
_020DB670: .word 0x027FFC3C
_020DB674: .word 0x04000214
_020DB678: .word 0x00708100
arm_func_end PM_GoSleepMode
arm_func_start sub_020DB67C
sub_020DB67C: ; 0x020DB67C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r3
cmp r0, #0
beq _020DB70C
cmp r0, #1
bne _020DB760
cmp r2, #0
bne _020DB6C0
ldr r1, _020DB768 ; =0x027FFC3C
ldr r0, _020DB76C ; =0x021E370C
ldr r1, [r1]
ldr r0, [r0, #0x10]
sub r0, r1, r0
cmp r0, #7
movls r0, #0
ldmlsia sp!, {r3, r4, r5, pc}
_020DB6C0:
cmp r5, #0
beq _020DB6EC
cmp r4, #0
beq _020DB6DC
mov r0, r5
bl sub_020DB1B8
b _020DB6EC
_020DB6DC:
mov r1, #0
mov r0, r5
mov r2, r1
bl sub_020DB164
_020DB6EC:
ldr r2, _020DB770 ; =0x04000304
ldr r0, _020DB76C ; =0x021E370C
ldrh r1, [r2]
orr r1, r1, #1
strh r1, [r2]
ldr r0, [r0, #0x14]
bl sub_020DB370
b _020DB760
_020DB70C:
mov r0, #0
bl sub_020DB370
ldr r3, _020DB770 ; =0x04000304
ldr r1, _020DB768 ; =0x027FFC3C
ldrh r2, [r3]
ldr r0, _020DB76C ; =0x021E370C
cmp r5, #0
bic r2, r2, #1
strh r2, [r3]
ldr r1, [r1]
str r1, [r0, #0x10]
beq _020DB760
cmp r4, #0
beq _020DB750
mov r0, r5
bl sub_020DB1B8
b _020DB760
_020DB750:
mov r1, #0
mov r0, r5
mov r2, r1
bl sub_020DB164
_020DB760:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DB768: .word 0x027FFC3C
_020DB76C: .word 0x021E370C
_020DB770: .word 0x04000304
arm_func_end sub_020DB67C
arm_func_start sub_020DB774
sub_020DB774: ; 0x020DB774
ldr ip, _020DB790 ; =sub_020DB67C
mov r1, #0
cmp r0, #1
movne r0, #0
mov r2, r1
mov r3, #1
bx ip
.align 2, 0
_020DB790: .word sub_020DB67C
arm_func_end sub_020DB774
arm_func_start sub_020DB794
sub_020DB794: ; 0x020DB794
ldr r0, _020DB7AC ; =0x04000304
ldrh r0, [r0]
tst r0, #1
movne r0, #1
moveq r0, #0
bx lr
.align 2, 0
_020DB7AC: .word 0x04000304
arm_func_end sub_020DB794
arm_func_start sub_020DB7B0
sub_020DB7B0: ; 0x020DB7B0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020DAD24
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
and r0, r6, #0xff
ldr r1, _020DB7F4 ; =0x021E370C
orr r0, r0, #0x6600
str r5, [r1, #0x20]
orr r0, r0, #0x3000000
str r4, [r1, #0x24]
bl sub_020DB410
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DB7F4: .word 0x021E370C
arm_func_end sub_020DB7B0
arm_func_start sub_020DB7F8
sub_020DB7F8: ; 0x020DB7F8
stmdb sp!, {r3, lr}
ldr r1, _020DB81C ; =sub_020DADA0
add r2, sp, #0
bl sub_020DB7B0
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB81C: .word sub_020DADA0
arm_func_end sub_020DB7F8
arm_func_start sub_020DB820
sub_020DB820: ; 0x020DB820
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020DAD24
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
ldr r1, _020DB860 ; =0x021E370C
ldr r0, _020DB864 ; =0x03006700
str r5, [r1, #0x20]
str r4, [r1, #0x24]
str r6, [r1, #0x28]
bl sub_020DB410
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DB860: .word 0x021E370C
_020DB864: .word 0x03006700
arm_func_end sub_020DB820
arm_func_start sub_020DB868
sub_020DB868: ; 0x020DB868
stmdb sp!, {r3, lr}
ldr r1, _020DB88C ; =sub_020DADA0
add r2, sp, #0
bl sub_020DB820
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020DAD60
ldr r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020DB88C: .word sub_020DADA0
arm_func_end sub_020DB868
arm_func_start sub_020DB890
sub_020DB890: ; 0x020DB890
cmp r0, #0
ldrne r2, [r0]
strne r2, [r1, #8]
strne r1, [r0]
bx lr
arm_func_end sub_020DB890
arm_func_start sub_020DB8A4
sub_020DB8A4: ; 0x020DB8A4
cmp r0, #0
bxeq lr
ldr r2, [r0]
cmp r2, #0
bne _020DB8C8
mov r2, #0
str r2, [r1, #8]
str r1, [r0]
bx lr
_020DB8C8:
ldr r0, [r2, #8]
cmp r0, #0
beq _020DB8E4
_020DB8D4:
mov r2, r0
ldr r0, [r0, #8]
cmp r0, #0
bne _020DB8D4
_020DB8E4:
str r0, [r1, #8]
str r1, [r2, #8]
bx lr
arm_func_end sub_020DB8A4
arm_func_start sub_020DB8F0
sub_020DB8F0: ; 0x020DB8F0
cmp r0, #0
ldrne r2, [r0]
movne r3, r2
cmpne r2, #0
bxeq lr
_020DB904:
cmp r2, r1
bne _020DB924
cmp r2, r3
ldreq r1, [r2, #8]
streq r1, [r0]
ldrne r0, [r2, #8]
strne r0, [r3, #8]
bx lr
_020DB924:
mov r3, r2
ldr r2, [r2, #8]
cmp r2, #0
bne _020DB904
bx lr
arm_func_end sub_020DB8F0
arm_func_start sub_020DB938
sub_020DB938: ; 0x020DB938
stmdb sp!, {r4, lr}
movs r4, r0
ldmeqia sp!, {r4, pc}
_020DB944:
ldr r0, [r4, #4]
ldr r1, [r4]
blx r1
ldr r4, [r4, #8]
cmp r4, #0
bne _020DB944
ldmia sp!, {r4, pc}
arm_func_end sub_020DB938
arm_func_start sub_020DB960
sub_020DB960: ; 0x020DB960
ldr ip, _020DB970 ; =sub_020DB890
mov r1, r0
ldr r0, _020DB974 ; =0x021E3718
bx ip
.align 2, 0
_020DB970: .word sub_020DB890
_020DB974: .word 0x021E3718
arm_func_end sub_020DB960
arm_func_start sub_020DB978
sub_020DB978: ; 0x020DB978
ldr ip, _020DB988 ; =sub_020DB8A4
mov r1, r0
ldr r0, _020DB98C ; =0x021E3724
bx ip
.align 2, 0
_020DB988: .word sub_020DB8A4
_020DB98C: .word 0x021E3724
arm_func_end sub_020DB978
arm_func_start sub_020DB990
sub_020DB990: ; 0x020DB990
ldr ip, _020DB9A0 ; =sub_020DB8F0
mov r1, r0
ldr r0, _020DB9A4 ; =0x021E3718
bx ip
.align 2, 0
_020DB9A0: .word sub_020DB8F0
_020DB9A4: .word 0x021E3718
arm_func_end sub_020DB990
arm_func_start sub_020DB9A8
sub_020DB9A8: ; 0x020DB9A8
ldr ip, _020DB9B8 ; =sub_020DB8F0
mov r1, r0
ldr r0, _020DB9BC ; =0x021E3724
bx ip
.align 2, 0
_020DB9B8: .word sub_020DB8F0
_020DB9BC: .word 0x021E3724
arm_func_end sub_020DB9A8
arm_func_start RTC_Init
RTC_Init: ; 0x020DB9C0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020DBA24 ; =0x021E3778
ldrh r1, [r0]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0]
mov r1, #0
str r1, [r0, #0xc]
str r1, [r0, #0x10]
str r1, [r0, #0x28]
str r1, [r0, #0x14]
str r1, [r0, #0x18]
bl sub_020D6548
mov r5, #5
mov r4, #1
_020DBA00:
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020DBA00
ldr r1, _020DBA28 ; =sub_020DBC34
mov r0, #5
bl sub_020D6654
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DBA24: .word 0x021E3778
_020DBA28: .word sub_020DBC34
arm_func_end RTC_Init
arm_func_start sub_020DBA2C
sub_020DBA2C: ; 0x020DBA2C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl OS_DisableInterrupts
ldr r1, _020DBA98 ; =0x021E3778
ldr r2, [r1, #0xc]
cmp r2, #0
beq _020DBA5C
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_020DBA5C:
mov r2, #1
str r2, [r1, #0xc]
bl OS_RestoreInterrupts
ldr r0, _020DBA98 ; =0x021E3778
mov r1, #0
str r1, [r0, #0x20]
str r1, [r0, #0x24]
str r6, [r0, #0x14]
str r5, [r0, #0x10]
str r4, [r0, #0x1c]
bl sub_020DC22C
cmp r0, #0
movne r0, #0
moveq r0, #3
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DBA98: .word 0x021E3778
arm_func_end sub_020DBA2C
arm_func_start sub_020DBA9C
sub_020DBA9C: ; 0x020DBA9C
stmdb sp!, {r3, lr}
ldr r1, _020DBACC ; =sub_020DC1F4
mov r2, #0
bl sub_020DBA2C
ldr r1, _020DBAD0 ; =0x021E3778
cmp r0, #0
str r0, [r1, #0x2c]
bne _020DBAC0
bl sub_020DC204
_020DBAC0:
ldr r0, _020DBAD0 ; =0x021E3778
ldr r0, [r0, #0x2c]
ldmia sp!, {r3, pc}
.align 2, 0
_020DBACC: .word sub_020DC1F4
_020DBAD0: .word 0x021E3778
arm_func_end sub_020DBA9C
arm_func_start sub_020DBAD4
sub_020DBAD4: ; 0x020DBAD4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl OS_DisableInterrupts
ldr r1, _020DBB44 ; =0x021E3778
ldr r2, [r1, #0xc]
cmp r2, #0
beq _020DBB04
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_020DBB04:
mov r2, #1
str r2, [r1, #0xc]
bl OS_RestoreInterrupts
ldr r0, _020DBB44 ; =0x021E3778
mov r1, #1
str r1, [r0, #0x20]
mov r1, #0
str r1, [r0, #0x24]
str r6, [r0, #0x14]
str r5, [r0, #0x10]
str r4, [r0, #0x1c]
bl sub_020DC23C
cmp r0, #0
movne r0, #0
moveq r0, #3
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DBB44: .word 0x021E3778
arm_func_end sub_020DBAD4
arm_func_start sub_020DBB48
sub_020DBB48: ; 0x020DBB48
stmdb sp!, {r3, lr}
ldr r1, _020DBB78 ; =sub_020DC1F4
mov r2, #0
bl sub_020DBAD4
ldr r1, _020DBB7C ; =0x021E3778
cmp r0, #0
str r0, [r1, #0x2c]
bne _020DBB6C
bl sub_020DC204
_020DBB6C:
ldr r0, _020DBB7C ; =0x021E3778
ldr r0, [r0, #0x2c]
ldmia sp!, {r3, pc}
.align 2, 0
_020DBB78: .word sub_020DC1F4
_020DBB7C: .word 0x021E3778
arm_func_end sub_020DBB48
arm_func_start RTC_GetDateTimeAsync
RTC_GetDateTimeAsync: ; 0x020DBB80
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl OS_DisableInterrupts
ldr r1, _020DBBF8 ; =0x021E3778
ldr r2, [r1, #0xc]
cmp r2, #0
beq _020DBBB4
bl OS_RestoreInterrupts
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020DBBB4:
mov r2, #1
str r2, [r1, #0xc]
bl OS_RestoreInterrupts
ldr r0, _020DBBF8 ; =0x021E3778
mov r1, #2
str r1, [r0, #0x20]
mov r1, #0
str r1, [r0, #0x24]
str r7, [r0, #0x14]
str r6, [r0, #0x18]
str r5, [r0, #0x10]
str r4, [r0, #0x1c]
bl sub_020DC21C
cmp r0, #0
movne r0, #0
moveq r0, #3
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DBBF8: .word 0x021E3778
arm_func_end RTC_GetDateTimeAsync
arm_func_start sub_020DBBFC
sub_020DBBFC: ; 0x020DBBFC
stmdb sp!, {r3, lr}
ldr r2, _020DBC2C ; =sub_020DC1F4
mov r3, #0
bl RTC_GetDateTimeAsync
ldr r1, _020DBC30 ; =0x021E3778
cmp r0, #0
str r0, [r1, #0x2c]
bne _020DBC20
bl sub_020DC204
_020DBC20:
ldr r0, _020DBC30 ; =0x021E3778
ldr r0, [r0, #0x2c]
ldmia sp!, {r3, pc}
.align 2, 0
_020DBC2C: .word sub_020DC1F4
_020DBC30: .word 0x021E3778
arm_func_end sub_020DBBFC
arm_func_start sub_020DBC34
sub_020DBC34: ; 0x020DBC34
stmdb sp!, {r3, r4, r5, lr}
cmp r2, #0
beq _020DBC90
ldr r0, _020DC174 ; =0x021E3778
ldr r1, [r0, #0x24]
cmp r1, #0
movne r1, #0
strne r1, [r0, #0x24]
ldr r0, _020DC174 ; =0x021E3778
ldr r1, [r0, #0xc]
cmp r1, #0
movne r1, #0
strne r1, [r0, #0xc]
ldr r0, _020DC174 ; =0x021E3778
ldr r2, [r0, #0x10]
cmp r2, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r1, #0
str r1, [r0, #0x10]
ldr r1, [r0, #0x1c]
mov r0, #6
blx r2
ldmia sp!, {r3, r4, r5, pc}
_020DBC90:
and r0, r1, #0x7f00
mov r0, r0, lsr #8
and r0, r0, #0xff
cmp r0, #0x30
and r2, r1, #0xff
bne _020DBCC0
ldr r0, _020DC174 ; =0x021E3778
ldr r0, [r0, #0x28]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
blx r0
ldmia sp!, {r3, r4, r5, pc}
_020DBCC0:
cmp r2, #0
bne _020DC0E4
ldr r0, _020DC174 ; =0x021E3778
mov r4, #0
ldr r1, [r0, #0x20]
cmp r1, #0xf
addls pc, pc, r1, lsl #2
b _020DC0D0
_020DBCE0: ; jump table
b _020DBD20 ; case 0
b _020DBD7C ; case 1
b _020DBDCC ; case 2
b _020DC12C ; case 3
b _020DC12C ; case 4
b _020DC12C ; case 5
b _020DBE74 ; case 6
b _020DBEA4 ; case 7
b _020DBEC8 ; case 8
b _020DBF70 ; case 9
b _020DC024 ; case 10
b _020DC12C ; case 11
b _020DC12C ; case 12
b _020DC12C ; case 13
b _020DC12C ; case 14
b _020DC12C ; case 15
_020DBD20:
ldr r1, _020DC178 ; =0x027FFDE8
ldr r5, [r0, #0x14]
ldr r0, [r1]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x18
bl sub_020DC184
ldr r1, _020DC178 ; =0x027FFDE8
str r0, [r5]
ldr r0, [r1]
mov r0, r0, lsl #0x13
mov r0, r0, lsr #0x1b
bl sub_020DC184
ldr r1, _020DC178 ; =0x027FFDE8
str r0, [r5, #4]
ldr r0, [r1]
mov r0, r0, lsl #0xa
mov r0, r0, lsr #0x1a
bl sub_020DC184
str r0, [r5, #8]
mov r0, r5
bl sub_020DC5A0
str r0, [r5, #0xc]
b _020DC12C
_020DBD7C:
ldr r1, _020DC17C ; =0x027FFDEC
ldr r5, [r0, #0x14]
ldr r0, [r1]
mov r0, r0, lsl #0x1a
mov r0, r0, lsr #0x1a
bl sub_020DC184
ldr r1, _020DC17C ; =0x027FFDEC
str r0, [r5]
ldr r0, [r1]
mov r0, r0, lsl #0x11
mov r0, r0, lsr #0x19
bl sub_020DC184
ldr r1, _020DC17C ; =0x027FFDEC
str r0, [r5, #4]
ldr r0, [r1]
mov r0, r0, lsl #9
mov r0, r0, lsr #0x19
bl sub_020DC184
str r0, [r5, #8]
b _020DC12C
_020DBDCC:
ldr r1, _020DC178 ; =0x027FFDE8
ldr r5, [r0, #0x14]
ldr r0, [r1]
and r0, r0, #0xff
bl sub_020DC184
ldr r1, _020DC178 ; =0x027FFDE8
str r0, [r5]
ldr r0, [r1]
mov r0, r0, lsl #0x13
mov r0, r0, lsr #0x1b
bl sub_020DC184
ldr r1, _020DC178 ; =0x027FFDE8
str r0, [r5, #4]
ldr r0, [r1]
mov r0, r0, lsl #0xa
mov r0, r0, lsr #0x1a
bl sub_020DC184
str r0, [r5, #8]
mov r0, r5
bl sub_020DC5A0
ldr r1, _020DC17C ; =0x027FFDEC
str r0, [r5, #0xc]
ldr r0, [r1]
ldr r1, _020DC174 ; =0x021E3778
mov r0, r0, lsl #0x1a
mov r0, r0, lsr #0x1a
ldr r5, [r1, #0x18]
bl sub_020DC184
ldr r1, _020DC17C ; =0x027FFDEC
str r0, [r5]
ldr r0, [r1]
mov r0, r0, lsl #0x11
mov r0, r0, lsr #0x19
bl sub_020DC184
ldr r1, _020DC17C ; =0x027FFDEC
str r0, [r5, #4]
ldr r0, [r1]
mov r0, r0, lsl #9
mov r0, r0, lsr #0x19
bl sub_020DC184
str r0, [r5, #8]
b _020DC12C
_020DBE74:
ldr r1, _020DC180 ; =0x027FFDEA
ldr r2, [r0, #0x14]
ldrh r0, [r1]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
cmp r0, #4
bne _020DBE9C
mov r0, #1
str r0, [r2]
b _020DC12C
_020DBE9C:
str r4, [r2]
b _020DC12C
_020DBEA4:
ldr r1, _020DC180 ; =0x027FFDEA
ldr r2, [r0, #0x14]
ldrh r0, [r1]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
movne r0, #1
strne r0, [r2]
streq r4, [r2]
b _020DC12C
_020DBEC8:
ldr r1, _020DC17C ; =0x027FFDEC
ldr r5, [r0, #0x14]
ldr r0, [r1]
mov r0, r0, lsl #0x1d
mov r0, r0, lsr #0x1d
str r0, [r5]
ldr r0, [r1]
mov r0, r0, lsl #0x12
mov r0, r0, lsr #0x1a
bl sub_020DC184
ldr r1, _020DC17C ; =0x027FFDEC
str r0, [r5, #4]
ldr r0, [r1]
mov r0, r0, lsl #9
mov r0, r0, lsr #0x19
bl sub_020DC184
str r0, [r5, #8]
mov r1, r4
ldr r0, _020DC17C ; =0x027FFDEC
str r1, [r5, #0xc]
ldr r0, [r0]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1f
ldrne r0, [r5, #0xc]
addne r0, r0, #1
strne r0, [r5, #0xc]
ldr r0, _020DC17C ; =0x027FFDEC
ldr r0, [r0]
mov r0, r0, lsl #0x10
movs r0, r0, lsr #0x1f
ldrne r0, [r5, #0xc]
addne r0, r0, #2
strne r0, [r5, #0xc]
ldr r0, _020DC17C ; =0x027FFDEC
ldr r0, [r0]
mov r0, r0, lsl #8
movs r0, r0, lsr #0x1f
beq _020DC12C
ldr r0, [r5, #0xc]
add r0, r0, #4
str r0, [r5, #0xc]
b _020DC12C
_020DBF70:
ldr r3, [r0, #0x24]
cmp r3, #0
bne _020DC01C
ldr r1, [r0, #0x14]
ldr r2, _020DC180 ; =0x027FFDEA
ldr r1, [r1]
cmp r1, #1
ldrh r1, [r2]
bne _020DBFDC
mov r1, r1, lsl #0x1c
mov r1, r1, lsr #0x1c
cmp r1, #4
beq _020DC12C
add r1, r3, #1
str r1, [r0, #0x24]
ldrh r0, [r2]
bic r0, r0, #0xf
orr r0, r0, #4
strh r0, [r2]
bl sub_020DC24C
cmp r0, #0
bne _020DC12C
ldr r0, _020DC174 ; =0x021E3778
mov r1, r4
str r1, [r0, #0x24]
mov r4, #3
b _020DC12C
_020DBFDC:
mov r1, r1, lsl #0x1c
movs r1, r1, lsr #0x1c
beq _020DC12C
add r1, r3, #1
str r1, [r0, #0x24]
ldrh r0, [r2]
bic r0, r0, #0xf
strh r0, [r2]
bl sub_020DC24C
cmp r0, #0
bne _020DC12C
ldr r0, _020DC174 ; =0x021E3778
mov r1, r4
str r1, [r0, #0x24]
mov r4, #3
b _020DC12C
_020DC01C:
str r4, [r0, #0x24]
b _020DC12C
_020DC024:
ldr r3, [r0, #0x24]
cmp r3, #0
bne _020DC0C8
ldr r1, [r0, #0x14]
ldr r2, _020DC180 ; =0x027FFDEA
ldr r1, [r1]
cmp r1, #1
ldrh r1, [r2]
bne _020DC088
mov r1, r1, lsl #0x19
movs r1, r1, lsr #0x1f
bne _020DC12C
add r1, r3, #1
str r1, [r0, #0x24]
ldrh r0, [r2]
orr r0, r0, #0x40
strh r0, [r2]
bl sub_020DC24C
cmp r0, #0
bne _020DC12C
ldr r0, _020DC174 ; =0x021E3778
mov r1, r4
str r1, [r0, #0x24]
mov r4, #3
b _020DC12C
_020DC088:
mov r1, r1, lsl #0x19
movs r1, r1, lsr #0x1f
beq _020DC12C
add r1, r3, #1
str r1, [r0, #0x24]
ldrh r0, [r2]
bic r0, r0, #0x40
strh r0, [r2]
bl sub_020DC24C
cmp r0, #0
bne _020DC12C
ldr r0, _020DC174 ; =0x021E3778
mov r1, r4
str r1, [r0, #0x24]
mov r4, #3
b _020DC12C
_020DC0C8:
str r4, [r0, #0x24]
b _020DC12C
_020DC0D0:
ldr r0, _020DC174 ; =0x021E3778
mov r1, #0
str r1, [r0, #0x24]
mov r4, #4
b _020DC12C
_020DC0E4:
ldr r0, _020DC174 ; =0x021E3778
mov r1, #0
str r1, [r0, #0x24]
cmp r2, #4
addls pc, pc, r2, lsl #2
b _020DC128
_020DC0FC: ; jump table
b _020DC128 ; case 0
b _020DC110 ; case 1
b _020DC118 ; case 2
b _020DC120 ; case 3
b _020DC128 ; case 4
_020DC110:
mov r4, #4
b _020DC12C
_020DC118:
mov r4, #5
b _020DC12C
_020DC120:
mov r4, #1
b _020DC12C
_020DC128:
mov r4, #6
_020DC12C:
ldr r0, _020DC174 ; =0x021E3778
ldr r1, [r0, #0x24]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r1, [r0, #0xc]
cmp r1, #0
movne r1, #0
strne r1, [r0, #0xc]
ldr r0, _020DC174 ; =0x021E3778
ldr r2, [r0, #0x10]
cmp r2, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r1, #0
str r1, [r0, #0x10]
ldr r1, [r0, #0x1c]
mov r0, r4
blx r2
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DC174: .word 0x021E3778
_020DC178: .word 0x027FFDE8
_020DC17C: .word 0x027FFDEC
_020DC180: .word 0x027FFDEA
arm_func_end sub_020DBC34
arm_func_start sub_020DC184
sub_020DC184: ; 0x020DC184
stmdb sp!, {r3, r4, r5, lr}
mov ip, #0
mov r2, ip
mov r3, ip
_020DC194:
mov r1, r0, lsr r3
and r1, r1, #0xf
cmp r1, #0xa
movhs r0, #0
ldmhsia sp!, {r3, r4, r5, pc}
add r2, r2, #1
cmp r2, #8
add r3, r3, #4
blt _020DC194
mov r5, #0
mov r4, r5
mov lr, #1
mov r2, #0xa
_020DC1C8:
mov r1, r0, lsr r4
and r3, r1, #0xf
mul r1, lr, r2
mla ip, lr, r3, ip
add r5, r5, #1
mov lr, r1
cmp r5, #8
add r4, r4, #4
blt _020DC1C8
mov r0, ip
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DC184
arm_func_start sub_020DC1F4
sub_020DC1F4: ; 0x020DC1F4
ldr r1, _020DC200 ; =0x021E3778
str r0, [r1, #0x2c]
bx lr
.align 2, 0
_020DC200: .word 0x021E3778
arm_func_end sub_020DC1F4
arm_func_start sub_020DC204
sub_020DC204: ; 0x020DC204
ldr ip, _020DC218 ; =0x021E3784
_020DC208:
ldr r0, [ip]
cmp r0, #1
beq _020DC208
bx lr
.align 2, 0
_020DC218: .word 0x021E3784
arm_func_end sub_020DC204
arm_func_start sub_020DC21C
sub_020DC21C: ; 0x020DC21C
ldr ip, _020DC228 ; =sub_020DC25C
mov r0, #0x10
bx ip
.align 2, 0
_020DC228: .word sub_020DC25C
arm_func_end sub_020DC21C
arm_func_start sub_020DC22C
sub_020DC22C: ; 0x020DC22C
ldr ip, _020DC238 ; =sub_020DC25C
mov r0, #0x11
bx ip
.align 2, 0
_020DC238: .word sub_020DC25C
arm_func_end sub_020DC22C
arm_func_start sub_020DC23C
sub_020DC23C: ; 0x020DC23C
ldr ip, _020DC248 ; =sub_020DC25C
mov r0, #0x12
bx ip
.align 2, 0
_020DC248: .word sub_020DC25C
arm_func_end sub_020DC23C
arm_func_start sub_020DC24C
sub_020DC24C: ; 0x020DC24C
ldr ip, _020DC258 ; =sub_020DC25C
mov r0, #0x27
bx ip
.align 2, 0
_020DC258: .word sub_020DC25C
arm_func_end sub_020DC24C
arm_func_start sub_020DC25C
sub_020DC25C: ; 0x020DC25C
stmdb sp!, {r3, lr}
mov r0, r0, lsl #8
and r1, r0, #0x7f00
mov r0, #5
mov r2, #0
bl sub_020D66C4
cmp r0, #0
movge r0, #1
movlt r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020DC25C
arm_func_start sub_020DC284
sub_020DC284: ; 0x020DC284
ldr r3, [r0]
cmp r3, #0x64
bhs _020DC2D4
ldr r2, [r0, #4]
cmp r2, #1
blo _020DC2D4
cmp r2, #0xc
bhi _020DC2D4
ldr r1, [r0, #8]
cmp r1, #1
blo _020DC2D4
cmp r1, #0x1f
bhi _020DC2D4
ldr r0, [r0, #0xc]
cmp r0, #7
bge _020DC2D4
cmp r2, #1
blo _020DC2D4
cmp r2, #0xc
bls _020DC2DC
_020DC2D4:
mvn r0, #0
bx lr
_020DC2DC:
ldr r0, _020DC310 ; =_02110F84
sub r1, r1, #1
ldr r0, [r0, r2, lsl #2]
cmp r2, #3
add r2, r1, r0
blo _020DC2FC
tst r3, #3
addeq r2, r2, #1
_020DC2FC:
ldr r0, _020DC314 ; =0x0000016D
add r1, r3, #3
mla r0, r3, r0, r2
add r0, r0, r1, lsr #2
bx lr
.align 2, 0
_020DC310: .word _02110F84
_020DC314: .word 0x0000016D
arm_func_end sub_020DC284
arm_func_start sub_020DC318
sub_020DC318: ; 0x020DC318
mov r1, #0x3c
ldmia r0, {r2, r3}
mla r3, r2, r1, r3
ldr r0, [r0, #8]
mla r0, r3, r1, r0
bx lr
arm_func_end sub_020DC318
arm_func_start RTC_ConvertDateTimeToSecond
RTC_ConvertDateTimeToSecond: ; 0x020DC330
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl sub_020DC284
mov r4, r0
mvn r0, #0
cmp r4, r0
moveq r1, r0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
bl sub_020DC318
mvn r2, #0
cmp r0, r2
moveq r1, r2
beq _020DC388
ldr r1, _020DC390 ; =0x00015180
mov r2, #0
umull ip, r3, r4, r1
mla r3, r4, r2, r3
mov r2, r4, asr #0x1f
mla r3, r2, r1, r3
adds r2, r0, ip
adc r1, r3, r0, asr #31
_020DC388:
mov r0, r2
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DC390: .word 0x00015180
arm_func_end RTC_ConvertDateTimeToSecond
arm_func_start sub_020DC394
sub_020DC394: ; 0x020DC394
stmdb sp!, {r4, lr}
ldr r2, _020DC484 ; =0x00008EAC
cmp r1, #0
movlt r1, #0
cmp r1, r2
movgt r1, r2
ldr r3, _020DC488 ; =0x92492493
add lr, r1, #6
smull r2, r4, r3, lr
add r4, lr, r4
mov r2, lr, lsr #0x1f
add r4, r2, r4, asr #2
mov ip, #7
smull r2, r3, ip, r4
sub r4, lr, r2
ldr r2, _020DC48C ; =0x0000016D
str r4, [r0, #0xc]
mov r3, #0
_020DC3DC:
tst r3, #3
addeq ip, r2, #1
movne ip, r2
mov r4, r1
subs r1, r1, ip
movmi r1, r4
bmi _020DC404
add r3, r3, #1
cmp r3, #0x63
blo _020DC3DC
_020DC404:
ldr r2, _020DC48C ; =0x0000016D
str r3, [r0]
cmp r1, r2
movgt r1, r2
tst r3, #3
bne _020DC448
cmp r1, #0x3c
bge _020DC444
cmp r1, #0x1f
movlt r2, #1
subge r1, r1, #0x1f
movge r2, #2
str r2, [r0, #4]
add r1, r1, #1
str r1, [r0, #8]
ldmia sp!, {r4, pc}
_020DC444:
sub r1, r1, #1
_020DC448:
ldr r3, _020DC490 ; =_02110F88
mov r4, #0xb
_020DC450:
ldr r2, [r3, r4, lsl #2]
cmp r1, r2
blt _020DC478
add r2, r4, #1
str r2, [r0, #4]
ldr r2, [r3, r4, lsl #2]
sub r1, r1, r2
add r1, r1, #1
str r1, [r0, #8]
ldmia sp!, {r4, pc}
_020DC478:
subs r4, r4, #1
bpl _020DC450
ldmia sp!, {r4, pc}
.align 2, 0
_020DC484: .word 0x00008EAC
_020DC488: .word 0x92492493
_020DC48C: .word 0x0000016D
_020DC490: .word _02110F88
arm_func_end sub_020DC394
arm_func_start sub_020DC494
sub_020DC494: ; 0x020DC494
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _020DC50C ; =0x0001517F
cmp r1, #0
movlt r1, #0
cmp r1, r2
movgt r1, r2
ldr lr, _020DC510 ; =0x88888889
mov ip, r1, lsr #0x1f
smull r3, r2, lr, r1
smull r3, r6, lr, r1
add r2, r1, r2
add r2, ip, r2, asr #5
smull r3, r5, lr, r2
smull r3, r4, lr, r2
add r6, r1, r6
add r6, ip, r6, asr #5
mov lr, #0x3c
smull r3, ip, lr, r6
sub r6, r1, r3
add r5, r2, r5
mov ip, r2, lsr #0x1f
add r5, ip, r5, asr #5
smull r1, r3, lr, r5
add r4, r2, r4
str r6, [r0, #8]
sub r5, r2, r1
str r5, [r0, #4]
add r4, ip, r4, asr #5
str r4, [r0]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DC50C: .word 0x0001517F
_020DC510: .word 0x88888889
arm_func_end sub_020DC494
arm_func_start sub_020DC514
sub_020DC514: ; 0x020DC514
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r2
mov r4, r3
subs r2, r5, #0
sbcs r2, r4, #0
mov r2, #0
mov r7, r0
mov r6, r1
movlt r5, r2
movlt r4, r2
blt _020DC554
ldr r1, _020DC598 ; =0xBC19137F
subs r0, r1, r5
sbcs r0, r2, r4
movlt r5, r1
movlt r4, r2
_020DC554:
ldr r2, _020DC59C ; =0x00015180
mov r0, r5
mov r1, r4
mov r3, #0
bl _ll_mod
mov r1, r0
mov r0, r6
bl sub_020DC494
ldr r2, _020DC59C ; =0x00015180
mov r0, r5
mov r1, r4
mov r3, #0
bl _ll_sdiv
mov r1, r0
mov r0, r7
bl sub_020DC394
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DC598: .word 0xBC19137F
_020DC59C: .word 0x00015180
arm_func_end sub_020DC514
arm_func_start sub_020DC5A0
sub_020DC5A0: ; 0x020DC5A0
stmdb sp!, {r4, r5, r6, lr}
ldr r1, [r0, #4]
ldr r2, [r0]
sub r1, r1, #2
cmp r1, #1
add ip, r2, #0x7d0
sublt ip, ip, #1
ldr r6, _020DC650 ; =0x51EB851F
ldr lr, [r0, #8]
smull r3, r2, r6, ip
smull r4, r3, r6, ip
mov r5, ip, lsr #0x1f
add r3, r5, r3, asr #5
add r2, r5, r2, asr #5
mov r5, #0x64
smull r2, r4, r5, r2
sub r2, ip, r2
addlt r1, r1, #0xc
mov r0, #0x1a
mul r0, r1, r0
sub r1, r0, #2
ldr r0, _020DC654 ; =0x66666667
mov r5, r1, lsr #0x1f
smull r1, ip, r0, r1
add ip, r5, ip, asr #2
mov r4, r2, asr #1
add r0, lr, ip
add r1, r2, r4, lsr #30
add r2, r2, r0
mov r6, r3, asr #1
add r0, r3, r6, lsr #30
add r1, r2, r1, asr #2
add r1, r1, r0, asr #2
add r0, r3, r3, lsl #2
add r4, r1, r0
ldr r3, _020DC658 ; =0x92492493
mov r1, r4, lsr #0x1f
smull r2, r0, r3, r4
add r0, r4, r0
add r0, r1, r0, asr #2
mov r2, #7
smull r0, r1, r2, r0
sub r0, r4, r0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DC650: .word 0x51EB851F
_020DC654: .word 0x66666667
_020DC658: .word 0x92492493
arm_func_end sub_020DC5A0
arm_func_start sub_020DC65C
sub_020DC65C: ; 0x020DC65C
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _020DC694 ; =0x021E3820
mov r5, r0
ldr r1, [r4, #0x108]
add r0, r4, #0x44
bl sub_020D2058
ldr r1, [r4, #0x114]
add r0, r4, #0x44
orr r1, r1, #8
str r0, [r4, #0x104]
str r5, [r4, #0x40]
str r1, [r4, #0x114]
bl sub_020D1F34
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DC694: .word 0x021E3820
arm_func_end sub_020DC65C
arm_func_start sub_020DC698
sub_020DC698: ; 0x020DC698
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r4, _020DC718 ; =0x021E3820
mov r8, r0
mov r7, r1
bl OS_DisableInterrupts
ldr r1, [r4, #8]
mov r5, r0
cmp r1, r8
bne _020DC6D0
ldr r0, [r4, #0x18]
cmp r0, r7
beq _020DC6F4
bl OS_Terminate
b _020DC6F4
_020DC6D0:
mvn r6, #2
b _020DC6E0
_020DC6D8:
add r0, r4, #0x10
bl sub_020D1E7C
_020DC6E0:
ldr r0, [r4, #8]
cmp r0, r6
bne _020DC6D8
str r8, [r4, #8]
str r7, [r4, #0x18]
_020DC6F4:
ldr r0, [r4, #0xc]
ldr r1, [r4]
add r2, r0, #1
mov r0, r5
str r2, [r4, #0xc]
mov r2, #0
str r2, [r1]
bl OS_RestoreInterrupts
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020DC718: .word 0x021E3820
arm_func_end sub_020DC698
arm_func_start sub_020DC71C
sub_020DC71C: ; 0x020DC71C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _020DC7A4 ; =0x021E3820
mov r7, r0
mov r6, r1
bl OS_DisableInterrupts
ldr r1, [r4, #8]
mov r5, r0
cmp r1, r7
bne _020DC74C
ldr r0, [r4, #0xc]
cmp r0, #0
bne _020DC754
_020DC74C:
bl OS_Terminate
b _020DC78C
_020DC754:
ldr r0, [r4, #0x18]
cmp r0, r6
beq _020DC764
bl OS_Terminate
_020DC764:
ldr r0, [r4, #0xc]
subs r0, r0, #1
str r0, [r4, #0xc]
bne _020DC78C
mvn r2, #2
mov r1, #0
add r0, r4, #0x10
str r2, [r4, #8]
str r1, [r4, #0x18]
bl sub_020D1ECC
_020DC78C:
ldr r1, [r4]
mov r2, #0
mov r0, r5
str r2, [r1]
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DC7A4: .word 0x021E3820
arm_func_end sub_020DC71C
arm_func_start sub_020DC7A8
sub_020DC7A8: ; 0x020DC7A8
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r4, _020DC89C ; =0x021E3820
ldr r1, _020DC8A0 ; =0x021E37C0
mvn r2, #2
mov r0, #0
str r2, [r4, #8]
mov r2, #0x60
str r0, [r4, #0xc]
str r0, [r4, #0x18]
str r1, [r4]
bl MIi_CpuClearFast
ldr r0, _020DC8A0 ; =0x021E37C0
mov r1, #0x60
bl DC_FlushRange
mvn r1, #0
ldr r0, _020DC8A4 ; =0x027FFC40
str r1, [r4, #0x118]
str r1, [r4, #0x11c]
ldrh r0, [r0]
cmp r0, #2
moveq r0, #1
movne r0, #0
cmp r0, #0
bne _020DC81C
ldr r0, _020DC8A8 ; =0x027FFE00
mov r2, #0x160
sub r1, r0, #0x380
bl MIi_CpuCopy8
_020DC81C:
mov r2, #0
mov r0, #4
str r0, [r4, #0x108]
str r2, [r4, #0x14]
str r2, [r4, #0x10]
str r2, [r4, #0x110]
str r2, [r4, #0x10c]
mov r0, #0x400
str r0, [sp]
ldr ip, [r4, #0x108]
ldr r1, _020DC8AC ; =sub_020DD900
ldr r3, _020DC8B0 ; =0x021E3E40
add r0, r4, #0x44
str ip, [sp, #4]
bl sub_020D1AD4
add r0, r4, #0x44
bl sub_020D1F34
ldr r1, _020DC8B4 ; =sub_020DD8CC
mov r0, #0xb
bl sub_020D6654
ldr r0, _020DC8A4 ; =0x027FFC40
ldrh r0, [r0]
cmp r0, #2
moveq r0, #1
movne r0, #0
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, pc}
mov r0, #1
bl sub_020DC8E0
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_020DC89C: .word 0x021E3820
_020DC8A0: .word 0x021E37C0
_020DC8A4: .word 0x027FFC40
_020DC8A8: .word 0x027FFE00
_020DC8AC: .word sub_020DD900
_020DC8B0: .word 0x021E3E40
_020DC8B4: .word sub_020DD8CC
arm_func_end sub_020DC7A8
arm_func_start sub_020DC8B8
sub_020DC8B8: ; 0x020DC8B8
ldr r0, _020DC8C4 ; =0x021E37A8
ldr r0, [r0]
bx lr
.align 2, 0
_020DC8C4: .word 0x021E37A8
arm_func_end sub_020DC8B8
arm_func_start sub_020DC8C8
sub_020DC8C8: ; 0x020DC8C8
stmdb sp!, {r3, lr}
bl sub_020DC8B8
cmp r0, #0
ldmneia sp!, {r3, pc}
bl OS_Terminate
ldmia sp!, {r3, pc}
arm_func_end sub_020DC8C8
arm_func_start sub_020DC8E0
sub_020DC8E0: ; 0x020DC8E0
ldr r1, _020DC8EC ; =0x021E37A8
str r0, [r1]
bx lr
.align 2, 0
_020DC8EC: .word 0x021E37A8
arm_func_end sub_020DC8E0
arm_func_start sub_020DC8F0
sub_020DC8F0: ; 0x020DC8F0
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _020DC938 ; =0x021E3820
bl OS_DisableInterrupts
mov r5, r0
b _020DC90C
_020DC904:
add r0, r4, #0x10c
bl sub_020D1E7C
_020DC90C:
ldr r0, [r4, #0x114]
tst r0, #4
bne _020DC904
mov r0, r5
bl OS_RestoreInterrupts
ldr r0, [r4]
ldr r0, [r0]
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DC938: .word 0x021E3820
arm_func_end sub_020DC8F0
arm_func_start sub_020DC93C
sub_020DC93C: ; 0x020DC93C
ldr r0, _020DC954 ; =0x021E3820
ldr r0, [r0, #0x114]
tst r0, #4
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_020DC954: .word 0x021E3820
arm_func_end sub_020DC93C
arm_func_start CARD_GetResultCode
CARD_GetResultCode: ; 0x020DC958
ldr r0, _020DC968 ; =0x021E3820
ldr r0, [r0]
ldr r0, [r0]
bx lr
.align 2, 0
_020DC968: .word 0x021E3820
arm_func_end CARD_GetResultCode
arm_func_start sub_020DC96C
sub_020DC96C: ; 0x020DC96C
stmdb sp!, {r4, lr}
mov r4, r0
mov r1, #1
bl sub_020DC698
mov r0, r4
bl sub_020D1548
ldmia sp!, {r4, pc}
arm_func_end sub_020DC96C
arm_func_start sub_020DC988
sub_020DC988: ; 0x020DC988
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_020D1564
mov r0, r4
mov r1, #1
bl sub_020DC71C
ldmia sp!, {r4, pc}
arm_func_end sub_020DC988
arm_func_start CARD_LockBackup
CARD_LockBackup: ; 0x020DC9A4
ldr ip, _020DC9B0 ; =sub_020DC698
mov r1, #2
bx ip
.align 2, 0
_020DC9B0: .word sub_020DC698
arm_func_end CARD_LockBackup
arm_func_start CARD_UnlockBackup
CARD_UnlockBackup: ; 0x020DC9B4
stmdb sp!, {r4, lr}
mov r4, r0
bl CARD_TryWaitBackupAsync
cmp r0, #0
bne _020DC9CC
bl CARD_WaitBackupAsync
_020DC9CC:
mov r0, r4
mov r1, #2
bl sub_020DC71C
ldmia sp!, {r4, pc}
arm_func_end CARD_UnlockBackup
arm_func_start sub_020DC9DC
sub_020DC9DC: ; 0x020DC9DC
ldr r2, _020DC9EC ; =0x021E3820
str r0, [r2, #0x118]
str r1, [r2, #0x11c]
bx lr
.align 2, 0
_020DC9EC: .word 0x021E3820
arm_func_end sub_020DC9DC
arm_func_start sub_020DC9F0
sub_020DC9F0: ; 0x020DC9F0
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020DCD54 ; =0x021E3820
mov r5, r0
ldr r4, [r1]
mov r1, #0
add r0, r4, #0x18
mov r2, #0x48
bl MI_CpuFill8
ldr r0, _020DCD58 ; =0x0000203F
str r5, [r4, #4]
str r0, [r4, #0x58]
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5, asr #8
and r0, r0, #0xff
mov r3, #1
mov ip, r3, lsl r0
and r2, r5, #0xff
mov r1, r5, asr #0x10
str ip, [r4, #0x18]
mov r0, #0xff
strb r0, [r4, #0x54]
cmp r2, #1
and r0, r1, #0xff
bne _020DCB2C
cmp ip, #0x2000
bhi _020DCA6C
bhs _020DCAA8
cmp ip, #0x200
beq _020DCA88
b _020DCD34
_020DCA6C:
cmp ip, #0x10000
bhi _020DCA7C
beq _020DCACC
b _020DCD34
_020DCA7C:
cmp ip, #0x20000
beq _020DCAF0
b _020DCD34
_020DCA88:
mov r0, #0x10
str r0, [r4, #0x24]
str r3, [r4, #0x28]
mov r0, #5
str r0, [r4, #0x2c]
mov r0, #0xf0
strb r0, [r4, #0x54]
b _020DCB10
_020DCAA8:
mov r0, #0x20
str r0, [r4, #0x24]
mov r0, #2
str r0, [r4, #0x28]
mov r0, #5
str r0, [r4, #0x2c]
mov r0, #0
strb r0, [r4, #0x54]
b _020DCB10
_020DCACC:
mov r0, #0x80
str r0, [r4, #0x24]
mov r0, #2
str r0, [r4, #0x28]
mov r0, #0xa
str r0, [r4, #0x2c]
mov r0, #0
strb r0, [r4, #0x54]
b _020DCB10
_020DCAF0:
mov r0, #0x100
str r0, [r4, #0x24]
mov r0, #3
str r0, [r4, #0x28]
mov r0, #5
str r0, [r4, #0x2c]
mov r0, #0
strb r0, [r4, #0x54]
_020DCB10:
ldr r0, [r4, #0x24]
str r0, [r4, #0x1c]
ldr r0, [r4, #0x58]
orr r0, r0, #0x40
orr r0, r0, #0x4300
str r0, [r4, #0x58]
ldmia sp!, {r3, r4, r5, pc}
_020DCB2C:
cmp r2, #2
bne _020DCCF4
cmp ip, #0x100000
bhi _020DCB5C
bhs _020DCB80
cmp ip, #0x40000
bhi _020DCB50
beq _020DCB80
b _020DCD34
_020DCB50:
cmp ip, #0x80000
beq _020DCB80
b _020DCD34
_020DCB5C:
cmp ip, #0x400000
bhi _020DCB74
bhs _020DCBF8
cmp ip, #0x200000
beq _020DCBAC
b _020DCD34
_020DCB74:
cmp ip, #0x800000
beq _020DCC48
b _020DCD34
_020DCB80:
mov r0, #0x19
str r0, [r4, #0x30]
mov r1, #0x12c
str r1, [r4, #0x34]
ldr r0, _020DCD5C ; =0x00001388
str r1, [r4, #0x50]
str r0, [r4, #0x40]
ldr r0, [r4, #0x58]
orr r0, r0, #0x480
str r0, [r4, #0x58]
b _020DCCC4
_020DCBAC:
mov r0, #0x17
str r0, [r4, #0x30]
mov r1, #0x12c
str r1, [r4, #0x34]
mov r1, #0x1f4
ldr r0, _020DCD5C ; =0x00001388
str r1, [r4, #0x40]
str r0, [r4, #0x44]
mov r1, r0, lsl #1
ldr r0, _020DCD60 ; =0x0000EA60
str r1, [r4, #0x38]
str r0, [r4, #0x3c]
mov r0, #0
strb r0, [r4, #0x54]
ldr r0, [r4, #0x58]
orr r0, r0, #0x80
orr r0, r0, #0x5400
str r0, [r4, #0x58]
b _020DCCC4
_020DCBF8:
mov r0, #0x258
str r0, [r4, #0x40]
add r0, r0, #0x960
str r0, [r4, #0x44]
mov r0, #0x46
str r0, [r4, #0x48]
mov r0, #0x96
str r0, [r4, #0x4c]
ldr r1, _020DCD64 ; =0x000059D8
ldr r0, _020DCD68 ; =0x000C3500
str r1, [r4, #0x38]
str r0, [r4, #0x3c]
mov r0, #0
strb r0, [r4, #0x54]
mov r0, #0x1000
str r0, [r4, #0x20]
ldr r0, [r4, #0x58]
orr r0, r0, #0xd000
str r0, [r4, #0x58]
b _020DCCC4
_020DCC48:
cmp r0, #0
bne _020DCC88
mov r0, #0x3e8
str r0, [r4, #0x40]
add r0, r0, #0x7d0
str r0, [r4, #0x44]
ldr r1, _020DCD6C ; =0x000109A0
ldr r0, _020DCD70 ; =0x00027100
str r1, [r4, #0x38]
str r0, [r4, #0x3c]
mov r0, #0
strb r0, [r4, #0x54]
ldr r0, [r4, #0x58]
orr r0, r0, #0x5000
str r0, [r4, #0x58]
b _020DCCC4
_020DCC88:
cmp r0, #1
bne _020DCCC4
mov r0, #0x3e8
str r0, [r4, #0x40]
add r0, r0, #0x7d0
str r0, [r4, #0x44]
ldr r1, _020DCD6C ; =0x000109A0
ldr r0, _020DCD70 ; =0x00027100
str r1, [r4, #0x38]
str r0, [r4, #0x3c]
mov r0, #0x84
strb r0, [r4, #0x54]
ldr r0, [r4, #0x58]
orr r0, r0, #0x5000
str r0, [r4, #0x58]
_020DCCC4:
mov r0, #0x10000
str r0, [r4, #0x1c]
mov r0, #0x100
str r0, [r4, #0x24]
mov r0, #3
str r0, [r4, #0x28]
mov r0, #5
str r0, [r4, #0x2c]
ldr r0, [r4, #0x58]
orr r0, r0, #0xb40
str r0, [r4, #0x58]
ldmia sp!, {r3, r4, r5, pc}
_020DCCF4:
cmp r2, #3
bne _020DCD34
cmp ip, #0x2000
cmpne ip, #0x8000
bne _020DCD34
str ip, [r4, #0x24]
str ip, [r4, #0x1c]
mov r0, #2
str r0, [r4, #0x28]
mov r0, #0
strb r0, [r4, #0x54]
ldr r0, [r4, #0x58]
orr r0, r0, #0x40
orr r0, r0, #0x4300
str r0, [r4, #0x58]
ldmia sp!, {r3, r4, r5, pc}
_020DCD34:
mov r1, #0
str r1, [r4, #4]
str r1, [r4, #0x18]
ldr r0, _020DCD54 ; =0x021E3820
mov r1, #3
ldr r0, [r0]
str r1, [r0]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DCD54: .word 0x021E3820
_020DCD58: .word 0x0000203F
_020DCD5C: .word 0x00001388
_020DCD60: .word 0x0000EA60
_020DCD64: .word 0x000059D8
_020DCD68: .word 0x000C3500
_020DCD6C: .word 0x000109A0
_020DCD70: .word 0x00027100
arm_func_end sub_020DC9F0
arm_func_start sub_020DCD74
sub_020DCD74: ; 0x020DCD74
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, r0
ldr r7, [sb, #0x2c]
ldr r0, _020DCF5C ; =_version_NINTENDO_BACKUP
ldr r4, [sb, #0x34]
ldr sl, [sb, #0x30]
mov r5, #0x100
bl OSi_ReferSymbol
cmp r7, #0xb
bne _020DCDA8
bl sub_020DD04C
mov r5, r0
b _020DCDB8
_020DCDA8:
cmp r7, #0xf
ldreq r0, _020DCF60 ; =0x021E3820
ldreq r0, [r0]
ldreq r5, [r0, #0x20]
_020DCDB8:
add r6, sb, #0x120
mov fp, #9
_020DCDC0:
ldr r8, [sb, #0x24]
ldr r0, [sb]
cmp r5, r8
movlo r8, r5
str r8, [r0, #0x14]
ldr r0, [sb, #0x114]
tst r0, #0x40
beq _020DCDFC
ldr r0, [sb, #0x114]
mov r1, #7
bic r0, r0, #0x40
str r0, [sb, #0x114]
ldr r0, [sb]
str r1, [r0]
b _020DCF08
_020DCDFC:
cmp r4, #3
addls pc, pc, r4, lsl #2
b _020DCE8C
_020DCE08: ; jump table
b _020DCE18 ; case 0
b _020DCE3C ; case 1
b _020DCE3C ; case 2
b _020DCE74 ; case 3
_020DCE18:
mov r0, r6
mov r1, r8
bl sub_020D285C
ldr r1, [sb, #0x1c]
ldr r0, [sb]
str r1, [r0, #0xc]
ldr r0, [sb]
str r6, [r0, #0x10]
b _020DCE8C
_020DCE3C:
ldr r0, [sb, #0x1c]
mov r1, r6
mov r2, r8
bl MIi_CpuCopy8
mov r0, r6
mov r1, r8
bl DC_FlushRange
bl sub_020D28B8
ldr r0, [sb]
str r6, [r0, #0xc]
ldr r1, [sb, #0x20]
ldr r0, [sb]
str r1, [r0, #0x10]
b _020DCE8C
_020DCE74:
ldr r1, [sb, #0x1c]
ldr r0, [sb]
str r1, [r0, #0xc]
ldr r1, [sb, #0x20]
ldr r0, [sb]
str r1, [r0, #0x10]
_020DCE8C:
mov r0, sb
mov r1, r7
mov r2, sl
bl sub_020DD950
cmp r0, #0
beq _020DCF08
cmp r4, #2
bne _020DCEC8
mov r0, sb
mov r1, fp
mov r2, #1
bl sub_020DD950
cmp r0, #0
beq _020DCF08
b _020DCEE0
_020DCEC8:
cmp r4, #0
bne _020DCEE0
ldr r1, [sb, #0x20]
mov r0, r6
mov r2, r8
bl MIi_CpuCopy8
_020DCEE0:
ldr r0, [sb, #0x1c]
add r0, r0, r8
str r0, [sb, #0x1c]
ldr r0, [sb, #0x20]
add r0, r0, r8
str r0, [sb, #0x20]
ldr r0, [sb, #0x24]
subs r0, r0, r8
str r0, [sb, #0x24]
bne _020DCDC0
_020DCF08:
ldr r6, [sb, #0x38]
ldr r5, [sb, #0x3c]
bl OS_DisableInterrupts
ldr r1, [sb, #0x114]
mov r4, r0
bic r0, r1, #0x4c
str r0, [sb, #0x114]
add r0, sb, #0x10c
bl sub_020D1ECC
ldr r0, [sb, #0x114]
tst r0, #0x10
beq _020DCF40
add r0, sb, #0x44
bl sub_020D1F34
_020DCF40:
mov r0, r4
bl OS_RestoreInterrupts
cmp r6, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r0, r5
blx r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DCF5C: .word _version_NINTENDO_BACKUP
_020DCF60: .word 0x021E3820
arm_func_end sub_020DCD74
arm_func_start CARDi_RequestStreamCommand
CARDi_RequestStreamCommand: ; 0x020DCF64
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
ldr r4, _020DD03C ; =0x021E3820
ldr r0, _020DD040 ; =_version_NINTENDO_BACKUP
mov r8, r1
mov r7, r2
mov r6, r3
bl OSi_ReferSymbol
bl OS_DisableInterrupts
ldr r1, [r4, #0x114]
mov r5, r0
tst r1, #4
beq _020DCFAC
_020DCF98:
add r0, r4, #0x10c
bl sub_020D1E7C
ldr r0, [r4, #0x114]
tst r0, #4
bne _020DCF98
_020DCFAC:
ldr r0, [r4, #0x114]
ldr r1, [sp, #0x20]
orr r2, r0, #4
mov r0, r5
str r2, [r4, #0x114]
str r6, [r4, #0x38]
str r1, [r4, #0x3c]
bl OS_RestoreInterrupts
ldr r3, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r1, [sp, #0x30]
ldr r0, [sp, #0x24]
str sb, [r4, #0x1c]
str r8, [r4, #0x20]
str r7, [r4, #0x24]
str r3, [r4, #0x2c]
str r2, [r4, #0x30]
str r1, [r4, #0x34]
cmp r0, #0
beq _020DD00C
ldr r0, _020DD044 ; =sub_020DCD74
bl sub_020DC65C
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_020DD00C:
ldr r0, _020DD048 ; =0x021E16A0
ldr r1, _020DD03C ; =0x021E3820
ldr r2, [r0, #4]
mov r0, r4
str r2, [r1, #0x104]
bl sub_020DCD74
ldr r0, [r4]
ldr r0, [r0]
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020DD03C: .word 0x021E3820
_020DD040: .word _version_NINTENDO_BACKUP
_020DD044: .word sub_020DCD74
_020DD048: .word 0x021E16A0
arm_func_end CARDi_RequestStreamCommand
arm_func_start sub_020DD04C
sub_020DD04C: ; 0x020DD04C
ldr r0, _020DD05C ; =0x021E3820
ldr r0, [r0]
ldr r0, [r0, #0x1c]
bx lr
.align 2, 0
_020DD05C: .word 0x021E3820
arm_func_end sub_020DD04C
arm_func_start CARD_IdentifyBackup
CARD_IdentifyBackup: ; 0x020DD060
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
ldr r0, _020DD18C ; =_version_NINTENDO_BACKUP
ldr r4, _020DD190 ; =0x021E3820
bl OSi_ReferSymbol
cmp r6, #0
bne _020DD080
bl OS_Terminate
_020DD080:
bl sub_020DC8C8
bl OS_DisableInterrupts
ldr r1, [r4, #0x114]
mov r5, r0
tst r1, #4
beq _020DD0AC
_020DD098:
add r0, r4, #0x10c
bl sub_020D1E7C
ldr r0, [r4, #0x114]
tst r0, #4
bne _020DD098
_020DD0AC:
ldr r0, [r4, #0x114]
mov r1, #0
orr r2, r0, #4
mov r0, r5
str r2, [r4, #0x114]
str r1, [r4, #0x38]
str r1, [r4, #0x3c]
bl OS_RestoreInterrupts
mov r0, r6
bl sub_020DC9F0
ldr r0, _020DD194 ; =0x021E16A0
ldr r1, _020DD190 ; =0x021E3820
ldr r2, [r0, #4]
mov r0, r4
str r2, [r1, #0x104]
mov r1, #2
mov r2, #1
bl sub_020DD950
ldr r0, [r4]
mov r1, #0
str r1, [r0, #0xc]
ldr r0, [r4]
add r1, r4, #0x120
str r1, [r0, #0x10]
ldr r1, [r4]
mov r2, #1
mov r0, r4
str r2, [r1, #0x14]
mov r1, #6
bl sub_020DD950
ldr r7, [r4, #0x38]
ldr r6, [r4, #0x3c]
bl OS_DisableInterrupts
mov r5, r0
ldr r1, [r4, #0x114]
add r0, r4, #0x10c
bic r1, r1, #0x4c
str r1, [r4, #0x114]
bl sub_020D1ECC
ldr r0, [r4, #0x114]
tst r0, #0x10
beq _020DD15C
add r0, r4, #0x44
bl sub_020D1F34
_020DD15C:
mov r0, r5
bl OS_RestoreInterrupts
cmp r7, #0
beq _020DD174
mov r0, r6
blx r7
_020DD174:
ldr r0, [r4]
ldr r0, [r0]
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DD18C: .word _version_NINTENDO_BACKUP
_020DD190: .word 0x021E3820
_020DD194: .word 0x021E16A0
arm_func_end CARD_IdentifyBackup
arm_func_start CARD_WaitBackupAsync
CARD_WaitBackupAsync: ; 0x020DD198
ldr ip, _020DD1A0 ; =sub_020DC8F0
bx ip
.align 2, 0
_020DD1A0: .word sub_020DC8F0
arm_func_end CARD_WaitBackupAsync
arm_func_start CARD_TryWaitBackupAsync
CARD_TryWaitBackupAsync: ; 0x020DD1A4
ldr ip, _020DD1AC ; =sub_020DC93C
bx ip
.align 2, 0
_020DD1AC: .word sub_020DC93C
arm_func_end CARD_TryWaitBackupAsync
arm_func_start sub_020DD1B0
sub_020DD1B0: ; 0x020DD1B0
stmdb sp!, {r3, lr}
bl OS_DisableInterrupts
ldr r1, _020DD1D0 ; =0x021E3820
ldr r2, [r1, #0x114]
orr r2, r2, #0x40
str r2, [r1, #0x114]
bl OS_RestoreInterrupts
ldmia sp!, {r3, pc}
.align 2, 0
_020DD1D0: .word 0x021E3820
arm_func_end sub_020DD1B0
arm_func_start sub_020DD1D4
sub_020DD1D4: ; 0x020DD1D4
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _020DD25C ; =0x021E3820
mov r1, #0x200
ldr r3, [r4, #0x1c]
rsb r1, r1, #0
ldr r2, [r0, #8]
and r3, r3, r1
cmp r3, r2
bne _020DD248
ldr r2, [r4, #0x1c]
ldr r1, [r4, #0x24]
sub r3, r2, r3
rsb r5, r3, #0x200
cmp r5, r1
movhi r5, r1
add r0, r0, #0x20
ldr r1, [r4, #0x20]
mov r2, r5
add r0, r0, r3
bl MIi_CpuCopy8
ldr r2, [r4, #0x1c]
ldr r1, [r4, #0x20]
ldr r0, [r4, #0x24]
add r2, r2, r5
add r1, r1, r5
sub r0, r0, r5
str r2, [r4, #0x1c]
str r1, [r4, #0x20]
str r0, [r4, #0x24]
_020DD248:
ldr r0, [r4, #0x24]
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DD25C: .word 0x021E3820
arm_func_end sub_020DD1D4
arm_func_start sub_020DD260
sub_020DD260: ; 0x020DD260
ldr r3, _020DD2B8 ; =0x040001A4
_020DD264:
ldr r2, [r3]
tst r2, #0x80000000
bne _020DD264
ldr r3, _020DD2BC ; =0x040001A1
mov r2, #0xc0
strb r2, [r3]
mov r2, r0, lsr #0x18
strb r2, [r3, #7]
mov r2, r0, lsr #0x10
strb r2, [r3, #8]
mov r2, r0, lsr #8
strb r2, [r3, #9]
strb r0, [r3, #0xa]
mov r0, r1, lsr #0x18
strb r0, [r3, #0xb]
mov r0, r1, lsr #0x10
strb r0, [r3, #0xc]
mov r0, r1, lsr #8
strb r0, [r3, #0xd]
strb r1, [r3, #0xe]
bx lr
.align 2, 0
_020DD2B8: .word 0x040001A4
_020DD2BC: .word 0x040001A1
arm_func_end sub_020DD260
arm_func_start sub_020DD2C0
sub_020DD2C0: ; 0x020DD2C0
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _020DD304 ; =0x021E3820
ldr r1, _020DD308 ; =0x04100010
ldr r0, [r4, #0x28]
ldr r2, [r4, #0x20]
mov r3, #0x200
ldr r5, _020DD30C ; =0x021E3E60
bl sub_020D4CE8
ldr r1, [r4, #0x1c]
mov r0, r1, lsr #8
orr r0, r0, #0xb7000000
mov r1, r1, lsl #0x18
bl sub_020DD260
ldr r1, [r5, #4]
ldr r0, _020DD310 ; =0x040001A4
str r1, [r0]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DD304: .word 0x021E3820
_020DD308: .word 0x04100010
_020DD30C: .word 0x021E3E60
_020DD310: .word 0x040001A4
arm_func_end sub_020DD2C0
arm_func_start sub_020DD314
sub_020DD314: ; 0x020DD314
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _020DD3E0 ; =0x021E3820
ldr r0, [r0, #0x28]
bl sub_020D4294
ldr r3, _020DD3E0 ; =0x021E3820
ldr r0, [r3, #0x24]
ldr r2, [r3, #0x1c]
ldr r1, [r3, #0x20]
subs r0, r0, #0x200
str r0, [r3, #0x24]
movne r0, #1
add r2, r2, #0x200
add r1, r1, #0x200
moveq r0, #0
str r2, [r3, #0x1c]
str r1, [r3, #0x20]
cmp r0, #0
bne _020DD3D8
mov r0, #0x80000
bl OS_DisableIrqMask
mov r0, #0x80000
bl OS_ResetRequestIrqMask
ldr r4, _020DD3E0 ; =0x021E3820
bl sub_020DD660
bl sub_020DDBC0
ldr r0, [r4]
mov r1, #0
str r1, [r0]
ldr r5, [r4, #0x38]
ldr r6, [r4, #0x3c]
bl OS_DisableInterrupts
ldr r1, [r4, #0x114]
mov r7, r0
bic r0, r1, #0x4c
str r0, [r4, #0x114]
add r0, r4, #0x10c
bl sub_020D1ECC
ldr r0, [r4, #0x114]
tst r0, #0x10
beq _020DD3BC
add r0, r4, #0x44
bl sub_020D1F34
_020DD3BC:
mov r0, r7
bl OS_RestoreInterrupts
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
blx r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020DD3D8:
bl sub_020DD2C0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DD3E0: .word 0x021E3820
arm_func_end sub_020DD314
arm_func_start sub_020DD3E4
sub_020DD3E4: ; 0x020DD3E4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r4, _020DD55C ; =0x021E3820
mov r6, #0
ldr sb, [r4, #0x20]
mov fp, r0
mov r7, r6
mov r8, r6
mov r1, r6
ands sl, sb, #0x1f
ldr r5, [r4, #0x24]
bne _020DD41C
ldr r0, [r4, #0x28]
cmp r0, #3
movls r1, #1
_020DD41C:
cmp r1, #0
beq _020DD470
bl sub_020D3148
ldr r1, _020DD560 ; =sub_01FF8000
add r3, sb, r5
cmp r3, r1
mov r1, #1
mov r2, #0
bls _020DD448
cmp sb, #0x2000000
movlo r2, r1
_020DD448:
cmp r2, #0
bne _020DD468
cmp r0, r3
bhs _020DD464
add r0, r0, #0x4000
cmp r0, sb
bhi _020DD468
_020DD464:
mov r1, #0
_020DD468:
cmp r1, #0
moveq r8, #1
_020DD470:
cmp r8, #0
beq _020DD48C
ldr r1, [r4, #0x1c]
ldr r0, _020DD564 ; =0x000001FF
orr r1, r1, r5
tst r1, r0
moveq r7, #1
_020DD48C:
ldr r0, _020DD568 ; =_02110FB8
cmp r7, #0
ldr r0, [r0]
cmpne r5, #0
ldr r0, [r0, #0x60]
movne r6, #1
bic r0, r0, #0x7000000
orr r0, r0, #0xa1000000
cmp r6, #0
str r0, [fp, #4]
beq _020DD554
bl OS_DisableInterrupts
ldr r1, [r4, #0x118]
mov r7, r0
cmp r5, r1
bhs _020DD4DC
mov r0, sb
mov r1, r5
bl IC_InvalidateRange
b _020DD4E0
_020DD4DC:
bl sub_020D28C4
_020DD4E0:
ldr r0, [r4, #0x11c]
cmp r5, r0
bhs _020DD528
cmp sl, #0
beq _020DD514
sub sb, sb, sl
mov r0, sb
mov r1, #0x20
bl sub_020D2878
add r0, sb, r5
mov r1, #0x20
bl sub_020D2878
add r5, r5, #0x20
_020DD514:
mov r0, sb
mov r1, r5
bl sub_020D285C
bl sub_020D28B8
b _020DD52C
_020DD528:
bl sub_020D2828
_020DD52C:
ldr r1, _020DD56C ; =sub_020DD314
mov r0, #0x80000
bl OS_SetIrqFunction
mov r0, #0x80000
bl OS_ResetRequestIrqMask
mov r0, #0x80000
bl OS_EnableIrqMask
mov r0, r7
bl OS_RestoreInterrupts
bl sub_020DD2C0
_020DD554:
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DD55C: .word 0x021E3820
_020DD560: .word sub_01FF8000
_020DD564: .word 0x000001FF
_020DD568: .word _02110FB8
_020DD56C: .word sub_020DD314
arm_func_end sub_020DD3E4
arm_func_start sub_020DD570
sub_020DD570: ; 0x020DD570
stmdb sp!, {r4, r5, r6, lr}
ldr r4, _020DD654 ; =0x021E3820
mov r6, r0
_020DD57C:
mov r0, #0x200
ldr r1, [r4, #0x1c]
rsb r0, r0, #0
and r2, r1, r0
cmp r2, r1
bne _020DD5AC
ldr r5, [r4, #0x20]
tst r5, #3
bne _020DD5AC
ldr r0, [r4, #0x24]
cmp r0, #0x200
bhs _020DD5B4
_020DD5AC:
str r2, [r6, #8]
add r5, r6, #0x20
_020DD5B4:
mov r0, r2, lsr #8
orr r0, r0, #0xb7000000
mov r1, r2, lsl #0x18
bl sub_020DD260
mov ip, #0
ldr r0, [r6, #4]
ldr r2, _020DD658 ; =0x040001A4
mov lr, ip
str r0, [r2]
ldr r1, _020DD65C ; =0x04100010
_020DD5DC:
ldr r3, [r2]
tst r3, #0x800000
beq _020DD5FC
ldr r0, [r1]
cmp lr, #0x200
strlo r0, [r5, ip, lsl #2]
addlo lr, lr, #4
addlo ip, ip, #1
_020DD5FC:
tst r3, #0x80000000
bne _020DD5DC
ldr r0, [r4, #0x20]
cmp r5, r0
bne _020DD640
ldr r0, _020DD654 ; =0x021E3820
ldr r1, [r0, #0x1c]
add r1, r1, #0x200
str r1, [r0, #0x1c]
ldr r1, [r0, #0x20]
add r1, r1, #0x200
str r1, [r0, #0x20]
ldr r1, [r0, #0x24]
subs r1, r1, #0x200
str r1, [r0, #0x24]
ldmeqia sp!, {r4, r5, r6, pc}
b _020DD57C
_020DD640:
mov r0, r6
bl sub_020DD1D4
cmp r0, #0
bne _020DD57C
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DD654: .word 0x021E3820
_020DD658: .word 0x040001A4
_020DD65C: .word 0x04100010
arm_func_end sub_020DD570
arm_func_start sub_020DD660
sub_020DD660: ; 0x020DD660
stmdb sp!, {r3, lr}
mov r0, #0xb8000000
mov r1, #0
bl sub_020DD260
ldr r1, _020DD6B0 ; =_02110FB8
mov r0, #0x2000
ldr r1, [r1]
rsb r0, r0, #0
ldr r2, [r1, #0x60]
ldr r1, _020DD6B4 ; =0x040001A4
bic r2, r2, #0x7000000
orr r2, r2, #0xa7000000
and r0, r2, r0
str r0, [r1]
_020DD698:
ldr r0, [r1]
tst r0, #0x800000
beq _020DD698
ldr r0, _020DD6B8 ; =0x04100010
ldr r0, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020DD6B0: .word _02110FB8
_020DD6B4: .word 0x040001A4
_020DD6B8: .word 0x04100010
arm_func_end sub_020DD660
arm_func_start sub_020DD6BC
sub_020DD6BC: ; 0x020DD6BC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _020DD74C ; =0x021E3E60
mov r0, r4
bl sub_020DD1D4
cmp r0, #0
beq _020DD6E0
ldr r1, [r4]
mov r0, r4
blx r1
_020DD6E0:
ldr r4, _020DD750 ; =0x021E3820
bl sub_020DD660
bl sub_020DDBC0
ldr r0, [r4]
mov r1, #0
str r1, [r0]
ldr r5, [r4, #0x38]
ldr r6, [r4, #0x3c]
bl OS_DisableInterrupts
ldr r1, [r4, #0x114]
mov r7, r0
bic r0, r1, #0x4c
str r0, [r4, #0x114]
add r0, r4, #0x10c
bl sub_020D1ECC
ldr r0, [r4, #0x114]
tst r0, #0x10
beq _020DD730
add r0, r4, #0x44
bl sub_020D1F34
_020DD730:
mov r0, r7
bl OS_RestoreInterrupts
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
blx r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020DD74C: .word 0x021E3E60
_020DD750: .word 0x021E3820
arm_func_end sub_020DD6BC
arm_func_start sub_020DD754
sub_020DD754: ; 0x020DD754
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
mov sb, r1
mov r8, r2
mov r7, r3
ldr r4, _020DD838 ; =0x021E3E60
ldr r5, _020DD83C ; =0x021E3820
bl sub_020DC8C8
bl OS_DisableInterrupts
mov r6, r0
b _020DD788
_020DD780:
add r0, r5, #0x10c
bl sub_020D1E7C
_020DD788:
ldr r0, [r5, #0x114]
tst r0, #4
bne _020DD780
ldr r0, [r5, #0x114]
ldr r2, [sp, #0x20]
ldr r1, [sp, #0x24]
orr r3, r0, #4
mov r0, r6
str r3, [r5, #0x114]
str r2, [r5, #0x38]
str r1, [r5, #0x3c]
bl OS_RestoreInterrupts
ldr r0, _020DD840 ; =0x021E3E40
str sl, [r5, #0x28]
ldr r0, [r0]
str r8, [r5, #0x20]
add r0, sb, r0
str r0, [r5, #0x1c]
str r7, [r5, #0x24]
cmp sl, #3
bhi _020DD7E4
mov r0, sl
bl sub_020D4294
_020DD7E4:
mov r0, r4
bl sub_020DD3E4
cmp r0, #0
beq _020DD808
ldr r0, [sp, #0x28]
cmp r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
bl sub_020DD8B4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DD808:
ldr r0, [sp, #0x28]
cmp r0, #0
beq _020DD820
ldr r0, _020DD844 ; =sub_020DD6BC
bl sub_020DC65C
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DD820:
ldr r1, _020DD848 ; =0x021E16A0
mov r0, r5
ldr r1, [r1, #4]
str r1, [r5, #0x104]
bl sub_020DD6BC
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020DD838: .word 0x021E3E60
_020DD83C: .word 0x021E3820
_020DD840: .word 0x021E3E40
_020DD844: .word sub_020DD6BC
_020DD848: .word 0x021E16A0
arm_func_end sub_020DD754
arm_func_start sub_020DD84C
sub_020DD84C: ; 0x020DD84C
stmdb sp!, {r3, lr}
ldr ip, _020DD8A8 ; =0x021E3820
ldr r0, [ip, #0x114]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r2, #0
ldr r0, _020DD8AC ; =0x021E3E40
sub r1, r2, #1
mov r3, #1
str r3, [ip, #0x114]
str r2, [ip, #0x24]
str r2, [ip, #0x20]
str r2, [ip, #0x1c]
str r1, [ip, #0x28]
str r2, [ip, #0x38]
str r2, [ip, #0x3c]
str r2, [r0]
bl sub_020DC7A8
bl sub_020DD8C0
ldr r1, _020DD8B0 ; =0x021E3E60
str r0, [r1]
bl sub_020DDAA4
ldmia sp!, {r3, pc}
.align 2, 0
_020DD8A8: .word 0x021E3820
_020DD8AC: .word 0x021E3E40
_020DD8B0: .word 0x021E3E60
arm_func_end sub_020DD84C
arm_func_start sub_020DD8B4
sub_020DD8B4: ; 0x020DD8B4
ldr ip, _020DD8BC ; =sub_020DC8F0
bx ip
.align 2, 0
_020DD8BC: .word sub_020DC8F0
arm_func_end sub_020DD8B4
arm_func_start sub_020DD8C0
sub_020DD8C0: ; 0x020DD8C0
ldr r0, _020DD8C8 ; =sub_020DD570
bx lr
.align 2, 0
_020DD8C8: .word sub_020DD570
arm_func_end sub_020DD8C0
arm_func_start sub_020DD8CC
sub_020DD8CC: ; 0x020DD8CC
stmdb sp!, {r3, lr}
cmp r0, #0xb
ldmneia sp!, {r3, pc}
cmp r2, #0
ldmeqia sp!, {r3, pc}
ldr r2, _020DD8FC ; =0x021E3820
ldr r1, [r2, #0x114]
ldr r0, [r2, #0x104]
bic r1, r1, #0x20
str r1, [r2, #0x114]
bl sub_020D1F34
ldmia sp!, {r3, pc}
.align 2, 0
_020DD8FC: .word 0x021E3820
arm_func_end sub_020DD8CC
arm_func_start sub_020DD900
sub_020DD900: ; 0x020DD900
stmdb sp!, {r4, r5, r6, lr}
ldr r5, _020DD94C ; =0x021E3820
mov r4, #0
_020DD90C:
bl OS_DisableInterrupts
ldr r1, [r5, #0x114]
mov r6, r0
tst r1, #8
bne _020DD934
_020DD920:
mov r0, r4
bl sub_020D1E7C
ldr r0, [r5, #0x114]
tst r0, #8
beq _020DD920
_020DD934:
mov r0, r6
bl OS_RestoreInterrupts
ldr r1, [r5, #0x40]
mov r0, r5
blx r1
b _020DD90C
.align 2, 0
_020DD94C: .word 0x021E3820
arm_func_end sub_020DD900
arm_func_start sub_020DD950
sub_020DD950: ; 0x020DD950
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldr r0, [sl, #0x114]
mov sb, r1
str r2, [sp]
tst r0, #2
bne _020DD9C4
ldr r1, [sl, #0x114]
mov r0, #0xb
orr r2, r1, #2
mov r1, #1
str r2, [sl, #0x114]
bl sub_020D66A0
cmp r0, #0
bne _020DD9B4
mov r6, #0x64
mov r5, #0xb
mov r4, #1
_020DD998:
mov r0, r6
bl sub_020D3AA8
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020DD998
_020DD9B4:
mov r0, sl
mov r1, #0
mov r2, #1
bl sub_020DD950
_020DD9C4:
ldr r0, [sl]
mov r1, #0x60
bl DC_FlushRange
bl sub_020D28B8
mov r7, #0xb
mov r6, #1
mov r5, r7
mov r4, r6
mov fp, #0
_020DD9E8:
str sb, [sl, #4]
ldr r0, [sl, #0x114]
orr r0, r0, #0x20
str r0, [sl, #0x114]
_020DD9F8:
mov r0, r7
mov r1, sb
mov r2, r6
bl sub_020D66C4
cmp r0, #0
blt _020DD9F8
cmp sb, #0
bne _020DDA34
ldr r8, [sl]
_020DDA1C:
mov r0, r5
mov r1, r8
mov r2, r4
bl sub_020D66C4
cmp r0, #0
blt _020DDA1C
_020DDA34:
bl OS_DisableInterrupts
ldr r1, [sl, #0x114]
mov r8, r0
tst r1, #0x20
beq _020DDA5C
_020DDA48:
mov r0, fp
bl sub_020D1E7C
ldr r0, [sl, #0x114]
tst r0, #0x20
bne _020DDA48
_020DDA5C:
mov r0, r8
bl OS_RestoreInterrupts
ldr r0, [sl]
mov r1, #0x60
bl sub_020D285C
ldr r0, [sl]
ldr r1, [r0]
cmp r1, #4
bne _020DDA94
ldr r0, [sp]
sub r0, r0, #1
str r0, [sp]
cmp r0, #0
bgt _020DD9E8
_020DDA94:
cmp r1, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_020DD950
arm_func_start sub_020DDAA4
sub_020DDAA4: ; 0x020DDAA4
stmdb sp!, {r3, lr}
bl sub_020D6548
ldr r1, _020DDAC8 ; =sub_020DDAD0
mov r0, #0xe
bl sub_020D6654
ldr r0, _020DDACC ; =0x021E4080
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020DDAC8: .word sub_020DDAD0
_020DDACC: .word 0x021E4080
arm_func_end sub_020DDAA4
arm_func_start sub_020DDAD0
sub_020DDAD0: ; 0x020DDAD0
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #0x11
bne _020DDB18
ldr r1, _020DDB20 ; =0x021E4080
ldr r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #1
str r0, [r1]
ldr r1, [r1, #4]
cmp r1, #0
beq _020DDB08
blx r1
_020DDB08:
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_020DDB34
ldmia sp!, {r3, pc}
_020DDB18:
bl OS_Terminate
ldmia sp!, {r3, pc}
.align 2, 0
_020DDB20: .word 0x021E4080
arm_func_end sub_020DDAD0
arm_func_start CARD_IsPulledOut
CARD_IsPulledOut: ; 0x020DDB24
ldr r0, _020DDB30 ; =0x021E4080
ldr r0, [r0]
bx lr
.align 2, 0
_020DDB30: .word 0x021E4080
arm_func_end CARD_IsPulledOut
arm_func_start sub_020DDB34
sub_020DDB34: ; 0x020DDB34
stmdb sp!, {r3, r4, r5, lr}
mov r0, #0
mov r5, #1
bl sub_020D4294
mov r0, r5
bl sub_020D4294
mov r0, #2
bl sub_020D4294
mov r0, #3
bl sub_020D4294
ldr r0, _020DDBB8 ; =0x027FFFA8
ldrh r0, [r0]
and r0, r0, #0x8000
movs r0, r0, asr #0xf
beq _020DDB9C
bl PM_ForceToPowerOff
cmp r0, #4
bne _020DDB94
ldr r4, _020DDBBC ; =0x000A3A47
_020DDB80:
mov r0, r4
bl sub_020D3AA8
bl PM_ForceToPowerOff
cmp r0, #4
beq _020DDB80
_020DDB94:
cmp r0, #0
moveq r5, #0
_020DDB9C:
cmp r5, #0
beq _020DDBB0
mov r0, #1
mov r1, r0
bl sub_020DDC20
_020DDBB0:
bl OS_Terminate
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020DDBB8: .word 0x027FFFA8
_020DDBBC: .word 0x000A3A47
arm_func_end sub_020DDB34
arm_func_start sub_020DDBC0
sub_020DDBC0: ; 0x020DDBC0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r2, _020DDC1C ; =0x027FFC10
ldrh r1, [r2]
cmp r1, #0
subeq r1, r2, #0x410
subne r1, r2, #0x10
ldr r1, [r1]
str r1, [sp]
ldr r1, [sp]
cmp r0, r1
addeq sp, sp, #4
ldmeqia sp!, {r3, r4, pc}
bl OS_DisableInterrupts
mov r4, r0
mov r0, #0xe
mov r1, #0x11
mov r2, #0
bl sub_020DDAD0
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020DDC1C: .word 0x027FFC10
arm_func_end sub_020DDBC0
arm_func_start sub_020DDC20
sub_020DDC20: ; 0x020DDC20
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r1, r7
mov r0, #0xe
mov r2, #0
bl sub_020D66C4
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r5, #0xe
mov r4, #0
_020DDC4C:
mov r0, r6
bl SVC_WaitByLoop
mov r0, r5
mov r1, r7
mov r2, r4
bl sub_020D66C4
cmp r0, #0
bne _020DDC4C
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020DDC20
arm_func_start sub_020DDC70
sub_020DDC70: ; 0x020DDC70
ldr r1, _020DDC7C ; =0x021E4088
strb r0, [r1, #2]
bx lr
.align 2, 0
_020DDC7C: .word 0x021E4088
arm_func_end sub_020DDC70
arm_func_start sub_020DDC80
sub_020DDC80: ; 0x020DDC80
ldr r1, _020DDC8C ; =0x021E4088
strb r0, [r1, #1]
bx lr
.align 2, 0
_020DDC8C: .word 0x021E4088
arm_func_end sub_020DDC80
arm_func_start sub_020DDC90
sub_020DDC90: ; 0x020DDC90
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bl sub_020D34B0
mov r4, #0
ldr r5, _020DDCEC ; =0x000082EA
ldr sl, _020DDCF0 ; =0x021E4088
mov r6, r0
mov r7, r1
mov sb, r4
mov r8, #0xfa00
_020DDCB4:
bl sub_020D34B0
subs r3, r0, r6
sbc r2, r1, r7
umull r0, r1, r3, r8
mla r1, r3, sb, r1
mla r1, r2, r8, r1
mov r2, r5
mov r3, r4
bl _ll_udiv
ldrb r2, [sl]
cmp r1, r2, asr #31
cmpeq r0, r2
blo _020DDCB4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020DDCEC: .word 0x000082EA
_020DDCF0: .word 0x021E4088
arm_func_end sub_020DDC90
arm_func_start sub_020DDCF4
sub_020DDCF4: ; 0x020DDCF4
stmdb sp!, {r3, lr}
ldr r1, _020DDD38 ; =0x021E4088
mov r0, #0x32
strb r0, [r1, #2]
strb r0, [r1, #1]
strb r0, [r1]
mov r2, #1
ldr r0, _020DDD3C ; =_02110FBC
str r2, [r1, #4]
ldrh r1, [r0]
ldr r0, _020DDD40 ; =0x0000FFFD
cmp r1, r0
ldmneia sp!, {r3, pc}
bl OS_GetLockID
ldr r1, _020DDD3C ; =_02110FBC
strh r0, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_020DDD38: .word 0x021E4088
_020DDD3C: .word _02110FBC
_020DDD40: .word 0x0000FFFD
arm_func_end sub_020DDCF4
arm_func_start sub_020DDD44
sub_020DDD44: ; 0x020DDD44
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r6, r0
bl sub_020D34B0
mov fp, #0
ldr sl, _020DDDE4 ; =0x000082EA
ldr sb, _020DDDE8 ; =0x021E4088
mov r4, r0
mov r5, r1
mov r8, fp
mov r7, #0xfa00
_020DDD6C:
bl sub_020D34B0
subs lr, r0, r4
sbc ip, r1, r5
mov r2, sl
mov r3, fp
umull r0, r1, lr, r7
mla r1, lr, r8, r1
mla r1, ip, r7, r1
bl _ll_udiv
ldrb r2, [sb, #1]
cmp r1, r2, asr #31
cmpeq r0, r2
blo _020DDD6C
ldr r0, [r6, #4]
ldr r1, _020DDDEC ; =0x040001A2
ldrb r0, [r0]
strh r0, [r1]
ldr r0, [r6, #4]
sub r1, r1, #2
add r0, r0, #1
str r0, [r6, #4]
_020DDDC0:
ldrh r0, [r1]
tst r0, #0x80
bne _020DDDC0
ldr r0, _020DDDEC ; =0x040001A2
ldrh r0, [r0]
strh r0, [sp]
ldrh r0, [sp]
and r0, r0, #0xff
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DDDE4: .word 0x000082EA
_020DDDE8: .word 0x021E4088
_020DDDEC: .word 0x040001A2
arm_func_end sub_020DDD44
arm_func_start sub_020DDDF0
sub_020DDDF0: ; 0x020DDDF0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r6, r0
bl sub_020D34B0
mov fp, #0
ldr sl, _020DDE88 ; =0x000082EA
ldr sb, _020DDE8C ; =0x021E4088
mov r4, r0
mov r5, r1
mov r8, fp
mov r7, #0xfa00
_020DDE18:
bl sub_020D34B0
subs lr, r0, r4
sbc ip, r1, r5
mov r2, sl
mov r3, fp
umull r0, r1, lr, r7
mla r1, lr, r8, r1
mla r1, ip, r7, r1
bl _ll_udiv
ldrb r2, [sb, #2]
cmp r1, r2, asr #31
cmpeq r0, r2
blo _020DDE18
ldr r0, _020DDE90 ; =0x040001A2
mov r1, #0
strh r1, [r0]
sub r1, r0, #2
_020DDE5C:
ldrh r0, [r1]
tst r0, #0x80
bne _020DDE5C
ldr r1, _020DDE90 ; =0x040001A2
ldr r0, [r6, #8]
ldrh r1, [r1]
strb r1, [r0]
ldr r0, [r6, #8]
add r0, r0, #1
str r0, [r6, #8]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DDE88: .word 0x000082EA
_020DDE8C: .word 0x021E4088
_020DDE90: .word 0x040001A2
arm_func_end sub_020DDDF0
arm_func_start sub_020DDE94
sub_020DDE94: ; 0x020DDE94
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r2, _020DDFC4 ; =0x021E409C
ldr r1, _020DDFC8 ; =0x021E4088
mov r6, r0
str r2, [r1, #8]
str r6, [r1, #0xc]
mov r0, #1
strb r0, [r2]
mov r1, #0
ldr r0, _020DDFCC ; =_02110FBC
strb r1, [r6]
ldrh r0, [r0]
bl CARD_LockBackup
ldr r0, _020DDFCC ; =_02110FBC
ldrh r0, [r0]
bl sub_020D1548
ldr r2, _020DDFD0 ; =0x040001A0
_020DDED8:
ldrh r0, [r2]
tst r0, #0x80
bne _020DDED8
ldr r1, _020DDFD4 ; =0x0000A042
ldr r0, _020DDFD8 ; =0x021E408C
strh r1, [r2]
bl sub_020DDD44
bl sub_020DDC90
ldr r0, _020DDFD8 ; =0x021E408C
bl sub_020DDDF0
bl sub_020DDC90
ldrb r4, [r6]
ldr r0, _020DDFC8 ; =0x021E4088
mov r5, #0
str r5, [r0, #8]
cmp r4, #0xb9
movhi r4, #0
str r6, [r0, #0xc]
strb r5, [r6]
cmp r4, #0
beq _020DDF60
sub sl, r4, #1
ldr sb, _020DDFDC ; =0x0000A002
ldr r8, _020DDFD0 ; =0x040001A0
ldr r7, _020DDFD8 ; =0x021E408C
b _020DDF54
_020DDF40:
mov r0, r7
cmp r5, sl
streqh sb, [r8]
bl sub_020DDDF0
add r5, r5, #1
_020DDF54:
cmp r5, r4
blt _020DDF40
b _020DDF74
_020DDF60:
ldr r2, _020DDFDC ; =0x0000A002
ldr r1, _020DDFD0 ; =0x040001A0
ldr r0, _020DDFD8 ; =0x021E408C
strh r2, [r1]
bl sub_020DDDF0
_020DDF74:
mov r5, #0
b _020DDF8C
_020DDF7C:
ldrb r0, [r6, r5]
eor r0, r0, #0xaa
strb r0, [r6, r5]
add r5, r5, #1
_020DDF8C:
cmp r5, r4
blt _020DDF7C
ldr r1, _020DDFD0 ; =0x040001A0
_020DDF98:
ldrh r0, [r1]
tst r0, #0x80
bne _020DDF98
ldr r0, _020DDFCC ; =_02110FBC
ldrh r0, [r0]
bl sub_020D1580
ldr r0, _020DDFCC ; =_02110FBC
ldrh r0, [r0]
bl CARD_UnlockBackup
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020DDFC4: .word 0x021E409C
_020DDFC8: .word 0x021E4088
_020DDFCC: .word _02110FBC
_020DDFD0: .word 0x040001A0
_020DDFD4: .word 0x0000A042
_020DDFD8: .word 0x021E408C
_020DDFDC: .word 0x0000A002
arm_func_end sub_020DDE94
arm_func_start sub_020DDFE0
sub_020DDFE0: ; 0x020DDFE0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r7, _020DE0AC ; =0x021E4158
ldr r3, _020DE0B0 ; =0x021E4088
mov r4, #0
str r7, [r3, #8]
ldr r2, _020DE0B4 ; =_02110FBC
str r4, [r3, #0xc]
mov r6, r0
mov r3, #2
ldrh r0, [r2]
mov r5, r1
strb r3, [r7]
bl CARD_LockBackup
ldr r0, _020DE0B4 ; =_02110FBC
ldrh r0, [r0]
bl sub_020D1548
ldr r2, _020DE0B8 ; =0x040001A0
_020DE024:
ldrh r0, [r2]
tst r0, #0x80
bne _020DE024
ldr r1, _020DE0BC ; =0x0000A042
ldr r0, _020DE0C0 ; =0x021E408C
strh r1, [r2]
bl sub_020DDD44
bl sub_020DDC90
ldr r0, _020DE0B0 ; =0x021E4088
mov r4, #0
str r6, [r0, #8]
sub sb, r5, #1
ldr r8, _020DE0C4 ; =0x0000A002
ldr r7, _020DE0B8 ; =0x040001A0
ldr r6, _020DE0C0 ; =0x021E408C
b _020DE078
_020DE064:
mov r0, r6
cmp r4, sb
streqh r8, [r7]
bl sub_020DDD44
add r4, r4, #1
_020DE078:
cmp r4, r5
blt _020DE064
ldr r1, _020DE0B8 ; =0x040001A0
_020DE084:
ldrh r0, [r1]
tst r0, #0x80
bne _020DE084
ldr r0, _020DE0B4 ; =_02110FBC
ldrh r0, [r0]
bl sub_020D1580
ldr r0, _020DE0B4 ; =_02110FBC
ldrh r0, [r0]
bl CARD_UnlockBackup
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020DE0AC: .word 0x021E4158
_020DE0B0: .word 0x021E4088
_020DE0B4: .word _02110FBC
_020DE0B8: .word 0x040001A0
_020DE0BC: .word 0x0000A042
_020DE0C0: .word 0x021E408C
_020DE0C4: .word 0x0000A002
arm_func_end sub_020DDFE0
arm_func_start sub_020DE0C8
sub_020DE0C8: ; 0x020DE0C8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r3, _020DE228 ; =0x021E409C
ldr r1, _020DE22C ; =0x021E4088
add r2, sp, #0
str r3, [r1, #8]
str r2, [r1, #0xc]
ldr r0, _020DE230 ; =_02110FBC
mov r1, #8
ldrh r0, [r0]
strb r1, [r3]
bl CARD_LockBackup
ldr r0, _020DE230 ; =_02110FBC
ldrh r0, [r0]
bl sub_020D1548
bl sub_020D34B0
mov fp, #0
mov r4, r0
mov r5, r1
mov r6, #0x40
mov r8, fp
mov r7, #0x3e8
mov sl, fp
mov sb, #0x3c
_020DE124:
bl sub_020D34B0
subs r0, r0, r4
umull lr, ip, r0, r6
mla ip, r0, fp, ip
sbc r1, r1, r5
mla ip, r1, r6, ip
umull r0, r1, lr, r7
mla r1, lr, r8, r1
mla r1, ip, r7, r1
ldr r2, _020DE234 ; =0x000082EA
mov r3, #0
bl _ll_udiv
cmp r1, sl
cmpeq r0, sb
blo _020DE124
ldr r2, _020DE238 ; =0x040001A0
_020DE164:
ldrh r0, [r2]
tst r0, #0x80
bne _020DE164
ldr r1, _020DE23C ; =0x0000A042
ldr r0, _020DE240 ; =0x021E408C
strh r1, [r2]
bl sub_020DDD44
strb r0, [sp]
bl sub_020D34B0
mov r4, r0
mov r5, r1
mov r6, #0x40
mov r7, #0x3e8
mov sb, #0
mov r8, #0x32
_020DE1A0:
bl sub_020D34B0
subs r0, r0, r4
mov r3, #0
sbc ip, r1, r5
mov r1, r3
umull fp, sl, r0, r6
mla sl, r0, r1, sl
mla sl, ip, r6, sl
mov ip, r3
umull r0, r1, fp, r7
mla r1, fp, ip, r1
mla r1, sl, r7, r1
ldr r2, _020DE234 ; =0x000082EA
bl _ll_udiv
cmp r1, sb
cmpeq r0, r8
blo _020DE1A0
ldr r2, _020DE244 ; =0x0000A002
ldr r1, _020DE238 ; =0x040001A0
ldr r0, _020DE240 ; =0x021E408C
strh r2, [r1]
bl sub_020DDDF0
ldr r1, _020DE238 ; =0x040001A0
_020DE1FC:
ldrh r0, [r1]
tst r0, #0x80
bne _020DE1FC
ldr r0, _020DE230 ; =_02110FBC
ldrh r0, [r0]
bl sub_020D1580
ldr r0, _020DE230 ; =_02110FBC
ldrh r0, [r0]
bl CARD_UnlockBackup
ldrb r0, [sp]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DE228: .word 0x021E409C
_020DE22C: .word 0x021E4088
_020DE230: .word _02110FBC
_020DE234: .word 0x000082EA
_020DE238: .word 0x040001A0
_020DE23C: .word 0x0000A042
_020DE240: .word 0x021E408C
_020DE244: .word 0x0000A002
arm_func_end sub_020DE0C8
arm_func_start sub_020DE248
sub_020DE248: ; 0x020DE248
stmdb sp!, {r3, lr}
mov r2, #0xf00
bl sub_020DE274
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r1, _020DE270 ; =0x021E4220
mov r2, #0
ldr r1, [r1, #4]
strh r2, [r1, #0x16]
ldmia sp!, {r3, pc}
.align 2, 0
_020DE270: .word 0x021E4220
arm_func_end sub_020DE248
arm_func_start sub_020DE274
sub_020DE274: ; 0x020DE274
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r6, r0
mov r4, r1
mov r7, r2
bl OS_DisableInterrupts
ldr r1, _020DE444 ; =0x021E4220
mov r5, r0
ldrh r1, [r1]
cmp r1, #0
beq _020DE2A8
bl OS_RestoreInterrupts
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DE2A8:
cmp r6, #0
bne _020DE2BC
bl OS_RestoreInterrupts
mov r0, #6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DE2BC:
cmp r4, #3
bls _020DE2D0
bl OS_RestoreInterrupts
mov r0, #6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DE2D0:
tst r6, #0x1f
beq _020DE2E4
bl OS_RestoreInterrupts
mov r0, #6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DE2E4:
bl sub_020D6548
mov r0, #0xa
mov r1, #1
bl sub_020D66A0
cmp r0, #0
bne _020DE30C
mov r0, r5
bl OS_RestoreInterrupts
mov r0, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020DE30C:
mov r0, r6
mov r1, r7
bl sub_020D285C
mov r0, r4
mov r1, r6
mov r3, r7
mov r2, #0
bl MI_DmaFill32
ldr r0, _020DE444 ; =0x021E4220
add r1, r6, #0x200
str r6, [r0, #4]
str r1, [r6]
ldr r2, [r0, #4]
ldr r1, [r2]
add r1, r1, #0x300
str r1, [r2, #4]
ldr r2, [r0, #4]
ldr r1, [r2, #4]
add r1, r1, #0x800
str r1, [r2, #0xc]
ldr r1, [r0, #4]
ldr r0, [r1, #0xc]
add r0, r0, #0x100
str r0, [r1, #0x10]
bl sub_020DEB08
ldr r1, _020DE444 ; =0x021E4220
mov r3, #0
ldr r0, [r1, #4]
mov r2, r3
strh r4, [r0, #0x14]
ldr r0, [r1, #4]
str r3, [r0, #0x14c]
ldr r0, [r1, #4]
add r0, r0, #0x100
strh r3, [r0, #0x50]
b _020DE3B8
_020DE39C:
ldr r0, [r1, #4]
add r0, r0, r3, lsl #2
str r2, [r0, #0xcc]
ldr r0, [r1, #4]
add r0, r0, r3, lsl #2
str r2, [r0, #0x10c]
add r3, r3, #1
_020DE3B8:
cmp r3, #0x10
blt _020DE39C
ldr r0, _020DE448 ; =0x021E4228
ldr r1, _020DE44C ; =0x021E4248
mov r2, #0xa
bl sub_020D2388
mov r6, #0
mov r4, #0x8000
ldr sl, _020DE450 ; =0x021E42C0
mov sb, #2
ldr r8, _020DE448 ; =0x021E4228
mov r7, #1
b _020DE414
_020DE3EC:
mov r2, r6, lsl #8
mov r1, sb
add r0, sl, r6, lsl #8
strh r4, [sl, r2]
bl sub_020D2878
mov r0, r8
mov r2, r7
add r1, sl, r6, lsl #8
bl sub_020D23B0
add r6, r6, #1
_020DE414:
cmp r6, #0xa
blt _020DE3EC
ldr r1, _020DE454 ; =sub_020DE75C
mov r0, #0xa
bl sub_020D6654
ldr r1, _020DE444 ; =0x021E4220
mov r2, #1
mov r0, r5
strh r2, [r1]
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020DE444: .word 0x021E4220
_020DE448: .word 0x021E4228
_020DE44C: .word 0x021E4248
_020DE450: .word 0x021E42C0
_020DE454: .word sub_020DE75C
arm_func_end sub_020DE274
arm_func_start sub_020DE458
sub_020DE458: ; 0x020DE458
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
mov r4, r0
bl sub_020DE664
cmp r0, #0
beq _020DE480
mov r0, r4
bl OS_RestoreInterrupts
mov r0, #3
ldmia sp!, {r4, pc}
_020DE480:
mov r0, #1
mov r1, #0
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
bl sub_020DEB08
mov r0, #0xa
mov r1, #0
bl sub_020D6654
ldr r1, _020DE4C4 ; =0x021E4220
mov r2, #0
str r2, [r1, #4]
mov r0, r4
strh r2, [r1]
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_020DE4C4: .word 0x021E4220
arm_func_end sub_020DE458
arm_func_start sub_020DE4C8
sub_020DE4C8: ; 0x020DE4C8
ldr r2, _020DE4DC ; =0x021E4220
ldr r2, [r2, #4]
add r0, r2, r0, lsl #2
str r1, [r0, #0x18]
bx lr
.align 2, 0
_020DE4DC: .word 0x021E4220
arm_func_end sub_020DE4C8
arm_func_start sub_020DE4E0
sub_020DE4E0: ; 0x020DE4E0
stmdb sp!, {r3, lr}
ldr r0, _020DE534 ; =0x021E4228
add r1, sp, #0
mov r2, #0
bl sub_020D2444
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
ldr r0, [sp]
mov r1, #2
bl sub_020D285C
ldr r1, [sp]
ldrh r0, [r1]
tst r0, #0x8000
movne r0, r1
ldmneia sp!, {r3, pc}
ldr r0, _020DE534 ; =0x021E4228
mov r2, #1
bl sub_020D24E8
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020DE534: .word 0x021E4228
arm_func_end sub_020DE4E0
arm_func_start sub_020DE538
sub_020DE538: ; 0x020DE538
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_020DE4E0
movs r4, r0
moveq r0, #8
ldmeqia sp!, {r3, r4, r5, lr}
addeq sp, sp, #0x10
bxeq lr
strh r5, [r4]
ldrh r5, [sp, #0x14]
add r0, sp, #0x14
bic r0, r0, #3
mov r3, #0
cmp r5, #0
add r2, r0, #4
ble _020DE598
_020DE57C:
add r2, r2, #4
ldr r1, [r2, #-4]
add r0, r4, r3, lsl #2
add r3, r3, #1
str r1, [r0, #4]
cmp r3, r5
blt _020DE57C
_020DE598:
mov r0, r4
mov r1, #0x100
bl sub_020D2878
mov r1, r4
mov r0, #0xa
mov r2, #0
bl sub_020D66C4
mov r5, r0
ldr r0, _020DE5E0 ; =0x021E4228
mov r1, r4
mov r2, #1
bl sub_020D23B0
cmp r5, #0
movlt r0, #8
movge r0, #2
ldmia sp!, {r3, r4, r5, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020DE5E0: .word 0x021E4228
arm_func_end sub_020DE538
arm_func_start sub_020DE5E4
sub_020DE5E4: ; 0x020DE5E4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r1
bl sub_020DE4E0
movs r5, r0
moveq r0, #8
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r5
mov r2, r4
bl MIi_CpuCopy8
mov r0, r5
mov r1, r4
bl sub_020D2878
mov r1, r5
mov r0, #0xa
mov r2, #0
bl sub_020D66C4
mov r4, r0
ldr r0, _020DE650 ; =0x021E4228
mov r1, r5
mov r2, #1
bl sub_020D23B0
cmp r4, #0
movlt r0, #8
movge r0, #2
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020DE650: .word 0x021E4228
arm_func_end sub_020DE5E4
arm_func_start sub_020DE654
sub_020DE654: ; 0x020DE654
ldr r0, _020DE660 ; =0x021E4220
ldr r0, [r0, #4]
bx lr
.align 2, 0
_020DE660: .word 0x021E4220
arm_func_end sub_020DE654
arm_func_start sub_020DE664
sub_020DE664: ; 0x020DE664
ldr r0, _020DE67C ; =0x021E4220
ldrh r0, [r0]
cmp r0, #0
movne r0, #0
moveq r0, #3
bx lr
.align 2, 0
_020DE67C: .word 0x021E4220
arm_func_end sub_020DE664
arm_func_start sub_020DE680
sub_020DE680: ; 0x020DE680
stmdb sp!, {r3, lr}
bl sub_020DE664
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _020DE6C4 ; =0x021E4220
mov r1, #2
ldr r0, [r0, #4]
ldr r0, [r0, #4]
bl sub_020D285C
ldr r0, _020DE6C4 ; =0x021E4220
ldr r0, [r0, #4]
ldr r0, [r0, #4]
ldrh r0, [r0]
cmp r0, #1
movls r0, #3
movhi r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020DE6C4: .word 0x021E4220
arm_func_end sub_020DE680
arm_func_start sub_020DE6C8
sub_020DE6C8: ; 0x020DE6C8
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
bl sub_020DE664
cmp r0, #0
ldmneia sp!, {r3, lr}
addne sp, sp, #0x10
bxne lr
ldr r0, _020DE758 ; =0x021E4220
mov r1, #2
ldr r0, [r0, #4]
ldr r0, [r0, #4]
bl sub_020D285C
ldr r0, _020DE758 ; =0x021E4220
ldr r3, [sp, #8]
ldr r0, [r0, #4]
add r1, sp, #8
ldr r2, [r0, #4]
bic r0, r1, #3
add ip, r0, #4
ldrh lr, [r2]
cmp r3, #0
mov r0, #3
ldmeqia sp!, {r3, lr}
addeq sp, sp, #0x10
bxeq lr
mov r1, #0
_020DE730:
add ip, ip, #4
ldr r2, [ip, #-4]
cmp r2, lr
moveq r0, r1
subs r3, r3, #1
str r3, [sp, #8]
bne _020DE730
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020DE758: .word 0x021E4220
arm_func_end sub_020DE6C8
arm_func_start sub_020DE75C
sub_020DE75C: ; 0x020DE75C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
ldr r0, _020DEAF4 ; =0x021E4220
cmp r2, #0
ldr r4, [r0, #4]
mov sl, r1
addne sp, sp, #8
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [r4, #0x10]
mov r1, #0x100
bl sub_020D285C
ldrh r0, [r4, #0x16]
cmp r0, #0
bne _020DE7A0
ldr r0, [r4, #4]
mov r1, #0x800
bl sub_020D285C
_020DE7A0:
ldr r0, [r4, #0x10]
cmp sl, r0
beq _020DE7B8
mov r0, sl
mov r1, #0x100
bl sub_020D285C
_020DE7B8:
ldrh r0, [sl]
cmp r0, #0x2c
blo _020DE870
cmp r0, #0x80
bne _020DE7F4
ldrh r0, [sl, #2]
cmp r0, #0x13
bne _020DE7DC
bl OS_Terminate
_020DE7DC:
ldr r1, [r4, #0xc8]
cmp r1, #0
beq _020DEAB4
mov r0, sl
blx r1
b _020DEAB4
_020DE7F4:
cmp r0, #0x82
bne _020DE848
ldrh r0, [sl, #6]
add r1, r4, r0, lsl #2
ldr r0, [r1, #0xcc]
cmp r0, #0
beq _020DEAB4
ldr r0, [r1, #0x10c]
str r0, [sl, #0x1c]
ldr r0, [r4, #0x14c]
strh r0, [sl, #0x22]
ldr r1, [r4, #4]
ldr r0, [sl, #8]
ldrh r1, [r1, #0x72]
bl sub_020D285C
ldrh r1, [sl, #6]
mov r0, sl
add r1, r4, r1, lsl #2
ldr r1, [r1, #0xcc]
blx r1
b _020DEAB4
_020DE848:
cmp r0, #0x81
bne _020DEAB4
mov r0, #0xf
strh r0, [sl]
ldr r1, [sl, #0x1c]
cmp r1, #0
beq _020DEAB4
mov r0, sl
blx r1
b _020DEAB4
_020DE870:
cmp r0, #0xe
bne _020DE8B0
ldrh r0, [sl, #4]
add r0, r0, #0xf5
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _020DE8B0
ldrh r0, [sl, #2]
cmp r0, #0
bne _020DE8B0
ldr r1, [r4, #4]
ldr r0, [sl, #8]
ldrh r1, [r1, #0x72]
bl sub_020D285C
_020DE8B0:
ldrh r1, [sl]
cmp r1, #2
ldreqh r0, [sl, #2]
cmpeq r0, #0
add r0, r4, r1, lsl #2
bne _020DE8EC
ldr r4, [r0, #0x18]
bl sub_020DE458
cmp r4, #0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r0, sl
blx r4
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020DE8EC:
ldr r1, [r0, #0x18]
cmp r1, #0
beq _020DE914
mov r0, sl
blx r1
ldr r0, _020DEAF4 ; =0x021E4220
ldrh r0, [r0]
cmp r0, #0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020DE914:
ldrh r0, [sl]
cmp r0, #8
cmpne r0, #0xc
bne _020DEAB4
cmp r0, #8
bne _020DE958
add r0, sl, #0xa
str r0, [sp]
ldrh r5, [sl, #8]
ldrh r6, [sl, #0x10]
ldrh r0, [sl, #0x12]
add fp, sl, #0x14
mov r7, #0
str r0, [sp, #4]
ldrh r8, [sl, #0x2c]
ldrh sb, [sl, #0x2e]
b _020DE988
_020DE958:
cmp r0, #0xc
bne _020DE988
ldrh r5, [sl, #8]
ldrh r7, [sl, #0xa]
ldrh r0, [sl, #0xc]
mov r6, #0
mov fp, r6
str r0, [sp, #4]
add r0, sl, #0x10
ldrh r8, [sl, #0x16]
ldrh sb, [sl, #0x18]
str r0, [sp]
_020DE988:
cmp r5, #7
cmpne r5, #9
cmpne r5, #0x1a
bne _020DEAB4
cmp r5, #7
ldreq r1, [r4, #0x14c]
mov r0, #1
orreq r0, r1, r0, lsl r6
mvnne r0, r0, lsl r6
ldrne r1, [r4, #0x14c]
add r3, r4, #0x100
andne r0, r1, r0
str r0, [r4, #0x14c]
ldr r0, _020DEAF8 ; =0x021E4270
mov r1, #0
mov r2, #0x44
strh r7, [r3, #0x50]
bl MI_CpuFill8
ldr ip, _020DEAF4 ; =0x021E4220
mov r1, #0x82
strh r1, [ip, #0x50]
mov r1, #0
strh r1, [ip, #0x52]
strh r5, [ip, #0x54]
str r1, [ip, #0x58]
str r1, [ip, #0x5c]
strh r1, [ip, #0x60]
strh r6, [ip, #0x62]
strh r7, [ip, #0x70]
ldr r2, [r4, #0x14c]
ldr r1, _020DEAFC ; =0x0000FFFF
strh r2, [ip, #0x72]
strh r1, [ip, #0x6a]
ldr r3, [sp, #4]
ldr r0, [sp]
ldr r1, _020DEB00 ; =0x021E4284
mov r2, #6
strh r3, [ip, #0x8c]
bl MIi_CpuCopy8
cmp fp, #0
mov r2, #0x18
beq _020DEA40
ldr r1, _020DEB04 ; =0x021E4294
mov r0, fp
bl MIi_CpuCopy16
b _020DEA4C
_020DEA40:
ldr r1, _020DEB04 ; =0x021E4294
mov r0, #0
bl MIi_CpuClear16
_020DEA4C:
cmp r7, #0
moveq r1, r8
movne r1, sb
cmp r7, #0
ldr r0, _020DEAF4 ; =0x021E4220
ldr r7, _020DEAF4 ; =0x021E4220
strh r1, [r0, #0x90]
movne sb, r8
ldr r5, _020DEAF8 ; =0x021E4270
mov r6, #0
strh sb, [r7, #0x92]
_020DEA78:
strh r6, [r7, #0x56]
add r2, r4, r6, lsl #2
ldr r0, [r2, #0xcc]
cmp r0, #0
beq _020DEAA0
ldr r1, [r2, #0x10c]
mov r0, r5
str r1, [r7, #0x6c]
ldr r1, [r2, #0xcc]
blx r1
_020DEAA0:
add r0, r6, #1
mov r0, r0, lsl #0x10
mov r6, r0, lsr #0x10
cmp r6, #0x10
blo _020DEA78
_020DEAB4:
ldr r0, [r4, #0x10]
mov r1, #0x100
bl sub_020D285C
bl sub_020DEB08
ldr r0, [r4, #0x10]
cmp sl, r0
addeq sp, sp, #8
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldrh r2, [sl]
mov r0, sl
mov r1, #0x100
orr r2, r2, #0x8000
strh r2, [sl]
bl sub_020D2878
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020DEAF4: .word 0x021E4220
_020DEAF8: .word 0x021E4270
_020DEAFC: .word 0x0000FFFF
_020DEB00: .word 0x021E4284
_020DEB04: .word 0x021E4294
arm_func_end sub_020DE75C
arm_func_start sub_020DEB08
sub_020DEB08: ; 0x020DEB08
ldr r1, _020DEB20 ; =0x027FFF96
ldrh r0, [r1]
tst r0, #1
bicne r0, r0, #1
strneh r0, [r1]
bx lr
.align 2, 0
_020DEB20: .word 0x027FFF96
arm_func_end sub_020DEB08
arm_func_start sub_020DEB24
sub_020DEB24: ; 0x020DEB24
stmdb sp!, {r3, lr}
bl sub_020DE664
cmp r0, #0
movne r0, #0
ldreq r0, _020DEB44 ; =0x021E4220
ldreq r0, [r0, #4]
ldreq r0, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020DEB44: .word 0x021E4220
arm_func_end sub_020DEB24
arm_func_start sub_020DEB48
sub_020DEB48: ; 0x020DEB48
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020DEB74 ; =0x021E4220
ldr r1, [r1, #4]
cmp r1, #0
addne r1, r1, #0x100
ldrneh r4, [r1, #0x50]
moveq r4, #0
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020DEB74: .word 0x021E4220
arm_func_end sub_020DEB48
arm_func_start sub_020DEB78
sub_020DEB78: ; 0x020DEB78
stmdb sp!, {r4, lr}
bl OS_DisableInterrupts
ldr r1, _020DEBA4 ; =0x021E4220
ldr r1, [r1, #4]
cmp r1, #0
ldrne r4, [r1, #0x14c]
moveq r4, #0
bl OS_RestoreInterrupts
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_020DEBA4: .word 0x021E4220
arm_func_end sub_020DEB78
arm_func_start sub_020DEBA8
sub_020DEBA8: ; 0x020DEBA8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
bl OS_DisableInterrupts
mov r5, r0
bl sub_020DE664
movs r4, r0
beq _020DEBD4
mov r0, r5
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
_020DEBD4:
bl sub_020DE654
str r6, [r0, #0xc8]
mov r0, r5
bl OS_RestoreInterrupts
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020DEBA8
arm_func_start sub_020DEBEC
sub_020DEBEC: ; 0x020DEBEC
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x44
movs r5, r1
mov r6, r0
mov r4, r2
beq _020DEC54
add r0, sp, #0
mov r1, #0
mov r2, #0x44
bl MI_CpuFill8
mov r3, #0
ldr r1, _020DECC0 ; =0x0000FFFF
mov r7, #0x82
mov r2, #0x19
add r0, sp, #0x14
strh r7, [sp]
strh r3, [sp, #2]
strh r2, [sp, #4]
strh r6, [sp, #6]
str r3, [sp, #8]
str r3, [sp, #0xc]
strh r3, [sp, #0x10]
strh r1, [sp, #0x1a]
str r4, [sp, #0x1c]
strh r3, [sp, #0x12]
bl OS_GetMacAddress
_020DEC54:
bl OS_DisableInterrupts
mov r8, r0
bl sub_020DE664
movs r7, r0
beq _020DEC7C
mov r0, r8
bl OS_RestoreInterrupts
add sp, sp, #0x44
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
_020DEC7C:
bl sub_020DE654
add r0, r0, r6, lsl #2
str r5, [r0, #0xcc]
str r4, [r0, #0x10c]
cmp r5, #0
beq _020DECAC
bl sub_020DEB78
strh r0, [sp, #0x22]
bl sub_020DEB48
strh r0, [sp, #0x20]
add r0, sp, #0
blx r5
_020DECAC:
mov r0, r8
bl OS_RestoreInterrupts
mov r0, #0
add sp, sp, #0x44
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020DECC0: .word 0x0000FFFF
arm_func_end sub_020DEBEC
arm_func_start sub_020DECC4
sub_020DECC4: ; 0x020DECC4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_020DE654
mov r4, r0
bl sub_020DE664
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
cmp r5, #0
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, [r4, #4]
mov r1, #0x7d0
bl sub_020D285C
ldr r0, [r4, #4]
mov r1, r5
mov r2, #0x7d0
bl MIi_CpuCopyFast
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DECC4
arm_func_start sub_020DED10
sub_020DED10: ; 0x020DED10
stmdb sp!, {r4, lr}
bl sub_020DE654
mov r4, r0
mov r0, #2
mov r1, #7
mov r2, #8
bl sub_020DE6C8
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, pc}
ldr r0, [r4, #4]
mov r1, #4
add r0, r0, #0xc
bl sub_020D285C
ldr r1, [r4, #4]
ldr r0, [r1, #0xc]
cmp r0, #1
moveq r0, #0
ldmeqia sp!, {r4, pc}
add r0, r1, #0x3c
mov r1, #4
bl sub_020D285C
ldr r0, [r4, #4]
ldrh r0, [r0, #0x3c]
add r0, r0, #0x1f
bic r0, r0, #0x1f
ldmia sp!, {r4, pc}
arm_func_end sub_020DED10
arm_func_start sub_020DED7C
sub_020DED7C: ; 0x020DED7C
stmdb sp!, {r3, r4, r5, lr}
bl sub_020DE654
mov r4, r0
mov r0, #2
mov r1, #7
mov r2, #8
bl sub_020DE6C8
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, [r4, #4]
mov r1, #4
add r0, r0, #0xc
bl sub_020D285C
ldr r1, [r4, #4]
ldr r0, [r1, #0xc]
cmp r0, #1
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
add r0, r1, #0x188
mov r1, #2
bl sub_020D285C
ldr r1, [r4, #4]
add r0, r1, #0x100
ldrh r0, [r0, #0x88]
cmp r0, #0
moveq r5, #1
add r0, r1, #0x3e
mov r1, #2
movne r5, #0
bl sub_020D285C
ldr r0, [r4, #4]
cmp r5, #1
ldrh r5, [r0, #0x3e]
addne r0, r5, #0x51
bicne r0, r0, #0x1f
movne r0, r0, lsl #1
ldmneia sp!, {r3, r4, r5, pc}
add r0, r0, #0xf8
mov r1, #2
bl sub_020D285C
ldr r0, [r4, #4]
add r1, r5, #0xc
ldrh r0, [r0, #0xf8]
mul r0, r1, r0
add r0, r0, #0x29
bic r0, r0, #0x1f
mov r0, r0, lsl #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DED7C
arm_func_start sub_020DEE40
sub_020DEE40: ; 0x020DEE40
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x3c
mov r5, r0
mov r4, r1
bl sub_020DE654
mov r6, r0
bl sub_020DE664
cmp r0, #0
addne sp, sp, #0x3c
movne r0, #0
ldmneia sp!, {r3, r4, r5, r6, pc}
cmp r4, #1
blo _020DEE7C
cmp r4, #0xf
bls _020DEE88
_020DEE7C:
add sp, sp, #0x3c
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, pc}
_020DEE88:
ldr r0, [r6, #4]
mov r1, #2
add r0, r0, #0x82
add r0, r0, #0x100
bl sub_020D285C
ldr r0, [r6, #4]
mov r1, #1
add r0, r0, #0x100
ldrh r0, [r0, #0x82]
tst r0, r1, lsl r4
addeq sp, sp, #0x3c
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, pc}
ldrh r0, [r5, #4]
cmp r0, #0
addeq sp, sp, #0x3c
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, pc}
add r0, r5, #0xa
str r0, [sp]
mov r3, #0
add r2, sp, #0
_020DEEE0:
ldr r0, [r2, r3, lsl #2]
ldrh r1, [r0, #4]
cmp r4, r1
addeq sp, sp, #0x3c
ldmeqia sp!, {r3, r4, r5, r6, pc}
add r3, r3, #1
add r0, r2, r3, lsl #2
ldrh r1, [r5, #6]
ldr r0, [r0, #-4]
add r0, r1, r0
str r0, [r2, r3, lsl #2]
ldrh r0, [r5, #4]
cmp r3, r0
blt _020DEEE0
mov r0, #0
add sp, sp, #0x3c
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end sub_020DEE40
arm_func_start sub_020DEF24
sub_020DEF24: ; 0x020DEF24
stmdb sp!, {r3, lr}
bl sub_020DE664
cmp r0, #0
movne r0, #0x8000
ldreq r0, _020DEF40 ; =0x027FFCFA
ldreqh r0, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020DEF40: .word 0x027FFCFA
arm_func_end sub_020DEF24
arm_func_start sub_020DEF44
sub_020DEF44: ; 0x020DEF44
stmdb sp!, {r4, lr}
bl sub_020DE654
mov r4, r0
bl sub_020DE664
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, pc}
ldr r0, [r4, #4]
mov r1, #2
bl sub_020D285C
ldr r1, [r4, #4]
ldrh r0, [r1]
cmp r0, #9
beq _020DEF8C
cmp r0, #0xa
cmpne r0, #0xb
beq _020DEFB4
b _020DEFCC
_020DEF8C:
add r0, r1, #0x82
add r0, r0, #0x100
mov r1, #2
bl sub_020D285C
ldr r1, [r4, #4]
add r0, r1, #0x100
ldrh r0, [r0, #0x82]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
_020DEFB4:
add r0, r1, #0xbc
mov r1, #2
bl sub_020D285C
ldr r0, [r4, #4]
ldrh r0, [r0, #0xbc]
ldmia sp!, {r4, pc}
_020DEFCC:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_020DEF44
arm_func_start sub_020DEFD4
sub_020DEFD4: ; 0x020DEFD4
stmdb sp!, {r3, lr}
sub sp, sp, #8
add r0, sp, #0
bl OS_GetMacAddress
mov r2, #0
add r3, sp, #0
mov r1, r2
_020DEFF0:
ldrb r0, [r3], #1
add r2, r2, #1
cmp r2, #6
add r0, r1, r0
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
blt _020DEFF0
ldr r0, _020DF05C ; =0x027FFC3C
ldr ip, _020DF060 ; =0x66666667
ldr r0, [r0]
mov r3, #0x14
add r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
rsb r0, r0, r0, lsl #3
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r1, r2, lsr #0x1f
smull r2, lr, ip, r2
add lr, r1, lr, asr #3
smull r1, r2, r3, lr
rsb lr, r1, r0, lsr #16
add r0, lr, #0xc8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020DF05C: .word 0x027FFC3C
_020DF060: .word 0x66666667
arm_func_end sub_020DEFD4
arm_func_start sub_020DF064
sub_020DF064: ; 0x020DF064
stmdb sp!, {r3, lr}
sub sp, sp, #8
add r0, sp, #0
bl OS_GetMacAddress
mov r1, #0
add r3, sp, #0
mov r2, r1
_020DF080:
ldrb r0, [r3], #1
add r1, r1, #1
cmp r1, #6
add r0, r2, r0
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
blt _020DF080
ldr r0, _020DF0F0 ; =0x027FFC3C
mov r1, #0xd
ldr r0, [r0]
ldr r3, _020DF0F4 ; =0x66666667
add r0, r2, r0
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mul r0, r2, r1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r1, r2, lsr #0x1f
smull r2, ip, r3, r2
add ip, r1, ip, asr #2
mov r3, #0xa
smull r1, r2, r3, ip
rsb ip, r1, r0, lsr #16
add r0, ip, #0x1e
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020DF0F0: .word 0x027FFC3C
_020DF0F4: .word 0x66666667
arm_func_end sub_020DF064
arm_func_start sub_020DF0F8
sub_020DF0F8: ; 0x020DF0F8
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x84
ldrh r2, [r1, #0x3c]
mov lr, r0
cmp r2, #0
beq _020DF140
mov r0, #0
add r5, sp, #0
strb r0, [sp]
mov r4, #8
_020DF120:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _020DF120
ldr r0, [r5]
add sp, sp, #0x84
str r0, [lr]
ldmia sp!, {r3, r4, r5, r6, pc}
_020DF140:
ldrh r0, [r1, #0x3e]
strb r0, [sp]
ands r0, r0, #0xff
bne _020DF178
add r5, sp, #0
mov r4, #8
_020DF158:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _020DF158
ldr r0, [r5]
add sp, sp, #0x84
str r0, [lr]
ldmia sp!, {r3, r4, r5, r6, pc}
_020DF178:
cmp r0, #0x10
movhi r0, #0x10
strhib r0, [sp]
ldrh r2, [r1]
ldrb r0, [sp]
mov r3, #0
mov r2, r2, lsl #1
sub r4, r2, #0x40
cmp r0, #0
add r0, r1, #0x40
mov r2, r3
and r1, r4, #0xff
ble _020DF228
add ip, sp, #0
_020DF1B0:
ldrb r5, [r0]
add r6, ip, r2, lsl #3
add r4, r0, #2
strb r5, [r6, #4]
ldrb r5, [r0, #1]
strb r5, [r6, #5]
str r4, [r6, #8]
ldrb r4, [r6, #5]
add r4, r4, #2
and r5, r4, #0xff
add r3, r3, r5
and r3, r3, #0xff
cmp r3, r1
bls _020DF214
mov r0, #0
strb r0, [sp]
mov r4, #8
_020DF1F4:
ldmia ip!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _020DF1F4
ldr r0, [ip]
add sp, sp, #0x84
str r0, [lr]
ldmia sp!, {r3, r4, r5, r6, pc}
_020DF214:
ldrb r4, [sp]
add r2, r2, #1
add r0, r0, r5
cmp r2, r4
blt _020DF1B0
_020DF228:
add r4, sp, #0
mov ip, #8
_020DF230:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _020DF230
ldr r0, [r4]
str r0, [lr]
add sp, sp, #0x84
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end sub_020DF0F8
arm_func_start sub_020DF250
sub_020DF250: ; 0x020DF250
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r0, _020DF2C0 ; =_02110FC0
ldr r0, [r0]
cmp r0, #0x10000
bne _020DF298
bl RTC_Init
add r0, sp, #0
bl sub_020DBB48
cmp r0, #0
bne _020DF298
ldr r2, [sp, #8]
ldr r0, [sp, #4]
ldr r1, _020DF2C0 ; =_02110FC0
add r0, r2, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
str r0, [r1]
_020DF298:
ldr r1, _020DF2C0 ; =_02110FC0
ldr r0, [r1]
add r0, r0, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, r2, lsl #0x10
str r2, [r1]
mov r0, r0, lsr #0x10
add sp, sp, #0xc
ldmia sp!, {pc}
.align 2, 0
_020DF2C0: .word _02110FC0
arm_func_end sub_020DF250
arm_func_start sub_020DF2C4
sub_020DF2C4: ; 0x020DF2C4
ldr ip, _020DF2D0 ; =sub_020DF2D4
mov r1, #0
bx ip
.align 2, 0
_020DF2D0: .word sub_020DF2D4
arm_func_end sub_020DF2C4
arm_func_start sub_020DF2D4
sub_020DF2D4: ; 0x020DF2D4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r1
mov r0, #1
mov r1, #0
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r3, r4, r5, pc}
mov r1, r5
mov r0, #3
bl sub_020DE4C8
bl sub_020DE654
mov r3, r0
ldr r1, [r3, #0x10]
mov r0, #3
stmia sp, {r1, r4}
mov r1, #4
ldmia r3, {r2, r3}
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DF2D4
arm_func_start sub_020DF338
sub_020DF338: ; 0x020DF338
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
mov r1, r0
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #4
bl sub_020DE4C8
mov r0, #4
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF338
arm_func_start sub_020DF378
sub_020DF378: ; 0x020DF378
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
mov r1, r0
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #5
bl sub_020DE4C8
mov r0, #5
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF378
arm_func_start sub_020DF3B8
sub_020DF3B8: ; 0x020DF3B8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
mov r1, #2
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #6
bl sub_020DE4C8
mov r0, #6
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF3B8
arm_func_start sub_020DF3F8
sub_020DF3F8: ; 0x020DF3F8
ldr ip, _020DF404 ; =sub_020DF420
mov r3, #0
bx ip
.align 2, 0
_020DF404: .word sub_020DF420
arm_func_end sub_020DF3F8
arm_func_start sub_020DF408
sub_020DF408: ; 0x020DF408
ldr ip, _020DF41C ; =sub_020DF420
cmp r3, #0
mov r3, #1
orreq r3, r3, #2
bx ip
.align 2, 0
_020DF41C: .word sub_020DF420
arm_func_end sub_020DF408
arm_func_start sub_020DF420
sub_020DF420: ; 0x020DF420
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r1
mov r1, r2
mov r4, r3
bl sub_020DE248
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r3, r4, r5, pc}
mov r1, r5
mov r0, #0
bl sub_020DE4C8
bl sub_020DE654
mov r3, r0
ldr r1, [r3, #0x10]
mov r0, #0
stmia sp, {r1, r4}
mov r1, #4
ldmia r3, {r2, r3}
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DF420
arm_func_start sub_020DF480
sub_020DF480: ; 0x020DF480
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_020DE680
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #1
bl sub_020DE4C8
mov r0, #1
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF480
arm_func_start sub_020DF4B8
sub_020DF4B8: ; 0x020DF4B8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
mov r1, #2
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #2
bl sub_020DE4C8
mov r0, #2
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF4B8
arm_func_start sub_020DF4F8
sub_020DF4F8: ; 0x020DF4F8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, #1
mov r1, #2
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
cmp r4, #0
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, pc}
ldrh r0, [r4, #4]
cmp r0, #0
beq _020DF540
ldr r0, [r4]
cmp r0, #0
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, pc}
_020DF540:
ldrh r1, [r4, #0x14]
ldrh r0, [r4, #0x34]
cmp r1, #0
movne r2, #0x2a
moveq r2, #0
add r0, r0, r2
cmp r0, #0x200
bgt _020DF57C
ldrh r0, [r4, #0x36]
cmp r1, #0
movne r1, #6
moveq r1, #0
add r0, r0, r1
cmp r0, #0x200
ble _020DF584
_020DF57C:
mov r0, #6
ldmia sp!, {r3, r4, r5, pc}
_020DF584:
mov r0, r4
bl sub_020DF5D4
mov r1, r5
mov r0, #7
bl sub_020DE4C8
mov r0, r4
mov r1, #0x40
bl sub_020D2878
ldrh r1, [r4, #4]
cmp r1, #0
beq _020DF5B8
ldr r0, [r4]
bl sub_020D2878
_020DF5B8:
mov r2, r4
mov r0, #7
mov r1, #1
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DF4F8
arm_func_start sub_020DF5D4
sub_020DF5D4: ; 0x020DF5D4
ldrh r1, [r0, #4]
cmp r1, #0x70
movhi r0, #0
bxhi lr
ldrh r1, [r0, #0x18]
cmp r1, #0xa
blo _020DF5F8
cmp r1, #0x3e8
bls _020DF600
_020DF5F8:
mov r0, #0
bx lr
_020DF600:
ldrh r0, [r0, #0x32]
cmp r0, #1
blo _020DF614
cmp r0, #0xe
bls _020DF61C
_020DF614:
mov r0, #0
bx lr
_020DF61C:
mov r0, #1
bx lr
arm_func_end sub_020DF5D4
arm_func_start sub_020DF624
sub_020DF624: ; 0x020DF624
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, #1
mov r1, #2
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
bl sub_020DE654
add r1, r0, #0x100
mov r2, #0
strh r2, [r1, #0x50]
str r2, [r0, #0x14c]
mov r1, r5
mov r0, #8
bl sub_020DE4C8
mov r2, r4
mov r0, #8
mov r1, #1
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DF624
arm_func_start sub_020DF680
sub_020DF680: ; 0x020DF680
ldr ip, _020DF68C ; =sub_020DF624
mov r1, #1
bx ip
.align 2, 0
_020DF68C: .word sub_020DF624
arm_func_end sub_020DF680
arm_func_start sub_020DF690
sub_020DF690: ; 0x020DF690
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
mov r1, #7
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #9
bl sub_020DE4C8
mov r0, #9
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF690
arm_func_start sub_020DF6D0
sub_020DF6D0: ; 0x020DF6D0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r0
mov r0, #3
mov r4, r1
mov r2, r0
mov r1, #2
mov r3, #5
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r3, r4, r5, pc}
cmp r4, #0
addeq sp, sp, #0x10
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, [r4]
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, pc}
ldrh r0, [r4, #4]
cmp r0, #1
blo _020DF738
cmp r0, #0xe
bls _020DF744
_020DF738:
add sp, sp, #0x10
mov r0, #6
ldmia sp!, {r3, r4, r5, pc}
_020DF744:
mov r1, r5
mov r0, #0xa
bl sub_020DE4C8
mov r0, #0xa
strh r0, [sp]
ldrh r2, [r4, #4]
add r0, sp, #0
mov r1, #0x10
strh r2, [sp, #2]
ldr r2, [r4]
str r2, [sp, #4]
ldrh r2, [r4, #6]
strh r2, [sp, #8]
ldrb r2, [r4, #8]
strb r2, [sp, #0xa]
ldrb r2, [r4, #9]
strb r2, [sp, #0xb]
ldrb r2, [r4, #0xa]
strb r2, [sp, #0xc]
ldrb r2, [r4, #0xb]
strb r2, [sp, #0xd]
ldrb r2, [r4, #0xc]
strb r2, [sp, #0xe]
ldrb r2, [r4, #0xd]
strb r2, [sp, #0xf]
bl sub_020DE5E4
cmp r0, #0
moveq r0, #2
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DF6D0
arm_func_start sub_020DF7BC
sub_020DF7BC: ; 0x020DF7BC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x3c
mov r5, r0
mov r0, #3
mov r4, r1
mov r2, r0
mov r1, #2
mov r3, #5
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0x3c
ldmneia sp!, {r4, r5, pc}
cmp r4, #0
addeq sp, sp, #0x3c
moveq r0, #6
ldmeqia sp!, {r4, r5, pc}
ldr r0, [r4]
cmp r0, #0
addeq sp, sp, #0x3c
moveq r0, #6
ldmeqia sp!, {r4, r5, pc}
ldrh r0, [r4, #4]
cmp r0, #0x400
addhi sp, sp, #0x3c
movhi r0, #6
ldmhiia sp!, {r4, r5, pc}
ldrh r0, [r4, #0x12]
cmp r0, #0x20
addhi sp, sp, #0x3c
movhi r0, #6
ldmhiia sp!, {r4, r5, pc}
ldrh r0, [r4, #0x10]
cmp r0, #0
cmpne r0, #1
cmpne r0, #2
cmpne r0, #3
addne sp, sp, #0x3c
movne r0, #6
ldmneia sp!, {r4, r5, pc}
add r0, r0, #0xfe
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _020DF884
ldrh r0, [r4, #0x34]
cmp r0, #0x20
addhi sp, sp, #0x3c
movhi r0, #6
ldmhiia sp!, {r4, r5, pc}
_020DF884:
mov r1, r5
mov r0, #0x26
bl sub_020DE4C8
mov r0, #0x26
strh r0, [sp]
ldrh r2, [r4, #6]
add r1, sp, #0xc
add r0, r4, #0xa
strh r2, [sp, #2]
ldr r3, [r4]
mov r2, #6
str r3, [sp, #4]
ldrh r3, [r4, #4]
strh r3, [sp, #8]
ldrh r3, [r4, #8]
strh r3, [sp, #0xa]
bl MIi_CpuCopy8
ldrh r2, [r4, #0x10]
add r1, sp, #0x16
add r0, r4, #0x14
strh r2, [sp, #0x12]
ldrh r3, [r4, #0x34]
mov r2, #0x20
strh r3, [sp, #0x36]
ldrh r3, [r4, #0x12]
strh r3, [sp, #0x14]
bl MIi_CpuCopy8
add r0, sp, #0
mov r1, #0x3c
bl sub_020DE5E4
cmp r0, #0
moveq r0, #2
add sp, sp, #0x3c
ldmia sp!, {r4, r5, pc}
arm_func_end sub_020DF7BC
arm_func_start sub_020DF90C
sub_020DF90C: ; 0x020DF90C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #1
mov r1, #5
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r4, pc}
mov r1, r4
mov r0, #0xb
bl sub_020DE4C8
mov r0, #0xb
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, pc}
arm_func_end sub_020DF90C
arm_func_start sub_020DF94C
sub_020DF94C: ; 0x020DF94C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x28
mov r7, r0
mov r6, r1
mov r0, #1
mov r1, #2
mov r5, r2
mov r4, r3
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0x28
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
cmp r6, #0
addeq sp, sp, #0x28
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrh r1, [r6]
mov r0, r6
mov r1, r1, lsl #1
bl sub_020D2878
bl sub_020DE654
add r1, r0, #0x100
mov r2, #0
strh r2, [r1, #0x50]
str r2, [r0, #0x14c]
mov r1, r7
mov r0, #0xc
bl sub_020DE4C8
mov r0, #0xc
strh r0, [sp]
str r6, [sp, #4]
cmp r5, #0
mov r2, #0x18
beq _020DF9E4
add r1, sp, #8
mov r0, r5
bl MIi_CpuCopy8
b _020DF9F0
_020DF9E4:
add r0, sp, #8
mov r1, #0
bl MI_CpuFill8
_020DF9F0:
ldrh r2, [sp, #0x40]
add r0, sp, #0
mov r1, #0x28
str r4, [sp, #0x20]
strh r2, [sp, #0x26]
bl sub_020DE5E4
cmp r0, #0
moveq r0, #2
add sp, sp, #0x28
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020DF94C
arm_func_start sub_020DFA18
sub_020DFA18: ; 0x020DFA18
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r1
bl sub_020DE654
mov r1, #0xa
mov r6, r0
str r1, [sp]
mov ip, #0xb
mov r0, #5
mov r1, #7
mov r2, #9
mov r3, #8
str ip, [sp, #4]
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, r5, r6, pc}
ldr r1, [r6, #4]
ldrh r0, [r1]
cmp r0, #7
cmpne r0, #9
bne _020DFAC4
cmp r4, #1
blo _020DFA84
cmp r4, #0xf
bls _020DFA90
_020DFA84:
add sp, sp, #8
mov r0, #6
ldmia sp!, {r4, r5, r6, pc}
_020DFA90:
add r0, r1, #0x82
add r0, r0, #0x100
mov r1, #2
bl sub_020D285C
ldr r0, [r6, #4]
mov r1, #1
add r0, r0, #0x100
ldrh r0, [r0, #0x82]
tst r0, r1, lsl r4
bne _020DFAD4
add sp, sp, #8
mov r0, #7
ldmia sp!, {r4, r5, r6, pc}
_020DFAC4:
cmp r4, #0
addne sp, sp, #8
movne r0, #6
ldmneia sp!, {r4, r5, r6, pc}
_020DFAD4:
mov r1, r5
mov r0, #0xd
bl sub_020DE4C8
mov r1, #1
mov r2, r1, lsl r4
mov r0, #0xd
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020DFA18
arm_func_start sub_020DFB00
sub_020DFB00: ; 0x020DFB00
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x40
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
bl sub_020DE654
ldr r4, [r0, #4]
mov r0, #2
mov r1, #7
mov r2, #8
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0x40
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r0, r4, #0x188
mov r1, #2
bl sub_020D285C
add r0, r4, #0xc6
mov r1, #2
bl sub_020D285C
add r0, r4, #0x100
ldrh r0, [r0, #0x88]
cmp r0, #0
ldrneh r0, [r4, #0xc6]
cmpne r0, #1
addne sp, sp, #0x40
movne r0, #3
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r0, r4, #0xc
mov r1, #4
bl sub_020D285C
ldr r0, [r4, #0xc]
cmp r0, #1
addeq sp, sp, #0x40
moveq r0, #3
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
tst r6, #0x3f
addne sp, sp, #0x40
movne r0, #6
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldrh sb, [sp, #0x60]
tst sb, #0x1f
addne sp, sp, #0x40
movne r0, #6
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r0, r4, #0x9c
mov r1, #2
bl sub_020D285C
ldrh r0, [r4, #0x9c]
cmp r0, #0
bne _020DFBF8
bl sub_020DED7C
cmp r6, r0
addlt sp, sp, #0x40
movlt r0, #6
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
bl sub_020DED10
cmp sb, r0
addlt sp, sp, #0x40
movlt r0, #6
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_020DFBF8:
mov r1, r8
mov r0, #0xe
bl sub_020DE4C8
add r1, sp, #0
mov r0, #0
mov r2, #0x40
bl MIi_CpuClear32
mov r4, r6, lsr #1
ldrh r3, [sp, #0x60]
mov r6, #0xe
add r1, sp, #0x14
mov r0, #0
mov r2, #0x1c
strh r6, [sp]
str r7, [sp, #4]
str r4, [sp, #8]
str r5, [sp, #0xc]
str r3, [sp, #0x10]
bl MIi_CpuClear32
ldr r0, [sp, #0x64]
add r1, sp, #0x30
mov r2, #0x10
bl MIi_CpuCopy32
add r0, sp, #0
mov r1, #0x40
bl sub_020DE5E4
cmp r0, #0
moveq r0, #2
add sp, sp, #0x40
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_020DFB00
arm_func_start sub_020DFC70
sub_020DFC70: ; 0x020DFC70
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
mov r7, r1
mov r8, r0
mov r6, r2
add r1, sp, #8
mov r0, #0
mov r2, #0x10
mov r5, r3
ldr r4, [sp, #0x34]
bl MIi_CpuClear32
ldr r1, [sp, #0x48]
ldrh ip, [sp, #0x38]
ldr r0, [sp, #0x44]
ldr lr, _020DFD10 ; =0x00001E03
ldr r3, [sp, #0x3c]
ldr r2, [sp, #0x40]
strb r1, [sp, #0x16]
cmp r0, #0
cmpne r4, #0
strb r3, [sp, #0x14]
strb r2, [sp, #0x15]
ldrh r1, [sp, #0x30]
str lr, [sp, #8]
orrne r0, lr, #4
strne r0, [sp, #8]
strh ip, [sp, #0x12]
strh r4, [sp, #0xc]
strh r4, [sp, #0xe]
strneh r4, [sp, #0x10]
str r1, [sp]
add r4, sp, #8
mov r0, r8
mov r1, r7
mov r2, r6
mov r3, r5
str r4, [sp, #4]
bl sub_020DFB00
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020DFD10: .word 0x00001E03
arm_func_end sub_020DFC70
arm_func_start sub_020DFD14
sub_020DFD14: ; 0x020DFD14
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x18
mov r6, r1
mov r7, r0
mov r5, r2
add r1, sp, #8
mov r0, #0
mov r2, #0x10
mov r4, r3
bl MIi_CpuClear32
ldrh ip, [sp, #0x34]
mov r0, #3
str r0, [sp, #8]
ldrh lr, [sp, #0x30]
strh ip, [sp, #0xc]
strh ip, [sp, #0xe]
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, r4
add ip, sp, #8
str lr, [sp]
str ip, [sp, #4]
bl sub_020DFB00
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020DFD14
arm_func_start sub_020DFD7C
sub_020DFD7C: ; 0x020DFD7C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov sb, r0
mov r8, r1
mov r7, r2
mov r6, r3
mov r4, #1
bl sub_020DE654
ldr r5, [r0, #4]
mov r0, #2
mov r1, #9
mov r2, #0xa
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
add r0, r5, #0x188
mov r1, #2
bl sub_020D285C
add r0, r5, #0x100
ldrh r0, [r0, #0x88]
cmp r0, #0
bne _020DFDFC
add r0, r5, #0x82
add r0, r0, #0x100
mov r1, #2
bl sub_020D285C
add r2, r5, #0x100
add r0, r5, #0x86
mov r1, #2
ldrh r4, [r2, #0x82]
bl sub_020D285C
_020DFDFC:
cmp r7, #0
addeq sp, sp, #0x14
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
cmp r4, #0
addeq sp, sp, #0x14
moveq r0, #7
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
add r0, r5, #0x7c
mov r1, #2
bl sub_020D285C
ldr r0, [r5, #0x7c]
cmp r7, r0
addeq sp, sp, #0x14
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
cmp r6, #0x200
addhi sp, sp, #0x14
movhi r0, #6
ldmhiia sp!, {r4, r5, r6, r7, r8, sb, pc}
cmp r6, #0
addeq sp, sp, #0x14
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
mov r0, r7
mov r1, r6
bl sub_020D2878
ldrh r2, [sp, #0x30]
ldrh r1, [sp, #0x34]
ldrh r0, [sp, #0x38]
str r2, [sp]
str r1, [sp, #4]
str r0, [sp, #8]
str sb, [sp, #0xc]
mov r2, r7
mov r3, r6
mov r0, #0xf
mov r1, #7
str r8, [sp, #0x10]
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_020DFD7C
arm_func_start sub_020DFEAC
sub_020DFEAC: ; 0x020DFEAC
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_020DE654
mov r4, r0
mov r0, #2
mov r1, #9
mov r2, #0xa
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, [r4, #4]
mov r1, #4
add r0, r0, #0xc
bl sub_020D285C
ldr r0, [r4, #4]
ldr r0, [r0, #0xc]
cmp r0, #0
moveq r0, #3
ldmeqia sp!, {r3, r4, r5, pc}
mov r1, r5
mov r0, #0x10
bl sub_020DE4C8
mov r0, #0x10
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020DFEAC
arm_func_start sub_020DFF1C
sub_020DFF1C: ; 0x020DFF1C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_020DE654
mov r4, r0
mov r0, #1
mov r1, #8
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r4, #4]
mov r1, #4
add r0, r0, #0x10
bl sub_020D285C
ldr r0, [r4, #4]
ldr r0, [r0, #0x10]
cmp r0, #1
moveq r0, #3
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
cmp r5, #0x10
movlo r0, #6
ldmloia sp!, {r3, r4, r5, r6, r7, pc}
cmp r6, #0
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
mov r1, r5
bl sub_020D2878
mov r1, r7
mov r0, #0x11
bl sub_020DE4C8
mov r2, r6
mov r3, r5
mov r0, #0x11
mov r1, #2
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020DFF1C
arm_func_start sub_020DFFBC
sub_020DFFBC: ; 0x020DFFBC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020DE654
mov r8, r0
mov r0, #1
mov r1, #0xb
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, [r8, #4]
mov r1, #4
add r0, r0, #0x10
bl sub_020D285C
ldr r0, [r8, #4]
ldr r0, [r0, #0x10]
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #3
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, _020E0084 ; =0x000005E4
cmp r4, r0
addhi sp, sp, #0x10
movhi r0, #6
ldmhiia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r5
mov r1, r4
bl sub_020D2878
mov r1, r7
mov r0, #0x12
bl sub_020DE4C8
add r1, sp, #8
mov r0, r6
mov r2, #6
bl MIi_CpuCopy8
str r5, [sp]
str r4, [sp, #4]
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
mov r0, #0x12
mov r1, #4
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E0084: .word 0x000005E4
arm_func_end sub_020DFFBC
arm_func_start sub_020E0088
sub_020E0088: ; 0x020E0088
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_020DE654
mov r4, r0
mov r0, #1
mov r1, #0xb
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, [r4, #4]
mov r1, #4
add r0, r0, #0x10
bl sub_020D285C
ldr r0, [r4, #4]
ldr r0, [r0, #0x10]
cmp r0, #0
moveq r0, #3
ldmeqia sp!, {r3, r4, r5, pc}
mov r1, r5
mov r0, #0x13
bl sub_020DE4C8
mov r0, #0x13
mov r1, #0
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020E0088
arm_func_start sub_020E00F4
sub_020E00F4: ; 0x020E00F4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
mov r7, r1
mov r6, r2
mov r0, #2
mov r1, #9
mov r2, #0xa
mov r5, r3
mov r8, #1
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp sl, #0
addeq sp, sp, #0xc
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r7, #0x10
addhs sp, sp, #0xc
movhs r0, #6
ldmhsia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r6, #0
addeq sp, sp, #0xc
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
bl sub_020DEB48
movs r4, r0
bne _020E0170
bl sub_020DEB78
mov r8, r0
_020E0170:
mov r1, sl
mov r0, #0
mov r2, #0x820
bl MIi_CpuClearFast
add r0, sl, #0x800
mov r2, #0
strh r2, [r0, #8]
strh r2, [r0, #0xa]
strh r2, [r0, #0xc]
strh r5, [r0, #0x10]
strh r7, [r0, #0x16]
strh r2, [r0, #0xe]
mov r0, #1
ldr r1, [sp, #0x30]
orr r0, r6, r0, lsl r4
cmp r1, #0
mov r0, r0, lsl #0x10
movne r2, #1
add r1, sl, #0x800
strh r2, [r1, #0x18]
mov r0, r0, lsr #0x10
strh r0, [r1, #0xe]
bl sub_020E3714
add r3, sl, #0x800
mul r1, r5, r0
strh r0, [r3, #0x12]
strh r1, [r3, #0x14]
ldrh r0, [r3, #0x14]
cmp r0, #0x1fc
bls _020E01FC
mov r0, #0
strh r0, [r3, #0xe]
add sp, sp, #0xc
mov r0, #6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020E01FC:
add r0, r0, #4
strh r0, [r3, #0x14]
mov r0, #1
strh r0, [r3, #0x1c]
cmp r4, #0
bne _020E0314
orr r4, r8, #1
mov r2, #0
_020E021C:
ldrh r1, [r3, #0xe]
mov r0, r2, lsl #9
add r2, r2, #1
and r1, r1, r4
strh r1, [sl, r0]
cmp r2, #4
blt _020E021C
ldr r1, _020E0338 ; =sub_020E07B0
mov r0, r7
mov r2, sl
bl sub_020DEBEC
mov r7, sl
mov sb, #0
add r4, sl, #0x800
mov r6, #1
ldr fp, _020E033C ; =sub_020E06D8
ldr r5, _020E0340 ; =0x0000FFFF
b _020E02F8
_020E0264:
ldrh r2, [r4, #8]
mov r0, fp
mov r1, sl
add r2, r2, #1
and r2, r2, #3
strh r2, [r4, #8]
ldrh r3, [r4, #0xe]
mov r2, r7
and r3, r3, r8
mov r3, r3, lsl #0x10
mov r3, r3, lsr #0x10
str r3, [sp]
ldrh r3, [r4, #0x16]
stmib sp, {r3, r6}
ldrh r3, [r4, #0x14]
bl sub_020DFD7C
cmp r0, #7
bne _020E02CC
add r0, sl, sb, lsl #1
add r0, r0, #0x800
strh r5, [r0]
ldrh r0, [r4, #0xa]
add r0, r0, #1
and r0, r0, #3
strh r0, [r4, #0xa]
b _020E02F0
_020E02CC:
cmp r0, #0
cmpne r0, #2
beq _020E02F0
add r0, sl, #0x800
mov r1, #5
strh r1, [r0, #0x1c]
add sp, sp, #0xc
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020E02F0:
add r7, r7, #0x200
add sb, sb, #1
_020E02F8:
ldrh r0, [r4, #0x18]
cmp r0, #1
movne r0, #1
moveq r0, #2
cmp sb, r0
blt _020E0264
b _020E032C
_020E0314:
ldr r1, _020E0344 ; =sub_020E08DC
mov r4, #3
mov r0, r7
mov r2, sl
strh r4, [r3, #0xa]
bl sub_020DEBEC
_020E032C:
mov r0, #0
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020E0338: .word sub_020E07B0
_020E033C: .word sub_020E06D8
_020E0340: .word 0x0000FFFF
_020E0344: .word sub_020E08DC
arm_func_end sub_020E00F4
arm_func_start sub_020E0348
sub_020E0348: ; 0x020E0348
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #6
ldmeqia sp!, {r4, pc}
add r0, r4, #0x800
ldrh r1, [r0, #0xe]
cmp r1, #0
moveq r0, #3
ldmeqia sp!, {r4, pc}
ldrh r0, [r0, #0x16]
mov r1, #0
mov r2, r1
bl sub_020DEBEC
add r1, r4, #0x800
mov r0, #0
strh r0, [r1, #0xe]
strh r0, [r1, #0x1c]
ldmia sp!, {r4, pc}
arm_func_end sub_020E0348
arm_func_start sub_020E0390
sub_020E0390: ; 0x020E0390
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
mov sb, r1
mov r8, r2
mov r0, #2
mov r1, #9
mov r2, #0xa
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp sl, #0
addeq sp, sp, #0xc
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp sb, #0
addeq sp, sp, #0xc
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r8, #0
addeq sp, sp, #0xc
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
bl sub_020DEB48
movs r5, r0
bne _020E0404
bl sub_020DEB78
mov r4, r0
_020E0404:
add r0, sl, #0x800
ldrh r0, [r0, #0x1c]
cmp r0, #5
addeq sp, sp, #0xc
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r0, #1
cmpne r0, #4
addne sp, sp, #0xc
movne r0, #3
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r5, #0
mov r7, #5
bne _020E05C8
mov r5, #0
mov fp, r5
cmp r0, #4
bne _020E04EC
add ip, sl, #0x800
mov r2, #1
strh r2, [ip, #0x1c]
ldrh r3, [ip, #0xe]
ldrh r1, [ip, #8]
ldr r0, _020E06D0 ; =sub_020E06D8
and r3, r3, r4
mov r3, r3, lsl #0x10
mov r3, r3, lsr #0x10
str r3, [sp]
ldrh r3, [ip, #0x16]
add r1, r1, #3
and r6, r1, #3
str r3, [sp, #4]
str r2, [sp, #8]
ldrh r3, [ip, #0x14]
mov r1, sl
add r2, sl, r6, lsl #9
bl sub_020DFD7C
cmp r0, #7
bne _020E04C8
add r0, sl, r6, lsl #1
ldr r1, _020E06D4 ; =0x0000FFFF
add r0, r0, #0x800
strh r1, [r0]
add r0, sl, #0x800
ldrh r1, [r0, #0xa]
add r1, r1, #1
and r1, r1, #3
strh r1, [r0, #0xa]
b _020E04EC
_020E04C8:
cmp r0, #0
cmpne r0, #2
beq _020E04EC
add r0, sl, #0x800
mov r1, r7
strh r1, [r0, #0x1c]
add sp, sp, #0xc
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_020E04EC:
add r0, sl, #0x800
ldrh r2, [r0, #0xc]
ldrh r1, [r0, #0xa]
cmp r2, r1
beq _020E0584
mov r5, r2, lsl #9
ldrh r3, [sl, r5]
mov r1, r8
mov r2, #0x200
orr r3, r3, #1
strh r3, [sl, r5]
ldrh r0, [r0, #0xc]
add r0, sl, r0, lsl #9
bl MIi_CpuCopy16
add r1, sl, #0x800
ldrh r0, [r1, #0xc]
mov r5, #1
mov r7, #0
add r0, sl, r0, lsl #1
add r0, r0, #0x800
ldrh r0, [r0]
strh r0, [r1, #0x1a]
ldrh r0, [r1, #0xc]
add r0, r0, #1
and r0, r0, #3
strh r0, [r1, #0xc]
ldrh r0, [r1, #0x18]
cmp r0, #0
bne _020E0580
cmp r4, #0
beq _020E0580
ldrh r0, [r1, #8]
mov r0, r0, lsl #9
ldrh r0, [sl, r0]
cmp r0, #1
moveq fp, r5
beq _020E0584
_020E0580:
mov fp, #0
_020E0584:
mov r0, sl
mov r1, #0
bl sub_020E0A9C
cmp r5, #0
beq _020E06C4
mov r0, sl
mov r2, sb
mov r1, #0
bl sub_020E09D0
add r0, sl, #0x800
ldrh r0, [r0, #0x18]
cmp r0, #0
bne _020E06C4
mov r0, sl
mov r1, fp
bl sub_020E0A9C
b _020E06C4
_020E05C8:
cmp r0, #4
mov r0, #0
add r1, sl, #0x800
moveq r0, #1
streqh r0, [r1, #0x1c]
beq _020E0648
ldrh r2, [r1, #0xc]
ldrh r1, [r1, #8]
cmp r2, r1
beq _020E0648
mov r2, r2, lsl #9
ldrh r1, [sl, r2]
tst r1, #1
orreq r1, r1, #1
streqh r1, [sl, r2]
beq _020E0648
mov r1, r8
add r0, sl, r2
mov r2, #0x200
bl MIi_CpuCopy16
add r2, sl, #0x800
ldrh r1, [r2, #0xc]
mov r0, #1
mov r7, #0
add r1, sl, r1, lsl #1
add r1, r1, #0x800
ldrh r1, [r1]
strh r1, [r2, #0x1a]
ldrh r1, [r2, #0xc]
add r1, r1, #1
and r1, r1, #3
strh r1, [r2, #0xc]
_020E0648:
cmp r0, #0
beq _020E06C4
add r0, sl, #0x800
ldrh r1, [r0, #0xa]
ldrh r2, [r0, #0x10]
mov r0, sb
add r6, sl, r1, lsl #9
add r1, r6, #0x20
bl MIi_CpuCopy16
add r3, sl, #0x800
ldrh r1, [r3, #0xe]
mov r4, #1
ldr r0, _020E06D0 ; =sub_020E06D8
str r1, [sp]
ldrh r5, [r3, #0x16]
mov r1, sl
add r2, r6, #0x20
str r5, [sp, #4]
str r4, [sp, #8]
ldrh r3, [r3, #0x10]
bl sub_020DFD7C
add r1, sl, #0x800
ldrh r2, [r1, #0xa]
cmp r0, #2
cmpne r0, #0
add r2, r2, #1
and r2, r2, #3
strh r2, [r1, #0xa]
movne r0, #5
strneh r0, [r1, #0x1c]
movne r7, r4
_020E06C4:
mov r0, r7
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020E06D0: .word sub_020E06D8
_020E06D4: .word 0x0000FFFF
arm_func_end sub_020E0390
arm_func_start sub_020E06D8
sub_020E06D8: ; 0x020E06D8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_020DE654
ldrh r2, [r5, #0xa]
ldr r1, _020E07A8 ; =sub_020E07B0
add r0, r0, r2, lsl #2
ldr r2, [r0, #0xcc]
ldr r4, [r0, #0x10c]
cmp r2, r1
ldrne r0, _020E07AC ; =sub_020E08DC
cmpne r2, r0
ldmneia sp!, {r3, r4, r5, pc}
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, [r5, #0x20]
cmp r4, r0
ldmneia sp!, {r3, r4, r5, pc}
bl sub_020DEB48
ldrh r1, [r5, #2]
cmp r1, #0
bne _020E0764
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
add r1, r4, #0x800
ldrh r0, [r1, #0xa]
ldrh r2, [r5, #0x1a]
add r0, r4, r0, lsl #1
mov r2, r2, asr #1
add r0, r0, #0x800
strh r2, [r0]
ldrh r0, [r1, #0xa]
add r0, r0, #1
and r0, r0, #3
strh r0, [r1, #0xa]
ldmia sp!, {r3, r4, r5, pc}
_020E0764:
cmp r1, #0xa
bne _020E0798
cmp r0, #0
beq _020E0788
add r0, r4, #0x800
ldrh r1, [r0, #0xa]
add r1, r1, #3
and r1, r1, #3
strh r1, [r0, #0xa]
_020E0788:
add r0, r4, #0x800
mov r1, #4
strh r1, [r0, #0x1c]
ldmia sp!, {r3, r4, r5, pc}
_020E0798:
add r0, r4, #0x800
mov r1, #5
strh r1, [r0, #0x1c]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E07A8: .word sub_020E07B0
_020E07AC: .word sub_020E08DC
arm_func_end sub_020E06D8
arm_func_start sub_020E07B0
sub_020E07B0: ; 0x020E07B0
stmdb sp!, {r4, r5, r6, lr}
ldr r4, [r0, #0x1c]
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldrh r1, [r0, #2]
cmp r1, #0
bne _020E08CC
ldrh r1, [r0, #4]
cmp r1, #0x15
bgt _020E07FC
bge _020E081C
cmp r1, #9
ldmgtia sp!, {r4, r5, r6, pc}
cmp r1, #7
ldmltia sp!, {r4, r5, r6, pc}
beq _020E083C
cmp r1, #9
beq _020E084C
ldmia sp!, {r4, r5, r6, pc}
_020E07FC:
cmp r1, #0x1a
ldmgtia sp!, {r4, r5, r6, pc}
cmp r1, #0x19
ldmltia sp!, {r4, r5, r6, pc}
ldmeqia sp!, {r4, r5, r6, pc}
cmp r1, #0x1a
beq _020E084C
ldmia sp!, {r4, r5, r6, pc}
_020E081C:
ldrh r1, [r0, #0x12]
ldr r2, [r0, #0xc]
mov r0, r4
bl sub_020E09D0
mov r0, r4
mov r1, #0
bl sub_020E0A9C
ldmia sp!, {r4, r5, r6, pc}
_020E083C:
mov r0, r4
mov r1, #0
bl sub_020E0A9C
ldmia sp!, {r4, r5, r6, pc}
_020E084C:
ldrh r5, [r0, #0x12]
mov r6, #1
bl OS_DisableInterrupts
add r1, r4, #0x800
ldrh lr, [r1, #8]
mvn ip, r6, lsl r5
mov r3, lr, lsl #9
ldrh r2, [r4, r3]
and r2, r2, ip
strh r2, [r4, r3]
ldrh r1, [r1, #0x18]
cmp r1, #1
bne _020E089C
add r1, lr, #1
and r1, r1, #3
mov r1, r1, lsl #0x10
mov r2, r1, lsr #7
ldrh r1, [r4, r2]
and r1, r1, ip
strh r1, [r4, r2]
_020E089C:
bl OS_RestoreInterrupts
mov r0, r4
mov r1, #0
bl sub_020E0A9C
add r0, r4, #0x800
ldrh r0, [r0, #0x18]
cmp r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r4
mov r1, #0
bl sub_020E0A9C
ldmia sp!, {r4, r5, r6, pc}
_020E08CC:
add r0, r4, #0x800
mov r1, #5
strh r1, [r0, #0x1c]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020E07B0
arm_func_start sub_020E08DC
sub_020E08DC: ; 0x020E08DC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r4, [r8, #0x1c]
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldrh r0, [r8, #2]
cmp r0, #0
bne _020E09C0
ldrh r0, [r8, #4]
cmp r0, #0x15
bgt _020E0924
bge _020E093C
cmp r0, #9
ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
cmp r0, #7
ldmltia sp!, {r4, r5, r6, r7, r8, pc}
cmpne r0, #9
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020E0924:
cmp r0, #0x1a
ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
cmp r0, #0x19
ldmltia sp!, {r4, r5, r6, r7, r8, pc}
cmpne r0, #0x1a
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020E093C:
ldr r7, [r8, #0xc]
ldrh r5, [r8, #0x10]
ldrh r6, [r7]
bl sub_020DEB48
add r1, r4, #0x800
ldrh r1, [r1, #0x14]
cmp r5, r1
beq _020E0964
cmp r5, #0x200
movhi r5, #0x200
_020E0964:
cmp r5, #4
ldmloia sp!, {r4, r5, r6, r7, r8, pc}
mov r1, #1
tst r6, r1, lsl r0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r0, r4, #0x800
ldrh r1, [r0, #8]
mov r0, r7
mov r2, r5
add r1, r4, r1, lsl #9
bl MIi_CpuCopy16
add r1, r4, #0x800
ldrh r0, [r1, #8]
ldrh r2, [r8, #0x1a]
add r0, r4, r0, lsl #1
mov r2, r2, asr #1
add r0, r0, #0x800
strh r2, [r0]
ldrh r0, [r1, #8]
add r0, r0, #1
and r0, r0, #3
strh r0, [r1, #8]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020E09C0:
add r0, r4, #0x800
mov r1, #5
strh r1, [r0, #0x1c]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020E08DC
arm_func_start sub_020E09D0
sub_020E09D0: ; 0x020E09D0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r3, r1
mov r1, #1
mov r4, r1, lsl r3
add r0, r6, #0x800
ldrh r1, [r0, #0xe]
mov r7, r4, lsl #0x10
mov r5, r2
tst r1, r7, lsr #16
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrh r4, [r0, #8]
mov r2, r4, lsl #9
ldrh r2, [r6, r2]
tst r2, r7, lsr #16
bne _020E0A34
ldrh r0, [r0, #0x18]
cmp r0, #1
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
add r0, r4, #1
and r4, r0, #3
mov r0, r4, lsl #9
ldrh r0, [r6, r0]
tst r0, r7, lsr #16
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
_020E0A34:
add r2, r6, r4, lsl #9
mov r0, r6
add r2, r2, #4
bl sub_020E0C44
mov r1, r0
add r0, r6, #0x800
cmp r5, #0
ldrh r2, [r0, #0x10]
beq _020E0A64
mov r0, r5
bl MIi_CpuCopy16
b _020E0A6C
_020E0A64:
mov r0, #0
bl MIi_CpuClear16
_020E0A6C:
bl OS_DisableInterrupts
mov r4, r4, lsl #9
ldrh r3, [r6, r4]
mvn r1, r7, lsr #16
add r2, r6, #2
and r1, r3, r1
strh r1, [r6, r4]
ldrh r1, [r2, r4]
orr r1, r1, r7, lsr #16
strh r1, [r2, r4]
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020E09D0
arm_func_start sub_020E0A9C
sub_020E0A9C: ; 0x020E0A9C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0xc
mov sl, r0
mov sb, r1
bl OS_DisableInterrupts
add r1, sl, #0x800
ldrh r1, [r1, #8]
mov r4, r0
mov r1, r1, lsl #9
ldrh r1, [sl, r1]
cmp r1, #0
bne _020E0BDC
bl sub_020DEB78
add r1, sl, #0x800
ldrh r6, [r1, #8]
ldrh r1, [r1, #0x18]
mov r7, r0
add r0, r6, #1
and r5, r0, #3
cmp r1, #1
addeq r0, r5, #1
andeq r8, r0, #3
movne r8, r5
add r1, sl, r8, lsl #9
mov r0, #0
mov r2, #0x200
bl MIi_CpuClear16
add r0, sl, #0x800
ldrh r3, [r0, #0xe]
orr r2, r7, #1
mov r1, r8, lsl #9
and r2, r3, r2
strh r2, [sl, r1]
strh r5, [r0, #8]
ldrh r0, [r0, #0xe]
mov r1, r6, lsl #9
cmp sb, #1
strh r0, [sl, r1]
ldreqh r0, [sl, r1]
biceq r0, r0, #1
streqh r0, [sl, r1]
mov r0, r4
bl OS_RestoreInterrupts
add r3, sl, #0x800
ldrh r1, [r3, #0xe]
mov r4, #1
ldr r0, _020E0BE8 ; =sub_020E06D8
and r1, r1, r7
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
str r1, [sp]
ldrh r5, [r3, #0x16]
mov r1, sl
add r2, sl, r6, lsl #9
str r5, [sp, #4]
str r4, [sp, #8]
ldrh r3, [r3, #0x14]
bl sub_020DFD7C
cmp r0, #7
bne _020E0BB8
add r0, sl, r6, lsl #1
ldr r1, _020E0BEC ; =0x0000FFFF
add r0, r0, #0x800
strh r1, [r0]
add r0, sl, #0x800
ldrh r1, [r0, #0xa]
add sp, sp, #0xc
add r1, r1, #1
and r1, r1, #3
strh r1, [r0, #0xa]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
_020E0BB8:
cmp r0, #0
cmpne r0, #2
addeq sp, sp, #0xc
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
add r0, sl, #0x800
mov r1, #5
strh r1, [r0, #0x1c]
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
_020E0BDC:
bl OS_RestoreInterrupts
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020E0BE8: .word sub_020E06D8
_020E0BEC: .word 0x0000FFFF
arm_func_end sub_020E0A9C
arm_func_start sub_020E0BF0
sub_020E0BF0: ; 0x020E0BF0
stmdb sp!, {r3, lr}
mov lr, r1
mov r3, r2
cmp r0, #0
ldrh r1, [lr]
ldrh ip, [lr, #2]
mov r2, #1
moveq r0, #0
ldmeqia sp!, {r3, pc}
cmp lr, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
tst r1, r2, lsl r3
moveq r0, #0
ldmeqia sp!, {r3, pc}
tst ip, r2, lsl r3
moveq r0, #0
ldmeqia sp!, {r3, pc}
add r2, lr, #4
bl sub_020E0C44
ldmia sp!, {r3, pc}
arm_func_end sub_020E0BF0
arm_func_start sub_020E0C44
sub_020E0C44: ; 0x020E0C44
stmdb sp!, {r3, r4, r5, lr}
mov ip, #1
mov r3, ip, lsl r3
sub r3, r3, #1
mov r5, r0
and r0, r1, r3
mov r4, r2
bl sub_020E3714
add r1, r5, #0x800
ldrh r1, [r1, #0x10]
mla r0, r1, r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020E0C44
arm_func_start sub_020E0C74
sub_020E0C74: ; 0x020E0C74
stmdb sp!, {r3, lr}
mov ip, #1
rsb r2, ip, #0x10000
mov r3, #2
str ip, [sp]
bl sub_020E00F4
ldmia sp!, {r3, pc}
arm_func_end sub_020E0C74
arm_func_start sub_020E0C90
sub_020E0C90: ; 0x020E0C90
ldr ip, _020E0C98 ; =sub_020E0348
bx ip
.align 2, 0
_020E0C98: .word sub_020E0348
arm_func_end sub_020E0C90
arm_func_start sub_020E0C9C
sub_020E0C9C: ; 0x020E0C9C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020DE680
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
cmp r5, #3
movhi r0, #6
ldmhiia sp!, {r4, r5, r6, pc}
cmp r5, #0
beq _020E0CE4
cmp r4, #0
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r4
mov r1, #0x50
bl sub_020D2878
_020E0CE4:
mov r1, r6
mov r0, #0x14
bl sub_020DE4C8
mov r2, r5
mov r3, r4
mov r0, #0x14
mov r1, #2
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020E0C9C
arm_func_start sub_020E0D10
sub_020E0D10: ; 0x020E0D10
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020DE680
cmp r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
cmp r6, #3
movhi r0, #6
ldmhiia sp!, {r3, r4, r5, r6, r7, pc}
cmp r6, #0
beq _020E0D5C
cmp r4, #0
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r4
mov r1, #0x50
bl sub_020D2878
_020E0D5C:
mov r1, r7
mov r0, #0x27
bl sub_020DE4C8
mov r2, r6
mov r3, r4
mov r0, #0x27
mov r1, #3
str r5, [sp]
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020E0D10
arm_func_start sub_020E0D8C
sub_020E0D8C: ; 0x020E0D8C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r7, r0
mov r6, r1
mov r5, r2
mov r0, #2
mov r1, #7
mov r2, #9
mov r4, r3
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
cmp r6, #0
addeq sp, sp, #0xc
moveq r0, #6
ldmeqia sp!, {r4, r5, r6, r7, pc}
cmp r5, #0x70
addhi sp, sp, #0xc
movhi r0, #6
ldmhiia sp!, {r4, r5, r6, r7, pc}
ldr r1, _020E0E40 ; =0x021E4CC0
mov r0, r6
mov r2, r5
bl MIi_CpuCopy16
ldr r0, _020E0E40 ; =0x021E4CC0
mov r1, r5
bl sub_020D2878
mov r1, r7
mov r0, #0x18
bl sub_020DE4C8
ldrh r0, [sp, #0x20]
str r4, [sp]
ldrb r1, [sp, #0x24]
str r0, [sp, #4]
ldr r2, _020E0E40 ; =0x021E4CC0
str r1, [sp, #8]
mov r3, r5
mov r0, #0x18
mov r1, #5
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_020E0E40: .word 0x021E4CC0
arm_func_end sub_020E0D8C
arm_func_start sub_020E0E44
sub_020E0E44: ; 0x020E0E44
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_020DE680
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
cmp r4, #0
cmpne r4, #1
movne r0, #6
ldmneia sp!, {r3, r4, r5, pc}
mov r1, r5
mov r0, #0x19
bl sub_020DE4C8
mov r2, r4
mov r0, #0x19
mov r1, #1
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020E0E44
arm_func_start sub_020E0E94
sub_020E0E94: ; 0x020E0E94
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020DE680
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
mov r1, r7
mov r0, #0x1d
bl sub_020DE4C8
ldrh ip, [sp, #0x20]
mov r2, r6
mov r3, r5
mov r0, #0x1d
mov r1, #4
stmia sp, {r4, ip}
bl sub_020DE538
cmp r0, #0
moveq r0, #2
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020E0E94
arm_func_start sub_020E0EF4
sub_020E0EF4: ; 0x020E0EF4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020DE654
mov r0, #1
mov r1, #2
bl sub_020DE6C8
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r1, r7
mov r0, #0x1e
bl sub_020DE4C8
ldrh r2, [sp, #0x20]
mov r3, #0x1e
add r0, sp, #0
mov r1, #0xa
strh r3, [sp]
strh r6, [sp, #2]
strh r5, [sp, #4]
strh r4, [sp, #6]
strh r2, [sp, #8]
bl sub_020DE5E4
cmp r0, #0
moveq r0, #2
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
arm_func_end sub_020E0EF4
arm_func_start sub_020E0F6C
sub_020E0F6C: ; 0x020E0F6C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, #2
mov r1, #7
mov r2, #9
bl sub_020DE6C8
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, r5
mov r0, #0x21
bl sub_020DE4C8
mov r2, r4
mov r0, #0x21
mov r1, #1
bl sub_020DE538
cmp r0, #0
moveq r0, #2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020E0F6C
arm_func_start sub_020E0FB8
sub_020E0FB8: ; 0x020E0FB8
stmdb sp!, {r3, lr}
ldr r1, _020E0FE4 ; =0x021E4D44
mov r3, #0
ldr r2, _020E0FE8 ; =0x05000001
add r0, sp, #0
str r3, [sp]
bl SVC_CpuSet
bl OS_GetLockID
ldr r1, _020E0FEC ; =0x021E4D40
strh r0, [r1, #6]
ldmia sp!, {r3, pc}
.align 2, 0
_020E0FE4: .word 0x021E4D44
_020E0FE8: .word 0x05000001
_020E0FEC: .word 0x021E4D40
arm_func_end sub_020E0FB8
arm_func_start sub_020E0FF0
sub_020E0FF0: ; 0x020E0FF0
stmdb sp!, {r3, lr}
bl sub_020E1134
cmp r0, #0
beq _020E1010
bl sub_020E1040
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
_020E1010:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020E0FF0
arm_func_start sub_020E1018
sub_020E1018: ; 0x020E1018
stmdb sp!, {r3, lr}
bl sub_020E1134
cmp r0, #0
beq _020E1038
bl sub_020E1040
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_020E1038:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020E1018
arm_func_start sub_020E1040
sub_020E1040: ; 0x020E1040
ldr r0, _020E1054 ; =0x027FFC30
ldrb r0, [r0, #5]
mov r0, r0, lsl #0x1f
mov r0, r0, lsr #0x1f
bx lr
.align 2, 0
_020E1054: .word 0x027FFC30
arm_func_end sub_020E1040
arm_func_start sub_020E1058
sub_020E1058: ; 0x020E1058
stmdb sp!, {r4, lr}
mov r4, #0
bl sub_020E1134
cmp r0, #0
beq _020E1074
bl sub_020E107C
mov r4, r0
_020E1074:
mov r0, r4
ldmia sp!, {r4, pc}
arm_func_end sub_020E1058
arm_func_start sub_020E107C
sub_020E107C: ; 0x020E107C
stmdb sp!, {r4, lr}
mov r4, #0
bl sub_020E1040
cmp r0, #0
ldrne r0, _020E109C ; =0x027FFC30
ldrne r4, [r0, #8]
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020E109C: .word 0x027FFC30
arm_func_end sub_020E107C
arm_func_start sub_020E10A0
sub_020E10A0: ; 0x020E10A0
stmdb sp!, {r4, lr}
mov r4, #0
bl sub_020E1134
cmp r0, #0
beq _020E10BC
bl sub_020E10C4
mov r4, r0
_020E10BC:
mov r0, r4
ldmia sp!, {r4, pc}
arm_func_end sub_020E10A0
arm_func_start sub_020E10C4
sub_020E10C4: ; 0x020E10C4
stmdb sp!, {r4, lr}
mov r4, #0
bl sub_020E1040
cmp r0, #0
ldrne r0, _020E10E4 ; =0x027FFC30
ldrneh r4, [r0, #6]
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020E10E4: .word 0x027FFC30
arm_func_end sub_020E10C4
arm_func_start CTRDG_IsPulledOut
CTRDG_IsPulledOut: ; 0x020E10E8
stmdb sp!, {r3, lr}
ldr r2, _020E112C ; =0x027FFC30
ldr r0, _020E1130 ; =0x0000FFFF
ldrh r1, [r2]
cmp r1, r0
moveq r0, #0
ldmeqia sp!, {r3, pc}
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1e
movs r0, r0, lsr #0x1f
bne _020E1118
bl sub_020E1134
_020E1118:
ldr r0, _020E112C ; =0x027FFC30
ldrb r0, [r0, #5]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
ldmia sp!, {r3, pc}
.align 2, 0
_020E112C: .word 0x027FFC30
_020E1130: .word 0x0000FFFF
arm_func_end CTRDG_IsPulledOut
arm_func_start sub_020E1134
sub_020E1134: ; 0x020E1134
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r2, _020E1234 ; =0x027FFC30
mov r4, #1
ldrh r1, [r2]
rsb r0, r4, #0x10000
cmp r1, r0
addeq sp, sp, #0x10
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
cmp r0, #1
addeq sp, sp, #0x10
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, _020E1238 ; =0x021E4D40
add r1, sp, #8
ldrh r0, [r0, #6]
bl sub_020E12BC
add r0, sp, #0
bl sub_020E1240
mov r0, #0x8000000
ldrb r2, [r0, #0xb2]
cmp r2, #0x96
bne _020E11B4
ldr r1, _020E1234 ; =0x027FFC30
ldrh r0, [r0, #0xbe]
ldrh r1, [r1]
cmp r1, r0
bne _020E11FC
_020E11B4:
cmp r2, #0x96
beq _020E11D4
ldr r1, _020E1234 ; =0x027FFC30
ldr r0, _020E123C ; =0x0801FFFE
ldrh r1, [r1]
ldrh r0, [r0]
cmp r1, r0
bne _020E11FC
_020E11D4:
ldr r2, _020E1234 ; =0x027FFC30
mov r0, #0x8000000
ldr r1, [r2, #8]
ldr r0, [r0, #0xac]
cmp r1, r0
beq _020E1210
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _020E1210
_020E11FC:
ldr r1, _020E1234 ; =0x027FFC30
mov r4, #0
ldrb r0, [r1, #5]
orr r0, r0, #2
strb r0, [r1, #5]
_020E1210:
add r0, sp, #0
bl sub_020E1288
ldr r0, _020E1238 ; =0x021E4D40
add r1, sp, #8
ldrh r0, [r0, #6]
bl sub_020E1318
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_020E1234: .word 0x027FFC30
_020E1238: .word 0x021E4D40
_020E123C: .word 0x0801FFFE
arm_func_end sub_020E1134
arm_func_start sub_020E1240
sub_020E1240: ; 0x020E1240
ldr r2, _020E1284 ; =0x04000204
ldrh r1, [r2]
and r1, r1, #0xc
mov r1, r1, asr #2
str r1, [r0]
ldrh r1, [r2]
and r1, r1, #0x10
mov r1, r1, asr #4
str r1, [r0, #4]
ldrh r0, [r2]
bic r0, r0, #0xc
orr r0, r0, #0xc
strh r0, [r2]
ldrh r0, [r2]
bic r0, r0, #0x10
strh r0, [r2]
bx lr
.align 2, 0
_020E1284: .word 0x04000204
arm_func_end sub_020E1240
arm_func_start sub_020E1288
sub_020E1288: ; 0x020E1288
ldr r3, _020E12B8 ; =0x04000204
ldr r2, [r0]
ldrh r1, [r3]
bic r1, r1, #0xc
orr r1, r1, r2, lsl #2
strh r1, [r3]
ldrh r1, [r3]
ldr r2, [r0, #4]
bic r0, r1, #0x10
orr r0, r0, r2, lsl #4
strh r0, [r3]
bx lr
.align 2, 0
_020E12B8: .word 0x04000204
arm_func_end sub_020E1288
arm_func_start sub_020E12BC
sub_020E12BC: ; 0x020E12BC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r5, _020E1314 ; =0x027FFFE8
mov r7, r0
mov r6, r1
mov r4, #1
_020E12D0:
bl OS_DisableInterrupts
str r0, [r6, #4]
mov r0, r5
bl sub_020D15BC
ands r0, r0, #0x40
str r0, [r6]
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r7
bl sub_020D14F8
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r6, #4]
bl OS_RestoreInterrupts
mov r0, r4
bl SVC_WaitByLoop
b _020E12D0
arm_func_end sub_020E12BC
arm_func_start sub_020E1310
sub_020E1310: ; 0x020E1310
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020E1314: .word 0x027FFFE8
arm_func_end sub_020E1310
arm_func_start sub_020E1318
sub_020E1318: ; 0x020E1318
stmdb sp!, {r4, lr}
mov r4, r1
ldr r1, [r4]
cmp r1, #0
bne _020E1330
bl sub_020D14EC
_020E1330:
ldr r0, [r4, #4]
bl OS_RestoreInterrupts
ldmia sp!, {r4, pc}
arm_func_end sub_020E1318
arm_func_start sub_020E133C
sub_020E133C: ; 0x020E133C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r1, r7
mov r0, #0xd
mov r2, #0
bl sub_020D66C4
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r6, #1
mov r5, #0xd
mov r4, #0
_020E1368:
mov r0, r6
bl SVC_WaitByLoop
mov r0, r5
mov r1, r7
mov r2, r4
bl sub_020D66C4
cmp r0, #0
bne _020E1368
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020E133C
arm_func_start sub_020E138C
sub_020E138C: ; 0x020E138C
stmdb sp!, {r3, lr}
mov lr, r1
mov r3, r2
cmp lr, #0x8000000
blo _020E13C4
ldr r2, _020E13E0 ; =0x0A010000
cmp lr, r2
bhs _020E13C4
mov ip, #1
mov r2, r0
mov r0, #0
str ip, [sp]
bl sub_020E1434
ldmia sp!, {r3, pc}
_020E13C4:
mov ip, #1
mov r1, r0
mov r2, lr
mov r0, #0
str ip, [sp]
bl sub_020E1434
ldmia sp!, {r3, pc}
.align 2, 0
_020E13E0: .word 0x0A010000
arm_func_end sub_020E138C
arm_func_start sub_020E13E4
sub_020E13E4: ; 0x020E13E4
stmdb sp!, {r3, lr}
mov lr, r1
mov r3, r2
mov ip, #0x11
mov r1, r0
mov r2, lr
mov r0, #0
str ip, [sp]
bl sub_020E1434
ldmia sp!, {r3, pc}
arm_func_end sub_020E13E4
arm_func_start sub_020E140C
sub_020E140C: ; 0x020E140C
stmdb sp!, {r3, lr}
mov lr, r1
mov r3, r2
mov ip, #0x21
mov r1, r0
mov r2, lr
mov r0, #0
str ip, [sp]
bl sub_020E1434
ldmia sp!, {r3, pc}
arm_func_end sub_020E140C
arm_func_start sub_020E1434
sub_020E1434: ; 0x020E1434
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020E1134
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
bl sub_020E16C0
ldr r0, _020E156C ; =0x021E4D40
ldrh r0, [r0, #6]
bl sub_020D14AC
ldr r0, [sp, #0x18]
tst r0, #1
bne _020E1488
mov r0, r7
bl sub_020D4294
mov r0, r5
mov r1, r4
bl DC_FlushRange
_020E1488:
ldr r0, [sp, #0x18]
cmp r0, #0x11
bhi _020E14B8
cmp r0, #0x10
blo _020E14AC
beq _020E14D4
cmp r0, #0x11
beq _020E1504
b _020E154C
_020E14AC:
cmp r0, #1
beq _020E152C
b _020E154C
_020E14B8:
cmp r0, #0x20
bhi _020E14C8
beq _020E14EC
b _020E154C
_020E14C8:
cmp r0, #0x21
beq _020E1518
b _020E154C
_020E14D4:
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, r4
bl MI_DmaCopy16
b _020E154C
_020E14EC:
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, r4
bl MI_DmaCopy32
b _020E154C
_020E1504:
mov r0, r6
mov r1, r5
mov r2, r4
bl MIi_CpuCopy16
b _020E154C
_020E1518:
mov r0, r6
mov r1, r5
mov r2, r4
bl MIi_CpuCopy32
b _020E154C
_020E152C:
cmp r4, #0
mov r1, #0
bls _020E154C
_020E1538:
ldrb r0, [r6], #1
add r1, r1, #1
cmp r1, r4
strb r0, [r5], #1
blo _020E1538
_020E154C:
ldr r0, _020E156C ; =0x021E4D40
ldrh r0, [r0, #6]
bl sub_020D14EC
bl sub_020E1134
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020E156C: .word 0x021E4D40
arm_func_end sub_020E1434
arm_func_start sub_020E1570
sub_020E1570: ; 0x020E1570
ldr ip, _020E1584 ; =sub_020E1588
mov r2, r1
mov r1, #0
mov r3, #0x41
bx ip
.align 2, 0
_020E1584: .word sub_020E1588
arm_func_end sub_020E1570
arm_func_start sub_020E1588
sub_020E1588: ; 0x020E1588
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_020E1134
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
bl sub_020E16C0
ldr r0, _020E1664 ; =0x021E4D40
ldrh r0, [r0, #6]
bl sub_020D14AC
cmp r4, #0x21
bhi _020E15F4
bhs _020E1620
cmp r4, #0x11
bhi _020E15E8
cmp r4, #0x10
blo _020E1644
beq _020E1640
cmp r4, #0x11
beq _020E1610
b _020E1644
_020E15E8:
cmp r4, #0x20
streqh r6, [r7]
b _020E1644
_020E15F4:
cmp r4, #0x40
bhi _020E1604
streq r6, [r7]
b _020E1644
_020E1604:
cmp r4, #0x41
beq _020E1630
b _020E1644
_020E1610:
cmp r5, #0
ldrneb r0, [r7]
strneb r0, [r5]
b _020E1644
_020E1620:
cmp r5, #0
ldrneh r0, [r7]
strneh r0, [r5]
b _020E1644
_020E1630:
cmp r5, #0
ldrne r0, [r7]
strne r0, [r5]
b _020E1644
_020E1640:
strb r6, [r7]
_020E1644:
ldr r0, _020E1664 ; =0x021E4D40
ldrh r0, [r0, #6]
bl sub_020D14EC
bl sub_020E1134
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020E1664: .word 0x021E4D40
arm_func_end sub_020E1588
arm_func_start sub_020E1668
sub_020E1668: ; 0x020E1668
ldr r0, _020E1674 ; =0x021E4D40
ldr r0, [r0]
bx lr
.align 2, 0
_020E1674: .word 0x021E4D40
arm_func_end sub_020E1668
arm_func_start sub_020E1678
sub_020E1678: ; 0x020E1678
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020E16BC ; =0x021E4D40
mov r4, r0
str r5, [r1]
bl sub_020E1018
cmp r0, #0
bne _020E16B0
cmp r5, #0
movne r1, #0x1000
moveq r1, #0x5000
mov r0, #0xf000
bl sub_020D317C
_020E16B0:
mov r0, r4
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E16BC: .word 0x021E4D40
arm_func_end sub_020E1678
arm_func_start sub_020E16C0
sub_020E16C0: ; 0x020E16C0
stmdb sp!, {r3, lr}
bl sub_020E1018
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_020E1668
cmp r0, #0
ldmneia sp!, {r3, pc}
bl OS_Terminate
ldmia sp!, {r3, pc}
arm_func_end sub_020E16C0
arm_func_start sub_020E16E4
sub_020E16E4: ; 0x020E16E4
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020E1784 ; =0x021E4D60
ldr r1, [r0, #8]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
str r1, [r0, #8]
bl sub_020E0FB8
ldr r0, _020E1784 ; =0x021E4D60
mov r1, #0
str r1, [r0, #0xc]
bl sub_020D6548
mov r5, #0xd
mov r4, #1
_020E171C:
mov r0, r5
mov r1, r4
bl sub_020D66A0
cmp r0, #0
beq _020E171C
ldr r1, _020E1788 ; =sub_020E198C
mov r0, #0xd
bl sub_020D6654
bl sub_020E1798
mov r0, #0xd
mov r1, #0
bl sub_020D6654
ldr r1, _020E178C ; =sub_020E19B8
mov r0, #0xd
bl sub_020D6654
ldr r1, _020E1784 ; =0x021E4D60
mov r2, #0
ldr r0, _020E1790 ; =0x021E4E40
str r2, [r1, #0x18]
bl sub_020E34C0
ldr r1, _020E1794 ; =sub_020E1A28
mov r0, #0x11
bl sub_020D6654
mov r0, #0
bl sub_020E1678
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E1784: .word 0x021E4D60
_020E1788: .word sub_020E198C
_020E178C: .word sub_020E19B8
_020E1790: .word 0x021E4E40
_020E1794: .word sub_020E1A28
arm_func_end sub_020E16E4
arm_func_start sub_020E1798
sub_020E1798: ; 0x020E1798
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
ldr r0, _020E1960 ; =0x021E4D60
ldr r1, [r0]
cmp r1, #0
addne sp, sp, #0x10
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
ldr r1, _020E1964 ; =0x04000300
mov r2, #1
ldrh r1, [r1]
str r2, [r0]
tst r1, #1
addeq sp, sp, #0x10
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, #0x40000
bl OS_SetIrqMask
ldr r3, _020E1968 ; =0x04000208
mov r2, #1
ldrh r5, [r3]
ldr r1, _020E196C ; =0x021E4D44
mov r4, r0
strh r2, [r3]
ldrh r0, [r1, #2]
add r1, sp, #8
bl sub_020E12BC
ldr r1, _020E1970 ; =0x04000204
add r0, sp, #0
ldrh r1, [r1]
and r1, r1, #0x8000
mov r6, r1, asr #0xf
bl sub_020E1240
ldr r3, _020E1970 ; =0x04000204
ldr r0, _020E1974 ; =0x021E4D80
ldrh r2, [r3]
add r0, r0, #0x80
mov r1, #0x40
bic r2, r2, #0x8000
strh r2, [r3]
bl sub_020D285C
ldr r2, _020E1974 ; =0x021E4D80
ldr r1, _020E1978 ; =0x08000080
mov r0, #1
mov r3, #0x40
add r2, r2, #0x80
bl MI_DmaCopy16
ldr r2, _020E1970 ; =0x04000204
add r0, sp, #0
ldrh r1, [r2]
bic r1, r1, #0x8000
orr r1, r1, r6, lsl #15
strh r1, [r2]
bl sub_020E1288
ldr r0, _020E196C ; =0x021E4D44
add r1, sp, #8
ldrh r0, [r0, #2]
bl sub_020E1318
ldr r1, _020E197C ; =0x027FFF9B
ldrb r0, [r1]
cmp r0, #0
bne _020E1894
ldrb r0, [r1, #-1]
cmp r0, #0
bne _020E18F8
_020E1894:
ldr r3, _020E1974 ; =0x021E4D80
ldr r6, _020E1980 ; =0x027FFC30
ldrh r0, [r3, #0xbe]
mov r2, #0
strh r0, [r6]
b _020E18C0
_020E18AC:
add r0, r3, r2
ldrb r1, [r0, #0xb5]
add r0, r6, r2
add r2, r2, #1
strb r1, [r0, #2]
_020E18C0:
cmp r2, #3
blt _020E18AC
ldrh r0, [r3, #0xb0]
strh r0, [r6, #6]
ldr r0, [r3, #0xac]
str r0, [r6, #8]
bl sub_020E1134
cmp r0, #0
movne r2, #1
ldr r1, _020E197C ; =0x027FFF9B
moveq r2, #0
mov r0, #1
strb r2, [r1]
strb r0, [r1, #-1]
_020E18F8:
ldr r0, _020E1984 ; =0xFFFF0020
ldr r1, _020E1988 ; =0x021E4D84
mov r2, #0x9c
bl MIi_CpuCopy32
bl sub_020D2828
ldr r0, _020E1974 ; =0x021E4D80
add r0, r0, #0xfe000000
mov r0, r0, lsr #5
mov r0, r0, lsl #6
orr r0, r0, #1
bl sub_020E133C
mov r7, #1
ldr r6, _020E196C ; =0x021E4D44
b _020E1938
_020E1930:
mov r0, r7
bl SVC_WaitByLoop
_020E1938:
ldrh r0, [r6]
cmp r0, #1
bne _020E1930
ldr r2, _020E1968 ; =0x04000208
mov r0, r4
ldrh r1, [r2]
strh r5, [r2]
bl OS_SetIrqMask
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020E1960: .word 0x021E4D60
_020E1964: .word 0x04000300
_020E1968: .word 0x04000208
_020E196C: .word 0x021E4D44
_020E1970: .word 0x04000204
_020E1974: .word 0x021E4D80
_020E1978: .word 0x08000080
_020E197C: .word 0x027FFF9B
_020E1980: .word 0x027FFC30
_020E1984: .word 0xFFFF0020
_020E1988: .word 0x021E4D84
arm_func_end sub_020E1798
arm_func_start sub_020E198C
sub_020E198C: ; 0x020E198C
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #1
bne _020E19AC
ldr r0, _020E19B4 ; =0x021E4D44
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, pc}
_020E19AC:
bl OS_Terminate
ldmia sp!, {r3, pc}
.align 2, 0
_020E19B4: .word 0x021E4D44
arm_func_end sub_020E198C
arm_func_start sub_020E19B8
sub_020E19B8: ; 0x020E19B8
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #0x11
bne _020E1A08
ldr r0, _020E1A10 ; =0x021E4D60
ldr r1, [r0, #0xc]
cmp r1, #0
ldmneia sp!, {r3, pc}
ldr r1, [r0, #0x18]
mov r0, #0
cmp r1, #0
beq _020E19EC
blx r1
_020E19EC:
cmp r0, #0
beq _020E19F8
bl sub_020E1A14
_020E19F8:
ldr r0, _020E1A10 ; =0x021E4D60
mov r1, #1
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
_020E1A08:
bl OS_Terminate
ldmia sp!, {r3, pc}
.align 2, 0
_020E1A10: .word 0x021E4D60
arm_func_end sub_020E19B8
arm_func_start sub_020E1A14
sub_020E1A14: ; 0x020E1A14
stmdb sp!, {r3, lr}
mov r0, #2
bl sub_020E133C
bl OS_Terminate
ldmia sp!, {r3, pc}
arm_func_end sub_020E1A14
arm_func_start sub_020E1A28
sub_020E1A28: ; 0x020E1A28
ldr r0, _020E1A38 ; =0x021E4D60
mov r1, #0
str r1, [r0, #4]
bx lr
.align 2, 0
_020E1A38: .word 0x021E4D60
arm_func_end sub_020E1A28
arm_func_start sub_020E1A3C
sub_020E1A3C: ; 0x020E1A3C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
cmp r7, #1
mov r0, #1
bhi _020E1B8C
bl OS_GetLockID
ldr r1, _020E1BA8 ; =0x021E4F2C
strh r0, [r1]
ldrh r0, [r1]
bl sub_020D14AC
ldr r4, _020E1BAC ; =0x04000204
ldr r1, _020E1BB0 ; =0x0210E1DC
ldrh r3, [r4]
ldrh r2, [r4]
ldr r0, _020E1BB4 ; =_02110FC8
and r6, r3, #3
bic r2, r2, #3
orr r2, r2, #3
strh r2, [r4]
str r1, [r0]
bl sub_020E1C18
ldr r2, _020E1BAC ; =0x04000204
mov r4, r0
ldrh r1, [r2]
cmp r7, #0
ldreq r5, _020E1BB8 ; =0x0210E1EC
bic r1, r1, #3
orr r1, r1, r6
cmp r7, #1
ldr r0, _020E1BA8 ; =0x021E4F2C
strh r1, [r2]
ldrh r0, [r0]
ldreq r5, _020E1BBC ; =0x0210E1E0
bl sub_020D14CC
ldr r3, [r5]
mov r0, #1
ldrh r1, [r3, #0x38]
cmp r1, #0
beq _020E1AFC
and r2, r4, #0xff
_020E1ADC:
ldrh r1, [r3, #0x38]
cmp r2, r1
moveq r0, #0
beq _020E1AFC
ldr r3, [r5, #4]!
ldrh r1, [r3, #0x38]
cmp r1, #0
bne _020E1ADC
_020E1AFC:
ldr r2, [r3]
ldr r1, _020E1BC0 ; =0x021E4F30
ldr r3, _020E1BC4 ; =0x021E4F44
str r2, [r1]
ldr r1, [r5]
ldr r2, _020E1BC8 ; =0x021E4F3C
ldr r4, [r1, #4]
ldr r1, _020E1BCC ; =0x021E4F34
str r4, [r3]
ldr r3, [r5]
ldr r6, _020E1BD0 ; =0x021E4F38
ldr r3, [r3, #8]
ldr r4, _020E1BD4 ; =0x021E4F40
str r3, [r2]
ldr r2, [r5]
ldr r3, _020E1BD8 ; =0x021E4F5C
ldr r7, [r2, #0xc]
ldr r2, _020E1BB4 ; =_02110FC8
str r7, [r1]
ldr r7, [r5]
ldr r1, _020E1BDC ; =_02110FC4
ldr r7, [r7, #0x10]
str r7, [r6]
ldr r6, [r5]
ldr r6, [r6, #0x14]
str r6, [r4]
ldr r4, [r5]
ldr r4, [r4, #0x18]
str r4, [r3]
ldr r3, [r5]
ldr r3, [r3, #0x1c]
str r3, [r2]
ldr r2, [r5]
add r2, r2, #0x20
str r2, [r1]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020E1B8C:
cmp r7, #2
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
bl OS_GetLockID
ldr r1, _020E1BE0 ; =0x021E4F60
strh r0, [r1]
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020E1BA8: .word 0x021E4F2C
_020E1BAC: .word 0x04000204
_020E1BB0: .word 0x0210E1DC
_020E1BB4: .word _02110FC8
_020E1BB8: .word 0x0210E1EC
_020E1BBC: .word 0x0210E1E0
_020E1BC0: .word 0x021E4F30
_020E1BC4: .word 0x021E4F44
_020E1BC8: .word 0x021E4F3C
_020E1BCC: .word 0x021E4F34
_020E1BD0: .word 0x021E4F38
_020E1BD4: .word 0x021E4F40
_020E1BD8: .word 0x021E4F5C
_020E1BDC: .word _02110FC4
_020E1BE0: .word 0x021E4F60
arm_func_end sub_020E1A3C
arm_func_start sub_020E1BE4
sub_020E1BE4: ; 0x020E1BE4
ldr r3, _020E1C10 ; =0x0A005555
mov r2, #0xaa
ldr r1, _020E1C14 ; =0x0A002AAA
strb r2, [r3]
mov r2, #0x55
strb r2, [r1]
mov r1, #0xb0
strb r1, [r3]
mov r1, #0xa000000
strb r0, [r1]
bx lr
.align 2, 0
_020E1C10: .word 0x0A005555
_020E1C14: .word 0x0A002AAA
arm_func_end sub_020E1BE4
arm_func_start sub_020E1C18
sub_020E1C18: ; 0x020E1C18
stmdb sp!, {r3, r4, r5, lr}
ldr r5, _020E1D10 ; =0x04000208
mov r0, #0
ldrh r2, [r5]
ldr r1, _020E1D14 ; =0x021E4F2C
ldr r4, _020E1D18 ; =0x0A005555
strh r0, [r5]
str r2, [r1, #0x1c]
mov r3, #0xaa
ldr r2, _020E1D1C ; =0x0A002AAA
strb r3, [r4]
mov r3, #0x55
strb r3, [r2]
mov r2, #0x90
strb r2, [r4]
ldrh r2, [r5]
ldr r1, [r1, #0x1c]
strh r1, [r5]
bl sub_020E1D24
ldr r4, _020E1D14 ; =0x021E4F2C
ldrh r0, [r4, #2]
cmp r0, #0
bne _020E1C84
_020E1C74:
bl sub_020E1D6C
ldrh r0, [r4, #2]
cmp r0, #0
beq _020E1C74
_020E1C84:
ldr r0, _020E1D20 ; =0x0A000001
bl sub_020E1DC8
mov r4, r0, lsl #0x18
mov r0, #0xa000000
bl sub_020E1DC8
ldr ip, _020E1D10 ; =0x04000208
orr r4, r0, r4, lsr #16
ldrh r2, [ip]
mov r0, #0
ldr r1, _020E1D14 ; =0x021E4F2C
strh r0, [ip]
ldr r5, _020E1D18 ; =0x0A005555
str r2, [r1, #0x1c]
mov r3, #0xaa
ldr r2, _020E1D1C ; =0x0A002AAA
strb r3, [r5]
mov r3, #0x55
strb r3, [r2]
mov r2, #0xf0
strb r2, [r5]
strb r2, [r5]
ldrh r2, [ip]
ldr r1, [r1, #0x1c]
strh r1, [ip]
bl sub_020E1D24
ldr r5, _020E1D14 ; =0x021E4F2C
ldrh r0, [r5, #2]
cmp r0, #0
bne _020E1D08
_020E1CF8:
bl sub_020E1D6C
ldrh r0, [r5, #2]
cmp r0, #0
beq _020E1CF8
_020E1D08:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E1D10: .word 0x04000208
_020E1D14: .word 0x021E4F2C
_020E1D18: .word 0x0A005555
_020E1D1C: .word 0x0A002AAA
_020E1D20: .word 0x0A000001
arm_func_end sub_020E1C18
arm_func_start sub_020E1D24
sub_020E1D24: ; 0x020E1D24
stmdb sp!, {r3, lr}
ldr r1, _020E1D64 ; =_02110FC4
ldr r2, _020E1D68 ; =0x021E4F2C
mov r3, #0
ldr r1, [r1, #4]
strh r3, [r2, #2]
mov r0, r0, lsl #1
ldrh r1, [r1, r0]
mov r0, r3
str r1, [r2, #0x20]
str r0, [r2, #0x24]
bl sub_020D34B0
ldr r2, _020E1D68 ; =0x021E4F2C
str r0, [r2, #0x28]
str r1, [r2, #0x2c]
ldmia sp!, {r3, pc}
.align 2, 0
_020E1D64: .word _02110FC4
_020E1D68: .word 0x021E4F2C
arm_func_end sub_020E1D24
arm_func_start sub_020E1D6C
sub_020E1D6C: ; 0x020E1D6C
stmdb sp!, {r3, lr}
bl sub_020D34B0
ldr r3, _020E1DC0 ; =0x021E4F2C
ldr r2, _020E1DC4 ; =0x000082EA
ldr ip, [r3, #0x28]
ldr r3, [r3, #0x2c]
subs ip, r0, ip
sbc r0, r1, r3
mov r1, r0, lsl #6
orr r1, r1, ip, lsr #26
mov r0, ip, lsl #6
mov r3, #0
bl _ll_udiv
ldr r2, _020E1DC0 ; =0x021E4F2C
ldr r3, [r2, #0x24]
ldr ip, [r2, #0x20]
cmp r3, r1
cmpeq ip, r0
movls r0, #1
strlsh r0, [r2, #2]
ldmia sp!, {r3, pc}
.align 2, 0
_020E1DC0: .word 0x021E4F2C
_020E1DC4: .word 0x000082EA
arm_func_end sub_020E1D6C
arm_func_start sub_020E1DC8
sub_020E1DC8: ; 0x020E1DC8
ldrb r0, [r0]
bx lr
arm_func_end sub_020E1DC8
arm_func_start sub_020E1DD0
sub_020E1DD0: ; 0x020E1DD0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r4, r0
mov r8, r1
mov r7, r2
mov r6, #0
bl sub_020E1D24
ldr r5, _020E1E54 ; =0x021E4F2C
_020E1DEC:
mov r0, r8
bl sub_020E1DC8
cmp r0, r7
beq _020E1E40
ldrh r0, [r5, #2]
cmp r0, #0
beq _020E1DEC
mov r0, r8
bl sub_020E1DC8
cmp r7, r0
beq _020E1E40
ldr r0, _020E1E58 ; =_02110FC4
ldr r0, [r0]
ldrh r0, [r0, #0x18]
cmp r0, #0xc2
ldreq r0, _020E1E5C ; =0x0A005555
moveq r1, #0xf0
streqb r1, [r0]
orr r0, r4, #0xc000
mov r0, r0, lsl #0x10
mov r6, r0, lsr #0x10
_020E1E40:
bl sub_020E1134
cmp r0, #0
moveq r6, #0x1000
mov r0, r6
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E1E54: .word 0x021E4F2C
_020E1E58: .word _02110FC4
_020E1E5C: .word 0x0A005555
arm_func_end sub_020E1DD0
arm_func_start sub_020E1E60
sub_020E1E60: ; 0x020E1E60
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, #0
bl sub_020E1D24
ldr r4, _020E1F0C ; =0x021E4F2C
_020E1E7C:
bl sub_020E1D6C
mov r0, r7
bl sub_020E1DC8
cmp r0, r6
beq _020E1EF8
tst r0, #0x20
beq _020E1EC4
mov r0, r7
bl sub_020E1DC8
cmp r6, r0
beq _020E1EF8
orr r0, r8, #0xa000
mov r0, r0, lsl #0x10
ldr r1, _020E1F10 ; =0x0A005555
mov r2, #0xf0
strb r2, [r1]
mov r5, r0, lsr #0x10
b _020E1EF8
_020E1EC4:
ldrh r0, [r4, #2]
cmp r0, #0
beq _020E1E7C
mov r0, r7
bl sub_020E1DC8
cmp r6, r0
beq _020E1EF8
orr r0, r8, #0xc000
mov r0, r0, lsl #0x10
ldr r1, _020E1F10 ; =0x0A005555
mov r2, #0xf0
strb r2, [r1]
mov r5, r0, lsr #0x10
_020E1EF8:
bl sub_020E1134
cmp r0, #0
moveq r5, #0x1000
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E1F0C: .word 0x021E4F2C
_020E1F10: .word 0x0A005555
arm_func_end sub_020E1E60
arm_func_start sub_020E1F14
sub_020E1F14: ; 0x020E1F14
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, _020E1FFC ; =0x021E4F2C
ldr r1, [r5]
ldrh r0, [r0]
str r1, [r4]
ldrh r5, [sp, #0x20]
ldr r6, [sp, #0x14]
ldr r7, [sp, #0x1c]
ldr r8, [sp, #0x18]
bl sub_020D14AC
ldr r3, _020E2000 ; =0x04000204
ldr r0, _020E2004 ; =_02110FC4
ldrh r2, [r3]
ldrh r1, [r3]
and r4, r2, #3
bic r1, r1, #3
orr r1, r1, #3
strh r1, [r3]
ldr r0, [r0]
ldr r0, [r0]
cmp r0, #0x20000
bne _020E1F98
mov r0, r5, lsl #0xc
mov r0, r0, lsr #0x10
bl sub_020E1BE4
and r5, r5, #0xf
_020E1F98:
ldr r0, _020E2004 ; =_02110FC4
cmp r8, #0
ldr r0, [r0]
sub r8, r8, #1
ldrh r0, [r0, #8]
mov r0, r5, lsl r0
add r0, r0, #0xa000000
add r1, r6, r0
beq _020E1FD0
_020E1FBC:
ldrb r0, [r1], #1
cmp r8, #0
sub r8, r8, #1
strb r0, [r7], #1
bne _020E1FBC
_020E1FD0:
ldr r2, _020E2000 ; =0x04000204
ldr r0, _020E1FFC ; =0x021E4F2C
ldrh r1, [r2]
bic r1, r1, #3
orr r1, r1, r4
strh r1, [r2]
ldrh r0, [r0]
bl sub_020D14CC
mov r0, #0
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E1FFC: .word 0x021E4F2C
_020E2000: .word 0x04000204
_020E2004: .word _02110FC4
arm_func_end sub_020E1F14
arm_func_start sub_020E2008
sub_020E2008: ; 0x020E2008
cmp r2, #0
sub r2, r2, #1
beq _020E2034
_020E2014:
ldrb ip, [r1], #1
ldrb r3, [r0], #1
cmp ip, r3
subne r0, r1, #1
bxne lr
cmp r2, #0
sub r2, r2, #1
bne _020E2014
_020E2034:
mov r0, #0
bx lr
arm_func_end sub_020E2008
arm_func_start sub_020E203C
sub_020E203C: ; 0x020E203C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, _020E210C ; =0x021E4F2C
ldr r1, [r5]
ldrh r0, [r0]
str r1, [r4]
ldrh r5, [sp, #0x20]
ldr r6, [sp, #0xc]
ldr r7, [sp, #0x18]
bl sub_020D14AC
ldr r3, _020E2110 ; =0x04000204
ldr r0, _020E2114 ; =_02110FC4
ldrh r2, [r3]
ldrh r1, [r3]
and r4, r2, #3
bic r1, r1, #3
orr r1, r1, #3
strh r1, [r3]
ldr r0, [r0]
ldr r0, [r0]
cmp r0, #0x20000
bne _020E20BC
mov r0, r5, lsl #0xc
mov r0, r0, lsr #0x10
bl sub_020E1BE4
and r5, r5, #0xf
_020E20BC:
ldr r1, _020E2114 ; =_02110FC4
mov r0, r6
ldr r1, [r1]
mov r2, r7
ldrh r1, [r1, #8]
mov r1, r5, lsl r1
add r1, r1, #0xa000000
bl sub_020E2008
ldr r3, _020E2110 ; =0x04000204
ldr r1, _020E210C ; =0x021E4F2C
ldrh r2, [r3]
mov r5, r0
bic r0, r2, #3
orr r0, r0, r4
strh r0, [r3]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, r5
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_020E210C: .word 0x021E4F2C
_020E2110: .word 0x04000204
_020E2114: .word _02110FC4
arm_func_end sub_020E203C
arm_func_start sub_020E2118
sub_020E2118: ; 0x020E2118
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
mov r4, r0
ldmia r4!, {r0, r1, r2, r3}
add ip, sp, #0
stmia ip!, {r0, r1, r2, r3}
ldmia r4!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldr r0, [r4]
mov r4, #0
str r0, [ip]
ldrh r5, [sp, #0x20]
ldr r6, [sp, #0xc]
ldr r7, [sp, #0x18]
_020E2150:
mov r0, r5
mov r1, r6
bl sub_020E21C4
cmp r0, #0
bne _020E2180
mov r0, r5
mov r1, r6
mov r2, r7
bl sub_020E21DC
cmp r0, #0
addeq sp, sp, #0x24
ldmeqia sp!, {r4, r5, r6, r7, pc}
_020E2180:
add r1, r4, #1
mov r1, r1, lsl #0x10
mov r4, r1, lsr #0x10
cmp r4, #3
blo _020E2150
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, pc}
arm_func_end sub_020E2118
arm_func_start sub_020E219C
sub_020E219C: ; 0x020E219C
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0x14]
str r2, [sp, #0x1c]
str r3, [sp, #0x18]
bl sub_020E1F14
add sp, sp, #0x24
ldmia sp!, {pc}
arm_func_end sub_020E219C
arm_func_start sub_020E21C4
sub_020E21C4: ; 0x020E21C4
stmdb sp!, {r3, lr}
ldr r2, _020E21D8 ; =0x021E4F2C
ldr r2, [r2, #4]
blx r2
ldmia sp!, {r3, pc}
.align 2, 0
_020E21D8: .word 0x021E4F2C
arm_func_end sub_020E21C4
arm_func_start sub_020E21DC
sub_020E21DC: ; 0x020E21DC
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0xc]
str r2, [sp, #0x18]
bl sub_020E203C
add sp, sp, #0x24
ldmia sp!, {pc}
arm_func_end sub_020E21DC
arm_func_start sub_020E2200
sub_020E2200:
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
str r2, [sp, #0x18]
ldr r1, _020E222C ; =sub_020E2118
add r0, sp, #0
mov r2, r3
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E222C: .word sub_020E2118
arm_func_end sub_020E2200
arm_func_start sub_020E2230
sub_020E2230: ; 0x020E2230
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020E22FC ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r0, _020E2300 ; =0x04000204
ldr r1, _020E2304 ; =_02110FC4
ldrh r3, [r0]
ldr r2, [r1]
ldrh r1, [r0]
ldr r4, [r2, #0x10]
mov r2, #0
bic r1, r1, #3
orr r1, r1, r4
strh r1, [r0]
ldrh r4, [r0, #4]
ldr r1, _020E2308 ; =0x021E4F48
ldr lr, _020E230C ; =0x0A005555
strh r2, [r0, #4]
str r4, [r1]
mov r5, #0xaa
ldr r4, _020E2310 ; =0x0A002AAA
strb r5, [lr]
mov ip, #0x55
strb ip, [r4]
mov r2, #0x80
strb r2, [lr]
strb r5, [lr]
strb ip, [r4]
mov r2, #0x10
strb r2, [lr]
ldrh r2, [r0, #4]
ldr r2, [r1]
ldr r1, _020E2314 ; =0x021E4F5C
strh r2, [r0, #4]
ldr r4, [r1]
mov r0, #3
mov r1, #0xa000000
mov r2, #0xff
and r5, r3, #3
blx r4
ldr r3, _020E2300 ; =0x04000204
ldr r1, _020E22FC ; =0x021E4F2C
ldrh r2, [r3]
mov r4, r0
bic r0, r2, #3
orr r0, r0, r5
strh r0, [r3]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E22FC: .word 0x021E4F2C
_020E2300: .word 0x04000204
_020E2304: .word _02110FC4
_020E2308: .word 0x021E4F48
_020E230C: .word 0x0A005555
_020E2310: .word 0x0A002AAA
_020E2314: .word 0x021E4F5C
arm_func_end sub_020E2230
arm_func_start sub_020E2318
sub_020E2318: ; 0x020E2318
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r1, [r5]
ldr r0, _020E2424 ; =0x021E4F2C
str r1, [r4]
ldrh r1, [sp, #0x20]
ldrh r0, [r0]
mov r1, r1, lsl #7
add r5, r1, #0xa000000
bl sub_020D14AC
ldr ip, _020E2428 ; =0x04000204
ldr r1, _020E242C ; =_02110FC4
ldrh r0, [ip]
ldr r1, [r1]
ldrh r2, [ip]
ldr r3, [r1, #0x10]
mov r1, #0
bic r2, r2, #3
orr r2, r2, r3
strh r2, [ip]
ldrh r3, [ip, #4]
ldr r4, _020E2430 ; =0x0A005555
mov r2, #0xaa
strh r1, [ip, #4]
strb r2, [r4]
ldr r1, _020E2434 ; =0x0A002AAA
mov r2, #0x55
strb r2, [r1]
mov r1, #0xa0
strb r1, [r4]
and r4, r0, #3
mov r0, #0x80
mov r2, #0xff
_020E23B4:
strb r2, [r5], #1
subs r0, r0, #1
bne _020E23B4
ldr lr, _020E2438 ; =0x04000208
ldr ip, _020E243C ; =0x021E4F5C
ldrh r0, [lr]
sub r1, r5, #1
strh r3, [lr]
ldr r3, [ip]
mov r0, #1
blx r3
movs r5, r0
beq _020E23F8
and r0, r5, #0xff00
orr r0, r0, #2
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
_020E23F8:
ldr r2, _020E2428 ; =0x04000204
ldr r0, _020E2424 ; =0x021E4F2C
ldrh r1, [r2]
bic r1, r1, #3
orr r1, r1, r4
strh r1, [r2]
ldrh r0, [r0]
bl sub_020D14CC
mov r0, r5
add sp, sp, #0x24
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020E2424: .word 0x021E4F2C
_020E2428: .word 0x04000204
_020E242C: .word _02110FC4
_020E2430: .word 0x0A005555
_020E2434: .word 0x0A002AAA
_020E2438: .word 0x04000208
_020E243C: .word 0x021E4F5C
arm_func_end sub_020E2318
arm_func_start sub_020E2440
sub_020E2440: ; 0x020E2440
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, [r5]
str r0, [r4]
ldrh r0, [sp, #0x20]
cmp r0, #0x10
addhs sp, sp, #0x24
ldrhs r0, _020E24E4 ; =0x000080FF
ldmhsia sp!, {r4, r5, r6, r7, pc}
mov r0, r0, lsl #0x15
mov r6, r0, lsr #0x10
mov r5, #0
mov r4, #2
_020E248C:
mov r7, r4
_020E2490:
mov r0, r6
bl sub_020E27A8
cmp r0, #0
beq _020E24B0
sub r1, r7, #1
mov r1, r1, lsl #0x10
movs r7, r1, lsr #0x10
bne _020E2490
_020E24B0:
add r1, r6, #1
mov r1, r1, lsl #0x10
cmp r0, #0
mov r6, r1, lsr #0x10
addne sp, sp, #0x24
ldmneia sp!, {r4, r5, r6, r7, pc}
add r1, r5, #1
mov r1, r1, lsl #0x10
mov r5, r1, lsr #0x10
cmp r5, #0x20
blo _020E248C
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_020E24E4: .word 0x000080FF
arm_func_end sub_020E2440
arm_func_start sub_020E24E8
sub_020E24E8: ; 0x020E24E8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, _020E25E8 ; =0x021E4F2C
ldr r1, [r5]
ldrh r0, [r0]
str r1, [r4]
ldr r5, [sp, #0xc]
bl sub_020D14AC
ldr r1, _020E25EC ; =0x04000204
ldr r2, _020E25F0 ; =_02110FC4
ldrh r0, [r1]
ldr r3, [r2]
ldrh r2, [r1]
ldr r4, [r3, #0x10]
mov r3, #0
bic r2, r2, #3
orr r2, r2, r4
strh r2, [r1]
ldrh ip, [sp, #0x20]
ldrh r2, [r1, #4]
ldr r4, _020E25F4 ; =0x0A005555
mov ip, ip, lsl #7
strh r3, [r1, #4]
mov r3, #0xaa
strb r3, [r4]
ldr r1, _020E25F8 ; =0x0A002AAA
mov r3, #0x55
strb r3, [r1]
mov r1, #0xa0
strb r1, [r4]
and r4, r0, #3
add lr, ip, #0xa000000
mov r1, #0x80
_020E2584:
ldrb r0, [r5], #1
subs r1, r1, #1
strb r0, [lr], #1
bne _020E2584
ldr ip, _020E25FC ; =0x04000208
ldr r3, _020E2600 ; =0x021E4F5C
ldrh r0, [ip]
sub r1, lr, #1
mov r0, #1
strh r2, [ip]
ldrb r2, [r5, #-1]
ldr r3, [r3]
blx r3
ldr r3, _020E25EC ; =0x04000204
ldr r1, _020E25E8 ; =0x021E4F2C
ldrh r2, [r3]
mov r5, r0
bic r0, r2, #3
orr r0, r0, r4
strh r0, [r3]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, r5
add sp, sp, #0x24
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020E25E8: .word 0x021E4F2C
_020E25EC: .word 0x04000204
_020E25F0: .word _02110FC4
_020E25F4: .word 0x0A005555
_020E25F8: .word 0x0A002AAA
_020E25FC: .word 0x04000208
_020E2600: .word 0x021E4F5C
arm_func_end sub_020E24E8
arm_func_start sub_020E2604
sub_020E2604: ; 0x020E2604
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, [r5]
str r0, [r4]
ldrh r0, [sp, #0x20]
ldr r6, [sp, #0xc]
cmp r0, #0x10
addhs sp, sp, #0x24
ldrhs r0, _020E26C0 ; =0x000080FF
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, pc}
ldr r7, _020E26C4 ; =0x021E4F28
mov r0, r0, lsl #0x15
mov r1, #0x1000
strh r1, [r7]
mov r5, r0, lsr #0x10
mov r4, #2
_020E265C:
mov r8, r4
_020E2660:
mov r0, r5
mov r1, r6
bl sub_020E27CC
cmp r0, #0
beq _020E2684
sub r1, r8, #1
mov r1, r1, lsl #0x10
movs r8, r1, lsr #0x10
bne _020E2660
_020E2684:
cmp r0, #0
addne sp, sp, #0x24
ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc}
ldrh r2, [r7]
add r1, r5, #1
mov r1, r1, lsl #0x10
sub r2, r2, #0x80
strh r2, [r7]
ldrh r2, [r7]
add r6, r6, #0x80
mov r5, r1, lsr #0x10
cmp r2, #0
bne _020E265C
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E26C0: .word 0x000080FF
_020E26C4: .word 0x021E4F28
arm_func_end sub_020E2604
arm_func_start sub_020E26C8
sub_020E26C8: ; 0x020E26C8
stmdb sp!, {lr}
sub sp, sp, #0x24
add r0, sp, #0
bl sub_020E2230
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
bl sub_020E2440
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0xc]
bl sub_020E2604
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
ldr r1, _020E2754 ; =sub_020E2230
mov r2, r0
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E2754: .word sub_020E2230
arm_func_end sub_020E26C8
arm_func_start sub_020E2758
sub_020E2758: ; 0x020E2758
stmdb sp!, {lr}
sub sp, sp, #0x24
mov r2, r1
strh r0, [sp, #0x20]
ldr r1, _020E277C ; =sub_020E2440
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E277C: .word sub_020E2440
arm_func_end sub_020E2758
arm_func_start sub_020E2780
sub_020E2780: ; 0x020E2780
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
ldr r1, _020E27A4 ; =sub_020E2604
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E27A4: .word sub_020E2604
arm_func_end sub_020E2780
arm_func_start sub_020E27A8
sub_020E27A8: ; 0x020E27A8
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
bl sub_020E2318
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
arm_func_end sub_020E27A8
arm_func_start sub_020E27CC
sub_020E27CC: ; 0x020E27CC
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0xc]
bl sub_020E24E8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
mov r2, r1
strh r0, [sp, #0x20]
ldr r1, _020E2818 ; =sub_020E2318
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E2818: .word sub_020E2318
arm_func_end sub_020E27CC
arm_func_start sub_020E281C
sub_020E281C: ; 0x020E281C
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
ldr r1, _020E2840 ; =sub_020E24E8
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E2840: .word sub_020E24E8
arm_func_end sub_020E281C
arm_func_start sub_020E2844
sub_020E2844: ; 0x020E2844
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020E2910 ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r0, _020E2914 ; =0x04000204
ldr r1, _020E2918 ; =_02110FC4
ldrh r3, [r0]
ldr r2, [r1]
ldrh r1, [r0]
ldr r4, [r2, #0x10]
mov r2, #0
bic r1, r1, #3
orr r1, r1, r4
strh r1, [r0]
ldrh r4, [r0, #4]
ldr r1, _020E291C ; =0x021E4F48
ldr lr, _020E2920 ; =0x0A005555
strh r2, [r0, #4]
str r4, [r1]
mov r5, #0xaa
ldr r4, _020E2924 ; =0x0A002AAA
strb r5, [lr]
mov ip, #0x55
strb ip, [r4]
mov r2, #0x80
strb r2, [lr]
strb r5, [lr]
strb ip, [r4]
mov r2, #0x10
strb r2, [lr]
ldrh r2, [r0, #4]
ldr r2, [r1]
ldr r1, _020E2928 ; =0x021E4F5C
strh r2, [r0, #4]
ldr r4, [r1]
mov r0, #3
mov r1, #0xa000000
mov r2, #0xff
and r5, r3, #3
blx r4
ldr r3, _020E2914 ; =0x04000204
ldr r1, _020E2910 ; =0x021E4F2C
ldrh r2, [r3]
mov r4, r0
bic r0, r2, #3
orr r0, r0, r5
strh r0, [r3]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E2910: .word 0x021E4F2C
_020E2914: .word 0x04000204
_020E2918: .word _02110FC4
_020E291C: .word 0x021E4F48
_020E2920: .word 0x0A005555
_020E2924: .word 0x0A002AAA
_020E2928: .word 0x021E4F5C
arm_func_end sub_020E2844
arm_func_start sub_020E292C
sub_020E292C: ; 0x020E292C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, [r5]
str r0, [r4]
ldrh r4, [sp, #0x20]
cmp r4, #0x10
addhs sp, sp, #0x24
ldrhs r0, _020E2A40 ; =0x000080FF
ldmhsia sp!, {r3, r4, r5, r6, pc}
ldr r0, _020E2A44 ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r0, _020E2A48 ; =0x04000204
ldr r1, _020E2A4C ; =_02110FC4
ldrh r3, [r0]
ldr r5, [r1]
ldrh r2, [r0]
ldr r6, [r5, #0x10]
mov r5, #0
bic r2, r2, #3
orr r2, r2, r6
strh r2, [r0]
ldr r2, [r1]
ldrh r1, [r0, #4]
ldrh ip, [r2, #8]
ldr r2, _020E2A50 ; =0x021E4F48
ldr lr, _020E2A54 ; =0x0A005555
strh r5, [r0, #4]
mov r6, r4, lsl ip
str r1, [r2]
mov r5, #0xaa
ldr r4, _020E2A58 ; =0x0A002AAA
strb r5, [lr]
mov ip, #0x55
strb ip, [r4]
mov r1, #0x80
strb r1, [lr]
strb r5, [lr]
strb ip, [r4]
add r1, r6, #0xa000000
mov r4, #0x30
strb r4, [r1]
ldrh r4, [r0, #4]
ldr r4, [r2]
ldr r2, _020E2A5C ; =0x021E4F5C
strh r4, [r0, #4]
ldr r4, [r2]
mov r0, #2
mov r2, #0xff
and r5, r3, #3
blx r4
ldr r3, _020E2A48 ; =0x04000204
ldr r1, _020E2A44 ; =0x021E4F2C
ldrh r2, [r3]
mov r4, r0
bic r0, r2, #3
orr r0, r0, r5
strh r0, [r3]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, r4
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_020E2A40: .word 0x000080FF
_020E2A44: .word 0x021E4F2C
_020E2A48: .word 0x04000204
_020E2A4C: .word _02110FC4
_020E2A50: .word 0x021E4F48
_020E2A54: .word 0x0A005555
_020E2A58: .word 0x0A002AAA
_020E2A5C: .word 0x021E4F5C
arm_func_end sub_020E292C
arm_func_start sub_020E2A60
sub_020E2A60: ; 0x020E2A60
stmdb sp!, {r3, lr}
ldr ip, _020E2AA8 ; =0x0A005555
mov r3, #0xaa
ldr r2, _020E2AAC ; =0x0A002AAA
strb r3, [ip]
mov r3, #0x55
mov lr, r0
strb r3, [r2]
mov r0, #0xa0
strb r0, [ip]
ldrb r2, [lr]
ldr r3, _020E2AB0 ; =0x021E4F5C
mov r0, #1
strb r2, [r1]
ldrb r2, [lr]
ldr r3, [r3]
blx r3
ldmia sp!, {r3, pc}
.align 2, 0
_020E2AA8: .word 0x0A005555
_020E2AAC: .word 0x0A002AAA
_020E2AB0: .word 0x021E4F5C
arm_func_end sub_020E2A60
arm_func_start sub_020E2AB4
sub_020E2AB4: ; 0x020E2AB4
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, [r5]
str r0, [r4]
ldrh r8, [sp, #0x20]
ldr r5, [sp, #0xc]
cmp r8, #0x10
addhs sp, sp, #0x24
ldrhs r0, _020E2C64 ; =0x000080FF
ldmhsia sp!, {r4, r5, r6, r7, r8, sb, pc}
ldr r0, _020E2C68 ; =_02110FC4
ldr r6, _020E2C6C ; =sub_020E2C84
ldr r0, [r0]
mov sb, #0
ldrh r0, [r0, #8]
mov r0, r8, lsl r0
add r7, r0, #0xa000000
_020E2B10:
mov r0, r8
bl sub_020E2D64
movs r4, r0
bne _020E2B38
mov r0, r7
mov r1, r6
bl sub_020E2CB8
mov r0, r0, lsl #0x10
movs r4, r0, lsr #0x10
beq _020E2B58
_020E2B38:
add r0, sb, #1
mov r0, r0, lsl #0x10
cmp sb, #0x50
mov sb, r0, lsr #0x10
bne _020E2B10
add sp, sp, #0x24
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_020E2B58:
mov r6, #1
cmp sb, #0
movne r6, #6
cmp r6, #1
mov sb, #1
blo _020E2B8C
_020E2B70:
mov r0, r8
bl sub_020E2D64
add r0, sb, #1
mov r0, r0, lsl #0x10
cmp r6, r0, lsr #16
mov sb, r0, lsr #0x10
bhs _020E2B70
_020E2B8C:
ldr r0, _020E2C70 ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r1, _020E2C74 ; =0x04000204
ldr r2, _020E2C68 ; =_02110FC4
ldrh r0, [r1]
ldr r6, [r2]
ldrh r3, [r1]
ldr r8, [r6, #0x10]
ldr r6, _020E2C78 ; =0x021E4F28
bic r3, r3, #3
orr r3, r3, r8
strh r3, [r1]
ldr r2, [r2]
mov r3, #0
ldr r8, [r2, #4]
ldr r2, _020E2C7C ; =0x021E4F48
strh r8, [r6]
ldrh sb, [r1, #4]
and r8, r0, #3
strh r3, [r1, #4]
ldrh r0, [r6]
str sb, [r2]
cmp r0, #0
beq _020E2C24
_020E2BF0:
mov r0, r5
mov r1, r7
bl sub_020E2A60
movs r4, r0
bne _020E2C24
ldrh r0, [r6]
add r5, r5, #1
add r7, r7, #1
sub r0, r0, #1
strh r0, [r6]
ldrh r0, [r6]
cmp r0, #0
bne _020E2BF0
_020E2C24:
ldr r3, _020E2C80 ; =0x04000208
ldr r0, _020E2C7C ; =0x021E4F48
ldrh r1, [r3]
ldr r0, [r0]
sub r2, r3, #4
strh r0, [r3]
ldrh r1, [r2]
ldr r0, _020E2C70 ; =0x021E4F2C
bic r1, r1, #3
orr r1, r1, r8
strh r1, [r2]
ldrh r0, [r0]
bl sub_020D14CC
mov r0, r4
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020E2C64: .word 0x000080FF
_020E2C68: .word _02110FC4
_020E2C6C: .word sub_020E2C84
_020E2C70: .word 0x021E4F2C
_020E2C74: .word 0x04000204
_020E2C78: .word 0x021E4F28
_020E2C7C: .word 0x021E4F48
_020E2C80: .word 0x04000208
arm_func_end sub_020E2AB4
arm_func_start sub_020E2C84
sub_020E2C84: ; 0x020E2C84
ldr r1, _020E2CB4 ; =_02110FC4
ldr r1, [r1]
ldr r2, [r1, #4]
cmp r2, #0
beq _020E2CAC
_020E2C98:
ldrb r1, [r0], #1
cmp r1, #0xff
bne _020E2CAC
subs r2, r2, #1
bne _020E2C98
_020E2CAC:
mov r0, r2
bx lr
.align 2, 0
_020E2CB4: .word _02110FC4
arm_func_end sub_020E2C84
arm_func_start sub_020E2CB8
sub_020E2CB8: ; 0x020E2CB8
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _020E2D34 ; =0x021E4F2C
mov r5, r0
ldrh r0, [r2]
mov r4, r1
bl sub_020D14AC
ldr ip, _020E2D38 ; =0x04000204
ldr r0, _020E2D3C ; =_02110FC4
ldrh r3, [ip]
ldr r0, [r0]
ldrh r1, [ip]
ldr r2, [r0, #0x10]
mov r0, r5
bic r1, r1, #3
orr r1, r1, r2
strh r1, [ip]
and r6, r3, #3
mov r5, #0
blx r4
cmp r0, #0
ldr r2, _020E2D38 ; =0x04000204
ldr r0, _020E2D34 ; =0x021E4F2C
ldrh r1, [r2]
ldrne r5, _020E2D40 ; =0x00008004
bic r1, r1, #3
orr r1, r1, r6
strh r1, [r2]
ldrh r0, [r0]
bl sub_020D14CC
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020E2D34: .word 0x021E4F2C
_020E2D38: .word 0x04000204
_020E2D3C: .word _02110FC4
_020E2D40: .word 0x00008004
arm_func_end sub_020E2CB8
arm_func_start sub_020E2D44
sub_020E2D44: ; 0x020E2D44
stmdb sp!, {lr}
sub sp, sp, #0x24
add r0, sp, #0
bl sub_020E2844
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
arm_func_end sub_020E2D44
arm_func_start sub_020E2D64
sub_020E2D64: ; 0x020E2D64
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
bl sub_020E292C
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0xc]
bl sub_020E2AB4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
ldr r1, _020E2DD0 ; =sub_020E2844
mov r2, r0
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E2DD0: .word sub_020E2844
arm_func_end sub_020E2D64
arm_func_start sub_020E2DD4
sub_020E2DD4: ; 0x020E2DD4
stmdb sp!, {lr}
sub sp, sp, #0x24
mov r2, r1
strh r0, [sp, #0x20]
ldr r1, _020E2DF8 ; =sub_020E292C
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E2DF8: .word sub_020E292C
arm_func_end sub_020E2DD4
arm_func_start sub_020E2DFC
sub_020E2DFC: ; 0x020E2DFC
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
ldr r1, _020E2E20 ; =sub_020E2AB4
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E2E20: .word sub_020E2AB4
arm_func_end sub_020E2DFC
arm_func_start sub_020E2E24
sub_020E2E24: ; 0x020E2E24
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _020E2EF0 ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r0, _020E2EF4 ; =0x04000204
ldr r1, _020E2EF8 ; =_02110FC4
ldrh r3, [r0]
ldr r2, [r1]
ldrh r1, [r0]
ldr r4, [r2, #0x10]
mov r2, #0
bic r1, r1, #3
orr r1, r1, r4
strh r1, [r0]
ldrh r4, [r0, #4]
ldr r1, _020E2EFC ; =0x021E4F48
ldr lr, _020E2F00 ; =0x0A005555
strh r2, [r0, #4]
str r4, [r1]
mov r5, #0xaa
ldr r4, _020E2F04 ; =0x0A002AAA
strb r5, [lr]
mov ip, #0x55
strb ip, [r4]
mov r2, #0x80
strb r2, [lr]
strb r5, [lr]
strb ip, [r4]
mov r2, #0x10
strb r2, [lr]
ldrh r2, [r0, #4]
ldr r2, [r1]
ldr r1, _020E2F08 ; =0x021E4F5C
strh r2, [r0, #4]
ldr r4, [r1]
mov r0, #3
mov r1, #0xa000000
mov r2, #0xff
and r5, r3, #3
blx r4
ldr r3, _020E2EF4 ; =0x04000204
ldr r1, _020E2EF0 ; =0x021E4F2C
ldrh r2, [r3]
mov r4, r0
bic r0, r2, #3
orr r0, r0, r5
strh r0, [r3]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E2EF0: .word 0x021E4F2C
_020E2EF4: .word 0x04000204
_020E2EF8: .word _02110FC4
_020E2EFC: .word 0x021E4F48
_020E2F00: .word 0x0A005555
_020E2F04: .word 0x0A002AAA
_020E2F08: .word 0x021E4F5C
arm_func_end sub_020E2E24
arm_func_start sub_020E2F0C
sub_020E2F0C: ; 0x020E2F0C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x28
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #4
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, _020E3074 ; =_02110FC4
ldr r1, [r5]
ldr r0, [r0]
str r1, [r4]
ldrh r4, [sp, #0x24]
ldrh r0, [r0, #0xa]
cmp r4, r0
addhs sp, sp, #0x28
ldrhs r0, _020E3078 ; =0x000080FF
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, _020E307C ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r5, _020E3080 ; =0x04000204
ldr r0, _020E3074 ; =_02110FC4
ldrh r3, [r5]
ldr r2, [r0]
ldrh r1, [r5]
mov r0, r4, lsl #0xc
ldr r2, [r2, #0x10]
bic r1, r1, #3
orr r1, r1, r2
strh r1, [r5]
and r1, r3, #3
mov r0, r0, lsr #0x10
str r1, [sp]
bl sub_020E1BE4
and sl, r4, #0xf
mov r8, #0
add r7, r5, #4
ldr r5, _020E3084 ; =0x0A005555
ldr r4, _020E3088 ; =0x021E4F48
mov fp, r8
mov r6, #0xaa
_020E2FB4:
ldr r0, _020E3074 ; =_02110FC4
ldrh r3, [r7]
ldr r0, [r0]
mov sb, #0x55
ldrh r1, [r0, #8]
mov r0, #2
mov r2, #0xff
strh fp, [r7]
str r3, [r4]
ldr r3, _020E308C ; =0x0A002AAA
strb r6, [r5]
strb sb, [r3]
mov r3, #0x80
strb r3, [r5]
mov r1, sl, lsl r1
ldr r3, _020E308C ; =0x0A002AAA
strb r6, [r5]
strb sb, [r3]
add r1, r1, #0xa000000
mov r3, #0x30
strb r3, [r1]
ldrh r3, [r7]
ldr r3, [r4]
strh r3, [r7]
ldr r3, _020E3090 ; =0x021E4F5C
ldr r3, [r3]
blx r3
mov sb, r0
tst sb, #0xa000
beq _020E3044
cmp r8, #0
bne _020E3044
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, lsr #0x10
b _020E2FB4
_020E3044:
ldr r2, _020E3080 ; =0x04000204
ldr r1, _020E307C ; =0x021E4F2C
ldrh r0, [r2]
bic r3, r0, #3
ldr r0, [sp]
orr r0, r3, r0
strh r0, [r2]
ldrh r0, [r1]
bl sub_020D14CC
mov r0, sb
add sp, sp, #0x28
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020E3074: .word _02110FC4
_020E3078: .word 0x000080FF
_020E307C: .word 0x021E4F2C
_020E3080: .word 0x04000204
_020E3084: .word 0x0A005555
_020E3088: .word 0x021E4F48
_020E308C: .word 0x0A002AAA
_020E3090: .word 0x021E4F5C
arm_func_end sub_020E2F0C
arm_func_start sub_020E3094
sub_020E3094: ; 0x020E3094
stmdb sp!, {r3, lr}
ldr ip, _020E30DC ; =0x0A005555
mov r3, #0xaa
ldr r2, _020E30E0 ; =0x0A002AAA
strb r3, [ip]
mov r3, #0x55
mov lr, r0
strb r3, [r2]
mov r0, #0xa0
strb r0, [ip]
ldrb r2, [lr]
ldr r3, _020E30E4 ; =0x021E4F5C
mov r0, #1
strb r2, [r1]
ldrb r2, [lr]
ldr r3, [r3]
blx r3
ldmia sp!, {r3, pc}
.align 2, 0
_020E30DC: .word 0x0A005555
_020E30E0: .word 0x0A002AAA
_020E30E4: .word 0x021E4F5C
arm_func_end sub_020E3094
arm_func_start sub_020E30E8
sub_020E30E8: ; 0x020E30E8
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, _020E3244 ; =_02110FC4
ldr r1, [r5]
ldr r0, [r0]
str r1, [r4]
ldrh r4, [sp, #0x20]
ldrh r0, [r0, #0xa]
ldr r7, [sp, #0xc]
cmp r4, r0
addhs sp, sp, #0x24
ldrhs r0, _020E3248 ; =0x000080FF
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, pc}
mov r0, r4
bl sub_020E3280
movs r6, r0
addne sp, sp, #0x24
ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc}
ldr r0, _020E324C ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r5, _020E3250 ; =0x04000204
ldr r0, _020E3244 ; =_02110FC4
ldrh r3, [r5]
ldr r2, [r0]
ldrh r1, [r5]
mov r0, r4, lsl #0xc
ldr r2, [r2, #0x10]
bic r1, r1, #3
orr r1, r1, r2
strh r1, [r5]
mov r0, r0, lsr #0x10
and r5, r3, #3
bl sub_020E1BE4
ldr r0, _020E3244 ; =_02110FC4
ldr r8, _020E3254 ; =0x021E4F28
ldr r2, [r0]
ldr r1, _020E3258 ; =0x04000208
ldr r0, [r2, #4]
and r4, r4, #0xf
strh r0, [r8]
ldrh r3, [r2, #8]
ldrh r2, [r1]
mov r0, #0
mov r3, r4, lsl r3
strh r0, [r1]
ldrh r1, [r8]
ldr r0, _020E325C ; =0x021E4F48
add r4, r3, #0xa000000
str r2, [r0]
cmp r1, #0
beq _020E3204
_020E31D0:
mov r0, r7
mov r1, r4
bl sub_020E3094
movs r6, r0
bne _020E3204
ldrh r0, [r8]
add r7, r7, #1
add r4, r4, #1
sub r0, r0, #1
strh r0, [r8]
ldrh r0, [r8]
cmp r0, #0
bne _020E31D0
_020E3204:
ldr r3, _020E3258 ; =0x04000208
ldr r0, _020E325C ; =0x021E4F48
ldrh r1, [r3]
ldr r0, [r0]
sub r2, r3, #4
strh r0, [r3]
ldrh r1, [r2]
ldr r0, _020E324C ; =0x021E4F2C
bic r1, r1, #3
orr r1, r1, r5
strh r1, [r2]
ldrh r0, [r0]
bl sub_020D14CC
mov r0, r6
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E3244: .word _02110FC4
_020E3248: .word 0x000080FF
_020E324C: .word 0x021E4F2C
_020E3250: .word 0x04000204
_020E3254: .word 0x021E4F28
_020E3258: .word 0x04000208
_020E325C: .word 0x021E4F48
arm_func_end sub_020E30E8
arm_func_start sub_020E3260
sub_020E3260: ; 0x020E3260
stmdb sp!, {lr}
sub sp, sp, #0x24
add r0, sp, #0
bl sub_020E2E24
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
arm_func_end sub_020E3260
arm_func_start sub_020E3280
sub_020E3280: ; 0x020E3280
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
bl sub_020E2F0C
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0xc]
bl sub_020E30E8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
ldr r1, _020E32EC ; =sub_020E2E24
mov r2, r0
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E32EC: .word sub_020E2E24
arm_func_end sub_020E3280
arm_func_start sub_020E32F0
sub_020E32F0: ; 0x020E32F0
stmdb sp!, {lr}
sub sp, sp, #0x24
mov r2, r1
strh r0, [sp, #0x20]
ldr r1, _020E3314 ; =sub_020E2F0C
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E3314: .word sub_020E2F0C
arm_func_end sub_020E32F0
arm_func_start sub_020E3318
sub_020E3318: ; 0x020E3318
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
ldr r1, _020E333C ; =sub_020E30E8
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E333C: .word sub_020E30E8
arm_func_end sub_020E3318
arm_func_start sub_020E3340
sub_020E3340: ; 0x020E3340
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x24
mov r5, r0
ldmia r5!, {r0, r1, r2, r3}
add r4, sp, #0
stmia r4!, {r0, r1, r2, r3}
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldr r0, _020E345C ; =_02110FC4
ldr r1, [r5]
ldr r0, [r0]
str r1, [r4]
ldrh r4, [sp, #0x20]
ldrh r0, [r0, #0xa]
ldr r7, [sp, #0xc]
cmp r4, r0
addhs sp, sp, #0x24
ldrhs r0, _020E3460 ; =0x000080FF
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, pc}
mov r0, r4
bl sub_020E2D64
movs r6, r0
addne sp, sp, #0x24
ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc}
ldr r0, _020E3464 ; =0x021E4F2C
ldrh r0, [r0]
bl sub_020D14AC
ldr r5, _020E3468 ; =0x04000204
ldr r0, _020E345C ; =_02110FC4
ldrh r3, [r5]
ldr r2, [r0]
ldrh r1, [r5]
ldr r2, [r2, #0x10]
ldr r8, _020E346C ; =0x021E4F28
bic r1, r1, #3
orr r1, r1, r2
strh r1, [r5]
ldr r1, [r0]
and r5, r3, #3
ldr r0, [r1, #4]
strh r0, [r8]
ldrh r1, [r1, #8]
ldrh r0, [r8]
mov r1, r4, lsl r1
cmp r0, #0
add r4, r1, #0xa000000
beq _020E3430
_020E33FC:
mov r0, r7
mov r1, r4
bl sub_020E2A60
movs r6, r0
bne _020E3430
ldrh r0, [r8]
add r7, r7, #1
add r4, r4, #1
sub r0, r0, #1
strh r0, [r8]
ldrh r0, [r8]
cmp r0, #0
bne _020E33FC
_020E3430:
ldr r2, _020E3468 ; =0x04000204
ldr r0, _020E3464 ; =0x021E4F2C
ldrh r1, [r2]
bic r1, r1, #3
orr r1, r1, r5
strh r1, [r2]
ldrh r0, [r0]
bl sub_020D14CC
mov r0, r6
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020E345C: .word _02110FC4
_020E3460: .word 0x000080FF
_020E3464: .word 0x021E4F2C
_020E3468: .word 0x04000204
_020E346C: .word 0x021E4F28
arm_func_end sub_020E3340
arm_func_start sub_020E3470
sub_020E3470: ; 0x020E3470
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0
str r1, [sp, #0xc]
bl sub_020E3340
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {pc}
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
ldr r1, _020E34BC ; =sub_020E3340
add r0, sp, #0
bl sub_020E366C
add sp, sp, #0x24
ldmia sp!, {pc}
.align 2, 0
_020E34BC: .word sub_020E3340
arm_func_end sub_020E3470
arm_func_start sub_020E34C0
sub_020E34C0: ; 0x020E34C0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020E353C ; =0x021E4F68
mov r4, r0
ldr r0, [r1]
cmp r0, #0
bne _020E352C
add r0, r5, #0xc4
str r5, [r1]
bl sub_020E3568
ldr r0, _020E3540 ; =0x021E4F6C
bl sub_020E3568
mov r0, #0
str r0, [r5, #0xc0]
mov r2, #0x400
ldr r1, _020E3544 ; =sub_020E357C
ldr r3, _020E3548 ; =0x021E5390
mov r0, r5
str r2, [sp]
mov r2, #0x14
str r2, [sp, #4]
mov r2, r5
bl sub_020D1AD4
mov r0, r5
bl sub_020D1F34
_020E352C:
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020E353C: .word 0x021E4F68
_020E3540: .word 0x021E4F6C
_020E3544: .word sub_020E357C
_020E3548: .word 0x021E5390
arm_func_end sub_020E34C0
arm_func_start sub_020E354C
sub_020E354C: ; 0x020E354C
ldr r0, _020E3564 ; =0x021E4F68
ldr r0, [r0]
cmp r0, #0
movne r0, #1
moveq r0, #0
bx lr
.align 2, 0
_020E3564: .word 0x021E4F68
arm_func_end sub_020E354C
arm_func_start sub_020E3568
sub_020E3568: ; 0x020E3568
ldr ip, _020E3578 ; =MI_CpuFill8
mov r1, #0
mov r2, #0x24
bx ip
.align 2, 0
_020E3578: .word MI_CpuFill8
arm_func_end sub_020E3568
arm_func_start sub_020E357C
sub_020E357C: ; 0x020E357C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
mov r4, #0
mov r8, r0
add r6, sp, #0
mov sl, r4
mov sb, r4
mov r5, r4
mov fp, #0x24
_020E35A0:
mov r0, r6
mov r1, r5
mov r2, fp
bl MI_CpuFill8
bl OS_DisableInterrupts
ldr r1, [r8, #0xc0]
mov r7, r0
cmp r1, #0
bne _020E35D8
_020E35C4:
mov r0, r4
bl sub_020D1E7C
ldr r0, [r8, #0xc0]
cmp r0, #0
beq _020E35C4
_020E35D8:
ldr lr, [r8, #0xc0]
add ip, sp, #0
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldr r1, [lr]
mov r0, r7
str r1, [ip]
bl OS_RestoreInterrupts
ldr r1, [sp]
cmp r1, #0
beq _020E3618
mov r0, r6
blx r1
str r0, [sp, #8]
_020E3618:
bl OS_DisableInterrupts
ldr r2, [sp, #4]
ldr r1, _020E3668 ; =0x021E4F68
mov r7, r0
strb sl, [r1, #0x26]
cmp r2, #0
beq _020E363C
mov r0, r6
blx r2
_020E363C:
ldr r0, _020E3668 ; =0x021E4F68
ldr r0, [r0]
cmp r0, #0
beq _020E365C
mov r0, r7
str sb, [r8, #0xc0]
bl OS_RestoreInterrupts
b _020E35A0
_020E365C:
bl sub_020D1BD0
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020E3668: .word 0x021E4F68
arm_func_end sub_020E357C
arm_func_start sub_020E366C
sub_020E366C: ; 0x020E366C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _020E370C ; =0x021E4F68
mov r7, r0
mov r5, r1
mov r6, r2
ldr r4, [r3]
bl sub_020E354C
cmp r0, #0
bne _020E3694
bl OS_Terminate
_020E3694:
ldr r0, _020E370C ; =0x021E4F68
ldrb r0, [r0, #0x26]
cmp r0, #0
beq _020E36A8
bl OS_Terminate
_020E36A8:
bl OS_DisableInterrupts
mov r1, #1
strb r1, [r7, #0x22]
str r5, [r7]
add r1, r4, #0xc4
cmp r7, r1
mov r5, r0
ldreq r0, _020E370C ; =0x021E4F68
str r6, [r7, #4]
moveq r1, #0
streq r1, [r0]
ldr ip, _020E3710 ; =0x021E4F6C
ldmia r7!, {r0, r1, r2, r3}
mov r6, ip
stmia ip!, {r0, r1, r2, r3}
ldmia r7!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldr r1, [r7]
mov r0, r4
str r1, [ip]
str r6, [r4, #0xc0]
bl sub_020D1F34
mov r0, r5
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020E370C: .word 0x021E4F68
_020E3710: .word 0x021E4F6C
arm_func_end sub_020E366C
arm_func_start sub_020E3714
sub_020E3714: ; 0x020E3714
ldr r1, _020E374C ; =0x55555555
ldr r2, _020E3750 ; =0x33333333
and r1, r1, r0, lsr #1
sub r0, r0, r1
and r1, r0, r2
and r0, r2, r0, lsr #2
add r1, r1, r0
ldr r0, _020E3754 ; =0x0F0F0F0F
add r1, r1, r1, lsr #4
and r0, r1, r0
add r0, r0, r0, lsr #8
add r0, r0, r0, lsr #16
and r0, r0, #0xff
bx lr
.align 2, 0
_020E374C: .word 0x55555555
_020E3750: .word 0x33333333
_020E3754: .word 0x0F0F0F0F
arm_func_end sub_020E3714
arm_func_start sub_020E3758
sub_020E3758: ; 0x020E3758
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x58
mov r6, r0
add r0, sp, #0
mov r5, r1
mov r4, r2
bl sub_020D8E00
add r0, sp, #0
mov r1, r5
mov r2, r4
bl sub_020D8E40
add r1, sp, #0
mov r0, r6
bl sub_020D8F08
add sp, sp, #0x58
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020E3758
arm_func_start sub_020E3798
sub_020E3798: ; 0x020E3798
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x68
mov r6, r0
add r0, sp, #0
mov r5, r1
mov r4, r2
bl sub_020D9374
add r0, sp, #0
mov r1, r5
mov r2, r4
bl sub_020D93C4
add r0, sp, #0
mov r1, r6
bl sub_020D9518
add sp, sp, #0x68
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020E3798
arm_func_start sub_020E37D8
sub_020E37D8: ; 0x020E37D8
stmdb sp!, {r3, lr}
mov ip, #0
mov r2, ip
_020E37E4:
mov r3, ip
mov lr, r2
_020E37EC:
tst r3, #0x80
eorne r3, r1, r3, lsl #1
add lr, lr, #1
moveq r3, r3, lsl #1
cmp lr, #8
blo _020E37EC
strb r3, [r0, ip]
add ip, ip, #1
cmp ip, #0x100
blo _020E37E4
ldmia sp!, {r3, pc}
arm_func_end sub_020E37D8
arm_func_start sub_020E3818
sub_020E3818: ; 0x020E3818
stmdb sp!, {r4, lr}
cmp r3, #0
ldrb lr, [r1]
mov r4, #0
bls _020E3848
_020E382C:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, lr, ip
and ip, ip, #0xff
ldrb lr, [r0, ip]
blo _020E382C
_020E3848:
strb lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end sub_020E3818
arm_func_start MATHi_CRC16InitTable
MATHi_CRC16InitTable: ; 0x020E3850
stmdb sp!, {r4, lr}
mov lr, #0
mov r4, lr
mov r3, lr
_020E3860:
mov ip, r4
mov r2, r3
_020E3868:
tst ip, #0x8000
eorne ip, r1, ip, lsl #1
add r2, r2, #1
moveq ip, ip, lsl #1
cmp r2, #8
blo _020E3868
mov r2, lr, lsl #1
add lr, lr, #1
strh ip, [r0, r2]
cmp lr, #0x100
add r4, r4, #0x100
blo _020E3860
ldmia sp!, {r4, pc}
arm_func_end MATHi_CRC16InitTable
arm_func_start sub_020E389C
sub_020E389C: ; 0x020E389C
stmdb sp!, {r3, lr}
mov lr, #0
mov r3, lr
_020E38A8:
mov ip, lr
mov r2, r3
_020E38B0:
tst ip, #1
eorne ip, r1, ip, lsr #1
add r2, r2, #1
moveq ip, ip, lsr #1
cmp r2, #8
blo _020E38B0
mov r2, lr, lsl #1
add lr, lr, #1
strh ip, [r0, r2]
cmp lr, #0x100
blo _020E38A8
ldmia sp!, {r3, pc}
arm_func_end sub_020E389C
arm_func_start sub_020E38E0
sub_020E38E0: ; 0x020E38E0
stmdb sp!, {r4, lr}
cmp r3, #0
ldrh lr, [r1]
mov r4, #0
bls _020E3918
_020E38F4:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, ip, lr, lsr #8
mov ip, ip, lsl #0x18
mov ip, ip, lsr #0x17
ldrh ip, [r0, ip]
eor lr, ip, lr, lsl #8
blo _020E38F4
_020E3918:
strh lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end sub_020E38E0
arm_func_start sub_020E3920
sub_020E3920: ; 0x020E3920
stmdb sp!, {r4, lr}
cmp r3, #0
ldrh lr, [r1]
mov r4, #0
bls _020E3958
_020E3934:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, lr, ip
mov ip, ip, lsl #0x18
mov ip, ip, lsr #0x17
ldrh ip, [r0, ip]
eor lr, ip, lr, lsr #8
blo _020E3934
_020E3958:
strh lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end sub_020E3920
arm_func_start sub_020E3960
sub_020E3960: ; 0x020E3960
stmdb sp!, {r3, lr}
mov ip, #0
mov r2, ip
_020E396C:
mov r3, ip
mov lr, r2
_020E3974:
tst r3, #1
eorne r3, r1, r3, lsr #1
add lr, lr, #1
moveq r3, r3, lsr #1
cmp lr, #8
blo _020E3974
str r3, [r0, ip, lsl #2]
add ip, ip, #1
cmp ip, #0x100
blo _020E396C
ldmia sp!, {r3, pc}
arm_func_end sub_020E3960
arm_func_start sub_020E39A0
sub_020E39A0: ; 0x020E39A0
stmdb sp!, {r4, lr}
cmp r3, #0
ldr lr, [r1]
mov r4, #0
bls _020E39D4
_020E39B4:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, lr, ip
and ip, ip, #0xff
ldr ip, [r0, ip, lsl #2]
eor lr, ip, lr, lsr #8
blo _020E39B4
_020E39D4:
str lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end sub_020E39A0
arm_func_start sub_020E39DC
sub_020E39DC: ; 0x020E39DC
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, #0
mov r3, r2
add r1, sp, #0
mov r2, lr
strb ip, [sp]
bl sub_020E3818
ldrb r0, [sp]
ldmia sp!, {r3, pc}
arm_func_end sub_020E39DC
arm_func_start sub_020E3A04
sub_020E3A04: ; 0x020E3A04
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, #0
mov r3, r2
add r1, sp, #0
mov r2, lr
strh ip, [sp]
bl sub_020E3920
ldrh r0, [sp]
ldmia sp!, {r3, pc}
arm_func_end sub_020E3A04
arm_func_start MATH_CalcCRC16CCITT
MATH_CalcCRC16CCITT: ; 0x020E3A2C
stmdb sp!, {r3, lr}
ldr ip, _020E3A54 ; =0x0000FFFF
mov lr, r1
mov r3, r2
add r1, sp, #0
mov r2, lr
strh ip, [sp]
bl sub_020E38E0
ldrh r0, [sp]
ldmia sp!, {r3, pc}
.align 2, 0
_020E3A54: .word 0x0000FFFF
arm_func_end MATH_CalcCRC16CCITT
arm_func_start sub_020E3A58
sub_020E3A58: ; 0x020E3A58
stmdb sp!, {r3, lr}
mov lr, r1
mvn ip, #0
mov r3, r2
add r1, sp, #0
mov r2, lr
str ip, [sp]
bl sub_020E39A0
ldr r0, [sp]
mvn r0, r0
ldmia sp!, {r3, pc}
arm_func_end sub_020E3A58
arm_func_start sub_020E3A84
sub_020E3A84: ; 0x020E3A84
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
cmp r1, #1
ble _020E3D6C
ldr r4, [sp, #0x24]
mov fp, r3
mov r8, r2
cmp r4, #0
bne _020E3ABC
clz r2, r1
rsb r2, r2, #0x20
mov r2, r2, lsl #3
sub sp, sp, r2
mov r4, sp
str r2, [sp, #-4]!
_020E3ABC:
sub r1, r1, #1
mla r1, r1, r8, r0
mov r5, r4
str r0, [r4], #4
str r1, [r4], #4
clz r2, r8
rsb r2, r2, #0x20
str r2, [sp, #-4]!
_020E3ADC:
cmp r4, r5
beq _020E3D3C
ldr r7, [r4, #-4]
ldr r6, [r4, #-8]!
sub r2, r7, r6
cmp r2, r8
bne _020E3B50
mov r0, r6
mov r1, r7
blx fp
cmp r0, #0
ble _020E3ADC
mov r0, r8
tst r0, #3
beq _020E3B34
_020E3B18:
ldrb r1, [r6]
subs r0, r0, #1
swpb r1, r1, [r7]
add r7, r7, #1
strb r1, [r6], #1
bne _020E3B18
b _020E3ADC
_020E3B34:
ldr r1, [r6]
subs r0, r0, #4
swp r1, r1, [r7]
add r7, r7, #4
str r1, [r6], #4
bne _020E3B34
b _020E3ADC
_020E3B50:
ldr r3, [sp]
sub r2, r7, r6
mov r2, r2, lsr r3
mla r2, r2, r8, r6
mov r3, r6
mov r0, r8
mov r2, r2
tst r0, #3
beq _020E3B90
_020E3B74:
ldrb r1, [r2]
subs r0, r0, #1
swpb r1, r1, [r3]
add r3, r3, #1
strb r1, [r2], #1
bne _020E3B74
b _020E3BA8
_020E3B90:
ldr r1, [r2]
subs r0, r0, #4
swp r1, r1, [r3]
add r3, r3, #4
str r1, [r2], #4
bne _020E3B90
_020E3BA8:
mov sb, r6
mov sl, r7
add sb, sb, r8
_020E3BB4:
cmp sb, r7
bge _020E3BDC
mov r1, r6
mov r0, sb
blx fp
cmp r0, #0
blt _020E3BD4
b _020E3BD8
_020E3BD4:
add sb, sb, r8
_020E3BD8:
blt _020E3BB4
_020E3BDC:
mov r1, r6
mov r0, sl
blx fp
cmp r0, #0
bgt _020E3BF4
b _020E3BF8
_020E3BF4:
sub sl, sl, r8
_020E3BF8:
bgt _020E3BDC
cmp sb, sl
bge _020E3C5C
mov r2, sb
mov r3, sl
mov r0, r8
tst r0, #3
beq _020E3C34
_020E3C18:
ldrb r1, [r2]
subs r0, r0, #1
swpb r1, r1, [r3]
add r3, r3, #1
strb r1, [r2], #1
bne _020E3C18
b _020E3C4C
_020E3C34:
ldr r1, [r2]
subs r0, r0, #4
swp r1, r1, [r3]
add r3, r3, #4
str r1, [r2], #4
bne _020E3C34
_020E3C4C:
add sb, sb, r8
sub sl, sl, r8
cmp sb, sl
ble _020E3BB4
_020E3C5C:
mov r2, r6
mov r3, sl
mov r0, r8
tst r0, #3
beq _020E3C8C
_020E3C70:
ldrb r1, [r2]
subs r0, r0, #1
swpb r1, r1, [r3]
add r3, r3, #1
strb r1, [r2], #1
bne _020E3C70
b _020E3CA4
_020E3C8C:
ldr r1, [r2]
subs r0, r0, #4
swp r1, r1, [r3]
add r3, r3, #4
str r1, [r2], #4
bne _020E3C8C
_020E3CA4:
sub r2, sl, r6
sub r3, r7, sl
cmp r2, r3
ble _020E3CF8
sub r2, sl, r8
cmp r6, r2
blt _020E3CC4
b _020E3CC8
_020E3CC4:
str r6, [r4], #4
_020E3CC8:
blt _020E3CD0
b _020E3CD4
_020E3CD0:
str r2, [r4], #4
_020E3CD4:
add r2, sl, r8
cmp r2, r7
blt _020E3CE4
b _020E3CE8
_020E3CE4:
str r2, [r4], #4
_020E3CE8:
blt _020E3CF0
b _020E3CF4
_020E3CF0:
str r7, [r4], #4
_020E3CF4:
b _020E3ADC
_020E3CF8:
add r2, sl, r8
cmp r2, r7
blt _020E3D08
b _020E3D0C
_020E3D08:
str r2, [r4], #4
_020E3D0C:
blt _020E3D14
b _020E3D18
_020E3D14:
str r7, [r4], #4
_020E3D18:
sub r2, sl, r8
cmp r6, r2
blt _020E3D28
b _020E3D2C
_020E3D28:
str r6, [r4], #4
_020E3D2C:
blt _020E3D34
b _020E3D38
_020E3D34:
str r2, [r4], #4
_020E3D38:
b _020E3ADC
_020E3D3C:
add sp, sp, #4
sub r4, r4, #4
cmp r4, sp
beq _020E3D50
b _020E3D54
_020E3D50:
ldr r0, [sp]
_020E3D54:
beq _020E3D5C
b _020E3D60
_020E3D5C:
add r0, r0, #4
_020E3D60:
beq _020E3D68
b _020E3D6C
_020E3D68:
add sp, sp, r0
_020E3D6C:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
arm_func_end sub_020E3A84
arm_func_start sub_020E3D74
sub_020E3D74: ; 0x020E3D74
stmdb sp!, {r4, lr}
sub ip, r2, #1
mov r4, r1
cmp ip, #0
mov lr, #0
ble _020E3DB0
_020E3D8C:
ldrsb r3, [r4]
strb r3, [r0, lr]
ldrsb r3, [r4]
cmp r3, #0
beq _020E3DB0
add lr, lr, #1
cmp lr, ip
add r4, r4, #1
blt _020E3D8C
_020E3DB0:
sub r3, r2, #1
cmp lr, r3
blt _020E3DC8
cmp r2, #0
movne r2, #0
strneb r2, [r0, lr]
_020E3DC8:
mov r0, r1
bl sub_020E3DD4
ldmia sp!, {r4, pc}
arm_func_end sub_020E3D74
arm_func_start sub_020E3DD4
sub_020E3DD4: ; 0x020E3DD4
ldrsb r1, [r0]
mov r2, #0
cmp r1, #0
beq _020E3DF4
_020E3DE4:
add r2, r2, #1
ldrsb r1, [r0, r2]
cmp r1, #0
bne _020E3DE4
_020E3DF4:
mov r0, r2
bx lr
arm_func_end sub_020E3DD4
arm_func_start sub_020E3DFC
sub_020E3DFC: ; 0x020E3DFC
b _020E3E08
_020E3E00:
add r0, r0, #1
add r1, r1, #1
_020E3E08:
ldrsb r3, [r1]
ldrsb r2, [r0]
cmp r2, r3
bne _020E3E20
cmp r2, #0
bne _020E3E00
_020E3E20:
sub r0, r2, r3
bx lr
arm_func_end sub_020E3DFC
arm_func_start sub_020E3E28
sub_020E3E28: ; 0x020E3E28
stmdb sp!, {r3, lr}
cmp r2, #0
beq _020E3E60
cmp r2, #0
mov lr, #0
ble _020E3E60
_020E3E40:
ldrb ip, [r0, lr]
ldrb r3, [r1, lr]
cmp ip, r3
subne r0, ip, r3
ldmneia sp!, {r3, pc}
add lr, lr, #1
cmp lr, r2
blt _020E3E40
_020E3E60:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020E3E28
arm_func_start sub_020E3E68
sub_020E3E68: ; 0x020E3E68
ldr r2, [r0]
cmp r2, #0
beq _020E3E88
ldr r2, [r0, #4]
strb r1, [r2]
ldr r1, [r0]
sub r1, r1, #1
str r1, [r0]
_020E3E88:
ldr r1, [r0, #4]
add r1, r1, #1
str r1, [r0, #4]
bx lr
arm_func_end sub_020E3E68
arm_func_start sub_020E3E98
sub_020E3E98: ; 0x020E3E98
stmdb sp!, {r3, lr}
cmp r2, #0
ldmleia sp!, {r3, pc}
ldr lr, [r0]
mov ip, #0
cmp lr, r2
movhi lr, r2
cmp lr, #0
bls _020E3ED0
_020E3EBC:
ldr r3, [r0, #4]
strb r1, [r3, ip]
add ip, ip, #1
cmp ip, lr
blo _020E3EBC
_020E3ED0:
ldr r1, [r0]
sub r1, r1, lr
str r1, [r0]
ldr r1, [r0, #4]
add r1, r1, r2
str r1, [r0, #4]
ldmia sp!, {r3, pc}
arm_func_end sub_020E3E98
arm_func_start sub_020E3EEC
sub_020E3EEC: ; 0x020E3EEC
stmdb sp!, {r4, lr}
cmp r2, #0
ldmleia sp!, {r4, pc}
ldr r4, [r0]
mov lr, #0
cmp r4, r2
movhi r4, r2
cmp r4, #0
bls _020E3F28
_020E3F10:
ldrsb ip, [r1, lr]
ldr r3, [r0, #4]
strb ip, [r3, lr]
add lr, lr, #1
cmp lr, r4
blo _020E3F10
_020E3F28:
ldr r1, [r0]
sub r1, r1, r4
str r1, [r0]
ldr r1, [r0, #4]
add r1, r1, r2
str r1, [r0, #4]
ldmia sp!, {r4, pc}
arm_func_end sub_020E3EEC
arm_func_start sub_020E3F44
sub_020E3F44: ; 0x020E3F44
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
mov sb, r2
str r1, [sp, #0xc]
str r0, [sp, #0x14]
str r0, [sp, #0x10]
ldrsb r0, [sb]
str r1, [sp]
mov fp, r3
cmp r0, #0
beq _020E4770
_020E3F70:
ldrsb r1, [sb]
and r0, r1, #0xff
eor r0, r0, #0x20
sub r0, r0, #0xa1
cmp r0, #0x3c
bhs _020E3FAC
add r0, sp, #0xc
bl sub_020E3E68
ldrsb r1, [sb, #1]!
cmp r1, #0
beq _020E4764
add r0, sp, #0xc
add sb, sb, #1
bl sub_020E3E68
b _020E4764
_020E3FAC:
cmp r1, #0x25
beq _020E3FC4
add r0, sp, #0xc
add sb, sb, #1
bl sub_020E3E68
b _020E4764
_020E3FC4:
mov r5, #0
mov sl, r5
mov r2, sb
sub r6, r5, #1
mov r0, #0xa
mov r3, #0x57
_020E3FDC:
ldrsb r4, [sb, #1]!
cmp r4, #0x20
bgt _020E3FF0
beq _020E402C
b _020E4044
_020E3FF0:
cmp r4, #0x30
bgt _020E4044
cmp r4, #0x2b
blt _020E4044
beq _020E4018
cmp r4, #0x2d
beq _020E4034
cmp r4, #0x30
beq _020E403C
b _020E4044
_020E4018:
ldrsb r1, [sb, #-1]
cmp r1, #0x20
bne _020E4044
orr r5, r5, #2
b _020E3FDC
_020E402C:
orr r5, r5, #1
b _020E3FDC
_020E4034:
orr r5, r5, #8
b _020E3FDC
_020E403C:
orr r5, r5, #0x10
b _020E3FDC
_020E4044:
cmp r4, #0x2a
bne _020E4068
add fp, fp, #4
ldr sl, [fp, #-4]
add sb, sb, #1
cmp sl, #0
rsblt sl, sl, #0
orrlt r5, r5, #8
b _020E4090
_020E4068:
mov r1, #0xa
b _020E407C
_020E4070:
ldrsb r4, [sb], #1
mla r4, sl, r1, r4
sub sl, r4, #0x30
_020E407C:
ldrsb r4, [sb]
cmp r4, #0x30
blt _020E4090
cmp r4, #0x39
ble _020E4070
_020E4090:
ldrsb r1, [sb]
cmp r1, #0x2e
bne _020E40EC
ldrsb r1, [sb, #1]!
mov r6, #0
cmp r1, #0x2a
bne _020E40C4
add fp, fp, #4
ldr r6, [fp, #-4]
add sb, sb, #1
cmp r6, #0
mvnlt r6, #0
b _020E40EC
_020E40C4:
mov r1, #0xa
b _020E40D8
_020E40CC:
ldrsb r4, [sb], #1
mla r4, r6, r1, r4
sub r6, r4, #0x30
_020E40D8:
ldrsb r4, [sb]
cmp r4, #0x30
blt _020E40EC
cmp r4, #0x39
ble _020E40CC
_020E40EC:
ldrsb r1, [sb]
cmp r1, #0x68
beq _020E4104
cmp r1, #0x6c
beq _020E411C
b _020E4130
_020E4104:
ldrsb r1, [sb, #1]!
cmp r1, #0x68
orrne r5, r5, #0x40
addeq sb, sb, #1
orreq r5, r5, #0x100
b _020E4130
_020E411C:
ldrsb r1, [sb, #1]!
cmp r1, #0x6c
orrne r5, r5, #0x20
addeq sb, sb, #1
orreq r5, r5, #0x80
_020E4130:
ldrsb r1, [sb]
cmp r1, #0x69
bgt _020E4174
cmp r1, #0x63
blt _020E4158
beq _020E41E4
cmp r1, #0x64
cmpne r1, #0x69
beq _020E439C
b _020E4380
_020E4158:
cmp r1, #0x25
bgt _020E4168
beq _020E4364
b _020E4380
_020E4168:
cmp r1, #0x58
beq _020E41D0
b _020E4380
_020E4174:
cmp r1, #0x6e
bgt _020E4184
beq _020E430C
b _020E4380
_020E4184:
sub r1, r1, #0x6f
cmp r1, #9
addls pc, pc, r1, lsl #2
b _020E4380
_020E4194: ; jump table
b _020E41BC ; case 0
b _020E41D8 ; case 1
b _020E4380 ; case 2
b _020E4380 ; case 3
b _020E4258 ; case 4
b _020E4380 ; case 5
b _020E41C8 ; case 6
b _020E4380 ; case 7
b _020E4380 ; case 8
b _020E4394 ; case 9
_020E41BC:
orr r5, r5, #0x1000
mov r0, #8
b _020E439C
_020E41C8:
orr r5, r5, #0x1000
b _020E439C
_020E41D0:
mov r3, #0x37
b _020E4394
_020E41D8:
orr r5, r5, #4
mov r6, #8
b _020E4394
_020E41E4:
cmp r6, #0
bge _020E4380
add fp, fp, #4
tst r5, #8
ldr r4, [fp, #-4]
beq _020E4220
mov r1, r4, lsl #0x18
add r0, sp, #0xc
mov r1, r1, asr #0x18
bl sub_020E3E68
add r0, sp, #0xc
sub r2, sl, #1
mov r1, #0x20
bl sub_020E3E98
b _020E4250
_020E4220:
tst r5, #0x10
movne r0, #0x30
moveq r0, #0x20
mov r1, r0, lsl #0x18
add r0, sp, #0xc
mov r1, r1, asr #0x18
sub r2, sl, #1
bl sub_020E3E98
mov r1, r4, lsl #0x18
add r0, sp, #0xc
mov r1, r1, asr #0x18
bl sub_020E3E68
_020E4250:
add sb, sb, #1
b _020E4764
_020E4258:
add fp, fp, #4
cmp r6, #0
ldr r7, [fp, #-4]
mov r4, #0
bge _020E4290
ldrsb r0, [r7]
cmp r0, #0
beq _020E42A4
_020E4278:
add r4, r4, #1
ldrsb r0, [r7, r4]
cmp r0, #0
bne _020E4278
b _020E42A4
_020E428C:
add r4, r4, #1
_020E4290:
cmp r4, r6
bge _020E42A4
ldrsb r0, [r7, r4]
cmp r0, #0
bne _020E428C
_020E42A4:
tst r5, #8
sub sl, sl, r4
beq _020E42D4
add r0, sp, #0xc
mov r1, r7
mov r2, r4
bl sub_020E3EEC
add r0, sp, #0xc
mov r2, sl
mov r1, #0x20
bl sub_020E3E98
b _020E4304
_020E42D4:
tst r5, #0x10
movne r0, #0x30
moveq r0, #0x20
mov r1, r0, lsl #0x18
add r0, sp, #0xc
mov r2, sl
mov r1, r1, asr #0x18
bl sub_020E3E98
add r0, sp, #0xc
mov r1, r7
mov r2, r4
bl sub_020E3EEC
_020E4304:
add sb, sb, #1
b _020E4764
_020E430C:
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
tst r5, #0x100
sub r2, r1, r0
bne _020E435C
tst r5, #0x40
beq _020E4338
add fp, fp, #4
ldr r0, [fp, #-4]
strh r2, [r0]
b _020E435C
_020E4338:
add fp, fp, #4
tst r5, #0x80
ldreq r0, [fp, #-4]
streq r2, [r0]
beq _020E435C
ldr r0, [fp, #-4]
mov r1, r2, asr #0x1f
str r2, [r0]
str r1, [r0, #4]
_020E435C:
add sb, sb, #1
b _020E4764
_020E4364:
add r0, r2, #1
cmp r0, sb
bne _020E4380
add r0, sp, #0xc
add sb, sb, #1
bl sub_020E3E68
b _020E4764
_020E4380:
mov r1, r2
add r0, sp, #0xc
sub r2, sb, r2
bl sub_020E3EEC
b _020E4764
_020E4394:
orr r5, r5, #0x1000
mov r0, #0x10
_020E439C:
tst r5, #8
bicne r5, r5, #0x10
cmp r6, #0
bicge r5, r5, #0x10
movlt r6, #1
mov r4, #0
tst r5, #0x1000
beq _020E445C
tst r5, #0x100
beq _020E43D4
add fp, fp, #4
ldrb r7, [fp, #-4]
mov r1, #0
b _020E440C
_020E43D4:
tst r5, #0x40
beq _020E43EC
add fp, fp, #4
ldrh r7, [fp, #-4]
mov r1, #0
b _020E440C
_020E43EC:
tst r5, #0x80
addeq fp, fp, #4
ldreq r7, [fp, #-4]
moveq r1, #0
beq _020E440C
add fp, fp, #8
ldr r7, [fp, #-8]
ldr r1, [fp, #-4]
_020E440C:
bic r5, r5, #3
tst r5, #4
beq _020E451C
cmp r0, #0x10
bne _020E4444
cmp r1, #0
cmpeq r7, #0
beq _020E451C
add r4, r3, #0x21
mov r2, #0x30
strb r4, [sp, #8]
strb r2, [sp, #9]
mov r4, #2
b _020E451C
_020E4444:
cmp r0, #8
bne _020E451C
mov r2, #0x30
strb r2, [sp, #8]
mov r4, #1
b _020E451C
_020E445C:
tst r5, #0x100
beq _020E4474
add fp, fp, #4
ldrsb r7, [fp, #-4]
mov r1, r7, asr #0x1f
b _020E44AC
_020E4474:
tst r5, #0x40
beq _020E448C
add fp, fp, #4
ldrsh r7, [fp, #-4]
mov r1, r7, asr #0x1f
b _020E44AC
_020E448C:
tst r5, #0x80
addeq fp, fp, #4
ldreq r7, [fp, #-4]
moveq r1, r7, asr #0x1f
beq _020E44AC
add fp, fp, #8
ldr r7, [fp, #-8]
ldr r1, [fp, #-4]
_020E44AC:
mov ip, #0
and r2, ip, #0
and r8, r1, #0x80000000
cmp r2, #0
cmpeq r8, #0
beq _020E44E4
mvn r4, r7
mov r2, #0x2d
mvn r1, r1
strb r2, [sp, #8]
adds r7, r4, #1
adc r1, r1, ip
mov r4, #1
b _020E451C
_020E44E4:
cmp r1, ip
cmpeq r7, ip
cmpeq r6, #0
beq _020E451C
tst r5, #2
beq _020E450C
mov r2, #0x2b
strb r2, [sp, #8]
mov r4, #1
b _020E451C
_020E450C:
tst r5, #1
movne r2, #0x20
strneb r2, [sp, #8]
movne r4, #1
_020E451C:
cmp r0, #8
mov r8, #0
beq _020E453C
cmp r0, #0xa
beq _020E4588
cmp r0, #0x10
beq _020E4620
b _020E466C
_020E453C:
cmp r1, r8
cmpeq r7, r8
beq _020E466C
add r2, sp, #0x18
mov r0, r8
mov lr, #7
mov ip, r8
_020E4558:
and r3, r7, lr
add r3, r3, #0x30
strb r3, [r2, r8]
mov r3, r1, lsr #3
cmp r3, r0
mov r7, r7, lsr #3
orr r7, r7, r1, lsl #29
mov r1, r3
cmpeq r7, ip
add r8, r8, #1
bne _020E4558
b _020E466C
_020E4588:
mov r0, r8
cmp r0, r8
cmpeq r1, r8
bne _020E45D4
cmp r7, #0
beq _020E466C
ldr ip, _020E47BC ; =0xCCCCCCCD
add r3, sp, #0x18
mov r2, #0xa
_020E45AC:
umull r1, r0, r7, ip
movs r0, r0, lsr #3
mul r1, r0, r2
sub r1, r7, r1
mov r7, r0
add r0, r1, #0x30
strb r0, [r3, r8]
add r8, r8, #1
bne _020E45AC
b _020E466C
_020E45D4:
cmp r1, r8
cmpeq r7, r8
beq _020E466C
_020E45E0:
mov r0, r7
mov r2, #0xa
mov r3, #0
bl _ll_udiv
mov r2, #0xa
umull r3, r2, r0, r2
subs r2, r7, r3
add r3, r2, #0x30
add r2, sp, #0x18
strb r3, [r2, r8]
cmp r1, #0
cmpeq r0, #0
mov r7, r0
add r8, r8, #1
bne _020E45E0
b _020E466C
_020E4620:
cmp r1, r8
cmpeq r7, r8
beq _020E466C
add ip, sp, #0x18
mov lr, #0xf
_020E4634:
and r2, r7, lr
mov r7, r7, lsr #4
mov r0, r1, lsr #4
orr r7, r7, r1, lsl #28
cmp r2, #0xa
mov r1, r0
addlt r0, r2, #0x30
addge r0, r2, r3
strb r0, [ip, r8]
mov r0, #0
cmp r1, r0
cmpeq r7, r0
add r8, r8, #1
bne _020E4634
_020E466C:
cmp r4, #0
ble _020E4694
ldrsb r0, [sp, #8]
cmp r0, #0x30
bne _020E4694
add r0, sp, #0x18
mov r1, #0x30
strb r1, [r0, r8]
add r8, r8, #1
mov r4, #0
_020E4694:
tst r5, #0x10
sub r6, r6, r8
beq _020E46B0
sub r0, sl, r8
sub r0, r0, r4
cmp r6, r0
movlt r6, r0
_020E46B0:
cmp r6, #0
subgt sl, sl, r6
add r0, r4, r8
sub sl, sl, r0
ands r0, r5, #8
str r0, [sp, #4]
bne _020E46DC
add r0, sp, #0xc
mov r2, sl
mov r1, #0x20
bl sub_020E3E98
_020E46DC:
cmp r4, #0
ble _020E4708
add r0, sp, #8
add r5, r0, r4
add r7, sp, #0xc
_020E46F0:
ldrsb r1, [r5, #-1]!
mov r0, r7
sub r4, r4, #1
bl sub_020E3E68
cmp r4, #0
bgt _020E46F0
_020E4708:
add r0, sp, #0xc
mov r2, r6
mov r1, #0x30
bl sub_020E3E98
cmp r8, #0
ble _020E4744
add r0, sp, #0x18
add r5, r0, r8
add r4, sp, #0xc
_020E472C:
ldrsb r1, [r5, #-1]!
mov r0, r4
sub r8, r8, #1
bl sub_020E3E68
cmp r8, #0
bgt _020E472C
_020E4744:
ldr r0, [sp, #4]
cmp r0, #0
beq _020E4760
add r0, sp, #0xc
mov r2, sl
mov r1, #0x20
bl sub_020E3E98
_020E4760:
add sb, sb, #1
_020E4764:
ldrsb r0, [sb]
cmp r0, #0
bne _020E3F70
_020E4770:
ldr r0, [sp, #0xc]
cmp r0, #0
beq _020E478C
ldr r0, [sp, #0x10]
mov r1, #0
strb r1, [r0]
b _020E47A8
_020E478C:
ldr r0, [sp]
cmp r0, #0
beq _020E47A8
ldr r1, [sp, #0x14]
mov r2, #0
add r0, r1, r0
strb r2, [r0, #-1]
_020E47A8:
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
sub r0, r1, r0
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020E47BC: .word 0xCCCCCCCD
arm_func_end sub_020E3F44
.rodata
_0210D650:
.byte 0x00, 0x80, 0x2E, 0xFD, 0x2F, 0xFD, 0x75, 0xFD, 0xA7, 0xFD, 0xCE, 0xFD, 0xEE, 0xFD, 0x09, 0xFE
.byte 0x20, 0xFE, 0x34, 0xFE, 0x46, 0xFE, 0x57, 0xFE, 0x66, 0xFE, 0x74, 0xFE, 0x81, 0xFE, 0x8D, 0xFE
.byte 0x98, 0xFE, 0xA3, 0xFE, 0xAD, 0xFE, 0xB6, 0xFE, 0xBF, 0xFE, 0xC7, 0xFE, 0xCF, 0xFE, 0xD7, 0xFE
.byte 0xDF, 0xFE, 0xE6, 0xFE, 0xEC, 0xFE, 0xF3, 0xFE, 0xF9, 0xFE, 0xFF, 0xFE, 0x05, 0xFF, 0x0B, 0xFF
.byte 0x11, 0xFF, 0x16, 0xFF, 0x1B, 0xFF, 0x20, 0xFF, 0x25, 0xFF, 0x2A, 0xFF, 0x2E, 0xFF, 0x33, 0xFF
.byte 0x37, 0xFF, 0x3C, 0xFF, 0x40, 0xFF, 0x44, 0xFF, 0x48, 0xFF, 0x4C, 0xFF, 0x50, 0xFF, 0x53, 0xFF
.byte 0x57, 0xFF, 0x5B, 0xFF, 0x5E, 0xFF, 0x62, 0xFF, 0x65, 0xFF, 0x68, 0xFF, 0x6B, 0xFF, 0x6F, 0xFF
.byte 0x72, 0xFF, 0x75, 0xFF, 0x78, 0xFF, 0x7B, 0xFF, 0x7E, 0xFF, 0x81, 0xFF, 0x83, 0xFF, 0x86, 0xFF
.byte 0x89, 0xFF, 0x8C, 0xFF, 0x8E, 0xFF, 0x91, 0xFF, 0x93, 0xFF, 0x96, 0xFF, 0x99, 0xFF, 0x9B, 0xFF
.byte 0x9D, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA5, 0xFF, 0xA7, 0xFF, 0xA9, 0xFF, 0xAB, 0xFF, 0xAE, 0xFF
.byte 0xB0, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB8, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBE, 0xFF
.byte 0xC0, 0xFF, 0xC2, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCC, 0xFF, 0xCE, 0xFF
.byte 0xCF, 0xFF, 0xD1, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD8, 0xFF, 0xDA, 0xFF, 0xDC, 0xFF
.byte 0xDD, 0xFF, 0xDF, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE7, 0xFF, 0xE9, 0xFF
.byte 0xEA, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF, 0xF5, 0xFF
.byte 0xF6, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00
.byte 0x00, 0x80, 0x5B, 0xFE, 0x97, 0xFE, 0xBB, 0xFE, 0xD4, 0xFE, 0xE7, 0xFE, 0xF7, 0xFE, 0x04, 0xFF
.byte 0x10, 0xFF, 0x1A, 0xFF, 0x23, 0xFF, 0x2C, 0xFF, 0x33, 0xFF, 0x3A, 0xFF, 0x40, 0xFF, 0x46, 0xFF
.byte 0x4C, 0xFF, 0x51, 0xFF, 0x56, 0xFF, 0x5B, 0xFF, 0x5F, 0xFF, 0x64, 0xFF, 0x68, 0xFF, 0x6C, 0xFF
.byte 0x6F, 0xFF, 0x73, 0xFF, 0x76, 0xFF, 0x7A, 0xFF, 0x7D, 0xFF, 0x80, 0xFF, 0x83, 0xFF, 0x86, 0xFF
.byte 0x88, 0xFF, 0x8B, 0xFF, 0x8E, 0xFF, 0x90, 0xFF, 0x92, 0xFF, 0x95, 0xFF, 0x97, 0xFF, 0x99, 0xFF
.byte 0x9C, 0xFF, 0x9E, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA4, 0xFF, 0xA6, 0xFF, 0xA8, 0xFF, 0xAA, 0xFF
.byte 0xAB, 0xFF, 0xAD, 0xFF, 0xAF, 0xFF, 0xB1, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB7, 0xFF
.byte 0xB9, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF, 0xC2, 0xFF, 0xC3, 0xFF
.byte 0xC4, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCB, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF
.byte 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, 0xD2, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD7, 0xFF
.byte 0xD8, 0xFF, 0xD9, 0xFF, 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDE, 0xFF, 0xDF, 0xFF
.byte 0xE0, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE6, 0xFF, 0xE7, 0xFF
.byte 0xE8, 0xFF, 0xE9, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEE, 0xFF
.byte 0xEF, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF, 0xF4, 0xFF, 0xF4, 0xFF
.byte 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFA, 0xFF
.byte 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00
.byte 0x00, 0x00, 0x3B, 0x00, 0x76, 0x00, 0xB2, 0x00, 0xED, 0x00, 0x28, 0x01, 0x64, 0x01, 0x9F, 0x01
.byte 0xDB, 0x01, 0x17, 0x02, 0x52, 0x02, 0x8E, 0x02, 0xCA, 0x02, 0x05, 0x03, 0x41, 0x03, 0x7D, 0x03
.byte 0xB9, 0x03, 0xF5, 0x03, 0x31, 0x04, 0x6E, 0x04, 0xAA, 0x04, 0xE6, 0x04, 0x22, 0x05, 0x5F, 0x05
.byte 0x9B, 0x05, 0xD8, 0x05, 0x14, 0x06, 0x51, 0x06, 0x8D, 0x06, 0xCA, 0x06, 0x07, 0x07, 0x43, 0x07
.byte 0x80, 0x07, 0xBD, 0x07, 0xFA, 0x07, 0x37, 0x08, 0x74, 0x08, 0xB1, 0x08, 0xEF, 0x08, 0x2C, 0x09
.byte 0x69, 0x09, 0xA7, 0x09, 0xE4, 0x09, 0x21, 0x0A, 0x5F, 0x0A, 0x9C, 0x0A, 0xDA, 0x0A, 0x18, 0x0B
.byte 0x56, 0x0B, 0x93, 0x0B, 0xD1, 0x0B, 0x0F, 0x0C, 0x4D, 0x0C, 0x8B, 0x0C, 0xC9, 0x0C, 0x07, 0x0D
.byte 0x45, 0x0D, 0x84, 0x0D, 0xC2, 0x0D, 0x00, 0x0E, 0x3F, 0x0E, 0x7D, 0x0E, 0xBC, 0x0E, 0xFA, 0x0E
.byte 0x39, 0x0F, 0x78, 0x0F, 0xB6, 0x0F, 0xF5, 0x0F, 0x34, 0x10, 0x73, 0x10, 0xB2, 0x10, 0xF1, 0x10
.byte 0x30, 0x11, 0x6F, 0x11, 0xAE, 0x11, 0xEE, 0x11, 0x2D, 0x12, 0x6C, 0x12, 0xAC, 0x12, 0xEB, 0x12
.byte 0x2B, 0x13, 0x6B, 0x13, 0xAA, 0x13, 0xEA, 0x13, 0x2A, 0x14, 0x6A, 0x14, 0xA9, 0x14, 0xE9, 0x14
.byte 0x29, 0x15, 0x69, 0x15, 0xAA, 0x15, 0xEA, 0x15, 0x2A, 0x16, 0x6A, 0x16, 0xAB, 0x16, 0xEB, 0x16
.byte 0x2C, 0x17, 0x6C, 0x17, 0xAD, 0x17, 0xED, 0x17, 0x2E, 0x18, 0x6F, 0x18, 0xB0, 0x18, 0xF0, 0x18
.byte 0x31, 0x19, 0x72, 0x19, 0xB3, 0x19, 0xF5, 0x19, 0x36, 0x1A, 0x77, 0x1A, 0xB8, 0x1A, 0xFA, 0x1A
.byte 0x3B, 0x1B, 0x7D, 0x1B, 0xBE, 0x1B, 0x00, 0x1C, 0x41, 0x1C, 0x83, 0x1C, 0xC5, 0x1C, 0x07, 0x1D
.byte 0x48, 0x1D, 0x8A, 0x1D, 0xCC, 0x1D, 0x0E, 0x1E, 0x51, 0x1E, 0x93, 0x1E, 0xD5, 0x1E, 0x17, 0x1F
.byte 0x5A, 0x1F, 0x9C, 0x1F, 0xDF, 0x1F, 0x21, 0x20, 0x64, 0x20, 0xA6, 0x20, 0xE9, 0x20, 0x2C, 0x21
.byte 0x6F, 0x21, 0xB2, 0x21, 0xF5, 0x21, 0x38, 0x22, 0x7B, 0x22, 0xBE, 0x22, 0x01, 0x23, 0x44, 0x23
.byte 0x88, 0x23, 0xCB, 0x23, 0x0E, 0x24, 0x52, 0x24, 0x96, 0x24, 0xD9, 0x24, 0x1D, 0x25, 0x61, 0x25
.byte 0xA4, 0x25, 0xE8, 0x25, 0x2C, 0x26, 0x70, 0x26, 0xB4, 0x26, 0xF8, 0x26, 0x3D, 0x27, 0x81, 0x27
.byte 0xC5, 0x27, 0x0A, 0x28, 0x4E, 0x28, 0x92, 0x28, 0xD7, 0x28, 0x1C, 0x29, 0x60, 0x29, 0xA5, 0x29
.byte 0xEA, 0x29, 0x2F, 0x2A, 0x74, 0x2A, 0xB9, 0x2A, 0xFE, 0x2A, 0x43, 0x2B, 0x88, 0x2B, 0xCD, 0x2B
.byte 0x13, 0x2C, 0x58, 0x2C, 0x9D, 0x2C, 0xE3, 0x2C, 0x28, 0x2D, 0x6E, 0x2D, 0xB4, 0x2D, 0xF9, 0x2D
.byte 0x3F, 0x2E, 0x85, 0x2E, 0xCB, 0x2E, 0x11, 0x2F, 0x57, 0x2F, 0x9D, 0x2F, 0xE3, 0x2F, 0x2A, 0x30
.byte 0x70, 0x30, 0xB6, 0x30, 0xFD, 0x30, 0x43, 0x31, 0x8A, 0x31, 0xD0, 0x31, 0x17, 0x32, 0x5E, 0x32
.byte 0xA5, 0x32, 0xEC, 0x32, 0x32, 0x33, 0x79, 0x33, 0xC1, 0x33, 0x08, 0x34, 0x4F, 0x34, 0x96, 0x34
.byte 0xDD, 0x34, 0x25, 0x35, 0x6C, 0x35, 0xB4, 0x35, 0xFB, 0x35, 0x43, 0x36, 0x8B, 0x36, 0xD3, 0x36
.byte 0x1A, 0x37, 0x62, 0x37, 0xAA, 0x37, 0xF2, 0x37, 0x3A, 0x38, 0x83, 0x38, 0xCB, 0x38, 0x13, 0x39
.byte 0x5C, 0x39, 0xA4, 0x39, 0xED, 0x39, 0x35, 0x3A, 0x7E, 0x3A, 0xC6, 0x3A, 0x0F, 0x3B, 0x58, 0x3B
.byte 0xA1, 0x3B, 0xEA, 0x3B, 0x33, 0x3C, 0x7C, 0x3C, 0xC5, 0x3C, 0x0E, 0x3D, 0x58, 0x3D, 0xA1, 0x3D
.byte 0xEA, 0x3D, 0x34, 0x3E, 0x7D, 0x3E, 0xC7, 0x3E, 0x11, 0x3F, 0x5A, 0x3F, 0xA4, 0x3F, 0xEE, 0x3F
.byte 0x38, 0x40, 0x82, 0x40, 0xCC, 0x40, 0x16, 0x41, 0x61, 0x41, 0xAB, 0x41, 0xF5, 0x41, 0x40, 0x42
.byte 0x8A, 0x42, 0xD5, 0x42, 0x1F, 0x43, 0x6A, 0x43, 0xB5, 0x43, 0x00, 0x44, 0x4B, 0x44, 0x95, 0x44
.byte 0xE1, 0x44, 0x2C, 0x45, 0x77, 0x45, 0xC2, 0x45, 0x0D, 0x46, 0x59, 0x46, 0xA4, 0x46, 0xF0, 0x46
.byte 0x3B, 0x47, 0x87, 0x47, 0xD3, 0x47, 0x1E, 0x48, 0x6A, 0x48, 0xB6, 0x48, 0x02, 0x49, 0x4E, 0x49
.byte 0x9A, 0x49, 0xE6, 0x49, 0x33, 0x4A, 0x7F, 0x4A, 0xCB, 0x4A, 0x18, 0x4B, 0x64, 0x4B, 0xB1, 0x4B
.byte 0xFE, 0x4B, 0x4A, 0x4C, 0x97, 0x4C, 0xE4, 0x4C, 0x31, 0x4D, 0x7E, 0x4D, 0xCB, 0x4D, 0x18, 0x4E
.byte 0x66, 0x4E, 0xB3, 0x4E, 0x00, 0x4F, 0x4E, 0x4F, 0x9B, 0x4F, 0xE9, 0x4F, 0x36, 0x50, 0x84, 0x50
.byte 0xD2, 0x50, 0x20, 0x51, 0x6E, 0x51, 0xBC, 0x51, 0x0A, 0x52, 0x58, 0x52, 0xA6, 0x52, 0xF4, 0x52
.byte 0x43, 0x53, 0x91, 0x53, 0xE0, 0x53, 0x2E, 0x54, 0x7D, 0x54, 0xCC, 0x54, 0x1A, 0x55, 0x69, 0x55
.byte 0xB8, 0x55, 0x07, 0x56, 0x56, 0x56, 0xA5, 0x56, 0xF4, 0x56, 0x44, 0x57, 0x93, 0x57, 0xE2, 0x57
.byte 0x32, 0x58, 0x82, 0x58, 0xD1, 0x58, 0x21, 0x59, 0x71, 0x59, 0xC1, 0x59, 0x10, 0x5A, 0x60, 0x5A
.byte 0xB0, 0x5A, 0x01, 0x5B, 0x51, 0x5B, 0xA1, 0x5B, 0xF1, 0x5B, 0x42, 0x5C, 0x92, 0x5C, 0xE3, 0x5C
.byte 0x34, 0x5D, 0x84, 0x5D, 0xD5, 0x5D, 0x26, 0x5E, 0x77, 0x5E, 0xC8, 0x5E, 0x19, 0x5F, 0x6A, 0x5F
.byte 0xBB, 0x5F, 0x0D, 0x60, 0x5E, 0x60, 0xB0, 0x60, 0x01, 0x61, 0x53, 0x61, 0xA4, 0x61, 0xF6, 0x61
.byte 0x48, 0x62, 0x9A, 0x62, 0xEC, 0x62, 0x3E, 0x63, 0x90, 0x63, 0xE2, 0x63, 0x34, 0x64, 0x87, 0x64
.byte 0xD9, 0x64, 0x2C, 0x65, 0x7E, 0x65, 0xD1, 0x65, 0x24, 0x66, 0x76, 0x66, 0xC9, 0x66, 0x1C, 0x67
.byte 0x6F, 0x67, 0xC2, 0x67, 0x15, 0x68, 0x69, 0x68, 0xBC, 0x68, 0x0F, 0x69, 0x63, 0x69, 0xB6, 0x69
.byte 0x0A, 0x6A, 0x5E, 0x6A, 0xB1, 0x6A, 0x05, 0x6B, 0x59, 0x6B, 0xAD, 0x6B, 0x01, 0x6C, 0x55, 0x6C
.byte 0xAA, 0x6C, 0xFE, 0x6C, 0x52, 0x6D, 0xA7, 0x6D, 0xFB, 0x6D, 0x50, 0x6E, 0xA4, 0x6E, 0xF9, 0x6E
.byte 0x4E, 0x6F, 0xA3, 0x6F, 0xF8, 0x6F, 0x4D, 0x70, 0xA2, 0x70, 0xF7, 0x70, 0x4D, 0x71, 0xA2, 0x71
.byte 0xF7, 0x71, 0x4D, 0x72, 0xA2, 0x72, 0xF8, 0x72, 0x4E, 0x73, 0xA4, 0x73, 0xFA, 0x73, 0x50, 0x74
.byte 0xA6, 0x74, 0xFC, 0x74, 0x52, 0x75, 0xA8, 0x75, 0xFF, 0x75, 0x55, 0x76, 0xAC, 0x76, 0x02, 0x77
.byte 0x59, 0x77, 0xB0, 0x77, 0x07, 0x78, 0x5E, 0x78, 0xB4, 0x78, 0x0C, 0x79, 0x63, 0x79, 0xBA, 0x79
.byte 0x11, 0x7A, 0x69, 0x7A, 0xC0, 0x7A, 0x18, 0x7B, 0x6F, 0x7B, 0xC7, 0x7B, 0x1F, 0x7C, 0x77, 0x7C
.byte 0xCF, 0x7C, 0x27, 0x7D, 0x7F, 0x7D, 0xD7, 0x7D, 0x2F, 0x7E, 0x88, 0x7E, 0xE0, 0x7E, 0x38, 0x7F
.byte 0x91, 0x7F, 0xEA, 0x7F, 0x42, 0x80, 0x9B, 0x80, 0xF4, 0x80, 0x4D, 0x81, 0xA6, 0x81, 0xFF, 0x81
.byte 0x59, 0x82, 0xB2, 0x82, 0x0B, 0x83, 0x65, 0x83, 0xBE, 0x83, 0x18, 0x84, 0x72, 0x84, 0xCB, 0x84
.byte 0x25, 0x85, 0x7F, 0x85, 0xD9, 0x85, 0x33, 0x86, 0x8E, 0x86, 0xE8, 0x86, 0x42, 0x87, 0x9D, 0x87
.byte 0xF7, 0x87, 0x52, 0x88, 0xAC, 0x88, 0x07, 0x89, 0x62, 0x89, 0xBD, 0x89, 0x18, 0x8A, 0x73, 0x8A
.byte 0xCE, 0x8A, 0x2A, 0x8B, 0x85, 0x8B, 0xE0, 0x8B, 0x3C, 0x8C, 0x97, 0x8C, 0xF3, 0x8C, 0x4F, 0x8D
.byte 0xAB, 0x8D, 0x07, 0x8E, 0x63, 0x8E, 0xBF, 0x8E, 0x1B, 0x8F, 0x77, 0x8F, 0xD4, 0x8F, 0x30, 0x90
.byte 0x8C, 0x90, 0xE9, 0x90, 0x46, 0x91, 0xA2, 0x91, 0xFF, 0x91, 0x5C, 0x92, 0xB9, 0x92, 0x16, 0x93
.byte 0x73, 0x93, 0xD1, 0x93, 0x2E, 0x94, 0x8C, 0x94, 0xE9, 0x94, 0x47, 0x95, 0xA4, 0x95, 0x02, 0x96
.byte 0x60, 0x96, 0xBE, 0x96, 0x1C, 0x97, 0x7A, 0x97, 0xD8, 0x97, 0x36, 0x98, 0x95, 0x98, 0xF3, 0x98
.byte 0x52, 0x99, 0xB0, 0x99, 0x0F, 0x9A, 0x6E, 0x9A, 0xCD, 0x9A, 0x2C, 0x9B, 0x8B, 0x9B, 0xEA, 0x9B
.byte 0x49, 0x9C, 0xA8, 0x9C, 0x08, 0x9D, 0x67, 0x9D, 0xC7, 0x9D, 0x26, 0x9E, 0x86, 0x9E, 0xE6, 0x9E
.byte 0x46, 0x9F, 0xA6, 0x9F, 0x06, 0xA0, 0x66, 0xA0, 0xC6, 0xA0, 0x27, 0xA1, 0x87, 0xA1, 0xE8, 0xA1
.byte 0x48, 0xA2, 0xA9, 0xA2, 0x0A, 0xA3, 0x6B, 0xA3, 0xCC, 0xA3, 0x2D, 0xA4, 0x8E, 0xA4, 0xEF, 0xA4
.byte 0x50, 0xA5, 0xB2, 0xA5, 0x13, 0xA6, 0x75, 0xA6, 0xD6, 0xA6, 0x38, 0xA7, 0x9A, 0xA7, 0xFC, 0xA7
.byte 0x5E, 0xA8, 0xC0, 0xA8, 0x22, 0xA9, 0x84, 0xA9, 0xE7, 0xA9, 0x49, 0xAA, 0xAC, 0xAA, 0x0E, 0xAB
.byte 0x71, 0xAB, 0xD4, 0xAB, 0x37, 0xAC, 0x9A, 0xAC, 0xFD, 0xAC, 0x60, 0xAD, 0xC3, 0xAD, 0x27, 0xAE
.byte 0x8A, 0xAE, 0xED, 0xAE, 0x51, 0xAF, 0xB5, 0xAF, 0x19, 0xB0, 0x7C, 0xB0, 0xE0, 0xB0, 0x45, 0xB1
.byte 0xA9, 0xB1, 0x0D, 0xB2, 0x71, 0xB2, 0xD6, 0xB2, 0x3A, 0xB3, 0x9F, 0xB3, 0x03, 0xB4, 0x68, 0xB4
.byte 0xCD, 0xB4, 0x32, 0xB5, 0x97, 0xB5, 0xFC, 0xB5, 0x62, 0xB6, 0xC7, 0xB6, 0x2C, 0xB7, 0x92, 0xB7
.byte 0xF7, 0xB7, 0x5D, 0xB8, 0xC3, 0xB8, 0x29, 0xB9, 0x8F, 0xB9, 0xF5, 0xB9, 0x5B, 0xBA, 0xC1, 0xBA
.byte 0x28, 0xBB, 0x8E, 0xBB, 0xF5, 0xBB, 0x5B, 0xBC, 0xC2, 0xBC, 0x29, 0xBD, 0x90, 0xBD, 0xF7, 0xBD
.byte 0x5E, 0xBE, 0xC5, 0xBE, 0x2C, 0xBF, 0x94, 0xBF, 0xFB, 0xBF, 0x63, 0xC0, 0xCA, 0xC0, 0x32, 0xC1
.byte 0x9A, 0xC1, 0x02, 0xC2, 0x6A, 0xC2, 0xD2, 0xC2, 0x3A, 0xC3, 0xA2, 0xC3, 0x0B, 0xC4, 0x73, 0xC4
.byte 0xDC, 0xC4, 0x44, 0xC5, 0xAD, 0xC5, 0x16, 0xC6, 0x7F, 0xC6, 0xE8, 0xC6, 0x51, 0xC7, 0xBB, 0xC7
.byte 0x24, 0xC8, 0x8D, 0xC8, 0xF7, 0xC8, 0x60, 0xC9, 0xCA, 0xC9, 0x34, 0xCA, 0x9E, 0xCA, 0x08, 0xCB
.byte 0x72, 0xCB, 0xDC, 0xCB, 0x47, 0xCC, 0xB1, 0xCC, 0x1B, 0xCD, 0x86, 0xCD, 0xF1, 0xCD, 0x5B, 0xCE
.byte 0xC6, 0xCE, 0x31, 0xCF, 0x9C, 0xCF, 0x08, 0xD0, 0x73, 0xD0, 0xDE, 0xD0, 0x4A, 0xD1, 0xB5, 0xD1
.byte 0x21, 0xD2, 0x8D, 0xD2, 0xF8, 0xD2, 0x64, 0xD3, 0xD0, 0xD3, 0x3D, 0xD4, 0xA9, 0xD4, 0x15, 0xD5
.byte 0x82, 0xD5, 0xEE, 0xD5, 0x5B, 0xD6, 0xC7, 0xD6, 0x34, 0xD7, 0xA1, 0xD7, 0x0E, 0xD8, 0x7B, 0xD8
.byte 0xE9, 0xD8, 0x56, 0xD9, 0xC3, 0xD9, 0x31, 0xDA, 0x9E, 0xDA, 0x0C, 0xDB, 0x7A, 0xDB, 0xE8, 0xDB
.byte 0x56, 0xDC, 0xC4, 0xDC, 0x32, 0xDD, 0xA0, 0xDD, 0x0F, 0xDE, 0x7D, 0xDE, 0xEC, 0xDE, 0x5B, 0xDF
.byte 0xC9, 0xDF, 0x38, 0xE0, 0xA7, 0xE0, 0x16, 0xE1, 0x86, 0xE1, 0xF5, 0xE1, 0x64, 0xE2, 0xD4, 0xE2
.byte 0x43, 0xE3, 0xB3, 0xE3, 0x23, 0xE4, 0x93, 0xE4, 0x03, 0xE5, 0x73, 0xE5, 0xE3, 0xE5, 0x54, 0xE6
.byte 0xC4, 0xE6, 0x35, 0xE7, 0xA5, 0xE7, 0x16, 0xE8, 0x87, 0xE8, 0xF8, 0xE8, 0x69, 0xE9, 0xDA, 0xE9
.byte 0x4B, 0xEA, 0xBC, 0xEA, 0x2E, 0xEB, 0x9F, 0xEB, 0x11, 0xEC, 0x83, 0xEC, 0xF5, 0xEC, 0x66, 0xED
.byte 0xD9, 0xED, 0x4B, 0xEE, 0xBD, 0xEE, 0x2F, 0xEF, 0xA2, 0xEF, 0x14, 0xF0, 0x87, 0xF0, 0xFA, 0xF0
.byte 0x6D, 0xF1, 0xE0, 0xF1, 0x53, 0xF2, 0xC6, 0xF2, 0x39, 0xF3, 0xAD, 0xF3, 0x20, 0xF4, 0x94, 0xF4
.byte 0x07, 0xF5, 0x7B, 0xF5, 0xEF, 0xF5, 0x63, 0xF6, 0xD7, 0xF6, 0x4C, 0xF7, 0xC0, 0xF7, 0x34, 0xF8
.byte 0xA9, 0xF8, 0x1E, 0xF9, 0x92, 0xF9, 0x07, 0xFA, 0x7C, 0xFA, 0xF1, 0xFA, 0x66, 0xFB, 0xDC, 0xFB
.byte 0x51, 0xFC, 0xC7, 0xFC, 0x3C, 0xFD, 0xB2, 0xFD, 0x28, 0xFE, 0x9E, 0xFE, 0x14, 0xFF, 0x8A, 0xFF
.byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
.byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
.byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
.byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03
.byte 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03
.byte 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04
.byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04
.byte 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05
.byte 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06
.byte 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08
.byte 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09
.byte 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B
.byte 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E
.byte 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10
.byte 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x14
.byte 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x18
.byte 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C
.byte 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22
.byte 0x22, 0x23, 0x23, 0x24, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x29
.byte 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x31, 0x31
.byte 0x32, 0x32, 0x33, 0x33, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x38, 0x38, 0x39, 0x3A, 0x3A, 0x3B
.byte 0x3C, 0x3C, 0x3D, 0x3E, 0x3F, 0x3F, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 0x46, 0x47
.byte 0x48, 0x49, 0x4A, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x55
.byte 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x67
.byte 0x68, 0x69, 0x6A, 0x6B, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A, 0x7B
.byte 0x7D, 0x7E, 0x7F, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25
.byte 0x26, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D
.byte 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x30, 0x31, 0x31, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x36
.byte 0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3E, 0x3E, 0x3F, 0x40, 0x40
.byte 0x41, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4D
.byte 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D
.byte 0x5E, 0x5F, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6F, 0x70
.byte 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7B, 0x7C, 0x7E, 0x7E, 0x40, 0x41, 0x42, 0x43, 0x43
.byte 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51
.byte 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61
.byte 0x62, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6B, 0x6C, 0x6D, 0x6E, 0x70, 0x71, 0x72, 0x74, 0x75
.byte 0x76, 0x78, 0x79, 0x7B, 0x7C, 0x7D, 0x7E, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x46, 0x46
.byte 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55
.byte 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x65, 0x66
.byte 0x67, 0x68, 0x69, 0x6A, 0x6C, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A
.byte 0x7C, 0x7D, 0x7E, 0x7F, 0x94, 0x6B, 0x0D, 0x02, 0xC0, 0x6B, 0x0D, 0x02, 0xEC, 0x6B, 0x0D, 0x02
.byte 0x84, 0x6C, 0x0D, 0x02, 0xB0, 0x6D, 0x0D, 0x02, 0x94, 0x6F, 0x0D, 0x02, 0x40, 0x73, 0x0D, 0x02
.byte 0xC0, 0x73, 0x0D, 0x02, 0xE8, 0x73, 0x0D, 0x02, 0x21, 0x06, 0xC0, 0xDE, 0xBA, 0x98, 0xCE, 0x3F
.byte 0xA6, 0x92, 0xE3, 0x9D, 0x46, 0xF2, 0xED, 0x01, 0x76, 0xE3, 0xCC, 0x08, 0x56, 0x23, 0x63, 0xFA
.byte 0xCA, 0xD4, 0xEC, 0xDF, 0x9A, 0x62, 0x78, 0x34, 0x8F, 0x6D, 0x63, 0x3C, 0xFE, 0x22, 0xCA, 0x92
.byte 0x20, 0x88, 0x97, 0x23, 0xD2, 0xCF, 0xAE, 0xC2, 0x32, 0x67, 0x8D, 0xFE, 0xCA, 0x83, 0x64, 0x98
.byte 0xAC, 0xFD, 0x3E, 0x37, 0x87, 0x46, 0x58, 0x24, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x48, 0xE3, 0x10, 0x02, 0x84, 0xE2, 0x10, 0x02, 0x84, 0xE3, 0x10, 0x02, 0x04, 0xE3, 0x10, 0x02
.byte 0x04, 0xE2, 0x10, 0x02, 0xC8, 0xE3, 0x10, 0x02, 0xC8, 0xE2, 0x10, 0x02, 0x0A, 0x00, 0x28, 0x00
.byte 0x00, 0x00, 0x28, 0x00, 0x0C, 0x27, 0x0E, 0x02, 0xC8, 0x26, 0x0E, 0x02, 0xE8, 0x26, 0x0E, 0x02
.byte 0x80, 0x27, 0x0E, 0x02, 0x34, 0x27, 0x0E, 0x02, 0x58, 0x27, 0x0E, 0x02, 0xD0, 0x1D, 0x0E, 0x02
.byte 0xFC, 0xE1, 0x10, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00
.byte 0xCC, 0x27, 0x0E, 0x02, 0xC8, 0x26, 0x0E, 0x02, 0xA8, 0x27, 0x0E, 0x02, 0x1C, 0x28, 0x0E, 0x02
.byte 0x34, 0x27, 0x0E, 0x02, 0xF4, 0x27, 0x0E, 0x02, 0xD0, 0x1D, 0x0E, 0x02, 0xFC, 0xE1, 0x10, 0x02
.byte 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00, 0x0A, 0x00, 0x0A, 0x00
.byte 0xD0, 0x07, 0x88, 0x13, 0xA4, 0x32, 0x0E, 0x02, 0x60, 0x32, 0x0E, 0x02, 0x80, 0x32, 0x0E, 0x02
.byte 0x18, 0x33, 0x0E, 0x02, 0xCC, 0x32, 0x0E, 0x02, 0xF0, 0x32, 0x0E, 0x02, 0x60, 0x1E, 0x0E, 0x02
.byte 0x7C, 0xE2, 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x00, 0x13, 0x00
.byte 0x0A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0xC8, 0x00, 0x88, 0x2D, 0x0E, 0x02, 0x44, 0x2D, 0x0E, 0x02
.byte 0x64, 0x2D, 0x0E, 0x02, 0xFC, 0x2D, 0x0E, 0x02, 0xB0, 0x2D, 0x0E, 0x02, 0xD4, 0x2D, 0x0E, 0x02
.byte 0xD0, 0x1D, 0x0E, 0x02, 0xC0, 0xE2, 0x10, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x88, 0x2D, 0x0E, 0x02, 0x44, 0x2D, 0x0E, 0x02, 0x64, 0x2D, 0x0E, 0x02
.byte 0xFC, 0x2D, 0x0E, 0x02, 0xB0, 0x2D, 0x0E, 0x02, 0xD4, 0x2D, 0x0E, 0x02, 0xD0, 0x1D, 0x0E, 0x02
.byte 0xC0, 0xE2, 0x10, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00
.byte 0x0A, 0x00, 0x0A, 0x00, 0xD0, 0x07, 0xD0, 0x07, 0xA4, 0x32, 0x0E, 0x02, 0x60, 0x32, 0x0E, 0x02
.byte 0x80, 0x32, 0x0E, 0x02, 0x18, 0x33, 0x0E, 0x02, 0xCC, 0x32, 0x0E, 0x02, 0xF0, 0x32, 0x0E, 0x02
.byte 0x60, 0x1E, 0x0E, 0x02, 0x40, 0xE3, 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0xC2, 0x00, 0x09, 0x00, 0xA4, 0x32, 0x0E, 0x02, 0x60, 0x32, 0x0E, 0x02, 0x80, 0x32, 0x0E, 0x02
.byte 0x18, 0x33, 0x0E, 0x02, 0xCC, 0x32, 0x0E, 0x02, 0xF0, 0x32, 0x0E, 0x02, 0x60, 0x1E, 0x0E, 0x02
.byte 0x40, 0xE3, 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x0A, 0x00, 0x0A, 0x00, 0xF4, 0x01, 0xF4, 0x01, 0x70, 0x34, 0x0E, 0x02, 0x44, 0x2D, 0x0E, 0x02
.byte 0x64, 0x2D, 0x0E, 0x02, 0x98, 0x34, 0x0E, 0x02, 0xB0, 0x2D, 0x0E, 0x02, 0xD4, 0x2D, 0x0E, 0x02
.byte 0xD0, 0x1D, 0x0E, 0x02, 0xC0, 0xE3, 0x10, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x32, 0x00, 0x1B, 0x00
.data
_02110C84:
.byte 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x04, 0x00
.byte 0x05, 0x00, 0x06, 0x00
_02110C94:
.byte 0xFF, 0xFF, 0xFF, 0xFF
_02110C98:
.byte 0x3A, 0x2F, 0x00, 0x00
_02110C9C:
.byte 0x72, 0x6F, 0x6D, 0x00
_02110CA0:
.byte 0x48, 0xE1, 0x10, 0x02, 0x40, 0x00, 0x00, 0x00
_02110CA8:
.byte 0x80, 0x00, 0x00, 0x00
_02110CAC:
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
.byte 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
.byte 0x0F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
_02110D6C:
.byte 0x78, 0xA4, 0x6A, 0xD7
.byte 0x56, 0xB7, 0xC7, 0xE8, 0xDB, 0x70, 0x20, 0x24, 0xEE, 0xCE, 0xBD, 0xC1, 0xAF, 0x0F, 0x7C, 0xF5
.byte 0x2A, 0xC6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xA8, 0x01, 0x95, 0x46, 0xFD, 0xD8, 0x98, 0x80, 0x69
.byte 0xAF, 0xF7, 0x44, 0x8B, 0xB1, 0x5B, 0xFF, 0xFF, 0xBE, 0xD7, 0x5C, 0x89, 0x22, 0x11, 0x90, 0x6B
.byte 0x93, 0x71, 0x98, 0xFD, 0x8E, 0x43, 0x79, 0xA6, 0x21, 0x08, 0xB4, 0x49, 0x62, 0x25, 0x1E, 0xF6
.byte 0x40, 0xB3, 0x40, 0xC0, 0x51, 0x5A, 0x5E, 0x26, 0xAA, 0xC7, 0xB6, 0xE9, 0x5D, 0x10, 0x2F, 0xD6
.byte 0x53, 0x14, 0x44, 0x02, 0x81, 0xE6, 0xA1, 0xD8, 0xC8, 0xFB, 0xD3, 0xE7, 0xE6, 0xCD, 0xE1, 0x21
.byte 0xD6, 0x07, 0x37, 0xC3, 0x87, 0x0D, 0xD5, 0xF4, 0xED, 0x14, 0x5A, 0x45, 0x05, 0xE9, 0xE3, 0xA9
.byte 0xF8, 0xA3, 0xEF, 0xFC, 0xD9, 0x02, 0x6F, 0x67, 0x8A, 0x4C, 0x2A, 0x8D, 0x42, 0x39, 0xFA, 0xFF
.byte 0x81, 0xF6, 0x71, 0x87, 0x22, 0x61, 0x9D, 0x6D, 0x0C, 0x38, 0xE5, 0xFD, 0x44, 0xEA, 0xBE, 0xA4
.byte 0xA9, 0xCF, 0xDE, 0x4B, 0x60, 0x4B, 0xBB, 0xF6, 0x70, 0xBC, 0xBF, 0xBE, 0xC6, 0x7E, 0x9B, 0x28
.byte 0xFA, 0x27, 0xA1, 0xEA, 0x85, 0x30, 0xEF, 0xD4, 0x05, 0x1D, 0x88, 0x04, 0x39, 0xD0, 0xD4, 0xD9
.byte 0xE5, 0x99, 0xDB, 0xE6, 0xF8, 0x7C, 0xA2, 0x1F, 0x65, 0x56, 0xAC, 0xC4, 0x44, 0x22, 0x29, 0xF4
.byte 0x97, 0xFF, 0x2A, 0x43, 0xA7, 0x23, 0x94, 0xAB, 0x39, 0xA0, 0x93, 0xFC, 0xC3, 0x59, 0x5B, 0x65
.byte 0x92, 0xCC, 0x0C, 0x8F, 0x7D, 0xF4, 0xEF, 0xFF, 0xD1, 0x5D, 0x84, 0x85, 0x4F, 0x7E, 0xA8, 0x6F
.byte 0xE0, 0xE6, 0x2C, 0xFE, 0x14, 0x43, 0x01, 0xA3, 0xA1, 0x11, 0x08, 0x4E, 0x82, 0x7E, 0x53, 0xF7
.byte 0x35, 0xF2, 0x3A, 0xBD, 0xBB, 0xD2, 0xD7, 0x2A, 0x91, 0xD3, 0x86, 0xEB, 0x61, 0x00, 0x00, 0x00
_02110E70:
.byte 0x74, 0x99, 0x0D, 0x02, 0xD8, 0x0E, 0x11, 0x02, 0xF0, 0x0E, 0x11, 0x02, 0xA8, 0x0E, 0x11, 0x02
.byte 0xC0, 0x0E, 0x11, 0x02, 0xA4, 0x0E, 0x11, 0x02, 0x08, 0x0F, 0x11, 0x02, 0x6C, 0x0E, 0x11, 0x02
.byte 0x44, 0x0F, 0x11, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0F, 0x00
.byte 0x0A, 0x00, 0x00, 0x00, 0x61, 0x62, 0x63, 0x00, 0x34, 0xAA, 0x97, 0x3C, 0xD4, 0xC4, 0xDA, 0xA4
.byte 0xF6, 0x1E, 0xEB, 0x2B, 0xDB, 0xAD, 0x27, 0x31, 0x65, 0x34, 0x01, 0x6F, 0x00, 0x00, 0x00, 0x00
.byte 0xDE, 0xA3, 0x56, 0xA2, 0xCD, 0xDD, 0x90, 0xC7, 0xA7, 0xEC, 0xED, 0xC5, 0xEB, 0xB5, 0x63, 0x93
.byte 0x4F, 0x46, 0x04, 0x52, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A
.byte 0xBA, 0x3E, 0x25, 0x71, 0x78, 0x50, 0xC2, 0x6C, 0x9C, 0xD0, 0xD8, 0x9D, 0x00, 0x00, 0x00, 0x00
.byte 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E, 0xBA, 0xAE, 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5
.byte 0xE5, 0x46, 0x70, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x61, 0x62, 0x63, 0x64, 0x62, 0x63, 0x64, 0x65
.byte 0x63, 0x64, 0x65, 0x66, 0x64, 0x65, 0x66, 0x67, 0x65, 0x66, 0x67, 0x68, 0x66, 0x67, 0x68, 0x69
.byte 0x67, 0x68, 0x69, 0x6A, 0x68, 0x69, 0x6A, 0x6B, 0x69, 0x6A, 0x6B, 0x6C, 0x6A, 0x6B, 0x6C, 0x6D
.byte 0x6B, 0x6C, 0x6D, 0x6E, 0x6C, 0x6D, 0x6E, 0x6F, 0x6D, 0x6E, 0x6F, 0x70, 0x6E, 0x6F, 0x70, 0x71
.byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33
.byte 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33
.byte 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33
.byte 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33
.byte 0x34, 0x35, 0x36, 0x37
_02110F84:
.byte 0x00, 0x00, 0x00, 0x00
_02110F88:
.byte 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
.byte 0x3B, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00
.byte 0xB5, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00
.byte 0x30, 0x01, 0x00, 0x00, 0x4E, 0x01, 0x00, 0x00
_02110FB8:
.byte 0x00, 0xFE, 0x7F, 0x02
_02110FBC:
.byte 0xFD, 0xFF, 0x00, 0x00
_02110FC0:
.byte 0x00, 0x00, 0x01, 0x00
_02110FC4:
.byte 0x00, 0x00, 0x00, 0x00
_02110FC8:
.byte 0x00, 0x00, 0x00, 0x00
.section .itcm,4,1,4
arm_func_start sub_01FF8000
sub_01FF8000: ; 0x01FF8000
stmdb sp!, {lr}
mov ip, #0x4000000
add ip, ip, #0x210
ldr r1, [ip, #-8]
cmp r1, #0
ldmeqia sp!, {pc}
ldmia ip, {r1, r2}
ands r1, r1, r2
ldmeqia sp!, {pc}
mov r3, #-0x80000000
_01FF8028:
clz r0, r1
bics r1, r1, r3, lsr r0
bne _01FF8028
mov r1, r3, lsr r0
str r1, [ip, #4]
rsbs r0, r0, #0x1f
ldr r1, _01FF8050 ; =0x027E0000
ldr r0, [r1, r0, lsl #2]
ldr lr, _01FF8054 ; =sub_01FF8058
bx r0
.align 2, 0
_01FF8050: .word 0x027E0000
_01FF8054: .word sub_01FF8058
arm_func_end sub_01FF8000
arm_func_start sub_01FF8058
sub_01FF8058: ; 0x01FF8058
ldr ip, _01FF81A4 ; =0x027E0060
mov r3, #0
ldr ip, [ip]
mov r2, #1
cmp ip, #0
beq _01FF80A8
_01FF8070:
str r2, [ip, #0x64]
str r3, [ip, #0x78]
str r3, [ip, #0x7c]
ldr r0, [ip, #0x80]
str r3, [ip, #0x80]
mov ip, r0
cmp ip, #0
bne _01FF8070
ldr ip, _01FF81A4 ; =0x027E0060
str r3, [ip]
str r3, [ip, #4]
ldr ip, _01FF81A8 ; =0x021E16A0
mov r1, #1
strh r1, [ip]
_01FF80A8:
ldr ip, _01FF81A8 ; =0x021E16A0
ldrh r1, [ip]
cmp r1, #0
ldreq pc, [sp], #4
mov r1, #0
strh r1, [ip]
mov r3, #0xd2
msr cpsr_c, r3
add r2, ip, #8
ldr r1, [r2]
_01FF80D0:
cmp r1, #0
ldrneh r0, [r1, #0x64]
cmpne r0, #1
ldrne r1, [r1, #0x68]
bne _01FF80D0
cmp r1, #0
bne _01FF80F8
_01FF80EC:
mov r3, #0x92
msr cpsr_c, r3
ldr pc, [sp], #4
_01FF80F8:
ldr r0, [ip, #4]
cmp r1, r0
beq _01FF80EC
ldr r3, [ip, #0xc]
cmp r3, #0
beq _01FF8120
stmdb sp!, {r0, r1, ip}
mov lr, pc
bx r3
arm_func_end sub_01FF8058
arm_func_start sub_01FF811C
sub_01FF811C: ; 0x01FF811C
ldmia sp!, {r0, r1, ip}
_01FF8120:
str r1, [ip, #4]
mrs r2, spsr
str r2, [r0, #0]!
stmdb sp!, {r0, r1}
add r0, r0, #0
add r0, r0, #0x48
ldr r1, _01FF81AC ; =0x020D9BF4
blx r1
ldmia sp!, {r0, r1}
ldmib sp!, {r2, r3}
stmib r0!, {r2, r3}
ldmib sp!, {r2, r3, ip, lr}
stmib r0!, {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
stmib r0!, {lr}
mov r3, #0xd3
msr cpsr_c, r3
stmib r0!, {sp}
stmdb sp!, {r1}
add r0, r1, #0
add r0, r0, #0x48
ldr r1, _01FF81B0 ; =0x020D9C34
blx r1
ldmia sp!, {r1}
ldr sp, [r1, #0x44]
mov r3, #0xd2
msr cpsr_c, r3
ldr r2, [r1, #0]!
msr spsr_fc, r2
ldr lr, [r1, #0x40]
ldmib r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
mov r0, r0
stmda sp!, {r0, r1, r2, r3, ip, lr}
ldmia sp!, {pc}
.align 2, 0
_01FF81A4: .word 0x027E0060
_01FF81A8: .word 0x021E16A0
_01FF81AC: .word 0x020D9BF4
_01FF81B0: .word 0x020D9C34
arm_func_end sub_01FF811C
arm_func_start sub_01FF81B4
sub_01FF81B4: ; 0x01FF81B4
stmdb sp!, {r3, lr}
ldr r0, _01FF81E0 ; =0x021E1A04
_01FF81BC:
ldrh r1, [r0]
cmp r1, #0
beq _01FF81BC
ldr r0, _01FF81E4 ; =0x04000208
mov r1, #0
strh r1, [r0]
bl sub_01FF82C8
bl sub_01FF81E8
ldmia sp!, {r3, pc}
.align 2, 0
_01FF81E0: .word 0x021E1A04
_01FF81E4: .word 0x04000208
arm_func_end sub_01FF81B4
arm_func_start sub_01FF81E8
sub_01FF81E8: ; 0x01FF81E8
mov ip, #0x4000000
str ip, [ip, #0x208]
ldr r1, _01FF8294 ; =0x027E0000
add r1, r1, #0x3fc0
add r1, r1, #0x3c
mov r0, #0
str r0, [r1]
ldr r1, _01FF8298 ; =0x04000180
_01FF8208:
ldrh r0, [r1]
and r0, r0, #0xf
cmp r0, #1
bne _01FF8208
mov r0, #0x100
strh r0, [r1]
mov r0, #0
ldr r3, _01FF829C ; =0x027FFD9C
ldr r4, [r3]
ldr r1, _01FF82A0 ; =0x027FFD80
mov r2, #0x80
bl sub_01FF82B4
str r4, [r3]
ldr r1, _01FF82A4 ; =0x027FFF80
mov r2, #0x18
bl sub_01FF82B4
ldr r1, _01FF82A8 ; =0x027FFF98
strh r0, [r1]
ldr r1, _01FF82AC ; =0x027FFF9C
mov r2, #0x64
bl sub_01FF82B4
ldr r1, _01FF8298 ; =0x04000180
_01FF8260:
ldrh r0, [r1]
and r0, r0, #0xf
cmp r0, #1
beq _01FF8260
mov r0, #0
strh r0, [r1]
ldr r3, _01FF82B0 ; =0x027FFE00
ldr ip, [r3, #0x24]
mov lr, ip
ldr fp, _01FF82A4 ; =0x027FFF80
ldmia fp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl}
mov fp, #0
bx ip
.align 2, 0
_01FF8294: .word 0x027E0000
_01FF8298: .word 0x04000180
_01FF829C: .word 0x027FFD9C
_01FF82A0: .word 0x027FFD80
_01FF82A4: .word 0x027FFF80
_01FF82A8: .word 0x027FFF98
_01FF82AC: .word 0x027FFF9C
_01FF82B0: .word 0x027FFE00
arm_func_end sub_01FF81E8
arm_func_start sub_01FF82B4
sub_01FF82B4: ; 0x01FF82B4
add ip, r1, r2
_01FF82B8:
cmp r1, ip
stmltia r1!, {r0}
blt _01FF82B8
bx lr
arm_func_end sub_01FF82B4
arm_func_start sub_01FF82C8
sub_01FF82C8: ; 0x01FF82C8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, _01FF8368 ; =0x027FFC2C
ldr r5, [r1]
cmp r5, #0x8000
blo _01FF82EC
mov r0, r5
add r1, r1, #0x1d4
mov r2, #0x160
bl sub_01FF8370
_01FF82EC:
ldr r0, _01FF836C ; =0x027FFE20
ldr r6, [r0]
ldr r7, [r0, #8]
ldr r8, [r0, #0xc]
ldr sb, [r0, #0x10]
ldr fp, [r0, #0x18]
ldr sl, [r0, #0x1c]
bl OS_DisableInterrupts
mov r4, r0
bl sub_020D27FC
bl sub_020D27F0
mov r0, r4
bl OS_RestoreInterrupts
bl sub_020D28C4
bl sub_020D28B8
add r6, r6, r5
cmp r6, #0x8000
bhs _01FF8344
rsb r0, r6, #0x8000
add r7, r7, r0
sub r8, r8, r0
mov r6, #0x8000
_01FF8344:
mov r0, r6
mov r1, r7
mov r2, r8
bl sub_01FF8370
mov r1, fp
mov r2, sl
add r0, sb, r5
bl sub_01FF8370
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_01FF8368: .word 0x027FFC2C
_01FF836C: .word 0x027FFE20
arm_func_end sub_01FF82C8
arm_func_start sub_01FF8370
sub_01FF8370: ; 0x01FF8370
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r4, _01FF8434 ; =0x027FFE60
ldr r3, _01FF8438 ; =0x000001FF
ldr r5, [r4]
and r4, r0, r3
bic r3, r5, #0x7000000
ldr r5, _01FF843C ; =0x040001A4
orr r3, r3, #0xa1000000
rsb ip, r4, #0
_01FF8394:
ldr r4, [r5]
tst r4, #-0x80000000
bne _01FF8394
ldr r7, _01FF8440 ; =0x040001A1
mov r4, #0x80
strb r4, [r7]
cmp ip, r2
add r0, r0, ip
ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldr r4, _01FF8444 ; =0x04100010
mov sb, r0, lsr #8
mov r6, #0xb7
mov r5, #0
_01FF83C8:
strb r6, [r7, #7]
mov lr, r0, lsr #0x18
strb lr, [r7, #8]
mov lr, r0, lsr #0x10
strb lr, [r7, #9]
strb sb, [r7, #0xa]
strb r0, [r7, #0xb]
strb r5, [r7, #0xc]
strb r5, [r7, #0xd]
strb r5, [r7, #0xe]
str r3, [r7, #3]
_01FF83F4:
ldr r8, [r7, #3]
tst r8, #0x800000
beq _01FF8418
cmp ip, #0
ldr lr, [r4]
blt _01FF8414
cmp ip, r2
strlt lr, [r1, ip]
_01FF8414:
add ip, ip, #4
_01FF8418:
tst r8, #-0x80000000
bne _01FF83F4
cmp ip, r2
add sb, sb, #2
add r0, r0, #0x200
blt _01FF83C8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_01FF8434: .word 0x027FFE60
_01FF8438: .word 0x000001FF
_01FF843C: .word 0x040001A4
_01FF8440: .word 0x040001A1
_01FF8444: .word 0x04100010
arm_func_end sub_01FF8370
arm_func_start sub_01FF8448
sub_01FF8448: ; 0x01FF8448
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl OS_DisableInterrupts
mov r1, #0xc
mul r2, r7, r1
add r1, r2, #0xb0
add r2, r2, #0x4000000
str r6, [r2, #0xb0]
add r1, r1, #0x4000000
str r5, [r1, #4]
str r4, [r1, #8]
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_01FF8448
arm_func_start sub_01FF8488
sub_01FF8488: ; 0x01FF8488
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl OS_DisableInterrupts
mov r1, #0xc
mul r2, r7, r1
add r1, r2, #0xb0
add r2, r2, #0x4000000
str r6, [r2, #0xb0]
add r3, r1, #0x4000000
str r5, [r3, #4]
ldr r2, _01FF84F0 ; =0x040000B0
str r4, [r3, #8]
ldr r1, [r2]
cmp r7, #0
ldr r1, [r2]
bne _01FF84E8
mov r2, #0
str r2, [r3]
ldr r1, _01FF84F4 ; =0x81400001
str r2, [r3, #4]
str r1, [r3, #8]
_01FF84E8:
bl OS_RestoreInterrupts
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_01FF84F0: .word 0x040000B0
_01FF84F4: .word 0x81400001
arm_func_end sub_01FF8488
arm_func_start sub_01FF84F8
sub_01FF84F8: ; 0x01FF84F8
mov ip, #0xc
mul ip, r0, ip
add r0, ip, #0xb0
add ip, ip, #0x4000000
str r1, [ip, #0xb0]
add r0, r0, #0x4000000
str r2, [r0, #4]
str r3, [r0, #8]
bx lr
arm_func_end sub_01FF84F8
arm_func_start sub_01FF851C
sub_01FF851C: ; 0x01FF851C
stmdb sp!, {r3, lr}
mov ip, #0xc
mul lr, r0, ip
add ip, lr, #0xb0
add lr, lr, #0x4000000
str r1, [lr, #0xb0]
add ip, ip, #0x4000000
str r2, [ip, #4]
ldr r2, _01FF8578 ; =0x040000B0
str r3, [ip, #8]
ldr r1, [r2]
cmp r0, #0
ldr r0, [r2]
bne _01FF8568
mov r1, #0
str r1, [ip]
ldr r0, _01FF857C ; =0x81400001
str r1, [ip, #4]
str r0, [ip, #8]
_01FF8568:
ldr r1, _01FF8578 ; =0x040000B0
ldr r0, [r1]
ldr r0, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_01FF8578: .word 0x040000B0
_01FF857C: .word 0x81400001
arm_func_end sub_01FF851C
arm_func_start sub_01FF8580
sub_01FF8580: ; 0x01FF8580
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
movs r8, r2
mov sl, r0
mov sb, r1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r3, #0
bl sub_020D4394
add r0, sl, sl, lsl #1
add r0, r0, #2
mov r0, r0, lsl #2
add r0, r0, #0xb0
add r6, r0, #0x4000000
_01FF85B0:
ldr r0, [r6]
tst r0, #-0x80000000
bne _01FF85B0
cmp r8, #0
beq _01FF85FC
ldr fp, _01FF860C ; =0x04000400
ldr r4, _01FF8610 ; =0x84400000
mov r5, #0x1d8
_01FF85D0:
cmp r8, #0x1d8
movhi r7, r5
movls r7, r8
mov r0, sl
mov r1, sb
mov r2, fp
orr r3, r4, r7, lsr #2
bl sub_01FF8448
subs r8, r8, r7
add sb, sb, r7
bne _01FF85D0
_01FF85FC:
ldr r0, [r6]
tst r0, #-0x80000000
bne _01FF85FC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_01FF860C: .word 0x04000400
_01FF8610: .word 0x84400000
arm_func_end sub_01FF8580