pmd-sky/asm/main_02008BF4.s
2025-09-19 18:11:31 -04:00

4188 lines
76 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_02008BF4.inc"
.text
arm_func_start sub_02008BF4
sub_02008BF4: ; 0x02008BF4
stmdb sp!, {r3, lr}
sub sp, sp, #0x28
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02008CC4
add sp, sp, #0x28
ldmia sp!, {r3, pc}
arm_func_end sub_02008BF4
arm_func_start sub_02008C18
sub_02008C18: ; 0x02008C18
stmdb sp!, {r3, lr}
sub sp, sp, #0x28
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02008D10
add sp, sp, #0x28
ldmia sp!, {r3, pc}
arm_func_end sub_02008C18
arm_func_start LoadFileFromRom
LoadFileFromRom: ; 0x02008C3C
stmdb sp!, {r3, lr}
sub sp, sp, #0x28
mov lr, r0
mov ip, r1
mov r3, r2
add r0, sp, #0
mov r1, lr
mov r2, ip
bl sub_02008D60
add sp, sp, #0x28
ldmia sp!, {r3, pc}
arm_func_end LoadFileFromRom
arm_func_start sub_02008C68
sub_02008C68: ; 0x02008C68
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x100
mov r6, r0
mov r4, r2
mov r5, r1
bl sub_0200844C
add r0, sp, #0
mov r1, r6
mov r3, r4
mov r2, #6
bl sub_02008980
mov r0, r5
str r5, [sp, #0x10]
bl sub_0200846C
add r0, sp, #0
bl sub_02008A84
ldr r0, [r5, #0x14]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
add sp, sp, #0x100
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02008C68
arm_func_start sub_02008CC4
sub_02008CC4: ; 0x02008CC4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x100
mov r6, r0
mov r4, r2
mov r5, r1
bl sub_0200844C
add r0, sp, #0
mov r1, r6
mov r3, r4
mov r2, #8
bl sub_02008980
mvn r1, #0
add r0, sp, #0
str r5, [sp, #0xc]
str r1, [sp, #0x14]
bl sub_02008A84
ldr r0, [r6, #0x10]
add sp, sp, #0x100
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02008CC4
arm_func_start sub_02008D10
sub_02008D10: ; 0x02008D10
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x100
mov r6, r0
mov r4, r2
mov r5, r1
bl sub_0200844C
add r0, sp, #0
mov r1, r6
mov r3, r4
mov r2, #8
bl sub_02008980
ldr r1, [r5]
add r0, sp, #0
str r1, [sp, #0xc]
ldr r1, [r5, #4]
str r1, [sp, #0x14]
bl sub_02008A84
ldr r0, [r6, #0x10]
add sp, sp, #0x100
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02008D10
arm_func_start sub_02008D60
sub_02008D60: ; 0x02008D60
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x100
mov r7, r0
mov r5, r2
mov r6, r1
mov r4, r3
bl sub_0200844C
add r0, sp, #0
mov r1, r7
mov r3, r5
mov r2, #0xa
bl sub_02008980
add r0, sp, #0
str r6, [sp, #0x10]
str r4, [sp, #0x24]
bl sub_02008A84
ldr r0, [r7, #0x10]
add sp, sp, #0x100
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02008D60
arm_func_start sub_02008DAC
sub_02008DAC: ; 0x02008DAC
stmdb sp!, {r4, lr}
ldr r1, _02008EAC ; =_020AF694
mov r3, #0xff
ldr r0, _02008EB0 ; =GXi_DmaId
mov r2, #3
strb r3, [r1]
str r2, [r0]
bl GX_Init
ldr r2, _02008EB4 ; =0x04000304
ldr r0, _02008EB8 ; =0xFFFFFDF1
ldrh r1, [r2]
and r0, r1, r0
orr r0, r0, #0xe
orr r0, r0, #0x200
strh r0, [r2]
bl G3X_Init
bl G3X_ClearFifo
bl GX_DispOff
ldr r1, _02008EBC ; =0x04001000
ldr r0, [r1]
bic r0, r0, #0x10000
str r0, [r1]
bl sub_0200961C
ldr r0, _02008EC0 ; =0x000001FF
bl GX_SetBankForLCDC
mov r0, #0
mov r1, #0x6800000
mov r2, #0xa4000
bl ArrayFill32Fast
bl GX_DisableBankForLCDC
mov r0, #0xc0
mov r1, #0x7000000
mov r2, #0x400
bl ArrayFill32Fast
mov r0, #0
mov r1, #0x5000000
mov r2, #0x400
bl ArrayFill32Fast
mov r0, #0xc0
ldr r1, _02008EC4 ; =0x07000400
mov r2, #0x400
bl ArrayFill32Fast
mov r0, #0
ldr r1, _02008EC8 ; =0x05000400
mov r2, #0x400
bl ArrayFill32Fast
mov r1, #0x100
ldr r0, _02008ECC ; =_022A37A0
str r1, [r0, #4]
str r1, [r0, #8]
bl sub_02009648
mov r2, #0
ldr r0, _02008ECC ; =_022A37A0
mov r1, #0x100
str r2, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
bl sub_02008F88
mov r4, #1
_02008E98:
mov r0, r4
bl sub_02082420
cmp r0, #0
beq _02008E98
ldmia sp!, {r4, pc}
.align 2, 0
_02008EAC: .word _020AF694
_02008EB0: .word GXi_DmaId
_02008EB4: .word 0x04000304
_02008EB8: .word 0xFFFFFDF1
_02008EBC: .word 0x04001000
_02008EC0: .word 0x000001FF
_02008EC4: .word 0x07000400
_02008EC8: .word 0x05000400
_02008ECC: .word _022A37A0
arm_func_end sub_02008DAC
arm_func_start sub_02008ED0
sub_02008ED0: ; 0x02008ED0
stmdb sp!, {r4, lr}
ldr r1, _02008F30 ; =_020AF694
mov r4, r0
ldrb r1, [r1]
cmp r1, r4
ldmeqia sp!, {r4, pc}
ldr r0, _02008F34 ; =_02092AB8
mov r2, r4
bl Debug_Print0
cmp r4, #0
beq _02008F0C
cmp r4, #0xff
bne _02008F24
bl sub_0200961C
b _02008F24
_02008F0C:
bl sub_02009648
bl GX_DispOn
ldr r1, _02008F38 ; =0x04001000
ldr r0, [r1]
orr r0, r0, #0x10000
str r0, [r1]
_02008F24:
ldr r0, _02008F30 ; =_020AF694
strb r4, [r0]
ldmia sp!, {r4, pc}
.align 2, 0
_02008F30: .word _020AF694
_02008F34: .word _02092AB8
_02008F38: .word 0x04001000
arm_func_end sub_02008ED0
arm_func_start sub_02008F3C
sub_02008F3C: ; 0x02008F3C
ldr r2, _02008F48 ; =_022A37A4
str r1, [r2, r0, lsl #2]
bx lr
.align 2, 0
_02008F48: .word _022A37A4
arm_func_end sub_02008F3C
arm_func_start sub_02008F4C
sub_02008F4C: ; 0x02008F4C
ldr r1, _02008F60 ; =_022A37A4
ldr r0, [r1, r0, lsl #2]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bx lr
.align 2, 0
_02008F60: .word _022A37A4
arm_func_end sub_02008F4C
arm_func_start sub_02008F64
sub_02008F64: ; 0x02008F64
ldr r2, _02008F80 ; =_022A37A0
add r0, r1, r0, lsl #2
ldr r3, [r2]
mov r1, #1
orr r0, r3, r1, lsl r0
str r0, [r2]
bx lr
.align 2, 0
_02008F80: .word _022A37A0
arm_func_end sub_02008F64
arm_func_start sub_02008F84
sub_02008F84: ; 0x02008F84
bx lr
arm_func_end sub_02008F84
arm_func_start sub_02008F88
sub_02008F88: ; 0x02008F88
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r0, #0
bl sub_02009DCC
mov r0, #1
bl sub_02009DCC
mov r0, #0
bl sub_02009D48
mov r0, #1
bl sub_02009D48
mov r0, #0
bl sub_02009F9C
mov r0, #1
bl sub_02009F9C
mov r0, #0
bl sub_02009E70
mov r0, #1
bl sub_02009E70
ldr r1, _02009080 ; =_022A37A0
ldr r0, _02009084 ; =0x0400006C
ldr r2, [r1, #4]
mov r1, r2, asr #3
add r1, r2, r1, lsr #28
mov r1, r1, asr #4
bl GXx_SetMasterBrightness_
ldr r1, _02009080 ; =_022A37A0
ldr r0, _02009088 ; =0x0400106C
ldr r2, [r1, #8]
mov r1, r2, asr #3
add r1, r2, r1, lsr #28
mov r1, r1, asr #4
bl GXx_SetMasterBrightness_
ldr r0, _02009080 ; =_022A37A0
ldr sb, [r0]
cmp sb, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov sl, #0
ldr r8, _0200908C ; =_02092A18
mov fp, #2
ldr r7, _02009090 ; =_02092A38
ldr r6, _02009094 ; =_02092A58
ldr r5, _02009098 ; =_02092A78
ldr r4, _0200909C ; =_02092A98
b _02009068
_02009034:
tst sb, #1
beq _02009060
ldr r0, [r8, sl, lsl #2]
mov r1, fp
bl MemZero16
ldr r0, [r7, sl, lsl #2]
ldr r1, [r6, sl, lsl #2]
bl MemZero32
ldr r0, [r5, sl, lsl #2]
ldr r1, [r4, sl, lsl #2]
bl MemZero32
_02009060:
mov sb, sb, asr #1
add sl, sl, #1
_02009068:
cmp sb, #0
bne _02009034
ldr r0, _02009080 ; =_022A37A0
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02009080: .word _022A37A0
_02009084: .word 0x0400006C
_02009088: .word 0x0400106C
_0200908C: .word _02092A18
_02009090: .word _02092A38
_02009094: .word _02092A58
_02009098: .word _02092A78
_0200909C: .word _02092A98
arm_func_end sub_02008F88
arm_func_start sub_020090A0
sub_020090A0: ; 0x020090A0
mov r3, r1, lsr #0x1f
ldr ip, _020090BC ; =_022A37CC
rsb r1, r3, r1, lsl #30
add r3, r3, r1, ror #30
add r1, ip, r2, lsl #4
str r3, [r1, r0, lsl #2]
bx lr
.align 2, 0
_020090BC: .word _022A37CC
arm_func_end sub_020090A0
arm_func_start sub_020090C0
sub_020090C0: ; 0x020090C0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, #0
_020090D0:
ldrb r1, [r6, r4]
mov r0, r4
mov r2, r5
bl sub_020090A0
add r0, r4, #1
and r4, r0, #0xff
cmp r4, #4
blo _020090D0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020090C0
arm_func_start sub_020090F4
sub_020090F4: ; 0x020090F4
ldr r2, _0200911C ; =_022A37CC
mov ip, #0
add r3, r2, r1, lsl #4
_02009100:
ldr r2, [r3, ip, lsl #2]
add r1, ip, #1
strb r2, [r0, ip]
and ip, r1, #0xff
cmp ip, #4
blo _02009100
bx lr
.align 2, 0
_0200911C: .word _022A37CC
arm_func_end sub_020090F4
arm_func_start sub_02009120
sub_02009120: ; 0x02009120
cmp r0, #0
bne _02009150
ldr r2, _02009184 ; =_022A37CC
mov r3, #1
str r3, [r2, r0, lsl #4]
ldr r1, _02009188 ; =_022A37D0
mov r3, #0
str r3, [r1, r0, lsl #4]
ldr r2, _0200918C ; =_022A37D4
mov r3, #2
ldr r1, _02009190 ; =_022A37D8
b _02009174
_02009150:
ldr r2, _02009184 ; =_022A37CC
mov r3, #0
str r3, [r2, r0, lsl #4]
ldr r1, _02009188 ; =_022A37D0
mov r3, #1
str r3, [r1, r0, lsl #4]
ldr r2, _0200918C ; =_022A37D4
ldr r1, _02009190 ; =_022A37D8
mov r3, #2
_02009174:
str r3, [r2, r0, lsl #4]
mov r2, #3
str r2, [r1, r0, lsl #4]
bx lr
.align 2, 0
_02009184: .word _022A37CC
_02009188: .word _022A37D0
_0200918C: .word _022A37D4
_02009190: .word _022A37D8
arm_func_end sub_02009120
arm_func_start sub_02009194
sub_02009194: ; 0x02009194
ldr r2, _020091AC ; =_022A37AC
add r1, r1, r1, lsl #2
add r1, r2, r1
mov r2, #1
strb r2, [r0, r1]
bx lr
.align 2, 0
_020091AC: .word _022A37AC
arm_func_end sub_02009194
arm_func_start sub_020091B0
sub_020091B0: ; 0x020091B0
ldr r2, _020091C8 ; =_022A37AC
add r1, r1, r1, lsl #2
add r1, r2, r1
mov r2, #0
strb r2, [r0, r1]
bx lr
.align 2, 0
_020091C8: .word _022A37AC
arm_func_end sub_020091B0
arm_func_start sub_020091CC
sub_020091CC: ; 0x020091CC
ldr r1, _020091F4 ; =_022A37AC
add r0, r0, r0, lsl #2
add r2, r1, r0
mov r1, #0
mov r0, r1
_020091E0:
strb r0, [r2, r1]
add r1, r1, #1
cmp r1, #5
blt _020091E0
bx lr
.align 2, 0
_020091F4: .word _022A37AC
arm_func_end sub_020091CC
arm_func_start sub_020091F8
sub_020091F8: ; 0x020091F8
stmdb sp!, {r3, lr}
mov ip, #0x1b
mul lr, r3, ip
ldr ip, _02009220 ; =_022A37EC
ldr r3, _02009224 ; =_022A37ED
strb r0, [ip, lr]
ldr r0, _02009228 ; =_022A37EE
strb r1, [r3, lr]
strb r2, [r0, lr]
ldmia sp!, {r3, pc}
.align 2, 0
_02009220: .word _022A37EC
_02009224: .word _022A37ED
_02009228: .word _022A37EE
arm_func_end sub_020091F8
arm_func_start sub_0200922C
sub_0200922C: ; 0x0200922C
stmdb sp!, {r4, lr}
ldrb r4, [sp, #0x10]
mov ip, #0x1b
ldr lr, _02009278 ; =_022A37F3
smulbb r4, r4, ip
ldr ip, _0200927C ; =_022A37F4
strb r0, [lr, r4]
ldr lr, _02009280 ; =_022A37F5
strb r1, [ip, r4]
ldrb ip, [sp, #8]
ldr r0, _02009284 ; =_022A37F6
strb r2, [lr, r4]
ldrb r1, [sp, #0xc]
ldr r2, _02009288 ; =_022A37F7
strb r3, [r0, r4]
ldr r0, _0200928C ; =_022A37EF
strb ip, [r2, r4]
strb r1, [r0, r4]
ldmia sp!, {r4, pc}
.align 2, 0
_02009278: .word _022A37F3
_0200927C: .word _022A37F4
_02009280: .word _022A37F5
_02009284: .word _022A37F6
_02009288: .word _022A37F7
_0200928C: .word _022A37EF
arm_func_end sub_0200922C
arm_func_start sub_02009290
sub_02009290: ; 0x02009290
stmdb sp!, {r4, lr}
ldrb r4, [sp, #0x10]
mov ip, #0x1b
ldr lr, _020092DC ; =_022A37F8
smulbb r4, r4, ip
ldr ip, _020092E0 ; =_022A37F9
strb r0, [lr, r4]
ldr lr, _020092E4 ; =_022A37FA
strb r1, [ip, r4]
ldrb ip, [sp, #8]
ldr r0, _020092E8 ; =_022A37FB
strb r2, [lr, r4]
ldrb r1, [sp, #0xc]
ldr r2, _020092EC ; =_022A37FC
strb r3, [r0, r4]
ldr r0, _020092F0 ; =_022A37F0
strb ip, [r2, r4]
strb r1, [r0, r4]
ldmia sp!, {r4, pc}
.align 2, 0
_020092DC: .word _022A37F8
_020092E0: .word _022A37F9
_020092E4: .word _022A37FA
_020092E8: .word _022A37FB
_020092EC: .word _022A37FC
_020092F0: .word _022A37F0
arm_func_end sub_02009290
arm_func_start sub_020092F4
sub_020092F4: ; 0x020092F4
stmdb sp!, {r4, lr}
ldrb r4, [sp, #0x10]
mov ip, #0x1b
ldr lr, _02009340 ; =_022A3802
smulbb r4, r4, ip
ldr ip, _02009344 ; =_022A3803
strb r0, [lr, r4]
ldr lr, _02009348 ; =_022A3804
strb r1, [ip, r4]
ldrb ip, [sp, #8]
ldr r0, _0200934C ; =_022A3805
strb r2, [lr, r4]
ldrb r1, [sp, #0xc]
ldr r2, _02009350 ; =_022A3806
strb r3, [r0, r4]
ldr r0, _02009354 ; =_022A37EF
strb ip, [r2, r4]
strb r1, [r0, r4]
ldmia sp!, {r4, pc}
.align 2, 0
_02009340: .word _022A3802
_02009344: .word _022A3803
_02009348: .word _022A3804
_0200934C: .word _022A3805
_02009350: .word _022A3806
_02009354: .word _022A37EF
arm_func_end sub_020092F4
arm_func_start sub_02009358
sub_02009358: ; 0x02009358
stmdb sp!, {r4, lr}
ldrb r4, [sp, #0x10]
mov ip, #0x1b
ldr lr, _020093A4 ; =_022A37FD
smulbb r4, r4, ip
ldr ip, _020093A8 ; =_022A37FE
strb r0, [lr, r4]
ldr lr, _020093AC ; =_022A37FF
strb r1, [ip, r4]
ldrb ip, [sp, #8]
ldr r0, _020093B0 ; =_022A3800
strb r2, [lr, r4]
ldrb r1, [sp, #0xc]
ldr r2, _020093B4 ; =_022A3801
strb r3, [r0, r4]
ldr r0, _020093B8 ; =_022A37F1
strb ip, [r2, r4]
strb r1, [r0, r4]
ldmia sp!, {r4, pc}
.align 2, 0
_020093A4: .word _022A37FD
_020093A8: .word _022A37FE
_020093AC: .word _022A37FF
_020093B0: .word _022A3800
_020093B4: .word _022A3801
_020093B8: .word _022A37F1
arm_func_end sub_02009358
arm_func_start sub_020093BC
sub_020093BC: ; 0x020093BC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0xc
mov r4, r0
mov r0, #0
mov r1, r0
mov r2, r0
mov r3, r4
bl sub_020091F8
mov r0, #0
str r0, [sp]
mov r1, r0
mov r2, r0
mov r3, r0
stmib sp, {r0, r4}
bl sub_0200922C
mov r0, #0
str r0, [sp]
mov r1, r0
mov r2, r0
mov r3, r0
stmib sp, {r0, r4}
bl sub_02009290
mov r0, #0
str r0, [sp]
stmib sp, {r0, r4}
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_020092F4
mov r0, #0
str r0, [sp]
mov r1, r0
mov r2, r0
mov r3, r0
stmib sp, {r0, r4}
bl sub_02009358
add sp, sp, #0xc
ldmia sp!, {r3, r4, pc}
arm_func_end sub_020093BC
arm_func_start sub_02009454
sub_02009454: ; 0x02009454
ldr ip, _02009468 ; =_022A37B6
mov r3, #0xa
mla r3, r2, r3, ip
strb r1, [r0, r3]
bx lr
.align 2, 0
_02009468: .word _022A37B6
arm_func_end sub_02009454
arm_func_start sub_0200946C
sub_0200946C: ; 0x0200946C
ldr r3, _02009494 ; =_022A37B6
mov r2, #0xa
mla r3, r1, r2, r3
mov r2, #0
_0200947C:
ldrb r1, [r0, r2]
strb r1, [r3, r2]
add r2, r2, #1
cmp r2, #5
blt _0200947C
bx lr
.align 2, 0
_02009494: .word _022A37B6
arm_func_end sub_0200946C
arm_func_start sub_02009498
sub_02009498: ; 0x02009498
ldr r3, _020094C0 ; =_022A37B6
mov r2, #0xa
mla r3, r1, r2, r3
mov r2, #0
_020094A8:
ldrb r1, [r3, r2]
strb r1, [r0, r2]
add r2, r2, #1
cmp r2, #5
blt _020094A8
bx lr
.align 2, 0
_020094C0: .word _022A37B6
arm_func_end sub_02009498
arm_func_start sub_020094C4
sub_020094C4: ; 0x020094C4
mov r3, #0xa
mul ip, r2, r3
ldr r3, _020094E0 ; =_022A37BC
ldr r2, _020094E4 ; =_022A37BE
strh r0, [r3, ip]
strh r1, [r2, ip]
bx lr
.align 2, 0
_020094E0: .word _022A37BC
_020094E4: .word _022A37BE
arm_func_end sub_020094C4
arm_func_start sub_020094E8
sub_020094E8: ; 0x020094E8
mov r3, #0xa
mul ip, r2, r3
ldr r3, _0200950C ; =_022A37BC
ldr r2, _02009510 ; =_022A37BE
ldrsh r3, [r3, ip]
strh r3, [r0]
ldrsh r0, [r2, ip]
strh r0, [r1]
bx lr
.align 2, 0
_0200950C: .word _022A37BC
_02009510: .word _022A37BE
arm_func_end sub_020094E8
arm_func_start sub_02009514
sub_02009514: ; 0x02009514
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x40
mov r1, r0
mov r2, r4
bl sub_020094C4
mov r0, #0xa
mul r3, r4, r0
cmp r4, #0
bne _02009568
ldr r0, _02009598 ; =_022A37B6
mov r2, #1
strb r2, [r0, r3]
ldr r1, _0200959C ; =_022A37B7
mov r2, #2
strb r2, [r1, r3]
ldr r0, _020095A0 ; =_022A37B8
ldr r1, _020095A4 ; =_022A37B9
strb r2, [r0, r3]
ldr r0, _020095A8 ; =_022A37BA
b _0200958C
_02009568:
ldr r0, _02009598 ; =_022A37B6
mov r2, #2
strb r2, [r0, r3]
ldr r1, _0200959C ; =_022A37B7
ldr r0, _020095A0 ; =_022A37B8
strb r2, [r1, r3]
strb r2, [r0, r3]
ldr r1, _020095A4 ; =_022A37B9
ldr r0, _020095A8 ; =_022A37BA
_0200958C:
strb r2, [r1, r3]
strb r2, [r0, r3]
ldmia sp!, {r4, pc}
.align 2, 0
_02009598: .word _022A37B6
_0200959C: .word _022A37B7
_020095A0: .word _022A37B8
_020095A4: .word _022A37B9
_020095A8: .word _022A37BA
arm_func_end sub_02009514
arm_func_start sub_020095AC
sub_020095AC: ; 0x020095AC
ldr r2, _020095C4 ; =0x04001008
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_020095C4: .word 0x04001008
arm_func_end sub_020095AC
arm_func_start sub_020095C8
sub_020095C8: ; 0x020095C8
ldr r2, _020095E0 ; =0x0400100A
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_020095E0: .word 0x0400100A
arm_func_end sub_020095C8
arm_func_start sub_020095E4
sub_020095E4: ; 0x020095E4
ldr r2, _020095FC ; =0x0400100C
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_020095FC: .word 0x0400100C
arm_func_end sub_020095E4
arm_func_start sub_02009600
sub_02009600: ; 0x02009600
ldr r2, _02009618 ; =0x0400100E
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_02009618: .word 0x0400100E
arm_func_end sub_02009600
arm_func_start sub_0200961C
sub_0200961C: ; 0x0200961C
stmdb sp!, {r3, lr}
bl GX_DisableBankForBG
bl GX_DisableBankForOBJ
bl GX_DisableBankForBGExtPltt
bl GX_DisableBankForOBJExtPltt
bl GX_DisableBankForTex
bl GX_DisableBankForTexPltt
bl GX_DisableBankForSubBG
bl GX_DisableBankForSubOBJ
bl GX_DisableBankForSubBGExtPltt
ldmia sp!, {r3, pc}
arm_func_end sub_0200961C
arm_func_start sub_02009648
sub_02009648: ; 0x02009648
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc
mov r0, #1
bl GX_SetBankForBG
mov r0, #2
bl GX_SetBankForOBJ
mov r0, #0x10
bl GX_SetBankForBGExtPltt
mov r0, #0x40
bl GX_SetBankForOBJExtPltt
mov r0, #8
bl GX_SetBankForTex
mov r0, #0x20
bl GX_SetBankForTexPltt
mov r0, #1
mov r1, #0
mov r2, r0
bl GX_SetGraphicsMode
mov r2, #0x4000000
ldr r1, [r2]
ldr r0, _02009B78 ; =0x00005C10
bic r1, r1, #0x1f00
orr r1, r1, #0x1f00
str r1, [r2]
add r3, r0, #0x208
ldr r1, [r2]
mov r0, #0x1c
bic r1, r1, #0x38000000
str r1, [r2]
ldr r4, [r2]
mov r1, #0
bic r4, r4, #0x7000000
str r4, [r2]
ldrh r4, [r2, #0xa]
and r4, r4, #0x43
orr r4, r4, #0x1b80
strh r4, [r2, #0xa]
ldrh r4, [r2, #0xc]
and r4, r4, #0x43
orr r4, r4, #0xc10
orr r4, r4, #0x5000
strh r4, [r2, #0xc]
ldrh r4, [r2, #0xe]
and r4, r4, #0x43
orr r3, r4, r3
strh r3, [r2, #0xe]
ldr r3, [r2]
bic r3, r3, #0xe000
str r3, [r2]
ldr r3, [r2]
bic r3, r3, #0x800000
str r3, [r2]
bl sub_02009B98
mov r0, #0x1c
mov r1, #0
bl sub_02009BC0
mov r0, #0
mov r1, r0
bl sub_02009BE8
mov r0, #0xc
mov r1, #0
bl sub_02009C10
mov r3, #8
str r3, [sp]
ldr r0, _02009B7C ; =0x04000050
mov r1, #1
mov r2, #0x3e
bl G2x_SetBlendAlpha_
ldr ip, _02009B80 ; =0x04000040
mov lr, #0
strh lr, [ip]
strh lr, [ip, #4]
strh lr, [ip, #2]
strh lr, [ip, #6]
sub r4, ip, #0x36
ldrh r0, [r4]
sub r3, ip, #0x38
sub r2, ip, #0x34
bic r0, r0, #3
strh r0, [r4]
ldrh r0, [r3]
sub r1, ip, #0x32
mov r6, #0x4000000
bic r0, r0, #3
orr r0, r0, #1
strh r0, [r3]
ldrh r7, [r2]
ldr r5, _02009B84 ; =0xFFCFFFEF
mov r0, #4
bic r7, r7, #3
orr r7, r7, #2
strh r7, [r2]
ldrh r7, [r1]
bic r7, r7, #3
orr r7, r7, #3
strh r7, [r1]
str lr, [ip, #-0x2c]
str lr, [ip, #-0x28]
str lr, [ip, #-0x24]
ldrh r7, [r3]
bic r7, r7, #0x40
strh r7, [r3]
ldrh r3, [r4]
bic r3, r3, #0x40
strh r3, [r4]
ldrh r3, [r2]
bic r3, r3, #0x40
strh r3, [r2]
ldrh r2, [r1]
bic r2, r2, #0x40
strh r2, [r1]
ldr r1, [r6]
and r1, r1, r5
orr r1, r1, #0x10
orr r1, r1, #0x200000
str r1, [r6]
bl GX_SetBankForSubBG
mov r0, #0x100
bl GX_SetBankForSubOBJ
mov r0, #0x80
bl GX_SetBankForSubBGExtPltt
mov r0, #0
bl GXS_SetGraphicsMode
ldr r2, _02009B88 ; =0x04001000
ldr r0, [r2]
bic r0, r0, #0x1f00
orr r0, r0, #0x1f00
str r0, [r2]
ldrh r0, [r2, #8]
and r0, r0, #0x43
orr r0, r0, #0x1a80
strh r0, [r2, #8]
ldrh r3, [r2, #0xa]
ldr r1, _02009B78 ; =0x00005C10
mov r0, #0x1e
and r3, r3, #0x43
orr r3, r3, #0x38c
orr r3, r3, #0x1800
strh r3, [r2, #0xa]
ldrh r4, [r2, #0xc]
add r3, r1, #0x208
mov r1, #1
and r4, r4, #0x43
orr r4, r4, #0xc10
orr r4, r4, #0x5000
strh r4, [r2, #0xc]
ldrh r4, [r2, #0xe]
and r4, r4, #0x43
orr r3, r4, r3
strh r3, [r2, #0xe]
ldr r3, [r2]
bic r3, r3, #0xe000
str r3, [r2]
ldr r3, [r2]
orr r3, r3, #0x800000
str r3, [r2]
bl sub_02009CA8
mov r0, #0x1e
mov r1, #1
bl sub_02009CD0
mov r0, #0
mov r1, r0
bl sub_02009CF8
mov r0, #0x1e
mov r1, #1
bl sub_02009D20
ldr ip, _02009B8C ; =0x04001050
mov r1, #0
strh r1, [ip]
strh r1, [ip, #-0x10]
strh r1, [ip, #-0xc]
strh r1, [ip, #-0xe]
strh r1, [ip, #-0xa]
sub r3, ip, #0x48
ldrh r4, [r3]
sub r0, ip, #0x46
sub r2, ip, #0x44
bic r4, r4, #3
strh r4, [r3]
ldrh r5, [r0]
sub r4, ip, #0x42
bic r5, r5, #3
orr r5, r5, #1
strh r5, [r0]
ldrh r5, [r2]
bic r5, r5, #3
orr r5, r5, #2
strh r5, [r2]
ldrh r5, [r4]
bic r5, r5, #3
orr r5, r5, #3
strh r5, [r4]
str r1, [ip, #-0x40]
str r1, [ip, #-0x3c]
str r1, [ip, #-0x38]
str r1, [ip, #-0x34]
ldrh r5, [r3]
ldr r6, _02009B90 ; =0xFFFFCFFD
ldr lr, _02009B94 ; =0x04000304
bic r5, r5, #0x40
strh r5, [r3]
ldrh r3, [r0]
sub r7, ip, #0x50
ldr r5, _02009B84 ; =0xFFCFFFEF
bic r3, r3, #0x40
strh r3, [r0]
ldrh r3, [r2]
sub ip, lr, #0x2a4
mov r0, r6, lsr #0x16
bic r3, r3, #0x40
strh r3, [r2]
ldrh r8, [r4]
mov r2, r6, lsr #0x11
mov r3, #0x3f
bic r8, r8, #0x40
strh r8, [r4]
ldr r4, [r7]
and r4, r4, r5
orr r4, r4, #0x10
orr r4, r4, #0x200000
str r4, [r7]
ldrh r4, [lr]
bic r4, r4, #0x8000
strh r4, [lr]
ldrh r4, [ip]
and r4, r4, r6
strh r4, [ip]
ldrh r4, [ip]
bic r4, r4, #0x3000
orr r4, r4, #0x10
strh r4, [ip]
ldrh r4, [ip]
bic r4, r4, #0x3000
orr r4, r4, #8
strh r4, [ip]
ldrh r4, [ip]
bic r4, r4, #0x3000
orr r4, r4, #4
strh r4, [ip]
strh r1, [lr, #0x3c]
str r1, [sp]
bl G3X_SetClearColor
mov r0, #0
bl sub_02009120
mov r0, #1
bl sub_02009120
mov r0, #0
bl sub_020091CC
mov r0, #1
bl sub_020091CC
mov r0, #0
bl sub_02009514
mov r0, #1
bl sub_02009514
mov r0, #0
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_020091F8
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, r0
mov r2, r0
mov r3, r0
str r0, [sp, #8]
bl sub_0200922C
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, r0
mov r2, r0
mov r3, r0
str r0, [sp, #8]
bl sub_02009290
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, r0
str r0, [sp, #8]
mov r2, r0
mov r3, r0
bl sub_020092F4
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_02009358
mov r0, #0
mov r1, r0
mov r2, r0
mov r3, #1
bl sub_020091F8
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_0200922C
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_02009290
mov r0, #0
str r0, [sp]
mov r1, r0
mov r2, r0
mov r3, r0
str r0, [sp, #4]
mov r4, #1
str r4, [sp, #8]
bl sub_020092F4
mov r0, #0
str r0, [sp]
mov r1, r0
mov r2, r0
mov r3, r0
stmib sp, {r0, r4}
bl sub_02009358
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02009B78: .word 0x00005C10
_02009B7C: .word 0x04000050
_02009B80: .word 0x04000040
_02009B84: .word 0xFFCFFFEF
_02009B88: .word 0x04001000
_02009B8C: .word 0x04001050
_02009B90: .word 0xFFFFCFFD
_02009B94: .word 0x04000304
arm_func_end sub_02009648
arm_func_start sub_02009B98
sub_02009B98: ; 0x02009B98
ldr r2, _02009BBC ; =0x04000048
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f
orr r1, r1, r0
ldr r0, _02009BBC ; =0x04000048
orrne r1, r1, #0x20
strh r1, [r0]
bx lr
.align 2, 0
_02009BBC: .word 0x04000048
arm_func_end sub_02009B98
arm_func_start sub_02009BC0
sub_02009BC0: ; 0x02009BC0
ldr r2, _02009BE4 ; =0x04000048
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f00
orr r1, r1, r0, lsl #8
ldr r0, _02009BE4 ; =0x04000048
orrne r1, r1, #0x2000
strh r1, [r0]
bx lr
.align 2, 0
_02009BE4: .word 0x04000048
arm_func_end sub_02009BC0
arm_func_start sub_02009BE8
sub_02009BE8: ; 0x02009BE8
ldr r2, _02009C0C ; =0x0400004A
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f00
orr r1, r1, r0, lsl #8
ldr r0, _02009C0C ; =0x0400004A
orrne r1, r1, #0x2000
strh r1, [r0]
bx lr
.align 2, 0
_02009C0C: .word 0x0400004A
arm_func_end sub_02009BE8
arm_func_start sub_02009C10
sub_02009C10: ; 0x02009C10
ldr r2, _02009C34 ; =0x0400004A
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f
orr r1, r1, r0
ldr r0, _02009C34 ; =0x0400004A
orrne r1, r1, #0x20
strh r1, [r0]
bx lr
.align 2, 0
_02009C34: .word 0x0400004A
arm_func_end sub_02009C10
arm_func_start sub_02009C38
sub_02009C38: ; 0x02009C38
ldr r2, _02009C50 ; =0x0400000A
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_02009C50: .word 0x0400000A
arm_func_end sub_02009C38
arm_func_start sub_02009C54
sub_02009C54: ; 0x02009C54
ldr r2, _02009C6C ; =0x04000008
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_02009C6C: .word 0x04000008
arm_func_end sub_02009C54
arm_func_start sub_02009C70
sub_02009C70: ; 0x02009C70
ldr r2, _02009C88 ; =0x0400000C
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_02009C88: .word 0x0400000C
arm_func_end sub_02009C70
arm_func_start sub_02009C8C
sub_02009C8C: ; 0x02009C8C
ldr r2, _02009CA4 ; =0x0400000E
ldrh r1, [r2]
bic r1, r1, #3
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_02009CA4: .word 0x0400000E
arm_func_end sub_02009C8C
arm_func_start sub_02009CA8
sub_02009CA8: ; 0x02009CA8
ldr r2, _02009CCC ; =0x04001048
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f
orr r1, r1, r0
ldr r0, _02009CCC ; =0x04001048
orrne r1, r1, #0x20
strh r1, [r0]
bx lr
.align 2, 0
_02009CCC: .word 0x04001048
arm_func_end sub_02009CA8
arm_func_start sub_02009CD0
sub_02009CD0: ; 0x02009CD0
ldr r2, _02009CF4 ; =0x04001048
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f00
orr r1, r1, r0, lsl #8
ldr r0, _02009CF4 ; =0x04001048
orrne r1, r1, #0x2000
strh r1, [r0]
bx lr
.align 2, 0
_02009CF4: .word 0x04001048
arm_func_end sub_02009CD0
arm_func_start sub_02009CF8
sub_02009CF8: ; 0x02009CF8
ldr r2, _02009D1C ; =0x0400104A
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f00
orr r1, r1, r0, lsl #8
ldr r0, _02009D1C ; =0x0400104A
orrne r1, r1, #0x2000
strh r1, [r0]
bx lr
.align 2, 0
_02009D1C: .word 0x0400104A
arm_func_end sub_02009CF8
arm_func_start sub_02009D20
sub_02009D20: ; 0x02009D20
ldr r2, _02009D44 ; =0x0400104A
cmp r1, #0
ldrh r1, [r2]
bic r1, r1, #0x3f
orr r1, r1, r0
ldr r0, _02009D44 ; =0x0400104A
orrne r1, r1, #0x20
strh r1, [r0]
bx lr
.align 2, 0
_02009D44: .word 0x0400104A
arm_func_end sub_02009D20
arm_func_start sub_02009D48
sub_02009D48: ; 0x02009D48
stmdb sp!, {r4, lr}
movs r4, r0
bne _02009D88
ldr r0, _02009DBC ; =_022A37CC
ldr r0, [r0, r4, lsl #4]
bl sub_02009C54
ldr r0, _02009DC0 ; =_022A37D0
ldr r0, [r0, r4, lsl #4]
bl sub_02009C38
ldr r0, _02009DC4 ; =_022A37D4
ldr r0, [r0, r4, lsl #4]
bl sub_02009C70
ldr r0, _02009DC8 ; =_022A37D8
ldr r0, [r0, r4, lsl #4]
bl sub_02009C8C
ldmia sp!, {r4, pc}
_02009D88:
ldr r0, _02009DBC ; =_022A37CC
ldr r0, [r0, r4, lsl #4]
bl sub_020095AC
ldr r0, _02009DC0 ; =_022A37D0
ldr r0, [r0, r4, lsl #4]
bl sub_020095C8
ldr r0, _02009DC4 ; =_022A37D4
ldr r0, [r0, r4, lsl #4]
bl sub_020095E4
ldr r0, _02009DC8 ; =_022A37D8
ldr r0, [r0, r4, lsl #4]
bl sub_02009600
ldmia sp!, {r4, pc}
.align 2, 0
_02009DBC: .word _022A37CC
_02009DC0: .word _022A37D0
_02009DC4: .word _022A37D4
_02009DC8: .word _022A37D8
arm_func_end sub_02009D48
arm_func_start sub_02009DCC
sub_02009DCC: ; 0x02009DCC
ldr r1, _02009E58 ; =_022A37AC
add r3, r0, r0, lsl #2
ldrb r2, [r1, r3]
mov r1, #0x1f
cmp r2, #0
ldr r2, _02009E5C ; =_022A37AD
bicne r1, r1, #1
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E60 ; =_022A37AE
bicne r1, r1, #2
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E64 ; =_022A37AF
bicne r1, r1, #4
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E68 ; =_022A37B0
bicne r1, r1, #8
ldrb r2, [r2, r3]
cmp r2, #0
bicne r1, r1, #0x10
cmp r0, #0
ldrne r2, _02009E6C ; =0x04001000
ldrne r0, [r2]
bicne r0, r0, #0x1f00
orrne r0, r0, r1, lsl #8
strne r0, [r2]
bxne lr
mov r2, #0x4000000
ldr r0, [r2]
bic r0, r0, #0x1f00
orr r0, r0, r1, lsl #8
str r0, [r2]
bx lr
.align 2, 0
_02009E58: .word _022A37AC
_02009E5C: .word _022A37AD
_02009E60: .word _022A37AE
_02009E64: .word _022A37AF
_02009E68: .word _022A37B0
_02009E6C: .word 0x04001000
arm_func_end sub_02009DCC
arm_func_start sub_02009E70
sub_02009E70: ; 0x02009E70
stmdb sp!, {r3, lr}
mov r1, #0xa
mul r3, r0, r1
ldr r2, _02009F78 ; =_022A37B6
mov r1, #0
ldrb ip, [r2, r3]
mov r2, #0x20
cmp ip, #1
orreq r1, r1, #1
beq _02009EA0
cmp ip, #2
orreq r2, r2, #1
_02009EA0:
ldr ip, _02009F7C ; =_022A37B7
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #2
beq _02009EBC
cmp ip, #2
orreq r2, r2, #2
_02009EBC:
ldr ip, _02009F80 ; =_022A37B8
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #4
beq _02009ED8
cmp ip, #2
orreq r2, r2, #4
_02009ED8:
ldr ip, _02009F84 ; =_022A37B9
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #8
beq _02009EF4
cmp ip, #2
orreq r2, r2, #8
_02009EF4:
ldr ip, _02009F88 ; =_022A37BA
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #0x10
beq _02009F10
cmp ip, #2
orreq r2, r2, #0x10
_02009F10:
cmp r0, #0
bne _02009F48
ldr r0, _02009F8C ; =_022A37BE
ldr ip, _02009F90 ; =_022A37BC
ldrh lr, [r0, r3]
ldr r0, _02009F94 ; =0x04000050
and lr, lr, #0xf8
mov lr, lr, asr #3
str lr, [sp]
ldrh r3, [ip, r3]
and r3, r3, #0xf8
mov r3, r3, asr #3
bl G2x_SetBlendAlpha_
ldmia sp!, {r3, pc}
_02009F48:
ldr r0, _02009F8C ; =_022A37BE
ldr ip, _02009F90 ; =_022A37BC
ldrh lr, [r0, r3]
ldr r0, _02009F98 ; =0x04001050
and lr, lr, #0xf8
mov lr, lr, asr #3
str lr, [sp]
ldrh r3, [ip, r3]
and r3, r3, #0xf8
mov r3, r3, asr #3
bl G2x_SetBlendAlpha_
ldmia sp!, {r3, pc}
.align 2, 0
_02009F78: .word _022A37B6
_02009F7C: .word _022A37B7
_02009F80: .word _022A37B8
_02009F84: .word _022A37B9
_02009F88: .word _022A37BA
_02009F8C: .word _022A37BE
_02009F90: .word _022A37BC
_02009F94: .word 0x04000050
_02009F98: .word 0x04001050
arm_func_end sub_02009E70
arm_func_start sub_02009F9C
sub_02009F9C: ; 0x02009F9C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r1, #0x1b
mul r4, r0, r1
ldr r3, _0200A100 ; =_022A37EC
mov r2, #0
ldrb r1, [r3, r4]
add lr, r3, r4
mov r3, #0
cmp r1, #0
ldr r1, _0200A104 ; =_022A37ED
orrne r2, r2, #1
ldrb r1, [r1, r4]
mov r5, r3
mov r6, r3
cmp r1, #0
ldr r1, _0200A108 ; =_022A37EE
orrne r2, r2, #2
ldrb r1, [r1, r4]
mov ip, r3
cmp r1, #0
ldr r1, _0200A10C ; =_02092A04
orrne r2, r2, #4
_02009FF4:
add r7, lr, ip
ldrb r8, [r7, #7]
cmp r8, #0
ldrne r8, [r1, ip, lsl #2]
orrne r3, r3, r8
ldrb r8, [r7, #0xc]
cmp r8, #0
ldrne r8, [r1, ip, lsl #2]
orrne r3, r3, r8
ldrb r8, [r7, #0x16]
ldrb r7, [r7, #0x11]
cmp r8, #0
ldrne r8, [r1, ip, lsl #2]
orrne r6, r6, r8
cmp r7, #0
ldrne r7, [r1, ip, lsl #2]
orrne r5, r5, r7
add r7, ip, #1
and ip, r7, #0xff
cmp ip, #5
blo _02009FF4
cmp r0, #0
bne _0200A0A8
mov r7, #0x4000000
ldr r1, [r7]
ldr r0, _0200A110 ; =_022A37EF
bic r1, r1, #0xe000
orr r1, r1, r2, lsl #13
str r1, [r7]
ldrb r1, [r0, r4]
mov r0, r3
bl sub_02009B98
ldr r1, _0200A114 ; =_022A37F0
mov r0, #0
ldrb r1, [r1, r4]
bl sub_02009BC0
ldr r1, _0200A118 ; =_022A37F1
mov r0, r5
ldrb r1, [r1, r4]
bl sub_02009BE8
ldr r1, _0200A11C ; =_022A37F2
mov r0, r6
ldrb r1, [r1, r4]
bl sub_02009C10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0200A0A8:
ldr ip, _0200A120 ; =0x04001000
ldr r1, _0200A110 ; =_022A37EF
ldr r7, [ip]
mov r0, r3
bic r3, r7, #0xe000
orr r2, r3, r2, lsl #13
str r2, [ip]
ldrb r1, [r1, r4]
bl sub_02009CA8
ldr r1, _0200A114 ; =_022A37F0
mov r0, #0
ldrb r1, [r1, r4]
bl sub_02009CD0
ldr r1, _0200A118 ; =_022A37F1
mov r0, r5
ldrb r1, [r1, r4]
bl sub_02009CF8
ldr r1, _0200A11C ; =_022A37F2
mov r0, r6
ldrb r1, [r1, r4]
bl sub_02009D20
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0200A100: .word _022A37EC
_0200A104: .word _022A37ED
_0200A108: .word _022A37EE
_0200A10C: .word _02092A04
_0200A110: .word _022A37EF
_0200A114: .word _022A37F0
_0200A118: .word _022A37F1
_0200A11C: .word _022A37F2
_0200A120: .word 0x04001000
arm_func_end sub_02009F9C
arm_func_start sub_0200A124
sub_0200A124: ; 0x0200A124
stmdb sp!, {r4, lr}
mov r4, r0
stmia r4, {r1, r2}
mov r0, #0
strb r0, [r4, #8]
ldr r1, [sp, #8]
str r3, [r4, #0xc]
mov r0, r2, lsl #1
bl MemAlloc
str r0, [r4, #0x10]
mov r0, r4
bl sub_0200A274
ldmia sp!, {r4, pc}
arm_func_end sub_0200A124
arm_func_start sub_0200A158
sub_0200A158: ; 0x0200A158
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x10]
bl MemFree
mov r0, #0
str r0, [r4, #0x10]
ldmia sp!, {r4, pc}
arm_func_end sub_0200A158
arm_func_start sub_0200A174
sub_0200A174: ; 0x0200A174
mov r1, #1
strb r1, [r0, #8]
bx lr
arm_func_end sub_0200A174
arm_func_start sub_0200A180
sub_0200A180: ; 0x0200A180
bx lr
arm_func_end sub_0200A180
arm_func_start sub_0200A184
sub_0200A184: ; 0x0200A184
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrb r0, [r6, #8]
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r4, [r6, #0x10]
ldr r1, [r6, #4]
mov r0, r4
mov r1, r1, lsl #1
ldr r5, [r6, #0xc]
bl sub_0207A2DC
ldr r0, [r6]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0200A1D4
_0200A1C0: ; jump table
b _0200A1D4 ; case 0
b _0200A1EC ; case 1
b _0200A20C ; case 2
b _0200A22C ; case 3
b _0200A24C ; case 4
_0200A1D4:
ldr r2, [r6, #4]
mov r0, r5
mov r1, r4
mov r2, r2, lsl #1
bl Memcpy32
b _0200A268
_0200A1EC:
bl GX_BeginLoadBGExtPltt
ldr r2, [r6, #4]
mov r0, r5
mov r1, r4
mov r2, r2, lsl #1
bl Memcpy32
bl GX_EndLoadBGExtPltt
b _0200A268
_0200A20C:
bl GX_BeginLoadOBJExtPltt
ldr r2, [r6, #4]
mov r0, r5
mov r1, r4
mov r2, r2, lsl #1
bl Memcpy32
bl GX_EndLoadOBJExtPltt
b _0200A268
_0200A22C:
bl GXS_BeginLoadBGExtPltt
ldr r2, [r6, #4]
mov r0, r5
mov r1, r4
mov r2, r2, lsl #1
bl Memcpy32
bl GXS_EndLoadBGExtPltt
b _0200A268
_0200A24C:
bl GXS_BeginLoadOBJExtPltt
ldr r2, [r6, #4]
mov r0, r5
mov r1, r4
mov r2, r2, lsl #1
bl Memcpy32
bl GXS_EndLoadOBJExtPltt
_0200A268:
mov r0, #0
strb r0, [r6, #8]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200A184
arm_func_start sub_0200A274
sub_0200A274: ; 0x0200A274
mov r3, #0
ldr ip, [r0, #0x10]
mov r2, r3
b _0200A28C
_0200A284:
strh r2, [ip], #2
add r3, r3, #1
_0200A28C:
ldr r1, [r0, #4]
cmp r3, r1
blt _0200A284
bx lr
arm_func_end sub_0200A274
arm_func_start sub_0200A29C
sub_0200A29C: ; 0x0200A29C
ldr r0, [r0, #0x10]
ldr ip, _0200A2B0 ; =Rgb8ToRgb5
add r0, r0, r1, lsl #1
mov r1, r2
bx ip
.align 2, 0
_0200A2B0: .word Rgb8ToRgb5
arm_func_end sub_0200A29C
arm_func_start sub_0200A2B4
sub_0200A2B4: ; 0x0200A2B4
ldr r3, [r0, #0x10]
ldr ip, _0200A2C8 ; =sub_02004FF8
mov r0, r1
add r1, r3, r2, lsl #1
bx ip
.align 2, 0
_0200A2C8: .word sub_02004FF8
arm_func_end sub_0200A2B4
arm_func_start sub_0200A2CC
sub_0200A2CC: ; 0x0200A2CC
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #0x18]
str r1, [r0, #0x1c]
str r1, [r0, #0x20]
str r1, [r0, #0x24]
str r1, [r0, #0x14]
strb r1, [r0, #8]
bx lr
arm_func_end sub_0200A2CC
arm_func_start sub_0200A2F4
sub_0200A2F4: ; 0x0200A2F4
mov r1, #0
_0200A2F8:
ldr r2, [r0, #0x24]
str r1, [r0, #0x20]
str r1, [r0, #0x24]
cmp r2, #0
movne r0, r2
bne _0200A2F8
bx lr
arm_func_end sub_0200A2F4
_0200A314:
ldr r2, [r0, #0x24]
cmp r2, #0
beq _0200A330
cmp r2, r1
bxeq lr
mov r0, r2
b _0200A314
_0200A330:
str r1, [r0, #0x24]
str r0, [r1, #0x20]
mov r0, #0
str r0, [r1, #0x24]
bx lr
_0200A344:
ldr r2, [r0, #0x24]
cmp r2, #0
bxeq lr
cmp r2, r1
movne r0, r2
bne _0200A344
ldr r2, [r1, #0x24]
str r2, [r0, #0x24]
cmp r2, #0
strne r0, [r2, #0x20]
mov r0, #0
str r0, [r1, #0x20]
str r0, [r1, #0x24]
bx lr
arm_func_start sub_0200A37C
sub_0200A37C: ; 0x0200A37C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
ldr r4, [r0, #0x24]
b _0200A39C
_0200A38C:
mov r0, r4
mov r1, r5
bl sub_0200A618
ldr r4, [r4, #0x24]
_0200A39C:
cmp r4, #0
bne _0200A38C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0200A37C
arm_func_start sub_0200A3A8
sub_0200A3A8: ; 0x0200A3A8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
ldr r4, [r0, #0x24]
b _0200A3D0
_0200A3BC:
mov r0, r4
mov r1, r6
mov r2, r5
bl sub_0200A64C
ldr r4, [r4, #0x24]
_0200A3D0:
cmp r4, #0
bne _0200A3BC
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200A3A8
arm_func_start sub_0200A3DC
sub_0200A3DC: ; 0x0200A3DC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
ldr r4, [r0, #0x24]
b _0200A404
_0200A3F0:
mov r0, r4
mov r1, r6
mov r2, r5
bl sub_0200A688
ldr r4, [r4, #0x24]
_0200A404:
cmp r4, #0
bne _0200A3F0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200A3DC
arm_func_start sub_0200A410
sub_0200A410: ; 0x0200A410
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
ldr r4, [r0, #0x24]
b _0200A438
_0200A424:
mov r0, r4
mov r1, r6
mov r2, r5
bl sub_0200A6C4
ldr r4, [r4, #0x24]
_0200A438:
cmp r4, #0
bne _0200A424
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200A410
arm_func_start sub_0200A444
sub_0200A444: ; 0x0200A444
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
ldr r4, [r0, #0x24]
b _0200A46C
_0200A458:
mov r0, r4
mov r1, r6
mov r2, r5
bl sub_0200A700
ldr r4, [r4, #0x24]
_0200A46C:
cmp r4, #0
bne _0200A458
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200A444
arm_func_start sub_0200A478
sub_0200A478: ; 0x0200A478
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
str r5, [r6]
ldr r1, [sp, #0x10]
str r3, [r6, #4]
mov r0, r3, lsl #2
mov r4, r2
bl MemAlloc
str r0, [r6, #0x18]
ldr r0, [r5, #0x10]
mov r1, #0
add r0, r0, r4, lsl #1
str r0, [r6, #0x1c]
str r1, [r6, #0x20]
mov r0, r6
str r1, [r6, #0x24]
bl sub_0200A544
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200A478
arm_func_start sub_0200A4C4
sub_0200A4C4: ; 0x0200A4C4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x20]
ldr r2, [r4, #0x24]
mov r0, #0
str r0, [r4, #0x20]
str r0, [r4, #0x24]
cmp r1, #0
strne r2, [r1, #0x24]
cmp r2, #0
strne r1, [r2, #0x20]
ldr r0, [r4, #0x18]
bl MemFree
mov r0, #0
str r0, [r4, #0x18]
ldmia sp!, {r4, pc}
arm_func_end sub_0200A4C4
arm_func_start sub_0200A504
sub_0200A504: ; 0x0200A504
mov r1, #1
strb r1, [r0, #8]
bx lr
arm_func_end sub_0200A504
arm_func_start sub_0200A510
sub_0200A510: ; 0x0200A510
stmdb sp!, {r4, lr}
mov r4, r0
ldrb r1, [r4, #8]
cmp r1, #0
ldmeqia sp!, {r4, pc}
ldr r1, [r4, #0x14]
blx r1
mov r0, #0
strb r0, [r4, #8]
ldr r0, [r4]
mov r1, #1
strb r1, [r0, #8]
ldmia sp!, {r4, pc}
arm_func_end sub_0200A510
arm_func_start sub_0200A544
sub_0200A544: ; 0x0200A544
mov ip, #0
ldr r3, [r0, #0x18]
mov r2, ip
b _0200A56C
_0200A554:
mov r1, r3
strb r2, [r3], #4
strb r2, [r1, #1]
strb r2, [r1, #2]
strb r2, [r1, #3]
add ip, ip, #1
_0200A56C:
ldr r1, [r0, #4]
cmp ip, r1
blt _0200A554
ldr r2, _0200A58C ; =sub_0200A73C
mov r1, #1
str r2, [r0, #0x14]
strb r1, [r0, #8]
bx lr
.align 2, 0
_0200A58C: .word sub_0200A73C
arm_func_end sub_0200A544
arm_func_start sub_0200A590
sub_0200A590: ; 0x0200A590
ldr r0, [r0, #0x18]
mov r3, #4
add r1, r0, r1, lsl #2
_0200A59C:
ldrb r0, [r2], #1
subs r3, r3, #1
strb r0, [r1], #1
bne _0200A59C
bx lr
arm_func_end sub_0200A590
arm_func_start sub_0200A5B0
sub_0200A5B0: ; 0x0200A5B0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, [r0, #0x18]
mov lr, #0
add ip, r0, r1, lsl #2
b _0200A5EC
_0200A5C4:
mov r4, r2
mov r5, ip
add r2, r2, #4
add ip, ip, #4
mov r1, #4
_0200A5D8:
ldrb r0, [r4], #1
subs r1, r1, #1
strb r0, [r5], #1
bne _0200A5D8
add lr, lr, #1
_0200A5EC:
cmp lr, r3
blt _0200A5C4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0200A5B0
arm_func_start sub_0200A5F8
sub_0200A5F8: ; 0x0200A5F8
ldr r0, [r0, #0x18]
mov r3, #4
add r2, r0, r2, lsl #2
_0200A604:
ldrb r0, [r2], #1
subs r3, r3, #1
strb r0, [r1], #1
bne _0200A604
bx lr
arm_func_end sub_0200A5F8
arm_func_start sub_0200A618
sub_0200A618: ; 0x0200A618
strh r1, [r0, #0xa]
mov r2, #0
strb r2, [r0, #0xc]
strb r2, [r0, #0xd]
strb r2, [r0, #0xe]
strb r2, [r0, #0xf]
ldr r1, _0200A648 ; =sub_0200A78C
str r2, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #1
strb r1, [r0, #8]
bx lr
.align 2, 0
_0200A648: .word sub_0200A78C
arm_func_end sub_0200A618
arm_func_start sub_0200A64C
sub_0200A64C: ; 0x0200A64C
strh r1, [r0, #0xa]
add ip, r0, #0xc
mov r3, #4
_0200A658:
ldrb r1, [r2], #1
subs r3, r3, #1
strb r1, [ip], #1
bne _0200A658
mov r2, #0
ldr r1, _0200A684 ; =sub_0200A9E4
str r2, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #1
strb r1, [r0, #8]
bx lr
.align 2, 0
_0200A684: .word sub_0200A9E4
arm_func_end sub_0200A64C
arm_func_start sub_0200A688
sub_0200A688: ; 0x0200A688
strh r1, [r0, #0xa]
add ip, r0, #0xc
mov r3, #4
_0200A694:
ldrb r1, [r2], #1
subs r3, r3, #1
strb r1, [ip], #1
bne _0200A694
mov r2, #0
ldr r1, _0200A6C0 ; =sub_0200ACB0
str r2, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #1
strb r1, [r0, #8]
bx lr
.align 2, 0
_0200A6C0: .word sub_0200ACB0
arm_func_end sub_0200A688
arm_func_start sub_0200A6C4
sub_0200A6C4: ; 0x0200A6C4
strh r1, [r0, #0xa]
add ip, r0, #0xc
mov r3, #4
_0200A6D0:
ldrb r1, [r2], #1
subs r3, r3, #1
strb r1, [ip], #1
bne _0200A6D0
mov r2, #0
ldr r1, _0200A6FC ; =TransformPaletteDataWithFlushDivideFade
str r2, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #1
strb r1, [r0, #8]
bx lr
.align 2, 0
_0200A6FC: .word TransformPaletteDataWithFlushDivideFade
arm_func_end sub_0200A6C4
arm_func_start sub_0200A700
sub_0200A700: ; 0x0200A700
strh r1, [r0, #0xa]
add ip, r0, #0xc
mov r3, #4
_0200A70C:
ldrb r1, [r2], #1
subs r3, r3, #1
strb r1, [ip], #1
bne _0200A70C
mov r2, #0
ldr r1, _0200A738 ; =sub_0200B0AC
str r2, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #1
strb r1, [r0, #8]
bx lr
.align 2, 0
_0200A738: .word sub_0200B0AC
arm_func_end sub_0200A700
arm_func_start sub_0200A73C
sub_0200A73C: ; 0x0200A73C
stmdb sp!, {r4, lr}
ldr ip, [r0, #0x18]
ldr lr, [r0, #0x1c]
mov r4, #0
b _0200A77C
_0200A750:
ldrb r1, [ip, #1]
ldrb r2, [ip, #2]
ldrb r3, [ip], #4
and r1, r1, #0xf8
and r2, r2, #0xf8
mov r1, r1, lsl #2
and r3, r3, #0xf8
orr r1, r1, r2, lsl #7
orr r1, r1, r3, asr #3
strh r1, [lr], #2
add r4, r4, #1
_0200A77C:
ldr r1, [r0, #4]
cmp r4, r1
blt _0200A750
ldmia sp!, {r4, pc}
arm_func_end sub_0200A73C
arm_func_start sub_0200A78C
sub_0200A78C: ; 0x0200A78C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldrh r2, [r0, #0xa]
ldr r1, [r0]
ldr r3, [r0, #0x18]
cmp r2, #0x100
ldr r1, [r1]
ldr ip, [r0, #0x1c]
blo _0200A7F0
mov r5, #0
b _0200A7E0
_0200A7B4:
ldrb r1, [r3, #1]
ldrb r2, [r3, #2]
ldrb r4, [r3], #4
and r1, r1, #0xf8
and r2, r2, #0xf8
mov r1, r1, lsl #2
and r4, r4, #0xf8
orr r1, r1, r2, lsl #7
orr r1, r1, r4, asr #3
strh r1, [ip], #2
add r5, r5, #1
_0200A7E0:
ldr r1, [r0, #4]
cmp r5, r1
blt _0200A7B4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0200A7F0:
cmp r2, #0
bne _0200A898
cmp r1, #2
bne _0200A874
mov lr, #0
mov r1, lr
mov r2, lr
b _0200A864
_0200A810:
mov r4, r2
_0200A814:
add r4, r4, #1
cmp r4, #0xf0
strh r1, [ip], #2
add lr, lr, #1
blt _0200A814
mov r4, r1
_0200A82C:
ldrb r5, [r3, #1]
ldrb r6, [r3, #2]
ldrb r7, [r3], #4
and r5, r5, #0xf8
and r6, r6, #0xf8
mov r5, r5, lsl #2
add r4, r4, #1
and r7, r7, #0xf8
orr r5, r5, r6, lsl #7
orr r5, r5, r7, asr #3
cmp r4, #0x10
strh r5, [ip], #2
add lr, lr, #1
blt _0200A82C
_0200A864:
ldr r4, [r0, #4]
cmp lr, r4
blt _0200A810
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0200A874:
mov r3, #0
mov r2, r3
b _0200A888
_0200A880:
strh r2, [ip], #2
add r3, r3, #1
_0200A888:
ldr r1, [r0, #4]
cmp r3, r1
blt _0200A880
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0200A898:
cmp r1, #2
mov lr, #0
bne _0200A9D4
b _0200A95C
_0200A8A8:
mov r4, #0
_0200A8AC:
ldrb r1, [r3, #1]
ldrb r5, [r3, #2]
ldrb r6, [r3], #4
mul r7, r1, r2
mul r8, r5, r2
mul r1, r6, r2
mov r5, r7, asr #7
add r7, r7, r5, lsr #24
mov r6, r8, asr #7
mov r5, r1, asr #7
add r1, r1, r5, lsr #24
add r6, r8, r6, lsr #24
mov r1, r1, lsl #8
add r4, r4, #1
mov r7, r7, lsl #8
mov r5, r6, lsl #8
mov r6, r7, lsr #0x10
mov r7, r5, lsr #0x10
and r5, r6, #0xf8
mov r8, r1, lsr #0x10
mov r1, r5, lsl #2
and r6, r7, #0xf8
and r5, r8, #0xf8
orr r1, r1, r6, lsl #7
orr r1, r1, r5, asr #3
strh r1, [ip], #2
cmp r4, #0xf0
add lr, lr, #1
blt _0200A8AC
mov r1, #0
_0200A924:
ldrb r4, [r3, #1]
ldrb r5, [r3, #2]
ldrb r6, [r3], #4
and r4, r4, #0xf8
and r5, r5, #0xf8
mov r4, r4, lsl #2
add r1, r1, #1
and r6, r6, #0xf8
orr r4, r4, r5, lsl #7
orr r4, r4, r6, asr #3
cmp r1, #0x10
strh r4, [ip], #2
add lr, lr, #1
blt _0200A924
_0200A95C:
ldr r1, [r0, #4]
cmp lr, r1
blt _0200A8A8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0200A96C:
ldrb r1, [r3, #1]
ldrb r4, [r3, #2]
ldrb r5, [r3], #4
mul r6, r1, r2
mul r7, r4, r2
mul r1, r5, r2
mov r4, r6, asr #7
add r6, r6, r4, lsr #24
mov r5, r7, asr #7
mov r4, r1, asr #7
add r1, r1, r4, lsr #24
add r5, r7, r5, lsr #24
mov r1, r1, lsl #8
mov r6, r6, lsl #8
mov r4, r5, lsl #8
mov r5, r6, lsr #0x10
mov r6, r4, lsr #0x10
and r4, r5, #0xf8
mov r7, r1, lsr #0x10
mov r1, r4, lsl #2
and r5, r6, #0xf8
and r4, r7, #0xf8
orr r1, r1, r5, lsl #7
orr r1, r1, r4, asr #3
strh r1, [ip], #2
add lr, lr, #1
_0200A9D4:
ldr r1, [r0, #4]
cmp lr, r1
blt _0200A96C
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_0200A78C
arm_func_start sub_0200A9E4
sub_0200A9E4: ; 0x0200A9E4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, [r0]
ldrh r5, [r0, #0xa]
ldr r1, [r1]
add r4, sp, #0
add r6, r0, #0xc
mov r3, #4
_0200AA00:
ldrb r2, [r6], #1
subs r3, r3, #1
strb r2, [r4], #1
bne _0200AA00
cmp r5, #0x100
ldr r2, [r0, #0x18]
ldr r4, [r0, #0x1c]
blo _0200AA64
mov r6, #0
b _0200AA54
_0200AA28:
ldrb r1, [r2, #1]
ldrb r3, [r2, #2]
ldrb r5, [r2], #4
and r1, r1, #0xf8
and r3, r3, #0xf8
mov r1, r1, lsl #2
and r5, r5, #0xf8
orr r1, r1, r3, lsl #7
orr r1, r1, r5, asr #3
strh r1, [r4], #2
add r6, r6, #1
_0200AA54:
ldr r1, [r0, #4]
cmp r6, r1
blt _0200AA28
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0200AA64:
cmp r5, #0
bne _0200AB38
ldrb r3, [sp, #1]
ldrb r5, [sp, #2]
ldrb r6, [sp]
and r3, r3, #0xf8
and r5, r5, #0xf8
mov r3, r3, lsl #2
and r6, r6, #0xf8
orr r3, r3, r5, lsl #7
orr r3, r3, r6, asr #3
mov r3, r3, lsl #0x10
cmp r1, #2
mov r5, r3, lsr #0x10
bne _0200AB18
mov r6, #0
mov r3, r6
mov r1, r6
b _0200AB08
_0200AAB0:
mov r7, r3
_0200AAB4:
add r7, r7, #1
cmp r7, #0xf0
strh r5, [r4], #2
add r2, r2, #4
add r6, r6, #1
blt _0200AAB4
mov r7, r1
_0200AAD0:
ldrb r8, [r2, #1]
ldrb sb, [r2, #2]
ldrb sl, [r2], #4
and r8, r8, #0xf8
and sb, sb, #0xf8
mov r8, r8, lsl #2
add r7, r7, #1
and sl, sl, #0xf8
orr r8, r8, sb, lsl #7
orr r8, r8, sl, asr #3
cmp r7, #0x10
strh r8, [r4], #2
add r6, r6, #1
blt _0200AAD0
_0200AB08:
ldr r7, [r0, #4]
cmp r6, r7
blt _0200AAB0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0200AB18:
mov r2, #0
b _0200AB28
_0200AB20:
strh r5, [r4], #2
add r2, r2, #1
_0200AB28:
ldr r1, [r0, #4]
cmp r2, r1
blt _0200AB20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0200AB38:
rsb r3, r5, #0x100
mov r3, r3, lsl #0x10
ldrb r8, [sp]
mov sb, r3, lsr #0x10
ldrb r7, [sp, #1]
ldrb r6, [sp, #2]
mul r3, r8, sb
mul ip, r7, sb
mul lr, r6, sb
cmp r1, #2
bne _0200AC30
mov r6, #0
b _0200AC20
_0200AB6C:
mov r7, #0
_0200AB70:
ldrb r1, [r2, #1]
ldrb fp, [r2, #2]
ldrb sb, [r2], #4
mla sl, r1, r5, ip
mla r8, fp, r5, lr
mla r1, sb, r5, r3
mov sb, sl, asr #7
add sb, sl, sb, lsr #24
mov fp, r8, asr #7
add r8, r8, fp, lsr #24
mov sl, r1, asr #7
mov sb, sb, lsl #8
add r1, r1, sl, lsr #24
mov r8, r8, lsl #8
mov r1, r1, lsl #8
mov r1, r1, lsr #0x10
add r7, r7, #1
mov sb, sb, lsr #0x10
mov sl, r8, lsr #0x10
and r8, sb, #0xf8
and sb, sl, #0xf8
mov r8, r8, lsl #2
and r1, r1, #0xf8
orr r8, r8, sb, lsl #7
orr r1, r8, r1, asr #3
strh r1, [r4], #2
cmp r7, #0xf0
add r6, r6, #1
blt _0200AB70
mov r7, #0
_0200ABE8:
ldrb r8, [r2, #1]
ldrb sb, [r2, #2]
ldrb r1, [r2], #4
and r8, r8, #0xf8
and sb, sb, #0xf8
mov r8, r8, lsl #2
and sl, r1, #0xf8
orr r1, r8, sb, lsl #7
add r7, r7, #1
orr r1, r1, sl, asr #3
cmp r7, #0x10
strh r1, [r4], #2
add r6, r6, #1
blt _0200ABE8
_0200AC20:
ldr r1, [r0, #4]
cmp r6, r1
blt _0200AB6C
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0200AC30:
mov r7, #0
b _0200ACA0
_0200AC38:
ldrb r1, [r2, #1]
ldrb r6, [r2, #2]
ldrb r8, [r2], #4
mla sl, r1, r5, ip
mla r1, r6, r5, lr
mla r6, r8, r5, r3
mov r8, sl, asr #7
add sl, sl, r8, lsr #24
mov sb, r1, asr #7
mov r8, r6, asr #7
add sb, r1, sb, lsr #24
add r1, r6, r8, lsr #24
mov sl, sl, lsl #8
mov r6, sb, lsl #8
mov r8, sl, lsr #0x10
mov r1, r1, lsl #8
mov sb, r6, lsr #0x10
and r6, r8, #0xf8
mov sl, r1, lsr #0x10
mov r1, r6, lsl #2
and r8, sb, #0xf8
and r6, sl, #0xf8
orr r1, r1, r8, lsl #7
orr r1, r1, r6, asr #3
strh r1, [r4], #2
add r7, r7, #1
_0200ACA0:
ldr r1, [r0, #4]
cmp r7, r1
blt _0200AC38
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0200A9E4
arm_func_start sub_0200ACB0
sub_0200ACB0: ; 0x0200ACB0
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
ldr r1, [r0]
ldrh r2, [r0, #0xa]
ldr r1, [r1]
add r5, sp, #0
add r6, r0, #0xc
mov r4, #4
_0200ACD0:
ldrb r3, [r6], #1
subs r4, r4, #1
strb r3, [r5], #1
bne _0200ACD0
cmp r2, #0x100
ldr r3, [r0, #0x18]
ldr r4, [r0, #0x1c]
blo _0200AD20
ldrb r2, [sp, #1]
ldrb r5, [sp, #2]
ldrb r6, [sp]
and r2, r2, #0xf8
and r5, r5, #0xf8
mov r2, r2, lsl #2
and r6, r6, #0xf8
orr r2, r2, r5, lsl #7
orr r2, r2, r6, asr #3
mov r2, r2, lsl #0x10
mov ip, r2, lsr #0x10
b _0200AD94
_0200AD20:
cmp r2, #0
moveq ip, #0
beq _0200AD94
ldrb r5, [sp, #1]
ldrb r7, [sp, #2]
ldrb ip, [sp]
mul r6, r5, r2
mul r8, r7, r2
mul r7, ip, r2
mov r2, r6, asr #7
mov r5, r8, asr #7
add ip, r6, r2, lsr #24
mov r2, r7, asr #7
add r5, r8, r5, lsr #24
mov ip, ip, lsl #8
add r2, r7, r2, lsr #24
mov r5, r5, lsl #8
mov r6, ip, lsr #0x10
mov r2, r2, lsl #8
mov r7, r5, lsr #0x10
and r5, r6, #0xf8
mov r8, r2, lsr #0x10
and r6, r7, #0xf8
mov r2, r5, lsl #2
and r5, r8, #0xf8
orr r2, r2, r6, lsl #7
orr r2, r2, r5, asr #3
mov r2, r2, lsl #0x10
mov ip, r2, lsr #0x10
_0200AD94:
cmp r1, #2
bne _0200AE14
mov lr, #0
mov r2, lr
mov r1, lr
b _0200AE04
_0200ADAC:
mov r5, r2
_0200ADB0:
add r5, r5, #1
cmp r5, #0xf0
strh ip, [r4], #2
add r3, r3, #4
add lr, lr, #1
blt _0200ADB0
mov r5, r1
_0200ADCC:
ldrb r6, [r3, #1]
ldrb r7, [r3, #2]
ldrb r8, [r3], #4
and r6, r6, #0xf8
and r7, r7, #0xf8
mov r6, r6, lsl #2
add r5, r5, #1
and r8, r8, #0xf8
orr r6, r6, r7, lsl #7
orr r6, r6, r8, asr #3
cmp r5, #0x10
strh r6, [r4], #2
add lr, lr, #1
blt _0200ADCC
_0200AE04:
ldr r5, [r0, #4]
cmp lr, r5
blt _0200ADAC
b _0200AE30
_0200AE14:
mov r2, #0
b _0200AE24
_0200AE1C:
strh ip, [r4], #2
add r2, r2, #1
_0200AE24:
ldr r1, [r0, #4]
cmp r2, r1
blt _0200AE1C
_0200AE30:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
arm_func_end sub_0200ACB0
; https://decomp.me/scratch/xdMiD
arm_func_start TransformPaletteDataWithFlushDivideFade
TransformPaletteDataWithFlushDivideFade: ; 0x0200AE38
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
mov sl, r0
ldr r1, [sl]
ldrh r0, [sl, #0xa]
ldr fp, [r1]
add r3, sp, #0x14
add r4, sl, #0xc
mov r2, #4
_0200AE5C:
ldrb r1, [r4], #1
subs r2, r2, #1
strb r1, [r3], #1
bne _0200AE5C
cmp r0, #0x100
ldr r4, [sl, #0x18]
ldr r5, [sl, #0x1c]
blo _0200AEC0
mov r3, #0
b _0200AEB0
_0200AE84:
ldrb r0, [r4, #1]
ldrb r1, [r4, #2]
ldrb r2, [r4], #4
and r0, r0, #0xf8
and r1, r1, #0xf8
mov r0, r0, lsl #2
and r2, r2, #0xf8
orr r0, r0, r1, lsl #7
orr r0, r0, r2, asr #3
strh r0, [r5], #2
add r3, r3, #1
_0200AEB0:
ldr r0, [sl, #4]
cmp r3, r0
blt _0200AE84
b _0200B0A4
_0200AEC0:
ldrb sb, [sp, #0x14]
ldrb r7, [sp, #0x15]
ldrb r3, [sp, #0x16]
rsb r6, sb, #0xff
mul r8, r6, r0
rsb r2, r7, #0xff
mov ip, r8, asr #7
add r8, r8, ip, lsr #24
add r8, sb, r8, asr #8
rsb r1, r3, #0xff
mul r6, r2, r0
mul r2, r1, r0
mov r0, r6, asr #7
mov r1, r2, asr #7
add r0, r6, r0, lsr #24
add r1, r2, r1, lsr #24
add r6, r7, r0, asr #8
add r2, r3, r1, asr #8
mov r0, r8, lsl #0x10
mov r1, r6, lsl #0x10
mov r2, r2, lsl #0x10
cmp fp, #2
mov r8, r0, lsr #0x10
mov r6, r1, lsr #0x10
mov r7, r2, lsr #0x10
mov sb, #0
bne _0200B098
b _0200B004
_0200AF30:
mov fp, #0
_0200AF34:
ldrb r2, [r4]
str r5, [sp]
mov r1, #0xff
mul r0, r2, r8
add r5, r5, #2
bl _s32_div_f
ldrb r2, [r4, #2]
str r0, [sp, #4]
mov r1, #0xff
mul r0, r2, r7
bl _s32_div_f
ldrb r2, [r4, #1]
str r0, [sp, #8]
mov r1, #0xff
mul r0, r2, r6
bl _s32_div_f
ldr r1, [sp, #4]
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r2, r1, #0xf8
ldr r1, [sp, #8]
mov r0, r0, lsr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r0, r0, #0xf8
add fp, fp, #1
and r1, r1, #0xf8
mov r0, r0, lsl #2
orr r0, r0, r1, lsl #7
orr r1, r0, r2, asr #3
ldr r0, [sp]
add r4, r4, #4
strh r1, [r0]
cmp fp, #0xf0
add sb, sb, #1
blt _0200AF34
mov r1, #0
_0200AFCC:
ldrb r2, [r4, #1]
ldrb r3, [r4, #2]
ldrb r0, [r4], #4
and r2, r2, #0xf8
and r3, r3, #0xf8
mov r2, r2, lsl #2
and fp, r0, #0xf8
orr r0, r2, r3, lsl #7
add r1, r1, #1
orr r0, r0, fp, asr #3
cmp r1, #0x10
strh r0, [r5], #2
add sb, sb, #1
blt _0200AFCC
_0200B004:
ldr r0, [sl, #4]
cmp sb, r0
blt _0200AF30
b _0200B0A4
_0200B014:
ldrb r2, [r4]
mov fp, r5
mov r1, #0xff
mul r0, r2, r8
add r5, r5, #2
bl _s32_div_f
ldrb r2, [r4, #2]
str r0, [sp, #0xc]
mov r1, #0xff
mul r0, r2, r7
bl _s32_div_f
ldrb r2, [r4, #1]
str r0, [sp, #0x10]
mov r1, #0xff
mul r0, r2, r6
bl _s32_div_f
ldr r1, [sp, #0xc]
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r2, r1, #0xf8
ldr r1, [sp, #0x10]
mov r0, r0, lsr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r0, r0, #0xf8
and r1, r1, #0xf8
mov r0, r0, lsl #2
orr r0, r0, r1, lsl #7
orr r0, r0, r2, asr #3
strh r0, [fp]
add r4, r4, #4
add sb, sb, #1
_0200B098:
ldr r0, [sl, #4]
cmp sb, r0
blt _0200B014
_0200B0A4:
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end TransformPaletteDataWithFlushDivideFade
arm_func_start sub_0200B0AC
sub_0200B0AC: ; 0x0200B0AC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
mov sl, r0
ldr r0, [sl]
ldrh r3, [sl, #0xa]
ldr r2, [r0]
add r4, sp, #0x14
add r5, sl, #0xc
mov r1, #4
_0200B0D0:
ldrb r0, [r5], #1
subs r1, r1, #1
strb r0, [r4], #1
bne _0200B0D0
ldrb r0, [sp, #0x14]
ldrb r7, [sp, #0x15]
cmp r3, #0x100
movhs r3, #0x100
ldrb r5, [sp, #0x16]
mul r1, r0, r3
mul r0, r7, r3
mul r8, r5, r3
mov r3, r1, asr #7
mov r5, r0, asr #7
add r1, r1, r3, lsr #24
add r3, r0, r5, lsr #24
mov r0, r1, lsl #8
mov r7, r8, asr #7
add r5, r8, r7, lsr #24
mov r1, r3, lsl #8
mov r3, r5, lsl #8
ldr r4, [sl, #0x18]
ldr r6, [sl, #0x1c]
cmp r2, #2
mov sb, r0, lsr #0x10
mov r7, r1, lsr #0x10
mov r8, r3, lsr #0x10
mov r5, #0
bne _0200B2B0
b _0200B21C
_0200B148:
mov fp, #0
_0200B14C:
ldrb r2, [r4]
str r6, [sp]
mov r1, #0xff
mul r0, r2, sb
add r6, r6, #2
bl _s32_div_f
ldrb r2, [r4, #2]
str r0, [sp, #4]
mov r1, #0xff
mul r0, r2, r8
bl _s32_div_f
ldrb r2, [r4, #1]
str r0, [sp, #8]
mov r1, #0xff
mul r0, r2, r7
bl _s32_div_f
ldr r1, [sp, #4]
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r2, r1, #0xf8
ldr r1, [sp, #8]
mov r0, r0, lsr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r0, r0, #0xf8
add fp, fp, #1
and r1, r1, #0xf8
mov r0, r0, lsl #2
orr r0, r0, r1, lsl #7
orr r1, r0, r2, asr #3
ldr r0, [sp]
add r4, r4, #4
strh r1, [r0]
cmp fp, #0xf0
add r5, r5, #1
blt _0200B14C
mov r1, #0
_0200B1E4:
ldrb r2, [r4, #1]
ldrb r3, [r4, #2]
ldrb r0, [r4], #4
and r2, r2, #0xf8
and r3, r3, #0xf8
mov r2, r2, lsl #2
and fp, r0, #0xf8
orr r0, r2, r3, lsl #7
add r1, r1, #1
orr r0, r0, fp, asr #3
cmp r1, #0x10
strh r0, [r6], #2
add r5, r5, #1
blt _0200B1E4
_0200B21C:
ldr r0, [sl, #4]
cmp r5, r0
blt _0200B148
b _0200B2BC
_0200B22C:
ldrb r2, [r4]
mov fp, r6
mov r1, #0xff
mul r0, r2, sb
add r6, r6, #2
bl _s32_div_f
ldrb r2, [r4, #2]
str r0, [sp, #0xc]
mov r1, #0xff
mul r0, r2, r8
bl _s32_div_f
ldrb r2, [r4, #1]
str r0, [sp, #0x10]
mov r1, #0xff
mul r0, r2, r7
bl _s32_div_f
ldr r1, [sp, #0xc]
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r2, r1, #0xf8
ldr r1, [sp, #0x10]
mov r0, r0, lsr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
and r0, r0, #0xf8
and r1, r1, #0xf8
mov r0, r0, lsl #2
orr r0, r0, r1, lsl #7
orr r0, r0, r2, asr #3
strh r0, [fp]
add r4, r4, #4
add r5, r5, #1
_0200B2B0:
ldr r0, [sl, #4]
cmp r5, r0
blt _0200B22C
_0200B2BC:
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0200B0AC
arm_func_start sub_0200B2C4
sub_0200B2C4: ; 0x0200B2C4
stmdb sp!, {r4, lr}
mov r4, r0
strb r1, [r4]
mov r0, #0
strb r0, [r4, #1]
str r3, [r4, #0x10]
str r0, [r4, #4]
str r0, [r4, #8]
str r2, [r4, #0xc]
ldrb r2, [r4]
ldr r0, _0200B310 ; =_02092AD8
ldr r1, [sp, #8]
ldr r0, [r0, r2, lsl #2]
str r0, [r4, #0x14]
bl MemAlloc
str r0, [r4, #0x18]
mov r0, r4
bl sub_0200B3D4
ldmia sp!, {r4, pc}
.align 2, 0
_0200B310: .word _02092AD8
arm_func_end sub_0200B2C4
arm_func_start sub_0200B314
sub_0200B314: ; 0x0200B314
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x18]
bl MemFree
mov r0, #0
str r0, [r4, #0x18]
ldmia sp!, {r4, pc}
arm_func_end sub_0200B314
arm_func_start sub_0200B330
sub_0200B330: ; 0x0200B330
mov r1, #1
strb r1, [r0, #1]
bx lr
arm_func_end sub_0200B330
arm_func_start sub_0200B33C
sub_0200B33C: ; 0x0200B33C
bx lr
arm_func_end sub_0200B33C
arm_func_start sub_0200B340
sub_0200B340: ; 0x0200B340
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r4, r0
ldr r0, _0200B3BC ; =0x000001FF
ldmib r4, {r1, r2}
and r1, r1, r0
mov r2, r2, lsl #0x17
ldr r0, [r4, #0xc]
orr r1, r1, r2, lsr #7
str r1, [r0]
ldrb r0, [r4, #1]
cmp r0, #0
beq _0200B3B4
ldr r5, [r4, #0x18]
ldr r1, [r4, #0x14]
mov r0, r5
ldr r6, [r4, #0x10]
bl sub_0207A2DC
ldr ip, [r4, #0x14]
mov r2, r6
mov r3, r5
mov r0, #3
mov r1, #1
str ip, [sp]
bl sub_02005E10
mov r0, #3
bl sub_02005D30
mov r0, #0
strb r0, [r4, #1]
_0200B3B4:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0200B3BC: .word 0x000001FF
arm_func_end sub_0200B340
arm_func_start sub_0200B3C0
sub_0200B3C0: ; 0x0200B3C0
ldr r2, [r1]
ldr r1, [r1, #4]
str r2, [r0, #4]
str r1, [r0, #8]
bx lr
arm_func_end sub_0200B3C0
arm_func_start sub_0200B3D4
sub_0200B3D4: ; 0x0200B3D4
mov r3, #0
ldr ip, [r0, #0x18]
mov r2, r3
b _0200B3EC
_0200B3E4:
strh r2, [ip], #2
add r3, r3, #1
_0200B3EC:
ldr r1, [r0, #0x14]
cmp r3, r1, lsr #1
blo _0200B3E4
bx lr
arm_func_end sub_0200B3D4
arm_func_start sub_0200B3FC
sub_0200B3FC: ; 0x0200B3FC
ldrb r3, [r0]
cmp r3, #3
addls pc, pc, r3, lsl #2
bx lr
_0200B40C: ; jump table
b _0200B41C ; case 0
b _0200B438 ; case 1
b _0200B470 ; case 2
b _0200B48C ; case 3
_0200B41C:
ldr ip, [r0, #0x18]
ldr r0, [r1, #4]
ldr r3, [r1]
add r0, ip, r0, lsl #6
mov r1, r3, lsl #1
strh r2, [r1, r0]
bx lr
_0200B438:
ldr ip, [r1]
ldr r3, [r0, #0x18]
cmp ip, #0x20
ldrlt r0, [r1, #4]
movlt r1, ip, lsl #1
addlt r0, r3, r0, lsl #6
strlth r2, [r1, r0]
bxlt lr
ldr r0, [r1, #4]
add r0, r3, r0, lsl #6
add r0, r0, ip, lsl #1
add r0, r0, #0x700
strh r2, [r0, #0xc0]
bx lr
_0200B470:
ldr ip, [r0, #0x18]
ldr r0, [r1, #4]
ldr r3, [r1]
add r0, ip, r0, lsl #6
mov r1, r3, lsl #1
strh r2, [r1, r0]
bx lr
_0200B48C:
ldr ip, [r1, #4]
cmp ip, #0x40
bge _0200B4C4
ldr r1, [r1]
ldr r0, [r0, #0x18]
cmp r1, #0x20
movlt r1, r1, lsl #1
addlt r0, r0, ip, lsl #6
strlth r2, [r1, r0]
addge r0, r0, ip, lsl #6
addge r0, r0, r1, lsl #1
addge r0, r0, #0x700
strgeh r2, [r0, #0xc0]
bx lr
_0200B4C4:
ldr r3, [r1]
ldr r1, [r0, #0x18]
cmp r3, #0x20
subge r0, ip, #0x20
addge r0, r1, r0, lsl #6
addge r0, r0, r3, lsl #1
addge r0, r0, #0x1700
strgeh r2, [r0, #0xc0]
bxge lr
sub r0, ip, #0x20
add r0, r1, r0, lsl #6
add r0, r0, r3, lsl #1
add r0, r0, #0x1000
strh r2, [r0]
bx lr
arm_func_end sub_0200B3FC
arm_func_start sub_0200B500
sub_0200B500: ; 0x0200B500
ldr r0, [r0, #0x18]
bx lr
arm_func_end sub_0200B500
arm_func_start sub_0200B508
sub_0200B508: ; 0x0200B508
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
str r4, [r5]
str r2, [r5, #4]
mov r0, #0
strb r0, [r5, #0x14]
str r3, [r5, #0x18]
cmp r2, #0
strle r0, [r5, #0xc]
ble _0200B550
ldr r1, [sp, #0x10]
mov r0, r2, lsl #1
bl MemAlloc
str r0, [r5, #0xc]
ldr r1, [sp, #0x10]
mov r0, r4, lsl #3
bl MemAlloc
_0200B550:
ldr r1, [sp, #0x10]
str r0, [r5, #0x10]
mov r0, r4, lsl #3
bl MemAlloc
str r0, [r5, #0x1c]
mov r0, r5
bl sub_0200B67C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0200B508
arm_func_start sub_0200B570
sub_0200B570: ; 0x0200B570
mov r1, #1
strb r1, [r0, #0x14]
bx lr
arm_func_end sub_0200B570
arm_func_start sub_0200B57C
sub_0200B57C: ; 0x0200B57C
stmdb sp!, {r3, r4, r5, lr}
ldr ip, [r0, #8]
cmp ip, #0
ldmleia sp!, {r3, r4, r5, pc}
ldr r3, [r0]
ldr r2, [r0, #0x1c]
sub r1, r3, #1
add lr, r2, r1, lsl #3
sub r3, r3, ip
ldr r4, [r0, #0xc]
mov r2, #0x200
mov r1, #0
b _0200B5C4
_0200B5B0:
strh r2, [lr]
strh r1, [lr, #2]
strh r1, [lr, #4]
sub lr, lr, #8
sub r3, r3, #1
_0200B5C4:
cmp r3, #0
bgt _0200B5B0
ldr r5, [r0, #4]
mvn r3, #0
b _0200B61C
_0200B5D8:
ldrsh ip, [r4]
strh r3, [r4], #2
b _0200B610
_0200B5E4:
ldr r2, [r0, #0x10]
mov r1, ip, lsl #3
ldrh r1, [r2, r1]
add r2, r2, ip, lsl #3
strh r1, [lr]
ldrh r1, [r2, #2]
strh r1, [lr, #2]
ldrh r1, [r2, #4]
strh r1, [lr, #4]
ldrsh ip, [r2, #6]
sub lr, lr, #8
_0200B610:
cmp ip, #0
bge _0200B5E4
sub r5, r5, #1
_0200B61C:
cmp r5, #0
bgt _0200B5D8
mov r1, #0
str r1, [r0, #8]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0200B57C
arm_func_start sub_0200B630
sub_0200B630: ; 0x0200B630
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrb r0, [r6, #0x14]
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r4, [r6, #0x1c]
ldr r1, [r6]
mov r0, r4
mov r1, r1, lsl #3
ldr r5, [r6, #0x18]
bl sub_0207A2DC
ldr r2, [r6]
mov r0, r5
mov r1, r4
mov r2, r2, lsl #3
bl Memcpy32
mov r0, #0
strb r0, [r6, #0x14]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200B630
arm_func_start sub_0200B67C
sub_0200B67C: ; 0x0200B67C
stmdb sp!, {r3, lr}
ldr ip, [r0, #0x1c]
mov lr, #0
str lr, [r0, #8]
mov r3, #0x200
mov r2, lr
b _0200B6B0
_0200B698:
strh r3, [ip]
strh r2, [ip, #2]
strh r2, [ip, #4]
strh r2, [ip, #6]
add ip, ip, #8
add lr, lr, #1
_0200B6B0:
ldr r1, [r0]
cmp lr, r1
blt _0200B698
ldr r1, [r0, #4]
cmp r1, #0
ldmleia sp!, {r3, pc}
ldr r3, [r0, #0xc]
mov ip, #0
mvn r2, #0
b _0200B6E0
_0200B6D8:
strh r2, [r3], #2
add ip, ip, #1
_0200B6E0:
ldr r1, [r0, #4]
cmp ip, r1
blt _0200B6D8
ldmia sp!, {r3, pc}
arm_func_end sub_0200B67C
arm_func_start sub_0200B6F0
sub_0200B6F0: ; 0x0200B6F0
stmdb sp!, {r4, lr}
ldr r4, [r0, #8]
ldr r3, [r0]
cmp r4, r3
ldmgeia sp!, {r4, pc}
cmp r2, #0
movlt r2, #0
blt _0200B71C
ldr r3, [r0, #4]
cmp r2, r3
subge r2, r3, #1
_0200B71C:
ldrh r3, [r1]
ldr lr, [r0, #0x10]
mov ip, r4, lsl #3
strh r3, [lr, ip]
ldrh ip, [r1, #2]
add lr, lr, r4, lsl #3
mov r3, r2, lsl #1
strh ip, [lr, #2]
ldrh r1, [r1, #4]
strh r1, [lr, #4]
ldr r1, [r0, #0xc]
ldrsh r1, [r1, r3]
strh r1, [lr, #6]
ldr r2, [r0, #8]
add r1, r2, #1
str r1, [r0, #8]
ldr r0, [r0, #0xc]
strh r2, [r0, r3]
ldmia sp!, {r4, pc}
arm_func_end sub_0200B6F0
arm_func_start sub_0200B768
sub_0200B768: ; 0x0200B768
#ifdef EUROPE
stmdb sp!, {r4, lr}
sub sp, sp, #8
bl GetLanguage
ldr r1, _0200B7E4 ; =_020AFF38_EU
mov r4, r0
ldrsb r0, [r1]
cmp r0, r4
beq _0200B7DC
ldr r1, _0200B7E8 ; =_020AFF3C_EU
add r0, sp, #0
ldr r1, [r1, r4, lsl #2]
mov r2, #1
bl LoadFileFromRom
ldr r2, _0200B7EC ; =0x04000208
mov r1, #0
ldrh r0, [r2]
strh r1, [r2]
ldr r0, _0200B7F0 ; =CART_REMOVED_IMG_DATA
ldr r1, [sp]
ldr r2, [sp, #4]
bl MemcpySimple
ldr r2, _0200B7EC ; =0x04000208
add r0, sp, #0
ldrh r1, [r2]
mov r1, #1
strh r1, [r2]
bl UnloadFile
ldr r0, _0200B7E4 ; =_020AFF38_EU
strb r4, [r0]
_0200B7DC:
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0200B7E4: .word _020AFF38_EU
_0200B7E8: .word _020AFF3C_EU
_0200B7EC: .word 0x04000208
_0200B7F0: .word CART_REMOVED_IMG_DATA
#else
bx lr
#endif
arm_func_end sub_0200B768
arm_func_start sub_0200B76C
sub_0200B76C: ; 0x0200B76C
stmdb sp!, {r4, lr}
bl GX_DispOff
ldr r2, _0200B874 ; =0x04001000
mov r0, #3
ldr r1, [r2]
bic r1, r1, #0x10000
str r1, [r2]
bl sub_0207C164
bl GX_DisableBankForBG
bl GX_DisableBankForOBJ
bl GX_DisableBankForBGExtPltt
bl GX_DisableBankForOBJExtPltt
bl GX_DisableBankForTex
bl GX_DisableBankForTexPltt
bl GX_DisableBankForSubBG
bl GX_DisableBankForSubOBJ
bl GX_DisableBankForSubBGExtPltt
ldr r0, _0200B878 ; =0x000001FF
bl GX_SetBankForLCDC
mov r0, #0
mov r1, #0x6800000
mov r2, #0xa4000
bl ArrayFill32Fast
mov r0, #0xc0
mov r1, #0x7000000
mov r2, #0x400
bl ArrayFill32Fast
mov r0, #0
mov r1, #0x5000000
mov r2, #0x400
bl ArrayFill32Fast
mov r0, #0xc0
ldr r1, _0200B87C ; =0x07000400
mov r2, #0x400
bl ArrayFill32Fast
mov r0, #0
ldr r1, _0200B880 ; =0x05000400
mov r2, #0x400
bl ArrayFill32Fast
bl sub_02019304
mov r4, r0
ldr r1, _0200B884 ; =CART_REMOVED_IMG_DATA
mov r2, #0xc000
bl MemcpySimple
mov r2, r4
ldr r0, _0200B888 ; =0x06806000
mov r1, #0xc000
bl DecompressAtFromMemoryPointer
mov r0, #2
mov r1, #0
mov r2, r1
bl GX_SetGraphicsMode
mov r0, #0
bl GXS_SetGraphicsMode
ldr r0, _0200B88C ; =0x0400006C
mov r1, #0
bl GXx_SetMasterBrightness_
ldr r0, _0200B890 ; =0x0400106C
mov r1, #0
bl GXx_SetMasterBrightness_
bl GX_DispOn
ldr r1, _0200B874 ; =0x04001000
ldr r0, [r1]
orr r0, r0, #0x10000
str r0, [r1]
ldmia sp!, {r4, pc}
.align 2, 0
_0200B874: .word 0x04001000
_0200B878: .word 0x000001FF
_0200B87C: .word 0x07000400
_0200B880: .word 0x05000400
_0200B884: .word CART_REMOVED_IMG_DATA
_0200B888: .word 0x06806000
_0200B88C: .word 0x0400006C
_0200B890: .word 0x0400106C
arm_func_end sub_0200B76C
arm_func_start sub_0200B894
sub_0200B894: ; 0x0200B894
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
add r0, r5, #0x1c
bl sub_0200A2CC
mov r0, r5
mov r1, r4
bl sub_0200B8D4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0200B894
arm_func_start sub_0200B8B8
sub_0200B8B8: ; 0x0200B8B8
stmdb sp!, {r4, lr}
mov r4, r0
mov r1, #0
bl sub_0200B8D4
add r0, r4, #0x1c
bl sub_0200A2F4
ldmia sp!, {r4, pc}
arm_func_end sub_0200B8B8
arm_func_start sub_0200B8D4
sub_0200B8D4: ; 0x0200B8D4
ldr r2, _0200B904 ; =_02094AE8
mov r1, r1, lsl #1
mov r3, #0
ldrsh r1, [r2, r1]
str r3, [r0]
mov r2, #1
str r2, [r0, #4]
strh r1, [r0, #0x10]
strh r1, [r0, #0x14]
str r3, [r0, #8]
str r3, [r0, #0xc]
bx lr
.align 2, 0
_0200B904: .word _02094AE8
arm_func_end sub_0200B8D4
arm_func_start sub_0200B908
sub_0200B908: ; 0x0200B908
ldr ip, _0200B914 ; =_0200A314
add r0, r0, #0x1c
bx ip
.align 2, 0
_0200B914: .word _0200A314
arm_func_end sub_0200B908
arm_func_start sub_0200B918
sub_0200B918: ; 0x0200B918
ldr ip, _0200B924 ; =_0200A344
add r0, r0, #0x1c
bx ip
.align 2, 0
_0200B924: .word _0200A344
arm_func_end sub_0200B918
arm_func_start sub_0200B928
sub_0200B928: ; 0x0200B928
mov r2, #0
strh r2, [r0, #0x10]
cmp r1, #0
ldrnesh r2, [r0, #0x14]
cmpne r2, #0
bne _0200B958
mov r2, #0
strh r2, [r0, #0x14]
mov r1, #1
stmib r0, {r1, r2}
str r2, [r0, #0xc]
bx lr
_0200B958:
cmp r1, #0
movlt r1, #0x1e
cmp r2, #0
movlt r2, #2
strlt r2, [r0, #4]
ldrltsh r2, [r0, #0x14]
rsblt r2, r2, #0
movge r2, #3
strge r2, [r0, #4]
ldrgesh r2, [r0, #0x14]
strh r2, [r0, #0x12]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
arm_func_end sub_0200B928
arm_func_start UpdateFadeStatus
UpdateFadeStatus: ; 0x0200B990
ldr r3, _0200BA00 ; =_02094AE8
mov ip, r1, lsl #1
ldrsh r3, [r3, ip]
cmp r2, #0
strh r3, [r0, #0x10]
ldrnesh r3, [r0, #0x10]
ldrnesh ip, [r0, #0x14]
cmpne ip, r3
bne _0200B9D4
ldrsh r3, [r0, #0x10]
mov r2, #1
mov r1, #0
strh r3, [r0, #0x14]
str r2, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
_0200B9D4:
cmp r2, #0
movlt r2, #0x1e
cmp r3, #0
sublt r3, ip, r3
subge r3, r3, ip
strh r3, [r0, #0x12]
ldr r3, _0200BA04 ; =_02094AF0
ldr r1, [r3, r1, lsl #2]
stmib r0, {r1, r2}
str r2, [r0, #0xc]
bx lr
.align 2, 0
_0200BA00: .word _02094AE8
_0200BA04: .word _02094AF0
arm_func_end UpdateFadeStatus
arm_func_start HandleFades
HandleFades: ; 0x0200BA08
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0200BB58
_0200BA20: ; jump table
b _0200BB50 ; case 0
b _0200BB40 ; case 1
b _0200BA38 ; case 2
b _0200BA80 ; case 3
b _0200BAC8 ; case 4
b _0200BB04 ; case 5
_0200BA38:
ldr r0, [r4, #8]
sub r2, r0, #1
str r2, [r4, #8]
cmp r2, #0
ldrlesh r1, [r4, #0x10]
movle r0, #0
strleh r1, [r4, #0x14]
strle r0, [r4, #4]
ble _0200BA78
ldrsh r0, [r4, #0x12]
ldr r1, [r4, #0xc]
mul r0, r2, r0
bl _s32_div_f
ldrsh r1, [r4, #0x10]
sub r0, r1, r0
strh r0, [r4, #0x14]
_0200BA78:
mov r0, #1
ldmia sp!, {r4, pc}
_0200BA80:
ldr r0, [r4, #8]
sub r2, r0, #1
str r2, [r4, #8]
cmp r2, #0
ldrlesh r1, [r4, #0x10]
movle r0, #0
strleh r1, [r4, #0x14]
strle r0, [r4, #4]
ble _0200BAC0
ldrsh r0, [r4, #0x12]
ldr r1, [r4, #0xc]
mul r0, r2, r0
bl _s32_div_f
ldrsh r1, [r4, #0x10]
add r0, r1, r0
strh r0, [r4, #0x14]
_0200BAC0:
mov r0, #1
ldmia sp!, {r4, pc}
_0200BAC8:
ldr r0, [r4, #8]
sub r2, r0, #1
str r2, [r4, #8]
cmp r2, #0
ldrlesh r0, [r4, #0x10]
ble _0200BAF8
ldrsh r0, [r4, #0x12]
ldr r1, [r4, #0xc]
mul r0, r2, r0
bl _s32_div_f
ldrsh r1, [r4, #0x10]
sub r0, r1, r0
_0200BAF8:
strh r0, [r4, #0x14]
mov r0, #1
ldmia sp!, {r4, pc}
_0200BB04:
ldr r0, [r4, #8]
sub r2, r0, #1
str r2, [r4, #8]
cmp r2, #0
ldrlesh r0, [r4, #0x10]
ble _0200BB34
ldrsh r0, [r4, #0x12]
ldr r1, [r4, #0xc]
mul r0, r2, r0
bl _s32_div_f
ldrsh r1, [r4, #0x10]
add r0, r1, r0
_0200BB34:
strh r0, [r4, #0x14]
mov r0, #1
ldmia sp!, {r4, pc}
_0200BB40:
mov r0, #0
str r0, [r4, #4]
mov r0, #1
ldmia sp!, {r4, pc}
_0200BB50:
mov r0, #0
ldmia sp!, {r4, pc}
_0200BB58:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end HandleFades
arm_func_start sub_0200BB60
sub_0200BB60: ; 0x0200BB60
ldr ip, _0200BB70 ; =sub_0200B928
mov r2, #1
str r2, [r0]
bx ip
.align 2, 0
_0200BB70: .word sub_0200B928
arm_func_end sub_0200BB60
arm_func_start sub_0200BB74
sub_0200BB74: ; 0x0200BB74
ldr ip, _0200BB84 ; =UpdateFadeStatus
mov r3, #1
str r3, [r0]
bx ip
.align 2, 0
_0200BB84: .word UpdateFadeStatus
arm_func_end sub_0200BB74
arm_func_start sub_0200BB88
sub_0200BB88: ; 0x0200BB88
mov r2, #1
str r2, [r0]
mov r2, #0
strh r2, [r0, #0x10]
cmp r1, #0
ldrnesh r2, [r0, #0x14]
cmpne r2, #0
bne _0200BBC0
mov r2, #0
strh r2, [r0, #0x14]
mov r1, #1
stmib r0, {r1, r2}
str r2, [r0, #0xc]
bx lr
_0200BBC0:
cmp r1, #0
movlt r1, #0x1e
cmp r2, #0
movlt r2, #4
strlt r2, [r0, #4]
ldrltsh r2, [r0, #0x14]
rsblt r2, r2, #0
movge r2, #5
strge r2, [r0, #4]
ldrgesh r2, [r0, #0x14]
strh r2, [r0, #0x12]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
arm_func_end sub_0200BB88
arm_func_start sub_0200BBF8
sub_0200BBF8: ; 0x0200BBF8
mov ip, #1
cmp r1, #0
movlt r1, #0x1e
str ip, [r0]
cmp r2, r3
movgt ip, #3
strgt ip, [r0, #4]
subgt ip, r2, r3
strgth ip, [r0, #0x12]
bgt _0200BC40
movlt ip, #2
strlt ip, [r0, #4]
sublt ip, r3, r2
strlth ip, [r0, #0x12]
movge ip, #1
strge ip, [r0, #4]
movge ip, #0
strgeh ip, [r0, #0x12]
_0200BC40:
str r1, [r0, #8]
str r1, [r0, #0xc]
strh r2, [r0, #0x14]
strh r3, [r0, #0x10]
bx lr
arm_func_end sub_0200BBF8
arm_func_start sub_0200BC54
sub_0200BC54: ; 0x0200BC54
ldr ip, _0200BC5C ; =HandleFades
bx ip
.align 2, 0
_0200BC5C: .word HandleFades
arm_func_end sub_0200BC54
arm_func_start sub_0200BC60
sub_0200BC60: ; 0x0200BC60
stmdb sp!, {r4, lr}
str r1, [r0]
add r4, r0, #0x16
mov lr, #4
_0200BC70:
ldrb ip, [r3], #1
subs lr, lr, #1
strb ip, [r4], #1
bne _0200BC70
cmp r1, #3
cmpne r1, #5
cmpne r1, #7
cmpne r1, #9
cmpne r1, #0xb
bne _0200BCA4
mov r1, #2
bl UpdateFadeStatus
ldmia sp!, {r4, pc}
_0200BCA4:
mov r1, r2
bl sub_0200B928
ldmia sp!, {r4, pc}
arm_func_end sub_0200BC60
arm_func_start sub_0200BCB0
sub_0200BCB0: ; 0x0200BCB0
stmdb sp!, {r4, lr}
str r1, [r0]
add r4, r0, #0x16
mov lr, #4
_0200BCC0:
ldrb ip, [r3], #1
subs lr, lr, #1
strb ip, [r4], #1
bne _0200BCC0
cmp r1, #1
bne _0200BCE4
mov r1, #1
bl UpdateFadeStatus
ldmia sp!, {r4, pc}
_0200BCE4:
cmp r1, #3
cmpne r1, #5
cmpne r1, #7
cmpne r1, #9
cmpne r1, #0xb
bne _0200BD08
mov r1, r2
bl sub_0200B928
ldmia sp!, {r4, pc}
_0200BD08:
mov r1, #2
bl UpdateFadeStatus
ldmia sp!, {r4, pc}
arm_func_end sub_0200BCB0
arm_func_start sub_0200BD14
sub_0200BD14: ; 0x0200BD14
ldr r0, [r0, #4]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end sub_0200BD14
arm_func_start GetFadeStatus
GetFadeStatus: ; 0x0200BD2C
ldrsh r1, [r0, #0x10]
mvn r0, #0xff
cmp r1, r0
moveq r0, #1
bxeq lr
cmp r1, #0x100
moveq r0, #2
movne r0, #0
bx lr
arm_func_end GetFadeStatus
arm_func_start sub_0200BD50
sub_0200BD50: ; 0x0200BD50
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldreq r0, [r4, #4]
cmpeq r0, #0
beq _0200C000
mov r0, r4
bl HandleFades
cmp r0, #0
beq _0200BF90
ldr r0, [r4]
cmp r0, #0xb
addls pc, pc, r0, lsl #2
b _0200C000
_0200BD90: ; jump table
b _0200C000 ; case 0
b _0200BDC0 ; case 1
b _0200BDDC ; case 2
b _0200BDFC ; case 3
b _0200BE10 ; case 4
b _0200BE30 ; case 5
b _0200BE44 ; case 6
b _0200BEB0 ; case 7
b _0200BE44 ; case 8
b _0200BEB0 ; case 9
b _0200BF10 ; case 10
b _0200BF54 ; case 11
_0200BDC0:
ldrsh r1, [r4, #0x14]
add r0, r4, #0x1c
add r1, r1, #0x100
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0200A37C
b _0200C000
_0200BDDC:
ldrsh r1, [r4, #0x14]
add r0, r4, #0x1c
add r2, r4, #0x16
rsb r1, r1, #0x100
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0200A3A8
b _0200C000
_0200BDFC:
ldrh r1, [r4, #0x14]
add r0, r4, #0x1c
add r2, r4, #0x16
bl sub_0200A3DC
b _0200C000
_0200BE10:
ldrsh r1, [r4, #0x14]
add r0, r4, #0x1c
add r2, r4, #0x16
rsb r1, r1, #0x100
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0200A410
b _0200C000
_0200BE30:
ldrh r1, [r4, #0x14]
add r0, r4, #0x1c
add r2, r4, #0x16
bl sub_0200A444
b _0200C000
_0200BE44:
cmp r0, #6
beq _0200BE58
cmp r0, #8
beq _0200BE74
b _0200BE90
_0200BE58:
mov r1, #0x90
mov r0, #0xff
strb r1, [sp]
strb r1, [sp, #1]
strb r0, [sp, #2]
strb r0, [sp, #3]
b _0200BE90
_0200BE74:
mov r2, #0xff
mov r1, #0xc0
mov r0, #0x80
strb r2, [sp]
strb r1, [sp, #1]
strb r0, [sp, #2]
strb r2, [sp, #3]
_0200BE90:
ldrsh r1, [r4, #0x14]
add r2, sp, #0
add r0, r4, #0x1c
rsb r1, r1, #0x100
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0200A410
b _0200C000
_0200BEB0:
cmp r0, #7
beq _0200BEC4
cmp r0, #9
beq _0200BEE0
b _0200BEFC
_0200BEC4:
mov r1, #0x90
mov r0, #0xff
strb r1, [sp]
strb r1, [sp, #1]
strb r0, [sp, #2]
strb r0, [sp, #3]
b _0200BEFC
_0200BEE0:
mov r2, #0xff
mov r1, #0xc0
mov r0, #0x80
strb r2, [sp]
strb r1, [sp, #1]
strb r0, [sp, #2]
strb r2, [sp, #3]
_0200BEFC:
ldrh r1, [r4, #0x14]
add r2, sp, #0
add r0, r4, #0x1c
bl sub_0200A444
b _0200C000
_0200BF10:
mov r0, #0xff
strb r0, [sp]
strb r0, [sp, #1]
strb r0, [sp, #2]
strb r0, [sp, #3]
ldrsh r1, [r4, #0x14]
add r2, sp, #0
add r0, r4, #0x1c
add r3, r1, r1, lsl #1
mov r1, r3, asr #1
add r1, r3, r1, lsr #30
mov r1, r1, asr #2
rsb r1, r1, #0x100
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_0200A3A8
b _0200C000
_0200BF54:
mov r0, #0xff
strb r0, [sp]
strb r0, [sp, #1]
strb r0, [sp, #2]
strb r0, [sp, #3]
ldrsh r1, [r4, #0x14]
add r2, sp, #0
add r0, r4, #0x1c
rsb r3, r1, #0x100
mov r1, r3, asr #1
add r1, r3, r1, lsr #30
mov r1, r1, lsl #0xe
mov r1, r1, lsr #0x10
bl sub_0200A3A8
b _0200C000
_0200BF90:
ldr r0, [r4, #4]
cmp r0, #0
bne _0200C000
ldr r0, [r4]
cmp r0, #0xb
addls pc, pc, r0, lsl #2
b _0200C000
_0200BFAC: ; jump table
b _0200C000 ; case 0
b _0200C000 ; case 1
b _0200BFDC ; case 2
b _0200BFF0 ; case 3
b _0200BFDC ; case 4
b _0200BFF0 ; case 5
b _0200BFDC ; case 6
b _0200BFF0 ; case 7
b _0200BFDC ; case 8
b _0200BFF0 ; case 9
b _0200BFDC ; case 10
b _0200BFF0 ; case 11
_0200BFDC:
ldrsh r0, [r4, #0x14]
cmp r0, #0x100
movge r0, #0
strge r0, [r4]
b _0200C000
_0200BFF0:
ldrsh r0, [r4, #0x14]
cmp r0, #0
movle r0, #0
strle r0, [r4]
_0200C000:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end sub_0200BD50
arm_func_start sub_0200C008
sub_0200C008: ; 0x0200C008
ldr ip, _0200C01C ; =sub_0200A29C
mov r3, r2, lsl #0x10
mov r2, r1
mov r1, r3, lsr #0x10
bx ip
.align 2, 0
_0200C01C: .word sub_0200A29C
arm_func_end sub_0200C008
arm_func_start sub_0200C020
sub_0200C020: ; 0x0200C020
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr ip, [sp, #0x10]
cmp ip, #0
beq _0200C084
ldrb lr, [r1]
mov r4, #0xff
ldrb lr, [ip, lr, lsl #2]
mul lr, r3, lr
mov lr, lr, lsr #5
strb lr, [sp]
ldrb lr, [r1, #1]
add lr, ip, lr, lsl #2
ldrb lr, [lr, #1]
mul lr, r3, lr
mov lr, lr, lsr #5
strb lr, [sp, #1]
ldrb r1, [r1, #2]
add r1, ip, r1, lsl #2
ldrb r1, [r1, #2]
mul r1, r3, r1
mov r1, r1, lsr #5
strb r1, [sp, #2]
strb r4, [sp, #3]
b _0200C0BC
_0200C084:
ldrb r4, [r1]
mov ip, #0xff
mul lr, r4, r3
mov r4, lr, lsr #5
strb r4, [sp]
ldrb lr, [r1, #1]
mul r4, lr, r3
mov r4, r4, lsr #5
strb r4, [sp, #1]
ldrb r1, [r1, #2]
mul r3, r1, r3
mov r1, r3, lsr #5
strb r1, [sp, #2]
strb ip, [sp, #3]
_0200C0BC:
mov r1, r2, lsl #0x10
add r2, sp, #0
mov r1, r1, lsr #0x10
bl sub_0200A590
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end sub_0200C020