pokeheartgold/asm/bg_window.s
2021-09-05 14:02:25 -04:00

10048 lines
170 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.rodata
_020F62C4:
.byte 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00
_020F62CC:
.word sub_0201D650
.word sub_0201D6D0
.word sub_0201D650
_020F62D8:
.word sub_0201D928
.word sub_0201D964
.word sub_0201D928
_020F62E4:
.word sub_0201D900
.word sub_0201D93C
.word sub_0201D900
_020F62F0:
.word sub_0201D820
.word sub_0201D874
.word sub_0201D820
_020F62FC:
.word sub_0201D7F4
.word sub_0201D838
.word sub_0201D7F4
_020F6308:
.word sub_0201D72C
.word sub_0201D79C
.word sub_0201D72C
.text
thumb_func_start sub_0201AC88
sub_0201AC88: ; 0x0201AC88
push {r3, r4, r5, lr}
mov r1, #0x5a
lsl r1, r1, #2
add r5, r0, #0
bl AllocFromHeap
mov r2, #0x5a
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl memset
str r5, [r4]
mov r0, #0
strh r0, [r4, #4]
strh r0, [r4, #6]
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end sub_0201AC88
thumb_func_start BgConfig_GetHeapId
BgConfig_GetHeapId: ; 0x0201ACAC
ldr r0, [r0]
bx lr
thumb_func_end BgConfig_GetHeapId
thumb_func_start sub_0201ACB0
sub_0201ACB0: ; 0x0201ACB0
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #0xc]
bl sub_020CD9FC
ldr r0, [r4, #8]
bl sub_020CDA64
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _0201ACE4 ; =0xC7FFFFFF
and r1, r0
str r1, [r2]
ldr r1, [r2]
asr r0, r0, #3
and r0, r1
str r0, [r2]
bl sub_02022C54
bl sub_02022CBC
pop {r4, pc}
nop
_0201ACE4: .word 0xC7FFFFFF
thumb_func_end sub_0201ACB0
thumb_func_start sub_0201ACE8
sub_0201ACE8: ; 0x0201ACE8
push {r3, lr}
add r2, r0, #0
cmp r1, #0
bne _0201AD00
ldr r0, [r2]
ldr r1, [r2, #4]
ldr r2, [r2, #0xc]
bl sub_020CD9FC
bl sub_02022C54
pop {r3, pc}
_0201AD00:
ldr r0, [r2, #8]
bl sub_020CDA64
bl sub_02022CBC
pop {r3, pc}
thumb_func_end sub_0201ACE8
thumb_func_start sub_0201AD0C
sub_0201AD0C: ; 0x0201AD0C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r1, [sp, #4]
str r3, [sp, #8]
add r4, r2, #0
str r0, [sp]
ldrb r0, [r4, #0x10]
ldr r1, [sp, #8]
ldr r6, [sp, #0x30]
bl sub_0201BA88
add r5, r0, #0
ldr r0, [sp, #4]
cmp r0, #7
bls _0201AD2C
b _0201B14C
_0201AD2C:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201AD38: ; jump table
.short _0201AD48 - _0201AD38 - 2 ; case 0
.short _0201ADA0 - _0201AD38 - 2 ; case 1
.short _0201ADF8 - _0201AD38 - 2 ; case 2
.short _0201AE9A - _0201AD38 - 2 ; case 3
.short _0201AF3C - _0201AD38 - 2 ; case 4
.short _0201AF94 - _0201AD38 - 2 ; case 5
.short _0201AFEC - _0201AD38 - 2 ; case 6
.short _0201B0AC - _0201AD38 - 2 ; case 7
_0201AD48:
mov r0, #1
add r1, r6, #0
bl GX_EngineAToggleLayers
ldrb r3, [r4, #0x14]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x11]
ldrb r2, [r4, #0x13]
lsl r6, r3, #0xd
lsl r0, r0, #7
lsl r3, r2, #2
str r0, [sp, #0xc]
ldr r2, _0201B090 ; =0x04000008
lsl r7, r1, #8
ldrh r1, [r2]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r1, r0
ldr r0, [sp, #0xc]
orr r0, r1
orr r0, r7
orr r0, r3
orr r0, r6
strh r0, [r2]
ldrh r1, [r2]
mov r0, #3
bic r1, r0
ldrb r0, [r4, #0x15]
orr r0, r1
strh r0, [r2]
ldr r0, [r4, #0x18]
cmp r0, #0
beq _0201AD96
ldrh r1, [r2]
mov r0, #0x40
orr r0, r1
strh r0, [r2]
b _0201B14C
_0201AD96:
ldrh r1, [r2]
mov r0, #0x40
bic r1, r0
strh r1, [r2]
b _0201B14C
_0201ADA0:
mov r0, #2
add r1, r6, #0
bl GX_EngineAToggleLayers
ldrb r3, [r4, #0x14]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x11]
ldrb r2, [r4, #0x13]
lsl r6, r3, #0xd
lsl r0, r0, #7
lsl r3, r2, #2
str r0, [sp, #0x10]
ldr r2, _0201B094 ; =0x0400000A
lsl r7, r1, #8
ldrh r1, [r2]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r1, r0
ldr r0, [sp, #0x10]
orr r0, r1
orr r0, r7
orr r0, r3
orr r0, r6
strh r0, [r2]
ldrh r1, [r2]
mov r0, #3
bic r1, r0
ldrb r0, [r4, #0x15]
orr r0, r1
strh r0, [r2]
ldr r0, [r4, #0x18]
cmp r0, #0
beq _0201ADEE
ldrh r1, [r2]
mov r0, #0x40
orr r0, r1
strh r0, [r2]
b _0201B14C
_0201ADEE:
ldrh r1, [r2]
mov r0, #0x40
bic r1, r0
strh r1, [r2]
b _0201B14C
_0201ADF8:
mov r0, #4
add r1, r6, #0
bl GX_EngineAToggleLayers
ldr r0, [sp, #8]
cmp r0, #0
beq _0201AE0E
cmp r0, #1
beq _0201AE30
cmp r0, #2
beq _0201AE52
_0201AE0E:
ldrb r1, [r4, #0x12]
ldr r7, _0201B098 ; =0x0400000C
ldrb r2, [r4, #0x13]
lsl r3, r1, #8
ldrb r0, [r4, #0x11]
lsl r6, r2, #2
ldrh r1, [r7]
lsl r2, r0, #7
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201AE72
_0201AE30:
ldrb r2, [r4, #0x13]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x16]
lsl r3, r2, #2
ldr r7, _0201B098 ; =0x0400000C
lsl r2, r1, #8
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201AE72
_0201AE52:
ldrb r1, [r4, #0x12]
ldr r7, _0201B098 ; =0x0400000C
ldrb r0, [r4, #0x16]
lsl r3, r1, #8
ldrb r2, [r4, #0x13]
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
lsl r2, r2, #2
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
_0201AE72:
ldr r0, _0201B098 ; =0x0400000C
mov r1, #3
ldrh r2, [r0]
bic r2, r1
ldrb r1, [r4, #0x15]
orr r1, r2
strh r1, [r0]
ldr r1, [r4, #0x18]
cmp r1, #0
beq _0201AE90
ldrh r2, [r0]
mov r1, #0x40
orr r1, r2
strh r1, [r0]
b _0201B14C
_0201AE90:
ldrh r2, [r0]
mov r1, #0x40
bic r2, r1
strh r2, [r0]
b _0201B14C
_0201AE9A:
mov r0, #8
add r1, r6, #0
bl GX_EngineAToggleLayers
ldr r0, [sp, #8]
cmp r0, #0
beq _0201AEB0
cmp r0, #1
beq _0201AED2
cmp r0, #2
beq _0201AEF4
_0201AEB0:
ldrb r1, [r4, #0x12]
ldr r7, _0201B09C ; =0x0400000E
ldrb r2, [r4, #0x13]
lsl r3, r1, #8
ldrb r0, [r4, #0x11]
lsl r6, r2, #2
ldrh r1, [r7]
lsl r2, r0, #7
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201AF14
_0201AED2:
ldrb r2, [r4, #0x13]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x16]
lsl r3, r2, #2
ldr r7, _0201B09C ; =0x0400000E
lsl r2, r1, #8
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201AF14
_0201AEF4:
ldrb r1, [r4, #0x12]
ldr r7, _0201B09C ; =0x0400000E
ldrb r0, [r4, #0x16]
lsl r3, r1, #8
ldrb r2, [r4, #0x13]
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
lsl r2, r2, #2
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
_0201AF14:
ldr r0, _0201B09C ; =0x0400000E
mov r1, #3
ldrh r2, [r0]
bic r2, r1
ldrb r1, [r4, #0x15]
orr r1, r2
strh r1, [r0]
ldr r1, [r4, #0x18]
cmp r1, #0
beq _0201AF32
ldrh r2, [r0]
mov r1, #0x40
orr r1, r2
strh r1, [r0]
b _0201B14C
_0201AF32:
ldrh r2, [r0]
mov r1, #0x40
bic r2, r1
strh r2, [r0]
b _0201B14C
_0201AF3C:
mov r0, #1
add r1, r6, #0
bl sub_02022CC8
ldrb r3, [r4, #0x14]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x11]
ldrb r2, [r4, #0x13]
lsl r6, r3, #0xd
lsl r0, r0, #7
lsl r3, r2, #2
str r0, [sp, #0x14]
ldr r2, _0201B0A0 ; =0x04001008
lsl r7, r1, #8
ldrh r1, [r2]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r1, r0
ldr r0, [sp, #0x14]
orr r0, r1
orr r0, r7
orr r0, r3
orr r0, r6
strh r0, [r2]
ldrh r1, [r2]
mov r0, #3
bic r1, r0
ldrb r0, [r4, #0x15]
orr r0, r1
strh r0, [r2]
ldr r0, [r4, #0x18]
cmp r0, #0
beq _0201AF8A
ldrh r1, [r2]
mov r0, #0x40
orr r0, r1
strh r0, [r2]
b _0201B14C
_0201AF8A:
ldrh r1, [r2]
mov r0, #0x40
bic r1, r0
strh r1, [r2]
b _0201B14C
_0201AF94:
mov r0, #2
add r1, r6, #0
bl sub_02022CC8
ldrb r2, [r4, #0x13]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x11]
lsl r6, r2, #2
ldrb r3, [r4, #0x14]
lsl r0, r0, #7
mov ip, r0
ldr r2, _0201B0A4 ; =0x0400100A
lsl r7, r1, #8
ldrh r1, [r2]
mov r0, #0x43
lsl r3, r3, #0xd
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
mov r1, ip
orr r0, r1
orr r0, r7
orr r0, r6
orr r0, r3
strh r0, [r2]
ldrh r1, [r2]
mov r0, #3
bic r1, r0
ldrb r0, [r4, #0x15]
orr r0, r1
strh r0, [r2]
ldr r0, [r4, #0x18]
cmp r0, #0
beq _0201AFE2
ldrh r1, [r2]
mov r0, #0x40
orr r0, r1
strh r0, [r2]
b _0201B14C
_0201AFE2:
ldrh r1, [r2]
mov r0, #0x40
bic r1, r0
strh r1, [r2]
b _0201B14C
_0201AFEC:
mov r0, #4
add r1, r6, #0
bl sub_02022CC8
ldr r0, [sp, #8]
cmp r0, #0
beq _0201B002
cmp r0, #1
beq _0201B024
cmp r0, #2
beq _0201B046
_0201B002:
ldrb r1, [r4, #0x12]
ldr r7, _0201B0A8 ; =0x0400100C
ldrb r2, [r4, #0x13]
lsl r3, r1, #8
ldrb r0, [r4, #0x11]
lsl r6, r2, #2
ldrh r1, [r7]
lsl r2, r0, #7
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201B066
_0201B024:
ldrb r2, [r4, #0x13]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x16]
lsl r3, r2, #2
ldr r7, _0201B0A8 ; =0x0400100C
lsl r2, r1, #8
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201B066
_0201B046:
ldrb r1, [r4, #0x12]
ldr r7, _0201B0A8 ; =0x0400100C
ldrb r0, [r4, #0x16]
lsl r3, r1, #8
ldrb r2, [r4, #0x13]
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
lsl r2, r2, #2
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
_0201B066:
ldr r0, _0201B0A8 ; =0x0400100C
mov r1, #3
ldrh r2, [r0]
bic r2, r1
ldrb r1, [r4, #0x15]
orr r1, r2
strh r1, [r0]
ldr r1, [r4, #0x18]
cmp r1, #0
beq _0201B084
ldrh r2, [r0]
mov r1, #0x40
orr r1, r2
strh r1, [r0]
b _0201B14C
_0201B084:
ldrh r2, [r0]
mov r1, #0x40
bic r2, r1
strh r2, [r0]
b _0201B14C
nop
_0201B090: .word 0x04000008
_0201B094: .word 0x0400000A
_0201B098: .word 0x0400000C
_0201B09C: .word 0x0400000E
_0201B0A0: .word 0x04001008
_0201B0A4: .word 0x0400100A
_0201B0A8: .word 0x0400100C
_0201B0AC:
mov r0, #8
add r1, r6, #0
bl sub_02022CC8
ldr r0, [sp, #8]
cmp r0, #0
beq _0201B0C2
cmp r0, #1
beq _0201B0E4
cmp r0, #2
beq _0201B106
_0201B0C2:
ldrb r1, [r4, #0x12]
ldr r7, _0201B1E0 ; =0x0400100E
ldrb r2, [r4, #0x13]
lsl r3, r1, #8
ldrb r0, [r4, #0x11]
lsl r6, r2, #2
ldrh r1, [r7]
lsl r2, r0, #7
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201B126
_0201B0E4:
ldrb r2, [r4, #0x13]
ldrb r1, [r4, #0x12]
ldrb r0, [r4, #0x16]
lsl r3, r2, #2
ldr r7, _0201B1E0 ; =0x0400100E
lsl r2, r1, #8
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
b _0201B126
_0201B106:
ldrb r1, [r4, #0x12]
ldr r7, _0201B1E0 ; =0x0400100E
ldrb r0, [r4, #0x16]
lsl r3, r1, #8
ldrb r2, [r4, #0x13]
lsl r6, r0, #0xd
ldrh r1, [r7]
mov r0, #0x43
lsl r2, r2, #2
and r0, r1
lsl r1, r5, #0xe
orr r0, r1
orr r0, r2
orr r0, r3
orr r0, r6
strh r0, [r7]
_0201B126:
ldr r0, _0201B1E0 ; =0x0400100E
mov r1, #3
ldrh r2, [r0]
bic r2, r1
ldrb r1, [r4, #0x15]
orr r1, r2
strh r1, [r0]
ldr r1, [r4, #0x18]
cmp r1, #0
beq _0201B144
ldrh r2, [r0]
mov r1, #0x40
orr r1, r2
strh r1, [r0]
b _0201B14C
_0201B144:
ldrh r2, [r0]
mov r1, #0x40
bic r2, r1
strh r2, [r0]
_0201B14C:
ldr r0, [sp, #4]
mov r1, #0x2c
add r5, r0, #0
ldr r0, [sp]
mul r5, r1
add r2, r0, r5
mov r3, #0
mov r0, #1
strh r3, [r2, #0x20]
lsl r0, r0, #0xc
str r0, [r2, #0x24]
str r0, [r2, #0x28]
str r3, [r2, #0x2c]
str r3, [r2, #0x30]
ldr r1, [r4, #8]
cmp r1, #0
beq _0201B194
ldr r0, [sp]
ldr r6, [sp]
ldr r0, [r0]
add r6, #8
bl AllocFromHeap
str r0, [r6, r5]
ldr r1, [r6, r5]
ldr r2, [r4, #8]
mov r0, #0
bl sub_020D4790
ldr r0, [sp]
ldr r2, [r4, #8]
add r1, r0, r5
str r2, [r1, #0xc]
ldr r0, [r4, #0xc]
str r0, [r1, #0x10]
b _0201B19A
_0201B194:
str r3, [r2, #8]
str r3, [r2, #0xc]
str r3, [r2, #0x10]
_0201B19A:
ldr r0, [sp]
ldrb r1, [r4, #0x10]
add r0, r0, r5
strb r1, [r0, #0x1d]
ldr r1, [sp, #8]
strb r1, [r0, #0x1c]
ldrb r1, [r4, #0x11]
strb r1, [r0, #0x1e]
ldr r1, [sp, #8]
cmp r1, #0
bne _0201B1BC
ldrb r1, [r4, #0x11]
cmp r1, #0
bne _0201B1BC
mov r1, #0x20
strb r1, [r0, #0x1f]
b _0201B1C4
_0201B1BC:
ldr r0, [sp]
mov r1, #0x40
add r0, r0, r5
strb r1, [r0, #0x1f]
_0201B1C4:
ldr r0, [sp]
ldr r1, [sp, #4]
ldr r3, [r4]
mov r2, #0
bl sub_0201BC8C
ldr r0, [sp]
ldr r1, [sp, #4]
ldr r3, [r4, #4]
mov r2, #3
bl sub_0201BC8C
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0201B1E0: .word 0x0400100E
thumb_func_end sub_0201AD0C
thumb_func_start sub_0201B1E4
sub_0201B1E4: ; 0x0201B1E4
push {r3, r4, lr}
sub sp, #4
mov r4, #1
str r4, [sp]
bl sub_0201AD0C
add sp, #4
pop {r3, r4, pc}
thumb_func_end sub_0201B1E4
thumb_func_start sub_0201B1F4
sub_0201B1F4: ; 0x0201B1F4
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r4, r2, #0
add r6, r0, #0
add r7, r1, #0
add r5, r3, #0
cmp r4, #0
bne _0201B230
add r3, r6, #0
mov r1, #0x2c
add r2, r7, #0
mul r2, r1
add r3, #0x1e
add r1, r6, r2
strb r5, [r3, r2]
mov ip, r1
ldrb r1, [r1, #0x1c]
cmp r1, #0
bne _0201B228
ldrb r1, [r3, r2]
cmp r1, #0
bne _0201B228
mov r1, #0x20
mov r2, ip
strb r1, [r2, #0x1f]
b _0201B262
_0201B228:
mov r1, #0x40
add r2, r6, r2
strb r1, [r2, #0x1f]
b _0201B262
_0201B230:
cmp r4, #3
bne _0201B262
mov r0, #0x2c
mul r0, r7
str r0, [sp]
add r0, r6, r0
strb r5, [r0, #0x1c]
ldrb r0, [r0, #0x1d]
add r1, r5, #0
bl sub_0201BA88
cmp r5, #0
bne _0201B25A
ldr r1, [sp]
add r2, r6, r1
ldrb r1, [r2, #0x1e]
cmp r1, #0
bne _0201B25A
mov r1, #0x20
strb r1, [r2, #0x1f]
b _0201B262
_0201B25A:
ldr r2, [sp]
mov r1, #0x40
add r2, r6, r2
strb r1, [r2, #0x1f]
_0201B262:
cmp r7, #7
bls _0201B26A
bl sub_0201BA78
_0201B26A:
add r1, r7, r7
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0201B276: ; jump table
.short _0201B286 - _0201B276 - 2 ; case 0
.short _0201B306 - _0201B276 - 2 ; case 1
.short _0201B386 - _0201B276 - 2 ; case 2
.short _0201B4F6 - _0201B276 - 2 ; case 3
.short _0201B680 - _0201B276 - 2 ; case 4
.short _0201B700 - _0201B276 - 2 ; case 5
.short _0201B780 - _0201B276 - 2 ; case 6
.short _0201B90C - _0201B276 - 2 ; case 7
_0201B286:
ldr r1, _0201B59C ; =0x04000008
cmp r4, #1
ldrh r2, [r1]
add r1, sp, #4
strh r2, [r1, #0x1e]
bne _0201B2A2
ldrh r2, [r1, #0x1e]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r2, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r2
strh r0, [r1, #0x1e]
b _0201B2C8
_0201B2A2:
cmp r4, #2
bne _0201B2B6
ldrh r2, [r1, #0x1e]
mov r0, #0x3c
bic r2, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r2
strh r0, [r1, #0x1e]
b _0201B2C8
_0201B2B6:
cmp r4, #3
bne _0201B2C8
ldrh r3, [r1, #0x1e]
ldr r2, _0201B5A4 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r2, r3
lsr r0, r0, #0x10
orr r0, r2
strh r0, [r1, #0x1e]
_0201B2C8:
add r0, sp, #4
ldrh r3, [r0, #0x1e]
add sp, #0x24
lsl r0, r3, #0x12
lsr r4, r0, #0x1f
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
lsl r0, r3, #0x13
lsr r1, r0, #0x1b
mov r0, #0x2c
mul r0, r7
add r0, r6, r0
lsl r3, r3, #0x10
lsr r5, r3, #0x1e
lsl r3, r2, #2
ldrb r0, [r0, #0x1e]
lsl r2, r1, #8
mov r6, #0x43
lsl r1, r0, #7
ldr r0, _0201B59C ; =0x04000008
lsl r5, r5, #0xe
ldrh r7, [r0]
lsl r4, r4, #0xd
and r6, r7
orr r5, r6
orr r1, r5
orr r1, r2
orr r1, r3
orr r1, r4
strh r1, [r0]
pop {r4, r5, r6, r7, pc}
_0201B306:
ldr r1, _0201B5A8 ; =0x0400000A
cmp r4, #1
ldrh r2, [r1]
add r1, sp, #4
strh r2, [r1, #0x1c]
bne _0201B322
ldrh r2, [r1, #0x1c]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r2, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r2
strh r0, [r1, #0x1c]
b _0201B348
_0201B322:
cmp r4, #2
bne _0201B336
ldrh r2, [r1, #0x1c]
mov r0, #0x3c
bic r2, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r2
strh r0, [r1, #0x1c]
b _0201B348
_0201B336:
cmp r4, #3
bne _0201B348
ldrh r3, [r1, #0x1c]
ldr r2, _0201B5A4 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r2, r3
lsr r0, r0, #0x10
orr r0, r2
strh r0, [r1, #0x1c]
_0201B348:
add r0, sp, #4
ldrh r3, [r0, #0x1c]
add sp, #0x24
lsl r0, r3, #0x12
lsr r4, r0, #0x1f
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
lsl r0, r3, #0x13
lsr r1, r0, #0x1b
mov r0, #0x2c
mul r0, r7
add r0, r6, r0
lsl r3, r3, #0x10
lsr r5, r3, #0x1e
lsl r3, r2, #2
ldrb r0, [r0, #0x1e]
lsl r2, r1, #8
mov r6, #0x43
lsl r1, r0, #7
ldr r0, _0201B5A8 ; =0x0400000A
lsl r5, r5, #0xe
ldrh r7, [r0]
lsl r4, r4, #0xd
and r6, r7
orr r5, r6
orr r1, r5
orr r1, r2
orr r1, r3
orr r1, r4
strh r1, [r0]
pop {r4, r5, r6, r7, pc}
_0201B386:
mov r1, #0x2c
mul r1, r7
add r2, r6, r1
ldrb r2, [r2, #0x1c]
cmp r2, #0
beq _0201B39A
cmp r2, #1
beq _0201B40E
cmp r2, #2
beq _0201B482
_0201B39A:
ldr r2, _0201B5AC ; =0x0400000C
cmp r4, #1
ldrh r3, [r2]
add r2, sp, #4
strh r3, [r2, #0x1a]
bne _0201B3B6
ldrh r3, [r2, #0x1a]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r3, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r3
strh r0, [r2, #0x1a]
b _0201B3DC
_0201B3B6:
cmp r4, #2
bne _0201B3CA
ldrh r3, [r2, #0x1a]
mov r0, #0x3c
bic r3, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r3
strh r0, [r2, #0x1a]
b _0201B3DC
_0201B3CA:
cmp r4, #3
bne _0201B3DC
ldrh r4, [r2, #0x1a]
ldr r3, _0201B5A4 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r3, r4
lsr r0, r0, #0x10
orr r0, r3
strh r0, [r2, #0x1a]
_0201B3DC:
add r0, sp, #4
ldrh r3, [r0, #0x1a]
add r1, r6, r1
ldr r6, _0201B5AC ; =0x0400000C
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
ldrb r4, [r1, #0x1e]
lsl r0, r3, #0x13
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1b
lsl r1, r0, #8
lsl r0, r4, #7
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #2
orr r0, r1
orr r0, r2
add sp, #0x24
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B40E:
ldr r1, _0201B5AC ; =0x0400000C
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #0x18]
bne _0201B42A
ldrh r1, [r2, #0x18]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #0x18]
b _0201B450
_0201B42A:
cmp r4, #2
bne _0201B43E
ldrh r1, [r2, #0x18]
mov r0, #0x3c
bic r1, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #0x18]
b _0201B450
_0201B43E:
cmp r4, #3
bne _0201B450
ldrh r3, [r2, #0x18]
ldr r1, _0201B5A4 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #0x18]
_0201B450:
add r0, sp, #4
ldrh r3, [r0, #0x18]
ldr r6, _0201B5AC ; =0x0400000C
add sp, #0x24
lsl r1, r3, #0x13
lsl r0, r3, #0x1a
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1c
lsl r1, r0, #2
lsl r0, r4, #8
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B482:
ldr r1, _0201B5AC ; =0x0400000C
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #0x16]
bne _0201B49E
ldrh r1, [r2, #0x16]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #0x16]
b _0201B4C4
_0201B49E:
cmp r4, #2
bne _0201B4B2
ldrh r1, [r2, #0x16]
mov r0, #0x38
bic r1, r0
lsl r0, r5, #0x1d
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #0x16]
b _0201B4C4
_0201B4B2:
cmp r4, #3
bne _0201B4C4
ldrh r3, [r2, #0x16]
ldr r1, _0201B5A4 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #0x16]
_0201B4C4:
add r0, sp, #4
ldrh r3, [r0, #0x16]
ldr r6, _0201B5AC ; =0x0400000C
add sp, #0x24
lsl r1, r3, #0x13
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r0, r3, #0x1a
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsl r1, r4, #8
lsr r0, r0, #0x1d
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
lsl r0, r0, #2
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B4F6:
mov r1, #0x2c
mul r1, r7
add r2, r6, r1
ldrb r2, [r2, #0x1c]
cmp r2, #0
beq _0201B50C
cmp r2, #1
beq _0201B580
cmp r2, #2
bne _0201B50C
b _0201B60C
_0201B50C:
ldr r2, _0201B5B0 ; =0x0400000E
cmp r4, #1
ldrh r3, [r2]
add r2, sp, #4
strh r3, [r2, #0x14]
bne _0201B528
ldrh r3, [r2, #0x14]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r3, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r3
strh r0, [r2, #0x14]
b _0201B54E
_0201B528:
cmp r4, #2
bne _0201B53C
ldrh r3, [r2, #0x14]
mov r0, #0x3c
bic r3, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r3
strh r0, [r2, #0x14]
b _0201B54E
_0201B53C:
cmp r4, #3
bne _0201B54E
ldrh r4, [r2, #0x14]
ldr r3, _0201B5A4 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r3, r4
lsr r0, r0, #0x10
orr r0, r3
strh r0, [r2, #0x14]
_0201B54E:
add r0, sp, #4
ldrh r3, [r0, #0x14]
add r1, r6, r1
ldr r6, _0201B5B0 ; =0x0400000E
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
ldrb r4, [r1, #0x1e]
lsl r0, r3, #0x13
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1b
lsl r1, r0, #8
lsl r0, r4, #7
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #2
orr r0, r1
orr r0, r2
add sp, #0x24
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B580:
ldr r1, _0201B5B0 ; =0x0400000E
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #0x12]
bne _0201B5B4
ldrh r1, [r2, #0x12]
ldr r0, _0201B5A0 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #0x12]
b _0201B5DA
.balign 4, 0
_0201B59C: .word 0x04000008
_0201B5A0: .word 0xFFFFE0FF
_0201B5A4: .word 0xFFFF3FFF
_0201B5A8: .word 0x0400000A
_0201B5AC: .word 0x0400000C
_0201B5B0: .word 0x0400000E
_0201B5B4:
cmp r4, #2
bne _0201B5C8
ldrh r1, [r2, #0x12]
mov r0, #0x3c
bic r1, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #0x12]
b _0201B5DA
_0201B5C8:
cmp r4, #3
bne _0201B5DA
ldrh r3, [r2, #0x12]
ldr r1, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #0x12]
_0201B5DA:
add r0, sp, #4
ldrh r3, [r0, #0x12]
ldr r6, _0201B8CC ; =0x0400000E
add sp, #0x24
lsl r1, r3, #0x13
lsl r0, r3, #0x1a
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1c
lsl r1, r0, #2
lsl r0, r4, #8
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B60C:
ldr r1, _0201B8CC ; =0x0400000E
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #0x10]
bne _0201B628
ldrh r1, [r2, #0x10]
ldr r0, _0201B8D0 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #0x10]
b _0201B64E
_0201B628:
cmp r4, #2
bne _0201B63C
ldrh r1, [r2, #0x10]
mov r0, #0x38
bic r1, r0
lsl r0, r5, #0x1d
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #0x10]
b _0201B64E
_0201B63C:
cmp r4, #3
bne _0201B64E
ldrh r3, [r2, #0x10]
ldr r1, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #0x10]
_0201B64E:
add r0, sp, #4
ldrh r3, [r0, #0x10]
ldr r6, _0201B8CC ; =0x0400000E
add sp, #0x24
lsl r1, r3, #0x13
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r0, r3, #0x1a
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsl r1, r4, #8
lsr r0, r0, #0x1d
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
lsl r0, r0, #2
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B680:
ldr r1, _0201B8D4 ; =0x04001008
cmp r4, #1
ldrh r2, [r1]
add r1, sp, #4
strh r2, [r1, #0xe]
bne _0201B69C
ldrh r2, [r1, #0xe]
ldr r0, _0201B8D0 ; =0xFFFFE0FF
and r2, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r2
strh r0, [r1, #0xe]
b _0201B6C2
_0201B69C:
cmp r4, #2
bne _0201B6B0
ldrh r2, [r1, #0xe]
mov r0, #0x3c
bic r2, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r2
strh r0, [r1, #0xe]
b _0201B6C2
_0201B6B0:
cmp r4, #3
bne _0201B6C2
ldrh r3, [r1, #0xe]
ldr r2, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r2, r3
lsr r0, r0, #0x10
orr r0, r2
strh r0, [r1, #0xe]
_0201B6C2:
add r0, sp, #4
ldrh r3, [r0, #0xe]
add sp, #0x24
lsl r0, r3, #0x12
lsr r4, r0, #0x1f
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
lsl r0, r3, #0x13
lsr r1, r0, #0x1b
mov r0, #0x2c
mul r0, r7
add r0, r6, r0
lsl r3, r3, #0x10
lsr r5, r3, #0x1e
lsl r3, r2, #2
ldrb r0, [r0, #0x1e]
lsl r2, r1, #8
mov r6, #0x43
lsl r1, r0, #7
ldr r0, _0201B8D4 ; =0x04001008
lsl r5, r5, #0xe
ldrh r7, [r0]
lsl r4, r4, #0xd
and r6, r7
orr r5, r6
orr r1, r5
orr r1, r2
orr r1, r3
orr r1, r4
strh r1, [r0]
pop {r4, r5, r6, r7, pc}
_0201B700:
ldr r1, _0201B8D8 ; =0x0400100A
cmp r4, #1
ldrh r2, [r1]
add r1, sp, #4
strh r2, [r1, #0xc]
bne _0201B71C
ldrh r2, [r1, #0xc]
ldr r0, _0201B8D0 ; =0xFFFFE0FF
and r2, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r2
strh r0, [r1, #0xc]
b _0201B742
_0201B71C:
cmp r4, #2
bne _0201B730
ldrh r2, [r1, #0xc]
mov r0, #0x3c
bic r2, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r2
strh r0, [r1, #0xc]
b _0201B742
_0201B730:
cmp r4, #3
bne _0201B742
ldrh r3, [r1, #0xc]
ldr r2, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r2, r3
lsr r0, r0, #0x10
orr r0, r2
strh r0, [r1, #0xc]
_0201B742:
add r0, sp, #4
ldrh r3, [r0, #0xc]
add sp, #0x24
lsl r0, r3, #0x12
lsr r4, r0, #0x1f
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
lsl r0, r3, #0x13
lsr r1, r0, #0x1b
mov r0, #0x2c
mul r0, r7
add r0, r6, r0
lsl r3, r3, #0x10
lsr r5, r3, #0x1e
lsl r3, r2, #2
ldrb r0, [r0, #0x1e]
lsl r2, r1, #8
mov r6, #0x43
lsl r1, r0, #7
ldr r0, _0201B8D8 ; =0x0400100A
lsl r5, r5, #0xe
ldrh r7, [r0]
lsl r4, r4, #0xd
and r6, r7
orr r5, r6
orr r1, r5
orr r1, r2
orr r1, r3
orr r1, r4
strh r1, [r0]
pop {r4, r5, r6, r7, pc}
_0201B780:
mov r1, #0x2c
mul r1, r7
add r2, r6, r1
ldrb r2, [r2, #0x1c]
cmp r2, #0
beq _0201B794
cmp r2, #1
beq _0201B808
cmp r2, #2
beq _0201B87C
_0201B794:
ldr r2, _0201B8DC ; =0x0400100C
cmp r4, #1
ldrh r3, [r2]
add r2, sp, #4
strh r3, [r2, #0xa]
bne _0201B7B0
ldrh r3, [r2, #0xa]
ldr r0, _0201B8D0 ; =0xFFFFE0FF
and r3, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r3
strh r0, [r2, #0xa]
b _0201B7D6
_0201B7B0:
cmp r4, #2
bne _0201B7C4
ldrh r3, [r2, #0xa]
mov r0, #0x3c
bic r3, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r3
strh r0, [r2, #0xa]
b _0201B7D6
_0201B7C4:
cmp r4, #3
bne _0201B7D6
ldrh r4, [r2, #0xa]
ldr r3, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r3, r4
lsr r0, r0, #0x10
orr r0, r3
strh r0, [r2, #0xa]
_0201B7D6:
add r0, sp, #4
ldrh r3, [r0, #0xa]
add r1, r6, r1
ldr r6, _0201B8DC ; =0x0400100C
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
ldrb r4, [r1, #0x1e]
lsl r0, r3, #0x13
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1b
lsl r1, r0, #8
lsl r0, r4, #7
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #2
orr r0, r1
orr r0, r2
add sp, #0x24
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B808:
ldr r1, _0201B8DC ; =0x0400100C
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #8]
bne _0201B824
ldrh r1, [r2, #8]
ldr r0, _0201B8D0 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #8]
b _0201B84A
_0201B824:
cmp r4, #2
bne _0201B838
ldrh r1, [r2, #8]
mov r0, #0x3c
bic r1, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #8]
b _0201B84A
_0201B838:
cmp r4, #3
bne _0201B84A
ldrh r3, [r2, #8]
ldr r1, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #8]
_0201B84A:
add r0, sp, #4
ldrh r3, [r0, #8]
ldr r6, _0201B8DC ; =0x0400100C
add sp, #0x24
lsl r1, r3, #0x13
lsl r0, r3, #0x1a
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1c
lsl r1, r0, #2
lsl r0, r4, #8
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B87C:
ldr r1, _0201B8DC ; =0x0400100C
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #6]
bne _0201B898
ldrh r1, [r2, #6]
ldr r0, _0201B8D0 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #6]
b _0201B8BE
_0201B898:
cmp r4, #2
bne _0201B8AC
ldrh r1, [r2, #6]
mov r0, #0x38
bic r1, r0
lsl r0, r5, #0x1d
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #6]
b _0201B8BE
_0201B8AC:
cmp r4, #3
bne _0201B8BE
ldrh r3, [r2, #6]
ldr r1, _0201B8C8 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #6]
_0201B8BE:
add r0, sp, #4
ldrh r3, [r0, #6]
ldr r6, _0201B8DC ; =0x0400100C
b _0201B8E0
nop
_0201B8C8: .word 0xFFFF3FFF
_0201B8CC: .word 0x0400000E
_0201B8D0: .word 0xFFFFE0FF
_0201B8D4: .word 0x04001008
_0201B8D8: .word 0x0400100A
_0201B8DC: .word 0x0400100C
_0201B8E0:
add sp, #0x24
lsl r1, r3, #0x13
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r0, r3, #0x1a
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsl r1, r4, #8
lsr r0, r0, #0x1d
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
lsl r0, r0, #2
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B90C:
mov r1, #0x2c
mul r1, r7
add r2, r6, r1
ldrb r2, [r2, #0x1c]
cmp r2, #0
beq _0201B920
cmp r2, #1
beq _0201B994
cmp r2, #2
beq _0201BA08
_0201B920:
ldr r2, _0201BA7C ; =0x0400100E
cmp r4, #1
ldrh r3, [r2]
add r2, sp, #4
strh r3, [r2, #4]
bne _0201B93C
ldrh r3, [r2, #4]
ldr r0, _0201BA80 ; =0xFFFFE0FF
and r3, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r3
strh r0, [r2, #4]
b _0201B962
_0201B93C:
cmp r4, #2
bne _0201B950
ldrh r3, [r2, #4]
mov r0, #0x3c
bic r3, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r3
strh r0, [r2, #4]
b _0201B962
_0201B950:
cmp r4, #3
bne _0201B962
ldrh r4, [r2, #4]
ldr r3, _0201BA84 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r3, r4
lsr r0, r0, #0x10
orr r0, r3
strh r0, [r2, #4]
_0201B962:
add r0, sp, #4
ldrh r3, [r0, #4]
add r1, r6, r1
ldr r6, _0201BA7C ; =0x0400100E
lsl r0, r3, #0x1a
lsr r2, r0, #0x1c
ldrb r4, [r1, #0x1e]
lsl r0, r3, #0x13
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1b
lsl r1, r0, #8
lsl r0, r4, #7
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #2
orr r0, r1
orr r0, r2
add sp, #0x24
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201B994:
ldr r1, _0201BA7C ; =0x0400100E
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2, #2]
bne _0201B9B0
ldrh r1, [r2, #2]
ldr r0, _0201BA80 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2, #2]
b _0201B9D6
_0201B9B0:
cmp r4, #2
bne _0201B9C4
ldrh r1, [r2, #2]
mov r0, #0x3c
bic r1, r0
lsl r0, r5, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2, #2]
b _0201B9D6
_0201B9C4:
cmp r4, #3
bne _0201B9D6
ldrh r3, [r2, #2]
ldr r1, _0201BA84 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2, #2]
_0201B9D6:
add r0, sp, #4
ldrh r3, [r0, #2]
ldr r6, _0201BA7C ; =0x0400100E
add sp, #0x24
lsl r1, r3, #0x13
lsl r0, r3, #0x1a
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsr r0, r0, #0x1c
lsl r1, r0, #2
lsl r0, r4, #8
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
pop {r4, r5, r6, r7, pc}
_0201BA08:
ldr r1, _0201BA7C ; =0x0400100E
add r2, sp, #4
ldrh r1, [r1]
cmp r4, #1
strh r1, [r2]
bne _0201BA24
ldrh r1, [r2]
ldr r0, _0201BA80 ; =0xFFFFE0FF
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x13
orr r0, r1
strh r0, [r2]
b _0201BA4A
_0201BA24:
cmp r4, #2
bne _0201BA38
ldrh r1, [r2]
mov r0, #0x38
bic r1, r0
lsl r0, r5, #0x1d
lsr r0, r0, #0x1a
orr r0, r1
strh r0, [r2]
b _0201BA4A
_0201BA38:
cmp r4, #3
bne _0201BA4A
ldrh r3, [r2]
ldr r1, _0201BA84 ; =0xFFFF3FFF
lsl r0, r0, #0x1e
and r1, r3
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r2]
_0201BA4A:
add r0, sp, #4
ldrh r3, [r0]
ldr r6, _0201BA7C ; =0x0400100E
lsl r1, r3, #0x13
lsr r4, r1, #0x1b
lsl r1, r3, #0x12
lsr r2, r1, #0x1f
lsl r0, r3, #0x1a
lsl r1, r3, #0x10
lsr r3, r1, #0x1e
lsl r1, r4, #8
lsr r0, r0, #0x1d
ldrh r5, [r6]
mov r4, #0x43
lsl r3, r3, #0xe
and r4, r5
lsl r0, r0, #2
orr r3, r4
orr r0, r3
lsl r2, r2, #0xd
orr r0, r1
orr r0, r2
strh r0, [r6]
thumb_func_end sub_0201B1F4
thumb_func_start sub_0201BA78
sub_0201BA78: ; 0x0201BA78
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0201BA7C: .word 0x0400100E
_0201BA80: .word 0xFFFFE0FF
_0201BA84: .word 0xFFFF3FFF
thumb_func_end sub_0201BA78
thumb_func_start sub_0201BA88
sub_0201BA88: ; 0x0201BA88
cmp r1, #0
beq _0201BA96
cmp r1, #1
beq _0201BAB6
cmp r1, #2
beq _0201BAD6
b _0201BAF6
_0201BA96:
cmp r0, #1
bne _0201BA9E
mov r0, #0
bx lr
_0201BA9E:
cmp r0, #2
bne _0201BAA6
mov r0, #2
bx lr
_0201BAA6:
cmp r0, #3
bne _0201BAAE
mov r0, #1
bx lr
_0201BAAE:
cmp r0, #4
bne _0201BAF6
mov r0, #3
bx lr
_0201BAB6:
cmp r0, #0
bne _0201BABE
mov r0, #0
bx lr
_0201BABE:
cmp r0, #1
bne _0201BAC6
mov r0, #1
bx lr
_0201BAC6:
cmp r0, #4
bne _0201BACE
mov r0, #2
bx lr
_0201BACE:
cmp r0, #5
bne _0201BAF6
mov r0, #3
bx lr
_0201BAD6:
cmp r0, #0
bne _0201BADE
mov r0, #0
bx lr
_0201BADE:
cmp r0, #1
bne _0201BAE6
mov r0, #1
bx lr
_0201BAE6:
cmp r0, #4
bne _0201BAEE
mov r0, #2
bx lr
_0201BAEE:
cmp r0, #5
bne _0201BAF6
mov r0, #3
bx lr
_0201BAF6:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end sub_0201BA88
thumb_func_start sub_0201BAFC
sub_0201BAFC: ; 0x0201BAFC
cmp r0, #5
bhi _0201BB4A
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201BB0C: ; jump table
.short _0201BB18 - _0201BB0C - 2 ; case 0
.short _0201BB20 - _0201BB0C - 2 ; case 1
.short _0201BB28 - _0201BB0C - 2 ; case 2
.short _0201BB32 - _0201BB0C - 2 ; case 3
.short _0201BB3C - _0201BB0C - 2 ; case 4
.short _0201BB44 - _0201BB0C - 2 ; case 5
_0201BB18:
mov r0, #0x10
strb r0, [r1]
strb r0, [r2]
bx lr
_0201BB20:
mov r0, #0x20
strb r0, [r1]
strb r0, [r2]
bx lr
_0201BB28:
mov r0, #0x20
strb r0, [r1]
mov r0, #0x40
strb r0, [r2]
bx lr
_0201BB32:
mov r0, #0x40
strb r0, [r1]
mov r0, #0x20
strb r0, [r2]
bx lr
_0201BB3C:
mov r0, #0x40
strb r0, [r1]
strb r0, [r2]
bx lr
_0201BB44:
mov r0, #0x80
strb r0, [r1]
strb r0, [r2]
_0201BB4A:
bx lr
thumb_func_end sub_0201BAFC
thumb_func_start sub_0201BB4C
sub_0201BB4C: ; 0x0201BB4C
push {r3, r4, r5, lr}
add r4, r0, #0
mov r2, #0x2c
add r5, r1, #0
mul r5, r2
add r4, #8
ldr r0, [r4, r5]
cmp r0, #0
beq _0201BB66
bl FreeToHeap
mov r0, #0
str r0, [r4, r5]
_0201BB66:
pop {r3, r4, r5, pc}
thumb_func_end sub_0201BB4C
thumb_func_start sub_0201BB68
sub_0201BB68: ; 0x0201BB68
cmp r0, #7
bhi _0201BC06
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201BB78: ; jump table
.short _0201BB88 - _0201BB78 - 2 ; case 0
.short _0201BB98 - _0201BB78 - 2 ; case 1
.short _0201BBA8 - _0201BB78 - 2 ; case 2
.short _0201BBB8 - _0201BB78 - 2 ; case 3
.short _0201BBC8 - _0201BB78 - 2 ; case 4
.short _0201BBD8 - _0201BB78 - 2 ; case 5
.short _0201BBE8 - _0201BB78 - 2 ; case 6
.short _0201BBF8 - _0201BB78 - 2 ; case 7
_0201BB88:
ldr r2, _0201BC08 ; =0x04000008
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BB98:
ldr r2, _0201BC0C ; =0x0400000A
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BBA8:
ldr r2, _0201BC10 ; =0x0400000C
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BBB8:
ldr r2, _0201BC14 ; =0x0400000E
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BBC8:
ldr r2, _0201BC18 ; =0x04001008
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BBD8:
ldr r2, _0201BC1C ; =0x0400100A
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BBE8:
ldr r2, _0201BC20 ; =0x0400100C
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
bx lr
_0201BBF8:
ldr r2, _0201BC24 ; =0x0400100E
mov r0, #3
ldrh r3, [r2]
bic r3, r0
add r0, r3, #0
orr r0, r1
strh r0, [r2]
_0201BC06:
bx lr
.balign 4, 0
_0201BC08: .word 0x04000008
_0201BC0C: .word 0x0400000A
_0201BC10: .word 0x0400000C
_0201BC14: .word 0x0400000E
_0201BC18: .word 0x04001008
_0201BC1C: .word 0x0400100A
_0201BC20: .word 0x0400100C
_0201BC24: .word 0x0400100E
thumb_func_end sub_0201BB68
thumb_func_start sub_0201BC28
sub_0201BC28: ; 0x0201BC28
push {r3, lr}
cmp r0, #7
bhi _0201BC88
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201BC3A: ; jump table
.short _0201BC4A - _0201BC3A - 2 ; case 0
.short _0201BC52 - _0201BC3A - 2 ; case 1
.short _0201BC5A - _0201BC3A - 2 ; case 2
.short _0201BC62 - _0201BC3A - 2 ; case 3
.short _0201BC6A - _0201BC3A - 2 ; case 4
.short _0201BC72 - _0201BC3A - 2 ; case 5
.short _0201BC7A - _0201BC3A - 2 ; case 6
.short _0201BC82 - _0201BC3A - 2 ; case 7
_0201BC4A:
mov r0, #1
bl GX_EngineAToggleLayers
pop {r3, pc}
_0201BC52:
mov r0, #2
bl GX_EngineAToggleLayers
pop {r3, pc}
_0201BC5A:
mov r0, #4
bl GX_EngineAToggleLayers
pop {r3, pc}
_0201BC62:
mov r0, #8
bl GX_EngineAToggleLayers
pop {r3, pc}
_0201BC6A:
mov r0, #1
bl sub_02022CC8
pop {r3, pc}
_0201BC72:
mov r0, #2
bl sub_02022CC8
pop {r3, pc}
_0201BC7A:
mov r0, #4
bl sub_02022CC8
pop {r3, pc}
_0201BC82:
mov r0, #8
bl sub_02022CC8
_0201BC88:
pop {r3, pc}
.balign 4, 0
thumb_func_end sub_0201BC28
thumb_func_start sub_0201BC8C
sub_0201BC8C: ; 0x0201BC8C
push {r4, r5, r6, lr}
add r5, r1, #0
add r4, r0, #0
mov r0, #0x2c
add r6, r5, #0
mul r6, r0
add r0, r4, #0
add r0, #8
add r1, r2, #0
add r2, r3, #0
add r0, r0, r6
bl sub_0201BE38
add r0, r4, r6
ldr r1, [r0, #0x14]
ldr r0, [r0, #0x18]
cmp r5, #7
bls _0201BCB2
b _0201BDC8
_0201BCB2:
add r2, r5, r5
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0201BCBE: ; jump table
.short _0201BCCE - _0201BCBE - 2 ; case 0
.short _0201BCE4 - _0201BCBE - 2 ; case 1
.short _0201BCFA - _0201BCBE - 2 ; case 2
.short _0201BD24 - _0201BCBE - 2 ; case 3
.short _0201BD4E - _0201BCBE - 2 ; case 4
.short _0201BD64 - _0201BCBE - 2 ; case 5
.short _0201BD7A - _0201BCBE - 2 ; case 6
.short _0201BDA2 - _0201BCBE - 2 ; case 7
_0201BCCE:
ldr r2, _0201BDCC ; =0x000001FF
add r3, r1, #0
lsl r1, r0, #0x10
lsl r0, r2, #0x10
and r3, r2
and r0, r1
add r1, r3, #0
orr r1, r0
ldr r0, _0201BDD0 ; =0x04000010
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BCE4:
ldr r2, _0201BDCC ; =0x000001FF
add r3, r1, #0
lsl r1, r0, #0x10
lsl r0, r2, #0x10
and r3, r2
and r0, r1
add r1, r3, #0
orr r1, r0
ldr r0, _0201BDD4 ; =0x04000014
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BCFA:
add r2, r4, #0
add r2, #0x74
ldrb r2, [r2]
cmp r2, #0
bne _0201BD1A
ldr r2, _0201BDCC ; =0x000001FF
add r3, r1, #0
lsl r1, r0, #0x10
lsl r0, r2, #0x10
and r3, r2
and r0, r1
add r1, r3, #0
orr r1, r0
ldr r0, _0201BDD8 ; =0x04000018
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BD1A:
add r0, r4, #0
mov r1, #2
bl sub_0201BF18
pop {r4, r5, r6, pc}
_0201BD24:
add r2, r4, #0
add r2, #0xa0
ldrb r2, [r2]
cmp r2, #0
bne _0201BD44
ldr r2, _0201BDCC ; =0x000001FF
add r3, r1, #0
lsl r1, r0, #0x10
lsl r0, r2, #0x10
and r3, r2
and r0, r1
add r1, r3, #0
orr r1, r0
ldr r0, _0201BDDC ; =0x0400001C
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BD44:
add r0, r4, #0
mov r1, #3
bl sub_0201BF18
pop {r4, r5, r6, pc}
_0201BD4E:
ldr r2, _0201BDCC ; =0x000001FF
add r3, r1, #0
lsl r1, r0, #0x10
lsl r0, r2, #0x10
and r3, r2
and r0, r1
add r1, r3, #0
orr r1, r0
ldr r0, _0201BDE0 ; =0x04001010
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BD64:
ldr r2, _0201BDCC ; =0x000001FF
add r3, r1, #0
lsl r1, r0, #0x10
lsl r0, r2, #0x10
and r3, r2
and r0, r1
add r1, r3, #0
orr r1, r0
ldr r0, _0201BDE4 ; =0x04001014
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BD7A:
mov r2, #0x49
lsl r2, r2, #2
ldrb r3, [r4, r2]
cmp r3, #0
bne _0201BD98
add r2, #0xdb
and r2, r1
lsl r1, r0, #0x10
ldr r0, _0201BDE8 ; =0x01FF0000
and r0, r1
add r1, r2, #0
orr r1, r0
ldr r0, _0201BDEC ; =0x04001018
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BD98:
add r0, r4, #0
mov r1, #6
bl sub_0201BF18
pop {r4, r5, r6, pc}
_0201BDA2:
mov r2, #0x15
lsl r2, r2, #4
ldrb r3, [r4, r2]
cmp r3, #0
bne _0201BDC0
add r2, #0xaf
and r2, r1
lsl r1, r0, #0x10
ldr r0, _0201BDE8 ; =0x01FF0000
and r0, r1
add r1, r2, #0
orr r1, r0
ldr r0, _0201BDF0 ; =0x0400101C
str r1, [r0]
pop {r4, r5, r6, pc}
_0201BDC0:
add r0, r4, #0
mov r1, #7
bl sub_0201BF18
_0201BDC8:
pop {r4, r5, r6, pc}
nop
_0201BDCC: .word 0x000001FF
_0201BDD0: .word 0x04000010
_0201BDD4: .word 0x04000014
_0201BDD8: .word 0x04000018
_0201BDDC: .word 0x0400001C
_0201BDE0: .word 0x04001010
_0201BDE4: .word 0x04001014
_0201BDE8: .word 0x01FF0000
_0201BDEC: .word 0x04001018
_0201BDF0: .word 0x0400101C
thumb_func_end sub_0201BC8C
thumb_func_start sub_0201BDF4
sub_0201BDF4: ; 0x0201BDF4
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldr r0, [r0, #0x14]
bx lr
.balign 4, 0
thumb_func_end sub_0201BDF4
thumb_func_start sub_0201BE00
sub_0201BE00: ; 0x0201BE00
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldr r0, [r0, #0x18]
bx lr
.balign 4, 0
thumb_func_end sub_0201BE00
thumb_func_start sub_0201BE0C
sub_0201BE0C: ; 0x0201BE0C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
add r1, r5, #0
mov r0, #0x2c
add r1, #8
mul r0, r4
add r0, r1, r0
add r1, r2, #0
add r2, r3, #0
bl sub_0201BE38
ldr r0, [sp, #0x18]
ldr r2, [sp, #0x10]
str r0, [sp]
ldr r3, [sp, #0x14]
add r0, r5, #0
add r1, r4, #0
bl sub_0201BE7C
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201BE0C
thumb_func_start sub_0201BE38
sub_0201BE38: ; 0x0201BE38
cmp r1, #5
bhi _0201BE7A
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0201BE48: ; jump table
.short _0201BE54 - _0201BE48 - 2 ; case 0
.short _0201BE58 - _0201BE48 - 2 ; case 1
.short _0201BE60 - _0201BE48 - 2 ; case 2
.short _0201BE68 - _0201BE48 - 2 ; case 3
.short _0201BE6C - _0201BE48 - 2 ; case 4
.short _0201BE74 - _0201BE48 - 2 ; case 5
_0201BE54:
str r2, [r0, #0xc]
bx lr
_0201BE58:
ldr r1, [r0, #0xc]
add r1, r1, r2
str r1, [r0, #0xc]
bx lr
_0201BE60:
ldr r1, [r0, #0xc]
sub r1, r1, r2
str r1, [r0, #0xc]
bx lr
_0201BE68:
str r2, [r0, #0x10]
bx lr
_0201BE6C:
ldr r1, [r0, #0x10]
add r1, r1, r2
str r1, [r0, #0x10]
bx lr
_0201BE74:
ldr r1, [r0, #0x10]
sub r1, r1, r2
str r1, [r0, #0x10]
_0201BE7A:
bx lr
thumb_func_end sub_0201BE38
thumb_func_start sub_0201BE7C
sub_0201BE7C: ; 0x0201BE7C
push {r3, r4, r5, lr}
sub sp, #8
add r4, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r3, [sp, #0x18]
cmp r4, #7
bhi _0201BF04
add r5, r4, r4
add r5, pc
ldrh r5, [r5, #6]
lsl r5, r5, #0x10
asr r5, r5, #0x10
add pc, r5
_0201BE98: ; jump table
.short _0201BF04 - _0201BE98 - 2 ; case 0
.short _0201BF04 - _0201BE98 - 2 ; case 1
.short _0201BEA8 - _0201BE98 - 2 ; case 2
.short _0201BEC0 - _0201BE98 - 2 ; case 3
.short _0201BF04 - _0201BE98 - 2 ; case 4
.short _0201BF04 - _0201BE98 - 2 ; case 5
.short _0201BED8 - _0201BE98 - 2 ; case 6
.short _0201BEF0 - _0201BE98 - 2 ; case 7
_0201BEA8:
mov r5, #0x2c
mul r5, r4
add r4, r0, r5
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x18]
str r0, [sp, #4]
ldr r0, _0201BF08 ; =0x04000020
bl sub_020CF0AC
add sp, #8
pop {r3, r4, r5, pc}
_0201BEC0:
mov r5, #0x2c
mul r5, r4
add r4, r0, r5
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x18]
str r0, [sp, #4]
ldr r0, _0201BF0C ; =0x04000030
bl sub_020CF0AC
add sp, #8
pop {r3, r4, r5, pc}
_0201BED8:
mov r5, #0x2c
mul r5, r4
add r4, r0, r5
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x18]
str r0, [sp, #4]
ldr r0, _0201BF10 ; =0x04001020
bl sub_020CF0AC
add sp, #8
pop {r3, r4, r5, pc}
_0201BEF0:
mov r5, #0x2c
mul r5, r4
add r4, r0, r5
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x18]
str r0, [sp, #4]
ldr r0, _0201BF14 ; =0x04001030
bl sub_020CF0AC
_0201BF04:
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
_0201BF08: .word 0x04000020
_0201BF0C: .word 0x04000030
_0201BF10: .word 0x04001020
_0201BF14: .word 0x04001030
thumb_func_end sub_0201BE7C
thumb_func_start sub_0201BF18
sub_0201BF18: ; 0x0201BF18
push {r4, r5, lr}
sub sp, #0x14
mov r2, #1
lsl r2, r2, #0xc
add r5, r0, #0
add r4, r1, #0
mov r1, #0
add r0, sp, #4
add r3, r2, #0
str r1, [sp]
bl sub_0201FECC
mov r3, #0
add r0, r5, #0
add r1, r4, #0
add r2, sp, #4
str r3, [sp]
bl sub_0201BE7C
add sp, #0x14
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201BF18
thumb_func_start sub_0201BF44
sub_0201BF44: ; 0x0201BF44
push {r3, r4, r5, lr}
cmp r2, #0
bne _0201BF50
bl MI_UncompressLZ8
pop {r3, r4, r5, pc}
_0201BF50:
mov r4, #3
add r3, r0, #0
tst r3, r4
bne _0201BF76
add r3, r1, #0
tst r3, r4
bne _0201BF76
lsl r3, r2, #0x10
lsr r3, r3, #0x10
lsr r4, r3, #0x1f
lsl r5, r3, #0x1e
sub r5, r5, r4
mov r3, #0x1e
ror r5, r3
add r3, r4, r5
bne _0201BF76
bl MIi_CpuCopy32
pop {r3, r4, r5, pc}
_0201BF76:
bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
thumb_func_end sub_0201BF44
thumb_func_start BgCommitTilemapBufferToVram
BgCommitTilemapBufferToVram: ; 0x0201BF7C
push {r3, lr}
mov r2, #0x2c
mul r2, r1
add r3, r0, r2
ldr r2, [r3, #0x10]
str r2, [sp]
ldr r2, [r3, #8]
ldr r3, [r3, #0xc]
bl BgCopyOrUncompressTilemapBufferRangeToVram
pop {r3, pc}
.balign 4, 0
thumb_func_end BgCommitTilemapBufferToVram
thumb_func_start BgCopyOrUncompressTilemapBufferRangeToVram
BgCopyOrUncompressTilemapBufferRangeToVram: ; 0x0201BF94
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
str r3, [sp]
cmp r3, #0
bne _0201C002
mov r0, #0x2c
add r7, r4, #0
mul r7, r0
add r0, r5, r7
ldr r0, [r0, #8]
str r0, [sp, #4]
cmp r0, #0
beq _0201BFD2
ldr r1, [sp, #4]
add r0, r6, #0
add r2, r3, #0
bl sub_0201BF44
add r3, r5, r7
ldr r2, [r3, #0x10]
ldr r1, [sp, #4]
ldr r3, [r3, #0xc]
add r0, r4, #0
lsl r2, r2, #1
bl sub_0201C014
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_0201BFD2:
ldr r0, [r6]
lsr r7, r0, #8
ldr r0, [r5]
add r1, r7, #0
bl AllocFromHeapAtEnd
add r5, r0, #0
ldr r2, [sp]
add r0, r6, #0
add r1, r5, #0
bl sub_0201BF44
ldr r2, [sp, #0x20]
add r0, r4, #0
add r1, r5, #0
lsl r2, r2, #1
add r3, r7, #0
bl sub_0201C014
add r0, r5, #0
bl FreeToHeap
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_0201C002:
ldr r2, [sp, #0x20]
add r0, r4, #0
add r1, r6, #0
lsl r2, r2, #1
bl sub_0201C014
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end BgCopyOrUncompressTilemapBufferRangeToVram
thumb_func_start sub_0201C014
sub_0201C014: ; 0x0201C014
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r3, #0
add r7, r0, #0
add r0, r4, #0
add r1, r6, #0
add r5, r2, #0
bl DC_FlushRange
cmp r7, #7
bhi _0201C0A4
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201C036: ; jump table
.short _0201C046 - _0201C036 - 2 ; case 0
.short _0201C052 - _0201C036 - 2 ; case 1
.short _0201C05E - _0201C036 - 2 ; case 2
.short _0201C06A - _0201C036 - 2 ; case 3
.short _0201C076 - _0201C036 - 2 ; case 4
.short _0201C082 - _0201C036 - 2 ; case 5
.short _0201C08E - _0201C036 - 2 ; case 6
.short _0201C09A - _0201C036 - 2 ; case 7
_0201C046:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020CFF24
pop {r3, r4, r5, r6, r7, pc}
_0201C052:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020CFFE4
pop {r3, r4, r5, r6, r7, pc}
_0201C05E:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D00A4
pop {r3, r4, r5, r6, r7, pc}
_0201C06A:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0164
pop {r3, r4, r5, r6, r7, pc}
_0201C076:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020CFF84
pop {r3, r4, r5, r6, r7, pc}
_0201C082:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0044
pop {r3, r4, r5, r6, r7, pc}
_0201C08E:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0104
pop {r3, r4, r5, r6, r7, pc}
_0201C09A:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D01C4
_0201C0A4:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201C014
thumb_func_start BG_LoadScreenTilemapData
BG_LoadScreenTilemapData: ; 0x0201C0A8
push {r4, lr}
add r4, r0, #0
add r0, r2, #0
mov r2, #0x2c
mul r2, r1
add r1, r4, r2
ldr r1, [r1, #8]
add r2, r3, #0
bl sub_0201BF44
pop {r4, pc}
.balign 4, 0
thumb_func_end BG_LoadScreenTilemapData
thumb_func_start BG_LoadCharTilesData
BG_LoadCharTilesData: ; 0x0201C0C0
push {r3, r4, lr}
sub sp, #4
mov r4, #0x2c
mul r4, r1
add r4, r0, r4
ldrb r4, [r4, #0x1e]
cmp r4, #0
bne _0201C0DE
ldr r4, [sp, #0x10]
lsl r4, r4, #5
str r4, [sp]
bl sub_0201C0EC
add sp, #4
pop {r3, r4, pc}
_0201C0DE:
ldr r4, [sp, #0x10]
lsl r4, r4, #6
str r4, [sp]
bl sub_0201C0EC
add sp, #4
pop {r3, r4, pc}
thumb_func_end BG_LoadCharTilesData
thumb_func_start sub_0201C0EC
sub_0201C0EC: ; 0x0201C0EC
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r2, #0
str r3, [sp]
cmp r3, #0
bne _0201C124
ldr r1, [r5]
ldr r0, [r0]
lsr r4, r1, #8
add r1, r4, #0
bl AllocFromHeapAtEnd
add r6, r0, #0
ldr r2, [sp]
add r0, r5, #0
add r1, r6, #0
bl sub_0201BF44
ldr r2, [sp, #0x18]
add r0, r7, #0
add r1, r6, #0
add r3, r4, #0
bl sub_0201C130
add r0, r6, #0
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
_0201C124:
ldr r2, [sp, #0x18]
add r0, r7, #0
add r1, r5, #0
bl sub_0201C130
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0201C0EC
thumb_func_start sub_0201C130
sub_0201C130: ; 0x0201C130
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r3, #0
add r7, r0, #0
add r0, r4, #0
add r1, r6, #0
add r5, r2, #0
bl DC_FlushRange
cmp r7, #7
bhi _0201C1C0
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201C152: ; jump table
.short _0201C162 - _0201C152 - 2 ; case 0
.short _0201C16E - _0201C152 - 2 ; case 1
.short _0201C17A - _0201C152 - 2 ; case 2
.short _0201C186 - _0201C152 - 2 ; case 3
.short _0201C192 - _0201C152 - 2 ; case 4
.short _0201C19E - _0201C152 - 2 ; case 5
.short _0201C1AA - _0201C152 - 2 ; case 6
.short _0201C1B6 - _0201C152 - 2 ; case 7
_0201C162:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0224
pop {r3, r4, r5, r6, r7, pc}
_0201C16E:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D02E4
pop {r3, r4, r5, r6, r7, pc}
_0201C17A:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D03A4
pop {r3, r4, r5, r6, r7, pc}
_0201C186:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0464
pop {r3, r4, r5, r6, r7, pc}
_0201C192:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0284
pop {r3, r4, r5, r6, r7, pc}
_0201C19E:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0344
pop {r3, r4, r5, r6, r7, pc}
_0201C1AA:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D0404
pop {r3, r4, r5, r6, r7, pc}
_0201C1B6:
add r0, r4, #0
add r1, r5, #0
add r2, r6, #0
bl sub_020D04C4
_0201C1C0:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201C130
thumb_func_start sub_0201C1C4
sub_0201C1C4: ; 0x0201C1C4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r5, r1, #0
add r0, r3, #0
add r7, r2, #0
str r3, [sp]
bl AllocFromHeapAtEnd
add r4, r0, #0
mov r1, #0
add r2, r5, #0
bl memset
add r0, r6, #0
add r1, r4, #0
add r2, r7, #0
add r3, r5, #0
bl sub_0201C130
ldr r0, [sp]
add r1, r4, #0
bl FreeToHeapExplicit
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0201C1C4
thumb_func_start sub_0201C1F4
sub_0201C1F4: ; 0x0201C1F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r1, #0
add r4, r0, #0
mov r1, #0x2c
add r6, r7, #0
add r4, #0x1f
mul r6, r1
ldrb r1, [r4, r6]
ldr r0, [r0]
add r5, r2, #0
mul r1, r3
str r1, [sp]
bl AllocFromHeapAtEnd
str r0, [sp, #4]
ldrb r0, [r4, r6]
cmp r0, #0x20
bne _0201C22E
lsl r2, r5, #0xc
lsl r1, r5, #8
lsl r0, r5, #4
orr r1, r2
orr r0, r1
add r1, r5, #0
orr r1, r0
lsl r0, r1, #0x10
add r5, r1, #0
b _0201C238
_0201C22E:
lsl r2, r5, #0x18
lsl r1, r5, #0x10
lsl r0, r5, #8
orr r1, r2
orr r0, r1
_0201C238:
orr r5, r0
ldr r1, [sp, #4]
ldr r2, [sp]
add r0, r5, #0
bl MIi_CpuClearFast
lsl r0, r7, #0x18
ldrb r2, [r4, r6]
ldr r3, [sp, #0x20]
ldr r1, [sp, #4]
mul r2, r3
ldr r3, [sp]
lsr r0, r0, #0x18
bl sub_0201C130
ldr r0, [sp, #4]
bl FreeToHeap
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0201C1F4
thumb_func_start BG_LoadPlttData
BG_LoadPlttData: ; 0x0201C260
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r4, r2, #0
add r6, r0, #0
add r0, r5, #0
add r1, r4, #0
add r7, r3, #0
bl DC_FlushRange
cmp r6, #4
bhs _0201C282
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
bl GX_LoadBGPltt
pop {r3, r4, r5, r6, r7, pc}
_0201C282:
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
bl GXS_LoadBGPltt
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end BG_LoadPlttData
thumb_func_start sub_0201C290
sub_0201C290: ; 0x0201C290
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r5, r1, #0
add r0, r3, #0
add r7, r2, #0
str r3, [sp]
bl AllocFromHeapAtEnd
add r4, r0, #0
mov r1, #0
add r2, r5, #0
bl memset
add r0, r4, #0
add r1, r5, #0
bl DC_FlushRange
cmp r6, #4
bhs _0201C2C2
add r0, r4, #0
add r1, r7, #0
add r2, r5, #0
bl GX_LoadBGPltt
b _0201C2CC
_0201C2C2:
add r0, r4, #0
add r1, r7, #0
add r2, r5, #0
bl GXS_LoadBGPltt
_0201C2CC:
ldr r0, [sp]
add r1, r4, #0
bl FreeToHeapExplicit
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201C290
thumb_func_start sub_0201C2D8
sub_0201C2D8: ; 0x0201C2D8
push {r0, r1, r2, r3}
push {r3, lr}
add r1, sp, #0xc
mov r2, #2
mov r3, #0
bl BG_LoadPlttData
pop {r3}
pop {r3}
add sp, #0x10
bx r3
.balign 4, 0
thumb_func_end sub_0201C2D8
thumb_func_start sub_0201C2F0
sub_0201C2F0: ; 0x0201C2F0
push {r4, r5, r6, lr}
add r4, r0, #0
add r5, r1, #0
add r6, r3, #0
cmp r2, #5
bhi _0201C3E2
add r1, r2, r2
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0201C308: ; jump table
.short _0201C314 - _0201C308 - 2 ; case 0
.short _0201C32E - _0201C308 - 2 ; case 1
.short _0201C348 - _0201C308 - 2 ; case 2
.short _0201C362 - _0201C308 - 2 ; case 3
.short _0201C388 - _0201C308 - 2 ; case 4
.short _0201C3CA - _0201C308 - 2 ; case 5
_0201C314:
cmp r4, #0x10
blo _0201C31C
bl GF_AssertFail
_0201C31C:
cmp r5, #0x10
blo _0201C324
bl GF_AssertFail
_0201C324:
lsl r0, r5, #4
add r0, r4, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, r5, r6, pc}
_0201C32E:
cmp r4, #0x20
blo _0201C336
bl GF_AssertFail
_0201C336:
cmp r5, #0x20
blo _0201C33E
bl GF_AssertFail
_0201C33E:
lsl r0, r5, #5
add r0, r4, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, r5, r6, pc}
_0201C348:
cmp r4, #0x20
blo _0201C350
bl GF_AssertFail
_0201C350:
cmp r5, #0x40
blo _0201C358
bl GF_AssertFail
_0201C358:
lsl r0, r5, #5
add r0, r4, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, r5, r6, pc}
_0201C362:
cmp r4, #0x40
blo _0201C36A
bl GF_AssertFail
_0201C36A:
cmp r5, #0x20
blo _0201C372
bl GF_AssertFail
_0201C372:
mov r0, #0x1f
add r1, r4, #0
and r1, r0
mov r0, #0x1f
bic r4, r0
add r0, r5, r4
lsl r0, r0, #5
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, r5, r6, pc}
_0201C388:
cmp r4, #0x40
blo _0201C390
bl GF_AssertFail
_0201C390:
cmp r5, #0x40
blo _0201C398
bl GF_AssertFail
_0201C398:
cmp r6, #0
bne _0201C3C0
asr r0, r5, #5
asr r1, r4, #5
lsl r0, r0, #1
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1a
lsr r2, r0, #0x10
mov r0, #0x1f
add r1, r4, #0
and r1, r0
lsl r0, r5, #0x1b
lsr r0, r0, #0x16
add r0, r1, r0
add r0, r2, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, r5, r6, pc}
_0201C3C0:
lsl r0, r5, #6
add r0, r4, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, r5, r6, pc}
_0201C3CA:
cmp r4, #0x80
blo _0201C3D2
bl GF_AssertFail
_0201C3D2:
cmp r5, #0x80
blo _0201C3DA
bl GF_AssertFail
_0201C3DA:
lsl r0, r5, #7
add r0, r4, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
_0201C3E2:
pop {r4, r5, r6, pc}
thumb_func_end sub_0201C2F0
thumb_func_start sub_0201C3E4
sub_0201C3E4: ; 0x0201C3E4
push {r3, r4, r5, r6, r7}
sub sp, #4
str r3, [sp]
add r6, r2, #0
ldr r5, [sp]
add r4, r6, #0
sub r4, #0x20
sub r5, #0x20
mov r2, #0
lsl r4, r4, #0x10
lsl r5, r5, #0x10
add r3, r2, #0
asr r4, r4, #0x10
asr r7, r5, #0x10
lsr r5, r0, #5
beq _0201C40A
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
_0201C40A:
lsr r5, r1, #5
beq _0201C414
add r2, r2, #2
lsl r2, r2, #0x18
lsr r2, r2, #0x18
_0201C414:
cmp r2, #3
bhi _0201C4BC
add r2, r2, r2
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0201C424: ; jump table
.short _0201C42C - _0201C424 - 2 ; case 0
.short _0201C44A - _0201C424 - 2 ; case 1
.short _0201C470 - _0201C424 - 2 ; case 2
.short _0201C49C - _0201C424 - 2 ; case 3
_0201C42C:
cmp r4, #0
blt _0201C43C
lsl r1, r1, #5
add r0, r0, r1
add r0, r3, r0
lsl r0, r0, #0x10
lsr r3, r0, #0x10
b _0201C4BC
_0201C43C:
add r2, r1, #0
mul r2, r6
add r0, r0, r2
add r0, r3, r0
lsl r0, r0, #0x10
lsr r3, r0, #0x10
b _0201C4BC
_0201C44A:
cmp r7, #0
blt _0201C454
mov r2, #1
lsl r2, r2, #0xa
b _0201C458
_0201C454:
ldr r2, [sp]
lsl r2, r2, #5
_0201C458:
add r2, r3, r2
lsl r2, r2, #0x10
lsr r3, r2, #0x10
mov r2, #0x1f
and r2, r0
add r0, r1, #0
mul r0, r4
add r0, r2, r0
add r0, r3, r0
lsl r0, r0, #0x10
lsr r3, r0, #0x10
b _0201C4BC
_0201C470:
lsl r2, r6, #5
add r2, r3, r2
lsl r2, r2, #0x10
lsr r2, r2, #0x10
cmp r4, #0
blt _0201C48A
lsl r1, r1, #0x1b
lsr r1, r1, #0x16
add r0, r0, r1
add r0, r2, r0
lsl r0, r0, #0x10
lsr r3, r0, #0x10
b _0201C4BC
_0201C48A:
mov r3, #0x1f
and r1, r3
add r3, r1, #0
mul r3, r6
add r0, r0, r3
add r0, r2, r0
lsl r0, r0, #0x10
lsr r3, r0, #0x10
b _0201C4BC
_0201C49C:
add r2, r6, r7
lsl r2, r2, #5
add r2, r3, r2
add r5, r0, #0
mov r3, #0x1f
add r0, r1, #0
and r0, r3
add r1, r0, #0
lsl r2, r2, #0x10
and r5, r3
mul r1, r4
lsr r2, r2, #0x10
add r0, r5, r1
add r0, r2, r0
lsl r0, r0, #0x10
lsr r3, r0, #0x10
_0201C4BC:
add r0, r3, #0
add sp, #4
pop {r3, r4, r5, r6, r7}
bx lr
thumb_func_end sub_0201C3E4
thumb_func_start sub_0201C4C4
sub_0201C4C4: ; 0x0201C4C4
push {r3, r4, r5, r6, lr}
sub sp, #0x1c
add r6, sp, #0x20
ldrb r5, [r6, #0x14]
str r5, [sp]
ldrb r4, [r6, #0x18]
str r4, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
str r2, [sp, #0x10]
str r5, [sp, #0x14]
str r4, [sp, #0x18]
add r2, r3, #0
ldrb r3, [r6, #0x10]
bl sub_0201C4EC
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end sub_0201C4C4
thumb_func_start sub_0201C4EC
sub_0201C4EC: ; 0x0201C4EC
push {r4, r5, lr}
sub sp, #0x1c
add r4, r2, #0
add r2, r3, #0
mov r3, #0x2c
add r5, r1, #0
mul r5, r3
add r1, r0, r5
ldrb r1, [r1, #0x1c]
add r3, sp, #0x18
cmp r1, #1
beq _0201C536
ldrb r1, [r3, #0x14]
add r0, #8
add r0, r0, r5
str r1, [sp]
ldr r1, [sp, #0x30]
str r1, [sp, #4]
ldrb r1, [r3, #0x1c]
str r1, [sp, #8]
add r1, sp, #0x38
ldrb r1, [r1]
str r1, [sp, #0xc]
add r1, sp, #0x3c
ldrb r1, [r1]
str r1, [sp, #0x10]
add r1, sp, #0x40
ldrb r1, [r1]
str r1, [sp, #0x14]
mov r1, #0
str r1, [sp, #0x18]
ldrb r3, [r3, #0x10]
add r1, r4, #0
bl sub_0201C5E4
add sp, #0x1c
pop {r4, r5, pc}
_0201C536:
ldrb r1, [r3, #0x14]
add r0, #8
add r0, r0, r5
str r1, [sp]
ldr r1, [sp, #0x30]
str r1, [sp, #4]
ldrb r1, [r3, #0x1c]
str r1, [sp, #8]
add r1, sp, #0x38
ldrb r1, [r1]
str r1, [sp, #0xc]
add r1, sp, #0x3c
ldrb r1, [r1]
str r1, [sp, #0x10]
add r1, sp, #0x40
ldrb r1, [r1]
str r1, [sp, #0x14]
mov r1, #0
str r1, [sp, #0x18]
ldrb r3, [r3, #0x10]
add r1, r4, #0
bl sub_0201C75C
add sp, #0x1c
pop {r4, r5, pc}
thumb_func_end sub_0201C4EC
thumb_func_start sub_0201C568
sub_0201C568: ; 0x0201C568
push {r4, r5, lr}
sub sp, #0x1c
add r4, r2, #0
add r2, r3, #0
mov r3, #0x2c
add r5, r1, #0
mul r5, r3
add r1, r0, r5
ldrb r1, [r1, #0x1c]
add r3, sp, #0x18
cmp r1, #1
beq _0201C5B2
ldrb r1, [r3, #0x14]
add r0, #8
add r0, r0, r5
str r1, [sp]
ldr r1, [sp, #0x30]
str r1, [sp, #4]
ldrb r1, [r3, #0x1c]
str r1, [sp, #8]
add r1, sp, #0x38
ldrb r1, [r1]
str r1, [sp, #0xc]
add r1, sp, #0x3c
ldrb r1, [r1]
str r1, [sp, #0x10]
add r1, sp, #0x40
ldrb r1, [r1]
str r1, [sp, #0x14]
mov r1, #1
str r1, [sp, #0x18]
ldrb r3, [r3, #0x10]
add r1, r4, #0
bl sub_0201C5E4
add sp, #0x1c
pop {r4, r5, pc}
_0201C5B2:
ldrb r1, [r3, #0x14]
add r0, #8
add r0, r0, r5
str r1, [sp]
ldr r1, [sp, #0x30]
str r1, [sp, #4]
ldrb r1, [r3, #0x1c]
str r1, [sp, #8]
add r1, sp, #0x38
ldrb r1, [r1]
str r1, [sp, #0xc]
add r1, sp, #0x3c
ldrb r1, [r1]
str r1, [sp, #0x10]
add r1, sp, #0x40
ldrb r1, [r1]
str r1, [sp, #0x14]
mov r1, #1
str r1, [sp, #0x18]
ldrb r3, [r3, #0x10]
add r1, r4, #0
bl sub_0201C75C
add sp, #0x1c
pop {r4, r5, pc}
thumb_func_end sub_0201C568
thumb_func_start sub_0201C5E4
sub_0201C5E4: ; 0x0201C5E4
push {r4, r5, r6, r7, lr}
sub sp, #0x44
str r1, [sp]
str r2, [sp, #4]
add r7, r0, #0
ldr r0, [sp, #0x58]
add r6, r3, #0
str r0, [sp, #0x58]
ldr r0, [sp, #0x5c]
ldr r4, [sp, #0x68]
str r0, [sp, #0x5c]
ldr r0, [sp, #0x6c]
str r0, [sp, #0x6c]
ldr r0, [r7]
str r0, [sp, #0x2c]
cmp r0, #0
bne _0201C608
b _0201C756
_0201C608:
ldrb r0, [r7, #0x15]
add r1, sp, #0x40
add r1, #1
add r2, sp, #0x40
bl sub_0201BAFC
add r0, sp, #0x70
ldrb r0, [r0]
cmp r0, #0
bne _0201C6B8
mov r0, #0
str r0, [sp, #0x28]
ldr r0, [sp, #0x58]
cmp r0, #0
bls _0201C652
add r1, sp, #0x48
ldrb r0, [r1, #0x1c]
str r0, [sp, #0x1c]
ldrb r0, [r1, #0x18]
str r0, [sp, #0x18]
lsl r1, r0, #1
ldr r0, [sp, #0x5c]
add r0, r0, r1
str r0, [sp, #0x14]
_0201C638:
ldr r1, [sp, #4]
ldr r0, [sp, #0x28]
add r0, r1, r0
add r1, sp, #0x40
ldrb r1, [r1]
cmp r0, r1
bge _0201C652
ldr r2, [sp, #0x1c]
ldr r1, [sp, #0x28]
add r2, r2, r1
ldr r1, [sp, #0x6c]
cmp r2, r1
blt _0201C654
_0201C652:
b _0201C756
_0201C654:
mov r5, #0
cmp r6, #0
bls _0201C6A4
add r1, r4, #0
mul r1, r2
lsl r2, r1, #1
ldr r1, [sp, #0x14]
lsl r0, r0, #0x18
add r1, r1, r2
lsr r0, r0, #0x18
str r1, [sp, #0x10]
str r0, [sp, #0x30]
_0201C66C:
add r1, sp, #0x40
ldr r0, [sp]
ldrb r1, [r1, #1]
add r0, r0, r5
cmp r0, r1
bge _0201C6A4
ldr r1, [sp, #0x18]
add r1, r1, r5
cmp r1, r4
bge _0201C6A4
ldrb r2, [r7, #0x15]
lsl r0, r0, #0x18
ldrb r3, [r7, #0x14]
ldr r1, [sp, #0x30]
lsr r0, r0, #0x18
bl sub_0201C2F0
ldr r1, [sp, #0x10]
lsl r2, r5, #1
ldrh r1, [r1, r2]
lsl r2, r0, #1
ldr r0, [sp, #0x2c]
strh r1, [r0, r2]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, r6
blo _0201C66C
_0201C6A4:
ldr r0, [sp, #0x28]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
str r1, [sp, #0x28]
ldr r0, [sp, #0x58]
cmp r1, r0
blo _0201C638
add sp, #0x44
pop {r4, r5, r6, r7, pc}
_0201C6B8:
mov r0, #0
str r0, [sp, #8]
ldr r0, [sp, #0x58]
cmp r0, #0
bls _0201C756
add r1, sp, #0x48
ldrb r0, [r1, #0x1c]
str r0, [sp, #0x24]
ldrb r0, [r1, #0x18]
str r0, [sp, #0x20]
_0201C6CC:
ldr r1, [sp, #4]
ldr r0, [sp, #8]
add r1, r1, r0
add r0, sp, #0x40
ldrb r0, [r0]
cmp r1, r0
bge _0201C756
ldr r2, [sp, #0x24]
ldr r0, [sp, #8]
add r0, r2, r0
ldr r2, [sp, #0x6c]
cmp r0, r2
bge _0201C756
mov r5, #0
cmp r6, #0
bls _0201C746
lsl r1, r1, #0x18
lsl r0, r0, #0x18
lsr r1, r1, #0x18
lsr r0, r0, #0x18
str r1, [sp, #0x34]
str r0, [sp, #0x3c]
_0201C6F8:
add r1, sp, #0x40
ldr r0, [sp]
ldrb r1, [r1, #1]
add r0, r0, r5
cmp r0, r1
bge _0201C746
ldr r1, [sp, #0x20]
add r1, r1, r5
str r1, [sp, #0xc]
cmp r1, r4
bge _0201C746
ldrb r2, [r7, #0x15]
lsl r0, r0, #0x18
ldrb r3, [r7, #0x14]
ldr r1, [sp, #0x34]
lsr r0, r0, #0x18
bl sub_0201C2F0
str r0, [sp, #0x38]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x3c]
lsl r0, r0, #0x18
ldr r3, [sp, #0x6c]
lsr r0, r0, #0x18
add r2, r4, #0
bl sub_0201C3E4
lsl r1, r0, #1
ldr r0, [sp, #0x5c]
ldrh r0, [r0, r1]
ldr r1, [sp, #0x38]
lsl r2, r1, #1
ldr r1, [sp, #0x2c]
strh r0, [r1, r2]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, r6
blo _0201C6F8
_0201C746:
ldr r0, [sp, #8]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
str r1, [sp, #8]
ldr r0, [sp, #0x58]
cmp r1, r0
blo _0201C6CC
_0201C756:
add sp, #0x44
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201C5E4
thumb_func_start sub_0201C75C
sub_0201C75C: ; 0x0201C75C
push {r4, r5, r6, r7, lr}
sub sp, #0x44
str r1, [sp]
str r2, [sp, #4]
add r7, r0, #0
ldr r0, [sp, #0x58]
add r6, r3, #0
str r0, [sp, #0x58]
ldr r0, [sp, #0x5c]
ldr r4, [sp, #0x68]
str r0, [sp, #0x5c]
ldr r0, [sp, #0x6c]
str r0, [sp, #0x6c]
ldr r0, [r7]
str r0, [sp, #0x2c]
cmp r0, #0
bne _0201C780
b _0201C8C0
_0201C780:
ldrb r0, [r7, #0x15]
add r1, sp, #0x40
add r1, #1
add r2, sp, #0x40
bl sub_0201BAFC
add r0, sp, #0x70
ldrb r0, [r0]
cmp r0, #0
bne _0201C826
mov r0, #0
str r0, [sp, #0x28]
ldr r0, [sp, #0x58]
cmp r0, #0
bls _0201C7BC
add r1, sp, #0x48
ldrb r0, [r1, #0x1c]
str r0, [sp, #0x1c]
ldrb r0, [r1, #0x18]
ldr r1, [sp, #0x5c]
str r0, [sp, #0x18]
add r0, r1, r0
str r0, [sp, #0x14]
_0201C7AE:
ldr r1, [sp, #4]
ldr r0, [sp, #0x28]
add r0, r1, r0
add r1, sp, #0x40
ldrb r1, [r1]
cmp r0, r1
blt _0201C7BE
_0201C7BC:
b _0201C8C0
_0201C7BE:
ldr r2, [sp, #0x1c]
ldr r1, [sp, #0x28]
add r2, r2, r1
ldr r1, [sp, #0x6c]
cmp r2, r1
bge _0201C8C0
mov r5, #0
cmp r6, #0
bls _0201C812
ldr r1, [sp, #0x14]
mul r2, r4
lsl r0, r0, #0x18
add r1, r1, r2
lsr r0, r0, #0x18
str r1, [sp, #0x10]
str r0, [sp, #0x30]
_0201C7DE:
add r1, sp, #0x40
ldr r0, [sp]
ldrb r1, [r1, #1]
add r0, r0, r5
cmp r0, r1
bge _0201C812
ldr r1, [sp, #0x18]
add r1, r1, r5
cmp r1, r4
bge _0201C812
ldrb r2, [r7, #0x15]
lsl r0, r0, #0x18
ldrb r3, [r7, #0x14]
ldr r1, [sp, #0x30]
lsr r0, r0, #0x18
bl sub_0201C2F0
ldr r1, [sp, #0x10]
ldrb r2, [r1, r5]
ldr r1, [sp, #0x2c]
strb r2, [r1, r0]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, r6
blo _0201C7DE
_0201C812:
ldr r0, [sp, #0x28]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
str r1, [sp, #0x28]
ldr r0, [sp, #0x58]
cmp r1, r0
blo _0201C7AE
add sp, #0x44
pop {r4, r5, r6, r7, pc}
_0201C826:
mov r0, #0
str r0, [sp, #8]
ldr r0, [sp, #0x58]
cmp r0, #0
bls _0201C8C0
add r1, sp, #0x48
ldrb r0, [r1, #0x1c]
str r0, [sp, #0x24]
ldrb r0, [r1, #0x18]
str r0, [sp, #0x20]
_0201C83A:
ldr r1, [sp, #4]
ldr r0, [sp, #8]
add r1, r1, r0
add r0, sp, #0x40
ldrb r0, [r0]
cmp r1, r0
bge _0201C8C0
ldr r2, [sp, #0x24]
ldr r0, [sp, #8]
add r0, r2, r0
ldr r2, [sp, #0x6c]
cmp r0, r2
bge _0201C8C0
mov r5, #0
cmp r6, #0
bls _0201C8B0
lsl r1, r1, #0x18
lsl r0, r0, #0x18
lsr r1, r1, #0x18
lsr r0, r0, #0x18
str r1, [sp, #0x34]
str r0, [sp, #0x3c]
_0201C866:
add r1, sp, #0x40
ldr r0, [sp]
ldrb r1, [r1, #1]
add r0, r0, r5
cmp r0, r1
bge _0201C8B0
ldr r1, [sp, #0x20]
add r1, r1, r5
str r1, [sp, #0xc]
cmp r1, r4
bge _0201C8B0
ldrb r2, [r7, #0x15]
lsl r0, r0, #0x18
ldrb r3, [r7, #0x14]
ldr r1, [sp, #0x34]
lsr r0, r0, #0x18
bl sub_0201C2F0
str r0, [sp, #0x38]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x3c]
lsl r0, r0, #0x18
ldr r3, [sp, #0x6c]
lsr r0, r0, #0x18
add r2, r4, #0
bl sub_0201C3E4
ldr r1, [sp, #0x5c]
ldrb r2, [r1, r0]
ldr r1, [sp, #0x2c]
ldr r0, [sp, #0x38]
strb r2, [r1, r0]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, r6
blo _0201C866
_0201C8B0:
ldr r0, [sp, #8]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
str r1, [sp, #8]
ldr r0, [sp, #0x58]
cmp r1, r0
blo _0201C83A
_0201C8C0:
add sp, #0x44
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_0201C75C
thumb_func_start FillBgTilemapRect
FillBgTilemapRect: ; 0x0201C8C4
push {r4, r5, lr}
sub sp, #0xc
add r4, r2, #0
add r2, r3, #0
mov r3, #0x2c
add r5, r1, #0
mul r5, r3
add r1, r0, r5
ldrb r1, [r1, #0x1c]
add r3, sp, #8
cmp r1, #1
beq _0201C8F8
ldrb r1, [r3, #0x14]
add r0, #8
add r0, r0, r5
str r1, [sp]
ldrb r1, [r3, #0x18]
str r1, [sp, #4]
ldrb r1, [r3, #0x1c]
str r1, [sp, #8]
ldrb r3, [r3, #0x10]
add r1, r4, #0
bl sub_0201C914
add sp, #0xc
pop {r4, r5, pc}
_0201C8F8:
ldrb r1, [r3, #0x14]
add r0, #8
add r0, r0, r5
str r1, [sp]
ldrb r1, [r3, #0x18]
str r1, [sp, #4]
lsl r1, r4, #0x18
ldrb r3, [r3, #0x10]
lsr r1, r1, #0x18
bl sub_0201C9D4
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end FillBgTilemapRect
thumb_func_start sub_0201C914
sub_0201C914: ; 0x0201C914
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
str r1, [sp]
str r2, [sp, #4]
str r3, [sp, #8]
add r7, r0, #0
ldr r4, [r7]
ldr r6, [sp, #0x40]
cmp r4, #0
beq _0201C9CA
ldrb r0, [r7, #0x15]
add r1, sp, #0x1c
add r1, #1
add r2, sp, #0x1c
bl sub_0201BAFC
add r0, sp, #0x28
ldrb r2, [r0, #0x14]
ldr r1, [sp, #8]
add r1, r1, r2
ldr r2, [sp, #8]
str r1, [sp, #0xc]
cmp r2, r1
bge _0201C9CA
ldr r2, _0201C9D0 ; =0x00000FFF
ldr r1, [sp]
and r1, r2
lsl r2, r6, #0xc
str r1, [sp, #0x14]
add r1, r2, r1
ldrb r2, [r0, #0x10]
ldr r0, [sp, #4]
add r0, r0, r2
str r0, [sp, #0x10]
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x18]
_0201C95E:
add r0, sp, #0x1c
ldrb r1, [r0]
ldr r0, [sp, #8]
cmp r0, r1
bhs _0201C9CA
ldr r5, [sp, #4]
ldr r0, [sp, #0x10]
add r1, r5, #0
cmp r1, r0
bge _0201C9BA
_0201C972:
add r0, sp, #0x1c
ldrb r0, [r0, #1]
cmp r5, r0
bhs _0201C9BA
ldrb r2, [r7, #0x15]
ldrb r3, [r7, #0x14]
ldr r1, [sp, #8]
add r0, r5, #0
bl sub_0201C2F0
cmp r6, #0x11
bne _0201C992
lsl r1, r0, #1
ldr r0, [sp]
strh r0, [r4, r1]
b _0201C9AE
_0201C992:
cmp r6, #0x10
bne _0201C9A8
lsl r0, r0, #1
ldrh r2, [r4, r0]
mov r1, #0xf
lsl r1, r1, #0xc
and r2, r1
ldr r1, [sp, #0x14]
add r1, r1, r2
strh r1, [r4, r0]
b _0201C9AE
_0201C9A8:
lsl r1, r0, #1
ldr r0, [sp, #0x18]
strh r0, [r4, r1]
_0201C9AE:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [sp, #0x10]
cmp r5, r0
blt _0201C972
_0201C9BA:
ldr r0, [sp, #8]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0xc]
str r1, [sp, #8]
cmp r1, r0
blt _0201C95E
_0201C9CA:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
_0201C9D0: .word 0x00000FFF
thumb_func_end sub_0201C914
thumb_func_start sub_0201C9D4
sub_0201C9D4: ; 0x0201C9D4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r1, [sp]
add r7, r0, #0
str r2, [sp, #4]
ldr r0, [r7]
add r5, r3, #0
str r0, [sp, #0xc]
cmp r0, #0
beq _0201CA46
ldrb r0, [r7, #0x15]
add r1, sp, #0x10
add r1, #1
add r2, sp, #0x10
bl sub_0201BAFC
add r1, sp, #0x18
ldrb r0, [r1, #0x14]
add r0, r5, r0
str r0, [sp, #8]
cmp r5, r0
bge _0201CA46
ldrb r1, [r1, #0x10]
ldr r0, [sp, #4]
add r6, r0, r1
_0201CA06:
add r0, sp, #0x10
ldrb r0, [r0]
cmp r5, r0
bhs _0201CA46
ldr r4, [sp, #4]
add r0, r4, #0
cmp r0, r6
bge _0201CA3A
_0201CA16:
add r0, sp, #0x10
ldrb r0, [r0, #1]
cmp r4, r0
bhs _0201CA3A
ldrb r2, [r7, #0x15]
ldrb r3, [r7, #0x14]
add r0, r4, #0
add r1, r5, #0
bl sub_0201C2F0
ldr r2, [sp]
ldr r1, [sp, #0xc]
strb r2, [r1, r0]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, r6
blt _0201CA16
_0201CA3A:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [sp, #8]
cmp r5, r0
blt _0201CA06
_0201CA46:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201C9D4
thumb_func_start sub_0201CA4C
sub_0201CA4C: ; 0x0201CA4C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0x2c
add r7, r1, #0
mul r7, r0
str r2, [sp]
add r0, r5, r7
ldr r4, [r0, #8]
add r6, r3, #0
cmp r4, #0
beq _0201CAD8
ldrb r0, [r0, #0x1d]
add r1, sp, #0x10
add r1, #1
add r2, sp, #0x10
bl sub_0201BAFC
add r0, sp, #0x18
ldrb r1, [r0, #0x14]
add r1, r6, r1
str r1, [sp, #4]
cmp r6, r1
bge _0201CAD8
ldrb r1, [r0, #0x18]
add r7, r5, r7
lsl r1, r1, #0xc
str r1, [sp, #0xc]
ldrb r1, [r0, #0x10]
ldr r0, [sp]
add r0, r0, r1
str r0, [sp, #8]
_0201CA8C:
add r0, sp, #0x10
ldrb r0, [r0]
cmp r6, r0
bhs _0201CAD8
ldr r5, [sp]
ldr r0, [sp, #8]
add r1, r5, #0
cmp r1, r0
bge _0201CACC
_0201CA9E:
add r0, sp, #0x10
ldrb r0, [r0, #1]
cmp r5, r0
bhs _0201CACC
ldrb r2, [r7, #0x1d]
ldrb r3, [r7, #0x1c]
add r0, r5, #0
add r1, r6, #0
bl sub_0201C2F0
lsl r0, r0, #1
ldrh r2, [r4, r0]
ldr r1, _0201CADC ; =0x00000FFF
and r2, r1
ldr r1, [sp, #0xc]
orr r1, r2
strh r1, [r4, r0]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [sp, #8]
cmp r5, r0
blt _0201CA9E
_0201CACC:
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r0, [sp, #4]
cmp r6, r0
blt _0201CA8C
_0201CAD8:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0201CADC: .word 0x00000FFF
thumb_func_end sub_0201CA4C
thumb_func_start sub_0201CAE0
sub_0201CAE0: ; 0x0201CAE0
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
mov r0, #0x2c
mul r0, r4
add r2, r5, r0
ldr r1, [r2, #8]
cmp r1, #0
beq _0201CB02
ldr r2, [r2, #0xc]
mov r0, #0
bl sub_020D4790
add r0, r5, #0
add r1, r4, #0
bl BgCommitTilemapBufferToVram
_0201CB02:
pop {r3, r4, r5, pc}
thumb_func_end sub_0201CAE0
thumb_func_start sub_0201CB04
sub_0201CB04: ; 0x0201CB04
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
mov r0, #0x2c
mul r0, r4
add r3, r5, r0
ldr r1, [r3, #8]
cmp r1, #0
beq _0201CB26
add r0, r2, #0
ldr r2, [r3, #0xc]
bl sub_020D4790
add r0, r5, #0
add r1, r4, #0
bl BgCommitTilemapBufferToVram
_0201CB26:
pop {r3, r4, r5, pc}
thumb_func_end sub_0201CB04
thumb_func_start sub_0201CB28
sub_0201CB28: ; 0x0201CB28
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
mov r0, #0x2c
mul r0, r4
add r3, r5, r0
ldr r1, [r3, #8]
cmp r1, #0
beq _0201CB4A
add r0, r2, #0
ldr r2, [r3, #0xc]
bl sub_020D4790
add r0, r5, #0
add r1, r4, #0
bl ScheduleBgTilemapBufferTransfer
_0201CB4A:
pop {r3, r4, r5, pc}
thumb_func_end sub_0201CB28
thumb_func_start sub_0201CB4C
sub_0201CB4C: ; 0x0201CB4C
push {r3, lr}
cmp r0, #7
bhi _0201CB9E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201CB5E: ; jump table
.short _0201CB6E - _0201CB5E - 2 ; case 0
.short _0201CB74 - _0201CB5E - 2 ; case 1
.short _0201CB7A - _0201CB5E - 2 ; case 2
.short _0201CB80 - _0201CB5E - 2 ; case 3
.short _0201CB86 - _0201CB5E - 2 ; case 4
.short _0201CB8C - _0201CB5E - 2 ; case 5
.short _0201CB92 - _0201CB5E - 2 ; case 6
.short _0201CB98 - _0201CB5E - 2 ; case 7
_0201CB6E:
bl sub_020CEED4
pop {r3, pc}
_0201CB74:
bl sub_020CEF28
pop {r3, pc}
_0201CB7A:
bl sub_020CEF7C
pop {r3, pc}
_0201CB80:
bl sub_020CF00C
pop {r3, pc}
_0201CB86:
bl sub_020CEF08
pop {r3, pc}
_0201CB8C:
bl sub_020CEF5C
pop {r3, pc}
_0201CB92:
bl sub_020CEFCC
pop {r3, pc}
_0201CB98:
bl sub_020CF064
pop {r3, pc}
_0201CB9E:
mov r0, #0
pop {r3, pc}
.balign 4, 0
thumb_func_end sub_0201CB4C
thumb_func_start sub_0201CBA4
sub_0201CBA4: ; 0x0201CBA4
push {r4, r5, r6, r7}
lsl r3, r3, #0x1c
lsr r3, r3, #0x18
mov r4, #0
cmp r1, #0
bls _0201CBDE
mov r5, #0xf
add r6, r5, #0
_0201CBB4:
ldrb r7, [r0, r4]
and r7, r6
strb r7, [r2]
ldrb r7, [r2]
cmp r7, #0
beq _0201CBC4
add r7, r7, r3
strb r7, [r2]
_0201CBC4:
ldrb r7, [r0, r4]
asr r7, r7, #4
and r7, r5
strb r7, [r2, #1]
ldrb r7, [r2, #1]
cmp r7, #0
beq _0201CBD6
add r7, r7, r3
strb r7, [r2, #1]
_0201CBD6:
add r4, r4, #1
add r2, r2, #2
cmp r4, r1
blo _0201CBB4
_0201CBDE:
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
thumb_func_end sub_0201CBA4
thumb_func_start sub_0201CBE4
sub_0201CBE4: ; 0x0201CBE4
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r6, r0, #0
add r0, r3, #0
lsl r1, r5, #1
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
add r0, r6, #0
add r1, r5, #0
add r2, r4, #0
add r3, r7, #0
bl sub_0201CBA4
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201CBE4
thumb_func_start GetBgTilemapBuffer
GetBgTilemapBuffer: ; 0x0201CC08
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldr r0, [r0, #8]
bx lr
.balign 4, 0
thumb_func_end GetBgTilemapBuffer
thumb_func_start sub_0201CC14
sub_0201CC14: ; 0x0201CC14
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldr r0, [r0, #0x14]
bx lr
.balign 4, 0
thumb_func_end sub_0201CC14
thumb_func_start sub_0201CC20
sub_0201CC20: ; 0x0201CC20
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldrb r0, [r0, #0x1e]
bx lr
.balign 4, 0
thumb_func_end sub_0201CC20
thumb_func_start sub_0201CC2C
sub_0201CC2C: ; 0x0201CC2C
sub sp, #0x20
cmp r1, #7
bls _0201CC34
b _0201CDE0
_0201CC34:
add r2, r1, r1
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0201CC40: ; jump table
.short _0201CC50 - _0201CC40 - 2 ; case 0
.short _0201CC64 - _0201CC40 - 2 ; case 1
.short _0201CC78 - _0201CC40 - 2 ; case 2
.short _0201CCC8 - _0201CC40 - 2 ; case 3
.short _0201CD18 - _0201CC40 - 2 ; case 4
.short _0201CD2C - _0201CC40 - 2 ; case 5
.short _0201CD40 - _0201CC40 - 2 ; case 6
.short _0201CD90 - _0201CC40 - 2 ; case 7
_0201CC50:
ldr r0, _0201CDE8 ; =0x04000008
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x1e]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CC64:
ldr r0, _0201CDEC ; =0x0400000A
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x1c]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CC78:
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldrb r0, [r0, #0x1c]
cmp r0, #0
beq _0201CC8C
cmp r0, #1
beq _0201CCA0
cmp r0, #2
beq _0201CCB4
_0201CC8C:
ldr r0, _0201CDF0 ; =0x0400000C
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x1a]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CCA0:
ldr r0, _0201CDF0 ; =0x0400000C
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x18]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CCB4:
ldr r0, _0201CDF0 ; =0x0400000C
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x16]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CCC8:
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldrb r0, [r0, #0x1c]
cmp r0, #0
beq _0201CCDC
cmp r0, #1
beq _0201CCF0
cmp r0, #2
beq _0201CD04
_0201CCDC:
ldr r0, _0201CDF4 ; =0x0400000E
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x14]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CCF0:
ldr r0, _0201CDF4 ; =0x0400000E
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x12]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD04:
ldr r0, _0201CDF4 ; =0x0400000E
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0x10]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD18:
ldr r0, _0201CDF8 ; =0x04001008
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0xe]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD2C:
ldr r0, _0201CDFC ; =0x0400100A
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0xc]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD40:
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldrb r0, [r0, #0x1c]
cmp r0, #0
beq _0201CD54
cmp r0, #1
beq _0201CD68
cmp r0, #2
beq _0201CD7C
_0201CD54:
ldr r0, _0201CE00 ; =0x0400100C
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #0xa]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD68:
ldr r0, _0201CE00 ; =0x0400100C
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #8]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD7C:
ldr r0, _0201CE00 ; =0x0400100C
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #6]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CD90:
mov r2, #0x2c
mul r2, r1
add r0, r0, r2
ldrb r0, [r0, #0x1c]
cmp r0, #0
beq _0201CDA4
cmp r0, #1
beq _0201CDB8
cmp r0, #2
beq _0201CDCC
_0201CDA4:
ldr r0, _0201CE04 ; =0x0400100E
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #4]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CDB8:
ldr r0, _0201CE04 ; =0x0400100E
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0, #2]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CDCC:
ldr r0, _0201CE04 ; =0x0400100E
ldrh r1, [r0]
add r0, sp, #0
add sp, #0x20
strh r1, [r0]
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_0201CDE0:
mov r0, #0
add sp, #0x20
bx lr
nop
_0201CDE8: .word 0x04000008
_0201CDEC: .word 0x0400000A
_0201CDF0: .word 0x0400000C
_0201CDF4: .word 0x0400000E
_0201CDF8: .word 0x04001008
_0201CDFC: .word 0x0400100A
_0201CE00: .word 0x0400100C
_0201CE04: .word 0x0400100E
thumb_func_end sub_0201CC2C
thumb_func_start BlitBitmapRect4Bit
BlitBitmapRect4Bit: ; 0x0201CE08
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x68
str r2, [sp, #8]
str r3, [sp, #0xc]
add r2, sp, #0x70
str r0, [sp]
ldrh r0, [r2, #0x10]
str r1, [sp, #4]
ldrh r2, [r2, #0x18]
str r0, [sp, #0x10]
add r0, r1, #0
ldrh r1, [r0, #4]
ldr r0, [sp, #0x10]
sub r3, r1, r0
cmp r3, r2
bge _0201CE30
ldr r0, [sp, #8]
add r0, r0, r3
str r0, [sp, #0x50]
b _0201CE36
_0201CE30:
ldr r0, [sp, #8]
add r0, r2, r0
str r0, [sp, #0x50]
_0201CE36:
ldr r2, [sp, #4]
add r3, sp, #0x70
ldrh r0, [r3, #0x14]
ldrh r2, [r2, #6]
ldrh r3, [r3, #0x1c]
sub r4, r2, r0
cmp r4, r3
bge _0201CE4E
ldr r2, [sp, #0xc]
add r2, r2, r4
str r2, [sp, #0x4c]
b _0201CE54
_0201CE4E:
ldr r2, [sp, #0xc]
add r2, r3, r2
str r2, [sp, #0x4c]
_0201CE54:
ldr r2, [sp]
mov r3, #7
ldrh r4, [r2, #4]
add r2, r4, #0
and r2, r3
add r2, r4, r2
asr r2, r2, #3
str r2, [sp, #0x48]
add r2, r1, #0
and r2, r3
add r1, r1, r2
asr r1, r1, #3
str r1, [sp, #0x44]
add r1, sp, #0x70
ldrh r1, [r1, #0x20]
ldr r2, _0201D040 ; =0x0000FFFF
str r1, [sp, #0x38]
cmp r1, r2
bne _0201CF5C
ldr r2, [sp, #0xc]
ldr r1, [sp, #0x4c]
cmp r2, r1
bge _0201CE86
cmp r2, r1
blt _0201CE88
_0201CE86:
b _0201D03A
_0201CE88:
add r1, r2, #0
lsl r1, r1, #2
lsl r0, r0, #2
str r1, [sp, #0x28]
str r0, [sp, #0x24]
_0201CE92:
ldr r3, [sp, #8]
ldr r0, [sp, #0x50]
add r1, r3, #0
ldr r4, [sp, #0x10]
cmp r1, r0
bge _0201CF3E
cmp r1, r0
bge _0201CF3E
add r0, r3, #0
lsl r5, r0, #2
add r0, r4, #0
lsl r6, r0, #2
ldr r0, _0201D044 ; =0x00003FE0
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x48]
and r1, r0
mul r2, r1
str r2, [sp, #0x20]
ldr r2, [sp, #0x28]
mov r1, #0x1c
and r2, r1
str r2, [sp, #0x1c]
ldr r2, [sp, #0x24]
and r0, r2
ldr r2, [sp, #0x44]
mul r2, r0
ldr r0, [sp, #0x24]
str r2, [sp, #0x18]
and r0, r1
str r0, [sp, #0x14]
_0201CECE:
ldr r0, [sp, #4]
asr r2, r4, #1
mov r1, #3
ldr r0, [r0]
and r1, r2
add r1, r0, r1
ldr r0, _0201D044 ; =0x00003FE0
and r0, r6
add r1, r1, r0
ldr r0, [sp, #0x18]
add r6, r6, #4
add r0, r1, r0
str r0, [sp, #0x64]
lsl r0, r4, #0x1f
lsr r2, r0, #0x1d
ldr r0, [sp]
asr r1, r3, #1
ldr r7, [r0]
mov r0, #3
and r0, r1
ldr r1, _0201D044 ; =0x00003FE0
add r4, r4, #1
and r1, r5
str r1, [sp, #0x54]
add r1, r7, r0
ldr r0, [sp, #0x54]
add r5, r5, #4
add r1, r0, r1
ldr r0, [sp, #0x20]
add r1, r0, r1
ldr r0, [sp, #0x1c]
ldrb r1, [r0, r1]
lsl r0, r3, #0x1f
lsr r0, r0, #0x1d
asr r1, r0
mov r0, #0xf
and r0, r1
add r7, r0, #0
ldr r1, [sp, #0x14]
ldr r0, [sp, #0x64]
lsl r7, r2
ldrb r0, [r0, r1]
add r3, r3, #1
str r0, [sp, #0x58]
mov r0, #0xf0
asr r0, r2
ldr r1, [sp, #0x58]
add r2, r7, #0
and r0, r1
orr r2, r0
ldr r1, [sp, #0x14]
ldr r0, [sp, #0x64]
strb r2, [r0, r1]
ldr r0, [sp, #0x50]
cmp r3, r0
blt _0201CECE
_0201CF3E:
ldr r0, [sp, #0x28]
add r0, r0, #4
str r0, [sp, #0x28]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0xc]
add r0, r0, #4
str r0, [sp, #0x24]
ldr r0, [sp, #0x4c]
cmp r1, r0
blt _0201CE92
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
_0201CF5C:
ldr r2, [sp, #0xc]
ldr r1, [sp, #0x4c]
cmp r2, r1
bge _0201D03A
cmp r2, r1
bge _0201D03A
add r1, r2, #0
lsl r1, r1, #2
lsl r0, r0, #2
str r1, [sp, #0x40]
str r0, [sp, #0x3c]
_0201CF72:
ldr r3, [sp, #8]
ldr r0, [sp, #0x50]
add r1, r3, #0
ldr r4, [sp, #0x10]
cmp r1, r0
bge _0201D020
cmp r1, r0
bge _0201D020
add r0, r3, #0
lsl r1, r0, #2
add r0, r4, #0
lsl r2, r0, #2
ldr r0, _0201D044 ; =0x00003FE0
ldr r5, [sp, #0x40]
ldr r6, [sp, #0x48]
and r5, r0
mul r6, r5
str r6, [sp, #0x34]
ldr r6, [sp, #0x40]
mov r5, #0x1c
and r6, r5
str r6, [sp, #0x30]
ldr r6, [sp, #0x3c]
and r0, r6
ldr r6, [sp, #0x44]
mul r6, r0
ldr r0, [sp, #0x3c]
str r6, [sp, #0x2c]
and r0, r5
str r0, [sp, #0x60]
_0201CFAE:
ldr r0, [sp, #4]
asr r6, r4, #1
mov r5, #3
and r5, r6
ldr r0, [r0]
asr r6, r3, #1
add r5, r0, r5
ldr r0, _0201D044 ; =0x00003FE0
and r0, r2
add r5, r5, r0
ldr r0, [sp, #0x2c]
add r5, r5, r0
ldr r0, [sp]
ldr r7, [r0]
mov r0, #3
and r0, r6
ldr r6, _0201D044 ; =0x00003FE0
and r6, r1
str r6, [sp, #0x5c]
add r6, r7, r0
ldr r0, [sp, #0x5c]
add r6, r0, r6
ldr r0, [sp, #0x34]
add r6, r0, r6
ldr r0, [sp, #0x30]
ldrb r6, [r0, r6]
lsl r0, r3, #0x1f
lsr r0, r0, #0x1d
asr r6, r0
mov r0, #0xf
and r0, r6
ldr r6, [sp, #0x38]
cmp r0, r6
beq _0201D012
lsl r6, r4, #0x1f
lsr r7, r6, #0x1d
lsl r0, r7
mov lr, r0
ldr r0, [sp, #0x60]
ldrb r0, [r5, r0]
mov ip, r0
mov r0, #0xf0
add r6, r0, #0
asr r6, r7
mov r0, ip
and r0, r6
mov r6, lr
orr r6, r0
ldr r0, [sp, #0x60]
strb r6, [r5, r0]
_0201D012:
ldr r0, [sp, #0x50]
add r3, r3, #1
add r1, r1, #4
add r2, r2, #4
add r4, r4, #1
cmp r3, r0
blt _0201CFAE
_0201D020:
ldr r0, [sp, #0x40]
add r0, r0, #4
str r0, [sp, #0x40]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
ldr r0, [sp, #0x3c]
ldr r1, [sp, #0xc]
add r0, r0, #4
str r0, [sp, #0x3c]
ldr r0, [sp, #0x4c]
cmp r1, r0
blt _0201CF72
_0201D03A:
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
nop
_0201D040: .word 0x0000FFFF
_0201D044: .word 0x00003FE0
thumb_func_end BlitBitmapRect4Bit
thumb_func_start sub_0201D048
sub_0201D048: ; 0x0201D048
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x50
str r2, [sp, #8]
str r3, [sp, #0xc]
add r2, sp, #0x58
str r0, [sp]
ldrh r0, [r2, #0x10]
str r1, [sp, #4]
ldrh r2, [r2, #0x18]
str r0, [sp, #0x10]
add r0, r1, #0
ldrh r1, [r0, #4]
ldr r0, [sp, #0x10]
sub r3, r1, r0
cmp r3, r2
bge _0201D06E
ldr r0, [sp, #8]
add r0, r0, r3
b _0201D072
_0201D06E:
ldr r0, [sp, #8]
add r0, r2, r0
_0201D072:
ldr r2, [sp, #4]
add r3, sp, #0x58
mov ip, r0
ldrh r0, [r3, #0x14]
ldrh r2, [r2, #6]
ldrh r3, [r3, #0x1c]
sub r4, r2, r0
cmp r4, r3
bge _0201D08A
ldr r2, [sp, #0xc]
add r2, r2, r4
b _0201D08E
_0201D08A:
ldr r2, [sp, #0xc]
add r2, r3, r2
_0201D08E:
mov lr, r2
ldr r2, [sp]
mov r3, #7
ldrh r4, [r2, #4]
add r2, r4, #0
and r2, r3
add r2, r4, r2
asr r2, r2, #3
str r2, [sp, #0x4c]
add r2, r1, #0
and r2, r3
add r1, r1, r2
asr r1, r1, #3
str r1, [sp, #0x48]
add r1, sp, #0x58
ldrh r1, [r1, #0x20]
ldr r2, _0201D228 ; =0x0000FFFF
str r1, [sp, #0x3c]
cmp r1, r2
bne _0201D16E
ldr r2, [sp, #0xc]
mov r1, lr
cmp r2, r1
bge _0201D0C4
mov r1, lr
cmp r2, r1
blt _0201D0C6
_0201D0C4:
b _0201D224
_0201D0C6:
add r1, r2, #0
lsl r1, r1, #3
lsl r0, r0, #3
str r1, [sp, #0x28]
str r0, [sp, #0x24]
_0201D0D0:
ldr r1, [sp, #8]
mov r0, ip
add r2, r1, #0
ldr r7, [sp, #0x10]
cmp r2, r0
bge _0201D150
mov r0, ip
cmp r2, r0
bge _0201D150
add r0, r1, #0
lsl r2, r0, #3
add r0, r7, #0
lsl r3, r0, #3
ldr r6, _0201D22C ; =0x00007FC0
ldr r0, [sp, #0x28]
ldr r4, [sp, #0x4c]
and r0, r6
mul r4, r0
str r4, [sp, #0x20]
ldr r0, [sp, #0x28]
mov r5, #0x38
and r0, r5
str r0, [sp, #0x1c]
ldr r0, [sp, #0x24]
ldr r4, [sp, #0x48]
and r0, r6
mul r4, r0
ldr r0, [sp, #0x24]
str r4, [sp, #0x18]
and r0, r5
str r0, [sp, #0x14]
_0201D10E:
ldr r0, [sp]
add r5, r1, #0
mov r4, #7
and r5, r4
ldr r0, [r0]
ldr r4, _0201D22C ; =0x00007FC0
add r0, r0, r5
and r4, r2
add r4, r4, r0
ldr r0, [sp, #0x20]
add r5, r7, #0
add r4, r0, r4
ldr r0, [sp, #0x1c]
add r1, r1, #1
ldrb r6, [r0, r4]
ldr r0, [sp, #4]
mov r4, #7
and r5, r4
ldr r0, [r0]
ldr r4, _0201D22C ; =0x00007FC0
add r0, r0, r5
and r4, r3
add r4, r4, r0
ldr r0, [sp, #0x18]
add r2, #8
add r4, r0, r4
ldr r0, [sp, #0x14]
add r3, #8
strb r6, [r0, r4]
mov r0, ip
add r7, r7, #1
cmp r1, r0
blt _0201D10E
_0201D150:
ldr r0, [sp, #0x28]
add r0, #8
str r0, [sp, #0x28]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0xc]
add r0, #8
str r0, [sp, #0x24]
mov r0, lr
cmp r1, r0
blt _0201D0D0
add sp, #0x50
pop {r3, r4, r5, r6, r7, pc}
_0201D16E:
ldr r2, [sp, #0xc]
mov r1, lr
cmp r2, r1
bge _0201D224
mov r1, lr
cmp r2, r1
bge _0201D224
add r1, r2, #0
lsl r1, r1, #3
lsl r0, r0, #3
str r1, [sp, #0x44]
str r0, [sp, #0x40]
_0201D186:
ldr r2, [sp, #8]
mov r0, ip
add r1, r2, #0
ldr r3, [sp, #0x10]
cmp r1, r0
bge _0201D20A
mov r0, ip
cmp r1, r0
bge _0201D20A
add r0, r2, #0
lsl r6, r0, #3
add r0, r3, #0
lsl r1, r0, #3
ldr r7, _0201D22C ; =0x00007FC0
ldr r0, [sp, #0x44]
ldr r4, [sp, #0x4c]
and r0, r7
mul r4, r0
str r4, [sp, #0x38]
ldr r0, [sp, #0x44]
mov r5, #0x38
and r0, r5
str r0, [sp, #0x34]
ldr r0, [sp, #0x40]
ldr r4, [sp, #0x48]
and r0, r7
mul r4, r0
ldr r0, [sp, #0x40]
str r4, [sp, #0x30]
and r0, r5
str r0, [sp, #0x2c]
_0201D1C4:
ldr r0, [sp, #4]
mov r4, #7
ldr r0, [r0]
and r4, r3
add r0, r0, r4
ldr r4, _0201D22C ; =0x00007FC0
add r5, r2, #0
and r4, r1
add r4, r0, r4
ldr r0, [sp, #0x30]
add r7, r4, r0
ldr r0, [sp]
mov r4, #7
and r5, r4
ldr r0, [r0]
ldr r4, _0201D22C ; =0x00007FC0
add r0, r0, r5
and r4, r6
add r4, r4, r0
ldr r0, [sp, #0x38]
add r4, r0, r4
ldr r0, [sp, #0x34]
ldrb r0, [r0, r4]
ldr r4, [sp, #0x3c]
cmp r0, r4
beq _0201D1FC
ldr r4, [sp, #0x2c]
strb r0, [r7, r4]
_0201D1FC:
add r2, r2, #1
mov r0, ip
add r6, #8
add r1, #8
add r3, r3, #1
cmp r2, r0
blt _0201D1C4
_0201D20A:
ldr r0, [sp, #0x44]
add r0, #8
str r0, [sp, #0x44]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
ldr r0, [sp, #0x40]
ldr r1, [sp, #0xc]
add r0, #8
str r0, [sp, #0x40]
mov r0, lr
cmp r1, r0
blt _0201D186
_0201D224:
add sp, #0x50
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0201D228: .word 0x0000FFFF
_0201D22C: .word 0x00007FC0
thumb_func_end sub_0201D048
thumb_func_start sub_0201D230
sub_0201D230: ; 0x0201D230
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r1, [sp, #4]
str r2, [sp, #8]
str r0, [sp]
ldr r0, [sp, #0x2c]
str r0, [sp, #0x2c]
ldr r0, [sp, #4]
add r6, r0, r3
ldr r0, [sp]
ldrh r0, [r0, #4]
cmp r6, r0
ble _0201D24C
add r6, r0, #0
_0201D24C:
add r1, sp, #0x18
ldrh r2, [r1, #0x10]
ldr r1, [sp, #8]
add r1, r1, r2
mov ip, r1
ldr r1, [sp]
ldrh r2, [r1, #6]
mov r1, ip
cmp r1, r2
ble _0201D262
mov ip, r2
_0201D262:
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
mov lr, r0
ldr r1, [sp, #8]
mov r0, ip
cmp r1, r0
bge _0201D2EC
add r0, r1, #0
lsl r0, r0, #2
str r0, [sp, #0xc]
ldr r0, [sp, #0x2c]
lsl r0, r0, #4
str r0, [sp, #0x10]
_0201D280:
ldr r1, [sp, #4]
add r0, r1, #0
cmp r0, r6
bge _0201D2DA
lsl r5, r0, #2
ldr r2, _0201D2F0 ; =0x00003FE0
ldr r0, [sp, #0xc]
and r0, r2
add r7, r0, #0
mov r2, lr
mul r7, r2
ldr r0, [sp, #0xc]
mov r2, #0x1c
and r2, r0
_0201D29C:
ldr r0, [sp]
asr r3, r1, #1
ldr r4, [r0]
mov r0, #3
and r0, r3
ldr r3, _0201D2F0 ; =0x00003FE0
add r0, r4, r0
and r3, r5
add r0, r0, r3
add r0, r0, r7
mov r3, #1
tst r3, r1
ldrb r4, [r0, r2]
beq _0201D2C4
mov r3, #0xf
and r3, r4
strb r3, [r0, r2]
ldrb r4, [r0, r2]
ldr r3, [sp, #0x10]
b _0201D2CE
_0201D2C4:
mov r3, #0xf0
and r3, r4
strb r3, [r0, r2]
ldrb r4, [r0, r2]
ldr r3, [sp, #0x2c]
_0201D2CE:
orr r3, r4
add r1, r1, #1
strb r3, [r0, r2]
add r5, r5, #4
cmp r1, r6
blt _0201D29C
_0201D2DA:
ldr r0, [sp, #0xc]
add r0, r0, #4
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r1, r0, #1
mov r0, ip
str r1, [sp, #8]
cmp r1, r0
blt _0201D280
_0201D2EC:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0201D2F0: .word 0x00003FE0
thumb_func_end sub_0201D230
thumb_func_start sub_0201D2F4
sub_0201D2F4: ; 0x0201D2F4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r1, [sp, #4]
str r2, [sp, #8]
str r0, [sp]
ldr r0, [sp, #0x2c]
str r0, [sp, #0x2c]
ldr r0, [sp, #4]
add r5, r0, r3
ldr r0, [sp]
ldrh r0, [r0, #4]
cmp r5, r0
ble _0201D310
add r5, r0, #0
_0201D310:
add r1, sp, #0x18
ldrh r2, [r1, #0x10]
ldr r1, [sp, #8]
add r1, r1, r2
mov lr, r1
ldr r1, [sp]
ldrh r2, [r1, #6]
mov r1, lr
cmp r1, r2
ble _0201D326
mov lr, r2
_0201D326:
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x10]
ldr r1, [sp, #8]
mov r0, lr
cmp r1, r0
bge _0201D392
add r0, r1, #0
lsl r0, r0, #3
str r0, [sp, #0xc]
ldr r0, [sp, #4]
lsl r0, r0, #3
mov ip, r0
_0201D344:
ldr r2, [sp, #4]
add r0, r2, #0
cmp r0, r5
bge _0201D380
ldr r1, [sp, #0xc]
ldr r0, _0201D398 ; =0x00007FC0
mov r3, ip
and r0, r1
add r7, r0, #0
ldr r1, [sp, #0x10]
mov r0, #0x38
mul r7, r1
ldr r1, [sp, #0xc]
add r6, r1, #0
and r6, r0
_0201D362:
ldr r0, [sp]
ldr r4, _0201D398 ; =0x00007FC0
ldr r1, [r0]
mov r0, #7
and r0, r2
and r4, r3
add r0, r1, r0
add r0, r4, r0
add r1, r7, r0
ldr r0, [sp, #0x2c]
add r2, r2, #1
strb r0, [r6, r1]
add r3, #8
cmp r2, r5
blt _0201D362
_0201D380:
ldr r0, [sp, #0xc]
add r0, #8
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r1, r0, #1
mov r0, lr
str r1, [sp, #8]
cmp r1, r0
blt _0201D344
_0201D392:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_0201D398: .word 0x00007FC0
thumb_func_end sub_0201D2F4
thumb_func_start AllocWindows
AllocWindows: ; 0x0201D39C
push {r4, r5, r6, lr}
add r5, r1, #0
lsl r1, r5, #4
bl AllocFromHeap
add r6, r0, #0
mov r4, #0
cmp r5, #0
ble _0201D3C0
_0201D3AE:
lsl r0, r4, #4
add r0, r6, r0
bl sub_0201D3C4
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, r5
blt _0201D3AE
_0201D3C0:
add r0, r6, #0
pop {r4, r5, r6, pc}
thumb_func_end AllocWindows
thumb_func_start sub_0201D3C4
sub_0201D3C4: ; 0x0201D3C4
mov r3, #0
str r3, [r0]
mov r1, #0xff
strb r1, [r0, #4]
strb r3, [r0, #5]
strb r3, [r0, #6]
strb r3, [r0, #7]
strb r3, [r0, #8]
strb r3, [r0, #9]
ldrh r2, [r0, #0xa]
ldr r1, _0201D3EC ; =0xFFFF8000
and r2, r1
strh r2, [r0, #0xa]
str r3, [r0, #0xc]
ldrh r2, [r0, #0xa]
sub r1, r1, #1
and r1, r2
strh r1, [r0, #0xa]
bx lr
nop
_0201D3EC: .word 0xFFFF8000
thumb_func_end sub_0201D3C4
thumb_func_start sub_0201D3F0
sub_0201D3F0: ; 0x0201D3F0
ldr r1, [r0]
cmp r1, #0
beq _0201D402
ldrb r1, [r0, #4]
cmp r1, #0xff
beq _0201D402
ldr r0, [r0, #0xc]
cmp r0, #0
bne _0201D406
_0201D402:
mov r0, #0
bx lr
_0201D406:
mov r0, #1
bx lr
.balign 4, 0
thumb_func_end sub_0201D3F0
thumb_func_start sub_0201D40C
sub_0201D40C: ; 0x0201D40C
push {r3, r4, r5, r6, r7, lr}
add r6, r2, #0
add r5, r0, #0
mov r0, #0x2c
add r7, r6, #0
mul r7, r0
add r4, r1, #0
str r3, [sp]
add r1, r5, r7
ldr r0, [r1, #8]
cmp r0, #0
beq _0201D488
add r3, sp, #8
ldrb r2, [r1, #0x1f]
ldrb r1, [r3, #0x14]
ldrb r3, [r3, #0x18]
ldr r0, [r5]
mul r3, r1
add r1, r2, #0
mul r1, r3
bl AllocFromHeap
add r1, r0, #0
beq _0201D488
str r5, [r4]
strb r6, [r4, #4]
ldr r0, [sp]
add r3, sp, #8
strb r0, [r4, #5]
ldrb r0, [r3, #0x10]
ldr r2, _0201D48C ; =0xFFFF8000
strb r0, [r4, #6]
ldrb r0, [r3, #0x14]
strb r0, [r4, #7]
ldrb r0, [r3, #0x18]
strb r0, [r4, #8]
ldrb r0, [r3, #0x1c]
strb r0, [r4, #9]
ldrh r0, [r4, #0xa]
ldrh r3, [r3, #0x20]
and r0, r2
lsr r2, r2, #0x11
and r2, r3
orr r0, r2
strh r0, [r4, #0xa]
str r1, [r4, #0xc]
add r0, r5, r7
ldrb r0, [r0, #0x1e]
cmp r0, #0
bne _0201D474
mov r2, #0
b _0201D476
_0201D474:
mov r2, #1
_0201D476:
ldrh r1, [r4, #0xa]
ldr r0, _0201D490 ; =0xFFFF7FFF
and r1, r0
lsl r0, r2, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1f
lsr r0, r0, #0x10
orr r0, r1
strh r0, [r4, #0xa]
_0201D488:
pop {r3, r4, r5, r6, r7, pc}
nop
_0201D48C: .word 0xFFFF8000
_0201D490: .word 0xFFFF7FFF
thumb_func_end sub_0201D40C
thumb_func_start sub_0201D494
sub_0201D494: ; 0x0201D494
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r3, [sp]
add r5, r0, #0
ldr r0, [sp, #0x24]
add r6, r2, #0
str r0, [sp, #0x24]
ldr r0, [sp]
add r4, r1, #0
mul r0, r6
lsl r0, r0, #5
str r0, [sp, #4]
ldr r0, [r5]
ldr r1, [sp, #4]
bl AllocFromHeap
ldr r1, [sp, #0x24]
add r7, r0, #0
lsl r2, r1, #4
orr r1, r2
lsl r1, r1, #0x18
ldr r2, [sp, #4]
lsr r1, r1, #0x18
bl memset
cmp r7, #0
beq _0201D4F0
str r5, [r4]
strb r6, [r4, #7]
ldr r0, [sp]
strb r0, [r4, #8]
ldrh r1, [r4, #0xa]
ldr r0, _0201D4F4 ; =0xFFFF8000
add r3, r1, #0
add r1, sp, #0x10
ldrh r2, [r1, #0x10]
lsr r1, r0, #0x11
and r3, r0
and r1, r2
orr r1, r3
strh r1, [r4, #0xa]
str r7, [r4, #0xc]
ldrh r1, [r4, #0xa]
sub r0, r0, #1
and r0, r1
strh r0, [r4, #0xa]
_0201D4F0:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0201D4F4: .word 0xFFFF8000
thumb_func_end sub_0201D494
thumb_func_start AddWindow
AddWindow: ; 0x0201D4F8
push {lr}
sub sp, #0x14
add r3, r2, #0
ldrb r2, [r3, #2]
str r2, [sp]
ldrb r2, [r3, #3]
str r2, [sp, #4]
ldrb r2, [r3, #4]
str r2, [sp, #8]
ldrb r2, [r3, #5]
str r2, [sp, #0xc]
ldrh r2, [r3, #6]
str r2, [sp, #0x10]
ldrb r2, [r3]
ldrb r3, [r3, #1]
bl sub_0201D40C
add sp, #0x14
pop {pc}
.balign 4, 0
thumb_func_end AddWindow
thumb_func_start RemoveWindow
RemoveWindow: ; 0x0201D520
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
bl FreeToHeap
mov r2, #0
str r2, [r4]
mov r0, #0xff
strb r0, [r4, #4]
strb r2, [r4, #5]
strb r2, [r4, #6]
strb r2, [r4, #7]
strb r2, [r4, #8]
strb r2, [r4, #9]
ldrh r1, [r4, #0xa]
ldr r0, _0201D548 ; =0xFFFF8000
and r0, r1
strh r0, [r4, #0xa]
str r2, [r4, #0xc]
pop {r4, pc}
.balign 4, 0
_0201D548: .word 0xFFFF8000
thumb_func_end RemoveWindow
thumb_func_start sub_0201D54C
sub_0201D54C: ; 0x0201D54C
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
mov r4, #0
cmp r6, #0
ble _0201D570
_0201D558:
lsl r0, r4, #4
add r0, r5, r0
ldr r0, [r0, #0xc]
cmp r0, #0
beq _0201D566
bl FreeToHeap
_0201D566:
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, r6
blt _0201D558
_0201D570:
add r0, r5, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
thumb_func_end sub_0201D54C
thumb_func_start CopyWindowToVram
CopyWindowToVram: ; 0x0201D578
push {r4, lr}
add r4, r0, #0
bne _0201D582
bl GF_AssertFail
_0201D582:
ldr r0, [r4]
cmp r0, #0
bne _0201D58C
bl GF_AssertFail
_0201D58C:
ldrb r0, [r4, #4]
cmp r0, #8
blo _0201D596
bl GF_AssertFail
_0201D596:
ldrb r1, [r4, #4]
mov r0, #0x2c
ldr r2, [r4]
mul r0, r1
add r0, r2, r0
ldrb r0, [r0, #0x1c]
cmp r0, #3
blo _0201D5AA
bl GF_AssertFail
_0201D5AA:
ldrb r2, [r4, #4]
mov r1, #0x2c
ldr r3, [r4]
mul r1, r2
add r1, r3, r1
ldrb r1, [r1, #0x1c]
add r0, r4, #0
lsl r2, r1, #2
ldr r1, _0201D5C4 ; =_020F62FC
ldr r1, [r1, r2]
blx r1
pop {r4, pc}
nop
_0201D5C4: .word _020F62FC
thumb_func_end CopyWindowToVram
thumb_func_start sub_0201D5C8
sub_0201D5C8: ; 0x0201D5C8
push {r4, lr}
add r4, r0, #0
bne _0201D5D2
bl GF_AssertFail
_0201D5D2:
ldr r0, [r4]
cmp r0, #0
bne _0201D5DC
bl GF_AssertFail
_0201D5DC:
ldrb r0, [r4, #4]
cmp r0, #8
blo _0201D5E6
bl GF_AssertFail
_0201D5E6:
ldrb r1, [r4, #4]
mov r0, #0x2c
ldr r2, [r4]
mul r0, r1
add r0, r2, r0
ldrb r0, [r0, #0x1c]
cmp r0, #3
blo _0201D5FA
bl GF_AssertFail
_0201D5FA:
ldrb r2, [r4, #4]
mov r1, #0x2c
ldr r3, [r4]
mul r1, r2
add r1, r3, r1
ldrb r1, [r1, #0x1c]
add r0, r4, #0
lsl r2, r1, #2
ldr r1, _0201D614 ; =_020F62F0
ldr r1, [r1, r2]
blx r1
pop {r4, pc}
nop
_0201D614: .word _020F62F0
thumb_func_end sub_0201D5C8
thumb_func_start sub_0201D618
sub_0201D618: ; 0x0201D618
push {r3, lr}
ldrb r2, [r0, #4]
mov r1, #0x2c
ldr r3, [r0]
mul r1, r2
add r1, r3, r1
ldrb r1, [r1, #0x1c]
lsl r2, r1, #2
ldr r1, _0201D630 ; =_020F62CC
ldr r1, [r1, r2]
blx r1
pop {r3, pc}
.balign 4, 0
_0201D630: .word _020F62CC
thumb_func_end sub_0201D618
thumb_func_start sub_0201D634
sub_0201D634: ; 0x0201D634
push {r3, lr}
ldrb r2, [r0, #4]
mov r1, #0x2c
ldr r3, [r0]
mul r1, r2
add r1, r3, r1
ldrb r1, [r1, #0x1c]
lsl r2, r1, #2
ldr r1, _0201D64C ; =_020F6308
ldr r1, [r1, r2]
blx r1
pop {r3, pc}
.balign 4, 0
_0201D64C: .word _020F6308
thumb_func_end sub_0201D634
thumb_func_start sub_0201D650
sub_0201D650: ; 0x0201D650
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
ldrb r1, [r6, #4]
mov r0, #0x2c
ldr r2, [r6]
mul r0, r1
add r0, r2, r0
ldr r0, [r0, #8]
str r0, [sp]
cmp r0, #0
beq _0201D6CA
ldrh r0, [r6, #0xa]
ldrb r1, [r6, #5]
lsl r0, r0, #0x11
lsr r5, r0, #0x11
ldrb r0, [r6, #7]
add r7, r1, r0
ldrb r0, [r6, #6]
ldrb r1, [r6, #8]
str r0, [sp, #8]
add r0, r0, r1
ldr r1, [sp, #8]
str r0, [sp, #4]
cmp r1, r0
bhs _0201D6CA
_0201D684:
ldrb r4, [r6, #5]
cmp r4, r7
bhs _0201D6BE
ldr r0, [sp, #8]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
_0201D692:
ldrb r2, [r6, #4]
mov r1, #0x2c
ldr r0, [r6]
mul r1, r2
add r3, r0, r1
ldrb r2, [r3, #0x1d]
lsl r0, r4, #0x18
ldrb r3, [r3, #0x1c]
ldr r1, [sp, #0xc]
lsr r0, r0, #0x18
bl sub_0201C2F0
ldrb r1, [r6, #9]
lsl r2, r0, #1
ldr r0, [sp]
lsl r1, r1, #0xc
orr r1, r5
add r4, r4, #1
strh r1, [r0, r2]
add r5, r5, #1
cmp r4, r7
blo _0201D692
_0201D6BE:
ldr r0, [sp, #8]
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #8]
cmp r1, r0
blo _0201D684
_0201D6CA:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201D650
thumb_func_start sub_0201D6D0
sub_0201D6D0: ; 0x0201D6D0
push {r4, r5, r6, r7}
ldrb r3, [r0, #4]
mov r1, #0x2c
add r2, r3, #0
mul r2, r1
ldr r1, [r0]
add r1, r1, r2
ldr r3, [r1, #8]
cmp r3, #0
beq _0201D724
ldrb r2, [r1, #0x1d]
ldr r1, _0201D728 ; =_020F62C4
ldrb r6, [r1, r2]
ldrb r1, [r0, #6]
add r2, r1, #0
mul r2, r6
add r2, r3, r2
ldrb r1, [r0, #5]
mov r3, #0
add r4, r2, r1
ldrh r1, [r0, #0xa]
lsl r1, r1, #0x11
lsr r5, r1, #0x11
ldrb r1, [r0, #8]
cmp r1, #0
ble _0201D724
add r1, r3, #0
_0201D706:
ldrb r7, [r0, #7]
add r2, r1, #0
cmp r7, #0
ble _0201D71A
_0201D70E:
strb r5, [r4, r2]
ldrb r7, [r0, #7]
add r2, r2, #1
add r5, r5, #1
cmp r2, r7
blt _0201D70E
_0201D71A:
ldrb r2, [r0, #8]
add r3, r3, #1
add r4, r4, r6
cmp r3, r2
blt _0201D706
_0201D724:
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
_0201D728: .word _020F62C4
thumb_func_end sub_0201D6D0
thumb_func_start sub_0201D72C
sub_0201D72C: ; 0x0201D72C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
ldrb r1, [r5, #4]
mov r0, #0x2c
ldr r2, [r5]
mul r0, r1
add r0, r2, r0
ldr r0, [r0, #8]
str r0, [sp]
cmp r0, #0
beq _0201D798
ldrb r1, [r5, #5]
ldrb r0, [r5, #7]
add r6, r1, r0
ldrb r0, [r5, #6]
ldrb r1, [r5, #8]
str r0, [sp, #8]
add r0, r0, r1
ldr r1, [sp, #8]
str r0, [sp, #4]
cmp r1, r0
bhs _0201D798
_0201D75A:
ldrb r4, [r5, #5]
cmp r4, r6
bhs _0201D78C
ldr r0, [sp, #8]
lsl r0, r0, #0x18
lsr r7, r0, #0x18
_0201D766:
ldrb r2, [r5, #4]
mov r1, #0x2c
ldr r0, [r5]
mul r1, r2
add r3, r0, r1
ldrb r2, [r3, #0x1d]
lsl r0, r4, #0x18
ldrb r3, [r3, #0x1c]
lsr r0, r0, #0x18
add r1, r7, #0
bl sub_0201C2F0
lsl r2, r0, #1
ldr r0, [sp]
mov r1, #0
add r4, r4, #1
strh r1, [r0, r2]
cmp r4, r6
blo _0201D766
_0201D78C:
ldr r0, [sp, #8]
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #8]
cmp r1, r0
blo _0201D75A
_0201D798:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_0201D72C
thumb_func_start sub_0201D79C
sub_0201D79C: ; 0x0201D79C
push {r4, r5, r6, r7}
ldrb r3, [r0, #4]
mov r1, #0x2c
add r2, r3, #0
mul r2, r1
ldr r1, [r0]
add r1, r1, r2
ldr r3, [r1, #8]
cmp r3, #0
beq _0201D7EA
ldrb r2, [r1, #0x1d]
ldr r1, _0201D7F0 ; =_020F62C4
mov r4, #0
ldrb r6, [r1, r2]
ldrb r1, [r0, #6]
add r2, r1, #0
mul r2, r6
ldrb r1, [r0, #5]
add r2, r3, r2
add r5, r2, r1
ldrb r1, [r0, #8]
cmp r1, #0
ble _0201D7EA
add r1, r4, #0
add r2, r4, #0
_0201D7CE:
ldrb r7, [r0, #7]
add r3, r2, #0
cmp r7, #0
ble _0201D7E0
_0201D7D6:
strb r1, [r5, r3]
ldrb r7, [r0, #7]
add r3, r3, #1
cmp r3, r7
blt _0201D7D6
_0201D7E0:
ldrb r3, [r0, #8]
add r4, r4, #1
add r5, r5, r6
cmp r4, r3
blt _0201D7CE
_0201D7EA:
pop {r4, r5, r6, r7}
bx lr
nop
_0201D7F0: .word _020F62C4
thumb_func_end sub_0201D79C
thumb_func_start sub_0201D7F4
sub_0201D7F4: ; 0x0201D7F4
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
bl sub_0201D650
add r0, r4, #0
bl sub_0201D8A0
ldrb r1, [r4, #4]
mov r0, #0x2c
add r2, r1, #0
mul r2, r0
ldr r0, [r4]
add r3, r0, r2
ldr r2, [r3, #0x10]
str r2, [sp]
ldr r2, [r3, #8]
ldr r3, [r3, #0xc]
bl BgCopyOrUncompressTilemapBufferRangeToVram
add sp, #4
pop {r3, r4, pc}
thumb_func_end sub_0201D7F4
thumb_func_start sub_0201D820
sub_0201D820: ; 0x0201D820
push {r4, lr}
add r4, r0, #0
bl sub_0201D650
ldrb r1, [r4, #4]
ldr r0, [r4]
bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
bl sub_0201D8A0
pop {r4, pc}
thumb_func_end sub_0201D820
thumb_func_start sub_0201D838
sub_0201D838: ; 0x0201D838
push {r3, r4, r5, lr}
add r4, r0, #0
bl sub_0201D6D0
ldrb r1, [r4, #4]
mov r0, #0x2c
add r2, r1, #0
mul r2, r0
ldr r0, [r4]
add r3, r0, r2
ldr r2, [r3, #0x10]
str r2, [sp]
ldr r2, [r3, #8]
ldr r3, [r3, #0xc]
bl BgCopyOrUncompressTilemapBufferRangeToVram
ldrh r0, [r4, #0xa]
lsl r0, r0, #0x11
lsr r0, r0, #0x11
str r0, [sp]
ldrb r5, [r4, #7]
ldrb r3, [r4, #8]
ldrb r1, [r4, #4]
ldr r0, [r4]
mul r3, r5
ldr r2, [r4, #0xc]
lsl r3, r3, #6
bl BG_LoadCharTilesData
pop {r3, r4, r5, pc}
thumb_func_end sub_0201D838
thumb_func_start sub_0201D874
sub_0201D874: ; 0x0201D874
push {r3, r4, r5, lr}
add r4, r0, #0
bl sub_0201D6D0
ldrb r1, [r4, #4]
ldr r0, [r4]
bl ScheduleBgTilemapBufferTransfer
ldrh r0, [r4, #0xa]
lsl r0, r0, #0x11
lsr r0, r0, #0x11
str r0, [sp]
ldrb r5, [r4, #7]
ldrb r3, [r4, #8]
ldrb r1, [r4, #4]
ldr r0, [r4]
mul r3, r5
ldr r2, [r4, #0xc]
lsl r3, r3, #6
bl BG_LoadCharTilesData
pop {r3, r4, r5, pc}
thumb_func_end sub_0201D874
thumb_func_start sub_0201D8A0
sub_0201D8A0: ; 0x0201D8A0
push {r3, r4, r5, lr}
add r3, r0, #0
ldrh r2, [r3, #0xa]
ldrb r1, [r3, #4]
mov r4, #0x2c
lsl r2, r2, #0x11
ldr r0, [r3]
lsr r2, r2, #0x11
str r2, [sp]
mul r4, r1
add r4, r0, r4
ldr r2, [r3, #0xc]
ldrb r5, [r3, #7]
ldrb r3, [r3, #8]
ldrb r4, [r4, #0x1f]
mul r3, r5
mul r3, r4
bl BG_LoadCharTilesData
pop {r3, r4, r5, pc}
thumb_func_end sub_0201D8A0
thumb_func_start ClearWindowTilemapAndCopyToVram
ClearWindowTilemapAndCopyToVram: ; 0x0201D8C8
push {r3, lr}
ldrb r2, [r0, #4]
mov r1, #0x2c
ldr r3, [r0]
mul r1, r2
add r1, r3, r1
ldrb r1, [r1, #0x1c]
lsl r2, r1, #2
ldr r1, _0201D8E0 ; =_020F62E4
ldr r1, [r1, r2]
blx r1
pop {r3, pc}
.balign 4, 0
_0201D8E0: .word _020F62E4
thumb_func_end ClearWindowTilemapAndCopyToVram
thumb_func_start sub_0201D8E4
sub_0201D8E4: ; 0x0201D8E4
push {r3, lr}
ldrb r2, [r0, #4]
mov r1, #0x2c
ldr r3, [r0]
mul r1, r2
add r1, r3, r1
ldrb r1, [r1, #0x1c]
lsl r2, r1, #2
ldr r1, _0201D8FC ; =_020F62D8
ldr r1, [r1, r2]
blx r1
pop {r3, pc}
.balign 4, 0
_0201D8FC: .word _020F62D8
thumb_func_end sub_0201D8E4
thumb_func_start sub_0201D900
sub_0201D900: ; 0x0201D900
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
bl sub_0201D72C
ldrb r1, [r4, #4]
mov r0, #0x2c
add r2, r1, #0
mul r2, r0
ldr r0, [r4]
add r3, r0, r2
ldr r2, [r3, #0x10]
str r2, [sp]
ldr r2, [r3, #8]
ldr r3, [r3, #0xc]
bl BgCopyOrUncompressTilemapBufferRangeToVram
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end sub_0201D900
thumb_func_start sub_0201D928
sub_0201D928: ; 0x0201D928
push {r4, lr}
add r4, r0, #0
bl sub_0201D72C
ldrb r1, [r4, #4]
ldr r0, [r4]
bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0201D928
thumb_func_start sub_0201D93C
sub_0201D93C: ; 0x0201D93C
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
bl sub_0201D79C
ldrb r1, [r4, #4]
mov r0, #0x2c
add r2, r1, #0
mul r2, r0
ldr r0, [r4]
add r3, r0, r2
ldr r2, [r3, #0x10]
str r2, [sp]
ldr r2, [r3, #8]
ldr r3, [r3, #0xc]
bl BgCopyOrUncompressTilemapBufferRangeToVram
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end sub_0201D93C
thumb_func_start sub_0201D964
sub_0201D964: ; 0x0201D964
push {r4, lr}
add r4, r0, #0
bl sub_0201D79C
ldrb r1, [r4, #4]
ldr r0, [r4]
bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0201D964
thumb_func_start FillWindowPixelBuffer
FillWindowPixelBuffer: ; 0x0201D978
push {r3, r4, r5, lr}
add r4, r0, #0
ldrb r2, [r4, #4]
mov r0, #0x2c
ldr r3, [r4]
mul r0, r2
add r0, r3, r0
ldrb r2, [r0, #0x1f]
cmp r2, #0x20
bne _0201D994
lsl r0, r1, #4
orr r0, r1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
_0201D994:
lsl r3, r1, #0x18
lsl r0, r1, #0x10
orr r0, r3
lsl r5, r1, #8
orr r0, r5
orr r0, r1
ldr r1, [r4, #0xc]
ldrb r3, [r4, #8]
ldrb r4, [r4, #7]
mul r2, r4
mul r2, r3
bl MIi_CpuClearFast
pop {r3, r4, r5, pc}
thumb_func_end FillWindowPixelBuffer
thumb_func_start sub_0201D9B0
sub_0201D9B0: ; 0x0201D9B0
push {r4, lr}
add r2, r0, #0
lsl r0, r1, #4
orr r0, r1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
lsl r1, r4, #0x18
lsl r0, r4, #0x10
orr r0, r1
lsl r3, r4, #8
orr r0, r3
ldr r1, [r2, #0xc]
ldrb r3, [r2, #8]
ldrb r2, [r2, #7]
orr r0, r4
lsl r2, r2, #5
mul r2, r3
bl MIi_CpuClearFast
pop {r4, pc}
thumb_func_end sub_0201D9B0
thumb_func_start BlitBitmapRectToWindow
BlitBitmapRectToWindow: ; 0x0201D9D8
push {r4, r5, lr}
sub sp, #0x1c
add r4, sp, #0x18
ldrh r5, [r4, #0x10]
str r5, [sp]
ldrh r5, [r4, #0x14]
str r5, [sp, #4]
ldrh r5, [r4, #0x18]
str r5, [sp, #8]
ldrh r5, [r4, #0x1c]
str r5, [sp, #0xc]
ldrh r5, [r4, #0x20]
str r5, [sp, #0x10]
ldrh r4, [r4, #0x24]
str r4, [sp, #0x14]
mov r4, #0
str r4, [sp, #0x18]
bl sub_0201DA04
add sp, #0x1c
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end BlitBitmapRectToWindow
thumb_func_start sub_0201DA04
sub_0201DA04: ; 0x0201DA04
push {r4, r5, lr}
sub sp, #0x24
str r1, [sp, #0x1c]
add r4, sp, #0x20
ldrh r5, [r4, #0x10]
add r1, sp, #0x14
strh r5, [r1, #0xc]
ldrh r5, [r4, #0x14]
strh r5, [r1, #0xe]
ldr r5, [r0, #0xc]
str r5, [sp, #0x14]
ldrb r5, [r0, #7]
lsl r5, r5, #3
strh r5, [r1, #4]
ldrb r5, [r0, #8]
lsl r5, r5, #3
strh r5, [r1, #6]
ldrb r5, [r0, #4]
ldr r1, [r0]
mov r0, #0x2c
mul r0, r5
add r0, r1, r0
ldrb r0, [r0, #0x1e]
add r1, sp, #0x14
cmp r0, #0
ldrh r0, [r4, #0x18]
bne _0201DA56
str r0, [sp]
ldrh r0, [r4, #0x1c]
str r0, [sp, #4]
ldrh r0, [r4, #0x20]
str r0, [sp, #8]
ldrh r0, [r4, #0x24]
str r0, [sp, #0xc]
ldrh r0, [r4, #0x28]
str r0, [sp, #0x10]
add r0, sp, #0x1c
bl BlitBitmapRect4Bit
add sp, #0x24
pop {r4, r5, pc}
_0201DA56:
str r0, [sp]
ldrh r0, [r4, #0x1c]
str r0, [sp, #4]
ldrh r0, [r4, #0x20]
str r0, [sp, #8]
ldrh r0, [r4, #0x24]
str r0, [sp, #0xc]
ldrh r0, [r4, #0x28]
str r0, [sp, #0x10]
add r0, sp, #0x1c
bl sub_0201D048
add sp, #0x24
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201DA04
thumb_func_start FillWindowPixelRect
FillWindowPixelRect: ; 0x0201DA74
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r1, #0
ldr r1, [r0, #0xc]
add r4, r2, #0
str r1, [sp, #8]
ldrb r1, [r0, #7]
add r2, r3, #0
lsl r3, r1, #3
add r1, sp, #8
strh r3, [r1, #4]
ldrb r3, [r0, #8]
lsl r3, r3, #3
strh r3, [r1, #6]
ldrb r3, [r0, #4]
ldr r1, [r0]
mov r0, #0x2c
mul r0, r3
add r0, r1, r0
ldrb r0, [r0, #0x1e]
add r3, sp, #0x10
cmp r0, #0
bne _0201DAB6
ldrh r0, [r3, #0x14]
add r1, r4, #0
str r0, [sp]
str r5, [sp, #4]
ldrh r3, [r3, #0x10]
add r0, sp, #8
bl sub_0201D230
add sp, #0x10
pop {r3, r4, r5, pc}
_0201DAB6:
ldrh r0, [r3, #0x14]
add r1, r4, #0
str r0, [sp]
str r5, [sp, #4]
ldrh r3, [r3, #0x10]
add r0, sp, #8
bl sub_0201D2F4
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end FillWindowPixelRect
thumb_func_start sub_0201DACC
sub_0201DACC: ; 0x0201DACC
push {r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x118
add r5, r0, #0
ldr r0, [sp, #0x330]
str r1, [sp]
str r0, [sp, #0x330]
add r1, sp, #0x318
ldrh r1, [r1, #0x10]
ldr r0, [r5, #0xc]
str r1, [sp, #0x5c]
ldrb r1, [r5, #7]
str r0, [sp, #0x278]
ldrb r0, [r5, #8]
lsl r1, r1, #0x13
lsr r4, r1, #0x10
ldr r1, [sp, #0x5c]
lsl r0, r0, #0x13
sub r1, r4, r1
lsr r0, r0, #0x10
str r4, [sp, #0x58]
str r1, [sp, #8]
cmp r1, r2
blt _0201DAFE
str r2, [sp, #8]
_0201DAFE:
add r1, sp, #0x318
ldrh r1, [r1, #0x14]
sub r0, r0, r1
str r1, [sp, #0x48]
str r0, [sp, #4]
cmp r0, r3
blt _0201DB0E
str r3, [sp, #4]
_0201DB0E:
ldr r0, [sp, #8]
mov r4, #0
cmp r0, #8
ble _0201DB1E
mov r0, #1
orr r0, r4
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_0201DB1E:
ldr r0, [sp, #4]
cmp r0, #8
ble _0201DB2C
mov r0, #2
orr r0, r4
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_0201DB2C:
ldrh r0, [r5, #0xa]
lsl r0, r0, #0x10
lsr r0, r0, #0x1f
beq _0201DB38
bl sub_0201E4AC
_0201DB38:
cmp r4, #3
bls _0201DB40
bl sub_0201EC3C
_0201DB40:
add r0, r4, r4
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201DB4C: ; jump table
.short _0201DB54 - _0201DB4C - 2 ; case 0
.short _0201DC56 - _0201DB4C - 2 ; case 1
.short _0201DE66 - _0201DB4C - 2 ; case 2
.short _0201E086 - _0201DB4C - 2 ; case 3
_0201DB54:
ldr r0, [sp, #0x330]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x70]
mov r0, #0
str r0, [sp, #0x274]
ldr r0, [sp, #4]
cmp r0, #0
bgt _0201DB6A
bl sub_0201EC3C
_0201DB6A:
ldr r0, [sp, #0x58]
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x6c]
_0201DB76:
ldr r0, [sp]
ldr r1, [sp, #0x70]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x26c]
ldr r0, [sp, #0x274]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x270]
ldr r0, [sp, #8]
mov r1, #0
cmp r0, #0
ble _0201DC2A
ble _0201DC2A
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x48]
ldr r6, [sp, #0x6c]
lsl r5, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x48]
str r6, [sp, #0x68]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
ldr r5, [sp, #0x6c]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0x64]
str r0, [sp, #0x60]
_0201DBC8:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201DEE8 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0x68]
str r5, [sp, #0x27c]
add r0, r5, r0
ldr r5, [sp, #0x26c]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201DC1C
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x280]
ldrb r5, [r0, r7]
str r5, [sp, #0x284]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x284]
and r6, r5
ldr r5, [sp, #0x280]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x270]
cmp r0, #0
beq _0201DC1C
ldr r6, [sp, #0x27c]
ldr r0, [sp, #0x64]
add r6, r6, r0
ldr r0, [sp, #0x60]
strb r5, [r0, r6]
_0201DC1C:
ldr r0, [sp, #8]
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, r0
blt _0201DBC8
_0201DC2A:
ldr r0, [sp, #0x270]
cmp r0, #0
beq _0201DC38
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201DC3E
_0201DC38:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201DC3E:
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr r0, [sp, #0x274]
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #0x274]
cmp r1, r0
blt _0201DB76
add sp, #0x1fc
add sp, #0x118
pop {r4, r5, r6, r7, pc}
_0201DC56:
ldr r0, [sp]
str r0, [sp, #0x25c]
ldr r0, [sp, #0x48]
str r0, [sp, #0x264]
ldr r0, [sp, #0x330]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x54]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x84]
mov r0, #0
str r0, [sp, #0x268]
ldr r0, [sp, #4]
cmp r0, #0
ble _0201DD52
ldr r0, [sp, #0x58]
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x80]
_0201DC82:
ldr r0, [sp, #0x25c]
ldr r1, [sp, #0x84]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x258]
ldr r0, [sp, #0x268]
ldr r6, [sp, #0x80]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x260]
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x264]
mov r1, #0
lsl r5, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x264]
str r6, [sp, #0x7c]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
ldr r5, [sp, #0x80]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0x78]
str r0, [sp, #0x74]
_0201DCCC:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201DEE8 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0x7c]
str r5, [sp, #0x288]
add r0, r5, r0
ldr r5, [sp, #0x258]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201DD20
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x28c]
ldrb r5, [r0, r7]
str r5, [sp, #0x290]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x290]
and r6, r5
ldr r5, [sp, #0x28c]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x260]
cmp r0, #0
beq _0201DD20
ldr r6, [sp, #0x288]
ldr r0, [sp, #0x78]
add r6, r6, r0
ldr r0, [sp, #0x74]
strb r5, [r0, r6]
_0201DD20:
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, #8
blt _0201DCCC
ldr r0, [sp, #0x260]
cmp r0, #0
beq _0201DD3A
ldr r0, [sp, #0x264]
add r0, r0, #2
str r0, [sp, #0x264]
b _0201DD40
_0201DD3A:
ldr r0, [sp, #0x264]
add r0, r0, #1
str r0, [sp, #0x264]
_0201DD40:
ldr r0, [sp, #0x25c]
add r0, r0, #4
str r0, [sp, #0x25c]
ldr r0, [sp, #0x268]
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #0x268]
cmp r1, r0
blt _0201DC82
_0201DD52:
ldr r0, [sp]
add r0, #0x20
str r0, [sp]
ldr r0, [sp, #0x54]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x98]
mov r0, #0
str r0, [sp, #0x254]
ldr r0, [sp, #4]
cmp r0, #0
bgt _0201DD6E
bl sub_0201EC3C
_0201DD6E:
ldr r0, [sp, #0x5c]
mov r1, #7
add r0, #8
str r0, [sp, #0x5c]
ldr r0, [sp, #0x58]
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x94]
_0201DD80:
ldr r0, [sp]
ldr r1, [sp, #0x98]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x24c]
ldr r0, [sp, #0x254]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x250]
ldr r0, [sp, #8]
mov r1, #0
str r0, [sp, #0x294]
sub r0, #8
str r0, [sp, #0x294]
cmp r0, #0
ble _0201DE3A
ble _0201DE3A
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x48]
ldr r6, [sp, #0x94]
lsl r5, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x48]
str r6, [sp, #0x90]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
ldr r5, [sp, #0x94]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0x8c]
str r0, [sp, #0x88]
_0201DDD8:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201DEE8 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0x90]
str r5, [sp, #0x298]
add r0, r5, r0
ldr r5, [sp, #0x24c]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201DE2C
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x29c]
ldrb r5, [r0, r7]
str r5, [sp, #0x2a0]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x2a0]
and r6, r5
ldr r5, [sp, #0x29c]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x250]
cmp r0, #0
beq _0201DE2C
ldr r6, [sp, #0x298]
ldr r0, [sp, #0x8c]
add r6, r6, r0
ldr r0, [sp, #0x88]
strb r5, [r0, r6]
_0201DE2C:
ldr r0, [sp, #0x294]
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, r0
blt _0201DDD8
_0201DE3A:
ldr r0, [sp, #0x250]
cmp r0, #0
beq _0201DE48
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201DE4E
_0201DE48:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201DE4E:
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr r0, [sp, #0x254]
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #0x254]
cmp r1, r0
blt _0201DD80
add sp, #0x1fc
add sp, #0x118
pop {r4, r5, r6, r7, pc}
_0201DE66:
ldr r0, [sp]
mov r1, #7
str r0, [sp, #0x23c]
ldr r0, [sp, #0x48]
str r0, [sp, #0x244]
mov r0, #0
str r0, [sp, #0x248]
ldr r0, [sp, #0x330]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xa8]
ldr r0, [sp, #0x58]
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x40]
_0201DE86:
ldr r0, [sp, #0x23c]
ldr r1, [sp, #0xa8]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x238]
ldr r0, [sp, #0x248]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x240]
ldr r0, [sp, #8]
mov r1, #0
cmp r0, #0
ble _0201DF42
ble _0201DF42
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x244]
ldr r6, [sp, #0x40]
lsl r5, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x244]
str r6, [sp, #0xa4]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201DEE8 ; =0x00003FE0
ldr r5, [sp, #0x40]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0xa0]
str r0, [sp, #0x9c]
_0201DED8:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201DEE8 ; =0x00003FE0
b _0201DEEC
nop
_0201DEE8: .word 0x00003FE0
_0201DEEC:
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0xa4]
str r5, [sp, #0x2a4]
add r0, r5, r0
ldr r5, [sp, #0x238]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201DF34
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x2a8]
ldrb r5, [r0, r7]
str r5, [sp, #0x2ac]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x2ac]
and r6, r5
ldr r5, [sp, #0x2a8]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x240]
cmp r0, #0
beq _0201DF34
ldr r6, [sp, #0x2a4]
ldr r0, [sp, #0xa0]
add r6, r6, r0
ldr r0, [sp, #0x9c]
strb r5, [r0, r6]
_0201DF34:
ldr r0, [sp, #8]
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, r0
blt _0201DED8
_0201DF42:
ldr r0, [sp, #0x240]
cmp r0, #0
beq _0201DF50
ldr r0, [sp, #0x244]
add r0, r0, #2
str r0, [sp, #0x244]
b _0201DF56
_0201DF50:
ldr r0, [sp, #0x244]
add r0, r0, #1
str r0, [sp, #0x244]
_0201DF56:
ldr r0, [sp, #0x23c]
add r0, r0, #4
str r0, [sp, #0x23c]
ldr r0, [sp, #0x248]
add r0, r0, #1
str r0, [sp, #0x248]
cmp r0, #8
blt _0201DE86
ldr r0, [sp]
mov r2, #0
add r0, #0x40
str r0, [sp]
ldr r0, [sp, #0x48]
mov r1, #1
add r0, #8
str r0, [sp, #0x48]
_0201DF76:
ldr r0, [sp, #0x330]
asr r0, r2
tst r0, r1
beq _0201DF84
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201DF84:
add r2, r2, #1
cmp r2, #8
blt _0201DF76
ldr r0, [sp, #0x330]
asr r0, r0, #8
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xb8]
mov r0, #0
str r0, [sp, #0x20]
ldr r0, [sp, #4]
sub r0, #8
cmp r0, #0
bgt _0201DFA4
bl sub_0201EC3C
_0201DFA4:
ldr r0, [sp]
ldr r1, [sp, #0xb8]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x230]
ldr r0, [sp, #0x20]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x234]
ldr r0, [sp, #8]
mov r1, #0
cmp r0, #0
ble _0201E058
ble _0201E058
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x48]
ldr r6, [sp, #0x40]
lsl r5, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x48]
str r6, [sp, #0xb4]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
ldr r5, [sp, #0x40]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0xb0]
str r0, [sp, #0xac]
_0201DFF6:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201E308 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0xb4]
str r5, [sp, #0x2b0]
add r0, r5, r0
ldr r5, [sp, #0x230]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201E04A
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x2b4]
ldrb r5, [r0, r7]
str r5, [sp, #0x2b8]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x2b8]
and r6, r5
ldr r5, [sp, #0x2b4]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x234]
cmp r0, #0
beq _0201E04A
ldr r6, [sp, #0x2b0]
ldr r0, [sp, #0xb0]
add r6, r6, r0
ldr r0, [sp, #0xac]
strb r5, [r0, r6]
_0201E04A:
ldr r0, [sp, #8]
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, r0
blt _0201DFF6
_0201E058:
ldr r0, [sp, #0x234]
cmp r0, #0
beq _0201E066
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201E06C
_0201E066:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201E06C:
ldr r0, [sp]
ldr r1, [sp, #4]
add r0, r0, #4
str r0, [sp]
ldr r0, [sp, #0x20]
sub r1, #8
add r0, r0, #1
str r0, [sp, #0x20]
cmp r0, r1
blt _0201DFA4
add sp, #0x1fc
add sp, #0x118
pop {r4, r5, r6, r7, pc}
_0201E086:
ldr r0, [sp]
str r0, [sp, #0x220]
ldr r0, [sp, #0x48]
str r0, [sp, #0x228]
ldr r0, [sp, #0x330]
lsl r0, r0, #0x18
lsr r1, r0, #0x18
mov r0, #0
str r0, [sp, #0x22c]
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x3c]
ldr r0, [sp, #0x58]
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x38]
_0201E0AA:
ldr r0, [sp, #0x220]
ldr r1, [sp, #0x3c]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x21c]
ldr r0, [sp, #0x22c]
ldr r6, [sp, #0x38]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x224]
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x228]
mov r1, #0
lsl r5, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x228]
str r6, [sp, #0xc4]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
ldr r5, [sp, #0x38]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
str r3, [sp, #0x34]
add r4, r1, #0
str r5, [sp, #0xc0]
str r0, [sp, #0xbc]
_0201E0F6:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201E308 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0xc4]
str r5, [sp, #0x2bc]
add r0, r5, r0
ldr r5, [sp, #0x21c]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201E14A
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x2c0]
ldrb r5, [r0, r7]
str r5, [sp, #0x2c4]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x2c4]
and r6, r5
ldr r5, [sp, #0x2c0]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x224]
cmp r0, #0
beq _0201E14A
ldr r6, [sp, #0x2bc]
ldr r0, [sp, #0xc0]
add r6, r6, r0
ldr r0, [sp, #0xbc]
strb r5, [r0, r6]
_0201E14A:
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, #8
blt _0201E0F6
ldr r0, [sp, #0x224]
cmp r0, #0
beq _0201E164
ldr r0, [sp, #0x228]
add r0, r0, #2
str r0, [sp, #0x228]
b _0201E16A
_0201E164:
ldr r0, [sp, #0x228]
add r0, r0, #1
str r0, [sp, #0x228]
_0201E16A:
ldr r0, [sp, #0x220]
add r0, r0, #4
str r0, [sp, #0x220]
ldr r0, [sp, #0x22c]
add r0, r0, #1
str r0, [sp, #0x22c]
cmp r0, #8
blt _0201E0AA
ldr r0, [sp]
str r0, [sp, #0x20c]
add r0, #0x20
str r0, [sp, #0x20c]
ldr r0, [sp, #0x48]
str r0, [sp, #0x214]
mov r0, #0
str r0, [sp, #0x218]
ldr r0, [sp, #0x5c]
str r0, [sp, #0xd4]
add r0, #8
str r0, [sp, #0xd4]
_0201E192:
ldr r0, [sp, #0x20c]
ldr r1, [sp, #0x3c]
ldr r0, [r0]
ldr r2, [sp, #0xd4]
str r0, [sp, #0x208]
ldr r0, [sp, #0x218]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x210]
ldr r0, [sp, #8]
mov r1, #0
str r0, [sp, #0x2c8]
sub r0, #8
str r0, [sp, #0x2c8]
cmp r0, #0
ble _0201E24C
ble _0201E24C
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x214]
ldr r6, [sp, #0x38]
lsl r5, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x214]
str r6, [sp, #0xd0]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
ldr r5, [sp, #0x38]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0xcc]
str r0, [sp, #0xc8]
_0201E1EA:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201E308 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0xd0]
str r5, [sp, #0x2cc]
add r0, r5, r0
ldr r5, [sp, #0x208]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201E23E
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x2d0]
ldrb r5, [r0, r7]
str r5, [sp, #0x2d4]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x2d4]
and r6, r5
ldr r5, [sp, #0x2d0]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x210]
cmp r0, #0
beq _0201E23E
ldr r6, [sp, #0x2cc]
ldr r0, [sp, #0xcc]
add r6, r6, r0
ldr r0, [sp, #0xc8]
strb r5, [r0, r6]
_0201E23E:
ldr r0, [sp, #0x2c8]
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, r0
blt _0201E1EA
_0201E24C:
ldr r0, [sp, #0x210]
cmp r0, #0
beq _0201E25A
ldr r0, [sp, #0x214]
add r0, r0, #2
str r0, [sp, #0x214]
b _0201E260
_0201E25A:
ldr r0, [sp, #0x214]
add r0, r0, #1
str r0, [sp, #0x214]
_0201E260:
ldr r0, [sp, #0x20c]
add r0, r0, #4
str r0, [sp, #0x20c]
ldr r0, [sp, #0x218]
add r0, r0, #1
str r0, [sp, #0x218]
cmp r0, #8
blt _0201E192
ldr r0, [sp]
mov r2, #0
str r0, [sp, #0x1fc]
add r0, #0x40
str r0, [sp, #0x1fc]
ldr r0, [sp, #0x48]
mov r1, #1
add r0, #8
str r0, [sp, #0x48]
str r0, [sp, #0x204]
_0201E284:
ldr r0, [sp, #0x330]
asr r0, r2
tst r0, r1
beq _0201E292
ldr r0, [sp, #0x204]
add r0, r0, #1
str r0, [sp, #0x204]
_0201E292:
add r2, r2, #1
cmp r2, #8
blt _0201E284
ldr r0, [sp, #0x330]
asr r0, r0, #8
str r0, [sp, #0x50]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xe4]
mov r0, #0
str r0, [sp, #0x1c]
ldr r0, [sp, #4]
sub r0, #8
cmp r0, #0
ble _0201E388
_0201E2B0:
ldr r0, [sp, #0x1fc]
ldr r1, [sp, #0xe4]
ldr r0, [r0]
ldr r6, [sp, #0x38]
str r0, [sp, #0x1f8]
ldr r0, [sp, #0x1c]
ldr r2, [sp, #0x5c]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x200]
ldr r0, [sp, #0x204]
mov r1, #0
lsl r5, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x204]
str r6, [sp, #0xe0]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201E308 ; =0x00003FE0
ldr r5, [sp, #0x38]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
ldr r3, [sp, #0x34]
add r4, r1, #0
str r5, [sp, #0xdc]
str r0, [sp, #0xd8]
_0201E2F8:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201E308 ; =0x00003FE0
b _0201E30C
nop
_0201E308: .word 0x00003FE0
_0201E30C:
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0xe0]
str r5, [sp, #0x2d8]
add r0, r5, r0
ldr r5, [sp, #0x1f8]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201E354
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x2dc]
ldrb r5, [r0, r7]
str r5, [sp, #0x2e0]
mov r5, #0xf0
asr r5, r6
ldr r6, [sp, #0x2e0]
and r6, r5
ldr r5, [sp, #0x2dc]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x200]
cmp r0, #0
beq _0201E354
ldr r6, [sp, #0x2d8]
ldr r0, [sp, #0xdc]
add r6, r6, r0
ldr r0, [sp, #0xd8]
strb r5, [r0, r6]
_0201E354:
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, #8
blt _0201E2F8
ldr r0, [sp, #0x200]
cmp r0, #0
beq _0201E36E
ldr r0, [sp, #0x204]
add r0, r0, #2
str r0, [sp, #0x204]
b _0201E374
_0201E36E:
ldr r0, [sp, #0x204]
add r0, r0, #1
str r0, [sp, #0x204]
_0201E374:
ldr r0, [sp, #0x1fc]
ldr r1, [sp, #4]
add r0, r0, #4
str r0, [sp, #0x1fc]
ldr r0, [sp, #0x1c]
sub r1, #8
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, r1
blt _0201E2B0
_0201E388:
ldr r0, [sp]
mov r2, #0
add r0, #0x60
str r0, [sp]
mov r1, #1
_0201E392:
ldr r0, [sp, #0x330]
asr r0, r2
tst r0, r1
beq _0201E3A0
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201E3A0:
add r2, r2, #1
cmp r2, #8
blt _0201E392
ldr r0, [sp, #0x50]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xf4]
mov r0, #0
str r0, [sp, #0x18]
ldr r0, [sp, #4]
sub r0, #8
cmp r0, #0
bgt _0201E3BE
bl sub_0201EC3C
_0201E3BE:
ldr r0, [sp, #0x5c]
add r0, #8
str r0, [sp, #0x5c]
_0201E3C4:
ldr r0, [sp]
ldr r1, [sp, #0xf4]
ldr r0, [r0]
ldr r2, [sp, #0x5c]
str r0, [sp, #0x1f0]
ldr r0, [sp, #0x18]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1f4]
ldr r0, [sp, #8]
mov r1, #0
str r0, [sp, #0x2e4]
sub r0, #8
str r0, [sp, #0x2e4]
cmp r0, #0
ble _0201E47E
ble _0201E47E
add r0, r2, #0
lsl r3, r0, #2
ldr r0, [sp, #0x48]
ldr r6, [sp, #0x38]
lsl r5, r0, #2
ldr r0, _0201E6F0 ; =0x00003FE0
add r7, r5, #0
and r0, r5
mul r6, r0
mov r0, #0x1c
and r7, r0
ldr r0, [sp, #0x48]
str r6, [sp, #0xf0]
add r0, r0, #1
lsl r6, r0, #2
ldr r0, _0201E6F0 ; =0x00003FE0
ldr r5, [sp, #0x38]
and r0, r6
mul r5, r0
mov r0, #0x1c
and r0, r6
add r4, r1, #0
str r5, [sp, #0xec]
str r0, [sp, #0xe8]
_0201E41C:
asr r5, r2, #1
mov r0, #3
and r5, r0
ldr r0, [sp, #0x278]
add r0, r0, r5
ldr r5, _0201E6F0 ; =0x00003FE0
and r5, r3
add r5, r0, r5
ldr r0, [sp, #0xf0]
str r5, [sp, #0x2e8]
add r0, r5, r0
ldr r5, [sp, #0x1f0]
add r6, r5, #0
lsr r6, r4
mov r5, #0xf
and r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
beq _0201E470
lsl r6, r2, #0x1f
lsr r6, r6, #0x1d
lsl r5, r6
str r5, [sp, #0x2ec]
ldrb r5, [r0, r7]
mov ip, r5
mov r5, #0xf0
asr r5, r6
mov r6, ip
and r6, r5
ldr r5, [sp, #0x2ec]
orr r5, r6
lsl r5, r5, #0x18
lsr r5, r5, #0x18
strb r5, [r0, r7]
ldr r0, [sp, #0x1f4]
cmp r0, #0
beq _0201E470
ldr r6, [sp, #0x2e8]
ldr r0, [sp, #0xec]
add r6, r6, r0
ldr r0, [sp, #0xe8]
strb r5, [r0, r6]
_0201E470:
ldr r0, [sp, #0x2e4]
add r1, r1, #1
add r4, r4, #4
add r3, r3, #4
add r2, r2, #1
cmp r1, r0
blt _0201E41C
_0201E47E:
ldr r0, [sp, #0x1f4]
cmp r0, #0
beq _0201E48C
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201E492
_0201E48C:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201E492:
ldr r0, [sp]
ldr r1, [sp, #4]
add r0, r0, #4
str r0, [sp]
ldr r0, [sp, #0x18]
sub r1, #8
add r0, r0, #1
str r0, [sp, #0x18]
cmp r0, r1
blt _0201E3C4
add sp, #0x1fc
add sp, #0x118
pop {r4, r5, r6, r7, pc}
thumb_func_end sub_0201DACC
thumb_func_start sub_0201E4AC
sub_0201E4AC: ; 0x0201E4AC
lsl r1, r2, #2
mul r1, r3
ldr r3, [r5]
ldrb r2, [r5, #9]
ldr r0, [sp]
ldr r3, [r3]
lsl r1, r1, #3
bl sub_0201CBE4
str r0, [sp, #0x1ec]
cmp r4, #3
bhi _0201E59E
add r0, r4, r4
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201E4D0: ; jump table
.short _0201E4D8 - _0201E4D0 - 2 ; case 0
.short _0201E5A0 - _0201E4D0 - 2 ; case 1
.short _0201E74C - _0201E4D0 - 2 ; case 2
.short _0201E8F0 - _0201E4D0 - 2 ; case 3
_0201E4D8:
ldr r0, [sp, #0x330]
ldr r7, [sp, #0x1ec]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10c]
mov r0, #0
str r0, [sp, #0x1e8]
ldr r0, [sp, #4]
cmp r0, #0
ble _0201E59E
ldr r0, [sp, #0x58]
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x108]
_0201E4F8:
ldr r1, [sp, #0x10c]
ldr r0, [sp, #0x1e8]
mov r4, #0
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x310]
ldr r0, [sp, #8]
ldr r5, [sp, #0x5c]
cmp r0, #0
ble _0201E57C
ble _0201E57C
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x108]
lsl r1, r0, #3
ldr r0, _0201E6F4 ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x100]
ldr r0, [sp, #0x48]
str r2, [sp, #0x104]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201E6F4 ; =0x00007FC0
ldr r2, [sp, #0x108]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r2, [sp, #0xfc]
str r0, [sp, #0xf8]
_0201E544:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201E6F4 ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x104]
ldrb r1, [r7, r4]
add r2, r3, r0
cmp r1, #0
beq _0201E570
ldr r0, [sp, #0x100]
strb r1, [r2, r0]
ldr r0, [sp, #0x310]
cmp r0, #0
beq _0201E570
ldr r0, [sp, #0xfc]
add r2, r3, r0
ldr r0, [sp, #0xf8]
strb r1, [r0, r2]
_0201E570:
ldr r0, [sp, #8]
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, r0
blt _0201E544
_0201E57C:
ldr r0, [sp, #0x310]
cmp r0, #0
beq _0201E58A
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201E590
_0201E58A:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201E590:
ldr r0, [sp, #0x1e8]
add r7, #8
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #0x1e8]
cmp r1, r0
blt _0201E4F8
_0201E59E:
b _0201EC36
_0201E5A0:
ldr r0, [sp, #0x48]
ldr r7, [sp, #0x1ec]
str r0, [sp, #0x1e0]
ldr r0, [sp, #0x330]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x4c]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x124]
mov r0, #0
str r0, [sp, #0x1e4]
ldr r0, [sp, #4]
cmp r0, #0
ble _0201E666
ldr r0, [sp, #0x58]
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x120]
_0201E5CA:
ldr r1, [sp, #0x124]
ldr r0, [sp, #0x1e4]
ldr r5, [sp, #0x5c]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x30c]
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x1e0]
ldr r2, [sp, #0x120]
lsl r1, r0, #3
ldr r0, _0201E6F4 ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x118]
ldr r0, [sp, #0x1e0]
str r2, [sp, #0x11c]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201E6F4 ; =0x00007FC0
ldr r2, [sp, #0x120]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
mov r4, #0
str r2, [sp, #0x114]
str r0, [sp, #0x110]
_0201E60E:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201E6F4 ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x11c]
ldrb r1, [r7, r4]
add r2, r3, r0
cmp r1, #0
beq _0201E63A
ldr r0, [sp, #0x118]
strb r1, [r2, r0]
ldr r0, [sp, #0x30c]
cmp r0, #0
beq _0201E63A
ldr r0, [sp, #0x114]
add r2, r3, r0
ldr r0, [sp, #0x110]
strb r1, [r0, r2]
_0201E63A:
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, #8
blt _0201E60E
ldr r0, [sp, #0x30c]
cmp r0, #0
beq _0201E652
ldr r0, [sp, #0x1e0]
add r0, r0, #2
str r0, [sp, #0x1e0]
b _0201E658
_0201E652:
ldr r0, [sp, #0x1e0]
add r0, r0, #1
str r0, [sp, #0x1e0]
_0201E658:
ldr r0, [sp, #0x1e4]
add r7, #8
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #0x1e4]
cmp r1, r0
blt _0201E5CA
_0201E666:
ldr r0, [sp, #0x1ec]
str r0, [sp, #0x308]
add r0, #0x40
str r0, [sp, #0x308]
ldr r0, [sp, #0x4c]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x13c]
mov r0, #0
str r0, [sp, #0x1dc]
ldr r0, [sp, #4]
cmp r0, #0
ble _0201E74A
ldr r0, [sp, #0x5c]
mov r1, #7
add r0, #8
str r0, [sp, #0x5c]
ldr r0, [sp, #0x58]
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x138]
_0201E692:
ldr r1, [sp, #0x13c]
ldr r0, [sp, #0x1dc]
ldr r7, [sp, #8]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
sub r7, #8
mov r4, #0
str r0, [sp, #0x1d8]
ldr r5, [sp, #0x5c]
cmp r7, #0
ble _0201E724
ble _0201E724
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x138]
lsl r1, r0, #3
ldr r0, _0201E6F4 ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x130]
ldr r0, [sp, #0x48]
str r2, [sp, #0x134]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201E6F4 ; =0x00007FC0
ldr r2, [sp, #0x138]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r2, [sp, #0x12c]
str r0, [sp, #0x128]
_0201E6E0:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201E6F4 ; =0x00007FC0
b _0201E6F8
nop
_0201E6F0: .word 0x00003FE0
_0201E6F4: .word 0x00007FC0
_0201E6F8:
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x134]
add r2, r3, r0
ldr r0, [sp, #0x308]
ldrb r1, [r0, r4]
cmp r1, #0
beq _0201E71A
ldr r0, [sp, #0x130]
strb r1, [r2, r0]
ldr r0, [sp, #0x1d8]
cmp r0, #0
beq _0201E71A
ldr r0, [sp, #0x12c]
add r2, r3, r0
ldr r0, [sp, #0x128]
strb r1, [r0, r2]
_0201E71A:
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, r7
blt _0201E6E0
_0201E724:
ldr r0, [sp, #0x1d8]
cmp r0, #0
beq _0201E732
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201E738
_0201E732:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201E738:
ldr r0, [sp, #0x308]
add r0, #8
str r0, [sp, #0x308]
ldr r0, [sp, #0x1dc]
add r1, r0, #1
ldr r0, [sp, #4]
str r1, [sp, #0x1dc]
cmp r1, r0
blt _0201E692
_0201E74A:
b _0201EC36
_0201E74C:
ldr r0, [sp, #0x48]
mov r1, #7
str r0, [sp, #0x1d0]
mov r0, #0
str r0, [sp, #0x1d4]
ldr r0, [sp, #0x330]
ldr r7, [sp, #0x1ec]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x150]
ldr r0, [sp, #0x58]
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x30]
_0201E76A:
ldr r1, [sp, #0x150]
ldr r0, [sp, #0x1d4]
mov r4, #0
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x304]
ldr r0, [sp, #8]
ldr r5, [sp, #0x5c]
cmp r0, #0
ble _0201E7EE
ble _0201E7EE
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x1d0]
ldr r2, [sp, #0x30]
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x148]
ldr r0, [sp, #0x1d0]
str r2, [sp, #0x14c]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
ldr r2, [sp, #0x30]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r2, [sp, #0x144]
str r0, [sp, #0x140]
_0201E7B6:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201EA5C ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x14c]
ldrb r1, [r7, r4]
add r2, r3, r0
cmp r1, #0
beq _0201E7E2
ldr r0, [sp, #0x148]
strb r1, [r2, r0]
ldr r0, [sp, #0x304]
cmp r0, #0
beq _0201E7E2
ldr r0, [sp, #0x144]
add r2, r3, r0
ldr r0, [sp, #0x140]
strb r1, [r0, r2]
_0201E7E2:
ldr r0, [sp, #8]
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, r0
blt _0201E7B6
_0201E7EE:
ldr r0, [sp, #0x304]
cmp r0, #0
beq _0201E7FC
ldr r0, [sp, #0x1d0]
add r0, r0, #2
str r0, [sp, #0x1d0]
b _0201E802
_0201E7FC:
ldr r0, [sp, #0x1d0]
add r0, r0, #1
str r0, [sp, #0x1d0]
_0201E802:
ldr r0, [sp, #0x1d4]
add r7, #8
add r0, r0, #1
str r0, [sp, #0x1d4]
cmp r0, #8
blt _0201E76A
ldr r0, [sp, #0x48]
ldr r7, [sp, #0x1ec]
add r0, #8
str r0, [sp, #0x48]
add r7, #0x80
mov r0, #0
mov r2, #1
_0201E81C:
ldr r1, [sp, #0x330]
asr r1, r0
tst r1, r2
beq _0201E82A
ldr r1, [sp, #0x48]
add r1, r1, #1
str r1, [sp, #0x48]
_0201E82A:
add r0, r0, #1
cmp r0, #8
blt _0201E81C
ldr r0, [sp, #0x330]
asr r0, r0, #8
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x164]
mov r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #4]
sub r0, #8
cmp r0, #0
ble _0201E8EE
_0201E846:
ldr r1, [sp, #0x164]
ldr r0, [sp, #0x14]
mov r4, #0
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x300]
ldr r0, [sp, #8]
ldr r5, [sp, #0x5c]
cmp r0, #0
ble _0201E8CA
ble _0201E8CA
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x30]
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x15c]
ldr r0, [sp, #0x48]
str r2, [sp, #0x160]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
ldr r2, [sp, #0x30]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r2, [sp, #0x158]
str r0, [sp, #0x154]
_0201E892:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201EA5C ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x160]
ldrb r1, [r7, r4]
add r2, r3, r0
cmp r1, #0
beq _0201E8BE
ldr r0, [sp, #0x15c]
strb r1, [r2, r0]
ldr r0, [sp, #0x300]
cmp r0, #0
beq _0201E8BE
ldr r0, [sp, #0x158]
add r2, r3, r0
ldr r0, [sp, #0x154]
strb r1, [r0, r2]
_0201E8BE:
ldr r0, [sp, #8]
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, r0
blt _0201E892
_0201E8CA:
ldr r0, [sp, #0x300]
cmp r0, #0
beq _0201E8D8
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201E8DE
_0201E8D8:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201E8DE:
ldr r0, [sp, #0x14]
ldr r1, [sp, #4]
add r0, r0, #1
sub r1, #8
add r7, #8
str r0, [sp, #0x14]
cmp r0, r1
blt _0201E846
_0201E8EE:
b _0201EC36
_0201E8F0:
ldr r0, [sp, #0x48]
ldr r7, [sp, #0x1ec]
str r0, [sp, #0x1c8]
ldr r0, [sp, #0x330]
lsl r0, r0, #0x18
lsr r1, r0, #0x18
mov r0, #0
str r0, [sp, #0x1cc]
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x2c]
ldr r0, [sp, #0x58]
mov r1, #7
and r1, r0
add r0, r0, r1
asr r0, r0, #3
str r0, [sp, #0x28]
_0201E912:
ldr r1, [sp, #0x2c]
ldr r0, [sp, #0x1cc]
ldr r5, [sp, #0x5c]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x2fc]
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x1c8]
ldr r2, [sp, #0x28]
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x170]
ldr r0, [sp, #0x1c8]
str r2, [sp, #0x174]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
ldr r2, [sp, #0x28]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
mov r4, #0
str r6, [sp, #0x24]
str r2, [sp, #0x16c]
str r0, [sp, #0x168]
_0201E958:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201EA5C ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x174]
ldrb r1, [r7, r4]
add r2, r3, r0
cmp r1, #0
beq _0201E984
ldr r0, [sp, #0x170]
strb r1, [r2, r0]
ldr r0, [sp, #0x2fc]
cmp r0, #0
beq _0201E984
ldr r0, [sp, #0x16c]
add r2, r3, r0
ldr r0, [sp, #0x168]
strb r1, [r0, r2]
_0201E984:
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, #8
blt _0201E958
ldr r0, [sp, #0x2fc]
cmp r0, #0
beq _0201E99C
ldr r0, [sp, #0x1c8]
add r0, r0, #2
str r0, [sp, #0x1c8]
b _0201E9A2
_0201E99C:
ldr r0, [sp, #0x1c8]
add r0, r0, #1
str r0, [sp, #0x1c8]
_0201E9A2:
ldr r0, [sp, #0x1cc]
add r7, #8
add r0, r0, #1
str r0, [sp, #0x1cc]
cmp r0, #8
blt _0201E912
ldr r0, [sp, #0x1ec]
str r0, [sp, #0x2f8]
add r0, #0x40
str r0, [sp, #0x2f8]
ldr r0, [sp, #0x48]
str r0, [sp, #0x1c0]
mov r0, #0
str r0, [sp, #0x1c4]
ldr r0, [sp, #0x5c]
str r0, [sp, #0x188]
add r0, #8
str r0, [sp, #0x188]
_0201E9C6:
ldr r1, [sp, #0x2c]
ldr r0, [sp, #0x1c4]
ldr r7, [sp, #8]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
sub r7, #8
mov r4, #0
str r0, [sp, #0x1bc]
ldr r5, [sp, #0x188]
cmp r7, #0
ble _0201EA4C
ble _0201EA4C
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x1c0]
ldr r2, [sp, #0x28]
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x180]
ldr r0, [sp, #0x1c0]
str r2, [sp, #0x184]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201EA5C ; =0x00007FC0
ldr r2, [sp, #0x28]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r2, [sp, #0x17c]
str r0, [sp, #0x178]
_0201EA14:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201EA5C ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x184]
add r2, r3, r0
ldr r0, [sp, #0x2f8]
ldrb r1, [r0, r4]
cmp r1, #0
beq _0201EA42
ldr r0, [sp, #0x180]
strb r1, [r2, r0]
ldr r0, [sp, #0x1bc]
cmp r0, #0
beq _0201EA42
ldr r0, [sp, #0x17c]
add r2, r3, r0
ldr r0, [sp, #0x178]
strb r1, [r0, r2]
_0201EA42:
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, r7
blt _0201EA14
_0201EA4C:
ldr r0, [sp, #0x1bc]
cmp r0, #0
beq _0201EA60
ldr r0, [sp, #0x1c0]
add r0, r0, #2
str r0, [sp, #0x1c0]
b _0201EA66
nop
_0201EA5C: .word 0x00007FC0
_0201EA60:
ldr r0, [sp, #0x1c0]
add r0, r0, #1
str r0, [sp, #0x1c0]
_0201EA66:
ldr r0, [sp, #0x2f8]
add r0, #8
str r0, [sp, #0x2f8]
ldr r0, [sp, #0x1c4]
add r0, r0, #1
str r0, [sp, #0x1c4]
cmp r0, #8
blt _0201E9C6
ldr r0, [sp, #0x48]
ldr r7, [sp, #0x1ec]
add r0, #8
add r7, #0x80
str r0, [sp, #0x48]
str r0, [sp, #0x1b8]
mov r0, #0
mov r2, #1
_0201EA86:
ldr r1, [sp, #0x330]
asr r1, r0
tst r1, r2
beq _0201EA94
ldr r1, [sp, #0x1b8]
add r1, r1, #1
str r1, [sp, #0x1b8]
_0201EA94:
add r0, r0, #1
cmp r0, #8
blt _0201EA86
ldr r0, [sp, #0x330]
asr r0, r0, #8
str r0, [sp, #0x44]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x19c]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #4]
sub r0, #8
cmp r0, #0
ble _0201EB4E
_0201EAB2:
ldr r1, [sp, #0x19c]
ldr r0, [sp, #0x10]
ldr r2, [sp, #0x28]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x2f4]
ldr r0, [sp, #0x1b8]
mov r3, #0x38
lsl r1, r0, #3
ldr r0, _0201EC44 ; =0x00007FC0
ldr r5, [sp, #0x5c]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x194]
ldr r0, [sp, #0x1b8]
str r2, [sp, #0x198]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201EC44 ; =0x00007FC0
ldr r2, [sp, #0x28]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
ldr r6, [sp, #0x24]
mov r4, #0
str r2, [sp, #0x190]
str r0, [sp, #0x18c]
_0201EAF4:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201EC44 ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x198]
ldrb r1, [r7, r4]
add r2, r3, r0
cmp r1, #0
beq _0201EB20
ldr r0, [sp, #0x194]
strb r1, [r2, r0]
ldr r0, [sp, #0x2f4]
cmp r0, #0
beq _0201EB20
ldr r0, [sp, #0x190]
add r2, r3, r0
ldr r0, [sp, #0x18c]
strb r1, [r0, r2]
_0201EB20:
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, #8
blt _0201EAF4
ldr r0, [sp, #0x2f4]
cmp r0, #0
beq _0201EB38
ldr r0, [sp, #0x1b8]
add r0, r0, #2
str r0, [sp, #0x1b8]
b _0201EB3E
_0201EB38:
ldr r0, [sp, #0x1b8]
add r0, r0, #1
str r0, [sp, #0x1b8]
_0201EB3E:
ldr r0, [sp, #0x10]
ldr r1, [sp, #4]
add r0, r0, #1
sub r1, #8
add r7, #8
str r0, [sp, #0x10]
cmp r0, r1
blt _0201EAB2
_0201EB4E:
ldr r0, [sp, #0x1ec]
mov r2, #0
str r0, [sp, #0x2f0]
add r0, #0xc0
str r0, [sp, #0x2f0]
mov r1, #1
_0201EB5A:
ldr r0, [sp, #0x330]
asr r0, r2
tst r0, r1
beq _0201EB68
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201EB68:
add r2, r2, #1
cmp r2, #8
blt _0201EB5A
ldr r0, [sp, #0x44]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1b0]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #4]
sub r0, #8
cmp r0, #0
ble _0201EC36
ldr r0, [sp, #0x5c]
add r0, #8
str r0, [sp, #0x5c]
_0201EB88:
ldr r1, [sp, #0x1b0]
ldr r0, [sp, #0xc]
ldr r7, [sp, #8]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
sub r7, #8
mov r4, #0
str r0, [sp, #0x1b4]
ldr r5, [sp, #0x5c]
cmp r7, #0
ble _0201EC0E
ble _0201EC0E
add r0, r5, #0
lsl r6, r0, #3
ldr r0, [sp, #0x48]
ldr r2, [sp, #0x28]
lsl r1, r0, #3
ldr r0, _0201EC44 ; =0x00007FC0
mov r3, #0x38
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r0, [sp, #0x1a8]
ldr r0, [sp, #0x48]
str r2, [sp, #0x1ac]
add r0, r0, #1
lsl r1, r0, #3
ldr r0, _0201EC44 ; =0x00007FC0
ldr r2, [sp, #0x28]
and r0, r1
mul r2, r0
add r0, r1, #0
and r0, r3
str r2, [sp, #0x1a4]
str r0, [sp, #0x1a0]
_0201EBD6:
mov r0, #7
add r1, r5, #0
and r1, r0
ldr r0, [sp, #0x278]
add r1, r0, r1
ldr r0, _0201EC44 ; =0x00007FC0
and r0, r6
add r3, r1, r0
ldr r0, [sp, #0x1ac]
add r2, r3, r0
ldr r0, [sp, #0x2f0]
ldrb r1, [r0, r4]
cmp r1, #0
beq _0201EC04
ldr r0, [sp, #0x1a8]
strb r1, [r2, r0]
ldr r0, [sp, #0x1b4]
cmp r0, #0
beq _0201EC04
ldr r0, [sp, #0x1a4]
add r2, r3, r0
ldr r0, [sp, #0x1a0]
strb r1, [r0, r2]
_0201EC04:
add r4, r4, #1
add r6, #8
add r5, r5, #1
cmp r4, r7
blt _0201EBD6
_0201EC0E:
ldr r0, [sp, #0x1b4]
cmp r0, #0
beq _0201EC1C
ldr r0, [sp, #0x48]
add r0, r0, #2
str r0, [sp, #0x48]
b _0201EC22
_0201EC1C:
ldr r0, [sp, #0x48]
add r0, r0, #1
str r0, [sp, #0x48]
_0201EC22:
ldr r0, [sp, #0x2f0]
ldr r1, [sp, #4]
add r0, #8
str r0, [sp, #0x2f0]
ldr r0, [sp, #0xc]
sub r1, #8
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, r1
blt _0201EB88
_0201EC36:
ldr r0, [sp, #0x1ec]
bl FreeToHeap
thumb_func_end sub_0201E4AC
thumb_func_start sub_0201EC3C
sub_0201EC3C: ; 0x0201EC3C
add sp, #0x1fc
add sp, #0x118
pop {r4, r5, r6, r7, pc}
nop
_0201EC44: .word 0x00007FC0
thumb_func_end sub_0201EC3C
thumb_func_start ScrollWindow
ScrollWindow: ; 0x0201EC48
push {r4, r5, r6, lr}
ldrb r6, [r0, #4]
mov r5, #0x2c
ldr r4, [r0]
mul r5, r6
add r4, r4, r5
ldrb r4, [r4, #0x1e]
cmp r4, #0
bne _0201EC60
bl sub_0201EC68
pop {r4, r5, r6, pc}
_0201EC60:
bl sub_0201ED54
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ScrollWindow
thumb_func_start sub_0201EC68
sub_0201EC68: ; 0x0201EC68
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r3, #0
add r4, r0, #0
add r0, r1, #0
lsl r3, r6, #0x18
lsl r1, r6, #0x10
str r2, [sp]
orr r1, r3
lsl r5, r6, #8
orr r1, r5
orr r1, r6
str r1, [sp, #4]
ldrb r1, [r4, #7]
ldrb r3, [r4, #8]
ldr r2, [r4, #0xc]
str r1, [sp, #8]
mul r1, r3
lsl r1, r1, #5
str r1, [sp, #0xc]
cmp r0, #3
bhi _0201ED4E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0201ECA0: ; jump table
.short _0201ECA8 - _0201ECA0 - 2 ; case 0
.short _0201ECF6 - _0201ECA0 - 2 ; case 1
.short _0201ED4E - _0201ECA0 - 2 ; case 2
.short _0201ED4E - _0201ECA0 - 2 ; case 3
_0201ECA8:
add r0, r1, #0
mov r7, #0
cmp r0, #0
ble _0201ED4E
mov r0, #7
mov lr, r0
_0201ECB4:
ldr r3, [sp]
mov r4, #0
add r5, r7, #0
_0201ECBA:
mov r0, #7
add r6, r3, #0
and r6, r0
add r1, r3, #0
mov r0, lr
bic r1, r0
ldr r0, [sp, #8]
mul r1, r0
add r0, r6, #0
orr r0, r1
lsl r0, r0, #2
add r1, r7, r0
ldr r0, [sp, #0xc]
cmp r1, r0
bge _0201ECDC
ldr r0, [r2, r1]
b _0201ECDE
_0201ECDC:
ldr r0, [sp, #4]
_0201ECDE:
add r4, r4, #1
str r0, [r2, r5]
add r3, r3, #1
add r5, r5, #4
cmp r4, #8
blt _0201ECBA
ldr r0, [sp, #0xc]
add r7, #0x20
cmp r7, r0
blt _0201ECB4
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_0201ECF6:
add r0, r1, #0
sub r0, r0, #4
add r2, r2, r0
add r0, r1, #0
mov r7, #0
cmp r0, #0
ble _0201ED4E
mov r0, #7
mov ip, r0
_0201ED08:
ldr r4, [sp]
mov r5, #0
add r3, r7, #0
_0201ED0E:
mov r0, #7
add r6, r4, #0
and r6, r0
add r1, r4, #0
mov r0, ip
bic r1, r0
ldr r0, [sp, #8]
mul r1, r0
add r0, r6, #0
orr r0, r1
lsl r0, r0, #2
add r1, r7, r0
ldr r0, [sp, #0xc]
cmp r1, r0
bge _0201ED36
sub r0, r2, r1
ldr r1, [r0]
sub r0, r2, r3
str r1, [r0]
b _0201ED3C
_0201ED36:
ldr r0, [sp, #4]
sub r1, r2, r3
str r0, [r1]
_0201ED3C:
add r5, r5, #1
add r4, r4, #1
add r3, r3, #4
cmp r5, #8
blt _0201ED0E
ldr r0, [sp, #0xc]
add r7, #0x20
cmp r7, r0
blt _0201ED08
_0201ED4E:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201EC68
thumb_func_start sub_0201ED54
sub_0201ED54: ; 0x0201ED54
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r3, #0
add r4, r0, #0
str r2, [sp]
lsl r2, r6, #0x18
lsl r0, r6, #0x10
orr r0, r2
ldrb r2, [r4, #7]
ldr r3, [r4, #0xc]
lsl r5, r6, #8
orr r0, r5
ldrb r4, [r4, #8]
str r2, [sp, #0x10]
orr r0, r6
mul r2, r4
lsl r2, r2, #6
str r2, [sp, #0x1c]
cmp r1, #3
bls _0201ED7E
b _0201EE84
_0201ED7E:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0201ED8A: ; jump table
.short _0201ED92 - _0201ED8A - 2 ; case 0
.short _0201EE00 - _0201ED8A - 2 ; case 1
.short _0201EE84 - _0201ED8A - 2 ; case 2
.short _0201EE84 - _0201ED8A - 2 ; case 3
_0201ED92:
mov r1, #0
str r1, [sp, #0xc]
add r1, r2, #0
cmp r1, #0
ble _0201EE84
add r1, r1, #4
str r1, [sp, #0x14]
mov r1, #7
mov lr, r1
_0201EDA4:
ldr r4, [sp]
ldr r5, [sp, #0xc]
mov r7, #0
_0201EDAA:
mov r1, #7
add r6, r4, #0
and r6, r1
add r2, r4, #0
mov r1, lr
bic r2, r1
ldr r1, [sp, #0x10]
mul r2, r1
add r1, r6, #0
orr r1, r2
lsl r2, r1, #3
ldr r1, [sp, #0xc]
add r1, r1, r2
ldr r2, [sp, #0x1c]
cmp r1, r2
bge _0201EDD0
ldr r2, [r3, r1]
str r2, [r3, r5]
b _0201EDD2
_0201EDD0:
str r0, [r3, r5]
_0201EDD2:
add r2, r1, #4
ldr r1, [sp, #0x14]
cmp r2, r1
bge _0201EDE2
ldr r2, [r3, r2]
add r1, r5, #4
str r2, [r3, r1]
b _0201EDE6
_0201EDE2:
add r1, r5, #4
str r0, [r3, r1]
_0201EDE6:
add r7, r7, #1
add r4, r4, #1
add r5, #8
cmp r7, #8
blt _0201EDAA
ldr r2, [sp, #0xc]
ldr r1, [sp, #0x1c]
add r2, #0x40
str r2, [sp, #0xc]
cmp r2, r1
blt _0201EDA4
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
_0201EE00:
add r1, r2, #0
sub r1, #8
add r3, r3, r1
mov r1, #0
str r1, [sp, #8]
add r1, r2, #0
cmp r1, #0
ble _0201EE84
_0201EE10:
mov r1, #0
str r1, [sp, #4]
ldr r1, [sp, #0x1c]
ldr r5, [sp]
sub r1, r1, #4
str r1, [sp, #0x18]
mov r1, #7
ldr r4, [sp, #8]
mov ip, r1
_0201EE22:
mov r1, #7
add r6, r5, #0
and r6, r1
add r2, r5, #0
mov r1, ip
bic r2, r1
ldr r1, [sp, #0x10]
mul r2, r1
add r1, r6, #0
orr r1, r2
lsl r2, r1, #3
ldr r1, [sp, #8]
add r6, r1, r2
ldr r1, [sp, #0x1c]
cmp r6, r1
bge _0201EE4C
sub r1, r3, r6
ldr r2, [r1]
sub r1, r3, r4
str r2, [r1]
b _0201EE50
_0201EE4C:
sub r1, r3, r4
str r0, [r1]
_0201EE50:
ldr r1, [sp, #0x18]
sub r2, r6, #4
cmp r2, r1
bge _0201EE64
sub r1, r3, r2
sub r2, r4, #4
ldr r1, [r1]
sub r2, r3, r2
str r1, [r2]
b _0201EE6A
_0201EE64:
sub r1, r4, #4
sub r1, r3, r1
str r0, [r1]
_0201EE6A:
ldr r1, [sp, #4]
add r5, r5, #1
add r1, r1, #1
add r4, #8
str r1, [sp, #4]
cmp r1, #8
blt _0201EE22
ldr r2, [sp, #8]
ldr r1, [sp, #0x1c]
add r2, #0x40
str r2, [sp, #8]
cmp r2, r1
blt _0201EE10
_0201EE84:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0201ED54
thumb_func_start sub_0201EE88
sub_0201EE88: ; 0x0201EE88
ldr r0, [r0]
bx lr
thumb_func_end sub_0201EE88
thumb_func_start GetWindowBgId
GetWindowBgId: ; 0x0201EE8C
ldrb r0, [r0, #4]
bx lr
thumb_func_end GetWindowBgId
thumb_func_start GetWindowWidth
GetWindowWidth: ; 0x0201EE90
ldrb r0, [r0, #7]
bx lr
thumb_func_end GetWindowWidth
thumb_func_start GetWindowHeight
GetWindowHeight: ; 0x0201EE94
ldrb r0, [r0, #8]
bx lr
thumb_func_end GetWindowHeight
thumb_func_start GetWindowX
GetWindowX: ; 0x0201EE98
ldrb r0, [r0, #5]
bx lr
thumb_func_end GetWindowX
thumb_func_start GetWindowY
GetWindowY: ; 0x0201EE9C
ldrb r0, [r0, #6]
bx lr
thumb_func_end GetWindowY
thumb_func_start sub_0201EEA0
sub_0201EEA0: ; 0x0201EEA0
ldrh r0, [r0, #0xa]
lsl r0, r0, #0x11
lsr r0, r0, #0x11
bx lr
thumb_func_end sub_0201EEA0
thumb_func_start sub_0201EEA8
sub_0201EEA8: ; 0x0201EEA8
strb r1, [r0, #5]
bx lr
thumb_func_end sub_0201EEA8
thumb_func_start sub_0201EEAC
sub_0201EEAC: ; 0x0201EEAC
strb r1, [r0, #6]
bx lr
thumb_func_end sub_0201EEAC
thumb_func_start sub_0201EEB0
sub_0201EEB0: ; 0x0201EEB0
strb r1, [r0, #9]
bx lr
thumb_func_end sub_0201EEB0
thumb_func_start sub_0201EEB4
sub_0201EEB4: ; 0x0201EEB4
push {r4, lr}
add r4, r0, #0
bl sub_0201EFCC
add r0, r4, #0
bl sub_0201EECC
mov r0, #0
strh r0, [r4, #4]
strh r0, [r4, #6]
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0201EEB4
thumb_func_start sub_0201EECC
sub_0201EECC: ; 0x0201EECC
push {r4, lr}
add r4, r0, #0
ldrh r1, [r4, #6]
mov r0, #1
tst r0, r1
beq _0201EEE6
ldr r2, [r4, #0x10]
ldr r1, [r4, #8]
ldr r3, [r4, #0xc]
mov r0, #0
lsl r2, r2, #1
bl sub_0201C014
_0201EEE6:
ldrh r1, [r4, #6]
mov r0, #2
tst r0, r1
beq _0201EEFC
ldr r2, [r4, #0x3c]
ldr r1, [r4, #0x34]
ldr r3, [r4, #0x38]
mov r0, #1
lsl r2, r2, #1
bl sub_0201C014
_0201EEFC:
ldrh r1, [r4, #6]
mov r0, #4
tst r0, r1
beq _0201EF12
ldr r2, [r4, #0x68]
ldr r1, [r4, #0x60]
ldr r3, [r4, #0x64]
mov r0, #2
lsl r2, r2, #1
bl sub_0201C014
_0201EF12:
ldrh r1, [r4, #6]
mov r0, #8
tst r0, r1
beq _0201EF34
add r2, r4, #0
add r1, r4, #0
add r2, #0x94
add r3, r4, #0
add r1, #0x8c
ldr r2, [r2]
add r3, #0x90
ldr r1, [r1]
ldr r3, [r3]
mov r0, #3
lsl r2, r2, #1
bl sub_0201C014
_0201EF34:
ldrh r1, [r4, #6]
mov r0, #0x10
tst r0, r1
beq _0201EF56
add r2, r4, #0
add r1, r4, #0
add r2, #0xc0
add r3, r4, #0
add r1, #0xb8
ldr r2, [r2]
add r3, #0xbc
ldr r1, [r1]
ldr r3, [r3]
mov r0, #4
lsl r2, r2, #1
bl sub_0201C014
_0201EF56:
ldrh r1, [r4, #6]
mov r0, #0x20
tst r0, r1
beq _0201EF78
add r2, r4, #0
add r1, r4, #0
add r2, #0xec
add r3, r4, #0
add r1, #0xe4
ldr r2, [r2]
add r3, #0xe8
ldr r1, [r1]
ldr r3, [r3]
mov r0, #5
lsl r2, r2, #1
bl sub_0201C014
_0201EF78:
ldrh r0, [r4, #6]
mov r3, #0x40
tst r0, r3
beq _0201EF98
add r2, r3, #0
add r1, r3, #0
add r2, #0xd8
add r1, #0xd0
ldr r2, [r4, r2]
add r3, #0xd4
ldr r1, [r4, r1]
ldr r3, [r4, r3]
mov r0, #6
lsl r2, r2, #1
bl sub_0201C014
_0201EF98:
ldrh r0, [r4, #6]
mov r3, #0x80
tst r0, r3
beq _0201EFB8
add r2, r3, #0
add r1, r3, #0
add r2, #0xc4
add r1, #0xbc
ldr r2, [r4, r2]
add r3, #0xc0
ldr r1, [r4, r1]
ldr r3, [r4, r3]
mov r0, #7
lsl r2, r2, #1
bl sub_0201C014
_0201EFB8:
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0201EECC
thumb_func_start ScheduleBgTilemapBufferTransfer
ScheduleBgTilemapBufferTransfer: ; 0x0201EFBC
ldrh r3, [r0, #6]
mov r2, #1
lsl r2, r1
add r1, r3, #0
orr r1, r2
strh r1, [r0, #6]
bx lr
.balign 4, 0
thumb_func_end ScheduleBgTilemapBufferTransfer
thumb_func_start sub_0201EFCC
sub_0201EFCC: ; 0x0201EFCC
push {r4, lr}
sub sp, #0x48
add r4, r0, #0
ldrh r1, [r4, #4]
mov r0, #1
tst r0, r1
beq _0201EFF2
ldr r1, [r4, #0x14]
ldr r0, _0201F204 ; =0x000001FF
add r2, r1, #0
ldr r1, [r4, #0x18]
and r2, r0
lsl r1, r1, #0x10
lsl r0, r0, #0x10
and r0, r1
add r1, r2, #0
orr r1, r0
ldr r0, _0201F208 ; =0x04000010
str r1, [r0]
_0201EFF2:
ldrh r1, [r4, #4]
mov r0, #2
tst r0, r1
beq _0201F012
ldr r1, [r4, #0x40]
ldr r0, _0201F204 ; =0x000001FF
add r2, r1, #0
ldr r1, [r4, #0x44]
and r2, r0
lsl r1, r1, #0x10
lsl r0, r0, #0x10
and r0, r1
add r1, r2, #0
orr r1, r0
ldr r0, _0201F20C ; =0x04000014
str r1, [r0]
_0201F012:
ldrh r1, [r4, #4]
mov r0, #4
tst r0, r1
beq _0201F072
add r0, r4, #0
add r0, #0x74
ldrb r0, [r0]
cmp r0, #0
bne _0201F03E
ldr r1, [r4, #0x6c]
ldr r0, _0201F204 ; =0x000001FF
add r2, r1, #0
ldr r1, [r4, #0x70]
and r2, r0
lsl r1, r1, #0x10
lsl r0, r0, #0x10
and r0, r1
add r1, r2, #0
orr r1, r0
ldr r0, _0201F210 ; =0x04000018
str r1, [r0]
b _0201F072
_0201F03E:
mov r0, #2
str r0, [sp]
add r1, r4, #0
add r1, #0x78
add r3, r4, #0
add r3, #0x80
ldrh r1, [r1]
ldr r2, [r4, #0x7c]
ldr r3, [r3]
add r0, sp, #0x38
bl sub_0201FECC
ldr r0, [r4, #0x6c]
add r2, r4, #0
str r0, [sp]
ldr r0, [r4, #0x70]
add r3, r4, #0
str r0, [sp, #4]
add r2, #0x84
add r3, #0x88
ldr r0, _0201F214 ; =0x04000020
ldr r2, [r2]
ldr r3, [r3]
add r1, sp, #0x38
bl sub_020CF0AC
_0201F072:
ldrh r1, [r4, #4]
mov r0, #8
tst r0, r1
beq _0201F0E2
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
cmp r0, #0
bne _0201F0A2
add r0, r4, #0
add r2, r4, #0
add r0, #0x98
add r2, #0x9c
ldr r2, [r2]
ldr r0, [r0]
ldr r1, _0201F204 ; =0x000001FF
lsl r2, r2, #0x10
and r0, r1
lsl r1, r1, #0x10
and r1, r2
orr r1, r0
ldr r0, _0201F218 ; =0x0400001C
str r1, [r0]
b _0201F0E2
_0201F0A2:
mov r0, #2
add r1, r4, #0
str r0, [sp]
add r1, #0xa4
add r2, r4, #0
add r3, r4, #0
add r2, #0xa8
add r3, #0xac
ldrh r1, [r1]
ldr r2, [r2]
ldr r3, [r3]
add r0, sp, #0x28
bl sub_0201FECC
add r0, r4, #0
add r0, #0x98
ldr r0, [r0]
add r2, r4, #0
str r0, [sp]
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
add r3, r4, #0
str r0, [sp, #4]
add r2, #0xb0
add r3, #0xb4
ldr r0, _0201F21C ; =0x04000030
ldr r2, [r2]
ldr r3, [r3]
add r1, sp, #0x28
bl sub_020CF0AC
_0201F0E2:
ldrh r1, [r4, #4]
mov r0, #0x10
tst r0, r1
beq _0201F106
add r0, r4, #0
add r2, r4, #0
add r0, #0xc4
add r2, #0xc8
ldr r2, [r2]
ldr r0, [r0]
ldr r1, _0201F204 ; =0x000001FF
lsl r2, r2, #0x10
and r0, r1
lsl r1, r1, #0x10
and r1, r2
orr r1, r0
ldr r0, _0201F220 ; =0x04001010
str r1, [r0]
_0201F106:
ldrh r1, [r4, #4]
mov r0, #0x20
tst r0, r1
beq _0201F12A
add r0, r4, #0
add r2, r4, #0
add r0, #0xf0
add r2, #0xf4
ldr r2, [r2]
ldr r0, [r0]
ldr r1, _0201F204 ; =0x000001FF
lsl r2, r2, #0x10
and r0, r1
lsl r1, r1, #0x10
and r1, r2
orr r1, r0
ldr r0, _0201F224 ; =0x04001014
str r1, [r0]
_0201F12A:
ldrh r0, [r4, #4]
mov r3, #0x40
tst r0, r3
beq _0201F192
add r0, r3, #0
add r0, #0xe4
ldrb r0, [r4, r0]
cmp r0, #0
bne _0201F158
ldr r1, _0201F204 ; =0x000001FF
add r3, #0xdc
add r2, r1, #0
sub r2, #0xdf
ldr r0, [r4, r3]
ldr r2, [r4, r2]
and r0, r1
lsl r2, r2, #0x10
lsl r1, r1, #0x10
and r1, r2
orr r1, r0
ldr r0, _0201F228 ; =0x04001018
str r1, [r0]
b _0201F192
_0201F158:
mov r0, #2
add r1, r3, #0
add r2, r3, #0
str r0, [sp]
add r1, #0xe8
add r2, #0xec
add r3, #0xf0
ldrh r1, [r4, r1]
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r0, sp, #0x18
bl sub_0201FECC
mov r3, #0x47
lsl r3, r3, #2
ldr r0, [r4, r3]
add r2, r3, #0
str r0, [sp]
add r0, r3, #4
ldr r0, [r4, r0]
add r2, #0x18
str r0, [sp, #4]
add r3, #0x1c
ldr r0, _0201F22C ; =0x04001020
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x18
bl sub_020CF0AC
_0201F192:
ldrh r0, [r4, #4]
mov r3, #0x80
tst r0, r3
beq _0201F200
add r0, r3, #0
add r0, #0xd0
ldrb r0, [r4, r0]
cmp r0, #0
bne _0201F1C6
add r3, #0xc8
ldr r1, [r4, r3]
ldr r0, _0201F204 ; =0x000001FF
add r2, r1, #0
add r1, r0, #0
sub r1, #0xb3
ldr r1, [r4, r1]
and r2, r0
lsl r1, r1, #0x10
lsl r0, r0, #0x10
and r0, r1
add r1, r2, #0
orr r1, r0
ldr r0, _0201F230 ; =0x0400101C
add sp, #0x48
str r1, [r0]
pop {r4, pc}
_0201F1C6:
mov r0, #2
add r1, r3, #0
add r2, r3, #0
str r0, [sp]
add r1, #0xd4
add r2, #0xd8
add r3, #0xdc
ldrh r1, [r4, r1]
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r0, sp, #8
bl sub_0201FECC
mov r3, #0x52
lsl r3, r3, #2
ldr r0, [r4, r3]
add r2, r3, #0
str r0, [sp]
add r0, r3, #4
ldr r0, [r4, r0]
add r2, #0x18
str r0, [sp, #4]
add r3, #0x1c
ldr r0, _0201F234 ; =0x04001030
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #8
bl sub_020CF0AC
_0201F200:
add sp, #0x48
pop {r4, pc}
.balign 4, 0
_0201F204: .word 0x000001FF
_0201F208: .word 0x04000010
_0201F20C: .word 0x04000014
_0201F210: .word 0x04000018
_0201F214: .word 0x04000020
_0201F218: .word 0x0400001C
_0201F21C: .word 0x04000030
_0201F220: .word 0x04001010
_0201F224: .word 0x04001014
_0201F228: .word 0x04001018
_0201F22C: .word 0x04001020
_0201F230: .word 0x0400101C
_0201F234: .word 0x04001030
thumb_func_end sub_0201EFCC
thumb_func_start sub_0201F238
sub_0201F238: ; 0x0201F238
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
add r1, r5, #0
mov r0, #0x2c
add r1, #8
mul r0, r4
add r0, r1, r0
add r1, r2, #0
add r2, r3, #0
bl sub_0201BE38
mov r0, #1
ldrh r1, [r5, #4]
lsl r0, r4
orr r0, r1
strh r0, [r5, #4]
pop {r3, r4, r5, pc}
thumb_func_end sub_0201F238
thumb_func_start sub_0201F25C
sub_0201F25C: ; 0x0201F25C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
add r1, r5, #0
mov r0, #0x2c
add r1, #8
mul r0, r4
add r0, r1, r0
add r1, r2, #0
add r2, r3, #0
bl sub_0201F280
mov r0, #1
ldrh r1, [r5, #4]
lsl r0, r4
orr r0, r1
strh r0, [r5, #4]
pop {r3, r4, r5, pc}
thumb_func_end sub_0201F25C
thumb_func_start sub_0201F280
sub_0201F280: ; 0x0201F280
cmp r1, #8
bhi _0201F2C8
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0201F290: ; jump table
.short _0201F2C8 - _0201F290 - 2 ; case 0
.short _0201F2C8 - _0201F290 - 2 ; case 1
.short _0201F2C8 - _0201F290 - 2 ; case 2
.short _0201F2A2 - _0201F290 - 2 ; case 3
.short _0201F2A6 - _0201F290 - 2 ; case 4
.short _0201F2AE - _0201F290 - 2 ; case 5
.short _0201F2B6 - _0201F290 - 2 ; case 6
.short _0201F2BA - _0201F290 - 2 ; case 7
.short _0201F2C2 - _0201F290 - 2 ; case 8
_0201F2A2:
str r2, [r0, #0x1c]
bx lr
_0201F2A6:
ldr r1, [r0, #0x1c]
add r1, r1, r2
str r1, [r0, #0x1c]
bx lr
_0201F2AE:
ldr r1, [r0, #0x1c]
sub r1, r1, r2
str r1, [r0, #0x1c]
bx lr
_0201F2B6:
str r2, [r0, #0x20]
bx lr
_0201F2BA:
ldr r1, [r0, #0x20]
add r1, r1, r2
str r1, [r0, #0x20]
bx lr
_0201F2C2:
ldr r1, [r0, #0x20]
sub r1, r1, r2
str r1, [r0, #0x20]
_0201F2C8:
bx lr
.balign 4, 0
thumb_func_end sub_0201F280
thumb_func_start sub_0201F2CC
sub_0201F2CC: ; 0x0201F2CC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
str r1, [sp]
add r6, r0, #0
str r2, [sp, #4]
ldr r0, [sp, #0x38]
str r3, [sp, #8]
str r0, [sp, #0x38]
ldr r0, [sp]
add r4, r6, #0
mov r1, #0x2c
add r5, r0, #0
mul r5, r1
add r4, #8
ldr r0, [r4, r5]
cmp r0, #0
bne _0201F2F4
add sp, #0x20
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0201F2F4:
add r0, r6, #0
str r0, [sp, #0x18]
add r0, #0x1c
str r0, [sp, #0x18]
ldr r3, [sp, #0x18]
ldr r0, [sp, #4]
ldr r1, [sp, #8]
add r2, r6, r5
lsl r0, r0, #0x15
lsl r1, r1, #0x15
ldrb r2, [r2, #0x1d]
ldrb r3, [r3, r5]
lsr r0, r0, #0x18
lsr r1, r1, #0x18
bl sub_0201C2F0
add r7, r0, #0
ldr r0, [sp]
bl sub_0201CB4C
str r0, [sp, #0x1c]
ldr r1, [sp, #4]
mov r0, #7
and r1, r0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x14]
ldr r1, [sp, #8]
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
add r0, r6, r5
ldrb r0, [r0, #0x1e]
cmp r0, #0
bne _0201F3B2
ldr r0, [r4, r5]
mov r1, #0x40
str r0, [sp, #0xc]
ldr r0, [r6]
bl AllocFromHeapAtEnd
add r4, r0, #0
lsl r0, r7, #1
ldr r1, [sp, #0xc]
mov ip, r0
ldrh r0, [r1, r0]
mov r3, #0
mov r7, #0xf
lsl r0, r0, #0x16
lsr r1, r0, #0x11
ldr r0, [sp, #0x1c]
add r2, r0, r1
_0201F35E:
ldrb r5, [r2, r3]
lsl r0, r3, #1
add r1, r4, r0
and r5, r7
strb r5, [r4, r0]
ldrb r0, [r2, r3]
asr r0, r0, #4
strb r0, [r1, #1]
add r0, r3, #1
lsl r0, r0, #0x18
lsr r3, r0, #0x18
cmp r3, #0x20
blo _0201F35E
ldr r2, [sp, #0xc]
mov r1, ip
ldrh r1, [r2, r1]
add r0, r6, #0
asr r2, r1, #0xa
mov r1, #3
and r1, r2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r4, #0
bl sub_0201F434
ldr r0, [sp, #0x10]
lsl r1, r0, #3
ldr r0, [sp, #0x14]
add r0, r0, r1
ldrb r5, [r4, r0]
add r0, r4, #0
bl FreeToHeap
ldr r0, [sp, #0x38]
ldrh r2, [r0]
mov r0, #1
add r1, r0, #0
lsl r1, r5
tst r1, r2
beq _0201F42A
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
_0201F3B2:
ldr r0, [sp, #0x18]
ldrb r0, [r0, r5]
cmp r0, #1
beq _0201F3FE
ldr r0, [r6]
ldr r4, [r4, r5]
mov r1, #0x40
bl AllocFromHeapAtEnd
lsl r7, r7, #1
ldrh r1, [r4, r7]
add r5, r0, #0
lsl r1, r1, #0x16
lsr r2, r1, #0x10
ldr r1, [sp, #0x1c]
add r1, r1, r2
mov r2, #0x40
bl memcpy
ldrh r1, [r4, r7]
add r0, r6, #0
asr r2, r1, #0xa
mov r1, #3
and r1, r2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r5, #0
bl sub_0201F434
ldr r0, [sp, #0x10]
lsl r1, r0, #3
ldr r0, [sp, #0x14]
add r0, r0, r1
ldrb r4, [r5, r0]
add r0, r5, #0
bl FreeToHeap
b _0201F412
_0201F3FE:
ldr r1, [r4, r5]
ldr r0, [sp, #0x10]
ldrb r1, [r1, r7]
lsl r0, r0, #3
lsl r2, r1, #6
ldr r1, [sp, #0x14]
add r1, r1, r2
add r1, r0, r1
ldr r0, [sp, #0x1c]
ldrb r4, [r0, r1]
_0201F412:
ldr r0, [sp, #0x38]
ldrh r2, [r0]
lsl r0, r2, #0x18
lsr r1, r0, #0x18
ldr r0, _0201F430 ; =0x0000FFFF
_0201F41C:
cmp r2, r0
beq _0201F42A
cmp r4, r1
bne _0201F41C
add sp, #0x20
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0201F42A:
mov r0, #0
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0201F430: .word 0x0000FFFF
thumb_func_end sub_0201F2CC
thumb_func_start sub_0201F434
sub_0201F434: ; 0x0201F434
push {r3, r4, r5, r6, r7, lr}
str r1, [sp]
ldr r1, [sp]
add r7, r2, #0
cmp r1, #0
beq _0201F4C0
ldr r0, [r0]
mov r1, #0x40
bl AllocFromHeapAtEnd
add r4, r0, #0
ldr r0, [sp]
mov r1, #1
tst r0, r1
beq _0201F482
mov r0, #0
mov r5, #7
_0201F456:
lsl r3, r0, #3
add r2, r7, r3
mov r1, #0
add r3, r4, r3
_0201F45E:
sub r6, r5, r1
ldrb r6, [r2, r6]
strb r6, [r3, r1]
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, #8
blo _0201F45E
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #8
blo _0201F456
add r0, r7, #0
add r1, r4, #0
mov r2, #0x40
bl memcpy
_0201F482:
ldr r0, [sp]
mov r1, #2
tst r0, r1
beq _0201F4BA
mov r5, #0
mov r6, #7
_0201F48E:
lsl r0, r5, #3
add r3, r4, r0
sub r0, r6, r5
lsl r0, r0, #3
add r2, r7, r0
mov r1, #8
_0201F49A:
ldrb r0, [r2]
add r2, r2, #1
strb r0, [r3]
add r3, r3, #1
sub r1, r1, #1
bne _0201F49A
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #8
blo _0201F48E
add r0, r7, #0
add r1, r4, #0
mov r2, #0x40
bl memcpy
_0201F4BA:
add r0, r4, #0
bl FreeToHeap
_0201F4C0:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0201F434