pmd-sky/asm/overlay_29_022DC65C.s
AnonymousRandomPerson ad92503af7 Decomped ov29_022DC61C
Decomped by ElectricGeorge
2025-06-15 17:36:05 -05:00

2757 lines
53 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_29_022DC65C.inc"
.text
arm_func_start ov29_022DC65C
ov29_022DC65C: ; 0x022DC65C
ldr ip, _022DC668 ; =ov29_022DC2B8
ldr r0, _022DC66C ; =ov29_023538B4
bx ip
.align 2, 0
_022DC668: .word ov29_022DC2B8
_022DC66C: .word ov29_023538B4
arm_func_end ov29_022DC65C
arm_func_start ov29_022DC670
ov29_022DC670: ; 0x022DC670
ldr ip, _022DC67C ; =ov29_022DC33C
ldr r0, _022DC680 ; =ov29_023538B4
bx ip
.align 2, 0
_022DC67C: .word ov29_022DC33C
_022DC680: .word ov29_023538B4
arm_func_end ov29_022DC670
arm_func_start ov29_022DC684
ov29_022DC684: ; 0x022DC684
ldr ip, _022DC690 ; =ov10_022C0998
mov r1, #1
bx ip
.align 2, 0
_022DC690: .word ov10_022C0998
arm_func_end ov29_022DC684
arm_func_start ov29_022DC694
ov29_022DC694: ; 0x022DC694
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r5, r0
add r0, sp, #0
mov r4, r1
bl ov10_022C22A0
add r0, sp, #0
mov r1, r4
bl ov10_022C0814
mov r0, r5
mov r1, #0
mov r2, #1
bl DrawTeamStats
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
arm_func_end ov29_022DC694
arm_func_start ov29_022DC6D0
ov29_022DC6D0: ; 0x022DC6D0
ldr ip, _022DC6D8 ; =UpdateTeamStats
bx ip
.align 2, 0
_022DC6D8: .word UpdateTeamStats
arm_func_end ov29_022DC6D0
arm_func_start ov29_022DC6DC
ov29_022DC6DC: ; 0x022DC6DC
ldr ip, _022DC6E4 ; =ov10_022C11D8
bx ip
.align 2, 0
_022DC6E4: .word ov10_022C11D8
arm_func_end ov29_022DC6DC
arm_func_start ov29_022DC6E8
ov29_022DC6E8: ; 0x022DC6E8
stmdb sp!, {r4, lr}
sub sp, sp, #0x18
ldrb r4, [sp, #0x20]
ldrsh ip, [sp, #0x24]
ldrsh lr, [sp, #0x28]
stmia sp, {r4, ip}
str lr, [sp, #8]
ldrsh ip, [sp, #0x2c]
ldrsh lr, [sp, #0x30]
str ip, [sp, #0xc]
ldrb ip, [sp, #0x34]
str lr, [sp, #0x10]
str ip, [sp, #0x14]
bl ov10_022C0F6C
add sp, sp, #0x18
ldmia sp!, {r4, pc}
arm_func_end ov29_022DC6E8
arm_func_start ov29_022DC728
ov29_022DC728: ; 0x022DC728
stmdb sp!, {r3, lr}
bl FreeTeamStats
bl ov10_022C096C
ldmia sp!, {r3, pc}
arm_func_end ov29_022DC728
arm_func_start ov29_022DC738
ov29_022DC738: ; 0x022DC738
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r5, r0
add r0, sp, #0
mov r4, r1
bl ov10_022C22A0
add r0, sp, #0
mov r1, r4
bl ov10_022C0814
mov r0, r5
bl ov10_022C14D0
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
arm_func_end ov29_022DC738
arm_func_start ov29_022DC76C
ov29_022DC76C: ; 0x022DC76C
ldr ip, _022DC774 ; =ov10_022C159C
bx ip
.align 2, 0
_022DC774: .word ov10_022C159C
arm_func_end ov29_022DC76C
arm_func_start ov29_022DC778
ov29_022DC778: ; 0x022DC778
bx lr
arm_func_end ov29_022DC778
arm_func_start ov29_022DC77C
ov29_022DC77C: ; 0x022DC77C
stmdb sp!, {r3, lr}
bl FreeMapAndTeam
bl ov10_022C096C
ldmia sp!, {r3, pc}
arm_func_end ov29_022DC77C
arm_func_start ov29_022DC78C
ov29_022DC78C: ; 0x022DC78C
stmdb sp!, {r4, lr}
ldr r1, _022DC7E0 ; =ov29_02353518
mov lr, #0
ldr r4, [r1]
mov r1, #0x50
b _022DC7D0
_022DC7A4:
mul ip, lr, r1
add r3, r4, ip
ldrb r2, [r3, #4]
cmp r2, #0
beq _022DC7CC
ldr r2, [r3, #8]
cmp r0, r2
addeq r0, r4, #4
addeq r0, r0, ip
ldmeqia sp!, {r4, pc}
_022DC7CC:
add lr, lr, #1
_022DC7D0:
cmp lr, #0x16
blt _022DC7A4
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_022DC7E0: .word ov29_02353518
arm_func_end ov29_022DC78C
; https://decomp.me/scratch/qiwjF
arm_func_start ov29_022DC7E4
ov29_022DC7E4: ; 0x022DC7E4
stmdb sp!, {r3, lr}
mov lr, #0
mov r3, lr
mov r2, lr
b _022DC80C
_022DC7F8:
mov r0, r0, lsr #1
mov ip, r1, lsr #1
orr r0, r0, r1, lsl #31
mov r1, ip
add lr, lr, #1
_022DC80C:
cmp r1, r3
cmpeq r0, r2
bne _022DC7F8
mov r0, lr
ldmia sp!, {r3, pc}
arm_func_end ov29_022DC7E4
arm_func_start ov29_022DC820
ov29_022DC820: ; 0x022DC820
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x3c
mov r8, r1
mov r1, #0xc
mul r1, r8, r1
mov sb, r0
ldr r0, [sb, #0x10]
add r4, sb, #0x2c
ldr r3, [sb, #0xc]
cmp r0, #0
add r4, r4, r1
mov r5, #0
cmpeq r3, #0
streq r5, [r4]
str r2, [sp, #0xc]
streq r5, [r4, #4]
beq _022DD084
ldr r0, [r4, #4]
ldr r2, [r4]
cmp r0, r5
cmpeq r2, r5
streq r5, [r4, #8]
ldr r0, [r4, #8]
moveq r5, #1
cmp r0, #0
bgt _022DC99C
add r0, sb, #0x2c
cmp r8, #0
add r0, r0, r1
moveq r1, #1
streq r1, [sp, #0x10]
moveq r1, #0
streq r1, [sp, #0x14]
movne r1, #0
strne r1, [sp, #0x10]
movne r1, #1
strne r1, [sp, #0x14]
cmp r8, #0
ldr r1, [sb, #0x10]
moveq sl, #0x80000000
str r1, [sp, #0x1c]
ldr r1, [sb, #0xc]
moveq lr, #0
str r1, [sp, #0x18]
ldr r1, [sp, #0x1c]
movne sl, #0
movne lr, #1
cmp r8, #0
moveq ip, #0x20
movne ip, #1
cmp r1, #0
ldr r1, [sp, #0x18]
cmpeq r1, #0
mov r1, #0
moveq r7, r1
moveq r6, r1
beq _022DC978
ldr r6, [r0, #4]
ldr r7, [r0]
cmp r6, r1
cmpeq r7, r1
mov r3, #0
ldreq r7, [sp, #0x10]
ldreq r6, [sp, #0x14]
mov r1, r3
b _022DC968
_022DC928:
mov r6, r6, lsl #1
orr r6, r6, r7, lsr #31
mov r7, r7, lsl #1
cmp r6, lr
cmpeq r7, sl
ldrhi r6, [sp, #0x14]
ldr r0, [sp, #0x1c]
ldrhi r7, [sp, #0x10]
and r2, r0, r6
mov r0, #0
cmp r2, r0
ldr r0, [sp, #0x18]
and r0, r0, r7
cmpeq r0, r1
bne _022DC978
add r3, r3, #1
_022DC968:
cmp r3, ip
blt _022DC928
mov r7, #0
mov r6, r7
_022DC978:
ldr r0, [r4, #4]
ldr r1, [r4]
cmp r0, r6
cmpeq r1, r7
strne r7, [r4]
strne r6, [r4, #4]
mov r0, #0x3c
str r0, [r4, #8]
b _022DC9A4
_022DC99C:
sub r0, r0, #1
str r0, [r4, #8]
_022DC9A4:
ldrb r0, [sb, #0x14]
cmp r0, #0
beq _022DCA0C
ldmia r4, {r0, r1}
cmp r1, #0
cmpeq r0, #0
beq _022DCA0C
bl ov29_022DC7E4
ldr r1, _022DD08C ; =ov29_02353518
mov r0, r0, lsl #0x10
ldr r2, [r1]
mov r1, r0, asr #0x10
ldrb r0, [r2, #0x6e8]
cmp r0, #0
beq _022DCA0C
ldr r0, [sp, #0xc]
add r2, sb, #0x16
str r0, [sp]
ldrb r3, [sb, #0x15]
add r0, sb, #0x1a
str r3, [sp, #4]
ldr r6, [sb, #4]
add r3, r0, r8, lsl #2
str r6, [sp, #8]
ldrsh r0, [sb, #8]
bl ov29_022DD0A4
_022DCA0C:
ldrb r0, [sb, #0x44]
cmp r0, #0
beq _022DD084
ldmia r4, {r0, r1}
cmp r1, #0
cmpeq r0, #0
mov r6, #0
beq _022DD084
bl ov29_022DC7E4
mov r0, r0, lsl #0x10
cmp r5, #0
mov r7, r0, asr #0x10
movne r6, #1
bne _022DCB24
ldr r0, _022DD090 ; =ov29_02350F8C
ldr r0, [r0, r7, lsl #3]
cmp r0, #0x10
addls pc, pc, r0, lsl #2
b _022DCB24
_022DCA58: ; jump table
b _022DCB24 ; case 0
b _022DCA9C ; case 1
b _022DCA9C ; case 2
b _022DCA9C ; case 3
b _022DCA9C ; case 4
b _022DCABC ; case 5
b _022DCABC ; case 6
b _022DCABC ; case 7
b _022DCABC ; case 8
b _022DCAE0 ; case 9
b _022DCAE0 ; case 10
b _022DCAE0 ; case 11
b _022DCAE0 ; case 12
b _022DCB04 ; case 13
b _022DCB04 ; case 14
b _022DCB04 ; case 15
b _022DCB04 ; case 16
_022DCA9C:
ldr r0, _022DD08C ; =ov29_02353518
ldr r0, [r0]
ldr r0, [r0]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #30
adds r0, r1, r0, ror #30
moveq r6, #1
b _022DCB24
_022DCABC:
ldr r0, _022DD08C ; =ov29_02353518
ldr r0, [r0]
ldr r0, [r0]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #30
add r0, r1, r0, ror #30
cmp r0, #1
moveq r6, #1
b _022DCB24
_022DCAE0:
ldr r0, _022DD08C ; =ov29_02353518
ldr r0, [r0]
ldr r0, [r0]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #30
add r0, r1, r0, ror #30
cmp r0, #2
moveq r6, #1
b _022DCB24
_022DCB04:
ldr r0, _022DD08C ; =ov29_02353518
ldr r0, [r0]
ldr r0, [r0]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #30
add r0, r1, r0, ror #30
cmp r0, #3
moveq r6, #1
_022DCB24:
cmp r6, #0
beq _022DCC3C
ldmia r4, {r0, r1}
bl ov29_022DC7E4
ldr r2, _022DD090 ; =ov29_02350F8C
ldr r1, _022DD08C ; =ov29_02353518
ldr r2, [r2, r7, lsl #3]
ldr r3, [r1]
mov r1, #0xc
ldr r5, [r3, #0x6f4]
mul r6, r2, r1
ldr sl, [r5, #4]
ldr r1, _022DD094 ; =ov29_02350F90
add r4, sl, r6
ldr r0, [r1, r0, lsl #3]
ldr r3, [r3]
ldrb sl, [sl, r6]
ldrb r6, [r4, #1]
mov r2, r3, asr #1
add r2, r3, r2, lsr #30
smulbb r6, sl, r6
mov r0, r0, lsl #0x10
str r0, [sp, #0x20]
ldrsh r1, [r4, #8]
ldrh sl, [sb, #0x4a]
mov r3, r8, lsl #0x10
mov fp, r6, lsl #5
mov r0, r2, asr #2
mov r6, r3, lsr #0x10
bl _s32_div_f
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r2, [r4, #4]
ldr r0, _022DD098 ; =_020AFC4C
mla r1, fp, r1, r2
mov r2, sl, lsl #0x11
mov r2, r2, asr #0xe
add r2, r2, #0x50
ldr r0, [r0]
ldr r4, [r5, #0xc]
add r2, r2, r6, lsl #2
mov r2, r2, lsl #0x10
mov r3, fp
add r0, r0, #0x70
add r1, r4, r1
mov r2, r2, asr #0x10
bl sub_0201BAC8
add r0, r6, sl, lsl #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
add r0, r0, #4
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r2, [r5, #0x14]
ldr r1, [sp, #0x20]
add r0, sp, #0x2c
add r1, r2, r1, lsr #10
mov r2, #0
mov r3, #0x10
bl sub_0201F598
ldr r0, _022DD098 ; =_020AFC4C
ldrh r2, [sp, #0x34]
ldr r0, [r0]
add r1, sp, #0x2c
add r0, r0, #0x70
bl sub_0201B43C
_022DCC3C:
ldr r6, _022DD08C ; =ov29_02353518
ldr r2, _022DD090 ; =ov29_02350F8C
ldr r1, [r6]
ldr r3, [r2, r7, lsl #3]
ldr r1, [r1, #0x6f4]
ldrh r4, [r6, #0xc]
ldrsh r0, [sb, #0x4a]
add r2, r2, r7, lsl #3
ldr r2, [r2, #4]
ldr r1, [r1, #4]
bic r4, r4, #0x100
strh r4, [r6, #0xc]
ldrh r4, [r6, #0xc]
mov fp, r0, lsl #1
mov sl, #0xc
bic r4, r4, #0x200
strh r4, [r6, #0xc]
ldrh r4, [r6, #0xc]
mov r0, r0, lsl #3
mla r1, r3, sl, r1
bic r4, r4, #0xc00
strh r4, [r6, #0xc]
ldrh r5, [r6, #0xc]
add fp, fp, #4
str r2, [sp, #0x28]
bic r5, r5, #0x1000
strh r5, [r6, #0xc]
ldrh sl, [r6, #0xc]
mov r5, r8, lsl #0x10
add r5, fp, r5, asr #16
bic sl, sl, #0x2000
strh sl, [r6, #0xc]
ldrh sl, [r6, #0x10]
mov fp, r5, lsl #0x10
add r0, r0, #0x50
bic r5, sl, #0xc00
strh r5, [r6, #0x10]
ldrh sl, [r6, #0x12]
mov r4, #0
add r8, r0, r8, lsl #2
bic sl, sl, #1
strh sl, [r6, #0x12]
ldrh sl, [r6, #0x12]
mov r5, r4
str r3, [sp, #0x24]
bic r2, sl, #2
strh r2, [r6, #0x12]
ldrh r2, [r6, #0xe]
cmp r3, #0x10
mov r0, fp, asr #0x10
bic r2, r2, #0x3e00
strh r2, [r6, #0xe]
addls pc, pc, r3, lsl #2
b _022DCFAC
_022DCD14: ; jump table
b _022DCFAC ; case 0
b _022DCD58 ; case 1
b _022DCE14 ; case 2
b _022DCE14 ; case 3
b _022DCF50 ; case 4
b _022DCEE0 ; case 5
b _022DCE14 ; case 6
b _022DCE14 ; case 7
b _022DCDB0 ; case 8
b _022DCE14 ; case 9
b _022DCE14 ; case 10
b _022DCE14 ; case 11
b _022DCD58 ; case 12
b _022DCE14 ; case 13
b _022DCD58 ; case 14
b _022DCE14 ; case 15
b _022DCE78 ; case 16
_022DCD58:
ldrh r2, [r6, #0xc]
bic r2, r2, #0xc000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xe]
bic r2, r2, #0xc000
strh r2, [r6, #0xe]
ldrb r2, [r1, #1]
ldrb r4, [r1]
ldrsh r3, [sb, #0x24]
mov r1, r2, lsl #3
mov r4, r4, lsl #3
add r1, r1, r1, lsr #31
sub r1, r3, r1, asr #1
sub r1, r1, #0x10
mov r2, r1, lsl #0x10
ldrsh r3, [sb, #0x22]
add r1, r4, r4, lsr #31
mov r4, r2, asr #0x10
sub r1, r3, r1, asr #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
b _022DCFAC
_022DCDB0:
ldrh r2, [r6, #0xc]
bic r2, r2, #0xc000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xc]
orr r2, r2, #0x8000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xe]
bic r2, r2, #0xc000
strh r2, [r6, #0xe]
ldrb r2, [r1, #1]
ldrb r4, [r1]
ldrsh r3, [sb, #0x24]
mov r1, r2, lsl #3
mov r4, r4, lsl #3
add r1, r1, r1, lsr #31
sub r1, r3, r1, asr #1
sub r1, r1, #0x10
mov r2, r1, lsl #0x10
ldrsh r3, [sb, #0x22]
add r1, r4, r4, lsr #31
mov r4, r2, asr #0x10
sub r1, r3, r1, asr #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
b _022DCFAC
_022DCE14:
ldrh r2, [r6, #0xc]
bic r2, r2, #0xc000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xe]
bic r2, r2, #0xc000
strh r2, [r6, #0xe]
ldrh r2, [r6, #0xe]
orr r2, r2, #0x4000
strh r2, [r6, #0xe]
ldrb r2, [r1, #1]
ldrb r4, [r1]
ldrsh r3, [sb, #0x24]
mov r1, r2, lsl #3
mov r4, r4, lsl #3
add r1, r1, r1, lsr #31
sub r1, r3, r1, asr #1
sub r1, r1, #0x10
mov r2, r1, lsl #0x10
ldrsh r3, [sb, #0x22]
add r1, r4, r4, lsr #31
mov r4, r2, asr #0x10
sub r1, r3, r1, asr #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
b _022DCFAC
_022DCE78:
ldrh r2, [r6, #0xc]
bic r2, r2, #0xc000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xe]
bic r2, r2, #0xc000
strh r2, [r6, #0xe]
ldrh r2, [r6, #0xe]
orr r2, r2, #0x4000
strh r2, [r6, #0xe]
ldrb r2, [r1]
ldrb r1, [r1, #1]
ldrsh r4, [sb, #0x22]
mov r3, r2, lsl #3
mov r2, r1, lsl #3
add r1, r3, r3, lsr #31
sub r1, r4, r1, asr #1
add r1, r1, #8
mov r1, r1, lsl #0x10
ldrsh r3, [sb, #0x24]
add r2, r2, r2, lsr #31
mov r5, r1, asr #0x10
sub r1, r3, r2, asr #1
sub r1, r1, #0x10
mov r1, r1, lsl #0x10
mov r4, r1, asr #0x10
b _022DCFAC
_022DCEE0:
ldrh r2, [r6, #0xc]
bic r2, r2, #0xc000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xc]
orr r2, r2, #0x4000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xe]
bic r2, r2, #0xc000
strh r2, [r6, #0xe]
ldrh r2, [r6, #0xe]
orr r2, r2, #0x8000
strh r2, [r6, #0xe]
ldrb r2, [r1, #1]
ldrb r4, [r1]
ldrsh r3, [sb, #0x24]
mov r1, r2, lsl #3
mov r4, r4, lsl #3
add r1, r1, r1, lsr #31
sub r1, r3, r1, asr #1
sub r1, r1, #0x10
mov r2, r1, lsl #0x10
ldrsh r3, [sb, #0x22]
add r1, r4, r4, lsr #31
mov r4, r2, asr #0x10
sub r1, r3, r1, asr #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
b _022DCFAC
_022DCF50:
ldrh r2, [r6, #0xc]
bic r2, r2, #0xc000
strh r2, [r6, #0xc]
ldrh r2, [r6, #0xe]
bic r2, r2, #0xc000
strh r2, [r6, #0xe]
ldrh r2, [r6, #0xe]
orr r2, r2, #0x8000
strh r2, [r6, #0xe]
ldrb r2, [r1]
ldrb r1, [r1, #1]
ldrsh r4, [sb, #0x26]
mov r3, r2, lsl #3
mov r2, r1, lsl #3
add r1, r3, r3, lsr #31
sub r1, r4, r1, asr #1
mov r1, r1, lsl #0x10
ldrsh r3, [sb, #0x28]
add r2, r2, r2, lsr #31
mov r5, r1, asr #0x10
sub r1, r3, r2, asr #1
mov r1, r1, lsl #0x10
mov r4, r1, asr #0x10
_022DCFAC:
ldr r3, _022DD08C ; =ov29_02353518
mov r1, #0x400
ldrh r6, [r3, #0x10]
rsb r1, r1, #0
and r2, r8, r1, lsr #22
and r6, r6, r1
strh r6, [r3, #0x10]
ldrh r8, [r3, #0x10]
mov r6, r0, lsl #0x1c
cmp r7, #0x20
orr r2, r8, r2
strh r2, [r3, #0x10]
ldrh r8, [r3, #0x10]
add r0, r1, #0x200
ldr r2, _022DD09C ; =0xFFFF000F
bic r7, r8, #0xf000
strh r7, [r3, #0x10]
ldrh r7, [r3, #0x10]
orr r6, r7, r6, lsr #16
strh r6, [r3, #0x10]
ldrh r6, [r3, #0xe]
ldrsh r7, [sb, #0x46]
and r0, r6, r0
strh r0, [r3, #0xe]
add r0, r7, r5
ldrh r6, [r3, #0xe]
and r0, r0, r1, lsr #23
orr r0, r6, r0
strh r0, [r3, #0xe]
ldrh r0, [r3, #0x12]
ldrsh r5, [sb, #0x48]
and r0, r0, r2
strh r0, [r3, #0x12]
add r0, r5, r4
ldrh r1, [r3, #0x12]
mov r0, r0, lsl #0x14
orr r0, r1, r0, lsr #16
strh r0, [r3, #0x12]
ldrneh r0, [r3, #6]
bicne r0, r0, #0x3e00
strneh r0, [r3, #6]
bne _022DD06C
ldrh r0, [r3, #0xe]
bic r0, r0, #0x3e00
strh r0, [r3, #0xe]
ldrh r0, [r3, #0xe]
orr r0, r0, #0x2000
strh r0, [r3, #0xe]
_022DD06C:
ldr r0, _022DD098 ; =_020AFC4C
ldr r1, _022DD0A0 ; =ov29_02353524
ldr r0, [r0]
mov r2, #1
add r0, r0, #0x70
bl sub_0201B9F8
_022DD084:
add sp, sp, #0x3c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022DD08C: .word ov29_02353518
_022DD090: .word ov29_02350F8C
_022DD094: .word ov29_02350F90
_022DD098: .word _020AFC4C
_022DD09C: .word 0xFFFF000F
_022DD0A0: .word ov29_02353524
arm_func_end ov29_022DC820
arm_func_start ov29_022DD0A4
ov29_022DD0A4: ; 0x022DD0A4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
ldr sb, _022DD500 ; =ov29_02350F8C
ldr r6, _022DD504 ; =ov29_02353518
ldr r0, [sb, r1, lsl #3]
mov lr, #0xc
ldr r4, [r6]
mul r7, r0, lr
ldr r5, [r4, #0x6f4]
ldrh r4, [r6, #8]
ldr r8, [r5, #4]
add r5, sb, r1, lsl #3
add sb, r8, r7
ldr sl, [r5, #4]
ldrsh fp, [sb, #0xa]
bic r4, r4, #0xc00
ldr ip, [sp, #0x30]
strh r4, [r6, #8]
ldr r4, [sp, #0x34]
ldrh r5, [r6, #8]
mov r4, r4, lsl #0x1e
str r0, [sp]
orr r4, r5, r4, lsr #20
strh r4, [r6, #8]
ldrb r5, [r8, r7]
ldrb r4, [sb, #1]
ldrsh sb, [r2]
mov r7, r5, lsl #3
mov r5, r4, lsl #3
add r4, r7, r7, lsr #31
sub sb, sb, r4, asr #1
ldrsh r8, [ip]
ldrsh r7, [r2, #2]
add r5, r5, r5, lsr #31
sub r8, sb, r8
ldrsh sb, [r3]
sub r5, r7, r5, asr #1
ldrsh r4, [ip, #2]
ldrsh r3, [r3, #2]
str sl, [sp, #4]
sub r4, r5, r4
add r4, r3, r4
add r5, sb, r8
sub r3, lr, #0x2c
cmp r5, r3
subge r8, lr, #0x2c
add r7, fp, #0x190
sub r3, r4, #0x10
cmpge r4, r8
blt _022DD4F8
cmp r5, #0xff
cmplt r4, #0xc0
bge _022DD4F8
ldrh r8, [r6, #4]
cmp r0, #0x10
bic r8, r8, #0x2000
strh r8, [r6, #4]
ldrh r8, [r6, #4]
orr r8, r8, #0x2000
strh r8, [r6, #4]
addls pc, pc, r0, lsl #2
b _022DD468
_022DD19C: ; jump table
b _022DD468 ; case 0
b _022DD1E0 ; case 1
b _022DD2AC ; case 2
b _022DD2AC ; case 3
b _022DD400 ; case 4
b _022DD388 ; case 5
b _022DD2AC ; case 6
b _022DD2AC ; case 7
b _022DD240 ; case 8
b _022DD2AC ; case 9
b _022DD2AC ; case 10
b _022DD2AC ; case 11
b _022DD1E0 ; case 12
b _022DD2AC ; case 13
b _022DD1E0 ; case 14
b _022DD2AC ; case 15
b _022DD318 ; case 16
_022DD1E0:
ldrh r8, [r6, #4]
ldr r4, _022DD508 ; =0x000001FF
sub r0, lr, #0x20c
bic r8, r8, #0xc000
strh r8, [r6, #4]
ldrh r8, [r6, #6]
and r5, r5, r4
ldr r4, _022DD50C ; =0xFFFF000F
bic r8, r8, #0xc000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
mov r3, r3, lsl #0x14
and r0, r8, r0
strh r0, [r6, #6]
ldrh r0, [r6, #6]
orr r0, r0, r5
strh r0, [r6, #6]
ldrh r0, [r6, #0xa]
and r0, r0, r4
strh r0, [r6, #0xa]
ldrh r0, [r6, #0xa]
orr r0, r0, r3, lsr #16
strh r0, [r6, #0xa]
b _022DD468
_022DD240:
ldrh r8, [r6, #4]
ldr r4, _022DD508 ; =0x000001FF
sub r0, lr, #0x20c
bic r8, r8, #0xc000
strh r8, [r6, #4]
ldrh r8, [r6, #4]
and r5, r5, r4
ldr r4, _022DD50C ; =0xFFFF000F
orr r8, r8, #0x8000
strh r8, [r6, #4]
ldrh r8, [r6, #6]
mov r3, r3, lsl #0x14
bic r8, r8, #0xc000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
and r0, r8, r0
strh r0, [r6, #6]
ldrh r0, [r6, #6]
orr r0, r0, r5
strh r0, [r6, #6]
ldrh r0, [r6, #0xa]
and r0, r0, r4
strh r0, [r6, #0xa]
ldrh r0, [r6, #0xa]
orr r0, r0, r3, lsr #16
strh r0, [r6, #0xa]
b _022DD468
_022DD2AC:
ldrh r8, [r6, #4]
ldr r4, _022DD508 ; =0x000001FF
sub r0, lr, #0x20c
bic r8, r8, #0xc000
strh r8, [r6, #4]
ldrh r8, [r6, #6]
and r5, r5, r4
ldr r4, _022DD50C ; =0xFFFF000F
bic r8, r8, #0xc000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
mov r3, r3, lsl #0x14
orr r8, r8, #0x4000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
and r0, r8, r0
strh r0, [r6, #6]
ldrh r0, [r6, #6]
orr r0, r0, r5
strh r0, [r6, #6]
ldrh r0, [r6, #0xa]
and r0, r0, r4
strh r0, [r6, #0xa]
ldrh r0, [r6, #0xa]
orr r0, r0, r3, lsr #16
strh r0, [r6, #0xa]
b _022DD468
_022DD318:
ldrh r8, [r6, #4]
sub r0, lr, #0x20c
ldr r4, _022DD508 ; =0x000001FF
bic r8, r8, #0xc000
strh r8, [r6, #4]
ldrh r8, [r6, #6]
add r5, r5, #8
and r5, r5, r4
bic r4, r8, #0xc000
strh r4, [r6, #6]
ldrh r8, [r6, #6]
ldr r4, _022DD50C ; =0xFFFF000F
mov r3, r3, lsl #0x14
orr r8, r8, #0x4000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
and r0, r8, r0
strh r0, [r6, #6]
ldrh r0, [r6, #6]
orr r0, r0, r5
strh r0, [r6, #6]
ldrh r0, [r6, #0xa]
and r0, r0, r4
strh r0, [r6, #0xa]
ldrh r0, [r6, #0xa]
orr r0, r0, r3, lsr #16
strh r0, [r6, #0xa]
b _022DD468
_022DD388:
ldrh r8, [r6, #4]
ldr r4, _022DD508 ; =0x000001FF
sub r0, lr, #0x20c
bic r8, r8, #0xc000
strh r8, [r6, #4]
ldrh r8, [r6, #4]
and r5, r5, r4
ldr r4, _022DD50C ; =0xFFFF000F
orr r8, r8, #0x4000
strh r8, [r6, #4]
ldrh r8, [r6, #6]
mov r3, r3, lsl #0x14
bic r8, r8, #0xc000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
orr r8, r8, #0x8000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
and r0, r8, r0
strh r0, [r6, #6]
ldrh r0, [r6, #6]
orr r0, r0, r5
strh r0, [r6, #6]
ldrh r0, [r6, #0xa]
and r0, r0, r4
strh r0, [r6, #0xa]
ldrh r0, [r6, #0xa]
orr r0, r0, r3, lsr #16
strh r0, [r6, #0xa]
b _022DD468
_022DD400:
ldrh r8, [r6, #4]
ldr r3, _022DD508 ; =0x000001FF
sub r0, lr, #0x20c
bic r8, r8, #0xc000
strh r8, [r6, #4]
ldrh r8, [r6, #6]
and r5, r5, r3
ldr r3, _022DD50C ; =0xFFFF000F
bic r8, r8, #0xc000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
mov r4, r4, lsl #0x14
orr r8, r8, #0x8000
strh r8, [r6, #6]
ldrh r8, [r6, #6]
and r0, r8, r0
strh r0, [r6, #6]
ldrh r0, [r6, #6]
orr r0, r0, r5
strh r0, [r6, #6]
ldrh r0, [r6, #0xa]
and r0, r0, r3
strh r0, [r6, #0xa]
ldrh r0, [r6, #0xa]
orr r0, r0, r4, lsr #16
strh r0, [r6, #0xa]
_022DD468:
ldr r3, _022DD504 ; =ov29_02353518
mov r0, #0x400
ldrh r5, [r3, #8]
rsb r0, r0, #0
ldr r4, [sp, #4]
and r5, r5, r0
strh r5, [r3, #8]
ldrh r6, [r3, #8]
and r5, r7, r0, lsr #22
mov r0, r4, lsl #0x1c
orr r4, r6, r5
strh r4, [r3, #8]
ldrh r4, [r3, #8]
cmp r1, #0x20
bic r1, r4, #0xf000
strh r1, [r3, #8]
ldrh r1, [r3, #8]
orr r0, r1, r0, lsr #16
strh r0, [r3, #8]
ldrh r0, [r3, #6]
ldr r1, _022DD510 ; =ov29_0235351C
biceq r0, r0, #0x3e00
streqh r0, [r3, #6]
ldreqh r0, [r3, #6]
orreq r0, r0, #0x2000
bicne r0, r0, #0x3e00
strh r0, [r3, #6]
ldrsh r3, [r2, #2]
ldrsh r0, [ip, #2]
ldr r2, _022DD514 ; =_020AFC4C
sub r0, r3, r0
add r0, r0, r0, lsr #31
mov r3, r0, asr #1
ldr r0, [r2]
add r2, r3, #1
bl sub_0201B9F8
_022DD4F8:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022DD500: .word ov29_02350F8C
_022DD504: .word ov29_02353518
_022DD508: .word 0x000001FF
_022DD50C: .word 0xFFFF000F
_022DD510: .word ov29_0235351C
_022DD514: .word _020AFC4C
arm_func_end ov29_022DD0A4
arm_func_start ov29_022DD518
ov29_022DD518: ; 0x022DD518
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
ldr r2, _022DD5AC ; =ov29_02353518
mov r1, #0xc
ldr r3, [r2]
mul r2, r0, r1
ldr r5, [r3, #0x6f4]
ldr r1, [r3]
ldr r3, [r5, #4]
mov r0, r1, asr #1
add r4, r3, r2
add r0, r1, r0, lsr #30
ldrb r3, [r3, r2]
ldrb r2, [r4, #1]
ldrsh r1, [r4, #8]
mov r0, r0, asr #2
smulbb r2, r3, r2
mov r6, r2, lsl #5
bl _s32_div_f
mov r0, #1
str r0, [sp]
mov r0, #0xe
str r0, [sp, #4]
ldr r3, [r4, #4]
ldrsh r2, [r4, #0xa]
ldr r0, _022DD5B0 ; =_020AFC4C
mla r4, r6, r1, r3
add r1, r2, #0x190
ldr r5, [r5, #0xc]
mov r2, r1, lsl #0x10
ldr r0, [r0]
mov r3, r6
add r1, r5, r4
mov r2, r2, asr #0x10
bl sub_0201BAC8
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022DD5AC: .word ov29_02353518
_022DD5B0: .word _020AFC4C
arm_func_end ov29_022DD518
arm_func_start ov29_022DD5B4
ov29_022DD5B4: ; 0x022DD5B4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
ldr r2, _022DD758 ; =ov29_02353518
ldr r0, [r2]
cmp r0, #0
bne _022DD60C
ldr r0, _022DD75C ; =ov29_0236CEF0
ldr r1, _022DD760 ; =0x000006FC
str r0, [r2]
bl MemZero
ldr r0, _022DD764 ; =ov29_0236D5EC
mov r1, #0x6000
bl MemZero
ldr r0, _022DD764 ; =ov29_0236D5EC
ldr r1, _022DD768 ; =ov29_0235109C
bl sub_02008BF4
ldr r0, _022DD758 ; =ov29_02353518
ldr r1, _022DD764 ; =ov29_0236D5EC
ldr r0, [r0]
add r0, r0, #0x2f4
add r0, r0, #0x400
bl HandleSir0Translation
_022DD60C:
ldr r0, _022DD758 ; =ov29_02353518
mov r2, #1
ldr r1, [r0]
mov sb, #0
strb r2, [r1, #0x6e8]
ldr r1, [r0]
ldr r4, _022DD76C ; =_020AFC4C
str sb, [r1]
ldr r0, [r0]
mov r8, #0xe0
ldr sl, [r0, #0x6f4]
mov r7, #0xff
add r6, sp, #8
mov r5, r2
mov fp, #0x10
_022DD648:
str r8, [sp]
str r7, [sp, #4]
ldr r1, [sl, #0x14]
mov r0, r6
mov r2, r5
mov r3, fp
add r1, r1, sb, lsl #6
bl sub_0201F598
mov r2, sb, lsl #0x10
ldr r0, [r4]
mov r1, r6
mov r2, r2, lsr #0x10
bl sub_0201B43C
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
cmp sb, #0x10
blt _022DD648
mov r0, #1
mov r1, #0
bl ov29_022DD518
mov r0, #2
mov r1, #0
bl ov29_022DD518
mov r0, #3
mov r1, #0
bl ov29_022DD518
mov r0, #4
mov r1, #0
bl ov29_022DD518
mov r0, #5
mov r1, #0
bl ov29_022DD518
mov r0, #6
mov r1, #0
bl ov29_022DD518
mov r0, #7
mov r1, #0
bl ov29_022DD518
mov r0, #8
mov r1, #0
bl ov29_022DD518
mov r0, #9
mov r1, #0
bl ov29_022DD518
mov r0, #0xa
mov r1, #0
bl ov29_022DD518
mov r0, #0xb
mov r1, #0
bl ov29_022DD518
mov r0, #0xc
mov r1, #0
bl ov29_022DD518
mov r0, #0xd
mov r1, #0
bl ov29_022DD518
mov r0, #0xe
mov r1, #0
bl ov29_022DD518
mov r0, #0xf
mov r1, #0
bl ov29_022DD518
mov r0, #0x10
mov r1, #0
bl ov29_022DD518
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022DD758: .word ov29_02353518
_022DD75C: .word ov29_0236CEF0
_022DD760: .word 0x000006FC
_022DD764: .word ov29_0236D5EC
_022DD768: .word ov29_0235109C
_022DD76C: .word _020AFC4C
arm_func_end ov29_022DD5B4
arm_func_start ov29_022DD770
ov29_022DD770: ; 0x022DD770
stmdb sp!, {r3, lr}
ldr r0, _022DD7A8 ; =ov29_02353518
mov r1, #8
ldr r0, [r0]
add r0, r0, #0x2ec
add r0, r0, #0x400
bl MemZero
ldr r0, _022DD7A8 ; =ov29_02353518
mov r2, #0
ldr r1, [r0]
str r2, [r1, #0x6f4]
ldr r0, [r0]
str r2, [r0, #0x6f8]
ldmia sp!, {r3, pc}
.align 2, 0
_022DD7A8: .word ov29_02353518
arm_func_end ov29_022DD770
arm_func_start ov29_022DD7AC
ov29_022DD7AC: ; 0x022DD7AC
stmdb sp!, {r3, lr}
ldr r0, _022DD7D4 ; =ov29_02353518
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl ov29_022DD770
ldr r0, _022DD7D4 ; =ov29_02353518
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022DD7D4: .word ov29_02353518
arm_func_end ov29_022DD7AC
arm_func_start ov29_022DD7D8
ov29_022DD7D8: ; 0x022DD7D8
stmdb sp!, {r4, r5, r6, lr}
ldr ip, _022DD824 ; =ov29_02353518
mov r6, r1
ldr r1, [ip]
mov r5, r2
mov r4, r3
cmp r1, #0
ldmeqia sp!, {r4, r5, r6, pc}
bl ov29_022DC78C
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
strh r6, [r0, #8]
str r5, [r0, #0xc]
ldrb r2, [sp, #0x10]
str r4, [r0, #0x10]
mov r1, #0
strb r2, [r0, #0x14]
strb r1, [r0, #0x44]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022DD824: .word ov29_02353518
arm_func_end ov29_022DD7D8
arm_func_start ov29_022DD828
ov29_022DD828: ; 0x022DD828
ldr r1, _022DD838 ; =ov29_02353518
ldr r1, [r1]
strb r0, [r1, #0x6e8]
bx lr
.align 2, 0
_022DD838: .word ov29_02353518
arm_func_end ov29_022DD828
arm_func_start ov29_022DD83C
ov29_022DD83C: ; 0x022DD83C
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _022DD8B0 ; =ov29_02353518
ldr r4, [sp, #0x14]
ldr r1, [r1]
mov r6, r2
mov r5, r3
cmp r1, #0
ldmeqia sp!, {r4, r5, r6, pc}
bl ov29_022DC78C
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r1, r6, lsl #0x10
mov r2, #1
strb r2, [r0, #0x44]
mov r1, r1, asr #0x10
strh r1, [r0, #0x4a]
strh r1, [r0, #0x4c]
ldr r1, [sp, #0x10]
strh r5, [r0, #0x46]
strh r1, [r0, #0x48]
ldrh r1, [r4]
strh r1, [r0, #0x22]
ldrh r1, [r4, #2]
strh r1, [r0, #0x24]
ldrh r1, [r4, #0xc]
strh r1, [r0, #0x26]
ldrh r1, [r4, #0xe]
strh r1, [r0, #0x28]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022DD8B0: .word ov29_02353518
arm_func_end ov29_022DD83C
arm_func_start ov29_022DD8B4
ov29_022DD8B4: ; 0x022DD8B4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, _022DDA50 ; =ov29_02353518
mov r4, r0
ldr r0, [r1]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [r0]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #30
add r0, r1, r0, ror #30
cmp r0, #3
addls pc, pc, r0, lsl #2
b _022DD9C4
_022DD8E8: ; jump table
b _022DD8F8 ; case 0
b _022DD92C ; case 1
b _022DD960 ; case 2
b _022DD994 ; case 3
_022DD8F8:
mov r0, #1
mov r1, r0
bl ov29_022DD518
mov r0, #2
mov r1, #1
bl ov29_022DD518
mov r0, #3
mov r1, #1
bl ov29_022DD518
mov r0, #4
mov r1, #1
bl ov29_022DD518
b _022DD9C4
_022DD92C:
mov r0, #5
mov r1, #1
bl ov29_022DD518
mov r0, #6
mov r1, #1
bl ov29_022DD518
mov r0, #7
mov r1, #1
bl ov29_022DD518
mov r0, #8
mov r1, #1
bl ov29_022DD518
b _022DD9C4
_022DD960:
mov r0, #9
mov r1, #1
bl ov29_022DD518
mov r0, #0xa
mov r1, #1
bl ov29_022DD518
mov r0, #0xb
mov r1, #1
bl ov29_022DD518
mov r0, #0xc
mov r1, #1
bl ov29_022DD518
b _022DD9C4
_022DD994:
mov r0, #0xd
mov r1, #1
bl ov29_022DD518
mov r0, #0xe
mov r1, #1
bl ov29_022DD518
mov r0, #0xf
mov r1, #1
bl ov29_022DD518
mov r0, #0x10
mov r1, #1
bl ov29_022DD518
_022DD9C4:
mov sb, #0
ldr r6, _022DDA50 ; =ov29_02353518
mov r8, sb
mov fp, #1
mov r7, sb
mov r5, #0x50
_022DD9DC:
mul r1, sb, r5
ldr r2, [r6]
add r0, r2, r1
ldrb r0, [r0, #4]
cmp r0, #0
beq _022DDA20
add r0, r2, #4
add sl, r0, r1
mov r0, sl
mov r1, r8
mov r2, r4
bl ov29_022DC820
mov r0, sl
mov r1, fp
mov r2, r4
bl ov29_022DC820
strb r7, [sl, #0x44]
_022DDA20:
add sb, sb, #1
cmp sb, #0x16
blt _022DD9DC
ldr r0, _022DDA50 ; =ov29_02353518
mov r2, #0
ldr r1, [r0]
str r2, [r1, #0x6e4]
ldr r1, [r0]
ldr r0, [r1]
add r0, r0, #1
str r0, [r1]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022DDA50: .word ov29_02353518
arm_func_end ov29_022DD8B4
arm_func_start ov29_022DDA54
ov29_022DDA54: ; 0x022DDA54
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _022DDB60 ; =ov29_02353518
mov r7, r0
ldr ip, [r4]
mov r6, r1
mov r5, r2
mov r4, r3
cmp ip, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
bl ov29_022DC78C
cmp r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, _022DDB60 ; =ov29_02353518
mov r3, #0
ldr ip, [r0]
mov r0, #0x50
b _022DDAB8
_022DDA98:
mul r2, r3, r0
add r1, ip, r2
ldrb r1, [r1, #4]
cmp r1, #0
addeq r0, ip, #4
addeq r1, r0, r2
beq _022DDAC4
add r3, r3, #1
_022DDAB8:
cmp r3, #0x16
blt _022DDA98
mov r1, #0
_022DDAC4:
cmp r1, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, #1
strb r0, [r1]
str r7, [r1, #4]
strh r6, [r1, #8]
mov r0, #0
str r0, [r1, #0xc]
str r0, [r1, #0x10]
ldrh r3, [r5]
ldr r2, _022DDB64 ; =ov29_02350F88
strh r3, [r1, #0x16]
ldrh r3, [r5, #2]
strh r3, [r1, #0x18]
strb r4, [r1, #0x15]
ldrh r3, [r2, #2]
ldrh r4, [r2]
strh r3, [sp, #2]
mov r3, r3
strh r4, [r1, #0x1e]
strh r3, [r1, #0x20]
ldrh r2, [r1, #0x1e]
strh r4, [sp]
strh r2, [r1, #0x1a]
ldrh r2, [r1, #0x20]
strh r2, [r1, #0x1c]
strh r4, [r1, #0x26]
strh r3, [r1, #0x28]
ldrh r2, [r1, #0x26]
strh r2, [r1, #0x22]
ldrh r2, [r1, #0x28]
strh r2, [r1, #0x24]
str r0, [r1, #0x2c]
str r0, [r1, #0x30]
str r0, [r1, #0x34]
str r0, [r1, #0x38]
str r0, [r1, #0x3c]
str r0, [r1, #0x40]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022DDB60: .word ov29_02353518
_022DDB64: .word ov29_02350F88
arm_func_end ov29_022DDA54
arm_func_start ov29_022DDB68
ov29_022DDB68: ; 0x022DDB68
stmdb sp!, {r3, lr}
ldr r1, _022DDB94 ; =ov29_02353518
ldr r1, [r1]
cmp r1, #0
ldmeqia sp!, {r3, pc}
bl ov29_022DC78C
cmp r0, #0
ldmeqia sp!, {r3, pc}
mov r1, #0x50
bl MemZero
ldmia sp!, {r3, pc}
.align 2, 0
_022DDB94: .word ov29_02353518
arm_func_end ov29_022DDB68
arm_func_start ov29_022DDB98
ov29_022DDB98: ; 0x022DDB98
stmdb sp!, {r4, r5, r6, lr}
ldr r4, _022DDBFC ; =ov29_02353518
mov r6, r1
ldr r1, [r4]
mov r4, r2
mov r5, r3
cmp r1, #0
ldmeqia sp!, {r4, r5, r6, pc}
bl ov29_022DC78C
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldrh r1, [r6]
strh r1, [r0, #0x16]
ldrh r1, [r6, #2]
strh r1, [r0, #0x18]
strb r5, [r0, #0x15]
ldrh r1, [r4]
strh r1, [r0, #0x1a]
ldrh r1, [r4, #2]
strh r1, [r0, #0x1c]
ldrh r1, [r4, #0xc]
strh r1, [r0, #0x1e]
ldrh r1, [r4, #0xe]
strh r1, [r0, #0x20]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022DDBFC: .word ov29_02353518
arm_func_end ov29_022DDB98
arm_func_start ov29_022DDC00
ov29_022DDC00: ; 0x022DDC00
stmdb sp!, {r3, lr}
ldr r0, _022DDC8C ; =0x027E0068
mov r1, #0x2000
bl MemZero
ldr r1, _022DDC8C ; =0x027E0068
ldr r0, _022DDC90 ; =ov29_023735EC
ldr r3, _022DDC94 ; =ov29_02373690
ldr r2, _022DDC98 ; =ov29_023735FC
mov lr, #1
str r1, [r0, #0x10]
_022DDC28:
sub r0, lr, #1
add r0, r0, r0, lsl #1
add r1, lr, #1
add ip, r3, r0, lsl #12
mov r0, r1, lsl #0x10
str ip, [r2, lr, lsl #2]
mov lr, r0, asr #0x10
cmp lr, #4
blt _022DDC28
mov r0, #0
ldr r2, _022DDC9C ; =ov29_0237360C
mov r1, r0
_022DDC58:
add r0, r0, #1
mov r0, r0, lsl #0x10
str r1, [r2]
mov r0, r0, asr #0x10
str r1, [r2, #4]
cmp r0, #4
add r2, r2, #0x20
blt _022DDC58
ldr r0, _022DDC90 ; =ov29_023735EC
str r1, [r0, #0xc]
str r1, [r0, #8]
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022DDC8C: .word 0x027E0068
_022DDC90: .word ov29_023735EC
_022DDC94: .word ov29_02373690
_022DDC98: .word ov29_023735FC
_022DDC9C: .word ov29_0237360C
arm_func_end ov29_022DDC00
arm_func_start ov29_022DDCA0
ov29_022DDCA0: ; 0x022DDCA0
bx lr
arm_func_end ov29_022DDCA0
arm_func_start ov29_022DDCA4
ov29_022DDCA4: ; 0x022DDCA4
stmdb sp!, {r4, r5, r6, lr}
ldr r4, _022DDD40 ; =ov29_023735FC
ldr r6, _022DDD44 ; =ov29_0237360C
ldr r5, [r4, r0, lsl #2]
add r4, r6, r0, lsl #5
stmib r4, {r1, r5}
cmp r0, #0
ldreq r5, _022DDD48 ; =0x00001FFC
ldr ip, _022DDD40 ; =ov29_023735FC
ldrne r5, _022DDD4C ; =0x00002FFC
mov lr, #0xff
str r5, [r4, #0x14]
ldr r5, [ip, r0, lsl #2]
cmp r2, #0
strb lr, [r5]
ldr r6, [ip, r0, lsl #2]
ldr r5, [r4, #0x14]
add r5, r6, r5
strb lr, [r5, #3]
ldr r6, [ip, r0, lsl #2]
ldr r5, [r4, #0x14]
add r5, r6, r5
strb lr, [r5, #2]
ldr ip, [ip, r0, lsl #2]
ldr r0, [r4, #0x14]
add r0, ip, r0
strb lr, [r0, #1]
ldr ip, [r4, #8]
ldr r0, [r4, #0x14]
add r0, ip, r0
str r0, [r4, #0xc]
str r1, [r4, #0x10]
str r2, [r4, #0x18]
str r3, [r4, #0x1c]
beq _022DDD34
blx r2
_022DDD34:
mov r0, #1
str r0, [r4]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022DDD40: .word ov29_023735FC
_022DDD44: .word ov29_0237360C
_022DDD48: .word 0x00001FFC
_022DDD4C: .word 0x00002FFC
arm_func_end ov29_022DDCA4
arm_func_start ov29_022DDD50
ov29_022DDD50: ; 0x022DDD50
stmdb sp!, {r3, lr}
mov r3, r2
movs lr, r0
mov ip, r1
ldmeqia sp!, {r3, pc}
ldr r0, _022DDDA0 ; =ov29_0237360C
mvn r1, #0
ldr r0, [r0]
cmp r0, #0
movne r0, #1
moveq r0, #0
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
rsb r0, r0, #0
cmp r0, r1
ldmeqia sp!, {r3, pc}
mov r1, lr
mov r2, ip
bl ov29_022DDCA4
ldmia sp!, {r3, pc}
.align 2, 0
_022DDDA0: .word ov29_0237360C
arm_func_end ov29_022DDD50
arm_func_start ov29_022DDDA4
ov29_022DDDA4: ; 0x022DDDA4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
movs r4, r0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r7, #0
ldr r6, _022DDDFC ; =ov29_0237360C
mov r5, r7
_022DDDBC:
ldr r0, [r6, #4]
cmp r0, r4
bne _022DDDE0
ldr r0, [r6, #0x1c]
cmp r0, #0
beq _022DDDD8
blx r0
_022DDDD8:
str r5, [r6]
str r5, [r6, #4]
_022DDDE0:
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
cmp r7, #4
add r6, r6, #0x20
blt _022DDDBC
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022DDDFC: .word ov29_0237360C
arm_func_end ov29_022DDDA4
arm_func_start ov29_022DDE00
ov29_022DDE00: ; 0x022DDE00
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, #0
b _022DDE18
_022DDE10:
bl ov29_022DDEF8
add r4, r4, #1
_022DDE18:
cmp r4, r5
blt _022DDE10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_022DDE00
arm_func_start ov29_022DDE24
ov29_022DDE24: ; 0x022DDE24
ldr ip, _022DDE2C ; =ov29_022DDE30
bx ip
.align 2, 0
_022DDE2C: .word ov29_022DDE30
arm_func_end ov29_022DDE24
arm_func_start ov29_022DDE30
ov29_022DDE30: ; 0x022DDE30
stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr}
ldr r0, _022DDEDC ; =ov29_023735F8
mov r1, sp
str r1, [r0]
ldr r1, _022DDEE0 ; =ov29_023735EC
mov r2, #0
str r2, [r1]
ldr r3, _022DDEE4 ; =ov29_023510B8
ldr r4, [r3]
ldr r3, _022DDEE8 ; =ov29_0237360C
_022DDE58:
ldrh r5, [r3]
cmp r5, #1
beq _022DDE7C
cmp r5, #2
beq _022DDE7C
add r2, r2, #1
add r3, r3, #0x20
cmp r2, r4
blt _022DDE58
_022DDE7C:
str r2, [r1]
cmp r2, r4
bge _022DDED8
ldr r4, _022DDEEC ; =ov29_0237368C
str r2, [r4]
ldr r6, _022DDEF0 ; =ov29_023735F4
ldr r7, [r3, #0xc]
str r7, [r6]
ldr r6, _022DDEF4 ; =ov29_023735F0
ldr r7, [r3, #0x10]
str r7, [r6]
cmp r5, #2
bne _022DDEC0
ldr r6, _022DDEF0 ; =ov29_023735F4
ldr sp, [r6]
ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}
_022DDEBC:
b _022DDED8
_022DDEC0:
ldr r6, _022DDEF0 ; =ov29_023735F4
ldr sp, [r6]
ldr r7, _022DDEF4 ; =ov29_023735F0
ldr r2, [r7]
bx r2
_022DDED4:
b _022DDED8
_022DDED8:
ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}
.align 2, 0
_022DDEDC: .word ov29_023735F8
_022DDEE0: .word ov29_023735EC
_022DDEE4: .word ov29_023510B8
_022DDEE8: .word ov29_0237360C
_022DDEEC: .word ov29_0237368C
_022DDEF0: .word ov29_023735F4
_022DDEF4: .word ov29_023735F0
arm_func_end ov29_022DDE30
arm_func_start ov29_022DDEF8
ov29_022DDEF8: ; 0x022DDEF8
stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr}
ldr r0, _022DDFD8 ; =ov29_023735F4
str sp, [r0]
mov r1, #0x20
ldr r3, _022DDFDC ; =ov29_023735EC
ldr r2, [r3]
mul r1, r1, r2
ldr r3, _022DDFE0 ; =ov29_0237360C
add r4, r3, r1
ldrh r5, [r4]
cmp r5, #1
bne _022DDF30
mov r5, #2
str r5, [r4]
_022DDF30:
ldr r5, [r0]
str r5, [r4, #0xc]
ldr r5, _022DDFE4 ; =ov29_023735F0
ldr r5, [r5]
str r5, [r4, #0x10]
mov r3, r4
ldr r1, _022DDFE8 ; =ov29_023510B8
ldr r4, [r1]
_022DDF50:
add r2, r2, #1
add r3, r3, #0x20
cmp r2, r4
bge _022DDF78
ldrh r5, [r3]
cmp r5, #1
beq _022DDF78
cmp r5, #2
beq _022DDF78
b _022DDF50
_022DDF78:
ldr r6, _022DDFDC ; =ov29_023735EC
str r2, [r6]
cmp r2, r4
bge _022DDFCC
ldr r6, _022DDFD8 ; =ov29_023735F4
ldr r7, [r3, #0xc]
str r7, [r6]
ldr r6, _022DDFE4 ; =ov29_023735F0
ldr r7, [r3, #0x10]
str r7, [r6]
cmp r5, #2
bne _022DDFB8
ldr r6, _022DDFD8 ; =ov29_023735F4
ldr sp, [r6]
ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}
_022DDFB4:
b _022DDFCC
_022DDFB8:
ldr r6, _022DDFD8 ; =ov29_023735F4
ldr sp, [r6]
ldr r7, _022DDFE4 ; =ov29_023735F0
ldr r2, [r7]
bx r2
_022DDFCC:
ldr r0, _022DDFEC ; =ov29_023735F8
ldr sp, [r0]
ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}
.align 2, 0
_022DDFD8: .word ov29_023735F4
_022DDFDC: .word ov29_023735EC
_022DDFE0: .word ov29_0237360C
_022DDFE4: .word ov29_023735F0
_022DDFE8: .word ov29_023510B8
_022DDFEC: .word ov29_023735F8
arm_func_end ov29_022DDEF8
arm_func_start ov29_022DDFF0
ov29_022DDFF0: ; 0x022DDFF0
ldr ip, _022DDFF8 ; =sub_020519D0
bx ip
.align 2, 0
_022DDFF8: .word sub_020519D0
arm_func_end ov29_022DDFF0
arm_func_start ov29_022DDFFC
ov29_022DDFFC: ; 0x022DDFFC
stmdb sp!, {r3, lr}
mov r0, #0x44
mov r1, #0
bl MemAlloc
ldr r2, _022DE064 ; =ov29_0235352C
mov r1, #0x44
str r0, [r2]
bl MemZero
ldr r0, _022DE064 ; =ov29_0235352C
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x20
bl ov29_022DE22C
ldr r0, _022DE064 ; =ov29_0235352C
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x2c
bl ov29_022DE22C
mov r0, #0
bl sub_02051ED4
mov r1, r0
ldr r0, _022DE064 ; =ov29_0235352C
mov r2, #0x20
ldr r0, [r0]
bl sub_02063628
ldmia sp!, {r3, pc}
.align 2, 0
_022DE064: .word ov29_0235352C
arm_func_end ov29_022DDFFC
arm_func_start ov29_022DE068
ov29_022DE068: ; 0x022DE068
stmdb sp!, {r3, lr}
ldr r0, _022DE09C ; =ov29_0235352C
ldr r0, [r0]
add r0, r0, #0x20
bl ov29_022DE274
ldr r0, _022DE09C ; =ov29_0235352C
ldr r0, [r0]
add r0, r0, #0x2c
bl ov29_022DE274
ldr r0, _022DE09C ; =ov29_0235352C
ldr r0, [r0]
bl sub_0206367C
ldmia sp!, {r3, pc}
.align 2, 0
_022DE09C: .word ov29_0235352C
arm_func_end ov29_022DE068
arm_func_start ov29_022DE0A0
ov29_022DE0A0: ; 0x022DE0A0
stmdb sp!, {r3, lr}
bl ov29_022DE068
bl sub_02051B44
ldr r0, _022DE0C8 ; =ov29_0235352C
ldr r0, [r0]
bl MemFree
ldr r0, _022DE0C8 ; =ov29_0235352C
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022DE0C8: .word ov29_0235352C
arm_func_end ov29_022DE0A0
arm_func_start ov29_022DE0CC
ov29_022DE0CC: ; 0x022DE0CC
stmdb sp!, {r3, lr}
ldr r0, _022DE0E8 ; =ov29_0235352C
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_02051C24
ldmia sp!, {r3, pc}
.align 2, 0
_022DE0E8: .word ov29_0235352C
arm_func_end ov29_022DE0CC
arm_func_start ov29_022DE0EC
ov29_022DE0EC: ; 0x022DE0EC
stmdb sp!, {r4, lr}
ldr r2, _022DE118 ; =ov29_0235352C
mov r4, r0
ldr r0, [r2]
mov r2, r1
mov r1, r4
bl sub_02063734
ldr r0, _022DE118 ; =ov29_0235352C
ldr r0, [r0]
str r4, [r0, #0x18]
ldmia sp!, {r4, pc}
.align 2, 0
_022DE118: .word ov29_0235352C
arm_func_end ov29_022DE0EC
arm_func_start ov29_022DE11C
ov29_022DE11C: ; 0x022DE11C
ldr r0, _022DE12C ; =ov29_0235352C
ldr ip, _022DE130 ; =sub_02063770
ldr r0, [r0]
bx ip
.align 2, 0
_022DE12C: .word ov29_0235352C
_022DE130: .word sub_02063770
arm_func_end ov29_022DE11C
arm_func_start ov29_022DE134
ov29_022DE134: ; 0x022DE134
stmdb sp!, {r3, lr}
ldr ip, _022DE158 ; =ov29_0235352C
str r3, [sp]
mov r2, r0
mov r3, r1
ldr r0, [ip]
mov r1, #0
bl sub_02063830
ldmia sp!, {r3, pc}
.align 2, 0
_022DE158: .word ov29_0235352C
arm_func_end ov29_022DE134
arm_func_start ov29_022DE15C
ov29_022DE15C: ; 0x022DE15C
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, r0
bl sub_02051DD0
mov r0, #1
mov r1, #0
bl sub_02051DD0
mov r0, #0
mov r1, #1
bl sub_02051DD0
mov r0, #1
mov r1, r0
bl sub_02051DD0
mov r0, #0
mov r1, r0
bl sub_02051E60
mov r0, #1
mov r1, #0
bl sub_02051E60
mov r0, #0
mov r1, #1
bl sub_02051E60
mov r0, #1
mov r1, r0
bl sub_02051E60
mov r0, #0
bl ov29_022DE1E4
mov r0, #1
bl ov29_022DE1E4
mov r0, #0
bl ov29_022DE208
mov r0, #1
bl ov29_022DE208
ldmia sp!, {r3, pc}
arm_func_end ov29_022DE15C
arm_func_start ov29_022DE1E4
ov29_022DE1E4: ; 0x022DE1E4
ldr r2, _022DE200 ; =ov29_0235352C
mov r1, #0xc
ldr r2, [r2]
ldr ip, _022DE204 ; =sub_0200B3D4
mla r1, r0, r1, r2
ldr r0, [r1, #0x24]
bx ip
.align 2, 0
_022DE200: .word ov29_0235352C
_022DE204: .word sub_0200B3D4
arm_func_end ov29_022DE1E4
arm_func_start ov29_022DE208
ov29_022DE208: ; 0x022DE208
ldr r2, _022DE224 ; =ov29_0235352C
mov r1, #0xc
ldr r2, [r2]
ldr ip, _022DE228 ; =sub_0200B330
mla r1, r0, r1, r2
ldr r0, [r1, #0x24]
bx ip
.align 2, 0
_022DE224: .word ov29_0235352C
_022DE228: .word sub_0200B330
arm_func_end ov29_022DE208
arm_func_start ov29_022DE22C
ov29_022DE22C: ; 0x022DE22C
stmdb sp!, {r3, lr}
mov r3, r0
cmp r1, #0
bne _022DE254
ldr r2, _022DE26C ; =0x06005000
add r0, r3, #4
add r1, r3, #8
str r2, [r3]
bl sub_020275C0
ldmia sp!, {r3, pc}
_022DE254:
ldr r2, _022DE270 ; =0x06205000
add r0, r3, #4
add r1, r3, #8
str r2, [r3]
bl sub_020275DC
ldmia sp!, {r3, pc}
.align 2, 0
_022DE26C: .word 0x06005000
_022DE270: .word 0x06205000
arm_func_end ov29_022DE22C
arm_func_start ov29_022DE274
ov29_022DE274: ; 0x022DE274
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
bx lr
arm_func_end ov29_022DE274
arm_func_start ov29_022DE288
ov29_022DE288: ; 0x022DE288
ldr r0, [r0]
bx lr
arm_func_end ov29_022DE288
arm_func_start ov29_022DE290
ov29_022DE290: ; 0x022DE290
strh r1, [r0, #0xa]
mov r2, #0
strb r2, [r0, #0xc]
strb r2, [r0, #0xd]
strb r2, [r0, #0xe]
ldr r1, _022DE2C4 ; =DUNGEON_PTR
strb r2, [r0, #0xf]
ldr r2, [r1]
mov r1, #1
add r2, r2, #0x1e0
str r2, [r0, #0x10]
strb r1, [r0, #8]
bx lr
.align 2, 0
_022DE2C4: .word DUNGEON_PTR
arm_func_end ov29_022DE290
arm_func_start ov29_022DE2C8
ov29_022DE2C8: ; 0x022DE2C8
str r2, [r0, #0x14]
strh r1, [r0, #0xa]
mov r2, #0
strb r2, [r0, #0xc]
strb r2, [r0, #0xd]
strb r2, [r0, #0xe]
ldr r1, _022DE2FC ; =DUNGEON_PTR
strb r2, [r0, #0xf]
ldr r1, [r1]
add r1, r1, #0x1e0
str r1, [r0, #0x10]
strb r2, [r0, #8]
bx lr
.align 2, 0
_022DE2FC: .word DUNGEON_PTR
arm_func_end ov29_022DE2C8
arm_func_start ov29_022DE300
ov29_022DE300: ; 0x022DE300
stmdb sp!, {r3, lr}
mov r0, #0x74
mov r1, #0
bl MemAlloc
ldr r2, _022DE410 ; =ov29_02353530
mov r1, #0x74
str r0, [r2]
bl MemZero
ldr r0, _022DE410 ; =ov29_02353530
mov r2, #0x100
ldr r1, [r0]
strh r2, [r1, #4]
ldr r1, [r0]
strh r2, [r1, #2]
ldr r2, [r0]
ldrsh r1, [r2, #2]
strh r1, [r2, #6]
ldr r2, [r0]
ldrsh r1, [r2, #4]
strh r1, [r2, #8]
ldr r0, [r0]
add r0, r0, #0xc
bl sub_0200A2CC
ldr r1, _022DE410 ; =ov29_02353530
mov r0, #0
ldr r1, [r1]
strb r0, [r1, #0x4c]
strb r0, [r1, #0x4d]
strb r0, [r1, #0x4e]
strb r0, [r1, #0x4f]
bl sub_02051ED4
ldr r2, [r0, #0x14]
ldr r1, _022DE410 ; =ov29_02353530
mov r0, #0
ldr r1, [r1]
str r2, [r1, #0x34]
bl sub_0201BCCC
ldr r2, [r0, #0x14]
ldr r1, _022DE410 ; =ov29_02353530
mov r0, #0
ldr r1, [r1]
str r2, [r1, #0x38]
bl sub_0201BCF4
ldr r3, [r0, #0x14]
ldr r1, _022DE410 ; =ov29_02353530
mov r0, #1
ldr r2, [r1]
mov r1, #0
str r3, [r2, #0x3c]
bl sub_0201BD1C
mov r0, #4
ldr r1, _022DE414 ; =0x0000040A
ldr r2, _022DE410 ; =ov29_02353530
mov r3, #0
ldr r2, [r2]
add r2, r2, #0x40
bl DirectoryFileMngr_OpenDirectoryFile
ldr r0, _022DE410 ; =ov29_02353530
ldr r1, [r0]
add r0, r1, #0x48
ldr r1, [r1, #0x40]
bl HandleSir0Translation
ldr r0, _022DE410 ; =ov29_02353530
mov r1, #0x20
ldr r0, [r0]
add r0, r0, #0x51
bl MemZero
ldmia sp!, {r3, pc}
.align 2, 0
_022DE410: .word ov29_02353530
#ifdef JAPAN
_022DE414: .word 0x000003FE
#else
_022DE414: .word 0x0000040A
#endif
arm_func_end ov29_022DE300
arm_func_start ov29_022DE418
ov29_022DE418: ; 0x022DE418
stmdb sp!, {r3, lr}
ldr r0, _022DE478 ; =ov29_02353530
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
mov r0, #0
bl sub_02051ED4
ldr r1, _022DE478 ; =ov29_02353530
ldr r1, [r1]
ldr r1, [r1, #0x34]
str r1, [r0, #0x14]
mov r0, #0
bl sub_0201BCCC
ldr r1, _022DE478 ; =ov29_02353530
ldr r1, [r1]
ldr r1, [r1, #0x38]
str r1, [r0, #0x14]
mov r0, #0
bl sub_0201BCF4
ldr r1, _022DE478 ; =ov29_02353530
ldr r1, [r1]
ldr r1, [r1, #0x3c]
str r1, [r0, #0x14]
ldmia sp!, {r3, pc}
.align 2, 0
_022DE478: .word ov29_02353530
arm_func_end ov29_022DE418
arm_func_start ov29_022DE47C
ov29_022DE47C: ; 0x022DE47C
ldr r2, _022DE494 ; =ov29_02353530
ldr r2, [r2]
cmp r2, #0
addne r0, r2, r0
strneb r1, [r0, #0x51]
bx lr
.align 2, 0
_022DE494: .word ov29_02353530
arm_func_end ov29_022DE47C
arm_func_start ov29_022DE498
ov29_022DE498: ; 0x022DE498
stmdb sp!, {r3, lr}
ldr r0, _022DE4F8 ; =ov29_02353530
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl ov29_022DE418
ldr r0, _022DE4F8 ; =ov29_02353530
ldr r0, [r0]
add r0, r0, #0x40
bl UnloadFile
mov r0, #0
mov r1, r0
bl sub_0201BD1C
ldr r0, _022DE4F8 ; =ov29_02353530
ldr r0, [r0]
add r0, r0, #0xc
bl sub_0200A2F4
ldr r0, _022DE4F8 ; =ov29_02353530
ldr r0, [r0]
bl MemFree
ldr r0, _022DE4F8 ; =ov29_02353530
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022DE4F8: .word ov29_02353530
arm_func_end ov29_022DE498
arm_func_start ov29_022DE4FC
ov29_022DE4FC: ; 0x022DE4FC
stmdb sp!, {r4, lr}
ldr r1, _022DE55C ; =ov29_02353530
mov r0, #0
ldr r1, [r1]
ldrh r4, [r1, #4]
bl sub_02051ED4
ldr r2, _022DE560 ; =sub_01FF9BA0
mov r1, r4
bl ov29_022DE2C8
mov r0, #0
bl sub_0201BCCC
ldr r1, _022DE55C ; =ov29_02353530
ldr r2, _022DE564 ; =sub_01FF9E14
ldr r1, [r1]
ldrh r1, [r1, #2]
bl ov29_022DE2C8
mov r0, #0
bl sub_0201BCF4
ldr r1, _022DE55C ; =ov29_02353530
ldr r2, _022DE568 ; =sub_01FF9F80
ldr r1, [r1]
ldrh r1, [r1, #2]
bl ov29_022DE2C8
ldmia sp!, {r4, pc}
.align 2, 0
_022DE55C: .word ov29_02353530
_022DE560: .word sub_01FF9BA0
_022DE564: .word sub_01FF9E14
_022DE568: .word sub_01FF9F80
arm_func_end ov29_022DE4FC
arm_func_start ov29_022DE56C
ov29_022DE56C: ; 0x022DE56C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r4, r0
cmp r6, #1
bne _022DE598
mov r0, #0
bl sub_02051ED4
mov r1, r4, lsl #0x10
mov r1, r1, lsr #0x10
bl ov29_022DE290
b _022DE5C0
_022DE598:
mov r0, r4, lsl #0x10
mov r5, r0, lsr #0x10
mov r0, #0
bl sub_0201BCCC
mov r1, r5
bl ov29_022DE290
mov r0, #0
bl sub_0201BCF4
mov r1, r5
bl ov29_022DE290
_022DE5C0:
ldr r0, _022DE5D4 ; =ov29_02353530
ldr r0, [r0]
add r0, r0, r6, lsl #1
strh r4, [r0, #2]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022DE5D4: .word ov29_02353530
arm_func_end ov29_022DE56C
arm_func_start ov29_022DE5D8
ov29_022DE5D8: ; 0x022DE5D8
ldr r2, _022DE5EC ; =ov29_02353530
ldr r2, [r2]
add r1, r2, r1, lsl #1
strh r0, [r1, #2]
bx lr
.align 2, 0
_022DE5EC: .word ov29_02353530
arm_func_end ov29_022DE5D8
arm_func_start ov29_022DE5F0
ov29_022DE5F0: ; 0x022DE5F0
ldr r1, _022DE604 ; =ov29_02353530
ldr r1, [r1]
add r0, r1, r0, lsl #1
ldrsh r0, [r0, #2]
bx lr
.align 2, 0
_022DE604: .word ov29_02353530
arm_func_end ov29_022DE5F0
arm_func_start ov29_022DE608
ov29_022DE608: ; 0x022DE608
ldr r0, _022DE61C ; =ov29_02353530
mov r1, #1
ldr r0, [r0]
strb r1, [r0, #0x50]
bx lr
.align 2, 0
_022DE61C: .word ov29_02353530
arm_func_end ov29_022DE608
arm_func_start GetWeatherColorTable
GetWeatherColorTable: ; 0x022DE620
ldr r1, _022DE634 ; =ov29_02353530
ldr r1, [r1]
ldr r1, [r1, #0x48]
add r0, r1, r0, lsl #10
bx lr
.align 2, 0
_022DE634: .word ov29_02353530
arm_func_end GetWeatherColorTable
arm_func_start ov29_022DE638
ov29_022DE638: ; 0x022DE638
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _022DE844 ; =DUNGEON_PTR
mov r5, r0
ldr r0, [r1]
mov r4, #0
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
bl IsBackgroundTileset
cmp r0, #0
mov r1, r4
bne _022DE754
ldr r0, _022DE848 ; =ov29_023510BC
mov r2, r5
mov r3, r1
str r1, [sp]
bl sub_02051EF0
mov r0, r4
bl sub_02051D68
mov r3, #1
mov r1, r4
str r3, [sp]
ldr r0, _022DE848 ; =ov29_023510BC
mov r2, r5
mov r3, r1
bl sub_02051EF0
mov r0, #1
bl sub_02051D68
bl GetDefaultTileTextureId
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r7, #0
add sb, r0, #4
add r4, r4, #1
mov r8, #1
mov r6, r7
_022DE6C4:
mov r1, r4, lsl #0x10
mov r0, sb
mov r2, r5
mov r3, r7
mov r1, r1, asr #0x10
str r7, [sp]
bl sub_02051EF0
mov r0, r6
bl sub_02051D68
add r8, r8, #1
cmp r8, #0xd0
add sb, sb, #4
add r4, r4, #1
blt _022DE6C4
mov sb, #0
ldr r8, _022DE84C ; =ov29_0237C6D4
mov r7, #0xd0
mov r6, sb
mov r4, sb
_022DE710:
mov r1, r7, lsl #0x10
mov r0, r8
mov r2, r5
mov r3, r6
mov r1, r1, asr #0x10
str r6, [sp]
bl sub_02051EF0
mov r0, r4
bl sub_02051D68
add r7, r7, #1
cmp r7, #0xe0
add sb, sb, #1
addeq r7, r7, #0x10
add r8, r8, #4
cmp sb, #0x20
blt _022DE710
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_022DE754:
ldr r0, _022DE848 ; =ov29_023510BC
mov r2, r5
mov r3, r1
str r1, [sp]
bl sub_02051EF0
mov r0, r4
bl sub_02051D68
mov r3, #1
mov r1, r4
str r3, [sp]
ldr r0, _022DE848 ; =ov29_023510BC
mov r2, r5
mov r3, r1
bl sub_02051EF0
mov r0, #1
bl sub_02051D68
bl GetDefaultTileTextureId
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r7, #0
add r8, r0, #4
add r4, r4, #1
mov sb, #1
mov r6, r7
_022DE7B4:
mov r1, r4, lsl #0x10
mov r0, r8
mov r2, r5
mov r3, r7
mov r1, r1, asr #0x10
str r7, [sp]
bl sub_02051EF0
mov r0, r6
bl sub_02051D68
add sb, sb, #1
cmp sb, #0xe0
add r8, r8, #4
add r4, r4, #1
blt _022DE7B4
ldr r8, _022DE850 ; =ov29_0237C714
mov r7, #0xf0
cmp r8, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov sb, #0
mov r6, sb
mov r4, sb
_022DE808:
mov r1, r7, lsl #0x10
mov r0, r8
mov r2, r5
mov r3, r6
mov r1, r1, asr #0x10
str r6, [sp]
bl sub_02051EF0
mov r0, r4
bl sub_02051D68
add sb, sb, #1
cmp sb, #0x10
add r8, r8, #4
add r7, r7, #1
blt _022DE808
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022DE844: .word DUNGEON_PTR
_022DE848: .word ov29_023510BC
_022DE84C: .word ov29_0237C6D4
_022DE850: .word ov29_0237C714
arm_func_end ov29_022DE638
arm_func_start ov29_022DE854
ov29_022DE854: ; 0x022DE854
stmdb sp!, {r3, lr}
mov r0, #0
bl sub_02051ED4
bl sub_0200A544
ldmia sp!, {r3, pc}
arm_func_end ov29_022DE854
arm_func_start ov29_022DE868
ov29_022DE868: ; 0x022DE868
stmdb sp!, {r3, lr}
ldr r0, _022DE900 ; =ov29_02353530
ldr r2, [r0]
cmp r2, #0
ldmeqia sp!, {r3, pc}
ldrb r0, [r2, #0x50]
cmp r0, #0
ldreqsh r1, [r2, #4]
ldreqsh r0, [r2, #8]
cmpeq r1, r0
beq _022DE8B0
ldrsh r0, [r2, #4]
mov r1, #1
bl ov29_022DE56C
ldr r0, _022DE900 ; =ov29_02353530
ldr r1, [r0]
ldrsh r0, [r1, #4]
strh r0, [r1, #8]
_022DE8B0:
ldr r0, _022DE900 ; =ov29_02353530
ldr r2, [r0]
ldrb r0, [r2, #0x50]
cmp r0, #0
ldreqsh r1, [r2, #2]
ldreqsh r0, [r2, #6]
cmpeq r1, r0
beq _022DE8EC
ldrsh r0, [r2, #2]
mov r1, #0
bl ov29_022DE56C
ldr r0, _022DE900 ; =ov29_02353530
ldr r1, [r0]
ldrsh r0, [r1, #2]
strh r0, [r1, #6]
_022DE8EC:
ldr r0, _022DE900 ; =ov29_02353530
mov r1, #0
ldr r0, [r0]
strb r1, [r0, #0x50]
ldmia sp!, {r3, pc}
.align 2, 0
_022DE900: .word ov29_02353530
arm_func_end ov29_022DE868
arm_func_start ov29_022DE904
ov29_022DE904: ; 0x022DE904
stmdb sp!, {r3, lr}
mov r0, #0x20
mov r1, #0
bl MemAlloc
ldr r2, _022DE92C ; =ov29_02353534
mov r1, #0x20
str r0, [r2]
bl MemZero
bl ov29_022DEA34
ldmia sp!, {r3, pc}
.align 2, 0
_022DE92C: .word ov29_02353534
arm_func_end ov29_022DE904
arm_func_start ov29_022DE930
ov29_022DE930: ; 0x022DE930
stmdb sp!, {r3, lr}
ldr r0, _022DE950 ; =ov29_02353534
ldr r0, [r0]
bl MemFree
ldr r0, _022DE950 ; =ov29_02353534
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022DE950: .word ov29_02353534
arm_func_end ov29_022DE930
arm_func_start ov29_022DE954
ov29_022DE954: ; 0x022DE954
cmp r0, #0x10
movge r0, #1
movlt r0, #0
and r0, r0, #0xff
bx lr
arm_func_end ov29_022DE954
arm_func_start ov29_022DE968
ov29_022DE968: ; 0x022DE968
cmp r0, #0
beq _022DE984
cmp r0, #1
beq _022DE990
cmp r0, #2
beq _022DE99C
b _022DE9A8
_022DE984:
mov r0, #0
mov r3, #1
b _022DE9B0
_022DE990:
mov r0, #0x1b
mov r3, #4
b _022DE9B0
_022DE99C:
mov r0, #1
mov r3, #0x14
b _022DE9B0
_022DE9A8:
mov r3, #0
mov r0, r3
_022DE9B0:
ldr r1, _022DE9F4 ; =ov29_02353534
mov r2, #0
ldr ip, [r1]
b _022DE9E4
_022DE9C0:
ldrb r1, [ip, r0]
cmp r1, #0
bxeq lr
add r2, r2, #1
add r1, r0, #1
mov r0, r2, lsl #0x10
mov r1, r1, lsl #0x10
mov r2, r0, asr #0x10
mov r0, r1, asr #0x10
_022DE9E4:
cmp r2, r3
blt _022DE9C0
mvn r0, #0
bx lr
.align 2, 0
_022DE9F4: .word ov29_02353534
arm_func_end ov29_022DE968
arm_func_start ov29_022DE9F8
ov29_022DE9F8: ; 0x022DE9F8
ldr r1, _022DEA0C ; =ov29_02353534
mov r2, #1
ldr r1, [r1]
strb r2, [r1, r0]
bx lr
.align 2, 0
_022DEA0C: .word ov29_02353534
arm_func_end ov29_022DE9F8
arm_func_start ov29_022DEA10
ov29_022DEA10: ; 0x022DEA10
ldr ip, _022DEA18 ; =ov29_022DE968
bx ip
.align 2, 0
_022DEA18: .word ov29_022DE968
arm_func_end ov29_022DEA10
arm_func_start ov29_022DEA1C
ov29_022DEA1C: ; 0x022DEA1C
ldr r1, _022DEA30 ; =ov29_02353534
mov r2, #0
ldr r1, [r1]
strb r2, [r1, r0]
bx lr
.align 2, 0
_022DEA30: .word ov29_02353534
arm_func_end ov29_022DEA1C
arm_func_start ov29_022DEA34
ov29_022DEA34: ; 0x022DEA34
mov r3, #0
ldr r0, _022DEA58 ; =ov29_02353534
mov r2, r3
_022DEA40:
ldr r1, [r0]
strb r2, [r1, r3]
add r3, r3, #1
cmp r3, #0x20
blt _022DEA40
bx lr
.align 2, 0
_022DEA58: .word ov29_02353534
arm_func_end ov29_022DEA34