pmd-sky/asm/overlay_10_022BCC7C.s
2025-08-06 20:30:44 -04:00

6996 lines
128 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_10_022BCC7C.inc"
.text
arm_func_start ov10_022BCC7C
ov10_022BCC7C: ; 0x022BCC7C
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
str r1, [r0, #0x19c]
mov r1, #0
strb r1, [r0, #0x1a0]
strb r1, [r0, #0x1a1]
ldr r1, [r0, #0xf8]
bic r1, r1, #0x800000
str r1, [r0, #0xf8]
add r0, r0, #4
bl sub_020333FC
ldmia sp!, {r3, pc}
arm_func_end ov10_022BCC7C
arm_func_start ov10_022BCCB0
ov10_022BCCB0: ; 0x022BCCB0
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r1, [r0, #0x19c]
cmp r1, #3
moveq r1, #2
streq r1, [r0, #0x19c]
ldmia sp!, {r3, pc}
arm_func_end ov10_022BCCB0
arm_func_start SetInventoryMenuState0
SetInventoryMenuState0: ; 0x022BCCCC
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #0
str r1, [r0, #0x19c]
ldmia sp!, {r3, pc}
arm_func_end SetInventoryMenuState0
arm_func_start SetInventoryMenuState6
SetInventoryMenuState6: ; 0x022BCCE0
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #6
str r1, [r0, #0x19c]
ldmia sp!, {r3, pc}
arm_func_end SetInventoryMenuState6
arm_func_start CloseInventoryMenu
CloseInventoryMenu: ; 0x022BCCF4
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseInventoryMenu
arm_func_start ov10_022BCD10
ov10_022BCD10: ; 0x022BCD10
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x19c]
cmp r0, #6
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #3
cmpne r0, #8
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r2, #1
strb r2, [r4, #0x1a0]
mov r0, r5
sub r1, r2, #6
strb r2, [r4, #0x1a1]
bl sub_0202830C
mov r0, #6
str r0, [r4, #0x19c]
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov10_022BCD10
arm_func_start IsInventoryMenuActive
IsInventoryMenuActive: ; 0x022BCD68
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #7
cmpne r0, #8
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsInventoryMenuActive
arm_func_start CheckInventoryMenuField0x1A0
CheckInventoryMenuField0x1A0: ; 0x022BCD88
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #0x1a0]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end CheckInventoryMenuField0x1A0
arm_func_start ov10_022BCDA8
ov10_022BCDA8: ; 0x022BCDA8
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl sub_02033064
ldmia sp!, {r3, pc}
arm_func_end ov10_022BCDA8
arm_func_start ov10_022BCDBC
ov10_022BCDBC: ; 0x022BCDBC
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a0]
cmp r1, #0
beq _022BCDEC
ldrb r1, [r0, #0x1a1]
cmp r1, #0
mvnne r0, #0
ldmneia sp!, {r3, pc}
add r0, r0, #4
bl sub_02033064
ldmia sp!, {r3, pc}
_022BCDEC:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end ov10_022BCDBC
arm_func_start ov10_022BCDF4
ov10_022BCDF4: ; 0x022BCDF4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
mov r0, #1
mov r1, #0
strb r0, [r4, #0x1a0]
mov r0, r5
strb r1, [r4, #0x1a1]
sub r1, r1, #4
bl sub_0202830C
ldr r0, [r4, #0xf8]
tst r0, #0x400000
beq _022BCE38
mov r0, r5
add r1, r4, #4
bl sub_02028980
_022BCE38:
mov r0, #5
str r0, [r4, #0x19c]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov10_022BCDF4
arm_func_start ov10_022BCE44
ov10_022BCE44: ; 0x022BCE44
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl sub_02033414
ldmia sp!, {r3, pc}
arm_func_end ov10_022BCE44
arm_func_start PopInventoryMenuField0x1A3
PopInventoryMenuField0x1A3: ; 0x022BCE58
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r2, [r0, #0x1a3]
mov r1, #0
strb r1, [r0, #0x1a3]
mov r0, r2
ldmia sp!, {r3, pc}
arm_func_end PopInventoryMenuField0x1A3
arm_func_start UpdateInventoryMenu
UpdateInventoryMenu: ; 0x022BCE74
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x30
mov r8, r0
ldr r4, [r8, #0xc]
ldr r0, [r4, #0xf8]
tst r0, #0x2000
movne r1, #1
moveq r1, #0
ldrsb r0, [r8, #0x10]
and r5, r1, #0xff
bl GetWindowContents
add r0, r0, #4
bl sub_02033414
cmp r0, #0
beq _022BCEC8
ldr r0, [r4, #0xf8]
bic r0, r0, #0x2000
str r0, [r4, #0xf8]
ldr r0, [r4, #0x14]
bic r0, r0, #0x2000
str r0, [r4, #0x14]
_022BCEC8:
ldr r0, [r4, #0x19c]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _022BD200
_022BCED8: ; jump table
b _022BCEF4 ; case 0
b _022BCF0C ; case 1
b _022BCF34 ; case 2
b _022BCF8C ; case 3
b _022BD170 ; case 4
b _022BD190 ; case 5
b _022BD1D4 ; case 6
_022BCEF4:
ldrsb r0, [r8, #0x10]
bl sub_0202810C
cmp r0, #0
beq _022BD200
mov r0, #2
str r0, [r4, #0x19c]
_022BCF0C:
ldr r0, [r4, #0x19c]
cmp r0, #1
bne _022BCF34
ldrb r0, [r8, #8]
bl sub_020287C4
ldrsb r0, [r8, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0x19c]
b _022BD200
_022BCF34:
mov r0, r8
bl ov10_022BD22C
ldr r0, [r4, #0xf8]
tst r0, #0x800000
beq _022BCF6C
mov r0, #8
str r0, [r4, #0x19c]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
sub r0, r0, #4
str r0, [r8, #0xb8]
b _022BD200
_022BCF6C:
mov r1, #3
mov r0, #0
str r1, [r4, #0x19c]
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
sub r0, r0, #1
str r0, [r8, #0xb8]
b _022BD200
_022BCF8C:
ldrsb r0, [r8, #0x10]
bl GetWindowContents
add r0, r0, #4
bl sub_02033414
mov r7, r0
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02032BB8
ldr r1, [sp, #8]
mov r6, r0
cmp r1, #0
bne _022BD010
ldr r0, [r4, #0xf8]
tst r0, #1
beq _022BD010
mov r3, #0
ldr r2, _022BD228 ; =0x00000408
add r1, sp, #0xc
str r3, [sp]
mov ip, #1
add r0, r4, #4
str ip, [sp, #4]
bl sub_02032E0C
movs r1, r0
bmi _022BD010
add r0, r4, #4
bl sub_020330EC
ldr r0, [sp, #8]
mov r6, #1
orr r0, r0, #1
str r0, [sp, #8]
_022BD010:
ldr r0, [sp, #8]
cmp r0, #0
bne _022BD030
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033F30
orr r6, r6, r0
_022BD030:
add r0, r4, #4
bl sub_02033064
mov r2, r0
ldr r1, [sp, #8]
add r0, r4, #4
mov r3, #0
bl sub_02032F5C
orrs r0, r6, r0
beq _022BD05C
mov r0, r8
bl ov10_022BD22C
_022BD05C:
ldr r0, [sp, #8]
tst r0, #1
beq _022BD0C4
add r0, r4, #4
bl sub_02032FD8
cmp r0, #0
beq _022BD0B4
ldr r0, [r4, #0xf8]
tst r0, #0x80000000
bne _022BD090
add r0, r4, #4
mov r1, #0
bl sub_020333D8
_022BD090:
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
sub r0, r0, #4
str r0, [r8, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
b _022BD138
_022BD0B4:
add r0, r4, #4
mov r1, #2
bl sub_020333D8
b _022BD138
_022BD0C4:
tst r0, #2
beq _022BD0F8
add r0, r4, #4
mov r1, #1
bl sub_020333D8
mov r0, #1
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
sub r0, r0, #6
str r0, [r8, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
b _022BD138
_022BD0F8:
tst r0, #0x1000
beq _022BD138
ldr r0, [r4, #0xf8]
tst r0, #0x2000
beq _022BD138
add r0, r4, #4
mov r1, #5
bl sub_020333D8
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
sub r0, r0, #4
str r0, [r8, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
_022BD138:
ldrsb r0, [r8, #0x10]
add r1, r4, #4
bl sub_02028980
cmp r5, #0
beq _022BD200
ldrsb r0, [r8, #0x10]
bl GetWindowContents
add r0, r0, #4
bl sub_02033414
cmp r7, r0
beq _022BD200
ldrsb r0, [r8, #0x10]
bl ov10_022BCCB0
b _022BD200
_022BD170:
add r0, r4, #4
bl sub_02032DB0
cmp r0, #0
moveq r0, #1
streqb r0, [r4, #0x1a3]
moveq r0, #3
streq r0, [r4, #0x19c]
b _022BD200
_022BD190:
add r0, r4, #4
bl sub_02032DB0
cmp r0, #0
bne _022BD200
ldrb r0, [r4, #0x1a1]
cmp r0, #0
bne _022BD1CC
ldr r0, [r4, #0xf8]
tst r0, #0x400000
beq _022BD1CC
mov r0, r8
bl ov10_022BD22C
mov r0, #8
str r0, [r4, #0x19c]
b _022BD200
_022BD1CC:
mov r0, #6
str r0, [r4, #0x19c]
_022BD1D4:
ldrsb r0, [r8, #0x10]
bl sub_0202812C
cmp r0, #0
beq _022BD200
ldrb r0, [r4, #0x1a1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r8, #0xb8]
mov r0, #7
str r0, [r4, #0x19c]
_022BD200:
cmp r5, #0
beq _022BD220
ldr r0, [r4, #0xf8]
orr r0, r0, #0x2000
str r0, [r4, #0xf8]
ldr r0, [r4, #0x14]
orr r0, r0, #0x2000
str r0, [r4, #0x14]
_022BD220:
add sp, sp, #0x30
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_022BD228: .word 0x00000408
arm_func_end UpdateInventoryMenu
arm_func_start ov10_022BD22C
ov10_022BD22C: ; 0x022BD22C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
sub sp, sp, #0x400
mov sl, r0
ldr r4, [sl, #0xc]
add r0, r4, #4
bl sub_02033054
ldr r1, [r4, #0xf8]
mov r5, r0
tst r1, #0x200
ldrne r0, [r4, #0x15c]
ldr r6, [r4, #0xc4]
addne r8, r0, r5
ldrsb r0, [sl, #0x10]
moveq r8, #0
bl sub_02027B1C
add r0, r4, #4
bl sub_02033414
cmp r0, #0
beq _022BD2C4
ldr r2, [r4, #0x198]
ldr r3, [r4, #0x194]
add r0, sp, #4
mvn r1, #0
blx r3
movs r5, r0
beq _022BD354
add r0, r4, #4
mov r1, #0
bl sub_02033350
mov r1, #0x44
str r1, [sp]
mov r2, r0
ldrsb r0, [sl, #0x10]
mov r3, r5
mov r1, #0xe
bl sub_020263C8
b _022BD354
_022BD2C4:
cmp r6, #0
mov r7, #0
ble _022BD354
b _022BD34C
_022BD2D4:
ldr r2, [r4, #0x198]
ldr r3, [r4, #0x194]
add r0, sp, #4
mov r1, r5
blx r3
mov fp, r0
mov r1, #0
cmp r8, #0
beq _022BD308
ldrb r0, [r8]
add r8, r8, #1
tst r0, #2
movne r1, #1
_022BD308:
cmp fp, #0
beq _022BD344
cmp r1, #0
movne sb, #0x42
moveq sb, #0x44
add r0, r4, #4
mov r1, r7
bl sub_02033350
and r1, sb, #0xff
str r1, [sp]
mov r2, r0
ldrsb r0, [sl, #0x10]
mov r3, fp
mov r1, #7
bl sub_020263C8
_022BD344:
add r7, r7, #1
add r5, r5, #1
_022BD34C:
cmp r7, r6
blt _022BD2D4
_022BD354:
ldrsb r1, [sl, #0x10]
add r0, r4, #4
bl sub_0202A0B0
ldrsb r0, [sl, #0x10]
bl UpdateWindow
add sp, sp, #4
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov10_022BD22C
arm_func_start IsInventoryMenuState3
IsInventoryMenuState3: ; 0x022BD374
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsInventoryMenuState3
arm_func_start ov10_022BD394
ov10_022BD394: ; 0x022BD394
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x54
mov r1, r1, lsl #0x10
mov r4, r0
mov r0, r1, asr #0x10
mov r7, r2
mov r6, r3
bl GetItemAtIdx
mov r5, r0
ldrb r0, [r5]
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _022BD428
mov ip, #1
ldr r2, _022BD43C ; =ov10_022C43A4
add r0, sp, #4
mov r1, r5
mov r3, r7
str ip, [sp]
bl sub_0200D310
ldrb r0, [r5, #1]
cmp r0, #0
ldrneb r2, [r6, r0]
cmpne r2, #0
beq _022BD414
ldr r1, _022BD440 ; =ov10_022C43F0
add r3, sp, #4
mov r0, r4
bl SprintfStatic__022BD44C
b _022BD434
_022BD414:
ldr r1, _022BD444 ; =ov10_022C43F8
add r2, sp, #4
mov r0, r4
bl SprintfStatic__022BD44C
b _022BD434
_022BD428:
ldr r1, _022BD448 ; =ov10_022C4404
mov r0, r4
bl strcpy
_022BD434:
add sp, sp, #0x54
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_022BD43C: .word ov10_022C43A4
_022BD440: .word ov10_022C43F0
_022BD444: .word ov10_022C43F8
_022BD448: .word ov10_022C4404
arm_func_end ov10_022BD394
arm_func_start SprintfStatic__022BD44C
SprintfStatic__022BD44C: ; 0x022BD44C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__022BD44C
arm_func_start ov10_022BD474
ov10_022BD474: ; 0x022BD474
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0xa8
#ifdef JAPAN
ldr lr, _022BECF4 ; =0x00001D38
#endif
mov ip, #0
mov r7, #0x10
mov r6, #0xd
#ifndef JAPAN
mov lr, #0x8e0
#endif
mov r5, r0
mov r4, r1
str r7, [sp, #0x1c]
str r2, [sp, #0x10]
str r3, [sp, #0x70]
str r6, [sp, #0x14]
strh lr, [sp, #0x18]
str ip, [sp, #0x84]
str ip, [sp, #0x8c]
bl GetCurrentBagCapacity
cmp r0, #2
bge _022BD508
cmp r4, #0
movne r5, #0
ldr r2, [sp, #0xc4]
moveq r5, #0x2000
cmp r4, #0
ldrne r0, _022BD554 ; =ov10_022C43C0
ldr r1, _022BD558 ; =0x00481C33
str r2, [sp]
mov r2, #1
str r2, [sp, #4]
str r2, [sp, #8]
ldrb r4, [sp, #0xc8]
ldreq r0, _022BD55C ; =ov10_022C43D0
ldr r3, [sp, #0xc0]
add r2, sp, #0x10
orr r1, r5, r1
str r4, [sp, #0xc]
bl CreateInventoryMenu
b _022BD54C
_022BD508:
cmp r4, #0
movne r6, #0
ldr r2, [sp, #0xc4]
moveq r6, #0x2000
cmp r4, #0
ldrne r0, _022BD560 ; =ov10_022C43E0
ldr r1, _022BD564 ; =0x00489E33
stmia sp, {r2, r5}
mov r2, #8
str r2, [sp, #8]
ldrb r4, [sp, #0xc8]
ldreq r0, _022BD568 ; =ov10_022C43B0
ldr r3, [sp, #0xc0]
add r2, sp, #0x10
orr r1, r6, r1
str r4, [sp, #0xc]
bl CreateInventoryMenu
_022BD54C:
add sp, sp, #0xa8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
#ifdef JAPAN
_022BECF4: .word 0x00001D38
#endif
_022BD554: .word ov10_022C43C0
_022BD558: .word 0x00481C33
_022BD55C: .word ov10_022C43D0
_022BD560: .word ov10_022C43E0
_022BD564: .word 0x00489E33
_022BD568: .word ov10_022C43B0
arm_func_end ov10_022BD474
arm_func_start ov10_022BD56C
ov10_022BD56C: ; 0x022BD56C
stmdb sp!, {r3, lr}
ldr r0, _022BD5A8 ; =ov10_022DC220
ldr r0, [r0]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #0xa4
mov r1, #8
bl MemAlloc
ldr r1, _022BD5A8 ; =ov10_022DC220
mov r2, #0
str r0, [r1]
str r2, [r0]
ldr r0, [r1]
str r2, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_022BD5A8: .word ov10_022DC220
arm_func_end ov10_022BD56C
arm_func_start ov10_022BD5AC
ov10_022BD5AC: ; 0x022BD5AC
stmdb sp!, {r3, lr}
ldr r0, _022BD710 ; =ov10_022DC220
ldr r1, [r0]
ldr r0, [r1]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _022BD708
_022BD5C8: ; jump table
b _022BD67C ; case 0
b _022BD6AC ; case 1
b _022BD6C8 ; case 2
b _022BD700 ; case 3
b _022BD700 ; case 4
_022BD5DC:
ldr r0, _022BD714 ; =TEAM_MEMBER_TABLE_PTR
mov r1, #0x68
ldr r0, [r0]
ldr r2, _022BD710 ; =ov10_022DC220
add r0, r0, #0x9000
ldr r0, [r0, #0x84c]
mla r0, r3, r1, r0
str r0, [ip, #0x4c]
ldr r0, [r2]
ldr r0, [r0, #0x4c]
ldrsh r0, [r0, #8]
bl sub_020562B8
cmp r0, #0
beq _022BD668
ldr r0, _022BD710 ; =ov10_022DC220
ldr r0, [r0]
ldr r1, [r0, #0x4c]
add r0, r0, #8
bl sub_020534BC
ldr r0, _022BD710 ; =ov10_022DC220
mov r2, #0
ldr r1, [r0]
strb r2, [r1, #0xe]
ldr r1, [r0]
strb r2, [r1, #0xf]
ldr r0, [r0]
add r0, r0, #8
bl sub_02055CCC
mvn r1, #0
cmp r0, r1
ldreq r0, _022BD710 ; =ov10_022DC220
moveq r1, #1
ldreq r0, [r0]
streq r1, [r0]
beq _022BD690
_022BD668:
ldr r0, _022BD710 ; =ov10_022DC220
ldr r1, [r0]
ldr r0, [r1, #4]
add r0, r0, #1
str r0, [r1, #4]
_022BD67C:
ldr r0, _022BD710 ; =ov10_022DC220
ldr ip, [r0]
ldr r3, [ip, #4]
cmp r3, #4
blt _022BD5DC
_022BD690:
ldr r0, _022BD710 ; =ov10_022DC220
ldr r1, [r0]
ldr r0, [r1, #4]
cmp r0, #4
movge r0, #3
strge r0, [r1]
b _022BD708
_022BD6AC:
add r0, r1, #8
bl ov11_023061CC
ldr r0, _022BD710 ; =ov10_022DC220
mov r1, #2
ldr r0, [r0]
str r1, [r0]
b _022BD708
_022BD6C8:
bl ov11_02306C9C
cmp r0, #3
cmpne r0, #4
bne _022BD708
bl ov11_02306C64
ldr r0, _022BD710 ; =ov10_022DC220
mov r1, #0
ldr r3, [r0]
ldr r2, [r3, #4]
add r2, r2, #1
str r2, [r3, #4]
ldr r0, [r0]
str r1, [r0]
b _022BD708
_022BD700:
mov r0, #2
ldmia sp!, {r3, pc}
_022BD708:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022BD710: .word ov10_022DC220
_022BD714: .word TEAM_MEMBER_TABLE_PTR
arm_func_end ov10_022BD5AC
arm_func_start ov10_022BD718
ov10_022BD718: ; 0x022BD718
stmdb sp!, {r3, lr}
ldr r0, _022BD740 ; =ov10_022DC220
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _022BD740 ; =ov10_022DC220
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022BD740: .word ov10_022DC220
arm_func_end ov10_022BD718
; https://decomp.me/scratch/bBFFj
arm_func_start ov10_022BD744
ov10_022BD744: ; 0x022BD744
ldr r0, _022BD758 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
bx lr
.align 2, 0
_022BD758: .word ov10_022DC1C0
arm_func_end ov10_022BD744
arm_func_start ov10_022BD75C
ov10_022BD75C: ; 0x022BD75C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x18
cmp r1, #1
bne _022BD7A0
ldr r1, _022BD824 ; =WAN_TABLE
ldr r3, _022BD828 ; =_020AFC4C
ldr r4, [r1]
mov r1, #0x38
smlabb r0, r0, r1, r4
ldr r0, [r0, #0x30]
mov r2, r2, lsl #0x10
ldr r1, [r0, #4]
ldr r0, [r3]
ldr r1, [r1, #4]
mov r2, r2, lsr #0x10
bl sub_0201B43C
b _022BD81C
_022BD7A0:
cmp r1, #0
bne _022BD81C
ldr r2, _022BD824 ; =WAN_TABLE
mov r1, #0x38
ldr r2, [r2]
ldr r4, _022BD828 ; =_020AFC4C
smlabb r0, r0, r1, r2
ldr r0, [r0, #0x30]
mov sl, #0
ldr r0, [r0, #4]
mov r8, #0x10
ldr sb, [r0, #4]
mov r7, #0xff
add r6, sp, #8
mov r5, #1
_022BD7DC:
str r8, [sp]
str r7, [sp, #4]
ldr r1, [sb]
mov r0, r6
mov r2, r5
mov r3, r8
add r1, r1, sl, lsl #6
bl sub_0201F598
mov r2, sl, lsl #0x10
ldr r0, [r4]
mov r1, r6
mov r2, r2, lsr #0x10
bl sub_0201B43C
add sl, sl, #1
cmp sl, #0xd
blt _022BD7DC
_022BD81C:
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_022BD824: .word WAN_TABLE
_022BD828: .word _020AFC4C
arm_func_end ov10_022BD75C
arm_func_start ov10_022BD82C
ov10_022BD82C: ; 0x022BD82C
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r1, _022BDA78 ; =ov10_022DC1C0
mov r4, r0
ldr r0, [r1]
cmp r0, #0
beq _022BD84C
bl ov10_022BDC0C
_022BD84C:
ldr r0, _022BDA7C ; =0x000027A4
mov r1, #0xb
bl MemAlloc
ldr r2, _022BDA78 ; =ov10_022DC1C0
ldr r1, _022BDA7C ; =0x000027A4
str r0, [r2]
bl MemZero
bl sub_0206395C
ldr r1, _022BDA78 ; =ov10_022DC1C0
mov r2, #0
ldr r0, [r1]
add r0, r0, #0x2000
str r4, [r0, #0x784]
ldr r1, [r1]
mvn r0, #0
_022BD888:
add r2, r2, #1
str r0, [r1, #0xc]
cmp r2, #0x20
add r1, r1, #0x13c
blt _022BD888
ldr r2, _022BDA78 ; =ov10_022DC1C0
ldr r3, [sp, #0x10]
ldr r0, [r2]
ldr r1, [sp, #0x14]
add r0, r0, #0x2000
str r3, [r0, #0x78c]
ldr r0, [r2]
mov r3, #0
add r0, r0, #0x2000
str r1, [r0, #0x794]
ldr r1, [r2]
mov r0, r4
add r1, r1, #0x2000
strb r3, [r1, #0x79e]
ldr r1, [r2]
add r1, r1, #0x2000
strb r3, [r1, #0x79f]
ldr r1, [r2]
add r1, r1, #0x2000
strb r3, [r1, #0x7a0]
bl ov10_022BFF30
bl ov10_022C04D8
ldr r0, _022BDA78 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
cmp r0, #0
beq _022BD9D0
cmp r0, #1
bne _022BDA70
mov r3, #0
ldr r0, _022BDA80 ; =WAN_TABLE
str r3, [sp]
ldr r0, [r0]
mov r1, #3
mov r2, #0x124
bl LoadWanTableEntryFromPack
mov r1, #0
mov r2, r1
mov r4, r0
bl ov10_022BD75C
ldr r0, _022BDA80 ; =WAN_TABLE
mov r1, r4
ldr r0, [r0]
bl DeleteWanTableEntryVeneer
mov r3, #0
ldr r0, _022BDA80 ; =WAN_TABLE
str r3, [sp]
ldr r0, [r0]
mov r1, #3
mov r2, #1
bl LoadWanTableEntryFromPack
mov r4, r0
mov r2, #0
str r2, [sp]
str r2, [sp, #4]
ldr r1, _022BDA78 ; =ov10_022DC1C0
mov r3, #1
ldr r1, [r1]
add r1, r1, #0x2000
ldr r1, [r1, #0x78c]
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0201D9C8
mov r0, r4
mov r1, #1
ldrsh r2, [sp, #0x18]
bl ov10_022BD75C
ldr r1, _022BDA78 ; =ov10_022DC1C0
ldrsh r2, [sp, #0x18]
ldr r0, [r1]
add r0, r0, #0x2700
strh r4, [r0, #0x88]
ldr r0, [r1]
add r0, r0, #0x2700
strh r2, [r0, #0x90]
b _022BDA70
_022BD9D0:
mov r3, #0
ldr r0, _022BDA80 ; =WAN_TABLE
str r3, [sp]
ldr r0, [r0]
mov r1, #3
mov r2, #0x124
bl LoadWanTableEntryFromPack
ldr r1, _022BDA78 ; =ov10_022DC1C0
mov r2, #0
ldr r1, [r1]
mov r3, r2
add r1, r1, #0x2000
ldr r1, [r1, #0x78c]
mov r4, r0
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0201DBB8
mov r1, #0
mov r0, r4
mov r2, r1
bl ov10_022BD75C
ldr r0, _022BDA80 ; =WAN_TABLE
mov r1, r4
ldr r0, [r0]
bl DeleteWanTableEntryVeneer
mov r2, #0
str r2, [sp]
ldr r0, _022BDA80 ; =WAN_TABLE
mov r1, #3
ldr r0, [r0]
mov r3, r2
bl LoadWanTableEntryFromPack
ldr r2, _022BDA78 ; =ov10_022DC1C0
mov r3, #0
ldr r1, [r2]
add r1, r1, #0x2700
strh r0, [r1, #0x88]
ldr r0, [r2]
add r0, r0, #0x2700
strh r3, [r0, #0x90]
_022BDA70:
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_022BDA78: .word ov10_022DC1C0
_022BDA7C: .word 0x000027A4
_022BDA80: .word WAN_TABLE
arm_func_end ov10_022BD82C
arm_func_start ov10_022BDA84
ov10_022BDA84: ; 0x022BDA84
stmdb sp!, {lr}
sub sp, sp, #0xc
stmia sp, {r0, r1}
mov r1, #0
str r2, [sp, #8]
mov r2, r1
mov r3, r1
mov r0, #1
bl ov10_022BD82C
add sp, sp, #0xc
ldmia sp!, {pc}
arm_func_end ov10_022BDA84
arm_func_start ov10_022BDAB0
ov10_022BDAB0: ; 0x022BDAB0
stmdb sp!, {lr}
sub sp, sp, #0xc
str r0, [sp]
mov r0, #0
stmib sp, {r1, r2}
mov r1, r0
mov r2, r0
mov r3, r0
bl ov10_022BD82C
add sp, sp, #0xc
ldmia sp!, {pc}
arm_func_end ov10_022BDAB0
arm_func_start ov10_022BDADC
ov10_022BDADC: ; 0x022BDADC
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r0, _022BDB50 ; =ov10_022DC1C0
ldr r3, [r0]
add r1, r3, #0x2000
ldr r0, [r1, #0x784]
cmp r0, #0
beq _022BDB48
cmp r0, #1
bne _022BDB48
mov r2, #0
str r2, [sp]
str r2, [sp, #4]
add r0, r3, #0x2700
ldr r1, [r1, #0x78c]
ldrsh r0, [r0, #0x88]
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
mov r3, #1
bl sub_0201D9C8
ldr r0, _022BDB50 ; =ov10_022DC1C0
mov r1, #1
ldr r0, [r0]
add r2, r0, #0x2700
ldrsh r0, [r2, #0x88]
ldrsh r2, [r2, #0x90]
bl ov10_022BD75C
_022BDB48:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_022BDB50: .word ov10_022DC1C0
arm_func_end ov10_022BDADC
arm_func_start ov10_022BDB54
ov10_022BDB54: ; 0x022BDB54
ldr ip, _022BDB5C ; =sub_02063A0C
bx ip
.align 2, 0
_022BDB5C: .word sub_02063A0C
arm_func_end ov10_022BDB54
arm_func_start ov10_022BDB60
ov10_022BDB60: ; 0x022BDB60
cmp r3, #0
moveq r3, #0
beq _022BDB74
cmp r3, #1
moveq r3, #1
_022BDB74:
ldr ip, _022BDB7C ; =sub_020639B4
bx ip
.align 2, 0
_022BDB7C: .word sub_020639B4
arm_func_end ov10_022BDB60
arm_func_start ov10_022BDB80
ov10_022BDB80: ; 0x022BDB80
ldr r3, _022BDBA0 ; =ov10_022DC1C0
ldr r2, [r3]
add r2, r2, #0x2000
str r0, [r2, #0x798]
ldr r0, [r3]
add r0, r0, #0x2700
strh r1, [r0, #0x9c]
bx lr
.align 2, 0
_022BDBA0: .word ov10_022DC1C0
arm_func_end ov10_022BDB80
arm_func_start ov10_022BDBA4
ov10_022BDBA4: ; 0x022BDBA4
ldr ip, _022BDBAC ; =sub_020639E8
bx ip
.align 2, 0
_022BDBAC: .word sub_020639E8
arm_func_end ov10_022BDBA4
arm_func_start ov10_022BDBB0
ov10_022BDBB0: ; 0x022BDBB0
ldr r1, _022BDBC4 ; =ov10_022DC1C0
ldr r1, [r1]
add r1, r1, #0x2000
strb r0, [r1, #0x7a0]
bx lr
.align 2, 0
_022BDBC4: .word ov10_022DC1C0
arm_func_end ov10_022BDBB0
arm_func_start ov10_022BDBC8
ov10_022BDBC8: ; 0x022BDBC8
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _022BDC08 ; =ov10_022DC1C0
mov r6, #0
ldr r5, [r0]
mvn r4, #0
_022BDBDC:
ldr r0, [r5, #0xc]
cmp r0, r4
beq _022BDBF4
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BDE50
_022BDBF4:
add r6, r6, #1
cmp r6, #0x20
add r5, r5, #0x13c
blt _022BDBDC
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022BDC08: .word ov10_022DC1C0
arm_func_end ov10_022BDBC8
arm_func_start ov10_022BDC0C
ov10_022BDC0C: ; 0x022BDC0C
stmdb sp!, {r3, lr}
bl ov10_022BDBC8
ldr r0, _022BDC60 ; =ov10_022DC1C0
ldr r1, _022BDC64 ; =WAN_TABLE
ldr r2, [r0]
ldr r0, [r1]
add r1, r2, #0x2700
ldrsh r1, [r1, #0x88]
bl DeleteWanTableEntryVeneer
bl ov10_022C055C
bl ov10_022BFF78
ldr r0, _022BDC60 ; =ov10_022DC1C0
ldr r0, [r0]
cmp r0, #0
beq _022BDC58
bl MemFree
ldr r0, _022BDC60 ; =ov10_022DC1C0
mov r1, #0
str r1, [r0]
_022BDC58:
bl sub_02063DE4
ldmia sp!, {r3, pc}
.align 2, 0
_022BDC60: .word ov10_022DC1C0
_022BDC64: .word WAN_TABLE
arm_func_end ov10_022BDC0C
arm_func_start ov10_022BDC68
ov10_022BDC68: ; 0x022BDC68
stmdb sp!, {r3, lr}
bl ov10_022BDBC8
ldr r0, _022BDCA0 ; =ov10_022DC1C0
mov r2, #0
ldr r1, [r0]
mvn r0, #0
_022BDC80:
add r2, r2, #1
str r0, [r1, #0xc]
cmp r2, #0x20
add r1, r1, #0x13c
blt _022BDC80
bl ov10_022BFFA4
bl ov10_022C0588
ldmia sp!, {r3, pc}
.align 2, 0
_022BDCA0: .word ov10_022DC1C0
arm_func_end ov10_022BDC68
arm_func_start ov10_022BDCA4
ov10_022BDCA4: ; 0x022BDCA4
cmp r0, #0
moveq r0, #0
bxeq lr
cmp r0, #1
moveq r0, #1
bx lr
arm_func_end ov10_022BDCA4
arm_func_start ov10_022BDCBC
ov10_022BDCBC: ; 0x022BDCBC
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
ldmeqia sp!, {r4, r5, r6, pc}
ldr r2, _022BDE44 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
mla r4, r0, r1, r2
ldr r0, [r4, #0x40]
sub r0, r0, #5
cmp r0, #1
bhi _022BDD38
mov r0, #0
bl ov10_022BDCA4
bl sub_02063E44
ldr r2, _022BDE44 ; =ov10_022DC1C0
mov r0, #0
ldr r1, [r2]
add r1, r1, #0x2000
strb r0, [r1, #0x79e]
ldr r1, [r2]
add r1, r1, #0x2000
ldr r1, [r1, #0x784]
cmp r1, #0
bne _022BDD30
mov r1, r0
bl ov29_022EA428
_022BDD30:
add r0, r4, #0xe8
bl sub_0206423C
_022BDD38:
ldr r0, [r4, #0x40]
cmp r0, #3
bne _022BDD90
ldr r1, [r4]
mov r0, #0
bl ov10_022C07D0
mov r6, r0
ldr r1, [r6, #4]
cmp r1, #0
bne _022BDD6C
ldr r0, _022BDE48 ; =ov10_022C79D8
bl Debug_Print0
b _022BDE34
_022BDD6C:
sub r1, r1, #1
ldr r0, _022BDE4C ; =ov10_022C7A18
str r1, [r6, #4]
bl Debug_Print0
ldr r0, [r6, #4]
cmp r0, #0
mvneq r0, #0
streq r0, [r6]
b _022BDE34
_022BDD90:
cmp r0, #4
bne _022BDDF4
ldr r1, [r4]
mov r0, #1
bl ov10_022C07D0
mov r6, r0
ldr r1, [r6]
ldr r0, [r4, #0x44]
cmp r1, r0
bne _022BDE34
ldr r1, [r6, #4]
cmp r1, #0
bne _022BDDD0
ldr r0, _022BDE48 ; =ov10_022C79D8
bl Debug_Print0
b _022BDE34
_022BDDD0:
sub r1, r1, #1
ldr r0, _022BDE4C ; =ov10_022C7A18
str r1, [r6, #4]
bl Debug_Print0
ldr r0, [r6, #4]
cmp r0, #0
mvneq r0, #0
streq r0, [r6]
b _022BDE34
_022BDDF4:
cmp r0, #6
ldr r1, [r4]
bne _022BDE1C
mov r0, #3
bl ov10_022C07D0
mov r1, #0
str r1, [r0, #4]
sub r1, r1, #1
str r1, [r0]
b _022BDE34
_022BDE1C:
mov r0, #2
bl ov10_022C07D0
mov r1, #0
str r1, [r0, #4]
sub r1, r1, #1
str r1, [r0]
_022BDE34:
mov r0, r4
mov r1, r5
bl ov10_022BDEC4
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022BDE44: .word ov10_022DC1C0
_022BDE48: .word ov10_022C79D8
_022BDE4C: .word ov10_022C7A18
arm_func_end ov10_022BDCBC
arm_func_start ov10_022BDE50
ov10_022BDE50: ; 0x022BDE50
stmdb sp!, {r4, lr}
mov r4, r0
bl ov10_022BE9A0
mvn r2, #0
cmp r0, r2
ldmeqia sp!, {r4, pc}
ldr r3, _022BDEB0 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r3, [r3]
mla r1, r0, r1, r3
ldr r0, [r1, #0xc]
cmp r0, r2
ldmeqia sp!, {r4, pc}
ldr r0, [r1, #8]
sub r0, r0, #1
cmp r0, #1
mov r0, r4
bhi _022BDEA4
mov r1, #0
bl ov10_022BDCBC
ldmia sp!, {r4, pc}
_022BDEA4:
mov r1, #1
bl ov10_022BDCBC
ldmia sp!, {r4, pc}
.align 2, 0
_022BDEB0: .word ov10_022DC1C0
arm_func_end ov10_022BDE50
arm_func_start GetEffectAnimationField0x19
GetEffectAnimationField0x19: ; 0x022BDEB4
stmdb sp!, {r3, lr}
bl GetEffectAnimation
ldrsb r0, [r0, #0x19]
ldmia sp!, {r3, pc}
arm_func_end GetEffectAnimationField0x19
arm_func_start ov10_022BDEC4
ov10_022BDEC4: ; 0x022BDEC4
stmdb sp!, {r4, lr}
mov r4, r0
mvn r0, #0
str r0, [r4, #0xc]
mov r0, #0
strb r0, [r4, #0x60]
ldr r0, [r4, #8]
sub r0, r0, #5
cmp r0, #1
bhi _022BDF00
cmp r1, #0
ldmeqia sp!, {r4, pc}
ldrsh r0, [r4, #0xe4]
bl ov10_022C04CC
ldmia sp!, {r4, pc}
_022BDF00:
ldrsh r2, [r4, #0x64]
cmp r2, #0
ldmeqia sp!, {r4, pc}
cmp r1, #0
beq _022BDF24
ldr r0, _022BDF30 ; =WAN_TABLE
mov r1, r2
ldr r0, [r0]
bl DeleteWanTableEntryVeneer
_022BDF24:
mov r0, #0
strh r0, [r4, #0x64]
ldmia sp!, {r4, pc}
.align 2, 0
_022BDF30: .word WAN_TABLE
arm_func_end ov10_022BDEC4
arm_func_start ov10_022BDF34
ov10_022BDF34: ; 0x022BDF34
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0xe8
bl sub_020642A8
cmp r0, #0
bne _022BDFB4
mov r0, r4
mov r1, #1
bl ov10_022BDEC4
ldr r2, _022BDFBC ; =ov10_022DC1C0
ldr r0, [r4]
ldr r3, [r2]
mov r1, #0
add r0, r3, r0
add r0, r0, #0x2000
strb r1, [r0, #0x79e]
ldr r0, [r2]
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
cmp r0, #0
bne _022BDF90
mov r0, #0xd
bl ov29_022EA428
_022BDF90:
ldr r1, [r4]
mov r0, #2
bl ov10_022C07D0
mov r2, #0
str r2, [r0, #4]
sub r1, r2, #1
str r1, [r0]
mov r0, r2
ldmia sp!, {r4, pc}
_022BDFB4:
mov r0, #1
ldmia sp!, {r4, pc}
.align 2, 0
_022BDFBC: .word ov10_022DC1C0
arm_func_end ov10_022BDF34
arm_func_start ov10_022BDFC0
ov10_022BDFC0: ; 0x022BDFC0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
mov r7, r0
ldr r0, [r7, #0x14]
mov r6, r1
bl GetEffectAnimation
mov r1, #0
mov r4, r0
strb r1, [r7, #0x13a]
ldr r0, [r4]
mov r5, #1
str r0, [r7, #0x40]
ldr r0, [r4, #4]
str r0, [r7, #0x44]
ldr r0, [r4, #0x10]
str r0, [r7, #0x58]
ldr r1, [r7, #0x18]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r7, #0x5c]
ldrb r0, [r4, #0x1b]
strb r0, [r7, #0x61]
ldrb r0, [r4, #0x1a]
strb r0, [r7, #0x60]
ldr r0, [r7, #0x40]
cmp r0, #5
cmpne r0, #6
beq _022BE03C
ldrsh r0, [r7, #0x64]
bl sub_0201DA20
str r0, [r7, #0x10]
_022BE03C:
ldr r1, [r4, #0xc]
mvn r0, #0
str r1, [r7, #0x50]
ldr r2, [r7, #0x1c]
cmp r2, r0
beq _022BE070
ldr r0, [r7, #0x10]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
adds r0, r1, r0, ror #29
ldreq r0, [r7, #0x50]
addeq r0, r0, r2
streq r0, [r7, #0x50]
_022BE070:
mov r0, #0
str r0, [r7, #0x4c]
ldr r0, [r7, #0x40]
cmp r0, #1
cmpne r0, #2
beq _022BE0A0
ldr r1, [r7, #0x44]
mov r2, r6
bl ov10_022C05E0
mvn r1, #2
cmp r0, r1
moveq r5, #1
_022BE0A0:
ldr r0, [r7, #0x40]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _022BE1F0
_022BE0B0: ; jump table
b _022BE1F0 ; case 0
b _022BE1A4 ; case 1
b _022BE1D4 ; case 2
b _022BE0CC ; case 3
b _022BE0EC ; case 4
b _022BE124 ; case 5
b _022BE18C ; case 6
_022BE0CC:
ldr r0, _022BE448 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x794]
str r0, [r7, #0x54]
ldr r0, [r4, #8]
str r0, [r7, #0x48]
b _022BE1F0
_022BE0EC:
ldr r0, _022BE448 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x798]
bl sub_0201E184
ldr r1, _022BE448 ; =ov10_022DC1C0
str r0, [r7, #0x54]
ldr r0, [r1]
mov r1, #0
add r0, r0, #0x2700
ldrsh r0, [r0, #0x9c]
str r0, [r7, #0x4c]
str r1, [r7, #0x48]
b _022BE1F0
_022BE124:
cmp r6, #0
bne _022BE158
mvn r0, #0
str r0, [r7, #0x54]
ldr r1, [r4, #8]
ldr r0, _022BE448 ; =ov10_022DC1C0
str r1, [r7, #0x48]
ldr r0, [r0]
ldrb r1, [r4, #0x18]
add r0, r0, r6
add r0, r0, #0x2000
strb r1, [r0, #0x79e]
b _022BE1F0
_022BE158:
cmp r6, #1
bne _022BE1F0
mvn r0, #0
str r0, [r7, #0x54]
ldr r1, [r4, #8]
ldr r0, _022BE448 ; =ov10_022DC1C0
str r1, [r7, #0x48]
ldr r0, [r0]
ldrb r1, [r4, #0x18]
add r0, r0, r6
add r0, r0, #0x2000
strb r1, [r0, #0x79e]
b _022BE1F0
_022BE18C:
cmp r6, #0
mvneq r0, #0
streq r0, [r7, #0x54]
ldreq r0, [r4, #8]
streq r0, [r7, #0x48]
b _022BE1F0
_022BE1A4:
ldr r1, _022BE448 ; =ov10_022DC1C0
ldr r0, [r1]
add r0, r0, #0x2000
ldr r0, [r0, #0x78c]
str r0, [r7, #0x54]
ldr r0, [r1]
add r0, r0, #0x2700
ldrsh r0, [r0, #0x9c]
str r0, [r7, #0x48]
ldr r0, [r4, #8]
str r0, [r7, #0x48]
b _022BE1F0
_022BE1D4:
ldr r0, _022BE448 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x78c]
str r0, [r7, #0x54]
ldr r0, [r4, #8]
str r0, [r7, #0x48]
_022BE1F0:
ldr r0, [r7, #0x40]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _022BE440
_022BE200: ; jump table
b _022BE440 ; case 0
b _022BE21C ; case 1
b _022BE280 ; case 2
b _022BE300 ; case 3
b _022BE36C ; case 4
b _022BE3E4 ; case 5
b _022BE418 ; case 6
_022BE21C:
add r0, r7, #0x68
bl InitAnimationControlWithSet__0201C0B0
ldrsh r1, [r7, #0x64]
add r0, r7, #0x68
bl SetSpriteIdForAnimationControl
add r0, r7, #0x68
bl sub_0201C108
ldr r0, [r7, #0x48]
mov r2, #0
and r0, r0, #0xff
stmia sp, {r0, r2}
ldrb r1, [r7, #0x61]
add r0, r7, #0x68
str r1, [sp, #8]
str r2, [sp, #0xc]
ldr r3, [r7, #0x54]
ldr r1, [r7, #0x50]
mov r3, r3, lsl #0x10
mov r3, r3, asr #0x10
bl SetAnimationForAnimationControl
ldrh r0, [r7, #0x6a]
orr r0, r0, #0x30
orr r0, r0, #0x1000
strh r0, [r7, #0x6a]
b _022BE440
_022BE280:
add r0, r7, #0x68
bl InitAnimationControlWithSet__0201C0B0
ldrsh r1, [r7, #0x64]
add r0, r7, #0x68
bl SetSpriteIdForAnimationControl
add r0, r7, #0x68
bl sub_0201C108
ldr r0, [r7, #0x48]
mov r2, #0
and r0, r0, #0xff
stmia sp, {r0, r2}
ldrb r1, [r7, #0x61]
add r0, r7, #0x68
str r1, [sp, #8]
str r2, [sp, #0xc]
ldr r3, [r7, #0x54]
ldr r1, [r7, #0x50]
mov r3, r3, lsl #0x10
mov r3, r3, asr #0x10
bl SetAnimationForAnimationControl
ldr r0, _022BE448 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2700
ldrsh r0, [r0, #0x90]
and r0, r0, #0xff
and r0, r0, #0xf
strb r0, [r7, #0xaa]
ldrh r0, [r7, #0x6a]
orr r0, r0, #0x30
orr r0, r0, #0x1000
strh r0, [r7, #0x6a]
b _022BE440
_022BE300:
add r0, r7, #0x68
bl InitAnimationControlWithSet__0201C0B0
ldrsh r1, [r7, #0x64]
add r0, r7, #0x68
bl SetSpriteIdForAnimationControl
ldr r0, [r7, #0x48]
mov r2, #0
and r0, r0, #0xff
stmia sp, {r0, r2}
ldrb r1, [r7, #0x61]
add r0, r7, #0x68
str r1, [sp, #8]
str r2, [sp, #0xc]
ldr r3, [r7, #0x54]
ldr r1, [r7, #0x50]
mov r3, r3, lsl #0x10
mov r3, r3, asr #0x10
bl SetAnimationForAnimationControl
ldrh r0, [r7, #0x6a]
cmp r5, #0
orr r0, r0, #0x30
orr r0, r0, #0x1000
strh r0, [r7, #0x6a]
bne _022BE440
add r0, r7, #0x68
bl sub_0201C108
b _022BE440
_022BE36C:
add r0, r7, #0x68
bl InitAnimationControlWithSet__0201C0B0
ldrsh r1, [r7, #0x64]
add r0, r7, #0x68
bl SetSpriteIdForAnimationControl
ldr r0, [r7, #0x48]
mov r2, #0
and r0, r0, #0xff
stmia sp, {r0, r2}
ldrb r1, [r7, #0x61]
add r0, r7, #0x68
str r1, [sp, #8]
str r2, [sp, #0xc]
ldr r3, [r7, #0x54]
ldr r1, [r7, #0x50]
mov r3, r3, lsl #0x10
mov r3, r3, asr #0x10
bl SetAnimationForAnimationControl
ldrh r1, [r7, #0x6a]
add r0, r7, #0x68
orr r1, r1, #0x10
strh r1, [r7, #0x6a]
ldr r1, [r7, #0x4c]
and r1, r1, #0xff
bl sub_0201D0F8
cmp r5, #0
bne _022BE440
add r0, r7, #0x68
bl sub_0201C108
b _022BE440
_022BE3E4:
add r0, r7, #0xe8
bl sub_020640BC
ldrsh r1, [r7, #0xe4]
add r0, r7, #0xe8
bl sub_020640CC
cmp r6, #1
moveq r1, #1
movne r1, #0
add r0, r7, #0xe8
bl sub_020640DC
mov r0, #0
strb r0, [r7, #0x104]
b _022BE440
_022BE418:
add r0, r7, #0xe8
bl sub_020640BC
ldrsh r1, [r7, #0xe4]
add r0, r7, #0xe8
bl sub_020640CC
add r0, r7, #0xe8
mov r1, #2
bl sub_020640DC
mov r0, #0
strb r0, [r7, #0x104]
_022BE440:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022BE448: .word ov10_022DC1C0
arm_func_end ov10_022BDFC0
arm_func_start ov10_022BE44C
ov10_022BE44C: ; 0x022BE44C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, r1
mov sl, r0
ldr r0, [sb]
mov r8, r2
bl GetEffectAnimation
ldr r1, [sb]
mov r7, r0
cmp r1, #0
mvneq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r1, [r7]
cmp r1, #2
bne _022BE4A0
ldr r0, _022BE72C ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
cmp r0, #1
mvnne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_022BE4A0:
cmp r1, #1
bne _022BE4C4
ldr r0, _022BE72C ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
cmp r0, #0
mvnne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_022BE4C4:
cmp r1, #3
bne _022BE53C
ldr r0, _022BE72C ; =ov10_022DC1C0
mov r5, #0
ldr r6, [r0]
mov fp, #1
mvn r4, #0
_022BE4E0:
ldr r0, [r6, #0xc]
cmp r0, r4
beq _022BE528
ldr r0, [r6, #8]
cmp r0, #3
bne _022BE528
ldr r0, [r6, #0x14]
ldr r1, [sb]
cmp r0, r1
beq _022BE528
bl GetEffectAnimation
ldr r1, [r0, #4]
ldr r0, [r7, #4]
cmp r1, r0
beq _022BE528
mov r0, r6
mov r1, fp
bl ov10_022BDEC4
_022BE528:
add r5, r5, #1
cmp r5, #0x20
add r6, r6, #0x13c
blt _022BE4E0
b _022BE59C
_022BE53C:
cmp r1, #4
bne _022BE59C
ldr r0, _022BE72C ; =ov10_022DC1C0
mov r5, #0
ldr r4, [r0]
mov r7, #1
mvn r6, #0
_022BE558:
ldr r0, [r4, #0xc]
cmp r0, r6
beq _022BE58C
ldr r0, [r4, #8]
cmp r0, #4
bne _022BE58C
ldr r1, [r4, #0x14]
ldr r0, [sb]
cmp r1, r0
beq _022BE58C
mov r0, r4
mov r1, r7
bl ov10_022BDEC4
_022BE58C:
add r5, r5, #1
cmp r5, #0x20
add r4, r4, #0x13c
blt _022BE558
_022BE59C:
ldr r0, _022BE72C ; =ov10_022DC1C0
mov r2, #0
ldr r5, [r0]
mvn r0, #0
b _022BE71C
_022BE5B0:
ldr r1, [r5, #0xc]
cmp r1, r0
bne _022BE714
mov r0, r5
mov r1, #0x13c
bl MemZero
mov r0, #0
strh r0, [r5, #0x64]
str r8, [r5]
ldr r0, [sb]
bl GetEffectAnimation
mov r4, r0
ldr r0, [r4]
cmp r0, #5
bne _022BE618
ldr r1, [r4, #4]
bl ov10_022C0450
strh r0, [r5, #0xe4]
ldrsh r0, [r5, #0xe4]
cmp r0, #0
mvneq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r3, r8
ldmia r4, {r1, r2}
bl ov10_022C01FC
b _022BE6B8
_022BE618:
cmp r0, #6
bne _022BE64C
ldr r1, [r4, #4]
bl ov10_022C0450
strh r0, [r5, #0xe4]
ldrsh r0, [r5, #0xe4]
cmp r0, #0
mvneq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r3, r8
ldmia r4, {r1, r2}
bl ov10_022C0280
b _022BE6B8
_022BE64C:
sub r1, r0, #1
cmp r1, #1
ldrls r0, _022BE72C ; =ov10_022DC1C0
ldrls r0, [r0]
addls r0, r0, #0x2700
ldrlssh r0, [r0, #0x88]
bls _022BE670
ldr r1, [r4, #4]
bl ov10_022C03F4
_022BE670:
strh r0, [r5, #0x64]
ldrsh r0, [r5, #0x64]
cmp r0, #0
mvneq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r1, [r4]
sub r1, r1, #3
cmp r1, #1
bhi _022BE6B8
mov r1, #0
str r1, [sp]
ldr r2, _022BE72C ; =ov10_022DC1C0
ldr r1, [r4]
ldr r3, [r2]
ldr r2, [r4, #4]
add r3, r3, #0x2000
ldr r3, [r3, #0x794]
bl ov10_022C0114
_022BE6B8:
ldr r1, [r4]
ldr r0, _022BE72C ; =ov10_022DC1C0
str r1, [r5, #8]
str sl, [r5, #4]
ldr r0, [r0]
add r6, r5, #0x14
add r0, r0, #0x2000
ldr r1, [r0, #0x780]
mov r4, #2
mov r2, r1
add r1, r1, #1
str r1, [r0, #0x780]
str r2, [r5, #0xc]
_022BE6EC:
ldmia sb!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _022BE6EC
ldmia sb, {r0, r1, r2}
stmia r6, {r0, r1, r2}
ldr r0, [r5, #0xc]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_022BE714:
add r2, r2, #1
add r5, r5, #0x13c
_022BE71C:
cmp r2, #0x20
blt _022BE5B0
mvn r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022BE72C: .word ov10_022DC1C0
arm_func_end ov10_022BE44C
arm_func_start ov10_022BE730
ov10_022BE730: ; 0x022BE730
stmdb sp!, {r4, lr}
bl ov10_022BE44C
mov r4, r0
mvn r0, #0
cmp r4, r0
ldmeqia sp!, {r4, pc}
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BE9A0
mov r1, #0x13c
ldr r2, _022BE77C ; =ov10_022DC1C0
mul r3, r0, r1
ldr r0, [r2]
ldr r1, [r0, r3]
add r0, r0, r3
bl ov10_022BDFC0
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022BE77C: .word ov10_022DC1C0
arm_func_end ov10_022BE730
arm_func_start ov10_022BE780
ov10_022BE780: ; 0x022BE780
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x5c
ldr r3, _022BE998 ; =ov10_022DC1C0
mov sl, r0
ldr r0, [r3]
mov sb, r1
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
mov r8, r2
cmp r0, #0
bne _022BE980
bl sub_02001808
mov r4, r0
ldr r0, [sb]
bl GetEffectAnimation
ldr r1, _022BE998 ; =ov10_022DC1C0
mov r5, r0
ldr r0, [r1]
ldr r1, [sb]
add r0, r0, #0x2000
ldrb r0, [r0, #0x7a0]
cmp r0, #0
beq _022BE800
cmp r1, #0xef
cmpne r1, #0x14c
ldrne r0, _022BE99C ; =0x00000287
cmpne r1, r0
subne r0, r0, #0x13c
cmpne r1, r0
bne _022BE830
mvn r0, #0
b _022BE990
_022BE800:
cmp r1, #0xef
cmpne r1, #0x14c
ldrne r0, _022BE99C ; =0x00000287
cmpne r1, r0
subne r0, r0, #0x13c
cmpne r1, r0
bne _022BE830
mov r0, #0x10c00
bl ov10_022BFE6C
cmp r0, #0
mvnne r0, #0
bne _022BE990
_022BE830:
ldr r0, [r5]
cmp r0, #5
bne _022BE8A0
ldr r1, [r5, #4]
mov r0, #3
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
add r1, r1, #0x10c
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl DirectoryFileMngr_GetDirectoryFileSize
cmp r4, r0
bge _022BE980
add r5, sp, #0x30
mov r4, #2
_022BE86C:
ldmia sb!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _022BE86C
ldmia sb, {r0, r1, r2}
stmia r5, {r0, r1, r2}
mov r3, #8
add r1, sp, #0x30
mov r0, sl
mov r2, r8
str r3, [sp, #0x30]
bl ov10_022BE730
b _022BE990
_022BE8A0:
cmp r0, #3
bne _022BE980
ldr r0, _022BE998 ; =ov10_022DC1C0
mov fp, #0
ldr r6, [r0]
mvn r0, #0
mov r7, fp
str r0, [sp]
b _022BE910
_022BE8C4:
ldr r1, [r6, #0xc]
ldr r0, [sp]
cmp r1, r0
beq _022BE908
ldr r0, [r6, #8]
cmp r0, #3
bne _022BE908
ldr r0, [r6, #0x14]
ldr r1, [sb]
cmp r0, r1
beq _022BE908
bl GetEffectAnimation
ldr r1, [r5, #4]
ldr r0, [r0, #4]
cmp r1, r0
moveq fp, #1
beq _022BE918
_022BE908:
add r7, r7, #1
add r6, r6, #0x13c
_022BE910:
cmp r7, #0x20
blt _022BE8C4
_022BE918:
cmp fp, #0
bne _022BE980
ldr r1, [r5, #4]
mov r0, #3
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl DirectoryFileMngr_GetDirectoryFileSize
cmp r4, r0
bge _022BE980
add r5, sp, #4
mov r4, #2
_022BE94C:
ldmia sb!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _022BE94C
ldmia sb, {r0, r1, r2}
stmia r5, {r0, r1, r2}
mov r3, #8
add r1, sp, #4
mov r0, sl
mov r2, r8
str r3, [sp, #4]
bl ov10_022BE730
b _022BE990
_022BE980:
mov r0, sl
mov r1, sb
mov r2, r8
bl ov10_022BE730
_022BE990:
add sp, sp, #0x5c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022BE998: .word ov10_022DC1C0
_022BE99C: .word 0x00000287
arm_func_end ov10_022BE780
arm_func_start ov10_022BE9A0
ov10_022BE9A0: ; 0x022BE9A0
mvn r1, #0
cmp r0, r1
beq _022BE9DC
ldr r1, _022BE9E4 ; =ov10_022DC1C0
mov r2, #0
ldr r3, [r1]
b _022BE9D4
_022BE9BC:
ldr r1, [r3, #0xc]
cmp r1, r0
moveq r0, r2
bxeq lr
add r2, r2, #1
add r3, r3, #0x13c
_022BE9D4:
cmp r2, #0x20
blt _022BE9BC
_022BE9DC:
mvn r0, #0
bx lr
.align 2, 0
_022BE9E4: .word ov10_022DC1C0
arm_func_end ov10_022BE9A0
arm_func_start ov10_022BE9E8
ov10_022BE9E8: ; 0x022BE9E8
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x2c
ldr lr, _022BEB20 ; =ov10_022C78D0
add ip, sp, #0
mov r6, r0
mov r5, r1
mov r4, #2
_022BEA04:
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _022BEA04
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldrh r0, [r6]
bl GetMoveAnimation
ldrsh r0, [r0, #6]
str r0, [sp]
ldr r0, [r6, #0x10]
str r0, [sp, #4]
ldr r0, [r6, #0xc]
str r0, [sp, #8]
ldrh r0, [r6, #4]
strh r0, [sp, #0xc]
ldrh r0, [r6, #6]
strh r0, [sp, #0xe]
ldrh r0, [r6, #8]
strh r0, [sp, #0x10]
ldrh r0, [r6, #0xa]
strh r0, [sp, #0x12]
ldrsh r0, [r6, #2]
ldrh r1, [r6]
bl ov10_022BF088
ldr r3, _022BEB24 ; =ov10_022C7884
add r2, sp, #0x1c
strb r0, [sp, #0x14]
mov r1, #6
_022BEA78:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BEA78
add r1, sp, #0
mov r0, #2
mov r2, #0
bl ov10_022BE780
mov r4, r0
mvn r0, #0
cmp r4, r0
beq _022BEB18
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
moveq r0, r1
beq _022BEB18
ldr r2, _022BEB28 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r3, [r2]
ldrh r2, [r6, #4]
mla r3, r0, r1, r3
add r1, r3, #0x100
strh r2, [r1, #0x28]
ldrh r2, [r6, #6]
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
strh r2, [r1, #0x2a]
ldrh r2, [r5]
strh r2, [r1, #0x2c]
ldrh r2, [r5, #2]
strh r2, [r1, #0x2e]
ldrsh r2, [r6, #2]
strh r2, [r1, #0x30]
ldrh r2, [r3, #0x24]
strh r2, [r1, #0x32]
ldrh r2, [r3, #0x26]
strh r2, [r1, #0x34]
_022BEB18:
add sp, sp, #0x2c
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_022BEB20: .word ov10_022C78D0
_022BEB24: .word ov10_022C7884
_022BEB28: .word ov10_022DC1C0
arm_func_end ov10_022BE9E8
arm_func_start ov10_022BEB2C
ov10_022BEB2C: ; 0x022BEB2C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
ldmeqia sp!, {r4, r5, r6, pc}
ldr r2, _022BEC04 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r3, [r2]
ldrh r2, [r6]
mla r4, r0, r1, r3
strh r2, [r4, #0x20]
ldrh r1, [r6, #2]
add r0, r4, #0x100
strh r1, [r4, #0x22]
ldrsh r1, [r0, #0x2e]
ldrsh r0, [r0, #0x2a]
sub r0, r1, r0
bl abs
add r1, r4, #0x100
ldrsh r2, [r1, #0x2c]
ldrsh r1, [r1, #0x28]
mov r6, r0
sub r0, r2, r1
bl abs
cmp r0, r6
movle r0, r6
mov r1, r0, asr #1
add r0, r0, r1, lsr #30
ldrsh r2, [r4, #0x26]
mov r0, r0, asr #2
sub r6, r0, #1
add r1, r2, #9
strh r1, [r4, #0x26]
ldrsh r1, [r4, #0x24]
mul r0, r1, r6
strh r0, [r4, #0x24]
ldrsh r0, [r4, #0x26]
add r1, r6, #1
mul r2, r0, r6
strh r2, [r4, #0x26]
ldrsh r0, [r4, #0x24]
bl _s32_div_f
strh r0, [r4, #0x24]
ldrsh r0, [r4, #0x26]
add r1, r6, #1
bl _s32_div_f
strh r0, [r4, #0x26]
ldrsh r0, [r4, #0x26]
sub r0, r0, #9
strh r0, [r4, #0x26]
str r5, [r4, #0x2c]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022BEC04: .word ov10_022DC1C0
arm_func_end ov10_022BEB2C
arm_func_start ov10_022BEC08
ov10_022BEC08: ; 0x022BEC08
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x2c
ldr r4, _022BEC8C ; =ov10_022C78FC
add lr, sp, #0
mov r6, r0
mov r5, r1
mov ip, #2
_022BEC24:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _022BEC24
ldmia r4, {r0, r1, r2}
stmia lr, {r0, r1, r2}
mov r0, r6
bl GetTrapAnimation
str r0, [sp]
ldrh r0, [r5]
ldr r3, _022BEC90 ; =ov10_022C7884
add r2, sp, #0x1c
strh r0, [sp, #0xc]
ldrh r0, [r5, #2]
mov r1, #6
strh r0, [sp, #0xe]
_022BEC64:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BEC64
add r1, sp, #0
mov r0, #3
mov r2, #0
bl ov10_022BE780
add sp, sp, #0x2c
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_022BEC8C: .word ov10_022C78FC
_022BEC90: .word ov10_022C7884
arm_func_end ov10_022BEC08
arm_func_start ov10_022BEC94
ov10_022BEC94: ; 0x022BEC94
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x2c
movs r5, r3
mov r7, r1
mov r6, r2
beq _022BECB4
bl GetItemAnimation1
b _022BECB8
_022BECB4:
bl GetItemAnimation2
_022BECB8:
mov r4, r0
mov r0, r4
bl GetEffectAnimation
ldrsb ip, [r0, #0x19]
ldr sb, _022BED88 ; =ov10_022C7928
add r8, sp, #0
mov lr, #2
_022BECD4:
ldmia sb!, {r0, r1, r2, r3}
stmia r8!, {r0, r1, r2, r3}
subs lr, lr, #1
bne _022BECD4
ldmia sb, {r0, r1, r2}
stmia r8, {r0, r1, r2}
str r4, [sp]
ldrh r0, [r7]
ldr r3, _022BED8C ; =ov10_022C7884
add r2, sp, #0x1c
strh r0, [sp, #0xc]
ldrh r0, [r7, #2]
mov r1, #6
strh r0, [sp, #0xe]
_022BED0C:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BED0C
ldr r0, [sp, #0x48]
cmp r5, #0
str r0, [sp, #0x18]
beq _022BED58
mvn r0, #0
cmp ip, r0
beq _022BED70
strb ip, [sp, #0x14]
mov r0, ip, lsl #2
ldrh r0, [r6, r0]
add r1, r6, ip, lsl #2
strh r0, [sp, #0x10]
ldrh r0, [r1, #2]
strh r0, [sp, #0x12]
b _022BED70
_022BED58:
mov r0, #3
strb r0, [sp, #0x14]
ldrh r0, [r6, #0xc]
strh r0, [sp, #0x10]
ldrh r0, [r6, #0xe]
strh r0, [sp, #0x12]
_022BED70:
add r1, sp, #0
mov r0, #4
mov r2, #0
bl ov10_022BE780
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022BED88: .word ov10_022C7928
_022BED8C: .word ov10_022C7884
arm_func_end ov10_022BEC94
arm_func_start ov10_022BED90
ov10_022BED90: ; 0x022BED90
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x1b8
mov sb, r0
ldrh r0, [sb]
cmp r0, #0x52
bne _022BEF1C
ldr r3, _022BEFC4 ; =ov10_022C78B0
add r2, sp, #0x38
mov r1, #0x10
_022BEDB4:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BEDB4
mov r7, #0
ldr r3, _022BEFC8 ; =ov10_022C7884
add r2, sp, #0
mov r6, r7
mov r1, #6
_022BEDD8:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BEDD8
_022BEDE8:
mov r0, #0x2c
mul r4, r6, r0
add r5, sp, #0x58
add r8, r5, r4
mov r0, r8
bl ov10_022BF274
ldrh r0, [sb]
bl GetMoveAnimation
ldrsh r0, [r0, #2]
add r1, sp, #0x38
mov r2, r6, lsl #2
str r0, [r5, r4]
ldr r3, [sb, #0x10]
add r0, r1, r6, lsl #2
str r3, [r8, #4]
ldr r3, [sb, #0xc]
ldrsh r1, [r1, r2]
str r3, [r8, #8]
ldrh r3, [sb, #4]
ldrsh r0, [r0, #2]
strh r3, [r8, #0xc]
ldrh r2, [sb, #6]
sub r0, r0, #0x40
strh r2, [r8, #0xe]
ldrsh r2, [r8, #0xe]
add r2, r2, #0x40
strh r2, [r8, #0xe]
ldrh r2, [sb, #8]
strh r2, [r8, #0x10]
ldrh r2, [sb, #0xa]
strh r2, [r8, #0x12]
ldrsh r2, [r8, #0x10]
add r1, r2, r1
strh r1, [r8, #0x10]
ldrsh r1, [r8, #0x12]
add r0, r1, r0
strh r0, [r8, #0x12]
ldrsh r0, [sb, #2]
ldrh r1, [sb]
bl ov10_022BF088
ldr r1, _022BEFCC ; =0x0000FFFF
strb r0, [r8, #0x14]
str r1, [r8, #0x18]
add r3, sp, #0
add r2, r8, #0x1c
mov r1, #6
_022BEEA0:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BEEA0
mov r2, #0
mov r1, r8
mov r0, #1
str r2, [r8, #0x28]
bl ov10_022BE780
mov r4, r0
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
beq _022BEEFC
ldr r2, _022BEFD0 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
mov r3, #6
mla r1, r0, r1, r2
add r0, r1, #0x100
strh r3, [r0, #0x36]
_022BEEFC:
cmp r6, #0
add r6, r6, #1
moveq r7, r4
cmp r6, #8
blt _022BEDE8
mov r0, r7, lsl #0x10
mov r0, r0, asr #0x10
b _022BEFBC
_022BEF1C:
ldr r6, _022BEFD4 ; =ov10_022C7954
add r5, sp, #0xc
mov r4, #2
_022BEF28:
ldmia r6!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _022BEF28
ldmia r6, {r0, r1, r2}
stmia r5, {r0, r1, r2}
ldrh r0, [sb]
bl GetMoveAnimation
ldrsh r0, [r0, #2]
str r0, [sp, #0xc]
ldr r0, [sb, #0x10]
str r0, [sp, #0x10]
ldr r0, [sb, #0xc]
str r0, [sp, #0x14]
ldrh r0, [sb, #4]
strh r0, [sp, #0x18]
ldrh r0, [sb, #6]
strh r0, [sp, #0x1a]
ldrh r0, [sb, #8]
strh r0, [sp, #0x1c]
ldrh r0, [sb, #0xa]
strh r0, [sp, #0x1e]
ldrsh r0, [sb, #2]
ldrh r1, [sb]
bl ov10_022BF088
ldr r3, _022BEFC8 ; =ov10_022C7884
add r2, sp, #0x28
strb r0, [sp, #0x20]
mov r1, #6
_022BEF9C:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BEF9C
add r1, sp, #0xc
mov r0, #1
mov r2, #0
bl ov10_022BE780
_022BEFBC:
add sp, sp, #0x1b8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022BEFC4: .word ov10_022C78B0
_022BEFC8: .word ov10_022C7884
_022BEFCC: .word 0x0000FFFF
_022BEFD0: .word ov10_022DC1C0
_022BEFD4: .word ov10_022C7954
arm_func_end ov10_022BED90
arm_func_start ov10_022BEFD8
ov10_022BEFD8: ; 0x022BEFD8
stmdb sp!, {r3, lr}
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
beq _022BF000
ldr r2, _022BF008 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
mla r1, r0, r1, r2
ldrsb r1, [r1, #0x28]
_022BF000:
mov r0, r1
ldmia sp!, {r3, pc}
.align 2, 0
_022BF008: .word ov10_022DC1C0
arm_func_end ov10_022BEFD8
arm_func_start ov10_022BF00C
ov10_022BF00C: ; 0x022BF00C
stmdb sp!, {r3, lr}
bl GetEffectAnimation
ldrsb r0, [r0, #0x19]
ldmia sp!, {r3, pc}
arm_func_end ov10_022BF00C
arm_func_start ov10_022BF01C
ov10_022BF01C: ; 0x022BF01C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, r1
bl GetMoveAnimation
mov r4, r0
ldrh r0, [r4, #0x16]
bl GetSpecialMonsterMoveAnimation
mov r5, r0
mov r0, r6
mov r1, #0x258
bl _s32_div_f
mov r1, r1, lsl #0x10
ldrsh r3, [r4, #0x14]
mov r2, #0
b _022BF078
_022BF058:
ldrsh r0, [r5]
cmp r0, r1, asr #16
ldreqsb r0, [r5, #3]
ldmeqia sp!, {r4, r5, r6, pc}
add r0, r2, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
add r5, r5, #6
_022BF078:
cmp r2, r3
blt _022BF058
ldrsb r0, [r4, #0x11]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022BF01C
arm_func_start ov10_022BF088
ov10_022BF088: ; 0x022BF088
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, r1
bl GetMoveAnimation
mov r4, r0
ldrh r0, [r4, #0x16]
bl GetSpecialMonsterMoveAnimation
mov r5, r0
mov r0, r6
mov r1, #0x258
bl _s32_div_f
mov r1, r1, lsl #0x10
ldrsh r3, [r4, #0x14]
mov r2, #0
b _022BF0E4
_022BF0C4:
ldrsh r0, [r5]
cmp r0, r1, asr #16
ldreqsb r0, [r5, #3]
ldmeqia sp!, {r4, r5, r6, pc}
add r0, r2, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
add r5, r5, #6
_022BF0E4:
cmp r2, r3
blt _022BF0C4
ldrsb r0, [r4, #0x11]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022BF088
arm_func_start ov10_022BF0F4
ov10_022BF0F4: ; 0x022BF0F4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, r1
bl GetMoveAnimation
mov r4, r0
ldrh r0, [r4, #0x16]
bl GetSpecialMonsterMoveAnimation
mov r5, r0
mov r0, r6
mov r1, #0x258
bl _s32_div_f
mov r1, r1, lsl #0x10
ldrsh r3, [r4, #0x14]
mov r2, #0
b _022BF150
_022BF130:
ldrsh r0, [r5]
cmp r0, r1, asr #16
ldreqsh r0, [r5, #4]
ldmeqia sp!, {r4, r5, r6, pc}
add r0, r2, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
add r5, r5, #6
_022BF150:
cmp r2, r3
blt _022BF130
ldrh r0, [r4, #0x12]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022BF0F4
arm_func_start ov10_022BF160
ov10_022BF160: ; 0x022BF160
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r5, r0
ldrh r0, [r5]
mov r4, #0
bl GetMoveAnimation
ldrsh r1, [r0]
ldrh r0, [r5]
str r1, [sp]
bl GetMoveAnimation
ldrsh r1, [r0, #2]
ldrh r0, [r5]
str r1, [sp, #4]
bl GetMoveAnimation
ldrsh r1, [r0, #4]
ldrh r0, [r5]
str r1, [sp, #8]
bl GetMoveAnimation
ldrsh r0, [r0, #6]
mov r8, r4
add r7, sp, #0
str r0, [sp, #0xc]
mov r5, r4
mov r6, #1
b _022BF1E8
_022BF1C4:
ldr r0, [r7, r8, lsl #2]
bl GetEffectAnimation
ldr r0, [r0]
cmp r0, #5
moveq r0, r6
movne r0, r5
ands r4, r0, #0xff
bne _022BF1F0
add r8, r8, #1
_022BF1E8:
cmp r8, #4
blt _022BF1C4
_022BF1F0:
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end ov10_022BF160
arm_func_start ov10_022BF1FC
ov10_022BF1FC: ; 0x022BF1FC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r0
ldrh r0, [r5]
mov r4, r1
bl GetMoveAnimation
ldrsh r1, [r0]
ldrh r0, [r5]
str r1, [sp]
bl GetMoveAnimation
ldrsh r1, [r0, #2]
ldrh r0, [r5]
str r1, [sp, #4]
bl GetMoveAnimation
ldrsh r1, [r0, #4]
ldrh r0, [r5]
str r1, [sp, #8]
bl GetMoveAnimation
ldrsh r1, [r0, #6]
add r0, sp, #0
str r1, [sp, #0xc]
ldr r0, [r0, r4, lsl #2]
bl GetEffectAnimation
ldr r0, [r0]
cmp r0, #5
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov10_022BF1FC
arm_func_start ov10_022BF274
ov10_022BF274: ; 0x022BF274
stmdb sp!, {r4, lr}
mov r1, #0x2c
mov r4, r0
bl MemZero
mvn r0, #0
strb r0, [r4, #0x14]
add r0, r0, #0x10000
str r0, [r4, #0x18]
strh r0, [r4, #0x1c]
strh r0, [r4, #0x1e]
strh r0, [r4, #0x20]
mov r0, #0
strh r0, [r4, #0x22]
strh r0, [r4, #0x24]
strh r0, [r4, #0x26]
ldmia sp!, {r4, pc}
arm_func_end ov10_022BF274
arm_func_start ov10_022BF2B4
ov10_022BF2B4: ; 0x022BF2B4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, [r5]
mov r4, r1
bl GetEffectAnimation
ldrsb r3, [r0, #0x19]
mov r1, r5
mov r2, r4
mov r0, #7
strb r3, [r5, #0x14]
bl ov10_022BE780
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov10_022BF2B4
arm_func_start ov10_022BF2E4
ov10_022BF2E4: ; 0x022BF2E4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, [r5]
mov r4, r1
bl GetEffectAnimation
ldrsb r3, [r0, #0x19]
mov r1, r5
mov r2, r4
mov r0, #7
strb r3, [r5, #0x14]
bl ov10_022BE44C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov10_022BF2E4
arm_func_start ov10_022BF314
ov10_022BF314: ; 0x022BF314
stmdb sp!, {r3, lr}
mvn r1, #0
cmp r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl ov10_022BE9A0
ldr r2, _022BF358 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
mla r0, r1, r0, r2
ldr r1, [r0, #4]
cmp r1, #0
ldrne r2, [r0, #0xc]
mvnne r1, #0
cmpne r2, r1
moveq r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_022BF358: .word ov10_022DC1C0
arm_func_end ov10_022BF314
arm_func_start ov10_022BF35C
ov10_022BF35C: ; 0x022BF35C
stmdb sp!, {r4, lr}
mov r4, r0
bl ov10_022BF314
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldrb r1, [r0, #0x13a]
cmp r1, #0
beq _022BF388
mov r0, r4
bl ov10_022BF3EC
ldmia sp!, {r4, pc}
_022BF388:
ldr r1, [r0]
bl ov10_022BDFC0
ldmia sp!, {r4, pc}
arm_func_end ov10_022BF35C
arm_func_start ov10_022BF394
ov10_022BF394: ; 0x022BF394
stmdb sp!, {r4, lr}
bl ov10_022BF314
movs r4, r0
ldmeqia sp!, {r4, pc}
mov r0, #1
strb r0, [r4, #0x13a]
ldr r0, [r4, #0x40]
bl ov10_022BFE54
cmp r0, #0
beq _022BF3CC
add r0, r4, #0xe8
mov r1, #1
bl sub_020640D4
ldmia sp!, {r4, pc}
_022BF3CC:
ldr r0, [r4, #0x40]
bl ov10_022BFE3C
cmp r0, #0
ldmeqia sp!, {r4, pc}
add r0, r4, #0x68
mov r1, #1
bl sub_0201D198
ldmia sp!, {r4, pc}
arm_func_end ov10_022BF394
arm_func_start ov10_022BF3EC
ov10_022BF3EC: ; 0x022BF3EC
stmdb sp!, {r4, lr}
bl ov10_022BF314
movs r4, r0
ldmeqia sp!, {r4, pc}
mov r0, #0
strb r0, [r4, #0x13a]
ldr r0, [r4, #0x40]
bl ov10_022BFE54
cmp r0, #0
beq _022BF424
add r0, r4, #0xe8
mov r1, #0
bl sub_020640D4
ldmia sp!, {r4, pc}
_022BF424:
ldr r0, [r4, #0x40]
bl ov10_022BFE3C
cmp r0, #0
ldmeqia sp!, {r4, pc}
add r0, r4, #0x68
mov r1, #0
bl sub_0201D198
ldmia sp!, {r4, pc}
arm_func_end ov10_022BF3EC
arm_func_start ov10_022BF444
ov10_022BF444: ; 0x022BF444
stmdb sp!, {r3, lr}
bl ov10_022BF314
cmp r0, #0
ldrneb r0, [r0, #0x13a]
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end ov10_022BF444
arm_func_start ov10_022BF45C
ov10_022BF45C: ; 0x022BF45C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
mov r4, r3
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
ldmeqia sp!, {r4, r5, r6, pc}
ldr r2, _022BF4E8 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
cmp r6, #0
mla r1, r0, r1, r2
ldrneh r0, [r6]
ldr r3, [sp, #0x10]
strneh r0, [r1, #0x20]
ldrneh r0, [r6, #2]
strneh r0, [r1, #0x22]
cmp r5, #0
ldrneh r0, [r5]
strneh r0, [r1, #0x24]
ldrneh r0, [r5, #2]
strneh r0, [r1, #0x26]
ldr r0, _022BF4EC ; =0x0000FFFF
cmp r4, r0
strne r4, [r1, #0x2c]
cmp r3, #0
ldmeqia sp!, {r4, r5, r6, pc}
add r2, r1, #0x30
mov r1, #6
_022BF4D4:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BF4D4
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022BF4E8: .word ov10_022DC1C0
_022BF4EC: .word 0x0000FFFF
arm_func_end ov10_022BF45C
arm_func_start ov10_022BF4F0
ov10_022BF4F0: ; 0x022BF4F0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
ldr r3, [r6, #0xc]
mvn r2, #0
mov r4, r1
cmp r3, r2
beq _022BF750
ldr r2, [r6, #0x18]
cmp r2, #0
bgt _022BF6D4
ldr r2, [r6, #0x40]
cmp r2, #5
bne _022BF52C
bl ov10_022BDF34
b _022BF6D4
_022BF52C:
cmp r2, #6
bne _022BF53C
bl ov10_022BDF34
b _022BF6D4
_022BF53C:
add r0, r6, #0x68
bl sub_0201D1B0
cmp r0, #0
bne _022BF598
ldr r0, [r6, #8]
sub r0, r0, #3
cmp r0, #2
bhi _022BF580
ldr r0, [r6, #0x3c]
tst r0, #1
bne _022BF6D4
ldr r0, [r6, #0xc]
mov r1, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BDCBC
b _022BF6D4
_022BF580:
ldr r0, [r6, #0xc]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BDCBC
b _022BF6D4
_022BF598:
add r0, r6, #0x68
bl SwitchAnimationControlToNextFrame
ldr r1, [r6, #0x10]
mov r0, #0
mov r2, r1, lsr #0x1f
rsb r1, r2, r1, lsl #29
adds r1, r2, r1, ror #29
bne _022BF5DC
ldr r1, [r6, #0x1c]
cmp r1, #3
cmpne r1, #4
cmpne r1, #5
bne _022BF5D4
sub r0, r0, #3
b _022BF5E0
_022BF5D4:
add r0, r0, #3
b _022BF5E0
_022BF5DC:
add r0, r0, #3
_022BF5E0:
ldr r1, _022BF758 ; =ov10_022C7870
ldrsb r2, [r6, #0x28]
ldrh r5, [r1, #0xc]
ldrh r3, [r1, #0xe]
mvn r1, #0
cmp r2, r1
ldrnesh r2, [r6, #0x24]
strh r5, [sp]
ldrnesh r1, [r6, #0x26]
strh r3, [sp, #2]
strneh r2, [sp]
strneh r1, [sp, #2]
ldrsh r1, [sp]
cmp r1, #0x63
ldrnesh r1, [sp, #2]
cmpne r1, #0x63
beq _022BF6D4
ldr r5, [r6, #0x2c]
ldr r2, _022BF75C ; =0x0000FFFF
cmp r5, r2
bne _022BF648
ldrsh r3, [r6, #0x22]
ldrsh r2, [r4, #2]
sub r2, r3, r2
add r2, r2, r2, lsr #31
add r5, r0, r2, asr #1
_022BF648:
add r2, r6, #0x100
ldrsh r7, [r6, #0x20]
ldrsh r0, [r2, #0x36]
ldrsh lr, [r4]
ldrsh ip, [r6, #0x22]
ldrsh r4, [r4, #2]
add r3, r7, r0
ldrsh r0, [sp]
strh r3, [r6, #0x20]
sub r7, r7, lr
sub lr, ip, r4
ldrsh ip, [r6, #0x22]
ldrsh r3, [r2, #0x38]
add r4, r0, r7
mvn r2, #0x3f
add r0, ip, r3
strh r0, [r6, #0x22]
cmp r4, r2
add r7, r1, lr
ble _022BF6D4
rsb r0, r2, #0xff
cmp r4, r0
bge _022BF6D4
cmp r7, r2
ble _022BF6D4
cmp r7, #0x100
bge _022BF6D4
add r0, r6, #0x68
add r1, r6, #0x30
bl sub_0201D110
strh r4, [r6, #0x84]
strh r7, [r6, #0x86]
add r0, r6, #0x68
strh r5, [r6, #0xa0]
bl sub_0201CF5C
_022BF6D4:
ldr r0, [r6, #0x18]
cmp r0, #0
subgt r0, r0, #1
strgt r0, [r6, #0x18]
ldr r1, [r6, #0x58]
mvn r0, #0
cmp r1, r0
beq _022BF730
ldr r0, [r6, #0x5c]
cmp r0, #0
bne _022BF730
ldr r0, _022BF760 ; =ov10_022DC1C0
ldr r0, [r0]
add r0, r0, #0x2000
ldr r0, [r0, #0x784]
cmp r0, #0
bne _022BF724
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
bl PlaySeByIdVolumeWrapper
_022BF724:
mvn r0, #0
str r0, [r6, #0x58]
str r0, [r6, #0x5c]
_022BF730:
ldr r0, [r6, #0x5c]
cmp r0, #0
subgt r0, r0, #1
strgt r0, [r6, #0x5c]
ldrb r0, [r6, #0x60]
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
_022BF750:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022BF758: .word ov10_022C7870
_022BF75C: .word 0x0000FFFF
_022BF760: .word ov10_022DC1C0
arm_func_end ov10_022BF4F0
arm_func_start ov10_022BF764
ov10_022BF764: ; 0x022BF764
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r1, _022BF7CC ; =ov10_022DC1C0
mov r4, r0
ldr r6, [r1]
cmp r6, #0
moveq r0, #0
beq _022BF7C4
ldr r0, _022BF7D0 ; =ov10_022C7870
add r2, sp, #0
ldrh r1, [r0, #0x10]
cmp r4, #0
moveq r4, r2
strh r1, [sp]
ldrh r0, [r0, #0x12]
mov r5, #0
strh r0, [sp, #2]
_022BF7A8:
mov r0, r6
mov r1, r4
bl ov10_022BF4F0
add r5, r5, #1
cmp r5, #0x20
add r6, r6, #0x13c
blt _022BF7A8
_022BF7C4:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_022BF7CC: .word ov10_022DC1C0
_022BF7D0: .word ov10_022C7870
arm_func_end ov10_022BF764
arm_func_start ov10_022BF7D4
ov10_022BF7D4: ; 0x022BF7D4
ldr ip, _022BF7DC ; =ov10_022C039C
bx ip
.align 2, 0
_022BF7DC: .word ov10_022C039C
arm_func_end ov10_022BF7D4
arm_func_start ov10_022BF7E0
ov10_022BF7E0: ; 0x022BF7E0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _022BF85C ; =ov10_022DC1C0
mov r6, r0
ldr r5, [r1]
cmp r5, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, _022BF860 ; =ov10_022C7870
add r2, sp, #0
ldrh r1, [r0, #8]
cmp r6, #0
mov r4, #0
strh r1, [sp]
ldrh r0, [r0, #0xa]
moveq r6, r2
mov r7, #0
strh r0, [sp, #2]
_022BF824:
ldr r0, [r5, #0x40]
bl ov10_022BFE3C
cmp r0, #0
beq _022BF844
mov r0, r5
mov r1, r6
bl ov10_022BF4F0
mov r4, r0
_022BF844:
add r7, r7, #1
cmp r7, #0x20
add r5, r5, #0x13c
blt _022BF824
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022BF85C: .word ov10_022DC1C0
_022BF860: .word ov10_022C7870
arm_func_end ov10_022BF7E0
arm_func_start ov10_022BF864
ov10_022BF864: ; 0x022BF864
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _022BF8E0 ; =ov10_022DC1C0
mov r6, r0
ldr r5, [r1]
cmp r5, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, _022BF8E4 ; =ov10_022C7870
add r2, sp, #0
ldrh r1, [r0]
cmp r6, #0
mov r4, #0
strh r1, [sp]
ldrh r0, [r0, #2]
moveq r6, r2
mov r7, #0
strh r0, [sp, #2]
_022BF8A8:
ldr r0, [r5, #0x40]
bl ov10_022BFE54
cmp r0, #0
beq _022BF8C8
mov r0, r5
mov r1, r6
bl ov10_022BF4F0
mov r4, r0
_022BF8C8:
add r7, r7, #1
cmp r7, #0x20
add r5, r5, #0x13c
blt _022BF8A8
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022BF8E0: .word ov10_022DC1C0
_022BF8E4: .word ov10_022C7870
arm_func_end ov10_022BF864
arm_func_start ov10_022BF8E8
ov10_022BF8E8: ; 0x022BF8E8
ldr r1, _022BF900 ; =ov10_022DC1C0
ldr r1, [r1]
add r0, r1, r0
add r0, r0, #0x2000
ldrb r0, [r0, #0x79e]
bx lr
.align 2, 0
_022BF900: .word ov10_022DC1C0
arm_func_end ov10_022BF8E8
arm_func_start AnimationHasMoreFrames
AnimationHasMoreFrames: ; 0x022BF904
mvn r1, #0
cmp r0, r1
moveq r0, #0
bxeq lr
ldr r1, _022BF960 ; =ov10_022DC1C0
mov r2, #0
ldr r3, [r1]
b _022BF950
_022BF924:
ldr r1, [r3, #0xc]
cmp r1, r0
bne _022BF948
ldrb r0, [r3, #0x60]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
_022BF948:
add r2, r2, #1
add r3, r3, #0x13c
_022BF950:
cmp r2, #0x20
blt _022BF924
mov r0, #0
bx lr
.align 2, 0
_022BF960: .word ov10_022DC1C0
arm_func_end AnimationHasMoreFrames
arm_func_start ov10_022BF964
ov10_022BF964: ; 0x022BF964
stmdb sp!, {r3, lr}
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
beq _022BF9C0
ldr r2, _022BF9C8 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
mla r1, r0, r1, r2
ldr r0, [r1, #0x18]
cmp r0, #0
movgt r0, #1
ldmgtia sp!, {r3, pc}
ldr r0, [r1, #0x40]
sub r0, r0, #5
cmp r0, #1
movls r0, #1
ldmlsia sp!, {r3, pc}
add r0, r1, #0x68
bl sub_0201D1B0
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
_022BF9C0:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_022BF9C8: .word ov10_022DC1C0
arm_func_end ov10_022BF964
arm_func_start ov10_022BF9CC
ov10_022BF9CC: ; 0x022BF9CC
stmdb sp!, {r3, lr}
ldr r2, _022BFA38 ; =ov10_022DC1C0
mov ip, #0
ldr lr, [r2]
mvn r2, #0
b _022BFA14
_022BF9E4:
ldr r3, [lr, #0xc]
cmp r3, r2
beq _022BFA0C
cmp r0, #0
bne _022BFA04
ldrb r3, [lr, #0x60]
cmp r3, #0
bne _022BFA0C
_022BFA04:
mov r0, #1
ldmia sp!, {r3, pc}
_022BFA0C:
add ip, ip, #1
add lr, lr, #0x13c
_022BFA14:
cmp ip, #0x20
blt _022BF9E4
mov r0, #2
bl ov10_022C07E8
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_022BFA38: .word ov10_022DC1C0
arm_func_end ov10_022BF9CC
arm_func_start ov10_022BFA3C
ov10_022BFA3C: ; 0x022BFA3C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, r1
bl GetMoveAnimation
mov r4, r0
ldrh r0, [r4, #0x16]
bl GetSpecialMonsterMoveAnimation
mov r5, r0
mov r0, r6
mov r1, #0x258
bl _s32_div_f
mov r1, r1, lsl #0x10
ldrsh r3, [r4, #0x14]
mov r2, #0
b _022BFA98
_022BFA78:
ldrsh r0, [r5]
cmp r0, r1, asr #16
ldreqb r0, [r5, #2]
ldmeqia sp!, {r4, r5, r6, pc}
add r0, r2, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
add r5, r5, #6
_022BFA98:
cmp r2, r3
blt _022BFA78
ldrb r0, [r4, #0x10]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022BFA3C
arm_func_start ov10_022BFAA8
ov10_022BFAA8: ; 0x022BFAA8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x2c
ldr r5, _022BFB64 ; =ov10_022C7980
add lr, sp, #0
mov r4, r0
mov ip, #2
_022BFAC0:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _022BFAC0
ldmia r5, {r0, r1, r2}
stmia lr, {r0, r1, r2}
ldrh r0, [r4]
bl GetMoveAnimation
ldrsh r0, [r0]
str r0, [sp]
ldr r0, [r4, #0x10]
str r0, [sp, #4]
ldr r0, [r4, #0xc]
str r0, [sp, #8]
ldrh r0, [r4, #4]
strh r0, [sp, #0xc]
ldrh r0, [r4, #6]
strh r0, [sp, #0xe]
ldrh r0, [r4, #8]
strh r0, [sp, #0x10]
ldrh r0, [r4, #0xa]
strh r0, [sp, #0x12]
ldrh r0, [r4]
bl GetMoveAnimation
ldrsh r0, [r0]
bl GetEffectAnimation
ldrsb r0, [r0, #0x19]
ldr r3, _022BFB68 ; =ov10_022C7884
add r2, sp, #0x1c
strb r0, [sp, #0x14]
mov r1, #6
_022BFB3C:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BFB3C
add r1, sp, #0
mov r0, #5
mov r2, #0
bl ov10_022BE780
add sp, sp, #0x2c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_022BFB64: .word ov10_022C7980
_022BFB68: .word ov10_022C7884
arm_func_end ov10_022BFAA8
arm_func_start ov10_022BFB6C
ov10_022BFB6C: ; 0x022BFB6C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x20
mov r6, r1
mov r5, r2
mov r4, r3
bl ov10_022BE9A0
mvn r1, #0
cmp r0, r1
beq _022BFC4C
ldr r2, _022BFC54 ; =ov10_022DC1C0
mov r1, #0x13c
ldr r2, [r2]
mla ip, r0, r1, r2
add r0, ip, #0x100
ldrsh r1, [r0, #0x36]
cmp r1, #0
ldreqsh r0, [r0, #0x38]
cmpeq r0, #0
ldreqh r0, [r6]
streqh r0, [ip, #0x20]
ldreqh r0, [r6, #2]
streqh r0, [ip, #0x22]
ldr r0, [ip, #4]
cmp r0, #6
addeq r0, r4, #1
streq r0, [ip, #0x2c]
beq _022BFC24
ldr r0, [ip, #0x10]
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
adds r0, r1, r0, ror #29
addne r0, r4, #1
strne r0, [ip, #0x2c]
bne _022BFC24
ldr r6, _022BFC58 ; =ov10_022C7890
add r7, sp, #0
ldmia r6!, {r0, r1, r2, r3}
mov lr, r7
stmia r7!, {r0, r1, r2, r3}
ldmia r6, {r0, r1, r2, r3}
stmia r7, {r0, r1, r2, r3}
ldr r6, [sp, #0x38]
and r0, r6, #7
ldr r0, [lr, r0, lsl #2]
add r0, r4, r0
str r0, [ip, #0x2c]
_022BFC24:
ldrsb r1, [ip, #0x28]
mvn r0, #0
cmp r1, r0
ldrneh r0, [r5]
strneh r0, [ip, #0x24]
ldrneh r0, [r5, #2]
strneh r0, [ip, #0x26]
moveq r0, #0
streqh r0, [ip, #0x24]
streqh r0, [ip, #0x26]
_022BFC4C:
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022BFC54: .word ov10_022DC1C0
_022BFC58: .word ov10_022C7890
arm_func_end ov10_022BFB6C
arm_func_start ov10_022BFC5C
ov10_022BFC5C: ; 0x022BFC5C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x2c
ldr r5, _022BFD18 ; =ov10_022C79AC
add lr, sp, #0
mov r4, r0
mov ip, #2
_022BFC74:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _022BFC74
ldmia r5, {r0, r1, r2}
stmia lr, {r0, r1, r2}
ldrh r0, [r4]
bl GetMoveAnimation
ldrsh r0, [r0, #4]
str r0, [sp]
ldr r0, [r4, #0x10]
str r0, [sp, #4]
ldr r0, [r4, #0xc]
str r0, [sp, #8]
ldrh r0, [r4, #4]
strh r0, [sp, #0xc]
ldrh r0, [r4, #6]
strh r0, [sp, #0xe]
ldrh r0, [r4, #8]
strh r0, [sp, #0x10]
ldrh r0, [r4, #0xa]
strh r0, [sp, #0x12]
ldrh r0, [r4]
bl GetMoveAnimation
ldrsh r0, [r0, #4]
bl GetEffectAnimation
ldrsb r0, [r0, #0x19]
ldr r3, _022BFD1C ; =ov10_022C7884
add r2, sp, #0x1c
strb r0, [sp, #0x14]
mov r1, #6
_022BFCF0:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022BFCF0
add r1, sp, #0
mov r0, #6
mov r2, #0
bl ov10_022BE780
add sp, sp, #0x2c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_022BFD18: .word ov10_022C79AC
_022BFD1C: .word ov10_022C7884
arm_func_end ov10_022BFC5C
arm_func_start ov10_022BFD20
ov10_022BFD20: ; 0x022BFD20
stmdb sp!, {r4, lr}
mov r0, #2
mov r1, #0
bl ov10_022C07E8
mov r4, r0
mov r0, #2
mov r1, #1
bl ov10_022C07E8
orr r4, r4, r0
mov r0, #3
mov r1, #0
bl ov10_022C07E8
orr r0, r4, r0
ldmia sp!, {r4, pc}
arm_func_end ov10_022BFD20
arm_func_start ov10_022BFD58
ov10_022BFD58: ; 0x022BFD58
stmdb sp!, {r3, lr}
bl GetMoveAnimation
ldrb r0, [r0, #8]
and r0, r0, #7
ldmia sp!, {r3, pc}
arm_func_end ov10_022BFD58
arm_func_start ov10_022BFD6C
ov10_022BFD6C: ; 0x022BFD6C
stmdb sp!, {r3, lr}
bl GetMoveAnimation
ldrb r0, [r0, #8]
tst r0, #8
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end ov10_022BFD6C
arm_func_start ov10_022BFD8C
ov10_022BFD8C: ; 0x022BFD8C
stmdb sp!, {r3, lr}
bl GetMoveAnimation
ldrb r0, [r0, #8]
tst r0, #0x10
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end ov10_022BFD8C
arm_func_start ov10_022BFDAC
ov10_022BFDAC: ; 0x022BFDAC
stmdb sp!, {r3, lr}
bl GetMoveAnimation
ldrb r0, [r0, #8]
tst r0, #0x20
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end ov10_022BFDAC
arm_func_start ov10_022BFDCC
ov10_022BFDCC: ; 0x022BFDCC
stmdb sp!, {r3, lr}
bl GetMoveAnimation
ldrb r0, [r0, #8]
tst r0, #0x40
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end ov10_022BFDCC
arm_func_start ov10_022BFDEC
ov10_022BFDEC: ; 0x022BFDEC
cmp r0, #0x65
ldrne r1, _022BFE08 ; =0x0000010E
cmpne r0, r1
cmpne r0, #0x1bc
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_022BFE08: .word 0x0000010E
arm_func_end ov10_022BFDEC
arm_func_start ov10_022BFE0C
ov10_022BFE0C: ; 0x022BFE0C
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end ov10_022BFE0C
arm_func_start ov10_022BFE18
ov10_022BFE18: ; 0x022BFE18
add r0, r0, #0x10c
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end ov10_022BFE18
arm_func_start ov10_022BFE28
ov10_022BFE28: ; 0x022BFE28
add r0, r0, #0x22
add r0, r0, #0x100
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end ov10_022BFE28
arm_func_start ov10_022BFE3C
ov10_022BFE3C: ; 0x022BFE3C
sub r0, r0, #1
cmp r0, #3
movls r0, #1
movhi r0, #0
and r0, r0, #0xff
bx lr
arm_func_end ov10_022BFE3C
arm_func_start ov10_022BFE54
ov10_022BFE54: ; 0x022BFE54
sub r0, r0, #5
cmp r0, #1
movls r0, #1
movhi r0, #0
and r0, r0, #0xff
bx lr
arm_func_end ov10_022BFE54
arm_func_start ov10_022BFE6C
ov10_022BFE6C: ; 0x022BFE6C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02001808
cmp r0, r4
movge r0, #0
ldmgeia sp!, {r4, pc}
ldr r1, _022BFE9C ; =ov10_022DC1C0
mov r0, #1
ldr r1, [r1]
add r1, r1, #0x2000
strb r0, [r1, #0x7a0]
ldmia sp!, {r4, pc}
.align 2, 0
_022BFE9C: .word ov10_022DC1C0
arm_func_end ov10_022BFE6C
arm_func_start GetEffectAnimation
GetEffectAnimation: ; 0x022BFEA0
ldr r2, _022BFEB0 ; =EFFECT_ANIMATION_INFO
mov r1, #0x1c
mla r0, r1, r0, r2
bx lr
.align 2, 0
_022BFEB0: .word EFFECT_ANIMATION_INFO
arm_func_end GetEffectAnimation
arm_func_start GetMoveAnimation
GetMoveAnimation: ; 0x022BFEB4
ldr r2, _022BFEC4 ; =MOVE_ANIMATION_INFO
mov r1, #0x18
mla r0, r1, r0, r2
bx lr
.align 2, 0
_022BFEC4: .word MOVE_ANIMATION_INFO
arm_func_end GetMoveAnimation
arm_func_start GetSpecialMonsterMoveAnimation
GetSpecialMonsterMoveAnimation: ; 0x022BFEC8
ldr r2, _022BFED8 ; =SPECIAL_MONSTER_MOVE_ANIMATION_INFO
mov r1, #6
mla r0, r1, r0, r2
bx lr
.align 2, 0
_022BFED8: .word SPECIAL_MONSTER_MOVE_ANIMATION_INFO
arm_func_end GetSpecialMonsterMoveAnimation
arm_func_start GetTrapAnimation
GetTrapAnimation: ; 0x022BFEDC
ldr r1, _022BFEEC ; =TRAP_ANIMATION_INFO
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
bx lr
.align 2, 0
_022BFEEC: .word TRAP_ANIMATION_INFO
arm_func_end GetTrapAnimation
arm_func_start GetItemAnimation1
GetItemAnimation1: ; 0x022BFEF0
ldr r1, _022BFF00 ; =ITEM_ANIMATION_INFO
mov r0, r0, lsl #2
ldrsh r0, [r1, r0]
bx lr
.align 2, 0
_022BFF00: .word ITEM_ANIMATION_INFO
arm_func_end GetItemAnimation1
arm_func_start GetItemAnimation2
GetItemAnimation2: ; 0x022BFF04
ldr r1, _022BFF14 ; =ov10_022C7A86
mov r0, r0, lsl #2
ldrsh r0, [r1, r0]
bx lr
.align 2, 0
_022BFF14: .word ov10_022C7A86
arm_func_end GetItemAnimation2
arm_func_start GetMoveAnimationSpeed
GetMoveAnimationSpeed: ; 0x022BFF18
mov r1, #0x18
mul r1, r0, r1
ldr r0, _022BFF2C ; =ov10_022C9070
ldr r0, [r0, r1]
bx lr
.align 2, 0
_022BFF2C: .word ov10_022C9070
arm_func_end GetMoveAnimationSpeed
arm_func_start ov10_022BFF30
ov10_022BFF30: ; 0x022BFF30
stmdb sp!, {r4, lr}
ldr r1, _022BFF74 ; =ov10_022DC1C4
mov r4, r0
ldr r0, [r1]
cmp r0, #0
bne _022BFF64
mov r0, #0x84
mov r1, #0xb
bl MemAlloc
ldr r2, _022BFF74 ; =ov10_022DC1C4
mov r1, #0x84
str r0, [r2]
bl MemZero
_022BFF64:
ldr r0, _022BFF74 ; =ov10_022DC1C4
ldr r0, [r0]
str r4, [r0]
ldmia sp!, {r4, pc}
.align 2, 0
_022BFF74: .word ov10_022DC1C4
arm_func_end ov10_022BFF30
arm_func_start ov10_022BFF78
ov10_022BFF78: ; 0x022BFF78
stmdb sp!, {r3, lr}
ldr r0, _022BFFA0 ; =ov10_022DC1C4
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _022BFFA0 ; =ov10_022DC1C4
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022BFFA0: .word ov10_022DC1C4
arm_func_end ov10_022BFF78
arm_func_start ov10_022BFFA4
ov10_022BFFA4: ; 0x022BFFA4
stmdb sp!, {r3, lr}
ldr r0, _022BFFFC ; =ov10_022DC1C4
mov ip, #0
ldr r1, [r0]
mov r3, ip
str ip, [r1]
mov r1, ip
_022BFFC0:
mov lr, r3
_022BFFC4:
ldr r2, [r0]
add r2, r2, #4
add r2, r2, ip, lsl #6
str r1, [r2, lr, lsl #5]
add r2, r2, lr, lsl #5
strh r1, [r2, #6]
add lr, lr, #1
str r1, [r2, #0xc]
cmp lr, #2
blt _022BFFC4
add ip, ip, #1
cmp ip, #2
blt _022BFFC0
ldmia sp!, {r3, pc}
.align 2, 0
_022BFFFC: .word ov10_022DC1C4
arm_func_end ov10_022BFFA4
arm_func_start ov10_022C0000
ov10_022C0000: ; 0x022C0000
stmdb sp!, {r3, lr}
ldr r1, _022C0064 ; =ov10_022DC1C4
mov lr, r0
ldr r3, [r1]
mov r2, #0
b _022C0054
_022C0018:
ldr r0, [lr, #8]
add r1, r3, r0, lsl #6
add r0, r1, r2, lsl #5
ldr r0, [r0, #4]
cmp r0, #0
bne _022C0050
add r0, r1, r2, lsl #5
add ip, r0, #4
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
mov r0, #1
ldmia sp!, {r3, pc}
_022C0050:
add r2, r2, #1
_022C0054:
cmp r2, #2
blt _022C0018
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_022C0064: .word ov10_022DC1C4
arm_func_end ov10_022C0000
arm_func_start ov10_022C0068
ov10_022C0068: ; 0x022C0068
stmdb sp!, {r4, lr}
sub sp, sp, #0x20
mov r4, r1
cmp r0, #2
beq _022C0088
cmp r0, #3
beq _022C00C8
b _022C0104
_022C0088:
mov r1, #0
sub r0, r1, #1
mov ip, #5
mov r3, #0xe
str ip, [sp]
str r2, [sp, #8]
str r3, [sp, #0x10]
str r1, [sp, #0x14]
str r0, [sp, #0x1c]
bl ov10_022BD744
cmp r0, #1
moveq r0, #0
movne r0, #2
str r0, [sp, #0x18]
strh r4, [sp, #4]
b _022C0104
_022C00C8:
mov r1, #0
sub r0, r1, #1
mov ip, #6
mov r3, #0xe
str ip, [sp]
str r2, [sp, #8]
str r3, [sp, #0x10]
str r1, [sp, #0x14]
str r0, [sp, #0x1c]
bl ov10_022BD744
cmp r0, #1
moveq r0, #0
movne r0, #2
str r0, [sp, #0x18]
strh r4, [sp, #4]
_022C0104:
add r0, sp, #0
bl ov10_022C0000
add sp, sp, #0x20
ldmia sp!, {r4, pc}
arm_func_end ov10_022C0068
arm_func_start ov10_022C0114
ov10_022C0114: ; 0x022C0114
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x20
sub r4, r1, #1
mov r7, r0
mov r6, r2
mov r5, r3
cmp r4, #1
ldr r4, [sp, #0x38]
bls _022C01F4
cmp r7, #0
beq _022C01F4
mov r0, r1
mov r1, r6
mov r2, r4
bl ov10_022C067C
mov r8, r0
mvn r1, #0
cmp r8, r1
beq _022C01F4
sub r1, r1, #1
cmp r8, r1
beq _022C01E8
mov r1, r6
mov r2, r4
bl ov10_022C075C
cmp r8, #0
beq _022C018C
cmp r8, #1
beq _022C01B8
b _022C01E0
_022C018C:
mov r1, #1
sub r0, r1, #2
mov r2, #3
str r2, [sp]
str r4, [sp, #8]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
str r5, [sp, #0x1c]
str r0, [sp, #0x18]
strh r7, [sp, #6]
b _022C01E0
_022C01B8:
mov r1, #0
sub r0, r1, #1
mov r2, #4
str r2, [sp]
str r4, [sp, #8]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
str r5, [sp, #0x1c]
str r0, [sp, #0x18]
strh r7, [sp, #6]
_022C01E0:
add r0, sp, #0
bl ov10_022C0000
_022C01E8:
mov r0, r6
mov r1, r4
bl ov10_022C0780
_022C01F4:
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end ov10_022C0114
arm_func_start ov10_022C01FC
ov10_022C01FC: ; 0x022C01FC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r1
mov r4, r0
mov r7, r2
mov r6, r3
cmp r5, #5
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
bl sub_0206409C
ldr r0, [r0, #8]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r5
mov r1, r7
mov r2, r6
bl ov10_022C067C
mov r5, r0
mvn r1, #0
cmp r5, r1
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
sub r1, r1, #1
cmp r5, r1
beq _022C0270
mov r1, r7
mov r2, r6
bl ov10_022C075C
mov r0, r5
mov r1, r4
mov r2, r6
bl ov10_022C0068
_022C0270:
mov r0, r7
mov r1, r6
bl ov10_022C0780
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov10_022C01FC
arm_func_start ov10_022C0280
ov10_022C0280: ; 0x022C0280
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r1
mov r4, r0
mov r7, r2
mov r6, r3
cmp r5, #6
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
bl sub_0206409C
ldr r0, [r0, #0xc]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r5
mov r1, r7
mov r2, r6
bl ov10_022C067C
mov r5, r0
mvn r1, #0
cmp r5, r1
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
sub r1, r1, #1
cmp r5, r1
beq _022C02F4
mov r1, r7
mov r2, r6
bl ov10_022C075C
mov r0, r5
mov r1, r4
mov r2, r6
bl ov10_022C0068
_022C02F4:
mov r0, r7
mov r1, r6
bl ov10_022C0780
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov10_022C0280
arm_func_start ov10_022C0304
ov10_022C0304: ; 0x022C0304
stmdb sp!, {r4, lr}
mov r4, r1
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
cmp r0, #6
addls pc, pc, r0, lsl #2
b _022C0390
_022C0324: ; jump table
b _022C0390 ; case 0
b _022C0390 ; case 1
b _022C0390 ; case 2
b _022C0340 ; case 3
b _022C0390 ; case 4
b _022C034C ; case 5
b _022C0390 ; case 6
_022C0340:
mov r0, #0
strh r0, [r4, #6]
b _022C0390
_022C034C:
bl ov10_022BD744
cmp r0, #0
bne _022C0364
mov r0, #5
mov r1, #0
bl ov29_022EA428
_022C0364:
ldr r0, [r4]
cmp r0, #0
beq _022C0390
ldrsh r0, [r4, #4]
bl sub_0206409C
ldr r0, [r4, #8]
bl ov10_022BDCA4
mov r2, r0
ldrsh r0, [r4, #4]
ldr r1, [r4, #0x14]
bl sub_02064014
_022C0390:
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
arm_func_end ov10_022C0304
arm_func_start ov10_022C039C
ov10_022C039C: ; 0x022C039C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _022C03F0 ; =ov10_022DC1C4
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r6, #0
mov r5, r6
_022C03B8:
mov r7, r5
_022C03BC:
ldr r2, [r4]
add r0, r2, #4
add r1, r0, r6, lsl #6
ldr r0, [r2]
add r1, r1, r7, lsl #5
bl ov10_022C0304
add r7, r7, #1
cmp r7, #2
blt _022C03BC
add r6, r6, #1
cmp r6, #2
blt _022C03B8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022C03F0: .word ov10_022DC1C4
arm_func_end ov10_022C039C
arm_func_start ov10_022C03F4
ov10_022C03F4: ; 0x022C03F4
stmdb sp!, {r3, lr}
cmp r0, #5
addls pc, pc, r0, lsl #2
b _022C042C
_022C0404: ; jump table
b _022C042C ; case 0
b _022C042C ; case 1
b _022C042C ; case 2
b _022C041C ; case 3
b _022C041C ; case 4
b _022C042C ; case 5
_022C041C:
mov r0, r1, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BFE0C
mov r2, r0
_022C042C:
mov r1, #0
ldr r0, _022C044C ; =WAN_TABLE
str r1, [sp]
ldr r0, [r0]
mov r1, #3
mov r3, #0xf
bl LoadWanTableEntryFromPack
ldmia sp!, {r3, pc}
.align 2, 0
_022C044C: .word WAN_TABLE
arm_func_end ov10_022C03F4
arm_func_start ov10_022C0450
ov10_022C0450: ; 0x022C0450
stmdb sp!, {r3, lr}
cmp r0, #6
mov r2, #0
addls pc, pc, r0, lsl #2
b _022C04C4
_022C0464: ; jump table
b _022C04C4 ; case 0
b _022C04C4 ; case 1
b _022C04C4 ; case 2
b _022C04C4 ; case 3
b _022C04C4 ; case 4
b _022C0480 ; case 5
b _022C04A4 ; case 6
_022C0480:
mov r0, r1, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BFE18
mov r1, r0
mov r0, #3
mov r2, #0xf
bl sub_02063FC8
mov r2, r0
b _022C04C4
_022C04A4:
mov r0, r1, lsl #0x10
mov r0, r0, asr #0x10
bl ov10_022BFE28
mov r1, r0
mov r0, #3
mov r2, #0xf
bl sub_02063FC8
mov r2, r0
_022C04C4:
mov r0, r2
ldmia sp!, {r3, pc}
arm_func_end ov10_022C0450
arm_func_start ov10_022C04CC
ov10_022C04CC: ; 0x022C04CC
ldr ip, _022C04D4 ; =sub_02063FF4
bx ip
.align 2, 0
_022C04D4: .word sub_02063FF4
arm_func_end ov10_022C04CC
arm_func_start ov10_022C04D8
ov10_022C04D8: ; 0x022C04D8
stmdb sp!, {r4, lr}
ldr r0, _022C0558 ; =ov10_022DC1C8
ldr r0, [r0]
cmp r0, #0
bne _022C0508
mov r0, #0x40
mov r1, #0xb
bl MemAlloc
ldr r2, _022C0558 ; =ov10_022DC1C8
mov r1, #0x40
str r0, [r2]
bl MemZero
_022C0508:
mov lr, #0
ldr r0, _022C0558 ; =ov10_022DC1C8
mvn r3, #0
mov r2, lr
mov ip, lr
_022C051C:
mov r4, ip
_022C0520:
ldr r1, [r0]
add r1, r1, lr, lsl #5
str r3, [r1, r4, lsl #3]
ldr r1, [r0]
add r1, r1, lr, lsl #5
add r1, r1, r4, lsl #3
add r4, r4, #1
str r2, [r1, #4]
cmp r4, #4
blt _022C0520
add lr, lr, #1
cmp lr, #2
blt _022C051C
ldmia sp!, {r4, pc}
.align 2, 0
_022C0558: .word ov10_022DC1C8
arm_func_end ov10_022C04D8
arm_func_start ov10_022C055C
ov10_022C055C: ; 0x022C055C
stmdb sp!, {r3, lr}
ldr r0, _022C0584 ; =ov10_022DC1C8
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _022C0584 ; =ov10_022DC1C8
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022C0584: .word ov10_022DC1C8
arm_func_end ov10_022C055C
arm_func_start ov10_022C0588
ov10_022C0588: ; 0x022C0588
stmdb sp!, {r4, lr}
mov lr, #0
ldr r0, _022C05DC ; =ov10_022DC1C8
mvn r3, #0
mov r2, lr
mov ip, lr
_022C05A0:
mov r4, ip
_022C05A4:
ldr r1, [r0]
add r1, r1, lr, lsl #5
str r3, [r1, r4, lsl #3]
ldr r1, [r0]
add r1, r1, lr, lsl #5
add r1, r1, r4, lsl #3
add r4, r4, #1
str r2, [r1, #4]
cmp r4, #4
blt _022C05A4
add lr, lr, #1
cmp lr, #2
blt _022C05A0
ldmia sp!, {r4, pc}
.align 2, 0
_022C05DC: .word ov10_022DC1C8
arm_func_end ov10_022C0588
arm_func_start ov10_022C05E0
ov10_022C05E0: ; 0x022C05E0
cmp r0, #3
bne _022C0604
ldr r0, _022C0678 ; =ov10_022DC1C8
ldr r0, [r0]
ldr r0, [r0, r2, lsl #5]
cmp r1, r0
bne _022C0670
mov r0, #0
bx lr
_022C0604:
cmp r0, #4
bne _022C062C
ldr r0, _022C0678 ; =ov10_022DC1C8
ldr r0, [r0]
add r0, r0, r2, lsl #5
ldr r0, [r0, #8]
cmp r1, r0
bne _022C0670
mov r0, #1
bx lr
_022C062C:
cmp r0, #6
bne _022C0654
ldr r0, _022C0678 ; =ov10_022DC1C8
ldr r0, [r0]
add r0, r0, r2, lsl #5
ldr r0, [r0, #0x18]
cmp r1, r0
bne _022C0670
mov r0, #3
bx lr
_022C0654:
ldr r0, _022C0678 ; =ov10_022DC1C8
ldr r0, [r0]
add r0, r0, r2, lsl #5
ldr r0, [r0, #0x10]
cmp r1, r0
moveq r0, #2
bxeq lr
_022C0670:
mvn r0, #2
bx lr
.align 2, 0
_022C0678: .word ov10_022DC1C8
arm_func_end ov10_022C05E0
arm_func_start ov10_022C067C
ov10_022C067C: ; 0x022C067C
cmp r0, #3
bne _022C06B4
ldr r0, _022C0758 ; =ov10_022DC1C8
ldr r3, [r0]
ldr r0, [r3, r2, lsl #5]
cmp r1, r0
mvneq r0, #1
bxeq lr
add r0, r3, r2, lsl #5
ldr r0, [r0, #4]
cmp r0, #0
bne _022C0750
mov r0, #0
bx lr
_022C06B4:
cmp r0, #4
bne _022C06EC
ldr r0, _022C0758 ; =ov10_022DC1C8
ldr r0, [r0]
add r2, r0, r2, lsl #5
ldr r0, [r2, #8]
cmp r1, r0
mvneq r0, #1
bxeq lr
ldr r0, [r2, #0xc]
cmp r0, #0
bne _022C0750
mov r0, #1
bx lr
_022C06EC:
cmp r0, #6
bne _022C0724
ldr r0, _022C0758 ; =ov10_022DC1C8
ldr r0, [r0]
add r2, r0, r2, lsl #5
ldr r0, [r2, #0x18]
cmp r1, r0
mvneq r0, #1
bxeq lr
ldr r0, [r2, #0x1c]
cmp r0, #0
bne _022C0750
mov r0, #3
bx lr
_022C0724:
ldr r0, _022C0758 ; =ov10_022DC1C8
ldr r0, [r0]
add r2, r0, r2, lsl #5
ldr r0, [r2, #0x10]
cmp r1, r0
mvneq r0, #1
bxeq lr
ldr r0, [r2, #0x14]
cmp r0, #0
moveq r0, #2
bxeq lr
_022C0750:
mvn r0, #0
bx lr
.align 2, 0
_022C0758: .word ov10_022DC1C8
arm_func_end ov10_022C067C
arm_func_start ov10_022C075C
ov10_022C075C: ; 0x022C075C
ldr r3, _022C077C ; =ov10_022DC1C8
ldr r3, [r3]
add r3, r3, r2, lsl #5
add r2, r3, r0, lsl #3
ldr r2, [r2, #4]
cmp r2, #0
streq r1, [r3, r0, lsl #3]
bx lr
.align 2, 0
_022C077C: .word ov10_022DC1C8
arm_func_end ov10_022C075C
arm_func_start ov10_022C0780
ov10_022C0780: ; 0x022C0780
stmdb sp!, {r3, lr}
ldr r2, _022C07CC ; =ov10_022DC1C8
mov ip, #0
ldr lr, [r2]
add r3, lr, r1, lsl #5
b _022C07C0
_022C0798:
ldr r2, [r3, ip, lsl #3]
cmp r0, r2
bne _022C07BC
add r0, lr, #4
add r1, r0, r1, lsl #5
ldr r0, [r1, ip, lsl #3]
add r0, r0, #1
str r0, [r1, ip, lsl #3]
ldmia sp!, {r3, pc}
_022C07BC:
add ip, ip, #1
_022C07C0:
cmp ip, #3
ble _022C0798
ldmia sp!, {r3, pc}
.align 2, 0
_022C07CC: .word ov10_022DC1C8
arm_func_end ov10_022C0780
arm_func_start ov10_022C07D0
ov10_022C07D0: ; 0x022C07D0
ldr r2, _022C07E4 ; =ov10_022DC1C8
ldr r2, [r2]
add r1, r2, r1, lsl #5
add r0, r1, r0, lsl #3
bx lr
.align 2, 0
_022C07E4: .word ov10_022DC1C8
arm_func_end ov10_022C07D0
arm_func_start ov10_022C07E8
ov10_022C07E8: ; 0x022C07E8
ldr r2, _022C0810 ; =ov10_022DC1C8
ldr r2, [r2]
add r1, r2, r1, lsl #5
add r0, r1, r0, lsl #3
ldr r0, [r0, #4]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_022C0810: .word ov10_022DC1C8
arm_func_end ov10_022C07E8
arm_func_start ov10_022C0814
ov10_022C0814: ; 0x022C0814
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _022C0968 ; =ov10_022DC1D0
mov r8, r0
ldr r0, [r2]
mov r7, r1
cmp r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r0, #0x610
mov r1, #0xf
bl MemAlloc
ldr r2, _022C0968 ; =ov10_022DC1D0
mov r1, #0x610
str r0, [r2]
bl MemZero
ldr r3, _022C0968 ; =ov10_022DC1D0
mov r1, #0
ldr r0, [r3]
mov r2, #1
strb r1, [r0, #0x285]
ldr r0, [r3]
mov r6, r1
strb r1, [r0, #0x286]
ldr r0, [r3]
strb r1, [r0, #0x5f2]
ldr r0, [r3]
strb r2, [r0, #0x5f3]
mvn r0, #1
_022C0880:
ldr r4, [r3]
add r2, r1, #1
add r4, r4, r1
strb r0, [r4, #0x27c]
ldr r4, [r3]
mov r2, r2, lsl #0x10
add r4, r4, r1
strb r0, [r4, #0x280]
ldr r4, [r3]
add r4, r4, r1
mov r1, r2, asr #0x10
strb r6, [r4, #0x84]
cmp r1, #4
blt _022C0880
ldr r4, _022C0968 ; =ov10_022DC1D0
mvn r5, #1
ldr r1, [r4]
mov sb, #0x7c
strb r0, [r1, #0x284]
ldr r0, [r4]
strh r6, [r0, #4]
_022C08D4:
ldr r0, [r4]
add r0, r0, #0x88
mla r0, r6, sb, r0
bl InitAnimationControlWithSet__0201C0B0
add r0, r6, #1
ldr r1, [r4]
mov r0, r0, lsl #0x10
add r1, r1, r6
mov r6, r0, asr #0x10
strb r5, [r1, #0x278]
cmp r6, #4
blt _022C08D4
ldr r0, _022C0968 ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x310
bl ov10_022C1E50
ldr r0, _022C0968 ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x480
bl ov10_022C1E50
ldr r0, _022C0968 ; =ov10_022DC1D0
mov r6, #0
ldr r1, [r0]
strb r7, [r1, #0x5f0]
ldr r1, [r0]
strb r6, [r1, #0x5f1]
ldr r1, [r0]
strb r6, [r1, #0x5f4]
ldr r5, [r0]
ldmia r8!, {r0, r1, r2, r3}
add r4, r5, #0x1f8
add r4, r4, #0x400
stmia r4!, {r0, r1, r2, r3}
ldr r0, [r8]
str r0, [r4]
strb r6, [r5, #0x5f5]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022C0968: .word ov10_022DC1D0
arm_func_end ov10_022C0814
arm_func_start ov10_022C096C
ov10_022C096C: ; 0x022C096C
stmdb sp!, {r3, lr}
ldr r0, _022C0994 ; =ov10_022DC1D0
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _022C0994 ; =ov10_022DC1D0
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022C0994: .word ov10_022DC1D0
arm_func_end ov10_022C096C
arm_func_start ov10_022C0998
ov10_022C0998: ; 0x022C0998
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _022C09E4 ; =ov10_022DC1D0
mov r6, r0
ldr r4, [r2]
mov r5, r1
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, pc}
add lr, r4, #0x310
mov ip, #0x17
_022C09BC:
ldmia r6!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _022C09BC
ldrb r0, [r4, #0x5f3]
cmp r0, #0
movne r0, #0
strneb r0, [r4, #0x5f2]
streqb r5, [r4, #0x5f2]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022C09E4: .word ov10_022DC1D0
arm_func_end ov10_022C0998
arm_func_start DrawTeamStats
DrawTeamStats: ; 0x022C09E8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x50
ldr r3, _022C0CC0 ; =ov10_022DC1D0
mov sl, r0
ldr r0, [r3]
mov r5, r1
cmp r0, #0
mov r4, r2
moveq r0, #0
beq _022C0CB8
mov r1, #0
ldr r0, _022C0CC4 ; =WAN_TABLE
str r1, [sp]
#ifdef JAPAN
ldr r0, [r0]
mov r1, #4
mov r2, #0x3f8
#else
mov r1, #4
ldr r0, [r0]
add r2, r1, #0x400
#endif
mov r3, #0xf
bl LoadWanTableEntryFromPack
ldr r1, _022C0CC0 ; =ov10_022DC1D0
ldr r2, [r1]
strh r0, [r2, #4]
ldr r0, [r1]
add r0, r0, #8
bl InitAnimationControlWithSet__0201C0B0
ldr r0, _022C0CC0 ; =ov10_022DC1D0
ldr r0, [r0]
ldrsh r1, [r0, #4]
add r0, r0, #8
bl SetSpriteIdForAnimationControl
ldr r0, _022C0CC0 ; =ov10_022DC1D0
mov r1, #0
ldr r3, [r0]
ldrh r2, [r3, #0xa]
orr r2, r2, #0x20
strh r2, [r3, #0xa]
ldr r0, [r0]
add r0, r0, #8
bl sub_0201D12C
mov r0, #0xd
str r0, [sp]
mov r1, #0
str r1, [sp, #4]
str r1, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
ldr r0, _022C0CC0 ; =ov10_022DC1D0
mov r2, r1
ldr r0, [r0]
mov r3, #0x71
add r0, r0, #8
bl SetAndPlayAnimationForAnimationControl
mov r3, r4
ldr r0, _022C0CC0 ; =ov10_022DC1D0
mov r2, r5
ldr r1, [r0]
add r0, r1, #0x2d8
add r1, r1, #0x1f8
add r1, r1, #0x400
bl ov10_022C1E80
cmp r5, #0
beq _022C0AF4
ldr r0, _022C0CC0 ; =ov10_022DC1D0
mov r3, #0
ldr r2, [r0]
mov r1, #1
strb r3, [r2, #0x285]
b _022C0B10
_022C0AF4:
ldr r0, _022C0CC0 ; =ov10_022DC1D0
mov r3, #1
ldr r2, [r0]
mov r1, #0
strb r3, [r2, #0x285]
ldr r2, [r0]
strb r3, [r2, #0x5f4]
_022C0B10:
ldr r0, [r0]
ldr fp, _022C0CC0 ; =ov10_022DC1D0
strb r1, [r0, #0x60c]
ldr r0, [fp]
mvn r1, #1
add r0, r0, #0x200
ldrsb r0, [r0, #0x7c]
cmp r0, r1
bne _022C0C10
ldr r0, _022C0CC8 ; =ov10_022DBFEC
ldr r4, _022C0CCC ; =ov10_022DBFDC
add r6, sp, #0x20
ldmia r0, {r0, r1, r2, r3}
stmia r6, {r0, r1, r2, r3}
ldmia r4, {r0, r1, r2, r3}
add r5, sp, #0x10
stmia r5, {r0, r1, r2, r3}
mov r7, #0
add r4, sp, #0x40
_022C0B5C:
add r0, r7, r7, lsr #31
mov r1, r0, asr #1
mov r0, #0xc
mul sb, r1, r0
mov ip, r7, lsr #0x1f
#ifdef JAPAN
rsb r8, ip, r7, lsl #31
#endif
ldmia r6, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
#ifndef JAPAN
rsb r8, ip, r7, lsl #31
#endif
add r8, ip, r8, ror #31
mov r8, r8, lsl #4
#ifdef JAPAN
add r0, r8, #7
strb r0, [sp, #0x44]
add r0, sb, #1
#else
add r0, sb, #7
add r8, r8, #1
#endif
strb r0, [sp, #0x45]
ldr r1, _022C0CD0 ; =ProcessTeamStatsNameGender
mov r0, r4
#ifndef JAPAN
strb r8, [sp, #0x44]
#endif
bl CreateTextBox
ldr r1, [fp]
#ifdef JAPAN
add ip, r8, #1
#else
add sb, sb, #9
#endif
add r1, r1, r7
strb r0, [r1, #0x27c]
ldmia r5, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
#ifdef JAPAN
add r8, sb, #7
#endif
ldr r1, _022C0CD4 ; =ProcessTeamStatsLvHp
mov r0, r4
#ifdef JAPAN
strb ip, [sp, #0x44]
strb r8, [sp, #0x45]
#else
strb r8, [sp, #0x44]
strb sb, [sp, #0x45]
#endif
bl CreateTextBox
ldr r1, [fp]
add r1, r1, r7
add r7, r7, #1
strb r0, [r1, #0x280]
cmp r7, #4
blt _022C0B5C
ldr r0, _022C0CC0 ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x288
bl InitPreprocessorArgs
ldr r0, _022C0CC0 ; =ov10_022DC1D0
mov r3, #0x10000
ldr r2, [r0]
mov r1, #0
str r3, [r2, #0x2d4]
ldr r0, [r0]
strb r1, [r0, #0x5f3]
_022C0C10:
bl ov10_022C1990
ldr r8, _022C0CD8 ; =ov10_022DC1CC
ldr r7, _022C0CDC ; =ov10_022DBFFC
ldr r5, _022C0CC0 ; =ov10_022DC1D0
mov sb, #0
add fp, sp, #0x30
add r6, sp, #0x34
mvn r4, #1
_022C0C30:
ldr r0, [r5]
add r0, r0, sb
add r0, r0, #0x200
ldrsb r0, [r0, #0x78]
cmp r0, r4
bne _022C0C9C
mov r0, fp
bl InitPortraitParams
mov r0, fp
mov r1, #1
bl InitPortraitParamsWithMonsterId
ldrb r1, [r8, sb]
mov r0, fp
bl SetPortraitLayout
mov r0, #1
ldr r1, [r7, sb, lsl #2]
mov r2, r0
bl CreatePortraitBox
ldr r1, [r5]
add r1, r1, sb
strb r0, [r1, #0x278]
ldr r0, [r5]
ldmia r6, {r1, r2}
add r0, r0, sb
add r0, r0, #0x200
ldrsb r0, [r0, #0x78]
bl sub_02028770
_022C0C9C:
add sb, sb, #1
cmp sb, #4
blt _022C0C30
mov r0, sl
mov r1, #0
bl ov10_022C0998
mov r0, #1
_022C0CB8:
add sp, sp, #0x50
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C0CC0: .word ov10_022DC1D0
_022C0CC4: .word WAN_TABLE
_022C0CC8: .word ov10_022DBFEC
_022C0CCC: .word ov10_022DBFDC
_022C0CD0: .word ProcessTeamStatsNameGender
_022C0CD4: .word ProcessTeamStatsLvHp
_022C0CD8: .word ov10_022DC1CC
_022C0CDC: .word ov10_022DBFFC
arm_func_end DrawTeamStats
arm_func_start UpdateTeamStats
UpdateTeamStats: ; 0x022C0CE0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
ldr r0, _022C0F5C ; =ov10_022DC1D0
mov r2, #0
ldr r1, [r0]
strb r2, [r1, #0x5f3]
ldr r1, [r0]
ldrb r0, [r1, #0x285]
cmp r0, #0
movne r0, #1
strneb r0, [r1, #0x286]
bl ov10_022C1A04
movs sb, r0
beq _022C0F54
ldr r0, _022C0F5C ; =ov10_022DC1D0
ldr r1, [r0]
ldrb r0, [r1, #0x60c]
cmp r0, #0
bne _022C0D80
ldrb r0, [r1, #0x5f2]
cmp r0, #0
beq _022C0D80
ldr r1, _022C0F60 ; =0x0000FFFF
mov r0, sb, lsl #0x10
cmp r1, r0, lsr #16
bne _022C0D80
tst sb, #0x80000
mov r0, #1
beq _022C0D6C
bl ov29_0234C5EC
mov r0, #4
mov r1, #0x1000
mov r2, #1
bl StartFadeDungeonWrapper
b _022C0D80
_022C0D6C:
bl ov29_0234C584
mov r0, #1
mov r2, r0
mov r1, #0x1000
bl StartFadeDungeonWrapper
_022C0D80:
ldr fp, _022C0F5C ; =ov10_022DC1D0
mov r8, #0
ldr r1, [fp]
ldr r0, _022C0F64 ; =ov10_022DBFB0
strb r8, [r1, #0x5f2]
ldr r6, [r0, #0x14]
ldr r5, [r0, #0x18]
str r6, [sp]
str r5, [sp, #4]
mvn r4, #1
_022C0DA8:
tst sb, #0xf
beq _022C0EA8
tst sb, #1
beq _022C0DCC
ldr r0, [fp]
add r0, r0, r8
add r0, r0, #0x200
ldrsb r0, [r0, #0x80]
bl ProcessTeamStatsLvHp
_022C0DCC:
tst sb, #2
beq _022C0DE8
ldr r0, [fp]
add r0, r0, r8
add r0, r0, #0x200
ldrsb r0, [r0, #0x7c]
bl ProcessTeamStatsNameGender
_022C0DE8:
tst sb, #4
beq _022C0EA8
ldr r2, [fp]
mov r0, r8, lsl #0x10
add r1, r2, r0, asr #16
mov sl, r0, asr #0x10
add r2, r2, #0x310
mov r0, #0x5c
mla r7, sl, r0, r2
str r6, [sp, #8]
str r5, [sp, #0xc]
add r0, r1, #0x200
ldrsb r0, [r0, #0x78]
cmp r0, r4
beq _022C0EA8
add r0, sp, #0x10
bl InitPortraitParams
ldrb r0, [r7]
cmp r0, #0
add r0, sp, #0x10
bne _022C0E48
mov r1, #1
bl InitPortraitParamsWithMonsterId
b _022C0E50
_022C0E48:
ldrsh r1, [r7, #0x42]
bl InitPortraitParamsWithMonsterId
_022C0E50:
add r0, sp, #0x10
add r1, sp, #8
bl SetPortraitOffset
ldr r1, _022C0F68 ; =ov10_022DC1CC
add r0, sp, #0x10
ldrb r1, [r1, sl]
bl SetPortraitLayout
ldrb r0, [r7]
cmp r0, #0
add r0, sp, #0x10
bne _022C0E88
mov r1, r4
bl SetPortraitEmotion
b _022C0E90
_022C0E88:
mov r1, #0
bl SetPortraitEmotion
_022C0E90:
ldr r0, [fp]
add r1, sp, #0x10
add r0, r0, sl
add r0, r0, #0x200
ldrsb r0, [r0, #0x78]
bl ShowPortraitInPortraitBox
_022C0EA8:
add r8, r8, #1
cmp r8, #4
mov sb, sb, lsr #4
blo _022C0DA8
ldr r8, _022C0F5C ; =ov10_022DC1D0
mov r6, #0
ldr r0, [r8]
mov r5, r6
add r4, r0, #0x480
mov sb, r6
mov r7, #0x5c
_022C0ED4:
mul r0, r5, r7
ldrb r0, [r4, r0]
cmp r0, #0
beq _022C0F04
ldr r0, [r8]
mov r2, r6, lsl #0x10
ldrb r3, [r0, #0x5f0]
mov r1, sb
add r0, r0, #0x2d8
mov r2, r2, asr #0x10
bl ov10_022C1F90
add r6, r6, #1
_022C0F04:
add r5, r5, #1
cmp r5, #4
blt _022C0ED4
mov r5, #1
ldr r4, _022C0F5C ; =ov10_022DC1D0
b _022C0F3C
_022C0F1C:
ldr r0, [r4]
mov r2, r6, lsl #0x10
ldrb r3, [r0, #0x5f0]
mov r1, r5
add r0, r0, #0x2d8
mov r2, r2, asr #0x10
bl ov10_022C1F90
add r6, r6, #1
_022C0F3C:
cmp r6, #4
blt _022C0F1C
ldr r0, _022C0F5C ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x2d8
bl ov10_022C225C
_022C0F54:
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C0F5C: .word ov10_022DC1D0
_022C0F60: .word 0x0000FFFF
_022C0F64: .word ov10_022DBFB0
_022C0F68: .word ov10_022DC1CC
arm_func_end UpdateTeamStats
arm_func_start ov10_022C0F6C
ov10_022C0F6C: ; 0x022C0F6C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
ldr r4, _022C11CC ; =ov10_022DC1D0
mov r7, r0
ldr r4, [r4]
mov sl, r1
cmp r4, #0
ldrneb r0, [r4, #0x285]
mov r6, r2
mov fp, r3
cmpne r0, #0
ldrneb r0, [r4, #0x286]
ldr sb, [sp, #0x54]
cmpne r0, #0
ldrnesh r5, [sp, #0x4c]
addne r1, r4, #0x88
movne r0, #0x7c
mlane r4, r5, r0, r1
cmpne r7, #0
beq _022C11C4
ldr r1, _022C11D0 ; =WAN_TABLE
mov r0, #0x38
ldr r1, [r1]
smlabb r0, r7, r0, r1
ldr r0, [r0, #0x30]
cmp r0, #0
beq _022C11C4
mov r0, r4
bl sub_0201D1B0
cmp r0, #0
beq _022C1010
ldr r0, _022C11CC ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, r5
ldrb r0, [r0, #0x84]
cmp r0, #0
ldreqsh r0, [r4, #0x70]
cmpeq r0, r7
ldreqsh r0, [r4, #0x76]
cmpeq r0, r6
beq _022C1094
_022C1010:
ldr r0, _022C11CC ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, r5
ldrb r0, [r0, #0x84]
cmp r0, #0
beq _022C1030
mov r0, r4
bl sub_0201CF80
_022C1030:
mov r0, r4
mov r1, r7
bl SetSpriteIdForAnimationControl
bl Rand16Bit
mov r1, r6
ldrsh r6, [sp, #0x50]
and r7, r0, #3
mov r2, #0
and r3, r6, #0xff
stmia sp, {r3, r7}
mov r3, #0x14
smulbb r3, r6, r3
str r2, [sp, #8]
mov r0, #1
mov r3, r3, lsl #0x10
str r0, [sp, #0xc]
mov r0, r4
mov r2, #7
mov r3, r3, asr #0x10
bl SetAndPlayAnimationForAnimationControl
ldr r0, _022C11CC ; =ov10_022DC1D0
mov r1, #0
ldr r0, [r0]
add r0, r0, r5
strb r1, [r0, #0x84]
_022C1094:
#ifdef JAPAN
ldrh r0, [r4, #2]
ldrsh r7, [sp, #0x4c]
ldrb r1, [sp, #0x5c]
orr r0, r0, #0x10
strh r0, [r4, #2]
mov r3, #0
strh r3, [r4, #0x38]
ldrh r2, [r4, #2]
mov r5, r7, lsl #0x1f
ldr r0, _022C11D4 ; =0x0000F3FF
orr r2, r2, #0x20
strh r2, [r4, #2]
strh r0, [r4, #0x10]
strh r0, [r4, #0x14]
mov r2, r7, asr #1
mov r0, #0x60
smulbb r0, r2, r0
strh r3, [r4, #0x16]
cmp r1, #0
add r6, r0, #0x50
ldrneh r0, [r4, #0x16]
mov r5, r5, lsr #0x18
add r8, r5, #0x60
#else
ldrsh r8, [sp, #0x4c]
mov r1, #0x60
mov r0, sl
mov r2, r8, asr #1
smulbb r1, r2, r1
mov r3, r8, lsl #0x1f
mov r2, r3, lsr #0x18
add r7, r2, #0x60
add r6, r1, #0x28
bl ov10_022C1CE8
cmp r0, #0
cmpeq sl, #0x1a0
mvneq r1, #7
movne r1, #0
mov r0, sl
add r7, r7, r1
bl ov10_022C1CE8
cmp r0, #0
bne _022C1100
cmp sl, #0x1a0
moveq r0, #0x11
beq _022C1104
mov r0, sl
bl GetBodySize
cmp r0, #4
moveq r0, #0xc
beq _022C1104
_022C1100:
mov r0, #0
_022C1104:
ldrh r2, [r4, #2]
ldrb r1, [sp, #0x5c]
mov r5, #0
orr r2, r2, #0x10
strh r2, [r4, #2]
strh r5, [r4, #0x38]
ldrh r3, [r4, #2]
cmp r1, #0
ldr r2, _022C11D4 ; =0x0000F3FF
orr r1, r3, #0x20
strh r1, [r4, #2]
strh r2, [r4, #0x10]
strh r2, [r4, #0x14]
strh r5, [r4, #0x16]
add r6, r6, r0
ldrneh r0, [r4, #0x16]
mov r5, #0
#endif
orrne r0, r0, #0x400
strneh r0, [r4, #0x16]
ldrsh r0, [sp, #0x58]
#ifdef JAPAN
mov r5, #0
add r0, r8, r0
#else
add r0, r7, r0
#endif
strh r0, [r4, #0x1c]
strh r6, [r4, #0x1e]
b _022C1178
_022C1164:
mov r0, r4
bl SwitchAnimationControlToNextFrame
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
_022C1178:
cmp r5, sb
blt _022C1164
mov r0, r4
bl sub_0201CF5C
add r0, sp, #0x10
mov r2, r4
mov r1, #4
bl sub_0201D034
ldrb r0, [sp, #0x48]
cmp r0, #0
beq _022C11C4
add r4, sp, #0x10
str r6, [sp]
mov r0, fp
mov r1, sl
#ifdef JAPAN
mov r2, r7
mov r3, r8
#else
mov r2, r8
mov r3, r7
#endif
str r4, [sp, #4]
bl ov29_022DD83C
_022C11C4:
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C11CC: .word ov10_022DC1D0
_022C11D0: .word WAN_TABLE
_022C11D4: .word 0x0000F3FF
arm_func_end ov10_022C0F6C
arm_func_start ov10_022C11D8
ov10_022C11D8: ; 0x022C11D8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
ldr r0, _022C138C ; =ov10_022DC1D0
mov r2, #0x80
ldr r3, [r0]
mov r1, #0x60
strh r2, [r3, #0x24]
add r0, r3, #8
strh r1, [r3, #0x26]
bl sub_0201CF5C
ldr r0, _022C138C ; =ov10_022DC1D0
ldr r1, [r0]
ldrb r0, [r1, #0x5f4]
cmp r0, #0
bne _022C1384
cmp r1, #0
ldrneb r0, [r1, #0x285]
cmpne r0, #0
ldrneb r0, [r1, #0x286]
cmpne r0, #0
beq _022C1384
mov r8, #0
mov r5, r8
mov r4, #1
mov fp, r8
_022C123C:
ldr r0, _022C138C ; =ov10_022DC1D0
mov sb, #0
ldr r1, [r0]
mov r0, #0x5c
mul r2, r8, r0
add r3, r1, #0x480
add r1, r1, #0x88
mov r0, #0x7c
mla r6, r8, r0, r1
ldrb r0, [r3, r2]
add r7, r3, r2
cmp r0, #0
ldrnesh r2, [r7, #0x52]
cmpne r2, #0
beq _022C1378
ldr r0, _022C1390 ; =WAN_TABLE
ldr r1, [r0]
mov r0, #0x38
smlabb r0, r2, r0, r1
ldr r0, [r0, #0x30]
cmp r0, #0
beq _022C1378
mov r0, r6
bl sub_0201D1B0
cmp r0, #0
moveq sb, #1
cmp sb, #0
beq _022C12EC
ldrsh r1, [r7, #0x52]
mov r0, r6
bl SetSpriteIdForAnimationControl
bl Rand16Bit
mov r3, #0x14
and r1, r0, #3
and r0, r8, #0xff
stmia sp, {r0, r1, r5}
mul r3, r8, r3
str r4, [sp, #0xc]
mov r3, r3, lsl #0x10
ldrsh r1, [r7, #0x54]
mov r0, r6
mov r2, #7
mov r3, r3, asr #0x10
bl SetAndPlayAnimationForAnimationControl
_022C12EC:
mov r1, r8, lsr #0x1f
rsb r0, r1, r8, lsl #31
add r0, r1, r0, ror #31
mov r0, r0, lsl #7
add sl, r0, #0x60
add r0, r8, r8, lsr #31
mov r1, r0, asr #1
mov r0, #0x60
mul r0, r1, r0
strh fp, [r6, #0x38]
ldrh r1, [r6, #2]
add sb, r0, #0x50
mov r0, r6
orr r1, r1, #0x20
strh r1, [r6, #2]
ldr r1, _022C1394 ; =0x0000F3FF
strh r1, [r6, #0x14]
strh sl, [r6, #0x1c]
strh sb, [r6, #0x1e]
bl sub_0201CF5C
mov r2, r6
add r0, sp, #0x10
mov r1, #4
bl sub_0201D034
ldrb r0, [r7, #0x4f]
cmp r0, #0
beq _022C1378
str sb, [sp]
add r0, sp, #0x10
str r0, [sp, #4]
ldrsh r1, [r7, #0x42]
ldr r0, [r7, #0x44]
mov r3, sl
mov r2, r8
bl ov29_022DD83C
_022C1378:
add r8, r8, #1
cmp r8, #4
blt _022C123C
_022C1384:
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C138C: .word ov10_022DC1D0
_022C1390: .word WAN_TABLE
_022C1394: .word 0x0000F3FF
arm_func_end ov10_022C11D8
arm_func_start ov10_022C1398
ov10_022C1398: ; 0x022C1398
ldr r0, _022C13AC ; =ov10_022DC1D0
ldr ip, _022C13B0 ; =ov10_022C231C
ldr r0, [r0]
add r0, r0, #0x2d8
bx ip
.align 2, 0
_022C13AC: .word ov10_022DC1D0
_022C13B0: .word ov10_022C231C
arm_func_end ov10_022C1398
arm_func_start FreeTeamStats
FreeTeamStats: ; 0x022C13B4
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _022C14C8 ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x2d8
bl ov10_022C2278
ldr r0, _022C14C8 ; =ov10_022DC1D0
ldr r1, _022C14CC ; =WAN_TABLE
ldr r2, [r0]
ldr r0, [r1]
ldrsh r1, [r2, #4]
bl DeleteWanTableEntryVeneer
ldr r6, _022C14C8 ; =ov10_022DC1D0
mov r5, #0
mvn r4, #1
_022C13EC:
ldr r0, [r6]
add r0, r0, r5
add r0, r0, #0x200
ldrsb r0, [r0, #0x78]
cmp r0, r4
beq _022C143C
bl sub_0202836C
ldr r0, [r6]
add r0, r0, r5
add r0, r0, #0x200
ldrsb r0, [r0, #0x78]
bl HidePortraitBox
ldr r0, [r6]
add r0, r0, r5
add r0, r0, #0x200
ldrsb r0, [r0, #0x78]
bl ClosePortraitBox
ldr r0, [r6]
add r0, r0, r5
strb r4, [r0, #0x278]
_022C143C:
add r5, r5, #1
cmp r5, #4
blt _022C13EC
ldr r6, _022C14C8 ; =ov10_022DC1D0
mov r5, #0
mvn r4, #1
_022C1454:
ldr r0, [r6]
add r0, r0, r5
add r0, r0, #0x200
ldrsb r0, [r0, #0x7c]
cmp r0, r4
beq _022C147C
bl CloseTextBox
ldr r0, [r6]
add r0, r0, r5
strb r4, [r0, #0x27c]
_022C147C:
ldr r0, [r6]
add r0, r0, r5
add r0, r0, #0x200
ldrsb r0, [r0, #0x80]
cmp r0, r4
beq _022C14A4
bl CloseTextBox
ldr r0, [r6]
add r0, r0, r5
strb r4, [r0, #0x280]
_022C14A4:
add r5, r5, #1
cmp r5, #4
blt _022C1454
ldr r0, _022C14C8 ; =ov10_022DC1D0
mov r2, #0
ldr r1, [r0]
mov r0, #1
strb r2, [r1, #0x285]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022C14C8: .word ov10_022DC1D0
_022C14CC: .word WAN_TABLE
arm_func_end FreeTeamStats
arm_func_start ov10_022C14D0
ov10_022C14D0: ; 0x022C14D0
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, _022C1594 ; =ov10_022DC1D0
mov r4, r0
ldr r0, [r1]
cmp r0, #0
moveq r0, #0
beq _022C158C
mov r2, #0
strb r2, [r0, #0x285]
ldr r0, [r1]
mov r3, #1
strb r2, [r0, #0x286]
ldr r0, [r1]
add r1, r0, #0x1f8
add r0, r0, #0x2d8
add r1, r1, #0x400
bl ov10_022C1E80
bl ov10_022C1990
ldr r0, _022C1594 ; =ov10_022DC1D0
mvn r1, #1
ldr r0, [r0]
add r0, r0, #0x200
ldrsb r0, [r0, #0x84]
cmp r0, r1
bne _022C157C
ldr r0, _022C1598 ; =ov10_022DBFCC
add ip, sp, #0
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
mov r0, ip
mov r1, #0
bl CreateTextBox
ldr r1, _022C1594 ; =ov10_022DC1D0
ldr r2, [r1]
strb r0, [r2, #0x284]
ldr r0, [r1]
add r0, r0, #0x288
bl InitPreprocessorArgs
ldr r0, _022C1594 ; =ov10_022DC1D0
mov r1, #0x10000
ldr r0, [r0]
str r1, [r0, #0x2d4]
_022C157C:
mov r0, r4
mov r1, #0
bl ov10_022C0998
mov r0, #1
_022C158C:
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022C1594: .word ov10_022DC1D0
_022C1598: .word ov10_022DBFCC
arm_func_end ov10_022C14D0
arm_func_start ov10_022C159C
ov10_022C159C: ; 0x022C159C
#ifdef EUROPE
#define OV10_022C159C_STACK_OFFSET #0x154
#else
#define OV10_022C159C_STACK_OFFSET #0x54
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, OV10_022C159C_STACK_OFFSET
sub sp, sp, #0x400
ldr r0, _022C16CC ; =ov10_022DC1D0
mov r2, #0
ldr r1, [r0]
strb r2, [r1, #0x5f2]
ldr r0, [r0]
strb r2, [r0, #0x286]
bl ov10_022C1A04
cmp r0, #0
beq _022C16C0
ldr r0, _022C16CC ; =ov10_022DC1D0
ldr r1, [r0]
add r0, r1, #0x200
ldrsb sl, [r0, #0x84]
add r4, r1, #0x480
mov r0, sl
bl sub_02027B1C
mov sb, #0
mov r5, sb
add fp, sp, #4
_022C15F4:
mov r0, #0x5c
mul r1, r5, r0
ldrb r0, [r4, r1]
cmp r0, #0
beq _022C169C
add r0, r4, r1
#ifdef EUROPE
ldrsh r8, [r0, #0x48]
ldrsh r6, [r0, #0x4a]
ldrsh r7, [r0, #0x4c]
#else
ldrsh r6, [r0, #0x4a]
ldrsh r7, [r0, #0x4c]
ldrsh r8, [r0, #0x48]
#endif
add r1, r0, #1
add r0, sp, OV10_022C159C_STACK_OFFSET
bl strcpy
mov r0, sl
mov r1, #0
mov r2, sb
add r3, sp, OV10_022C159C_STACK_OFFSET
bl DrawTextInWindow
#ifdef EUROPE
mov r1, r8
add r0, sp, #0x54
bl sub_02025010_EU
ldr r1, _022C16D0 ; =ov10_022DC00C
add r0, sp, #0x154
add r2, sp, #0x54
#else
ldr r1, _022C16D0 ; =ov10_022DC00C
mov r2, r8
add r0, sp, #0x54
#endif
bl SprintfStatic__022C183C
mov r0, sl
#ifdef JAPAN
mov r1, #0x38
#else
mov r1, #0x44
#endif
mov r2, sb
add r3, sp, OV10_022C159C_STACK_OFFSET
bl DrawTextInWindow
mov r0, fp
bl InitPreprocessorArgs
ldr r2, _022C16D4 ; =ov10_022DC014
str r6, [sp, #0x28]
str r7, [sp, #0x2c]
add r0, sp, OV10_022C159C_STACK_OFFSET
mov r1, #0x400
mov r3, #0
str fp, [sp]
bl PreprocessString
mov r0, sl
mov r1, #0x80
mov r2, sb
add r3, sp, OV10_022C159C_STACK_OFFSET
bl DrawTextInWindow
add sb, sb, #0xc
_022C169C:
add r5, r5, #1
cmp r5, #4
blt _022C15F4
mov r0, sl
bl UpdateWindow
ldr r0, _022C16CC ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x2d8
bl ov10_022C21D8
_022C16C0:
add sp, sp, OV10_022C159C_STACK_OFFSET
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C16CC: .word ov10_022DC1D0
_022C16D0: .word ov10_022DC00C
_022C16D4: .word ov10_022DC014
arm_func_end ov10_022C159C
arm_func_start FreeMapAndTeam
FreeMapAndTeam: ; 0x022C16D8
stmdb sp!, {r3, lr}
ldr r0, _022C1744 ; =ov10_022DC1D0
ldr r0, [r0]
add r0, r0, #0x2d8
bl ov10_022C2278
ldr r0, _022C1744 ; =ov10_022DC1D0
mvn r1, #1
ldr r0, [r0]
add r0, r0, #0x200
ldrsb r0, [r0, #0x84]
cmp r0, r1
beq _022C171C
bl CloseTextBox2
ldr r0, _022C1744 ; =ov10_022DC1D0
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x284]
_022C171C:
ldr r1, _022C1744 ; =ov10_022DC1D0
mov r3, #0
ldr r2, [r1]
mov r0, #1
strb r3, [r2, #0x285]
ldr r2, [r1]
strb r3, [r2, #0x286]
ldr r1, [r1]
strb r3, [r1, #0x5f2]
ldmia sp!, {r3, pc}
.align 2, 0
_022C1744: .word ov10_022DC1D0
arm_func_end FreeMapAndTeam
arm_func_start ProcessTeamStatsLvHp
ProcessTeamStatsLvHp: ; 0x022C1748
#if defined(EUROPE)
#define OV10_022C1748_STACK_OFFSET 0x40
#elif defined(JAPAN)
#define OV10_022C1748_STACK_OFFSET -0x100
#else
#define OV10_022C1748_STACK_OFFSET 0
#endif
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET
mov r4, r0
mvn r0, #1
cmp r4, r0
beq _022C182C
ldr r0, _022C1834 ; =ov10_022DC1D0
mov r3, #0
ldr r1, [r0]
add r2, r1, #0x480
b _022C178C
_022C1774:
add r0, r1, r3
add r0, r0, #0x200
ldrsb r0, [r0, #0x80]
cmp r4, r0
beq _022C1794
add r3, r3, #1
_022C178C:
cmp r3, #4
blt _022C1774
_022C1794:
cmp r3, #4
beq _022C182C
mov r0, #0x5c
mul r1, r3, r0
ldrb r0, [r2, r1]
add r5, r2, r1
cmp r0, #0
mov r0, r4
bne _022C17C8
bl ClearWindow
mov r0, r4
bl UpdateWindow
b _022C182C
_022C17C8:
bl ClearWindow
#ifdef JAPAN
ldrsh r2, [r5, #0x48]
ldr r1, _022C1838 ; =ov10_022DC02C
add r0, sp, #0x54
bl SprintfStatic__022C183C
mov r1, #0
add r3, sp, #0x54
mov r0, r4
mov r2, r1
bl DrawTextInWindow
add r0, sp, #4
bl InitPreprocessorArgs
ldrsh r1, [r5, #0x4a]
add r3, sp, #4
ldr r2, _022C2FA4 ; =ov10_022DC014
str r1, [sp, #0x28]
ldrsh ip, [r5, #0x4c]
add r0, sp, #0x54
mov r1, #0x100
str ip, [sp, #0x2c]
str r3, [sp]
mov r3, #0
bl PreprocessString
mov r0, r4
mov r1, #0
mov r2, #0x10
#else
add r0, sp, #0x104 + OV10_022C1748_STACK_OFFSET
bl InitPreprocessorArgs
#ifdef EUROPE
ldrsh r1, [r5, #0x4a]
add r0, sp, #4
str r1, [sp, #0x168]
ldrsh r1, [r5, #0x4c]
str r1, [sp, #0x16c]
ldrsh r1, [r5, #0x48]
bl sub_02025010_EU
ldr r1, _022C1838 ; =ov10_022DC02C
add r0, sp, #0x44
add r2, sp, #4
#else
ldrsh r2, [r5, #0x4a]
ldr r1, _022C1838 ; =ov10_022DC02C
add r0, sp, #4
str r2, [sp, #0x128]
ldrsh r2, [r5, #0x4c]
str r2, [sp, #0x12c]
ldrsh r2, [r5, #0x48]
#endif
bl SprintfStatic__022C183C
add r1, sp, #0x104 + OV10_022C1748_STACK_OFFSET
str r1, [sp]
add r0, sp, #0x154 + OV10_022C1748_STACK_OFFSET
mov r1, #0x100
add r2, sp, #4 + OV10_022C1748_STACK_OFFSET
mov r3, #0
bl PreprocessString
mov r1, #0
mov r0, r4
mov r2, r1
#endif
add r3, sp, #0x154 + OV10_022C1748_STACK_OFFSET
bl DrawTextInWindow
mov r0, r4
bl UpdateWindow
_022C182C:
add sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET
ldmia sp!, {r4, r5, pc}
.align 2, 0
_022C1834: .word ov10_022DC1D0
#ifdef JAPAN
_022C1838: .word ov10_022DC00C
_022C2FA4: .word ov10_022DC014
#else
_022C1838: .word ov10_022DC02C
#endif
arm_func_end ProcessTeamStatsLvHp
arm_func_start SprintfStatic__022C183C
SprintfStatic__022C183C: ; 0x022C183C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__022C183C
arm_func_start ProcessTeamStatsNameGender
ProcessTeamStatsNameGender: ; 0x022C1864
stmdb sp!, {r3, r4, r5, lr}
#ifdef JAPAN
ldr r1, _022C1984 ; =ov10_022DC1D0
mov r4, r0
#else
sub sp, sp, #0x258
ldr r1, _022C1984 ; =ov10_022DC1D0
mov r5, r0
#endif
ldr r1, [r1]
mov r3, #0
add r2, r1, #0x480
b _022C189C
_022C1884:
add r0, r1, r3
add r0, r0, #0x200
ldrsb r0, [r0, #0x7c]
#ifdef JAPAN
cmp r4, r0
#else
cmp r5, r0
#endif
beq _022C18A4
add r3, r3, #1
_022C189C:
cmp r3, #4
blt _022C1884
_022C18A4:
cmp r3, #4
#ifdef JAPAN
ldmeqia sp!, {r3, r4, r5, pc}
#else
beq _022C197C
#endif
mov r0, #0x5c
mul r1, r3, r0
ldrb r0, [r2, r1]
#ifdef JAPAN
add r5, r2, r1
cmp r0, #0
mov r0, r4
bne _022C3040
bl ClearWindow
mov r0, r4
bl UpdateWindow
ldmia sp!, {r3, r4, r5, pc}
_022C3040:
bl ClearWindow
mov r1, #0
mov r0, r4
mov r2, r1
add r3, r5, #1
bl DrawTextInWindow
ldrsh r0, [r5, #0x42]
bl GetMonsterGenderVeneer
cmp r0, #1
bne _022C3080
ldr r3, _022C30C4 ; =ov10_022DC02C
mov r0, r4
mov r1, #0x10
mov r2, #0xc
bl DrawTextInWindow
b _022C30B4
_022C3080:
ldrsh r0, [r5, #0x42]
bl GetMonsterGenderVeneer
cmp r0, #2
mov r1, #0x10
mov r2, #0xc
bne _022C30A8
ldr r3, _022C30C8_JP ; =ov10_022DD718_JP
mov r0, r4
bl DrawTextInWindow
b _022C30B4
_022C30A8:
ldr r3, _022C30CC ; =ov10_022DD71C_JP
mov r0, r4
bl DrawTextInWindow
_022C30B4:
mov r0, r4
bl UpdateWindow
#else
add r4, r2, r1
cmp r0, #0
bne _022C18D8
mov r0, r5
bl ClearWindow
mov r0, r5
bl UpdateWindow
b _022C197C
_022C18D8:
ldr r1, _022C1988 ; =ov10_022DBFB0
mov r0, r5
ldrb r2, [r1]
strb r2, [sp, #4]
ldrb r1, [r1, #1]
strb r1, [sp, #5]
bl ClearWindow
add r0, sp, #8
bl InitPreprocessorArgs
ldrsh r0, [r4, #0x42]
bl GetMonsterGenderVeneer
cmp r0, #1
moveq r0, #0xbd
streqb r0, [sp, #4]
beq _022C1930
ldrsh r0, [r4, #0x42]
bl GetMonsterGenderVeneer
cmp r0, #2
moveq r0, #0xbe
streqb r0, [sp, #4]
movne r0, #0x2d
strneb r0, [sp, #4]
_022C1930:
ldr r1, _022C198C ; =ov10_022DC058
add r0, sp, #0x158
add r3, sp, #4
add r2, r4, #1
bl SprintfStatic__022C183C
add r4, sp, #8
add r0, sp, #0x58
add r2, sp, #0x158
mov r1, #0x100
mov r3, #0
str r4, [sp]
bl PreprocessString
mov r1, #0
add r3, sp, #0x58
mov r0, r5
mov r2, r1
bl DrawTextInWindow
mov r0, r5
bl UpdateWindow
_022C197C:
add sp, sp, #0x258
#endif
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022C1984: .word ov10_022DC1D0
#ifdef JAPAN
_022C30C4: .word ov10_022DC02C
_022C30C8_JP: .word ov10_022DD718_JP
_022C30CC: .word ov10_022DD71C_JP
#else
_022C1988: .word ov10_022DBFB0
_022C198C: .word ov10_022DC058
#endif
arm_func_end ProcessTeamStatsNameGender
arm_func_start ov10_022C1990
ov10_022C1990: ; 0x022C1990
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r8, _022C1A00 ; =ov10_022DC1D0
mov r4, #0
ldr r0, [r8]
mov r6, #0x5c
str r4, [r0]
mov r7, #0x7c
_022C19AC:
mul r5, r4, r6
ldr r0, [r8]
add r0, r0, #0x310
add r0, r0, r5
bl ov10_022C1D40
ldr r0, [r8]
add r0, r0, #0x480
add r0, r0, r5
bl ov10_022C1D40
ldr r0, [r8]
add r0, r0, #0x88
mla r0, r4, r7, r0
bl sub_0201C138
add r4, r4, #1
cmp r4, #4
blt _022C19AC
ldr r0, _022C1A00 ; =ov10_022DC1D0
mov r1, #0
ldr r0, [r0]
strb r1, [r0, #0x286]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_022C1A00: .word ov10_022DC1D0
arm_func_end ov10_022C1990
arm_func_start ov10_022C1A04
ov10_022C1A04: ; 0x022C1A04
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r0, _022C1CD0 ; =ov10_022DC1D0
ldr r3, _022C1CD4 ; =ov10_022DBFB6
ldr r0, [r0]
add r2, sp, #0x10
ldr sb, [r0]
add fp, r0, #0x310
add r4, r0, #0x480
mov r1, #4
_022C1A2C:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _022C1A2C
ldr r3, _022C1CD8 ; =ov10_022DBFBE
add r2, sp, #0xc
mov r1, #4
_022C1A48:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _022C1A48
ldr r3, _022C1CDC ; =ov10_022DBFB2
add r2, sp, #8
mov r1, #4
_022C1A64:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _022C1A64
ldr r3, _022C1CE0 ; =ov10_022DBFBA
add r2, sp, #4
mov r1, #4
_022C1A80:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _022C1A80
mov sl, #0
mov r8, sl
str sl, [sp]
mov r7, r8
b _022C1C1C
_022C1AA4:
mov r0, #0x5c
mul r1, r7, r0
ldrb r0, [fp, r1]
cmp r0, #0
beq _022C1C24
add r5, fp, r1
ldrsh r0, [r5, #0x54]
add r6, r4, r1
strh r0, [r6, #0x54]
ldr r1, [r5, #0x44]
ldr r0, [r6, #0x44]
cmp r1, r0
addne r0, sp, #0x10
movne r1, #1
strneb r1, [r0, r7]
add r0, r5, #1
add r1, r6, #1
bl strcmp
cmp r0, #0
addne r0, sp, #8
movne r1, #1
strneb r1, [r0, r7]
ldrsh r1, [r5, #0x4a]
ldrsh r0, [r6, #0x4a]
cmp r1, r0
addne r0, sp, #0x10
movne r1, #1
strneb r1, [r0, r7]
ldrsh r1, [r5, #0x4c]
ldrsh r0, [r6, #0x4c]
cmp r1, r0
addne r0, sp, #0x10
movne r1, #1
strneb r1, [r0, r7]
ldrsh r1, [r5, #0x48]
ldrsh r0, [r6, #0x48]
cmp r1, r0
addne r0, sp, #0x10
movne r1, #1
strneb r1, [r0, r7]
ldrsh r0, [r5, #0x42]
ldrsh r1, [r6, #0x42]
cmp r0, r1
beq _022C1B88
add r3, sp, #0x10
mov ip, #1
add r2, sp, #0xc
add r1, sp, #4
strb ip, [r3, r7]
strb ip, [r2, r7]
strb ip, [r1, r7]
ldrsh r1, [r6, #0x42]
bl GendersEqual
cmp r0, #0
addeq r0, sp, #8
moveq r1, #1
streqb r1, [r0, r7]
_022C1B88:
ldrb r1, [r5, #0x4e]
ldrb r0, [r6, #0x4e]
cmp r1, r0
movne r0, #1
addne r1, sp, #0x10
strne r0, [sp]
strneb r0, [r1, r7]
add r0, sp, #0x10
ldrb r0, [r0, r7]
cmp r0, #0
addeq r0, sp, #0xc
ldreqb r0, [r0, r7]
cmpeq r0, #0
addeq r0, sp, #8
ldreqb r0, [r0, r7]
cmpeq r0, #0
addeq r0, sp, #4
ldreqb r0, [r0, r7]
cmpeq r0, #0
beq _022C1C14
mov ip, #5
_022C1BDC:
ldmia r5!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _022C1BDC
ldmia r5, {r0, r1, r2}
stmia r6, {r0, r1, r2}
add r0, sp, #4
ldrb r0, [r0, r7]
cmp r0, #0
ldrne r0, _022C1CD0 ; =ov10_022DC1D0
movne r1, #1
ldrne r0, [r0]
addne r0, r0, r7
strneb r1, [r0, #0x84]
_022C1C14:
add r8, r8, #1
add r7, r7, #1
_022C1C1C:
cmp r7, #4
blt _022C1AA4
_022C1C24:
mov r5, #0x5c
b _022C1C38
_022C1C2C:
mla r0, r7, r5, r4
bl ov10_022C1D40
add r7, r7, #1
_022C1C38:
cmp r7, #4
blt _022C1C2C
ldr r0, [sp]
ldr r1, _022C1CD0 ; =ov10_022DC1D0
cmp r0, #0
ldr r0, [r1]
cmpeq sb, r8
str r8, [r0]
beq _022C1C6C
ldr r0, _022C1CE4 ; =0x0000FFFF
cmp sb, r8
orrlt r0, r0, #0x80000
b _022C1CC8
_022C1C6C:
mov r7, #0
mov r5, #1
mov r3, #2
add r4, sp, #8
mov r1, #4
add r2, sp, #0xc
add r6, sp, #0x10
_022C1C88:
ldrb r0, [r6, r7]
cmp r0, #0
movne r0, r7, lsl #2
orrne sl, sl, r5, lsl r0
ldrb r0, [r4, r7]
cmp r0, #0
movne r0, r7, lsl #2
orrne sl, sl, r3, lsl r0
ldrb r0, [r2, r7]
cmp r0, #0
movne r0, r7, lsl #2
add r7, r7, #1
orrne sl, sl, r1, lsl r0
cmp r7, #4
blt _022C1C88
mov r0, sl
_022C1CC8:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C1CD0: .word ov10_022DC1D0
_022C1CD4: .word ov10_022DBFB6
_022C1CD8: .word ov10_022DBFBE
_022C1CDC: .word ov10_022DBFB2
_022C1CE0: .word ov10_022DBFBA
_022C1CE4: .word 0x0000FFFF
arm_func_end ov10_022C1A04
#ifndef JAPAN
arm_func_start ov10_022C1CE8
ov10_022C1CE8: ; 0x022C1CE8
ldr r2, _022C1D38 ; =0x0000017B
cmp r0, r2
cmpne r0, #0x17c
addne r1, r2, #2
cmpne r0, r1
addne r1, r2, #3
cmpne r0, r1
beq _022C1D28
ldr r1, _022C1D3C ; =0xFFFFFC2D
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #3
bhi _022C1D30
_022C1D28:
mov r0, #1
bx lr
_022C1D30:
mov r0, #0
bx lr
.align 2, 0
_022C1D38: .word 0x0000017B
_022C1D3C: .word 0xFFFFFC2D
arm_func_end ov10_022C1CE8
#endif
arm_func_start ov10_022C1D40
ov10_022C1D40: ; 0x022C1D40
mov r2, #0
strb r2, [r0]
sub r1, r2, #1
strh r1, [r0, #0x4a]
strh r1, [r0, #0x4c]
str r1, [r0, #0x44]
strb r2, [r0, #0x4f]
strh r2, [r0, #0x52]
str r2, [r0, #0x58]
ldr ip, _022C1D74 ; =MemZero
add r0, r0, #1
mov r1, #0x40
bx ip
.align 2, 0
_022C1D74: .word MemZero
arm_func_end ov10_022C1D40
arm_func_start ov10_022C1D78
ov10_022C1D78: ; 0x022C1D78
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r6, r1
mov ip, #1
mov r1, r2
add r0, r4, #1
mov r5, r3
strb ip, [r4]
bl strcpy
strh r5, [r4, #0x42]
ldrsh r1, [sp, #0x10]
str r6, [r4, #0x44]
ldrsh r0, [sp, #0x14]
strh r1, [r4, #0x48]
ldrsh r1, [sp, #0x18]
strh r0, [r4, #0x4a]
ldrsh r0, [sp, #0x1c]
strh r1, [r4, #0x4c]
mov r1, #0
strb r1, [r4, #0x4f]
strb r1, [r4, #0x56]
strh r0, [r4, #0x52]
str r1, [r4, #0x58]
strb r1, [r4, #0x4e]
strh r1, [r4, #0x54]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022C1D78
arm_func_start ov10_022C1DE0
ov10_022C1DE0: ; 0x022C1DE0
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r6, r1
mov ip, #1
mov r1, r2
add r0, r4, #1
mov r5, r3
strb ip, [r4]
bl strcpy
strh r5, [r4, #0x42]
ldrsh r1, [sp, #0x10]
str r6, [r4, #0x44]
ldrsh r0, [sp, #0x14]
strh r1, [r4, #0x48]
ldrsh r1, [sp, #0x18]
strh r0, [r4, #0x4a]
ldrsh r0, [sp, #0x1c]
strh r1, [r4, #0x4c]
mov r1, #1
strb r1, [r4, #0x4f]
strb r1, [r4, #0x56]
strh r0, [r4, #0x52]
mov r1, #0
strb r1, [r4, #0x4e]
ldrsh r0, [sp, #0x20]
str r1, [r4, #0x58]
strh r0, [r4, #0x54]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022C1DE0
arm_func_start ov10_022C1E50
ov10_022C1E50: ; 0x022C1E50
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, #0
mov r4, #0x5c
_022C1E60:
smlabb r0, r5, r4, r6
bl ov10_022C1D40
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
cmp r5, #4
blt _022C1E60
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov10_022C1E50
arm_func_start ov10_022C1E80
ov10_022C1E80: ; 0x022C1E80
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
movs r7, r2
movne r4, #0xf
mov sb, r0
mov r8, r1
mov r6, r3
moveq r4, #0x300
bl GetGameMode
cmp r0, #3
moveq r0, #1
movne r0, #0
strb r0, [sb, #0x21]
tst r0, #0xff
add r1, sp, #0
beq _022C1ED0
ldr r0, _022C1F88 ; =ov10_022DC06C
mov r2, r4
bl sub_020522F0
b _022C1EDC
_022C1ED0:
ldr r0, _022C1F8C ; =ov10_022DC080
mov r2, r4
bl sub_020522F0
_022C1EDC:
add r5, sp, #0
ldmia r5!, {r0, r1, r2, r3}
mov r4, sb
stmia r4!, {r0, r1, r2, r3}
ldr r0, [r5]
mov lr, r8
str r0, [r4]
ldr r0, [sp, #0xc]
add ip, sb, #0x24
str r0, [sb, #0x14]
ldr r0, [sp, #4]
mov r5, #0
str r0, [sb, #0x18]
ldr r4, [sp, #0x10]
str r4, [sb, #0x1c]
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldr r0, [lr]
str r0, [ip]
strb r7, [sb, #0x20]
_022C1F2C:
mov r1, r5, lsl #0x10
ldr r0, [r8, #0x10]
mov r2, r4
mov r1, r1, lsr #0x10
bl sub_0200A590
add r5, r5, #1
cmp r5, #0xa0
add r4, r4, #4
blt _022C1F2C
cmp r6, #0
beq _022C1F80
ldr r0, [r8, #0x10]
bl sub_0200A504
mov r1, #1
mov r2, r1
mov r0, #0
bl GetBgRegionArea
ldr r1, [sb, #0x18]
ldr r2, [sb, #8]
mov r3, #0
bl sub_02051FB4
_022C1F80:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022C1F88: .word ov10_022DC06C
_022C1F8C: .word ov10_022DC080
arm_func_end ov10_022C1E80
arm_func_start ov10_022C1F90
ov10_022C1F90: ; 0x022C1F90
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10
mov sl, r0
mov sb, r2
mov r8, r3
cmp r1, #0
beq _022C2040
ldr fp, _022C21D0 ; =ov10_022DC1D4
mov r8, #0
mov r5, sb, lsl #4
add r4, fp, sb, lsl #4
_022C1FBC:
mov r7, #0
mov r6, r8, lsl #5
_022C1FC4:
ldrsh r1, [fp, r5]
ldr r2, [sl, #0x14]
ldrsh r0, [r4, #2]
add r3, r7, r1
add r2, r2, r6, lsl #1
mov r1, r7, lsl #1
ldrh sb, [r1, r2]
add r0, r8, r0
add r1, sp, #8
str r3, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [sl, #0x2c]
mov r2, #0
bl sub_0200B3FC
ldr r0, _022C21D4 ; =0x00000FFF
add r1, sp, #8
and r0, sb, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
orr r0, r0, #0x5000
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
ldr r0, [sl, #0x30]
bl sub_0200B3FC
add r7, r7, #1
cmp r7, #0x10
blt _022C1FC4
add r8, r8, #1
cmp r8, #0xc
blt _022C1FBC
b _022C21C8
_022C2040:
ldrb r0, [sl, #0x21]
cmp r0, #0
movne r7, #1
bne _022C2064
cmp r8, #0
movne r0, #8
moveq r0, #1
mov r0, r0, lsl #0x10
mov r7, r0, lsr #0x10
_022C2064:
ldr r0, _022C21D0 ; =ov10_022DC1D4
mov r5, #0
add r0, r0, sb, lsl #4
mov fp, sb, lsl #4
str r0, [sp, #4]
_022C2078:
mov r6, #0
mov r4, r5, lsl #5
_022C2080:
ldr r0, [sl, #0x14]
mov r1, r6, lsl #1
add r0, r0, r4, lsl #1
ldrh r2, [r1, r0]
ldr r3, _022C21D4 ; =0x00000FFF
ldr r0, _022C21D0 ; =ov10_022DC1D4
and r2, r2, r3
ldrsh r1, [r0, fp]
ldr r0, [sp, #4]
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
ldrsh r0, [r0, #2]
orr r2, r2, r7, lsl #12
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
str r2, [sp]
add r1, r6, r1
str r1, [sp, #8]
add r0, r5, r0
str r0, [sp, #0xc]
ldr r0, [sl, #0x2c]
add r1, sp, #8
mov r2, #0
bl sub_0200B3FC
ldr r2, [sp]
ldr r0, [sl, #0x30]
add r1, sp, #8
bl sub_0200B3FC
add r6, r6, #1
cmp r6, #0x10
blt _022C2080
add r5, r5, #1
cmp r5, #0xc
blt _022C2078
ldrb r0, [sl, #0x21]
cmp r0, #0
movne r4, #0
bne _022C212C
cmp r8, #0
movne r0, #7
moveq r0, #0
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
_022C212C:
ldrb r0, [sl, #0x20]
cmp r0, #0
bne _022C21C8
ldr r0, _022C21D0 ; =ov10_022DC1D4
ldr fp, _022C21D4 ; =0x00000FFF
mov r7, #0
add r5, r0, sb, lsl #4
_022C2148:
mov r8, #0
mov r6, r7, lsl #5
_022C2150:
ldr r1, [sl, #0x14]
ldrsh r0, [r5, #4]
add r1, r1, r6, lsl #1
add r1, r1, r8, lsl #1
ldrh r3, [r1, #0x20]
add r2, r8, r0
ldrsh r1, [r5, #6]
and r0, r3, fp
mov r0, r0, lsl #0x10
add r1, r7, r1
mov r0, r0, lsr #0x10
orr r0, r0, r4, lsl #12
str r2, [sp, #8]
str r1, [sp, #0xc]
mov r3, r0, lsl #0x10
ldr r0, [sl, #0x2c]
add r1, sp, #8
mov r2, #0
mov sb, r3, lsr #0x10
bl sub_0200B3FC
ldr r0, [sl, #0x30]
mov r2, sb
add r1, sp, #8
bl sub_0200B3FC
add r8, r8, #1
cmp r8, #6
blt _022C2150
add r7, r7, #1
cmp r7, #6
blt _022C2148
_022C21C8:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022C21D0: .word ov10_022DC1D4
_022C21D4: .word 0x00000FFF
arm_func_end ov10_022C1F90
arm_func_start ov10_022C21D8
ov10_022C21D8: ; 0x022C21D8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
mov r5, r0
ldr r0, [r5, #0x14]
mov r4, #0
add r0, r0, #0x400
ldrh sl, [r0, #0x80]
add r7, sp, #0
mov r6, r4
mov r8, r4
_022C2200:
mov sb, r8
_022C2204:
str sb, [sp]
str r4, [sp, #4]
ldr r0, [r5, #0x2c]
mov r1, r7
mov r2, r6
bl sub_0200B3FC
ldr r0, [r5, #0x30]
mov r1, r7
mov r2, sl
bl sub_0200B3FC
add sb, sb, #1
cmp sb, #0x20
blt _022C2204
add r4, r4, #1
cmp r4, #0x20
blt _022C2200
ldr r0, [r5, #0x2c]
bl sub_0200B330
ldr r0, [r5, #0x30]
bl sub_0200B330
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end ov10_022C21D8
arm_func_start ov10_022C225C
ov10_022C225C: ; 0x022C225C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x2c]
bl sub_0200B330
ldr r0, [r4, #0x30]
bl sub_0200B330
ldmia sp!, {r4, pc}
arm_func_end ov10_022C225C
arm_func_start ov10_022C2278
ov10_022C2278: ; 0x022C2278
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4]
cmp r1, #0
ldmeqia sp!, {r4, pc}
bl sub_02052334
mov r0, r4
mov r1, #0x14
bl MemZero
ldmia sp!, {r4, pc}
arm_func_end ov10_022C2278
arm_func_start ov10_022C22A0
ov10_022C22A0: ; 0x022C22A0
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, r0
mov r2, #1
bl GetBgRegionArea
mov r1, #1
str r0, [r4]
mov r2, r1
mov r0, #0
bl GetBgRegionArea
str r0, [r4, #4]
mov r0, #0
mov r1, #1
bl sub_02051DFC
str r0, [r4, #8]
mov r0, #1
mov r1, r0
bl sub_02051DFC
str r0, [r4, #0xc]
mov r0, #1
bl sub_02051ED4
str r0, [r4, #0x10]
ldmia sp!, {r4, pc}
arm_func_end ov10_022C22A0
arm_func_start ov10_022C2300
ov10_022C2300: ; 0x022C2300
stmia r0, {r1, r2}
ldr r2, [sp]
str r3, [r0, #8]
ldr r1, [sp, #4]
str r2, [r0, #0xc]
str r1, [r0, #0x10]
bx lr
arm_func_end ov10_022C2300
arm_func_start ov10_022C231C
ov10_022C231C: ; 0x022C231C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x18]
ldr r2, [r4, #8]
bl Memcpy32
ldr r0, [r4, #0x34]
bl sub_0200A504
ldmia sp!, {r4, pc}
arm_func_end ov10_022C231C
arm_func_start ov10_022C2340
ov10_022C2340: ; 0x022C2340
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r0, #0xc
mov r1, #0
bl MemAlloc
ldr r1, _022C23AC ; =ov10_022DC214
mov r5, r4, lsl #3
str r0, [r1]
mov r0, r5
mov r1, #0
bl MemAlloc
ldr r2, _022C23AC ; =ov10_022DC214
mov r1, r5
ldr r3, [r2]
str r0, [r3]
ldr r0, [r2]
ldr r0, [r0]
bl MemZero
ldr r0, _022C23AC ; =ov10_022DC214
ldr r0, [r0]
str r4, [r0, #4]
bl Rand16Bit
ldr r1, _022C23AC ; =ov10_022DC214
and r2, r0, #0x400
ldr r0, [r1]
strh r2, [r0, #8]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022C23AC: .word ov10_022DC214
arm_func_end ov10_022C2340
arm_func_start ov10_022C23B0
ov10_022C23B0: ; 0x022C23B0
stmdb sp!, {r3, lr}
ldr r0, _022C23E8 ; =ov10_022DC214
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r0, [r0]
bl MemFree
ldr r0, _022C23E8 ; =ov10_022DC214
ldr r0, [r0]
bl MemFree
ldr r0, _022C23E8 ; =ov10_022DC214
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_022C23E8: .word ov10_022DC214
arm_func_end ov10_022C23B0
arm_func_start ov10_022C23EC
ov10_022C23EC: ; 0x022C23EC
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _022C244C ; =ov10_022DC214
ldr r1, [r0]
cmp r1, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [r1, #4]
ldr r4, [r1]
mov r0, r0, lsl #0x10
movs r6, r0, lsr #0x10
mov r5, #0
ldmeqia sp!, {r4, r5, r6, pc}
b _022C2440
_022C241C:
ldr r1, [r4]
cmp r1, #0
beq _022C2430
mov r0, r4
blx r1
_022C2430:
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
add r4, r4, #8
_022C2440:
cmp r5, r6
blo _022C241C
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022C244C: .word ov10_022DC214
arm_func_end ov10_022C23EC
arm_func_start ov10_022C2450
ov10_022C2450: ; 0x022C2450
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _022C24D4 ; =ov10_022DC214
mov r5, r0
ldr r6, [r2]
mov r4, r1
ldr r0, [r6, #4]
ldr r2, [r6]
mov r1, r0, lsl #0x10
mov r3, #0
b _022C24A4
_022C2478:
ldr r0, [r2]
cmp r0, #0
ldreqh r0, [r6, #8]
orreq r0, r3, r0
moveq r0, r0, lsl #0x10
moveq r6, r0, lsr #0x10
beq _022C24B0
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, lsr #0x10
add r2, r2, #8
_022C24A4:
cmp r3, r1, lsr #16
blo _022C2478
ldr r6, _022C24D8 ; =0x0000FFFF
_022C24B0:
ldr r0, _022C24D8 ; =0x0000FFFF
cmp r6, r0
beq _022C24CC
mov r0, r6
bl ov10_022C24E8
str r5, [r0]
str r4, [r0, #4]
_022C24CC:
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022C24D4: .word ov10_022DC214
_022C24D8: .word 0x0000FFFF
arm_func_end ov10_022C2450
arm_func_start ov10_022C24DC
ov10_022C24DC: ; 0x022C24DC
ldr ip, _022C24E4 ; =ov10_022C250C
bx ip
.align 2, 0
_022C24E4: .word ov10_022C250C
arm_func_end ov10_022C24DC
arm_func_start ov10_022C24E8
ov10_022C24E8: ; 0x022C24E8
ldr r1, _022C2508 ; =ov10_022DC214
ldr r1, [r1]
ldrh r2, [r1, #8]
ldr r1, [r1]
sub r0, r0, r2
mov r0, r0, lsl #0x10
add r0, r1, r0, lsr #13
bx lr
.align 2, 0
_022C2508: .word ov10_022DC214
arm_func_end ov10_022C24E8
arm_func_start ov10_022C250C
ov10_022C250C: ; 0x022C250C
ldr r1, [r0, #4]
cmp r1, #0
movne r1, #0
strne r1, [r0, #4]
mov r1, #0
str r1, [r0]
bx lr
arm_func_end ov10_022C250C
arm_func_start ov10_022C2528
ov10_022C2528: ; 0x022C2528
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
sub r0, r2, r1
mov r1, r3
bl MultiplyByFixedPoint
mov r4, r0
str r0, [r5]
bl abs
ldr r1, [sp, #0x10]
cmp r0, r1
bgt _022C256C
cmp r4, #0
rsblt r0, r1, #0
strlt r0, [r5]
strge r1, [r5]
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
_022C256C:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov10_022C2528