pokeheartgold/asm/overlay_00_thumb.s
2022-02-01 12:03:03 -05:00

4546 lines
85 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start ov00_021E5900
ov00_021E5900: ; 0x021E5900
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp, #4]
ldr r0, _021E5AC4 ; =_0221A680
add r5, r1, #0
ldr r0, [r0]
add r4, r2, #0
str r3, [sp]
cmp r0, #0
beq _021E5918
bl GF_AssertFail
_021E5918:
ldr r1, _021E5AC8 ; =0x00001108
add r0, r5, #0
bl AllocFromHeap
ldr r2, _021E5AC8 ; =0x00001108
add r6, r0, #0
mov r1, #0
bl MI_CpuFill8
add r2, r6, #0
add r2, #0x1f
mov r0, #0x1f
bic r2, r0
ldr r1, _021E5AC4 ; =_0221A680
ldr r0, _021E5ACC ; =0x00000F7C
str r2, [r1]
str r6, [r2, r0]
ldr r6, [r1]
ldr r2, [sp, #4]
sub r3, r0, #4
str r2, [r6, r3]
add r3, r0, #0
ldr r6, [r1]
mov r2, #0
add r3, #0x28
str r2, [r6, r3]
add r3, r0, #0
ldr r6, [r1]
add r3, #0x2c
str r2, [r6, r3]
add r3, r0, #0
ldr r6, [r1]
add r3, #0x44
str r2, [r6, r3]
ldr r3, [r1]
add r0, #0xf4
str r2, [r3, r0]
ldr r0, [r1]
ldr r2, _021E5AD0 ; =0x00001084
str r5, [r0, r2]
add r0, r2, #4
ldr r3, [r1]
add r2, #8
str r5, [r3, r0]
ldr r0, [r1]
ldr r1, _021E5AD4 ; =0x00003020
str r4, [r0, r2]
add r0, r5, #0
add r1, r4, r1
bl AllocFromHeap
ldr r3, _021E5AC4 ; =_0221A680
mov r1, #0xf9
ldr r2, [r3]
lsl r1, r1, #4
str r0, [r2, r1]
add r0, r1, #0
ldr r5, [r3]
mov r2, #0
add r0, #8
str r2, [r5, r0]
ldr r0, [r3]
ldr r0, [r0, r1]
mov r1, #0x1f
add r0, #0x1f
bic r0, r1
add r1, r4, #0
bl NNS_FndCreateExpHeapEx
ldr r4, _021E5AC4 ; =_0221A680
mov r6, #0
ldr r2, [r4]
ldr r1, _021E5AD8 ; =0x00000F94
sub r7, r6, #1
str r0, [r2, r1]
add r0, r1, #0
ldr r2, [r4]
add r0, #8
str r6, [r2, r0]
ldr r0, [r4]
ldr r2, _021E5ADC ; =0x000010A4
str r6, [r0, r2]
add r0, r2, #0
ldr r3, [r4]
sub r0, #0x10
str r7, [r3, r0]
add r0, r2, #0
ldr r3, [r4]
sub r0, #0x38
str r6, [r3, r0]
add r3, r2, #0
ldr r5, [r4]
ldr r0, [sp]
sub r3, #0x28
str r0, [r5, r3]
add r0, r2, #0
ldr r3, [r4]
sub r0, #0x24
str r6, [r3, r0]
add r0, r2, #0
ldr r3, [r4]
add r0, #0x34
str r6, [r3, r0]
add r0, r2, #0
ldr r3, [r4]
sub r0, #0xc
str r7, [r3, r0]
add r3, r2, #0
ldr r5, [r4]
mov r0, #1
sub r3, #8
str r0, [r5, r3]
add r3, r2, #0
ldr r5, [r4]
add r3, #0x3a
strb r6, [r5, r3]
add r3, r2, #0
ldr r5, [r4]
add r3, #0x28
str r6, [r5, r3]
add r3, r2, #0
ldr r5, [r4]
add r3, #0x38
strb r6, [r5, r3]
add r3, r2, #0
ldr r5, [r4]
add r3, #0x39
strb r6, [r5, r3]
add r3, r2, #0
ldr r5, [r4]
add r3, #0x30
strh r0, [r5, r3]
add r3, r2, #0
ldr r5, [r4]
add r3, #0x2c
str r0, [r5, r3]
ldr r3, [r4]
add r2, #0x32
strh r0, [r3, r2]
ldr r0, [sp, #4]
cmp r0, #0
beq _021E5A66
ldr r0, [r4]
sub r1, #0x1c
ldr r0, [r0, r1]
bl sub_0202C6F4
bl sub_0202C08C
add r2, r4, #0
mov r1, #0xf1
ldr r3, [r2]
lsl r1, r1, #4
str r0, [r3, r1]
ldr r0, [r2]
add r1, #0x68
ldr r0, [r0, r1]
bl sub_0202C6F4
add r1, r6, #0
bl sub_0202C23C
add r1, r4, #0
ldr r2, [r1]
mov r1, #1
lsl r1, r1, #8
str r0, [r2, r1]
_021E5A66:
ldr r2, _021E5AC4 ; =_0221A680
ldr r1, _021E5AE0 ; =0x000010E5
ldr r0, [r2]
mov r3, #1
strb r3, [r0, r1]
mov r0, #0
ldr r3, [r2]
sub r1, #0x81
str r0, [r3, r1]
ldr r1, _021E5AE4 ; =0x00001044
add r4, r0, #0
_021E5A7C:
ldr r3, [r2]
add r3, r3, r0
add r0, r0, #1
strb r4, [r3, r1]
cmp r0, #0x20
blt _021E5A7C
bl ov00_021E700C
ldr r0, _021E5AC4 ; =_0221A680
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
bl DWC_CheckHasProfile
cmp r0, #0
bne _021E5AA4
add sp, #8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021E5AA4:
ldr r0, _021E5AC4 ; =_0221A680
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
bl DWC_CheckValidConsole
cmp r0, #0
beq _021E5ABC
add sp, #8
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E5ABC:
mov r0, #2
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_021E5AC4: .word _0221A680
_021E5AC8: .word 0x00001108
_021E5ACC: .word 0x00000F7C
_021E5AD0: .word 0x00001084
_021E5AD4: .word 0x00003020
_021E5AD8: .word 0x00000F94
_021E5ADC: .word 0x000010A4
_021E5AE0: .word 0x000010E5
_021E5AE4: .word 0x00001044
thumb_func_end ov00_021E5900
thumb_func_start ov00_021E5AE8
ov00_021E5AE8: ; 0x021E5AE8
push {r3, lr}
ldr r0, _021E5B58 ; =_0221A680
ldr r0, [r0]
cmp r0, #0
beq _021E5B52
bl ov00_021E7300
ldr r0, _021E5B58 ; =_0221A680
ldr r2, [r0]
ldr r0, _021E5B5C ; =0x00000F98
ldr r1, [r2, r0]
cmp r1, #0
beq _021E5B20
add r0, r0, #4
ldr r0, [r2, r0]
bl NNS_FndDestroyExpHeap
ldr r0, _021E5B58 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E5B5C ; =0x00000F98
ldr r0, [r1, r0]
bl FreeToHeap
ldr r0, _021E5B58 ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E5B5C ; =0x00000F98
str r2, [r1, r0]
_021E5B20:
ldr r0, _021E5B58 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E5B60 ; =0x00000F94
ldr r0, [r1, r0]
bl NNS_FndDestroyExpHeap
ldr r0, _021E5B58 ; =_0221A680
ldr r1, _021E5B64 ; =0x00001084
ldr r2, [r0]
ldr r0, [r2, r1]
sub r1, #0xf4
ldr r1, [r2, r1]
bl FreeToHeapExplicit
ldr r0, _021E5B58 ; =_0221A680
ldr r1, _021E5B68 ; =0x00000F7C
ldr r2, [r0]
ldr r0, _021E5B64 ; =0x00001084
ldr r1, [r2, r1]
ldr r0, [r2, r0]
bl FreeToHeapExplicit
ldr r0, _021E5B58 ; =_0221A680
mov r1, #0
str r1, [r0]
_021E5B52:
bl ov00_021EC210
pop {r3, pc}
.balign 4, 0
_021E5B58: .word _0221A680
_021E5B5C: .word 0x00000F98
_021E5B60: .word 0x00000F94
_021E5B64: .word 0x00001084
_021E5B68: .word 0x00000F7C
thumb_func_end ov00_021E5AE8
thumb_func_start ov00_021E5B6C
ov00_021E5B6C: ; 0x021E5B6C
push {r3, lr}
sub sp, #0x68
ldr r0, _021E5C60 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E5C64 ; =0x00001070
ldr r0, [r1, r0]
cmp r0, #4
bhi _021E5C56
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E5B88: ; jump table
.short _021E5B92 - _021E5B88 - 2 ; case 0
.short _021E5BC8 - _021E5B88 - 2 ; case 1
.short _021E5BF6 - _021E5B88 - 2 ; case 2
.short _021E5C46 - _021E5B88 - 2 ; case 3
.short _021E5C4C - _021E5B88 - 2 ; case 4
_021E5B92:
ldr r0, _021E5C68 ; =ov00_021E65D4
ldr r1, _021E5C6C ; =ov00_021E6638
bl ov00_021EC294
ldr r0, _021E5C60 ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E5C70 ; =0x00000F14
mov r3, #0x14
add r0, r1, r0
mov r1, #2
bl ov00_021EC3F0
mov r0, #2
bl ov00_021EC454
bl ov00_021EC4A4
ldr r1, _021E5C60 ; =_0221A680
ldr r0, _021E5C64 ; =0x00001070
ldr r2, [r1]
mov r3, #1
str r3, [r2, r0]
ldr r1, [r1]
mov r2, #0
add r0, #0x20
str r2, [r1, r0]
_021E5BC8:
bl ov00_021EC5B4
cmp r0, #0
beq _021E5BF0
bl ov00_021EC724
cmp r0, #4
bne _021E5BE4
ldr r0, _021E5C60 ; =_0221A680
mov r2, #2
ldr r1, [r0]
ldr r0, _021E5C64 ; =0x00001070
str r2, [r1, r0]
b _021E5BF6
_021E5BE4:
ldr r0, _021E5C60 ; =_0221A680
mov r2, #0xc
ldr r1, [r0]
ldr r0, _021E5C64 ; =0x00001070
str r2, [r1, r0]
b _021E5BF6
_021E5BF0:
bl ov00_021EC60C
b _021E5C56
_021E5BF6:
bl ov00_021E6690
cmp r0, #0
bne _021E5C5A
ldr r0, _021E5C60 ; =_0221A680
mov r2, #0xf1
ldr r1, [r0]
ldr r0, _021E5C74 ; =_0221640C
lsl r2, r2, #4
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #1
lsl r0, r0, #8
ldr r0, [r1, r0]
ldr r3, _021E5C78 ; =_02216400
str r0, [sp, #0xc]
mov r0, #0x20
str r0, [sp, #0x10]
add r0, #0xe4
add r0, r1, r0
ldr r1, [r1, r2]
ldr r2, _021E5C7C ; =0x000029E7
bl ov00_021ED730
add r0, sp, #0x14
bl OS_GetOwnerInfo
mov r1, #0
ldr r2, _021E5C80 ; =ov00_021E61A8
add r0, sp, #0x18
add r3, r1, #0
bl ov00_021EDD6C
ldr r0, _021E5C60 ; =_0221A680
mov r2, #3
ldr r1, [r0]
ldr r0, _021E5C64 ; =0x00001070
str r2, [r1, r0]
_021E5C46:
bl ov00_021EDB1C
b _021E5C56
_021E5C4C:
bl ov00_021EDB1C
add sp, #0x68
mov r0, #0x1b
pop {r3, pc}
_021E5C56:
bl ov00_021E6690
_021E5C5A:
add sp, #0x68
pop {r3, pc}
nop
_021E5C60: .word _0221A680
_021E5C64: .word 0x00001070
_021E5C68: .word ov00_021E65D4
_021E5C6C: .word ov00_021E6638
_021E5C70: .word 0x00000F14
_021E5C74: .word _0221640C
_021E5C78: .word _02216400
_021E5C7C: .word 0x000029E7
_021E5C80: .word ov00_021E61A8
thumb_func_end ov00_021E5B6C
thumb_func_start ov00_021E5C84
ov00_021E5C84: ; 0x021E5C84
push {r3, r4}
ldr r3, _021E5C98 ; =_0221A680
ldr r2, _021E5C9C ; =0x00000FA4
ldr r4, [r3]
str r0, [r4, r2]
ldr r3, [r3]
add r0, r2, #4
str r1, [r3, r0]
pop {r3, r4}
bx lr
.balign 4, 0
_021E5C98: .word _0221A680
_021E5C9C: .word 0x00000FA4
thumb_func_end ov00_021E5C84
thumb_func_start ov00_021E5CA0
ov00_021E5CA0: ; 0x021E5CA0
push {r3, r4}
ldr r3, _021E5CB4 ; =_0221A680
ldr r2, _021E5CB8 ; =0x00000FAC
ldr r4, [r3]
str r0, [r4, r2]
ldr r3, [r3]
add r0, r2, #4
str r1, [r3, r0]
pop {r3, r4}
bx lr
.balign 4, 0
_021E5CB4: .word _0221A680
_021E5CB8: .word 0x00000FAC
thumb_func_end ov00_021E5CA0
thumb_func_start ov00_021E5CBC
ov00_021E5CBC: ; 0x021E5CBC
ldr r1, _021E5CC8 ; =_0221A680
ldr r2, [r1]
ldr r1, _021E5CCC ; =0x00000FBC
str r0, [r2, r1]
bx lr
nop
_021E5CC8: .word _0221A680
_021E5CCC: .word 0x00000FBC
thumb_func_end ov00_021E5CBC
thumb_func_start ov00_021E5CD0
ov00_021E5CD0: ; 0x021E5CD0
push {r3, r4}
ldr r3, _021E5CE4 ; =_0221A680
ldr r2, _021E5CE8 ; =0x00000FB4
ldr r4, [r3]
str r0, [r4, r2]
ldr r3, [r3]
add r0, r2, #4
str r1, [r3, r0]
pop {r3, r4}
bx lr
.balign 4, 0
_021E5CE4: .word _0221A680
_021E5CE8: .word 0x00000FB4
thumb_func_end ov00_021E5CD0
thumb_func_start ov00_021E5CEC
ov00_021E5CEC: ; 0x021E5CEC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, _021E5DFC ; =_0221A680
add r4, r1, #0
ldr r0, [r0]
add r6, r2, #0
add r7, r3, #0
cmp r0, #0
bne _021E5D04
bl GF_AssertFail
_021E5D04:
ldr r0, _021E5DFC ; =_0221A680
ldr r1, [r0]
ldr r0, _021E5E00 ; =0x00001070
ldr r0, [r1, r0]
cmp r0, #4
beq _021E5D16
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E5D16:
bl ov00_021E7300
ldr r2, _021E5E04 ; =_0221602C
add r1, sp, #8
ldmia r2!, {r0, r2}
str r0, [sp, #8]
mov r0, #0xfa
lsl r0, r0, #2
str r2, [sp, #0xc]
mul r0, r7
str r0, [sp, #0xc]
mov r0, #0
mov r2, #8
bl ov00_021F14D4
cmp r0, #0
beq _021E5D3C
bl GF_AssertFail
_021E5D3C:
ldr r1, _021E5E08 ; =_02216414
mov r0, #0
add r2, r5, #0
bl ov00_021F13A4
cmp r0, #0
bne _021E5D4E
bl GF_AssertFail
_021E5D4E:
ldr r0, _021E5DFC ; =_0221A680
mov r2, #0x80
ldr r1, [r0]
ldr r0, _021E5E0C ; =0x00000FC4
add r0, r1, r0
mov r1, #0
bl MI_CpuFill8
ldr r0, _021E5DFC ; =_0221A680
ldr r2, _021E5E08 ; =_02216414
ldr r1, [r0]
ldr r0, _021E5E0C ; =0x00000FC4
add r3, r5, #0
add r0, r1, r0
ldr r1, _021E5E10 ; =_02216034
bl sprintf
ldr r0, _021E5DFC ; =_0221A680
ldr r1, [r0]
ldr r0, _021E5E0C ; =0x00000FC4
add r0, r1, r0
bl strlen
cmp r0, #0x80
blo _021E5D84
bl GF_AssertFail
_021E5D84:
cmp r6, #0
beq _021E5D98
ldr r0, _021E5DFC ; =_0221A680
ldr r2, _021E5E0C ; =0x00000FC4
ldr r3, [r0]
mov r0, #1
add r1, r3, r2
add r2, r3, r2
bl ov00_021F13A4
_021E5D98:
ldr r2, _021E5DFC ; =_0221A680
ldr r1, _021E5E00 ; =0x00001070
ldr r0, [r2]
mov r3, #5
str r3, [r0, r1]
add r0, r1, #0
ldr r3, [r2]
add r0, #0xc
str r4, [r3, r0]
ldr r0, _021E5E14 ; =ov00_021E6424
mov r3, #0
str r0, [sp]
str r3, [sp, #4]
lsl r0, r4, #0x18
ldr r2, [r2]
sub r1, #0xac
add r1, r2, r1
ldr r2, _021E5E18 ; =ov00_021E63CC
lsr r0, r0, #0x18
bl ov00_021EDF1C
ldr r0, _021E5DFC ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E5E1C ; =0x00001074
str r2, [r1, r0]
ldr r0, _021E5E20 ; =ov00_021E6428
bl ov00_021F989C
ldr r0, _021E5E24 ; =ov00_021E6484
bl ov00_021F98BC
ldr r0, _021E5E28 ; =ov00_021E6554
mov r1, #0
bl ov00_021EE24C
ldr r0, _021E5E2C ; =ov00_021E6240
bl ov00_021F98DC
ldr r2, _021E5DFC ; =_0221A680
ldr r1, _021E5E30 ; =0x00001078
ldr r0, [r2]
mov r3, #0
str r3, [r0, r1]
ldr r2, [r2]
mov r0, #1
add r1, #0x6d
strb r0, [r2, r1]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E5DFC: .word _0221A680
_021E5E00: .word 0x00001070
_021E5E04: .word _0221602C
_021E5E08: .word _02216414
_021E5E0C: .word 0x00000FC4
_021E5E10: .word _02216034
_021E5E14: .word ov00_021E6424
_021E5E18: .word ov00_021E63CC
_021E5E1C: .word 0x00001074
_021E5E20: .word ov00_021E6428
_021E5E24: .word ov00_021E6484
_021E5E28: .word ov00_021E6554
_021E5E2C: .word ov00_021E6240
_021E5E30: .word 0x00001078
thumb_func_end ov00_021E5CEC
thumb_func_start ov00_021E5E34
ov00_021E5E34: ; 0x021E5E34
ldr r0, _021E5E4C ; =_0221A680
ldr r2, [r0]
ldr r0, _021E5E50 ; =0x00001070
ldr r1, [r2, r0]
cmp r1, #0xa
bne _021E5E46
mov r1, #0xb
str r1, [r2, r0]
bx lr
_021E5E46:
mov r1, #9
str r1, [r2, r0]
bx lr
.balign 4, 0
_021E5E4C: .word _0221A680
_021E5E50: .word 0x00001070
thumb_func_end ov00_021E5E34
thumb_func_start ov00_021E5E54
ov00_021E5E54: ; 0x021E5E54
push {r4, lr}
ldr r2, _021E5F70 ; =_0221A680
ldr r1, _021E5F74 ; =0x00001070
ldr r3, [r2]
ldr r4, [r3, r1]
cmp r4, #0x10
bls _021E5E64
b _021E5F68
_021E5E64:
add r4, r4, r4
add r4, pc
ldrh r4, [r4, #6]
lsl r4, r4, #0x10
asr r4, r4, #0x10
add pc, r4
_021E5E70: ; jump table
.short _021E5F68 - _021E5E70 - 2 ; case 0
.short _021E5F68 - _021E5E70 - 2 ; case 1
.short _021E5F68 - _021E5E70 - 2 ; case 2
.short _021E5F68 - _021E5E70 - 2 ; case 3
.short _021E5F68 - _021E5E70 - 2 ; case 4
.short _021E5E92 - _021E5E70 - 2 ; case 5
.short _021E5EC4 - _021E5E70 - 2 ; case 6
.short _021E5EDC - _021E5E70 - 2 ; case 7
.short _021E5F68 - _021E5E70 - 2 ; case 8
.short _021E5F18 - _021E5E70 - 2 ; case 9
.short _021E5EC4 - _021E5E70 - 2 ; case 10
.short _021E5F32 - _021E5E70 - 2 ; case 11
.short _021E5F4C - _021E5E70 - 2 ; case 12
.short _021E5F68 - _021E5E70 - 2 ; case 13
.short _021E5F68 - _021E5E70 - 2 ; case 14
.short _021E5F68 - _021E5E70 - 2 ; case 15
.short _021E5F52 - _021E5E70 - 2 ; case 16
_021E5E92:
cmp r0, #0
beq _021E5E9A
mov r0, #6
str r0, [r3, r1]
_021E5E9A:
ldr r0, _021E5F70 ; =_0221A680
ldr r2, _021E5F78 ; =0x00001074
ldr r0, [r0]
ldr r1, [r0, r2]
cmp r1, #2
bne _021E5F68
add r1, r2, #0
add r1, #0x20
ldr r1, [r0, r1]
cmp r1, #0
blt _021E5F68
add r3, r0, r1
add r1, r2, #0
sub r1, #0x30
ldrb r1, [r3, r1]
cmp r1, #6
beq _021E5F68
mov r3, #0xa
sub r1, r2, #4
str r3, [r0, r1]
b _021E5F68
_021E5EC4:
add r0, r1, #4
ldr r0, [r3, r0]
cmp r0, #0
bne _021E5ED2
bl ov00_021F1284
b _021E5F68
_021E5ED2:
bl ov00_021EE278
bl ov00_021E5E34
b _021E5F68
_021E5EDC:
bl sub_0203993C
bl sub_02034084
cmp r0, #0
bne _021E5EF4
ldr r0, _021E5F70 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E5F7C ; =0x00001084
ldr r0, [r1, r0]
bl ov00_021E69A8
_021E5EF4:
ldr r0, _021E5F70 ; =_0221A680
ldr r2, [r0]
ldr r0, _021E5F80 ; =0x0000109C
ldr r1, [r2, r0]
cmp r1, #0
beq _021E5F04
mov r1, #1
b _021E5F06
_021E5F04:
mov r1, #0
_021E5F06:
add r0, #0x38
strh r1, [r2, r0]
ldr r0, _021E5F70 ; =_0221A680
mov r2, #8
ldr r1, [r0]
ldr r0, _021E5F74 ; =0x00001070
str r2, [r1, r0]
mov r0, #0x14
pop {r4, pc}
_021E5F18:
mov r0, #4
str r0, [r3, r1]
add r0, r1, #0
ldr r3, [r2]
mov r4, #0
add r0, #8
str r4, [r3, r0]
ldr r0, [r2]
sub r3, r4, #1
add r1, #0x28
str r3, [r0, r1]
mov r0, #0x15
pop {r4, pc}
_021E5F32:
mov r0, #4
str r0, [r3, r1]
add r0, r1, #0
ldr r3, [r2]
mov r4, #0
add r0, #8
str r4, [r3, r0]
ldr r0, [r2]
sub r3, r4, #1
add r1, #0x28
str r3, [r0, r1]
mov r0, #0x16
pop {r4, pc}
_021E5F4C:
bl ov00_021E6690
pop {r4, pc}
_021E5F52:
add r1, #0x20
ldr r0, [r3, r1]
cmp r0, #0
bne _021E5F68
bl ov00_021EE278
ldr r0, _021E5F70 ; =_0221A680
mov r2, #0x11
ldr r1, [r0]
ldr r0, _021E5F74 ; =0x00001070
str r2, [r1, r0]
_021E5F68:
bl ov00_021E6850
pop {r4, pc}
nop
_021E5F70: .word _0221A680
_021E5F74: .word 0x00001070
_021E5F78: .word 0x00001074
_021E5F7C: .word 0x00001084
_021E5F80: .word 0x0000109C
thumb_func_end ov00_021E5E54
thumb_func_start ov00_021E5F84
ov00_021E5F84: ; 0x021E5F84
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #1
add r4, r1, #0
lsl r0, r0, #8
cmp r4, r0
blt _021E5F96
mov r0, #0
pop {r4, r5, r6, pc}
_021E5F96:
bl ov00_021EE490
cmp r0, #0
bne _021E5FB8
ldr r0, _021E601C ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6020 ; =0x00000FA4
ldr r3, [r1, r0]
cmp r3, #0
beq _021E5FB4
lsl r2, r4, #0x10
mov r0, #0
add r1, r5, #0
lsr r2, r2, #0x10
blx r3
_021E5FB4:
mov r0, #1
pop {r4, r5, r6, pc}
_021E5FB8:
ldr r0, _021E601C ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6024 ; =0x00001078
ldr r0, [r1, r0]
cmp r0, #0
bne _021E5FCC
bl ov00_021E6790
cmp r0, #0
bne _021E5FD0
_021E5FCC:
mov r0, #0
pop {r4, r5, r6, pc}
_021E5FD0:
ldr r1, _021E601C ; =_0221A680
ldr r0, _021E6028 ; =0x000010D4
ldr r2, [r1]
ldrh r3, [r2, r0]
lsl r6, r3, #8
mov r3, #1
orr r3, r6
str r3, [r2]
add r3, r0, #0
ldr r2, [r1]
add r3, #8
ldrb r3, [r2, r3]
add r6, r3, #1
add r3, r0, #0
add r3, #8
strb r6, [r2, r3]
ldr r2, [r1]
add r0, #8
ldrb r0, [r2, r0]
strb r0, [r2, #2]
ldr r1, [r1]
add r0, r5, #0
add r1, r1, #4
add r2, r4, #0
bl MI_CpuCopy8
ldr r2, _021E601C ; =_0221A680
ldr r1, _021E6024 ; =0x00001078
ldr r3, [r2]
mov r0, #1
str r0, [r3, r1]
ldr r1, [r2]
add r2, r4, #4
bl ov00_021F9750
mov r0, #1
pop {r4, r5, r6, pc}
nop
_021E601C: .word _0221A680
_021E6020: .word 0x00000FA4
_021E6024: .word 0x00001078
_021E6028: .word 0x000010D4
thumb_func_end ov00_021E5F84
thumb_func_start ov00_021E602C
ov00_021E602C: ; 0x021E602C
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #1
add r4, r1, #0
lsl r0, r0, #8
cmp r4, r0
blt _021E603E
mov r0, #0
pop {r4, r5, r6, pc}
_021E603E:
bl ov00_021EE490
cmp r0, #0
beq _021E604A
mov r0, #0
pop {r4, r5, r6, pc}
_021E604A:
ldr r0, _021E60D8 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E60DC ; =0x00001078
ldr r0, [r1, r0]
cmp r0, #0
bne _021E605E
bl ov00_021E6790
cmp r0, #0
bne _021E6062
_021E605E:
mov r0, #0
pop {r4, r5, r6, pc}
_021E6062:
ldr r1, _021E60D8 ; =_0221A680
ldr r0, _021E60E0 ; =0x000010D4
ldr r2, [r1]
ldrh r3, [r2, r0]
lsl r6, r3, #8
mov r3, #1
orr r3, r6
str r3, [r2]
add r3, r0, #0
ldr r2, [r1]
add r3, #8
ldrb r3, [r2, r3]
add r6, r3, #1
add r3, r0, #0
add r3, #8
strb r6, [r2, r3]
ldr r2, [r1]
add r0, #8
ldrb r0, [r2, r0]
strb r0, [r2, #2]
ldr r1, [r1]
add r0, r5, #0
add r1, r1, #4
add r2, r4, #0
bl MI_CpuCopy8
ldr r0, _021E60D8 ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E60DC ; =0x00001078
str r2, [r1, r0]
bl ov00_021EE4FC
ldr r1, _021E60D8 ; =_0221A680
add r2, r4, #4
ldr r1, [r1]
bl ov00_021F9750
cmp r0, #0
bne _021E60BE
ldr r1, _021E60D8 ; =_0221A680
mov r0, #0
ldr r2, [r1]
ldr r1, _021E60DC ; =0x00001078
str r0, [r2, r1]
pop {r4, r5, r6, pc}
_021E60BE:
ldr r0, _021E60D8 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E60E4 ; =0x00000FA8
ldr r3, [r1, r0]
cmp r3, #0
beq _021E60D4
lsl r2, r4, #0x10
mov r0, #0
add r1, r5, #0
lsr r2, r2, #0x10
blx r3
_021E60D4:
mov r0, #1
pop {r4, r5, r6, pc}
.balign 4, 0
_021E60D8: .word _0221A680
_021E60DC: .word 0x00001078
_021E60E0: .word 0x000010D4
_021E60E4: .word 0x00000FA8
thumb_func_end ov00_021E602C
thumb_func_start ov00_021E60E8
ov00_021E60E8: ; 0x021E60E8
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #1
add r4, r1, #0
lsl r0, r0, #8
cmp r4, r0
blt _021E60FA
mov r0, #0
pop {r4, r5, r6, pc}
_021E60FA:
ldr r0, _021E6198 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E619C ; =0x00001078
ldr r0, [r1, r0]
cmp r0, #0
bne _021E610E
bl ov00_021E6790
cmp r0, #0
bne _021E6112
_021E610E:
mov r0, #0
pop {r4, r5, r6, pc}
_021E6112:
ldr r1, _021E6198 ; =_0221A680
ldr r0, _021E61A0 ; =0x000010D4
ldr r2, [r1]
ldrh r3, [r2, r0]
lsl r6, r3, #8
mov r3, #1
orr r3, r6
str r3, [r2]
add r3, r0, #0
ldr r2, [r1]
add r3, #8
ldrb r3, [r2, r3]
add r6, r3, #1
add r3, r0, #0
add r3, #8
strb r6, [r2, r3]
ldr r2, [r1]
add r0, #8
ldrb r0, [r2, r0]
strb r0, [r2, #2]
ldr r1, [r1]
add r0, r5, #0
add r1, r1, #4
add r2, r4, #0
bl MI_CpuCopy8
ldr r0, _021E6198 ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E619C ; =0x00001078
str r2, [r1, r0]
bl ov00_021EE4FC
ldr r1, _021E6198 ; =_0221A680
lsl r0, r0, #0x10
lsr r6, r0, #0x10
ldr r1, [r1]
add r0, r6, #0
add r2, r4, #4
bl ov00_021F9750
cmp r6, r0
beq _021E6174
ldr r1, _021E6198 ; =_0221A680
mov r0, #0
ldr r2, [r1]
ldr r1, _021E619C ; =0x00001078
str r0, [r2, r1]
pop {r4, r5, r6, pc}
_021E6174:
ldr r0, _021E6198 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E61A4 ; =0x00000FA8
ldr r0, [r1, r0]
cmp r0, #0
beq _021E6194
bl ov00_021EE490
lsl r2, r4, #0x10
ldr r3, _021E6198 ; =_0221A680
add r1, r5, #0
ldr r4, [r3]
ldr r3, _021E61A4 ; =0x00000FA8
lsr r2, r2, #0x10
ldr r3, [r4, r3]
blx r3
_021E6194:
mov r0, #1
pop {r4, r5, r6, pc}
.balign 4, 0
_021E6198: .word _0221A680
_021E619C: .word 0x00001078
_021E61A0: .word 0x000010D4
_021E61A4: .word 0x00000FA8
thumb_func_end ov00_021E60E8
thumb_func_start ov00_021E61A8
ov00_021E61A8: ; 0x021E61A8
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
ldr r0, _021E6224 ; =_0221A680
add r4, r2, #0
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
bl DWC_CheckDirtyFlag
cmp r0, #0
beq _021E61DA
ldr r0, _021E6224 ; =_0221A680
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
bl DWC_ClearDirtyFlag
ldr r0, _021E6224 ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E6228 ; =0x000010E6
strb r2, [r1, r0]
_021E61DA:
cmp r5, #0
bne _021E6214
ldr r0, _021E622C ; =ov00_021E629C
str r4, [sp]
str r0, [sp, #4]
ldr r2, _021E6224 ; =_0221A680
str r4, [sp, #8]
ldr r3, [r2]
mov r2, #0xf1
lsl r2, r2, #4
ldr r2, [r3, r2]
ldr r1, _021E6230 ; =ov00_021E6274
ldr r3, _021E6234 ; =ov00_021E6298
mov r0, #0
bl ov00_021EDE74
cmp r0, #0
bne _021E6208
mov r0, #1
bl sub_02039AD8
add sp, #0xc
pop {r4, r5, pc}
_021E6208:
ldr r0, _021E6238 ; =ov00_021E62D4
mov r1, #0
bl ov00_021EFF04
add sp, #0xc
pop {r4, r5, pc}
_021E6214:
ldr r0, _021E6224 ; =_0221A680
mov r2, #0xc
ldr r1, [r0]
ldr r0, _021E623C ; =0x00001070
str r2, [r1, r0]
add sp, #0xc
pop {r4, r5, pc}
nop
_021E6224: .word _0221A680
_021E6228: .word 0x000010E6
_021E622C: .word ov00_021E629C
_021E6230: .word ov00_021E6274
_021E6234: .word ov00_021E6298
_021E6238: .word ov00_021E62D4
_021E623C: .word 0x00001070
thumb_func_end ov00_021E61A8
thumb_func_start ov00_021E6240
ov00_021E6240: ; 0x021E6240
push {r3, lr}
ldr r0, _021E6268 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E626C ; =0x000010A8
ldr r0, [r1, r0]
cmp r0, #0
beq _021E6266
bl ov00_021EE278
ldr r1, _021E6268 ; =_0221A680
mov r3, #0
ldr r2, [r1]
ldr r0, _021E6270 ; =0x00001098
mvn r3, r3
str r3, [r2, r0]
ldr r1, [r1]
mov r2, #0x12
sub r0, #0x28
str r2, [r1, r0]
_021E6266:
pop {r3, pc}
.balign 4, 0
_021E6268: .word _0221A680
_021E626C: .word 0x000010A8
_021E6270: .word 0x00001098
thumb_func_end ov00_021E6240
thumb_func_start ov00_021E6274
ov00_021E6274: ; 0x021E6274
cmp r0, #0
bne _021E6284
ldr r0, _021E6290 ; =_0221A680
mov r2, #4
ldr r1, [r0]
ldr r0, _021E6294 ; =0x00001070
str r2, [r1, r0]
bx lr
_021E6284:
ldr r0, _021E6290 ; =_0221A680
mov r2, #0xc
ldr r1, [r0]
ldr r0, _021E6294 ; =0x00001070
str r2, [r1, r0]
bx lr
.balign 4, 0
_021E6290: .word _0221A680
_021E6294: .word 0x00001070
thumb_func_end ov00_021E6274
thumb_func_start ov00_021E6298
ov00_021E6298: ; 0x021E6298
bx lr
.balign 4, 0
thumb_func_end ov00_021E6298
thumb_func_start ov00_021E629C
ov00_021E629C: ; 0x021E629C
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, _021E62CC ; =_0221A680
add r4, r1, #0
ldr r1, [r0]
ldr r0, _021E62D0 ; =0x00000F78
ldr r0, [r1, r0]
bl sub_0202C6F4
add r1, r5, #0
add r2, r4, #0
bl sub_0202C5E4
ldr r0, _021E62CC ; =_0221A680
ldr r1, [r0]
ldr r0, _021E62D0 ; =0x00000F78
ldr r0, [r1, r0]
bl sub_0203107C
add r1, r5, #0
add r2, r4, #0
bl sub_02031214
pop {r3, r4, r5, pc}
.balign 4, 0
_021E62CC: .word _0221A680
_021E62D0: .word 0x00000F78
thumb_func_end ov00_021E629C
thumb_func_start ov00_021E62D4
ov00_021E62D4: ; 0x021E62D4
bx lr
.balign 4, 0
thumb_func_end ov00_021E62D4
thumb_func_start ov00_021E62D8
ov00_021E62D8: ; 0x021E62D8
ldr r0, _021E62E8 ; =_0221A680
ldr r3, _021E62EC ; =MI_CpuFill8
ldr r1, [r0]
ldr r0, _021E62F0 ; =0x000010AC
mov r2, #0x20
add r0, r1, r0
mov r1, #0
bx r3
.balign 4, 0
_021E62E8: .word _0221A680
_021E62EC: .word MI_CpuFill8
_021E62F0: .word 0x000010AC
thumb_func_end ov00_021E62D8
thumb_func_start ov00_021E62F4
ov00_021E62F4: ; 0x021E62F4
push {r3, r4, r5, r6, r7, lr}
mov r5, #0
add r4, r5, #0
_021E62FA:
lsl r0, r5, #0x18
lsr r0, r0, #0x18
add r1, r4, #0
bl ov00_021F9988
add r5, r5, #1
cmp r5, #4
blt _021E62FA
bl ov00_021EE490
cmp r0, #0
bne _021E6356
ldr r6, _021E6378 ; =_0221A680
ldr r0, _021E637C ; =0x0000107C
ldr r1, [r6]
mov r5, #0
ldr r0, [r1, r0]
cmp r0, #0
ble _021E6366
ldr r7, _021E637C ; =0x0000107C
mov r4, #1
_021E6324:
bl ov00_021EE490
cmp r5, r0
beq _021E634A
bl ov00_021EE4FC
add r1, r4, #0
lsl r1, r5
tst r0, r1
beq _021E634A
lsl r0, r5, #0x18
ldr r1, _021E6380 ; =0x00002710
lsr r0, r0, #0x18
bl ov00_021F9988
cmp r0, #0
bne _021E634A
bl GF_AssertFail
_021E634A:
ldr r0, [r6]
add r5, r5, #1
ldr r0, [r0, r7]
cmp r5, r0
blt _021E6324
b _021E6366
_021E6356:
ldr r1, _021E6380 ; =0x00002710
mov r0, #0
bl ov00_021F9988
cmp r0, #0
bne _021E6366
bl GF_AssertFail
_021E6366:
ldr r0, _021E6378 ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E6384 ; =0x000010A8
str r2, [r1, r0]
bl ov00_021E62D8
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6378: .word _0221A680
_021E637C: .word 0x0000107C
_021E6380: .word 0x00002710
_021E6384: .word 0x000010A8
thumb_func_end ov00_021E62F4
thumb_func_start ov00_021E6388
ov00_021E6388: ; 0x021E6388
push {r4, r5, r6, lr}
ldr r4, _021E63C0 ; =_0221A680
ldr r0, _021E63C4 ; =0x00001070
ldr r1, [r4]
mov r2, #7
str r2, [r1, r0]
ldr r1, [r4]
add r0, #0xc
ldr r0, [r1, r0]
mov r5, #0
cmp r0, #0
ble _021E63BA
ldr r6, _021E63C8 ; =0x0000107C
_021E63A2:
bl ov00_021EE490
cmp r5, r0
beq _021E63B0
add r0, r5, #0
bl ov00_021E727C
_021E63B0:
ldr r0, [r4]
add r5, r5, #1
ldr r0, [r0, r6]
cmp r5, r0
blt _021E63A2
_021E63BA:
bl ov00_021E62F4
pop {r4, r5, r6, pc}
.balign 4, 0
_021E63C0: .word _0221A680
_021E63C4: .word 0x00001070
_021E63C8: .word 0x0000107C
thumb_func_end ov00_021E6388
thumb_func_start ov00_021E63CC
ov00_021E63CC: ; 0x021E63CC
push {r4, lr}
cmp r0, #0
bne _021E63EA
cmp r1, #0
bne _021E63E4
bl ov00_021EE490
mov r1, #1
sub r0, r1, r0
bl ov00_021E6388
b _021E63F4
_021E63E4:
bl ov00_021E5E34
b _021E63F4
_021E63EA:
ldr r0, _021E6414 ; =_0221A680
mov r2, #0xc
ldr r1, [r0]
ldr r0, _021E6418 ; =0x00001070
str r2, [r1, r0]
_021E63F4:
ldr r0, _021E6414 ; =_0221A680
ldr r4, [r0]
ldr r0, _021E641C ; =0x00000FB4
ldr r0, [r4, r0]
cmp r0, #0
beq _021E6412
bl ov00_021EE490
ldr r3, _021E6414 ; =_0221A680
ldr r2, _021E6420 ; =0x00000FB8
ldr r3, [r3]
ldr r1, [r4, r2]
sub r2, r2, #4
ldr r2, [r3, r2]
blx r2
_021E6412:
pop {r4, pc}
.balign 4, 0
_021E6414: .word _0221A680
_021E6418: .word 0x00001070
_021E641C: .word 0x00000FB4
_021E6420: .word 0x00000FB8
thumb_func_end ov00_021E63CC
thumb_func_start ov00_021E6424
ov00_021E6424: ; 0x021E6424
mov r0, #1
bx lr
thumb_func_end ov00_021E6424
thumb_func_start ov00_021E6428
ov00_021E6428: ; 0x021E6428
push {r3, r4}
ldr r2, _021E6444 ; =_0221A680
ldr r0, _021E6448 ; =0x00001078
ldr r3, [r2]
mov r4, #0
str r4, [r3, r0]
ldr r2, [r2]
lsl r1, r1, #2
add r1, r2, r1
add r0, #0x34
str r4, [r1, r0]
pop {r3, r4}
bx lr
nop
_021E6444: .word _0221A680
_021E6448: .word 0x00001078
thumb_func_end ov00_021E6428
thumb_func_start ov00_021E644C
ov00_021E644C: ; 0x021E644C
push {r4, lr}
add r4, r0, #0
bl sub_0203993C
bl sub_02034084
cmp r0, #0
bne _021E647A
mov r0, #1
lsl r0, r0, #8
tst r0, r4
beq _021E6470
ldr r0, _021E647C ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E6480 ; =0x000010D0
str r2, [r1, r0]
pop {r4, pc}
_021E6470:
ldr r0, _021E647C ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E6480 ; =0x000010D0
str r2, [r1, r0]
_021E647A:
pop {r4, pc}
.balign 4, 0
_021E647C: .word _0221A680
_021E6480: .word 0x000010D0
thumb_func_end ov00_021E644C
thumb_func_start ov00_021E6484
ov00_021E6484: ; 0x021E6484
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
add r4, r1, #0
ldrb r3, [r4, #1]
ldrb r6, [r4]
add r7, r2, #0
lsl r3, r3, #8
mov ip, r3
ldrb r3, [r4, #3]
lsl r5, r3, #0x18
ldrb r3, [r4, #2]
lsl r3, r3, #0x10
orr r3, r5
mov r5, ip
orr r3, r5
orr r3, r6
str r3, [sp, #4]
ldr r3, _021E6544 ; =_0221A680
ldr r5, _021E6548 ; =0x000010A8
ldr r6, [r3]
mov r3, #1
str r3, [r6, r5]
ldr r3, [sp, #4]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
cmp r3, #1
bne _021E64D0
ldr r0, [sp, #4]
bl ov00_021E644C
ldr r0, _021E6544 ; =_0221A680
ldrb r2, [r4, #2]
ldr r1, [r0]
add r0, r5, #0
add r0, #0x35
strb r2, [r1, r0]
b _021E64E2
_021E64D0:
bl ov00_021E77A4
cmp r0, #0
bne _021E6540
ldr r0, [sp, #4]
bl ov00_021E644C
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_021E64E2:
sub r6, r7, #4
mov r0, #0
add r1, r6, #0
mov r2, #4
bl ov00_021E65D4
add r5, r0, #0
beq _021E6540
add r0, r4, #4
add r1, r5, #0
add r2, r6, #0
bl MI_CpuCopy8
bl ov00_021EE490
cmp r0, #0
bne _021E651E
ldr r0, _021E6544 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E654C ; =0x00000FA4
ldr r3, [r1, r0]
cmp r3, #0
beq _021E6536
add r2, r6, #0
lsl r2, r2, #0x10
ldr r0, [sp]
add r1, r5, #0
lsr r2, r2, #0x10
blx r3
b _021E6536
_021E651E:
ldr r0, _021E6544 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6550 ; =0x00000FA8
ldr r3, [r1, r0]
cmp r3, #0
beq _021E6536
add r2, r6, #0
lsl r2, r2, #0x10
ldr r0, [sp]
add r1, r5, #0
lsr r2, r2, #0x10
blx r3
_021E6536:
mov r0, #0
add r1, r5, #0
add r2, r6, #0
bl ov00_021E6638
_021E6540:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6544: .word _0221A680
_021E6548: .word 0x000010A8
_021E654C: .word 0x00000FA4
_021E6550: .word 0x00000FA8
thumb_func_end ov00_021E6484
thumb_func_start ov00_021E6554
ov00_021E6554: ; 0x021E6554
push {r4, r5, r6, lr}
ldr r5, _021E65C0 ; =_0221A680
add r4, r3, #0
ldr r3, [r5]
ldr r2, _021E65C4 ; =0x00001078
mov r1, #0
str r1, [r3, r2]
add r3, r2, #0
ldr r6, [r5]
add r3, #0x54
str r1, [r6, r3]
add r3, r2, #0
add r3, #0x28
ldr r6, [r5]
cmp r0, #0
str r1, [r6, r3]
bne _021E65A8
ldr r0, [r5]
add r2, #0x6d
ldrb r0, [r0, r2]
cmp r0, #1
bne _021E65A8
bl ov00_021EE448
cmp r0, #1
bne _021E65A8
add r0, r5, #0
ldr r2, [r0]
ldr r0, _021E65C8 ; =0x00001070
ldr r1, [r2, r0]
cmp r1, #6
beq _021E6598
mov r1, #0x10
str r1, [r2, r0]
_021E6598:
ldr r0, _021E65C0 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E65CC ; =0x00001090
ldr r0, [r1, r0]
cmp r0, #0
beq _021E65A8
bl ov00_021E6A4C
_021E65A8:
ldr r0, _021E65C0 ; =_0221A680
ldr r1, _021E65D0 ; =0x00000FAC
ldr r3, [r0]
ldr r2, [r3, r1]
cmp r2, #0
beq _021E65BC
add r1, r1, #4
ldr r1, [r3, r1]
add r0, r4, #0
blx r2
_021E65BC:
pop {r4, r5, r6, pc}
nop
_021E65C0: .word _0221A680
_021E65C4: .word 0x00001078
_021E65C8: .word 0x00001070
_021E65CC: .word 0x00001090
_021E65D0: .word 0x00000FAC
thumb_func_end ov00_021E6554
thumb_func_start ov00_021E65D4
ov00_021E65D4: ; 0x021E65D4
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r6, r2, #0
bl OS_DisableInterrupts
add r7, r0, #0
ldr r0, _021E662C ; =_0221A680
add r2, r6, #0
ldr r1, [r0]
ldr r0, _021E6630 ; =0x00000F94
ldr r0, [r1, r0]
add r1, r5, #0
bl NNS_FndAllocFromExpHeapEx
add r4, r0, #0
bne _021E660E
ldr r0, _021E662C ; =_0221A680
ldr r1, _021E6634 ; =0x00000F98
ldr r0, [r0]
ldr r2, [r0, r1]
cmp r2, #0
beq _021E660E
add r1, r1, #4
ldr r0, [r0, r1]
add r1, r5, #0
add r2, r6, #0
bl NNS_FndAllocFromExpHeapEx
add r4, r0, #0
_021E660E:
cmp r4, #0
bne _021E6622
mov r0, #1
bl sub_02039AD8
add r0, r7, #0
bl OS_RestoreInterrupts
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E6622:
add r0, r7, #0
bl OS_RestoreInterrupts
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E662C: .word _0221A680
_021E6630: .word 0x00000F94
_021E6634: .word 0x00000F98
thumb_func_end ov00_021E65D4
thumb_func_start ov00_021E6638
ov00_021E6638: ; 0x021E6638
push {r3, r4, r5, lr}
add r5, r1, #0
beq _021E6682
bl OS_DisableInterrupts
add r4, r0, #0
add r0, r5, #0
bl NNS_FndGetGroupIDForMBlockExpHeap
cmp r0, #0x10
bne _021E666E
ldr r0, _021E6684 ; =_0221A680
ldr r2, [r0]
ldr r0, _021E6688 ; =0x00000F98
ldr r1, [r2, r0]
cmp r1, #0
bne _021E6662
mov r0, #1
bl sub_02039AD8
pop {r3, r4, r5, pc}
_021E6662:
add r0, r0, #4
ldr r0, [r2, r0]
add r1, r5, #0
bl NNS_FndFreeToExpHeap
b _021E667C
_021E666E:
ldr r0, _021E6684 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E668C ; =0x00000F94
ldr r0, [r1, r0]
add r1, r5, #0
bl NNS_FndFreeToExpHeap
_021E667C:
add r0, r4, #0
bl OS_RestoreInterrupts
_021E6682:
pop {r3, r4, r5, pc}
.balign 4, 0
_021E6684: .word _0221A680
_021E6688: .word 0x00000F98
_021E668C: .word 0x00000F94
thumb_func_end ov00_021E6638
thumb_func_start ov00_021E6690
ov00_021E6690: ; 0x021E6690
push {r3, r4, r5, lr}
sub sp, #8
add r0, sp, #4
add r1, sp, #0
mov r4, #0
bl ov00_021EC11C
add r5, r0, #0
beq _021E6762
ldr r4, [sp, #4]
cmp r4, #0
beq _021E66AE
ldr r0, [sp]
cmp r0, #1
bne _021E66B0
_021E66AE:
add r4, r5, #0
_021E66B0:
ldr r0, [sp]
cmp r0, #7
bhi _021E6762
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E66C2: ; jump table
.short _021E6762 - _021E66C2 - 2 ; case 0
.short _021E66D2 - _021E66C2 - 2 ; case 1
.short _021E66D8 - _021E66C2 - 2 ; case 2
.short _021E66DE - _021E66C2 - 2 ; case 3
.short _021E66DE - _021E66C2 - 2 ; case 4
.short _021E66DE - _021E66C2 - 2 ; case 5
.short _021E66DE - _021E66C2 - 2 ; case 6
.short _021E6744 - _021E66C2 - 2 ; case 7
_021E66D2:
bl ov00_021EC210
b _021E6762
_021E66D8:
bl ov00_021EC210
b _021E6762
_021E66DE:
ldr r0, _021E6784 ; =_0221A680
ldr r1, [r0]
cmp r1, #0
beq _021E6734
ldr r0, _021E6788 ; =0x00001070
ldr r0, [r1, r0]
cmp r0, #0x12
bhi _021E6730
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E66FA: ; jump table
.short _021E6724 - _021E66FA - 2 ; case 0
.short _021E6724 - _021E66FA - 2 ; case 1
.short _021E6724 - _021E66FA - 2 ; case 2
.short _021E6720 - _021E66FA - 2 ; case 3
.short _021E6720 - _021E66FA - 2 ; case 4
.short _021E6720 - _021E66FA - 2 ; case 5
.short _021E6720 - _021E66FA - 2 ; case 6
.short _021E6720 - _021E66FA - 2 ; case 7
.short _021E6720 - _021E66FA - 2 ; case 8
.short _021E6720 - _021E66FA - 2 ; case 9
.short _021E6730 - _021E66FA - 2 ; case 10
.short _021E6730 - _021E66FA - 2 ; case 11
.short _021E6720 - _021E66FA - 2 ; case 12
.short _021E6730 - _021E66FA - 2 ; case 13
.short _021E6730 - _021E66FA - 2 ; case 14
.short _021E6730 - _021E66FA - 2 ; case 15
.short _021E6720 - _021E66FA - 2 ; case 16
.short _021E6720 - _021E66FA - 2 ; case 17
.short _021E6720 - _021E66FA - 2 ; case 18
_021E6720:
bl ov00_021ED9B4
_021E6724:
bl sub_0203993C
cmp r0, #0x21
beq _021E6730
bl ov00_021EC8D8
_021E6730:
bl ov00_021EC210
_021E6734:
ldr r0, _021E6784 ; =_0221A680
ldr r2, [r0]
cmp r2, #0
beq _021E6762
ldr r0, _021E6788 ; =0x00001070
mov r1, #0xe
str r1, [r2, r0]
b _021E6762
_021E6744:
ldr r1, _021E6784 ; =_0221A680
ldr r3, [r1]
cmp r3, #0
beq _021E6762
ldr r0, _021E6788 ; =0x00001070
mov r2, #0xf
str r2, [r3, r0]
ldr r1, [r1]
sub r0, #0xb0
ldr r1, [r1, r0]
cmp r1, #0
beq _021E6762
ldr r0, [sp, #4]
neg r0, r0
blx r1
_021E6762:
ldr r0, _021E6784 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E678C ; =0x000010DE
ldrb r0, [r1, r0]
cmp r0, #0
beq _021E6770
mov r4, #0x1a
_021E6770:
cmp r5, #0
beq _021E677E
ldr r0, [sp, #4]
ldr r1, [sp]
add r2, r5, #0
bl sub_02038F74
_021E677E:
add r0, r4, #0
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
_021E6784: .word _0221A680
_021E6788: .word 0x00001070
_021E678C: .word 0x000010DE
thumb_func_end ov00_021E6690
thumb_func_start ov00_021E6790
ov00_021E6790: ; 0x021E6790
push {r3, r4, r5, r6, r7, lr}
ldr r6, _021E67D8 ; =_0221A680
mov r5, #0
ldr r1, [r6]
ldr r0, _021E67DC ; =0x0000107C
add r4, r5, #0
ldr r0, [r1, r0]
cmp r0, #0
ble _021E67D4
ldr r7, _021E67DC ; =0x0000107C
_021E67A4:
bl ov00_021EE490
cmp r4, r0
beq _021E67CA
lsl r0, r4, #0x18
lsr r0, r0, #0x18
bl ov00_021EE530
cmp r0, #0
beq _021E67CA
lsl r0, r4, #0x18
lsr r0, r0, #0x18
mov r5, #1
bl ov00_021F9580
cmp r0, #0
bne _021E67CA
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E67CA:
ldr r0, [r6]
add r4, r4, #1
ldr r0, [r0, r7]
cmp r4, r0
blt _021E67A4
_021E67D4:
add r0, r5, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E67D8: .word _0221A680
_021E67DC: .word 0x0000107C
thumb_func_end ov00_021E6790
thumb_func_start ov00_021E67E0
ov00_021E67E0: ; 0x021E67E0
push {r4, lr}
add r4, r0, #0
ldr r0, _021E6840 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6844 ; =0x00001078
ldr r0, [r1, r0]
cmp r0, #0
bne _021E683A
bl ov00_021E6790
cmp r0, #0
beq _021E683A
bl ov00_021EE4FC
ldr r1, _021E6848 ; =0x0000FFFE
tst r0, r1
beq _021E683A
ldr r1, _021E6840 ; =_0221A680
ldr r0, _021E6844 ; =0x00001078
ldr r2, [r1]
mov r3, #1
str r3, [r2, r0]
ldr r2, [r1]
add r0, #0x5c
ldrh r0, [r2, r0]
lsl r1, r0, #8
mov r0, #2
orr r0, r1
str r0, [r2]
bl ov00_021EE4FC
ldr r1, _021E6840 ; =_0221A680
mov r2, #4
ldr r1, [r1]
bl ov00_021F9750
ldr r0, _021E6840 ; =_0221A680
mov r2, #0
ldr r1, [r0]
lsl r0, r4, #2
add r1, r1, r0
ldr r0, _021E684C ; =0x000010AC
str r2, [r1, r0]
mov r0, #1
pop {r4, pc}
_021E683A:
mov r0, #0
pop {r4, pc}
nop
_021E6840: .word _0221A680
_021E6844: .word 0x00001078
_021E6848: .word 0x0000FFFE
_021E684C: .word 0x000010AC
thumb_func_end ov00_021E67E0
thumb_func_start ov00_021E6850
ov00_021E6850: ; 0x021E6850
push {r3, r4, r5, r6, r7, lr}
bl ov00_021EDB1C
bl ov00_021E6CE8
ldr r0, _021E694C ; =_0221A680
ldr r1, _021E6950 ; =0x00001090
ldr r2, [r0]
ldr r0, [r2, r1]
cmp r0, #0
beq _021E68D8
add r0, r1, #0
add r0, #0x44
ldrh r0, [r2, r0]
cmp r0, #1
bne _021E6888
add r0, r1, #0
add r0, #0x40
ldr r0, [r2, r0]
cmp r0, #1
bne _021E6888
add r1, #0x46
ldrh r0, [r2, r1]
cmp r0, #1
bne _021E6888
bl ov00_021E7AE0
b _021E688C
_021E6888:
bl ov00_021E7ACC
_021E688C:
bl ov00_021E765C
ldr r0, _021E694C ; =_0221A680
ldr r4, [r0]
bl ov00_021EE4FC
mov r1, #0x42
lsl r1, r1, #6
ldr r2, [r4, r1]
cmp r2, r0
beq _021E68D8
add r0, r1, #0
add r0, #0x5f
ldrb r0, [r4, r0]
cmp r0, #0
bne _021E68D8
add r1, #0x1c
ldr r0, [r4, r1]
cmp r0, #0
beq _021E68D8
bl ov00_021EE4FC
add r4, r0, #0
bl ov00_021EE490
add r1, r0, #0
add r0, r4, #0
bl ov00_021E7AF4
cmp r0, #0
beq _021E68D8
bl ov00_021EE4FC
ldr r1, _021E694C ; =_0221A680
ldr r2, [r1]
mov r1, #0x42
lsl r1, r1, #6
str r0, [r2, r1]
_021E68D8:
ldr r6, _021E694C ; =_0221A680
ldr r1, _021E6954 ; =0x00001070
ldr r0, [r6]
ldr r2, [r0, r1]
cmp r2, #0x12
bne _021E68F0
bl ov00_021E6690
cmp r0, #0
bne _021E694A
mov r0, #0x17
pop {r3, r4, r5, r6, r7, pc}
_021E68F0:
cmp r2, #0x11
bne _021E68F8
mov r0, #0x18
pop {r3, r4, r5, r6, r7, pc}
_021E68F8:
sub r2, r2, #7
cmp r2, #1
bhi _021E6946
add r1, #0xc
ldr r1, [r0, r1]
mov r4, #0
cmp r1, #0
ble _021E6946
ldr r7, _021E6958 ; =0x000010AC
add r5, r4, #0
_021E690C:
ldr r2, _021E6958 ; =0x000010AC
add r1, r0, r5
ldr r0, _021E6958 ; =0x000010AC
ldr r2, [r1, r2]
ldr r0, [r1, r0]
add r2, r2, #1
str r2, [r1, r7]
cmp r0, #0x78
blt _021E6938
ldr r1, [r6]
ldr r0, _021E695C ; =0x00001078
ldr r0, [r1, r0]
cmp r0, #0
bne _021E6938
add r0, r4, #0
bl ov00_021E67E0
cmp r0, #0
beq _021E6938
bl ov00_021E62D8
b _021E6946
_021E6938:
ldr r0, [r6]
ldr r1, _021E6960 ; =0x0000107C
add r4, r4, #1
ldr r1, [r0, r1]
add r5, r5, #4
cmp r4, r1
blt _021E690C
_021E6946:
bl ov00_021E6690
_021E694A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E694C: .word _0221A680
_021E6950: .word 0x00001090
_021E6954: .word 0x00001070
_021E6958: .word 0x000010AC
_021E695C: .word 0x00001078
_021E6960: .word 0x0000107C
thumb_func_end ov00_021E6850
thumb_func_start ov00_021E6964
ov00_021E6964: ; 0x021E6964
push {r3, lr}
ldr r0, _021E698C ; =_0221A680
ldr r1, [r0]
cmp r1, #0
beq _021E6984
ldr r0, _021E6990 ; =0x00001070
ldr r0, [r1, r0]
cmp r0, #7
beq _021E697E
cmp r0, #8
beq _021E697E
cmp r0, #0x10
bne _021E6984
_021E697E:
bl ov00_021EE490
pop {r3, pc}
_021E6984:
mov r0, #0
mvn r0, r0
pop {r3, pc}
nop
_021E698C: .word _0221A680
_021E6990: .word 0x00001070
thumb_func_end ov00_021E6964
thumb_func_start ov00_021E6994
ov00_021E6994: ; 0x021E6994
ldr r0, _021E69A0 ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E69A4 ; =0x00001090
str r2, [r1, r0]
bx lr
.balign 4, 0
_021E69A0: .word _0221A680
_021E69A4: .word 0x00001090
thumb_func_end ov00_021E6994
thumb_func_start ov00_021E69A8
ov00_021E69A8: ; 0x021E69A8
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
mov r4, #1
bl sub_0203993C
bl sub_02034084
add r5, r0, #0
beq _021E69DC
bl sub_02037454
sub r4, r0, #1
cmp r4, #1
bge _021E69C6
mov r4, #1
_021E69C6:
ldr r1, _021E6A3C ; =_0221A680
ldr r6, _021E6A40 ; =0x000010D4
ldr r0, [r1]
mov r3, #1
strh r3, [r0, r6]
ldr r2, [r1]
sub r0, r6, #4
str r3, [r2, r0]
ldr r0, [r1]
add r1, r6, #2
strh r3, [r0, r1]
_021E69DC:
ldr r0, _021E6A3C ; =_0221A680
ldr r2, [r0]
ldr r0, _021E6A44 ; =0x00001090
ldr r1, [r2, r0]
cmp r1, #0
bne _021E6A3A
add r0, #0x14
ldr r0, [r2, r0]
cmp r0, #5
bhi _021E6A18
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E69FC: ; jump table
.short _021E6A18 - _021E69FC - 2 ; case 0
.short _021E6A18 - _021E69FC - 2 ; case 1
.short _021E6A08 - _021E69FC - 2 ; case 2
.short _021E6A0C - _021E69FC - 2 ; case 3
.short _021E6A10 - _021E69FC - 2 ; case 4
.short _021E6A14 - _021E69FC - 2 ; case 5
_021E6A08:
mov r1, #1
b _021E6A22
_021E6A0C:
mov r1, #2
b _021E6A22
_021E6A10:
mov r1, #3
b _021E6A22
_021E6A14:
mov r1, #4
b _021E6A22
_021E6A18:
cmp r5, #0
bne _021E6A20
mov r1, #4
b _021E6A22
_021E6A20:
mov r1, #3
_021E6A22:
add r0, r7, #0
add r2, r4, #0
bl ov00_021E77F4
ldr r0, _021E6A48 ; =ov00_021E6994
bl ov00_021E7A1C
ldr r0, _021E6A3C ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E6A44 ; =0x00001090
str r2, [r1, r0]
_021E6A3A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6A3C: .word _0221A680
_021E6A40: .word 0x000010D4
_021E6A44: .word 0x00001090
_021E6A48: .word ov00_021E6994
thumb_func_end ov00_021E69A8
thumb_func_start ov00_021E6A4C
ov00_021E6A4C: ; 0x021E6A4C
push {r3, lr}
bl ov00_021E7A30
ldr r1, _021E6A68 ; =_0221A680
ldr r3, [r1]
cmp r3, #0
beq _021E6A66
ldr r0, _021E6A6C ; =0x00001090
mov r2, #0
str r2, [r3, r0]
ldr r1, [r1]
sub r0, #0x10
str r2, [r1, r0]
_021E6A66:
pop {r3, pc}
.balign 4, 0
_021E6A68: .word _0221A680
_021E6A6C: .word 0x00001090
thumb_func_end ov00_021E6A4C
thumb_func_start ov00_021E6A70
ov00_021E6A70: ; 0x021E6A70
push {r4, r5, r6, lr}
add r6, r1, #0
mov r1, #0x64
add r4, r0, #0
bl _s32_div_f
mov r1, #0xfa
add r5, r0, #0
add r0, r4, #0
lsl r1, r1, #2
bl _s32_div_f
ldr r2, _021E6BC8 ; =0x00004E85
cmp r4, r2
bne _021E6A92
mov r0, #1
pop {r4, r5, r6, pc}
_021E6A92:
cmp r0, #0x17
bne _021E6A9A
mov r0, #1
pop {r4, r5, r6, pc}
_021E6A9A:
add r1, r2, #7
cmp r4, r1
bne _021E6AA4
mov r0, #2
pop {r4, r5, r6, pc}
_021E6AA4:
add r2, #9
cmp r4, r2
bne _021E6AAE
mov r0, #3
pop {r4, r5, r6, pc}
_021E6AAE:
mov r1, #2
lsl r1, r1, #8
cmp r5, r1
bne _021E6ABA
mov r0, #4
pop {r4, r5, r6, pc}
_021E6ABA:
add r2, r1, #0
sub r2, #0xc
cmp r5, r2
bne _021E6AC6
mov r0, #5
pop {r4, r5, r6, pc}
_021E6AC6:
ldr r2, _021E6BCC ; =0x0000C79F
cmp r4, r2
bne _021E6AD0
mov r0, #7
pop {r4, r5, r6, pc}
_021E6AD0:
sub r2, r1, #2
cmp r5, r2
bne _021E6ADA
mov r0, #6
pop {r4, r5, r6, pc}
_021E6ADA:
sub r2, r1, #1
cmp r5, r2
bne _021E6AE4
mov r0, #6
pop {r4, r5, r6, pc}
_021E6AE4:
add r1, r1, #1
cmp r5, r1
bne _021E6AEE
mov r0, #6
pop {r4, r5, r6, pc}
_021E6AEE:
ldr r1, _021E6BD0 ; =0x0000CB20
cmp r4, r1
blt _021E6AFE
add r1, r1, #3
cmp r4, r1
bgt _021E6AFE
mov r0, #8
pop {r4, r5, r6, pc}
_021E6AFE:
ldr r1, _021E6BD4 ; =0x0000CB84
cmp r4, r1
blt _021E6B0E
add r1, r1, #3
cmp r4, r1
bgt _021E6B0E
mov r0, #8
pop {r4, r5, r6, pc}
_021E6B0E:
ldr r1, _021E6BD8 ; =0x0000CBE8
cmp r4, r1
blt _021E6B1E
add r1, r1, #3
cmp r4, r1
bgt _021E6B1E
mov r0, #8
pop {r4, r5, r6, pc}
_021E6B1E:
ldr r1, _021E6BDC ; =0x00013A2E
cmp r4, r1
bne _021E6B28
mov r0, #9
pop {r4, r5, r6, pc}
_021E6B28:
cmp r0, #0x14
bne _021E6B30
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B30:
mov r1, #0x82
lsl r1, r1, #2
cmp r5, r1
bne _021E6B3C
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B3C:
add r2, r1, #1
cmp r5, r2
bne _021E6B46
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B46:
add r2, r1, #2
cmp r5, r2
bne _021E6B50
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B50:
add r2, r1, #3
cmp r5, r2
bne _021E6B5A
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B5A:
add r2, r1, #0
add r2, #0xa
cmp r5, r2
bne _021E6B66
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B66:
add r2, r1, #0
add r2, #0xb
cmp r5, r2
bne _021E6B72
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B72:
add r1, #0xc
cmp r5, r1
bne _021E6B7C
mov r0, #0
pop {r4, r5, r6, pc}
_021E6B7C:
ldr r1, _021E6BE0 ; =0x00002710
cmp r4, r1
bge _021E6B86
mov r0, #0xe
pop {r4, r5, r6, pc}
_021E6B86:
cmp r0, #0x1f
bne _021E6B8E
mov r0, #0xc
pop {r4, r5, r6, pc}
_021E6B8E:
cmp r6, #7
bhi _021E6BB6
add r0, r6, r6
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E6B9E: ; jump table
.short _021E6BAE - _021E6B9E - 2 ; case 0
.short _021E6BAE - _021E6B9E - 2 ; case 1
.short _021E6BAE - _021E6B9E - 2 ; case 2
.short _021E6BB2 - _021E6B9E - 2 ; case 3
.short _021E6BB2 - _021E6B9E - 2 ; case 4
.short _021E6BB2 - _021E6B9E - 2 ; case 5
.short _021E6BB2 - _021E6B9E - 2 ; case 6
.short _021E6BBC - _021E6B9E - 2 ; case 7
_021E6BAE:
mov r0, #0xb
pop {r4, r5, r6, pc}
_021E6BB2:
mov r0, #0xa
pop {r4, r5, r6, pc}
_021E6BB6:
bl GF_AssertFail
b _021E6BC0
_021E6BBC:
mov r0, #0xf
pop {r4, r5, r6, pc}
_021E6BC0:
mov r0, #0
mvn r0, r0
pop {r4, r5, r6, pc}
nop
_021E6BC8: .word 0x00004E85
_021E6BCC: .word 0x0000C79F
_021E6BD0: .word 0x0000CB20
_021E6BD4: .word 0x0000CB84
_021E6BD8: .word 0x0000CBE8
_021E6BDC: .word 0x00013A2E
_021E6BE0: .word 0x00002710
thumb_func_end ov00_021E6A70
thumb_func_start ov00_021E6BE4
ov00_021E6BE4: ; 0x021E6BE4
push {r3, lr}
cmp r0, #0
bne _021E6C44
ldr r0, _021E6C60 ; =_0221A680
ldr r2, _021E6C64 ; =0x00001070
ldr r0, [r0]
ldr r1, [r0, r2]
cmp r1, #0x12
bhi _021E6C5C
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021E6C02: ; jump table
.short _021E6C5C - _021E6C02 - 2 ; case 0
.short _021E6C5C - _021E6C02 - 2 ; case 1
.short _021E6C5C - _021E6C02 - 2 ; case 2
.short _021E6C5C - _021E6C02 - 2 ; case 3
.short _021E6C40 - _021E6C02 - 2 ; case 4
.short _021E6C28 - _021E6C02 - 2 ; case 5
.short _021E6C5C - _021E6C02 - 2 ; case 6
.short _021E6C28 - _021E6C02 - 2 ; case 7
.short _021E6C28 - _021E6C02 - 2 ; case 8
.short _021E6C5C - _021E6C02 - 2 ; case 9
.short _021E6C5C - _021E6C02 - 2 ; case 10
.short _021E6C5C - _021E6C02 - 2 ; case 11
.short _021E6C5C - _021E6C02 - 2 ; case 12
.short _021E6C5C - _021E6C02 - 2 ; case 13
.short _021E6C40 - _021E6C02 - 2 ; case 14
.short _021E6C5C - _021E6C02 - 2 ; case 15
.short _021E6C5C - _021E6C02 - 2 ; case 16
.short _021E6C40 - _021E6C02 - 2 ; case 17
.short _021E6C40 - _021E6C02 - 2 ; case 18
_021E6C28:
add r2, #0x20
ldr r0, [r0, r2]
cmp r0, #0
beq _021E6C34
bl ov00_021E79CC
_021E6C34:
ldr r0, _021E6C60 ; =_0221A680
mov r2, #0x10
ldr r1, [r0]
ldr r0, _021E6C64 ; =0x00001070
str r2, [r1, r0]
b _021E6C5C
_021E6C40:
mov r0, #1
pop {r3, pc}
_021E6C44:
ldr r0, _021E6C60 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6C64 ; =0x00001070
ldr r0, [r1, r0]
cmp r0, #4
beq _021E6C58
cmp r0, #0x11
beq _021E6C58
cmp r0, #0x12
bne _021E6C5C
_021E6C58:
mov r0, #1
pop {r3, pc}
_021E6C5C:
mov r0, #0
pop {r3, pc}
.balign 4, 0
_021E6C60: .word _0221A680
_021E6C64: .word 0x00001070
thumb_func_end ov00_021E6BE4
thumb_func_start ov00_021E6C68
ov00_021E6C68: ; 0x021E6C68
push {r3, lr}
ldr r0, _021E6C9C ; =_0221A680
ldr r2, [r0]
ldr r0, _021E6CA0 ; =0x00001070
ldr r0, [r2, r0]
cmp r0, #0x11
beq _021E6C7E
cmp r0, #0x12
beq _021E6C7E
cmp r0, #4
bne _021E6C96
_021E6C7E:
ldr r0, _021E6CA0 ; =0x00001070
mov r1, #4
str r1, [r2, r0]
sub r2, r1, #5
ldr r1, _021E6C9C ; =_0221A680
add r0, #0x28
ldr r1, [r1]
str r2, [r1, r0]
bl ov00_021E7130
mov r0, #1
pop {r3, pc}
_021E6C96:
mov r0, #0
pop {r3, pc}
nop
_021E6C9C: .word _0221A680
_021E6CA0: .word 0x00001070
thumb_func_end ov00_021E6C68
thumb_func_start ov00_021E6CA4
ov00_021E6CA4: ; 0x021E6CA4
ldr r1, _021E6CB4 ; =_0221A680
ldr r2, [r1]
cmp r2, #0
beq _021E6CB2
mov r1, #0x3f
lsl r1, r1, #6
str r0, [r2, r1]
_021E6CB2:
bx lr
.balign 4, 0
_021E6CB4: .word _0221A680
thumb_func_end ov00_021E6CA4
thumb_func_start ov00_021E6CB8
ov00_021E6CB8: ; 0x021E6CB8
push {r3, lr}
bl ov00_021ED9B4
bl ov00_021EC8D8
bl ov00_021E6A4C
bl ov00_021E5AE8
pop {r3, pc}
thumb_func_end ov00_021E6CB8
thumb_func_start ov00_021E6CCC
ov00_021E6CCC: ; 0x021E6CCC
push {r3, r4}
ldr r3, _021E6CE0 ; =_0221A680
ldr r2, _021E6CE4 ; =0x00001064
ldr r4, [r3]
str r0, [r4, r2]
ldr r3, [r3]
add r0, r2, #4
str r1, [r3, r0]
pop {r3, r4}
bx lr
.balign 4, 0
_021E6CE0: .word _0221A680
_021E6CE4: .word 0x00001064
thumb_func_end ov00_021E6CCC
thumb_func_start ov00_021E6CE8
ov00_021E6CE8: ; 0x021E6CE8
push {r3, r4, r5, lr}
ldr r0, _021E6D50 ; =_0221A680
ldr r1, _021E6D54 ; =0x00001064
ldr r0, [r0]
ldr r2, [r0, r1]
cmp r2, #0
beq _021E6D4E
add r1, #8
ldr r2, [r0, r1]
mov r1, #0x1f
add r5, r2, #0
and r5, r1
mov r1, #0xc
add r4, r5, #0
mul r4, r1
add r1, #0xf4
ldr r0, [r0, r1]
add r0, r0, r4
bl DWC_IsBuddyFriendData
cmp r0, #0
beq _021E6D3E
ldr r0, _021E6D50 ; =_0221A680
ldr r3, _021E6D54 ; =0x00001064
ldr r2, [r0]
mov r0, #1
lsl r0, r0, #8
ldr r1, [r2, r3]
ldr r0, [r2, r0]
add r3, r3, #4
ldr r2, [r2, r3]
add r0, r0, r4
add r3, r2, #0
mul r3, r5
add r1, r1, r3
add r2, sp, #0
bl ov00_021EFDCC
ldr r1, _021E6D50 ; =_0221A680
ldr r1, [r1]
add r2, r1, r5
ldr r1, _021E6D58 ; =0x00001044
strb r0, [r2, r1]
_021E6D3E:
ldr r0, _021E6D50 ; =_0221A680
ldr r1, _021E6D5C ; =0x0000106C
ldr r3, [r0]
ldr r0, [r3, r1]
add r2, r0, #1
mov r0, #0x1f
and r0, r2
str r0, [r3, r1]
_021E6D4E:
pop {r3, r4, r5, pc}
.balign 4, 0
_021E6D50: .word _0221A680
_021E6D54: .word 0x00001064
_021E6D58: .word 0x00001044
_021E6D5C: .word 0x0000106C
thumb_func_end ov00_021E6CE8
thumb_func_start ov00_021E6D60
ov00_021E6D60: ; 0x021E6D60
ldr r3, _021E6D64 ; =ov00_021EFE78
bx r3
.balign 4, 0
_021E6D64: .word ov00_021EFE78
thumb_func_end ov00_021E6D60
thumb_func_start ov00_021E6D68
ov00_021E6D68: ; 0x021E6D68
ldr r1, _021E6D74 ; =_0221A680
ldr r1, [r1]
add r1, r1, r0
ldr r0, _021E6D78 ; =0x00001044
ldrb r0, [r1, r0]
bx lr
.balign 4, 0
_021E6D74: .word _0221A680
_021E6D78: .word 0x00001044
thumb_func_end ov00_021E6D68
thumb_func_start ov00_021E6D7C
ov00_021E6D7C: ; 0x021E6D7C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r7, r2, #0
bl ov00_021E7314
cmp r0, #0
beq _021E6D92
mov r0, #3
mvn r0, r0
pop {r3, r4, r5, r6, r7, pc}
_021E6D92:
ldr r1, _021E6E84 ; =_0221A680
ldr r0, _021E6E88 ; =0x00001070
ldr r2, [r1]
ldr r3, [r2, r0]
cmp r3, #4
beq _021E6DC2
add r3, r0, #0
add r3, #0x5c
ldr r3, [r2, r3]
add r4, r3, #1
add r3, r0, #0
add r3, #0x5c
str r4, [r2, r3]
ldr r1, [r1]
add r0, #0x5c
ldr r0, [r1, r0]
cmp r0, #0x78
ble _021E6DBC
mov r0, #2
mvn r0, r0
pop {r3, r4, r5, r6, r7, pc}
_021E6DBC:
mov r0, #0
mvn r0, r0
pop {r3, r4, r5, r6, r7, pc}
_021E6DC2:
bl ov00_021E7300
ldr r2, _021E6E84 ; =_0221A680
ldr r1, _021E6E8C ; =0x000010D8
ldr r0, [r2]
mov r3, #0
str r3, [r0, r1]
add r0, r1, #0
ldr r3, [r2]
mov r6, #1
add r0, #0xd
strb r6, [r3, r0]
add r0, r1, #0
ldr r3, [r2]
sub r0, #0x44
str r5, [r3, r0]
sub r1, #0x5c
ldr r0, [r2]
cmp r7, #0
str r4, [r0, r1]
beq _021E6DEE
mov r4, #2
_021E6DEE:
ldr r0, _021E6E84 ; =_0221A680
mov r2, #1
ldr r1, [r0]
ldr r0, _021E6E90 ; =0x000010A0
cmp r5, #0
str r2, [r1, r0]
bge _021E6E12
lsl r0, r4, #0x18
mov r2, #0
ldr r1, _021E6E94 ; =ov00_021E6ED8
ldr r3, _021E6E98 ; =ov00_021E6FE0
lsr r0, r0, #0x18
str r2, [sp]
bl ov00_021EDFBC
mov r3, #1
ldr r1, _021E6E84 ; =_0221A680
b _021E6E24
_021E6E12:
ldr r1, _021E6E9C ; =ov00_021E6FBC
mov r2, #0
ldr r3, _021E6E98 ; =ov00_021E6FE0
add r0, r5, #0
str r2, [sp]
bl ov00_021EE054
ldr r1, _021E6E84 ; =_0221A680
mov r3, #2
_021E6E24:
ldr r2, [r1]
ldr r1, _021E6EA0 ; =0x00001074
cmp r0, #0
str r3, [r2, r1]
ldr r0, _021E6EA4 ; =0x000010CC
bne _021E6E4E
ldr r1, _021E6E84 ; =_0221A680
ldr r3, [r1]
ldr r2, [r3, r0]
add r2, r2, #1
str r2, [r3, r0]
ldr r1, [r1]
ldr r0, [r1, r0]
cmp r0, #0x78
ble _021E6E48
mov r0, #2
mvn r0, r0
pop {r3, r4, r5, r6, r7, pc}
_021E6E48:
mov r0, #1
mvn r0, r0
pop {r3, r4, r5, r6, r7, pc}
_021E6E4E:
ldr r1, _021E6E84 ; =_0221A680
mov r3, #0
ldr r2, [r1]
str r3, [r2, r0]
ldr r1, [r1]
mov r2, #5
sub r0, #0x5c
str r2, [r1, r0]
ldr r0, _021E6EA8 ; =ov00_021E6428
bl ov00_021F989C
ldr r0, _021E6EAC ; =ov00_021E6484
bl ov00_021F98BC
ldr r0, _021E6EB0 ; =ov00_021E6554
mov r1, #0
bl ov00_021EE24C
ldr r0, _021E6EB4 ; =ov00_021E6240
bl ov00_021F98DC
ldr r1, _021E6E84 ; =_0221A680
mov r0, #0
ldr r2, [r1]
ldr r1, _021E6EB8 ; =0x00001078
str r0, [r2, r1]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6E84: .word _0221A680
_021E6E88: .word 0x00001070
_021E6E8C: .word 0x000010D8
_021E6E90: .word 0x000010A0
_021E6E94: .word ov00_021E6ED8
_021E6E98: .word ov00_021E6FE0
_021E6E9C: .word ov00_021E6FBC
_021E6EA0: .word 0x00001074
_021E6EA4: .word 0x000010CC
_021E6EA8: .word ov00_021E6428
_021E6EAC: .word ov00_021E6484
_021E6EB0: .word ov00_021E6554
_021E6EB4: .word ov00_021E6240
_021E6EB8: .word 0x00001078
thumb_func_end ov00_021E6D7C
thumb_func_start ov00_021E6EBC
ov00_021E6EBC: ; 0x021E6EBC
ldr r0, _021E6ED0 ; =_0221A680
ldr r1, [r0]
cmp r1, #0
beq _021E6ECA
ldr r0, _021E6ED4 ; =0x00001094
ldr r0, [r1, r0]
bx lr
_021E6ECA:
mov r0, #0
mvn r0, r0
bx lr
.balign 4, 0
_021E6ED0: .word _0221A680
_021E6ED4: .word 0x00001094
thumb_func_end ov00_021E6EBC
thumb_func_start ov00_021E6ED8
ov00_021E6ED8: ; 0x021E6ED8
push {r3, r4, r5, r6, r7, lr}
ldr r7, _021E6FA0 ; =_0221A680
add r3, r0, #0
add r0, r1, #0
add r6, r2, #0
mov r4, #0
ldr r2, [r7]
ldr r1, _021E6FA4 ; =0x000010A0
ldr r5, [sp, #0x18]
str r4, [r2, r1]
cmp r3, #0
bne _021E6F9E
cmp r0, #0
bne _021E6F92
bl sub_0203993C
bl sub_02034098
cmp r0, #0
beq _021E6F08
sub r0, r4, #1
cmp r5, r0
bne _021E6F08
mov r4, #1
_021E6F08:
ldr r0, _021E6FA0 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6FA8 ; =0x00000FBC
ldr r1, [r1, r0]
cmp r1, #0
beq _021E6F1E
add r0, r5, #0
blx r1
cmp r0, #0
bne _021E6F1E
mov r4, #1
_021E6F1E:
ldr r0, _021E6FA0 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6FAC ; =0x000010E0
ldrb r0, [r1, r0]
cmp r0, #0
bne _021E6F2E
cmp r4, #0
beq _021E6F66
_021E6F2E:
bl ov00_021EE4FC
ldr r1, _021E6FA0 ; =_0221A680
ldr r2, [r1]
ldr r1, _021E6FB0 ; =0x000010D8
ldr r1, [r2, r1]
mvn r1, r1
and r0, r1
str r0, [sp]
bl ov00_021EE4FC
add r4, r0, #0
ldr r0, [sp]
cmp r0, #0
beq _021E6F66
add r0, sp, #0
bl ov00_021EE384
ldr r0, [sp]
eor r0, r4
cmp r0, #1
bne _021E6F9E
ldr r0, _021E6FA0 ; =_0221A680
mov r2, #6
ldr r1, [r0]
ldr r0, _021E6FB4 ; =0x00001070
str r2, [r1, r0]
pop {r3, r4, r5, r6, r7, pc}
_021E6F66:
ldr r0, _021E6FA0 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E6FB8 ; =0x00001094
str r5, [r1, r0]
bl ov00_021EE4FC
ldr r2, _021E6FA0 ; =_0221A680
ldr r1, _021E6FB0 ; =0x000010D8
ldr r3, [r2]
str r0, [r3, r1]
ldr r2, [r2]
ldr r0, [r2, r1]
cmp r0, #1
bne _021E6F8A
mov r0, #6
sub r1, #0x68
str r0, [r2, r1]
pop {r3, r4, r5, r6, r7, pc}
_021E6F8A:
add r0, r5, #0
bl ov00_021E6388
pop {r3, r4, r5, r6, r7, pc}
_021E6F92:
cmp r6, #0
bne _021E6F9E
ldr r0, [r7]
sub r2, r4, #1
sub r1, #8
str r2, [r0, r1]
_021E6F9E:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6FA0: .word _0221A680
_021E6FA4: .word 0x000010A0
_021E6FA8: .word 0x00000FBC
_021E6FAC: .word 0x000010E0
_021E6FB0: .word 0x000010D8
_021E6FB4: .word 0x00001070
_021E6FB8: .word 0x00001094
thumb_func_end ov00_021E6ED8
thumb_func_start ov00_021E6FBC
ov00_021E6FBC: ; 0x021E6FBC
push {r4, lr}
ldr r2, _021E6FD8 ; =_0221A680
mov r4, #0
ldr r3, [r2]
ldr r2, _021E6FDC ; =0x000010A0
cmp r0, #0
str r4, [r3, r2]
bne _021E6FD6
cmp r1, #0
bne _021E6FD6
ldr r0, [sp, #8]
bl ov00_021E6388
_021E6FD6:
pop {r4, pc}
.balign 4, 0
_021E6FD8: .word _0221A680
_021E6FDC: .word 0x000010A0
thumb_func_end ov00_021E6FBC
thumb_func_start ov00_021E6FE0
ov00_021E6FE0: ; 0x021E6FE0
push {r3, lr}
ldr r2, _021E7004 ; =_0221A680
ldr r1, _021E7008 ; =0x00001098
ldr r3, [r2]
str r0, [r3, r1]
ldr r3, [r2]
add r2, r1, #0
sub r2, #0xe4
ldr r2, [r3, r2]
cmp r2, #0
beq _021E7000
sub r1, #0xe0
lsl r0, r0, #0x10
ldr r1, [r3, r1]
lsr r0, r0, #0x10
blx r2
_021E7000:
pop {r3, pc}
nop
_021E7004: .word _0221A680
_021E7008: .word 0x00001098
thumb_func_end ov00_021E6FE0
thumb_func_start ov00_021E700C
ov00_021E700C: ; 0x021E700C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
ldr r0, _021E7074 ; =_0221A680
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
bl DWC_CheckHasProfile
cmp r0, #0
bne _021E7034
ldr r0, _021E7074 ; =_0221A680
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
add r1, sp, #0xc
bl DWC_CreateExchangeToken
b _021E7044
_021E7034:
ldr r0, _021E7074 ; =_0221A680
ldr r1, [r0]
mov r0, #0xf1
lsl r0, r0, #4
ldr r0, [r1, r0]
add r1, sp, #0
bl DWC_CreateExchangeToken
_021E7044:
mov r4, #0
mov r7, #1
ldr r6, _021E7074 ; =_0221A680
add r5, r4, #0
lsl r7, r7, #8
_021E704E:
mov r0, #1
ldr r1, [r6]
lsl r0, r0, #8
ldr r0, [r1, r0]
add r0, r0, r5
bl DWC_GetFriendDataType
ldr r0, [r6]
ldr r0, [r0, r7]
add r0, r0, r5
bl DWC_IsBuddyFriendData
add r4, r4, #1
add r5, #0xc
cmp r4, #0x20
blt _021E704E
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021E7074: .word _0221A680
thumb_func_end ov00_021E700C
thumb_func_start ov00_021E7078
ov00_021E7078: ; 0x021E7078
ldr r3, _021E707C ; =ov00_021E7AA4
bx r3
.balign 4, 0
_021E707C: .word ov00_021E7AA4
thumb_func_end ov00_021E7078
thumb_func_start ov00_021E7080
ov00_021E7080: ; 0x021E7080
ldr r0, _021E7094 ; =_0221A680
ldr r1, [r0]
cmp r1, #0
beq _021E708E
ldr r0, _021E7098 ; =0x0000109C
ldr r0, [r1, r0]
bx lr
_021E708E:
mov r0, #0
bx lr
nop
_021E7094: .word _0221A680
_021E7098: .word 0x0000109C
thumb_func_end ov00_021E7080
thumb_func_start ov00_021E709C
ov00_021E709C: ; 0x021E709C
ldr r0, _021E70B0 ; =_0221A680
ldr r1, [r0]
cmp r1, #0
beq _021E70AA
ldr r0, _021E70B4 ; =0x00001098
ldr r0, [r1, r0]
bx lr
_021E70AA:
mov r0, #0
bx lr
nop
_021E70B0: .word _0221A680
_021E70B4: .word 0x00001098
thumb_func_end ov00_021E709C
thumb_func_start ov00_021E70B8
ov00_021E70B8: ; 0x021E70B8
ldr r1, _021E70C4 ; =_0221A680
ldr r2, [r1]
ldr r1, _021E70C8 ; =0x0000109C
str r0, [r2, r1]
bx lr
nop
_021E70C4: .word _0221A680
_021E70C8: .word 0x0000109C
thumb_func_end ov00_021E70B8
thumb_func_start ov00_021E70CC
ov00_021E70CC: ; 0x021E70CC
ldr r1, _021E70D8 ; =_0221A680
ldr r2, [r1]
ldr r1, _021E70DC ; =0x000010D6
strh r0, [r2, r1]
bx lr
nop
_021E70D8: .word _0221A680
_021E70DC: .word 0x000010D6
thumb_func_end ov00_021E70CC
thumb_func_start ov00_021E70E0
ov00_021E70E0: ; 0x021E70E0
ldr r0, _021E70EC ; =_0221A680
mov r2, #2
ldr r1, [r0]
ldr r0, _021E70F0 ; =0x000010E0
strb r2, [r1, r0]
bx lr
.balign 4, 0
_021E70EC: .word _0221A680
_021E70F0: .word 0x000010E0
thumb_func_end ov00_021E70E0
thumb_func_start ov00_021E70F4
ov00_021E70F4: ; 0x021E70F4
push {r3, lr}
ldr r0, _021E7124 ; =_0221A680
ldr r2, [r0]
ldr r0, _021E7128 ; =0x000010E0
ldrb r1, [r2, r0]
cmp r1, #0
bne _021E710E
mov r1, #1
strb r1, [r2, r0]
ldr r0, _021E712C ; =ov00_021E70E0
mov r1, #0
bl ov00_021F12F0
_021E710E:
ldr r0, _021E7124 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E7128 ; =0x000010E0
ldrb r0, [r1, r0]
cmp r0, #2
bne _021E711E
mov r0, #1
pop {r3, pc}
_021E711E:
mov r0, #0
pop {r3, pc}
nop
_021E7124: .word _0221A680
_021E7128: .word 0x000010E0
_021E712C: .word ov00_021E70E0
thumb_func_end ov00_021E70F4
thumb_func_start ov00_021E7130
ov00_021E7130: ; 0x021E7130
ldr r0, _021E713C ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E7140 ; =0x000010E0
strb r2, [r1, r0]
bx lr
.balign 4, 0
_021E713C: .word _0221A680
_021E7140: .word 0x000010E0
thumb_func_end ov00_021E7130
thumb_func_start ov00_021E7144
ov00_021E7144: ; 0x021E7144
ldr r3, _021E7148 ; =ov00_021EE448
bx r3
.balign 4, 0
_021E7148: .word ov00_021EE448
thumb_func_end ov00_021E7144
thumb_func_start ov00_021E714C
ov00_021E714C: ; 0x021E714C
push {r4, lr}
cmp r0, #0
beq _021E71B4
ldr r2, _021E7208 ; =_0221A680
ldr r0, _021E720C ; =0x00001088
ldr r3, [r2]
mov r4, #0xb
str r4, [r3, r0]
ldr r2, [r2]
sub r0, #0xf0
ldr r0, [r2, r0]
cmp r0, #0
bne _021E7204
add r0, r1, #0
ldr r1, _021E7210 ; =0x0000F020
bl AllocFromHeap
ldr r2, _021E7208 ; =_0221A680
ldr r1, _021E7214 ; =0x00000F98
ldr r3, [r2]
str r0, [r3, r1]
ldr r0, [r2]
mov r2, #0
ldr r0, [r0, r1]
mov r1, #0x1f
add r0, #0x1f
bic r0, r1
mov r1, #0xf
lsl r1, r1, #0xc
bl NNS_FndCreateExpHeapEx
ldr r2, _021E7208 ; =_0221A680
ldr r1, _021E7218 ; =0x00000F9C
ldr r3, [r2]
str r0, [r3, r1]
ldr r0, [r2]
ldr r0, [r0, r1]
mov r1, #0x10
bl NNS_FndSetGroupIDForExpHeap
ldr r0, _021E7208 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E7218 ; =0x00000F9C
ldr r0, [r1, r0]
bl NNS_FndGetTotalFreeSizeForExpHeap
ldr r1, _021E7208 ; =_0221A680
ldr r2, [r1]
mov r1, #0xfa
lsl r1, r1, #4
str r0, [r2, r1]
pop {r4, pc}
_021E71B4:
ldr r2, _021E7208 ; =_0221A680
ldr r0, _021E721C ; =0x00001084
ldr r4, [r2]
add r1, r0, #4
ldr r3, [r4, r0]
str r3, [r4, r1]
add r1, r0, #0
ldr r4, [r2]
sub r1, #0xec
ldr r1, [r4, r1]
cmp r1, #0
beq _021E7204
sub r0, #0xe8
ldr r0, [r4, r0]
bl NNS_FndGetTotalFreeSizeForExpHeap
mov r1, #0xfa
lsl r1, r1, #4
ldr r2, [r4, r1]
cmp r2, r0
beq _021E71E6
mov r0, #1
bl sub_02039AD8
pop {r4, pc}
_021E71E6:
sub r0, r1, #4
ldr r0, [r4, r0]
bl NNS_FndDestroyExpHeap
ldr r0, _021E7208 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E7214 ; =0x00000F98
ldr r0, [r1, r0]
bl FreeToHeap
ldr r0, _021E7208 ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E7214 ; =0x00000F98
str r2, [r1, r0]
_021E7204:
pop {r4, pc}
nop
_021E7208: .word _0221A680
_021E720C: .word 0x00001088
_021E7210: .word 0x0000F020
_021E7214: .word 0x00000F98
_021E7218: .word 0x00000F9C
_021E721C: .word 0x00001084
thumb_func_end ov00_021E714C
thumb_func_start ov00_021E7220
ov00_021E7220: ; 0x021E7220
ldr r1, _021E722C ; =_0221A680
ldr r2, [r1]
ldr r1, _021E7230 ; =0x000010E5
strb r0, [r2, r1]
bx lr
nop
_021E722C: .word _0221A680
_021E7230: .word 0x000010E5
thumb_func_end ov00_021E7220
thumb_func_start ov00_021E7234
ov00_021E7234: ; 0x021E7234
push {r4, lr}
ldr r1, _021E7274 ; =_0221A680
lsl r4, r0, #2
ldr r3, [r1]
mov r1, #0x3e
add r2, r3, r4
lsl r1, r1, #6
ldr r1, [r2, r1]
cmp r1, #0
beq _021E7270
add r2, r3, r0
ldr r0, _021E7278 ; =0x000010E1
ldrb r0, [r2, r0]
cmp r0, #1
bne _021E725A
add r0, r1, #0
bl FreeToHeap
b _021E7262
_021E725A:
mov r0, #0
add r2, r0, #0
bl ov00_021E6638
_021E7262:
ldr r0, _021E7274 ; =_0221A680
mov r2, #0
ldr r0, [r0]
add r1, r0, r4
mov r0, #0x3e
lsl r0, r0, #6
str r2, [r1, r0]
_021E7270:
pop {r4, pc}
nop
_021E7274: .word _0221A680
_021E7278: .word 0x000010E1
thumb_func_end ov00_021E7234
thumb_func_start ov00_021E727C
ov00_021E727C: ; 0x021E727C
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov00_021E7234
ldr r0, _021E72F4 ; =_0221A680
lsl r4, r5, #2
ldr r2, [r0]
mov r0, #0x3e
add r1, r2, r4
lsl r0, r0, #6
ldr r0, [r1, r0]
cmp r0, #0
bne _021E72F0
ldr r1, _021E72F8 ; =0x00001088
ldr r0, [r2, r1]
cmp r0, #0xb
bne _021E72B4
sub r1, #0x68
bl AllocFromHeap
ldr r2, _021E72F4 ; =_0221A680
ldr r1, [r2]
add r3, r1, r4
mov r1, #0x3e
lsl r1, r1, #6
str r0, [r3, r1]
mov r3, #1
b _021E72CC
_021E72B4:
mov r0, #0
sub r1, #0x88
mov r2, #0x20
bl ov00_021E65D4
ldr r2, _021E72F4 ; =_0221A680
ldr r1, [r2]
add r3, r1, r4
mov r1, #0x3e
lsl r1, r1, #6
str r0, [r3, r1]
mov r3, #0
_021E72CC:
ldr r0, [r2]
mov r2, #0x3e
add r1, r0, r5
ldr r0, _021E72FC ; =0x000010E1
lsl r2, r2, #6
strb r3, [r1, r0]
ldr r1, _021E72F4 ; =_0221A680
lsl r0, r5, #0x18
ldr r1, [r1]
mov r3, #0x1f
add r1, r1, r4
ldr r1, [r1, r2]
lsr r0, r0, #0x18
add r1, #0x1f
bic r1, r3
add r2, #0x80
bl ov00_021F9850
_021E72F0:
pop {r3, r4, r5, pc}
nop
_021E72F4: .word _0221A680
_021E72F8: .word 0x00001088
_021E72FC: .word 0x000010E1
thumb_func_end ov00_021E727C
thumb_func_start ov00_021E7300
ov00_021E7300: ; 0x021E7300
push {r4, lr}
mov r4, #0
_021E7304:
add r0, r4, #0
bl ov00_021E7234
add r4, r4, #1
cmp r4, #4
blt _021E7304
pop {r4, pc}
.balign 4, 0
thumb_func_end ov00_021E7300
thumb_func_start ov00_021E7314
ov00_021E7314: ; 0x021E7314
ldr r0, _021E7320 ; =_0221A680
ldr r1, [r0]
ldr r0, _021E7324 ; =0x000010E6
ldrb r0, [r1, r0]
bx lr
nop
_021E7320: .word _0221A680
_021E7324: .word 0x000010E6
thumb_func_end ov00_021E7314
thumb_func_start ov00_021E7328
ov00_021E7328: ; 0x021E7328
ldr r0, _021E7334 ; =_0221A680
mov r2, #0
ldr r1, [r0]
ldr r0, _021E7338 ; =0x000010E6
strb r2, [r1, r0]
bx lr
.balign 4, 0
_021E7334: .word _0221A680
_021E7338: .word 0x000010E6
thumb_func_end ov00_021E7328
thumb_func_start ov00_021E733C
ov00_021E733C: ; 0x021E733C
push {r3, r4, r5, lr}
bl MIC_Init
bl PM_Init
mov r0, #1
bl PM_SetAmp
mov r0, #3
bl PM_SetAmpGain
ldr r0, _021E73CC ; =_0221A684
mov r2, #0
ldr r1, [r0, #4]
ldr r3, _021E73D0 ; =0x00001A78
add r5, r2, #0
str r2, [r1, r3]
add r1, r3, #0
ldr r4, [r0, #4]
add r1, #0xc
str r2, [r4, r1]
ldr r4, [r0, #4]
add r1, r3, #4
str r2, [r4, r1]
add r1, r3, #0
ldr r4, [r0, #4]
add r1, #8
str r2, [r4, r1]
ldr r1, [r0, #4]
add r3, #0x10
str r2, [r1, r3]
ldr r3, _021E73D4 ; =0x00001A8C
add r1, r2, #0
_021E737E:
ldr r4, [r0, #4]
add r2, r2, #1
add r4, r4, r5
add r5, r5, #2
strh r1, [r4, r3]
cmp r2, #0x10
blt _021E737E
ldr r0, _021E73CC ; =_0221A684
ldr r2, [r0, #4]
ldr r0, _021E73D8 ; =0x00001AAC
str r1, [r2, r0]
mov r0, #1
bl VCT_EnableVAD
bl NNS_SndInit
ldr r0, _021E73CC ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E73DC ; =0x000019F8
add r0, r1, r0
bl NNS_SndStrmInit
ldr r1, _021E73CC ; =_0221A684
mov r0, #0
ldr r2, [r1, #4]
ldr r1, _021E73E0 ; =0x0000110C
add r1, r2, r1
mov r2, #0x22
lsl r2, r2, #6
bl MIi_CpuClearFast
ldr r0, _021E73CC ; =_0221A684
mov r1, #0
str r1, [r0]
mov r0, #1
bl VCT_EnableEchoCancel
pop {r3, r4, r5, pc}
nop
_021E73CC: .word _0221A684
_021E73D0: .word 0x00001A78
_021E73D4: .word 0x00001A8C
_021E73D8: .word 0x00001AAC
_021E73DC: .word 0x000019F8
_021E73E0: .word 0x0000110C
thumb_func_end ov00_021E733C
thumb_func_start ov00_021E73E4
ov00_021E73E4: ; 0x021E73E4
bx lr
.balign 4, 0
thumb_func_end ov00_021E73E4
thumb_func_start ov00_021E73E8
ov00_021E73E8: ; 0x021E73E8
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r4, r2, #0
add r6, r3, #0
ldr r7, [sp, #0x1c]
cmp r0, #0
bne _021E7410
mov r7, #0
cmp r5, #0
bls _021E748A
_021E73FC:
ldr r0, [r4]
mov r1, #0
add r2, r6, #0
bl MI_CpuFill8
add r7, r7, #1
add r4, r4, #4
cmp r7, r5
blo _021E73FC
pop {r3, r4, r5, r6, r7, pc}
_021E7410:
ldr r0, _021E748C ; =_0221A684
ldr r1, _021E7490 ; =0x00001A59
ldr r0, [r0, #4]
ldrb r2, [r0, r1]
cmp r2, #0
beq _021E7432
add r1, r1, #3
add r0, r0, r1
ldr r1, _021E7494 ; =ov00_021E73E4
mov r2, #0
bl MIC_StartAutoSamplingAsync
ldr r1, _021E748C ; =_0221A684
mov r0, #0
ldr r2, [r1, #4]
ldr r1, _021E7490 ; =0x00001A59
strb r0, [r2, r1]
_021E7432:
bl MIC_GetLastSamplingAddress
sub r0, r0, r7
cmp r0, r6
bhs _021E743E
add r7, r7, r6
_021E743E:
ldr r0, _021E7498 ; =0x027FFFA8
ldrh r1, [r0]
mov r0, #2
lsl r0, r0, #0xe
and r0, r1
asr r0, r0, #0xf
beq _021E7454
ldr r0, _021E748C ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E749C ; =0x0000110C
add r7, r1, r0
_021E7454:
ldr r0, _021E748C ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E74A0 ; =0x000019F0
ldr r0, [r1, r0]
cmp r0, #0
bne _021E7468
add r0, r7, #0
add r1, r6, #0
bl VCT_SendAudio
_021E7468:
mov r7, #0
cmp r5, #0
bls _021E7480
_021E746E:
ldr r0, [r4]
add r1, r6, #0
mov r2, #0
bl VCT_ReceiveAudio
add r7, r7, #1
add r4, r4, #4
cmp r7, r5
blo _021E746E
_021E7480:
ldr r0, _021E748C ; =_0221A684
mov r2, #2
ldr r1, [r0, #4]
ldr r0, _021E74A4 ; =0x00001A58
strb r2, [r1, r0]
_021E748A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E748C: .word _0221A684
_021E7490: .word 0x00001A59
_021E7494: .word ov00_021E73E4
_021E7498: .word 0x027FFFA8
_021E749C: .word 0x0000110C
_021E74A0: .word 0x000019F0
_021E74A4: .word 0x00001A58
thumb_func_end ov00_021E73E8
thumb_func_start ov00_021E74A8
ov00_021E74A8: ; 0x021E74A8
push {r4, lr}
ldr r1, _021E74F4 ; =_0221A684
ldr r2, [r1, #4]
ldr r1, _021E74F8 ; =0x00001A54
ldr r4, [r2, r1]
cmp r4, #0
bne _021E74CA
bl VCT_CreateSession
add r4, r0, #0
bne _021E74C2
mov r0, #0
pop {r4, pc}
_021E74C2:
mov r1, #0
bl VCT_Request
b _021E74D2
_021E74CA:
add r0, r4, #0
mov r1, #0
bl VCT_Request
_021E74D2:
cmp r0, #0
beq _021E74E8
add r0, r4, #0
bl VCT_DeleteSession
ldr r1, _021E74F4 ; =_0221A684
mov r0, #0
ldr r2, [r1, #4]
ldr r1, _021E74F8 ; =0x00001A54
str r0, [r2, r1]
pop {r4, pc}
_021E74E8:
ldr r0, _021E74F4 ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E74F8 ; =0x00001A54
str r4, [r1, r0]
mov r0, #1
pop {r4, pc}
.balign 4, 0
_021E74F4: .word _0221A684
_021E74F8: .word 0x00001A54
thumb_func_end ov00_021E74A8
thumb_func_start ov00_021E74FC
ov00_021E74FC: ; 0x021E74FC
push {r3, lr}
ldr r0, _021E753C ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E7540 ; =0x00001A54
ldr r0, [r1, r0]
cmp r0, #0
beq _021E7536
ldr r1, [r0, #0xc]
cmp r1, #4
bne _021E7536
mov r1, #0
bl VCT_Response
cmp r0, #0
beq _021E751E
mov r0, #0
pop {r3, pc}
_021E751E:
ldr r0, _021E753C ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E7540 ; =0x00001A54
ldr r0, [r1, r0]
bl VCT_StartStreaming
cmp r0, #0
beq _021E7532
mov r0, #1
pop {r3, pc}
_021E7532:
mov r0, #0
pop {r3, pc}
_021E7536:
mov r0, #0
pop {r3, pc}
nop
_021E753C: .word _0221A684
_021E7540: .word 0x00001A54
thumb_func_end ov00_021E74FC
thumb_func_start ov00_021E7544
ov00_021E7544: ; 0x021E7544
push {r3, lr}
cmp r1, #7
beq _021E755C
cmp r1, #9
beq _021E7554
cmp r1, #0xc
beq _021E7564
pop {r3, pc}
_021E7554:
add r0, r2, #0
bl ov00_021E7638
pop {r3, pc}
_021E755C:
add r0, r2, #0
bl VCT_StartStreaming
pop {r3, pc}
_021E7564:
add r0, r2, #0
bl ov00_021E7638
pop {r3, pc}
thumb_func_end ov00_021E7544
thumb_func_start ov00_021E756C
ov00_021E756C: ; 0x021E756C
push {r4, lr}
add r4, r2, #0
cmp r1, #0xc
bhi _021E7624
add r0, r1, r1
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E7580: ; jump table
.short _021E7624 - _021E7580 - 2 ; case 0
.short _021E759A - _021E7580 - 2 ; case 1
.short _021E7616 - _021E7580 - 2 ; case 2
.short _021E761E - _021E7580 - 2 ; case 3
.short _021E75DA - _021E7580 - 2 ; case 4
.short _021E7624 - _021E7580 - 2 ; case 5
.short _021E7624 - _021E7580 - 2 ; case 6
.short _021E75EA - _021E7580 - 2 ; case 7
.short _021E75BA - _021E7580 - 2 ; case 8
.short _021E75CE - _021E7580 - 2 ; case 9
.short _021E7624 - _021E7580 - 2 ; case 10
.short _021E761E - _021E7580 - 2 ; case 11
.short _021E761E - _021E7580 - 2 ; case 12
_021E759A:
ldr r0, _021E7628 ; =_0221A684
ldr r2, [r0, #4]
ldr r0, _021E762C ; =0x00001A54
ldr r1, [r2, r0]
cmp r1, #0
beq _021E75B6
add r0, r4, #0
mov r1, #3
bl VCT_Response
add r0, r4, #0
bl VCT_DeleteSession
pop {r4, pc}
_021E75B6:
str r4, [r2, r0]
pop {r4, pc}
_021E75BA:
add r0, r4, #0
mov r1, #0
bl VCT_Response
add r0, r4, #0
bl ov00_021E7638
bl ov00_021E6A4C
pop {r4, pc}
_021E75CE:
add r0, r4, #0
bl ov00_021E7638
bl ov00_021E6A4C
pop {r4, pc}
_021E75DA:
add r0, r4, #0
mov r1, #4
bl VCT_Response
add r0, r4, #0
bl ov00_021E7638
pop {r4, pc}
_021E75EA:
ldr r0, _021E7628 ; =_0221A684
ldr r2, [r4]
ldr r1, [r0, #4]
ldr r0, _021E7630 ; =0x000019E8
ldr r0, [r1, r0]
cmp r2, r0
beq _021E7600
add r0, r4, #0
bl ov00_021E7638
pop {r4, pc}
_021E7600:
add r0, r4, #0
bl VCT_StartStreaming
cmp r0, #0
beq _021E7624
ldr r0, _021E7628 ; =_0221A684
mov r2, #2
ldr r1, [r0, #4]
ldr r0, _021E7634 ; =0x000019EC
str r2, [r1, r0]
pop {r4, pc}
_021E7616:
add r0, r4, #0
bl ov00_021E7638
pop {r4, pc}
_021E761E:
add r0, r4, #0
bl ov00_021E7638
_021E7624:
pop {r4, pc}
nop
_021E7628: .word _0221A684
_021E762C: .word 0x00001A54
_021E7630: .word 0x000019E8
_021E7634: .word 0x000019EC
thumb_func_end ov00_021E756C
thumb_func_start ov00_021E7638
ov00_021E7638: ; 0x021E7638
push {r4, lr}
add r4, r0, #0
bl VCT_StopStreaming
add r0, r4, #0
bl VCT_DeleteSession
ldr r0, _021E7654 ; =_0221A684
mov r2, #0
ldr r1, [r0, #4]
ldr r0, _021E7658 ; =0x00001A54
str r2, [r1, r0]
pop {r4, pc}
nop
_021E7654: .word _0221A684
_021E7658: .word 0x00001A54
thumb_func_end ov00_021E7638
thumb_func_start ov00_021E765C
ov00_021E765C: ; 0x021E765C
push {r4, r5, r6, lr}
bl OS_GetTick
add r4, r0, #0
ldr r0, _021E778C ; =_0221A684
add r5, r1, #0
ldr r0, [r0, #8]
sub r1, r4, r0
mov r0, #0xfa
lsl r0, r0, #8
mul r0, r1
ldr r1, _021E7790 ; =0x000082EA
bl _u32_div_f
ldr r1, _021E778C ; =_0221A684
ldr r3, _021E7794 ; =0x0000411A
ldr r2, [r1]
sub r0, r0, r3
add r2, r2, r0
ldr r0, _021E7798 ; =0xFFFFD8F0
str r2, [r1]
cmp r2, r0
bge _021E768E
mov r0, #0
str r0, [r1]
_021E768E:
ldr r0, _021E778C ; =_0221A684
str r4, [r0, #8]
str r5, [r0, #0xc]
bl VCT_Main
ldr r4, _021E778C ; =_0221A684
ldr r0, _021E7794 ; =0x0000411A
ldr r1, [r4]
cmp r1, r0
blt _021E76B4
add r6, r0, #0
add r5, r0, #0
_021E76A6:
bl VCT_Main
ldr r0, [r4]
sub r0, r0, r6
str r0, [r4]
cmp r0, r5
bge _021E76A6
_021E76B4:
ldr r0, _021E778C ; =_0221A684
ldr r2, [r0, #4]
mov r0, #0x6a
lsl r0, r0, #6
ldr r1, [r2, r0]
cmp r1, #0
beq _021E7708
sub r0, r0, #4
ldr r0, [r2, r0]
cmp r0, #3
bhi _021E76FC
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E76D6: ; jump table
.short _021E76DE - _021E76D6 - 2 ; case 0
.short _021E76E6 - _021E76D6 - 2 ; case 1
.short _021E76EE - _021E76D6 - 2 ; case 2
.short _021E76F6 - _021E76D6 - 2 ; case 3
_021E76DE:
mov r0, #3
bl PM_SetAmpGain
b _021E76FC
_021E76E6:
mov r0, #2
bl PM_SetAmpGain
b _021E76FC
_021E76EE:
mov r0, #1
bl PM_SetAmpGain
b _021E76FC
_021E76F6:
mov r0, #0
bl PM_SetAmpGain
_021E76FC:
ldr r0, _021E778C ; =_0221A684
mov r2, #0
ldr r1, [r0, #4]
mov r0, #0x6a
lsl r0, r0, #6
str r2, [r1, r0]
_021E7708:
ldr r3, _021E778C ; =_0221A684
ldr r2, _021E779C ; =0x000019E8
ldr r0, [r3, #4]
ldr r1, [r0, r2]
cmp r1, #3
beq _021E7788
add r1, r2, #4
ldr r1, [r0, r1]
cmp r1, #0
beq _021E7724
cmp r1, #1
beq _021E7768
cmp r1, #2
pop {r4, r5, r6, pc}
_021E7724:
bl ov00_021E6964
cmp r0, #0
bne _021E774A
mov r0, #1
bl ov00_021E74A8
cmp r0, #0
beq _021E7788
ldr r1, _021E778C ; =_0221A684
ldr r0, _021E77A0 ; =0x000019EC
ldr r2, [r1, #4]
mov r3, #1
str r3, [r2, r0]
ldr r1, [r1, #4]
mov r2, #0x3c
add r0, #0x6e
strh r2, [r1, r0]
pop {r4, r5, r6, pc}
_021E774A:
bl ov00_021E6964
cmp r0, #1
bne _021E7788
mov r0, #0
bl ov00_021E74FC
cmp r0, #0
beq _021E7788
ldr r0, _021E778C ; =_0221A684
mov r2, #2
ldr r1, [r0, #4]
ldr r0, _021E77A0 ; =0x000019EC
str r2, [r1, r0]
pop {r4, r5, r6, pc}
_021E7768:
add r1, r2, #0
add r1, #0x72
ldrh r1, [r0, r1]
sub r4, r1, #1
add r1, r2, #0
add r1, #0x72
strh r4, [r0, r1]
add r0, r2, #0
ldr r3, [r3, #4]
add r0, #0x72
ldrh r0, [r3, r0]
cmp r0, #0
bne _021E7788
mov r1, #0
add r0, r2, #4
str r1, [r3, r0]
_021E7788:
pop {r4, r5, r6, pc}
nop
_021E778C: .word _0221A684
_021E7790: .word 0x000082EA
_021E7794: .word 0x0000411A
_021E7798: .word 0xFFFFD8F0
_021E779C: .word 0x000019E8
_021E77A0: .word 0x000019EC
thumb_func_end ov00_021E765C
thumb_func_start ov00_021E77A4
ov00_021E77A4: ; 0x021E77A4
push {r3, lr}
ldr r3, _021E77C8 ; =_0221A684
ldr r3, [r3, #4]
cmp r3, #0
bne _021E77B2
mov r0, #0
pop {r3, pc}
_021E77B2:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl VCT_HandleData
cmp r0, #0
beq _021E77C2
mov r0, #1
pop {r3, pc}
_021E77C2:
mov r0, #0
pop {r3, pc}
nop
_021E77C8: .word _0221A684
thumb_func_end ov00_021E77A4
thumb_func_start ov00_021E77CC
ov00_021E77CC: ; 0x021E77CC
push {r4, r5, r6, lr}
add r4, r2, #0
add r4, #0x20
add r5, r0, #0
add r6, r1, #0
add r0, r3, #0
add r1, r4, #0
bl AllocFromHeap
str r0, [r5]
mov r1, #0
add r2, r4, #0
bl MI_CpuFill8
ldr r1, [r5]
mov r0, #0x1f
add r1, #0x1f
bic r1, r0
str r1, [r6]
pop {r4, r5, r6, pc}
thumb_func_end ov00_021E77CC
thumb_func_start ov00_021E77F4
ov00_021E77F4: ; 0x021E77F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
add r6, r1, #0
add r0, sp, #0x14
mov r1, #0
strb r1, [r0]
strb r1, [r0, #1]
strb r1, [r0, #2]
ldr r0, _021E797C ; =_0221A684
add r4, r2, #0
ldr r0, [r0, #4]
cmp r0, #0
bne _021E7858
str r1, [sp, #0x10]
ldr r1, _021E7980 ; =_0221A688
ldr r2, _021E7984 ; =0x00001AB0
add r0, sp, #0x10
add r3, r5, #0
bl ov00_021E77CC
ldr r0, _021E797C ; =_0221A684
mov r2, #0x22
ldr r3, [sp, #0x10]
ldr r1, [r0, #4]
lsl r2, r2, #6
str r3, [r1, r2]
ldr r1, [r0, #4]
add r0, r2, #0
add r0, #8
add r2, r2, #4
add r0, r1, r0
add r1, r1, r2
mov r2, #0x8f
lsl r2, r2, #6
mul r2, r4
add r2, #0x20
add r3, r5, #0
bl ov00_021E77CC
ldr r1, _021E797C ; =_0221A684
ldr r0, _021E7988 ; =0x000019F4
ldr r2, [r1, #4]
str r5, [r2, r0]
ldr r1, [r1, #4]
mov r2, #0
sub r0, #0x68
str r2, [r1, r0]
bl ov00_021E733C
_021E7858:
ldr r3, _021E797C ; =_0221A684
mov r5, #0x22
ldr r0, [r3, #4]
ldr r2, _021E798C ; =0x00001A5C
mov r1, #3
str r1, [r0, r2]
ldr r1, [r3, #4]
add r0, r2, #4
str r1, [r1, r0]
add r0, r2, #0
ldr r1, [r3, #4]
lsl r5, r5, #6
add r0, #8
str r5, [r1, r0]
mov r5, #0x41
add r0, r2, #0
ldr r1, [r3, #4]
lsl r5, r5, #6
add r0, #0xc
str r5, [r1, r0]
add r0, r2, #0
ldr r5, [r3, #4]
mov r1, #1
add r0, #0x10
str r1, [r5, r0]
add r0, r2, #0
ldr r5, [r3, #4]
mov r7, #0
add r0, #0x14
str r7, [r5, r0]
add r0, r2, #0
ldr r5, [r3, #4]
add r0, #0x18
str r7, [r5, r0]
sub r0, r2, #3
ldr r5, [r3, #4]
sub r2, #0x64
strb r1, [r5, r0]
ldr r0, [r3, #4]
add r0, r0, r2
add r2, sp, #0x14
bl NNS_SndStrmAllocChannel
ldr r0, _021E797C ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E7990 ; =0x000019F8
add r0, r1, r0
add r1, r7, #0
bl NNS_SndStrmSetVolume
ldr r0, _021E797C ; =_0221A684
ldr r3, _021E7994 ; =0x0000088C
ldr r2, [r0, #4]
mov r0, #0x41
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, _021E7998 ; =ov00_021E73E8
mov r1, #1
str r0, [sp, #8]
ldr r0, _021E7990 ; =0x000019F8
str r2, [sp, #0xc]
add r0, r2, r0
add r2, r2, r3
sub r3, #0xc
bl NNS_SndStrmSetup
ldr r1, _021E797C ; =_0221A684
ldr r0, _021E799C ; =0x000019EC
ldr r2, [r1, #4]
add r3, r7, #0
str r3, [r2, r0]
ldr r1, [r1, #4]
add r0, #0x68
str r3, [r1, r0]
bl sub_0203993C
bl sub_02034084
cmp r0, #0
bne _021E7900
mov r0, #1
str r0, [sp, #0x20]
b _021E7904
_021E7900:
mov r0, #3
str r0, [sp, #0x20]
_021E7904:
ldr r1, _021E797C ; =_0221A684
ldr r3, [sp, #0x20]
ldr r2, [r1, #4]
ldr r0, _021E79A0 ; =0x000019E8
str r3, [r2, r0]
ldr r1, [r1, #4]
sub r0, #0x58
add r0, r1, r0
str r0, [sp, #0x18]
str r4, [sp, #0x1c]
bl ov00_021EE490
add r1, sp, #0x10
strb r0, [r1, #0x14]
mov r0, #0
ldrb r1, [r1, #0x14]
mvn r0, r0
cmp r1, r0
bne _021E792E
bl GF_AssertFail
_021E792E:
ldr r0, _021E797C ; =_0221A684
ldr r1, _021E79A0 ; =0x000019E8
ldr r0, [r0, #4]
ldr r1, [r0, r1]
cmp r1, #3
bne _021E7940
ldr r1, _021E79A4 ; =ov00_021E7544
str r1, [sp, #0x30]
b _021E7944
_021E7940:
ldr r1, _021E79A8 ; =ov00_021E756C
str r1, [sp, #0x30]
_021E7944:
mov r1, #0
str r1, [sp, #0x34]
ldr r1, _021E79AC ; =0x00000884
ldr r0, [r0, r1]
str r0, [sp, #0x28]
mov r0, #0x8f
lsl r0, r0, #6
mul r0, r4
add r0, #0x20
str r0, [sp, #0x2c]
add r0, sp, #0x18
bl VCT_Init
ldr r0, _021E797C ; =_0221A684
mov r2, #0
ldr r1, [r0, #4]
ldr r0, _021E79B0 ; =0x000019F0
str r2, [r1, r0]
add r0, r6, #0
bl VCT_SetCodec
bl ov00_021E79B4
mov r0, #1
bl VCT_EnableEchoCancel
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E797C: .word _0221A684
_021E7980: .word _0221A688
_021E7984: .word 0x00001AB0
_021E7988: .word 0x000019F4
_021E798C: .word 0x00001A5C
_021E7990: .word 0x000019F8
_021E7994: .word 0x0000088C
_021E7998: .word ov00_021E73E8
_021E799C: .word 0x000019EC
_021E79A0: .word 0x000019E8
_021E79A4: .word ov00_021E7544
_021E79A8: .word ov00_021E756C
_021E79AC: .word 0x00000884
_021E79B0: .word 0x000019F0
thumb_func_end ov00_021E77F4
thumb_func_start ov00_021E79B4
ov00_021E79B4: ; 0x021E79B4
ldr r0, _021E79C0 ; =_0221A684
ldr r3, _021E79C4 ; =NNS_SndStrmStart
ldr r1, [r0, #4]
ldr r0, _021E79C8 ; =0x000019F8
add r0, r1, r0
bx r3
.balign 4, 0
_021E79C0: .word _0221A684
_021E79C4: .word NNS_SndStrmStart
_021E79C8: .word 0x000019F8
thumb_func_end ov00_021E79B4
thumb_func_start ov00_021E79CC
ov00_021E79CC: ; 0x021E79CC
push {r3, lr}
ldr r0, _021E7A14 ; =_0221A684
ldr r1, _021E7A18 ; =0x00001A54
ldr r2, [r0, #4]
ldr r0, [r2, r1]
cmp r0, #0
beq _021E79E2
sub r1, #0x68
ldr r1, [r2, r1]
cmp r1, #0
bne _021E79E8
_021E79E2:
bl ov00_021E6A4C
pop {r3, pc}
_021E79E8:
cmp r1, #1
bne _021E79FC
mov r1, #2
bl VCT_Request
cmp r0, #0
beq _021E79FC
bl ov00_021E6A4C
pop {r3, pc}
_021E79FC:
ldr r0, _021E7A14 ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E7A18 ; =0x00001A54
ldr r0, [r1, r0]
mov r1, #1
bl VCT_Request
cmp r0, #0
beq _021E7A12
bl ov00_021E6A4C
_021E7A12:
pop {r3, pc}
.balign 4, 0
_021E7A14: .word _0221A684
_021E7A18: .word 0x00001A54
thumb_func_end ov00_021E79CC
thumb_func_start ov00_021E7A1C
ov00_021E7A1C: ; 0x021E7A1C
ldr r1, _021E7A28 ; =_0221A684
ldr r2, [r1, #4]
ldr r1, _021E7A2C ; =0x0000198C
str r0, [r2, r1]
bx lr
nop
_021E7A28: .word _0221A684
_021E7A2C: .word 0x0000198C
thumb_func_end ov00_021E7A1C
thumb_func_start ov00_021E7A30
ov00_021E7A30: ; 0x021E7A30
push {r4, lr}
ldr r0, _021E7A90 ; =_0221A684
ldr r1, [r0, #4]
cmp r1, #0
beq _021E7A8C
ldr r0, _021E7A94 ; =0x0000198C
ldr r4, [r1, r0]
bl MIC_StopAutoSampling
ldr r0, _021E7A90 ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E7A98 ; =0x000019F8
add r0, r1, r0
bl NNS_SndStrmStop
ldr r0, _021E7A90 ; =_0221A684
ldr r1, [r0, #4]
ldr r0, _021E7A98 ; =0x000019F8
add r0, r1, r0
bl NNS_SndStrmFreeChannel
bl VCT_Cleanup
ldr r0, _021E7A90 ; =_0221A684
ldr r1, _021E7A9C ; =0x00000888
ldr r2, [r0, #4]
ldr r0, _021E7AA0 ; =0x000019F4
ldr r1, [r2, r1]
ldr r0, [r2, r0]
bl FreeToHeapExplicit
ldr r0, _021E7A90 ; =_0221A684
mov r1, #0x22
ldr r2, [r0, #4]
ldr r0, _021E7AA0 ; =0x000019F4
lsl r1, r1, #6
ldr r0, [r2, r0]
ldr r1, [r2, r1]
bl FreeToHeapExplicit
mov r1, #0
ldr r0, _021E7A90 ; =_0221A684
cmp r4, #0
str r1, [r0, #4]
beq _021E7A8C
blx r4
_021E7A8C:
pop {r4, pc}
nop
_021E7A90: .word _0221A684
_021E7A94: .word 0x0000198C
_021E7A98: .word 0x000019F8
_021E7A9C: .word 0x00000888
_021E7AA0: .word 0x000019F4
thumb_func_end ov00_021E7A30
thumb_func_start ov00_021E7AA4
ov00_021E7AA4: ; 0x021E7AA4
push {r3, lr}
sub sp, #0x10
ldr r0, _021E7AC8 ; =_0221A684
ldr r0, [r0, #4]
cmp r0, #0
beq _021E7AC2
add r0, sp, #0
bl VCT_GetVADInfo
ldr r0, [sp, #4]
cmp r0, #2
ble _021E7AC2
ldr r0, [sp]
add sp, #0x10
pop {r3, pc}
_021E7AC2:
mov r0, #0
add sp, #0x10
pop {r3, pc}
.balign 4, 0
_021E7AC8: .word _0221A684
thumb_func_end ov00_021E7AA4
thumb_func_start ov00_021E7ACC
ov00_021E7ACC: ; 0x021E7ACC
ldr r0, _021E7AD8 ; =_0221A684
mov r2, #1
ldr r1, [r0, #4]
ldr r0, _021E7ADC ; =0x000019F0
str r2, [r1, r0]
bx lr
.balign 4, 0
_021E7AD8: .word _0221A684
_021E7ADC: .word 0x000019F0
thumb_func_end ov00_021E7ACC
thumb_func_start ov00_021E7AE0
ov00_021E7AE0: ; 0x021E7AE0
ldr r0, _021E7AEC ; =_0221A684
mov r2, #0
ldr r1, [r0, #4]
ldr r0, _021E7AF0 ; =0x000019F0
str r2, [r1, r0]
bx lr
.balign 4, 0
_021E7AEC: .word _0221A684
_021E7AF0: .word 0x000019F0
thumb_func_end ov00_021E7AE0
thumb_func_start ov00_021E7AF4
ov00_021E7AF4: ; 0x021E7AF4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
ldr r0, _021E7B54 ; =_0221A684
add r7, r1, #0
ldr r1, [r0, #4]
cmp r1, #0
beq _021E7B0A
ldr r0, _021E7B58 ; =0x000019E8
ldr r0, [r1, r0]
cmp r0, #3
beq _021E7B0E
_021E7B0A:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E7B0E:
mov r4, #0
add r5, r4, #0
_021E7B12:
cmp r4, r7
beq _021E7B48
mov r0, #1
lsl r0, r4
tst r0, r6
beq _021E7B48
ldr r0, _021E7B54 ; =_0221A684
ldr r0, [r0, #4]
add r1, r0, r5
ldr r0, _021E7B5C ; =0x000019D8
ldr r0, [r1, r0]
cmp r0, #1
beq _021E7B48
lsl r0, r4, #0x18
lsr r0, r0, #0x18
bl VCT_AddConferenceClient
cmp r0, #0
beq _021E7B3C
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E7B3C:
ldr r0, _021E7B54 ; =_0221A684
mov r1, #1
ldr r0, [r0, #4]
add r2, r0, r5
ldr r0, _021E7B5C ; =0x000019D8
str r1, [r2, r0]
_021E7B48:
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021E7B12
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E7B54: .word _0221A684
_021E7B58: .word 0x000019E8
_021E7B5C: .word 0x000019D8
thumb_func_end ov00_021E7AF4
.rodata
_0221602C:
.byte 0x01, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.balign 4, 0
_02216034:
.asciz "%s = '%s'"
.balign 4, 0
.data
.balign 4, 0
_02216400:
.asciz "pokemondpds"
.balign 4, 0
_0221640C:
.asciz "1vTlwb"
.balign 4, 0
_02216414:
.asciz "ppw_lobby"
.balign 4, 0
.bss
_0221A680:
.space 0x4
_0221A684:
.space 0x4
_0221A688:
.space 0xC