Files
Pokemon-Firered/asm/window.s
T
2017-12-17 02:56:44 -08:00

2040 lines
32 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start nullsub_6
nullsub_6: @ 8003B20
bx lr
thumb_func_end nullsub_6
thumb_func_start sub_8003B24
sub_8003B24: @ 8003B24
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
adds r5, r0, 0
movs r0, 0
mov r8, r0
ldr r4, _08003BB8 @ =gUnknown_3003E40
_08003B38:
mov r1, r8
lsls r0, r1, 24
lsrs r0, 24
bl GetBgTilemapBuffer
cmp r0, 0
beq _08003B48
ldr r0, _08003BBC @ =nullsub_6
_08003B48:
str r0, [r4]
adds r4, 0x4
movs r2, 0x1
add r8, r2
mov r0, r8
cmp r0, 0x3
ble _08003B38
ldr r0, _08003BC0 @ =gUnknown_81EA144
ldr r2, [r0]
ldr r3, [r0, 0x4]
ldr r1, _08003BC4 @ =gUnknown_20204B4
movs r0, 0
movs r4, 0x1F
mov r8, r4
_08003B64:
str r2, [r1]
str r3, [r1, 0x4]
str r0, [r1, 0x8]
adds r1, 0xC
movs r4, 0x1
negs r4, r4
add r8, r4
mov r4, r8
cmp r4, 0
bge _08003B64
movs r0, 0
mov r8, r0
movs r1, 0
str r1, [sp]
ldrb r7, [r5]
cmp r7, 0xFF
bne _08003B88
b _08003CC0
_08003B88:
adds r6, r5, 0
movs r2, 0
str r2, [sp, 0x4]
_08003B8E:
ldr r0, _08003BC8 @ =gUnknown_3003D8C
ldr r0, [r0]
cmp r0, 0x1
bne _08003BCC
ldrb r1, [r6, 0x3]
ldrb r0, [r6, 0x4]
adds r2, r1, 0
muls r2, r0
adds r0, r7, 0
movs r1, 0
movs r3, 0
bl sub_80014F0
str r0, [sp]
movs r0, 0x1
negs r0, r0
ldr r4, [sp]
cmp r4, r0
bne _08003BCC
_08003BB4:
movs r0, 0
b _08003CC8
.align 2, 0
_08003BB8: .4byte gUnknown_3003E40
_08003BBC: .4byte nullsub_6
_08003BC0: .4byte gUnknown_81EA144
_08003BC4: .4byte gUnknown_20204B4
_08003BC8: .4byte gUnknown_3003D8C
_08003BCC:
ldr r0, _08003C04 @ =gUnknown_3003E40
mov r9, r0
lsls r0, r7, 2
mov r2, r9
adds r1, r0, r2
ldr r1, [r1]
mov r10, r0
cmp r1, 0
bne _08003C2E
adds r0, r7, 0
movs r1, 0x8
bl GetBgAttribute
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _08003C08 @ =0x0000ffff
cmp r5, r0
beq _08003C2E
adds r0, r5, 0
bl Alloc
adds r4, r0, 0
cmp r4, 0
bne _08003C0C
bl FreeAllWindowBuffers
b _08003BB4
.align 2, 0
_08003C04: .4byte gUnknown_3003E40
_08003C08: .4byte 0x0000ffff
_08003C0C:
movs r1, 0
mov r3, r9
cmp r1, r5
bge _08003C20
movs r2, 0
_08003C16:
adds r0, r4, r1
strb r2, [r0]
adds r1, 0x1
cmp r1, r5
blt _08003C16
_08003C20:
mov r1, r10
adds r0, r1, r3
str r4, [r0]
adds r0, r7, 0
adds r1, r4, 0
bl SetBgTilemapBuffer
_08003C2E:
ldrb r1, [r6, 0x3]
ldrb r0, [r6, 0x4]
muls r0, r1
lsls r0, 21
lsrs r0, 16
bl Alloc
adds r4, r0, 0
cmp r4, 0
bne _08003C70
adds r0, r7, 0
bl sub_8004A34
lsls r0, 24
cmp r0, 0
bne _08003BB4
ldr r0, _08003C68 @ =gUnknown_3003E40
mov r2, r10
adds r5, r2, r0
ldr r1, [r5]
ldr r0, _08003C6C @ =nullsub_6
cmp r1, r0
beq _08003BB4
adds r0, r1, 0
bl Free
str r4, [r5]
b _08003BB4
.align 2, 0
_08003C68: .4byte gUnknown_3003E40
_08003C6C: .4byte nullsub_6
_08003C70:
ldr r1, _08003CD8 @ =gUnknown_20204B4
adds r0, r1, 0
adds r0, 0x8
ldr r2, [sp, 0x4]
adds r0, r2, r0
str r4, [r0]
adds r2, r1
ldr r0, [r6]
ldr r1, [r6, 0x4]
str r0, [r2]
str r1, [r2, 0x4]
ldr r0, _08003CDC @ =gUnknown_3003D8C
ldr r0, [r0]
cmp r0, 0x1
bne _08003CA6
mov r4, sp
ldrh r4, [r4]
strh r4, [r2, 0x6]
ldrb r0, [r6, 0x3]
ldrb r1, [r6, 0x4]
adds r2, r0, 0
muls r2, r1
adds r0, r7, 0
ldr r1, [sp]
movs r3, 0x1
bl sub_80014F0
_08003CA6:
adds r6, 0x8
ldr r0, [sp, 0x4]
adds r0, 0xC
str r0, [sp, 0x4]
movs r1, 0x1
add r8, r1
ldrb r7, [r6]
cmp r7, 0xFF
beq _08003CC0
mov r2, r8
cmp r2, 0x1F
bgt _08003CC0
b _08003B8E
_08003CC0:
ldr r1, _08003CE0 @ =gUnknown_3003E30
movs r0, 0
strb r0, [r1]
movs r0, 0x1
_08003CC8:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08003CD8: .4byte gUnknown_20204B4
_08003CDC: .4byte gUnknown_3003D8C
_08003CE0: .4byte gUnknown_3003E30
thumb_func_end sub_8003B24
thumb_func_start sub_8003CE4
sub_8003CE4: @ 8003CE4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r8, r0
movs r6, 0
ldr r1, _08003DD4 @ =gUnknown_20204B4
ldrb r0, [r1]
cmp r0, 0xFF
beq _08003D14
_08003CFC:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x1F
bhi _08003D14
lsls r0, r6, 1
adds r0, r6
lsls r0, 2
adds r0, r1
ldrb r0, [r0]
cmp r0, 0xFF
bne _08003CFC
_08003D14:
cmp r6, 0x20
beq _08003DCE
mov r0, r8
ldrb r7, [r0]
movs r1, 0
mov r9, r1
ldr r0, _08003DD8 @ =gUnknown_3003D8C
ldr r0, [r0]
cmp r0, 0x1
bne _08003D46
mov r2, r8
ldrb r1, [r2, 0x3]
ldrb r0, [r2, 0x4]
adds r2, r1, 0
muls r2, r0
adds r0, r7, 0
movs r1, 0
movs r3, 0
bl sub_80014F0
mov r9, r0
movs r0, 0x1
negs r0, r0
cmp r9, r0
beq _08003DCE
_08003D46:
ldr r3, _08003DDC @ =gUnknown_3003E40
mov r10, r3
lsls r0, r7, 2
adds r1, r0, r3
ldr r1, [r1]
str r0, [sp]
cmp r1, 0
bne _08003D96
adds r0, r7, 0
movs r1, 0x8
bl GetBgAttribute
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _08003DE0 @ =0x0000ffff
cmp r5, r0
beq _08003D96
adds r0, r5, 0
bl Alloc
adds r4, r0, 0
cmp r4, 0
beq _08003DCE
movs r1, 0
mov r3, r10
cmp r1, r5
bge _08003D88
movs r2, 0
_08003D7E:
adds r0, r4, r1
strb r2, [r0]
adds r1, 0x1
cmp r1, r5
blt _08003D7E
_08003D88:
ldr r1, [sp]
adds r0, r1, r3
str r4, [r0]
adds r0, r7, 0
adds r1, r4, 0
bl SetBgTilemapBuffer
_08003D96:
mov r2, r8
ldrb r1, [r2, 0x3]
ldrb r0, [r2, 0x4]
muls r0, r1
lsls r0, 21
lsrs r0, 16
bl Alloc
adds r4, r0, 0
cmp r4, 0
bne _08003DE8
adds r0, r7, 0
bl sub_8004A34
lsls r0, 24
cmp r0, 0
bne _08003DCE
ldr r0, _08003DDC @ =gUnknown_3003E40
ldr r3, [sp]
adds r5, r3, r0
ldr r1, [r5]
ldr r0, _08003DE4 @ =nullsub_6
cmp r1, r0
beq _08003DCE
adds r0, r1, 0
bl Free
str r4, [r5]
_08003DCE:
movs r0, 0xFF
b _08003E24
.align 2, 0
_08003DD4: .4byte gUnknown_20204B4
_08003DD8: .4byte gUnknown_3003D8C
_08003DDC: .4byte gUnknown_3003E40
_08003DE0: .4byte 0x0000ffff
_08003DE4: .4byte nullsub_6
_08003DE8:
ldr r2, _08003E34 @ =gUnknown_20204B4
lsls r1, r6, 1
adds r1, r6
lsls r1, 2
adds r0, r2, 0
adds r0, 0x8
adds r0, r1, r0
str r4, [r0]
adds r2, r1, r2
mov r3, r8
ldr r0, [r3]
ldr r1, [r3, 0x4]
str r0, [r2]
str r1, [r2, 0x4]
ldr r0, _08003E38 @ =gUnknown_3003D8C
ldr r0, [r0]
cmp r0, 0x1
bne _08003E22
mov r0, r9
strh r0, [r2, 0x6]
ldrb r0, [r2, 0x3]
ldrb r1, [r2, 0x4]
adds r2, r0, 0
muls r2, r1
adds r0, r7, 0
mov r1, r9
movs r3, 0x1
bl sub_80014F0
_08003E22:
adds r0, r6, 0
_08003E24:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08003E34: .4byte gUnknown_20204B4
_08003E38: .4byte gUnknown_3003D8C
thumb_func_end sub_8003CE4
thumb_func_start RemoveWindow
RemoveWindow: @ 8003E3C
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _08003EB8 @ =gUnknown_20204B4
lsls r0, r6, 1
adds r0, r6
lsls r0, 2
adds r4, r0, r1
ldrb r3, [r4]
adds r7, r3, 0
ldr r0, _08003EBC @ =gUnknown_3003D8C
ldr r0, [r0]
cmp r0, 0x1
bne _08003E68
ldrh r1, [r4, 0x6]
ldrb r2, [r4, 0x3]
ldrb r0, [r4, 0x4]
muls r2, r0
adds r0, r3, 0
movs r3, 0x2
bl sub_80014F0
_08003E68:
ldr r0, _08003EC0 @ =gUnknown_81EA144
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r4]
str r1, [r4, 0x4]
adds r0, r7, 0
bl sub_8004A34
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _08003E96
ldr r0, _08003EC4 @ =gUnknown_3003E40
lsls r1, r7, 2
adds r4, r1, r0
ldr r1, [r4]
ldr r0, _08003EC8 @ =nullsub_6
cmp r1, r0
beq _08003E96
adds r0, r1, 0
bl Free
str r5, [r4]
_08003E96:
ldr r1, _08003EB8 @ =gUnknown_20204B4
lsls r0, r6, 1
adds r0, r6
lsls r0, 2
adds r1, 0x8
adds r4, r0, r1
ldr r0, [r4]
cmp r0, 0
beq _08003EB0
bl Free
movs r0, 0
str r0, [r4]
_08003EB0:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08003EB8: .4byte gUnknown_20204B4
_08003EBC: .4byte gUnknown_3003D8C
_08003EC0: .4byte gUnknown_81EA144
_08003EC4: .4byte gUnknown_3003E40
_08003EC8: .4byte nullsub_6
thumb_func_end RemoveWindow
thumb_func_start FreeAllWindowBuffers
FreeAllWindowBuffers: @ 8003ECC
push {r4-r6,lr}
ldr r4, _08003F14 @ =gUnknown_3003E40
movs r5, 0x3
_08003ED2:
ldr r1, [r4]
cmp r1, 0
beq _08003EE8
ldr r0, _08003F18 @ =nullsub_6
cmp r1, r0
beq _08003EE8
adds r0, r1, 0
bl Free
movs r0, 0
str r0, [r4]
_08003EE8:
adds r4, 0x4
subs r5, 0x1
cmp r5, 0
bge _08003ED2
ldr r0, _08003F1C @ =gUnknown_20204B4
adds r4, r0, 0
adds r4, 0x8
movs r6, 0
movs r5, 0x1F
_08003EFA:
ldr r0, [r4]
cmp r0, 0
beq _08003F06
bl Free
str r6, [r4]
_08003F06:
adds r4, 0xC
subs r5, 0x1
cmp r5, 0
bge _08003EFA
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08003F14: .4byte gUnknown_3003E40
_08003F18: .4byte nullsub_6
_08003F1C: .4byte gUnknown_20204B4
thumb_func_end FreeAllWindowBuffers
thumb_func_start CopyWindowToVram
CopyWindowToVram: @ 8003F20
push {r4-r6,lr}
sub sp, 0xC
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r3, r1, 24
adds r5, r3, 0
ldr r2, _08003F58 @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
mov r0, sp
adds r1, r2
ldm r1!, {r2,r4,r6}
stm r0!, {r2,r4,r6}
mov r0, sp
ldrb r1, [r0, 0x3]
ldrb r0, [r0, 0x4]
muls r0, r1
lsls r0, 21
lsrs r4, r0, 16
cmp r3, 0x2
beq _08003F6C
cmp r3, 0x2
bgt _08003F5C
cmp r3, 0x1
beq _08003F62
b _08003F96
.align 2, 0
_08003F58: .4byte gUnknown_20204B4
_08003F5C:
cmp r5, 0x3
beq _08003F7E
b _08003F96
_08003F62:
mov r0, sp
ldrb r0, [r0]
bl CopyBgTilemapBufferToVram
b _08003F96
_08003F6C:
mov r0, sp
ldrb r0, [r0]
ldr r1, [sp, 0x8]
mov r2, sp
ldrh r3, [r2, 0x6]
adds r2, r4, 0
bl LoadBgTiles
b _08003F96
_08003F7E:
mov r0, sp
ldrb r0, [r0]
ldr r1, [sp, 0x8]
mov r2, sp
ldrh r3, [r2, 0x6]
adds r2, r4, 0
bl LoadBgTiles
mov r0, sp
ldrb r0, [r0]
bl CopyBgTilemapBufferToVram
_08003F96:
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end CopyWindowToVram
thumb_func_start PutWindowTilemap
PutWindowTilemap: @ 8003FA0
push {r4,lr}
sub sp, 0x1C
lsls r0, 24
lsrs r0, 24
ldr r2, _08003FFC @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
add r0, sp, 0x10
adds r1, r2
ldm r1!, {r2-r4}
stm r0!, {r2-r4}
add r0, sp, 0x10
ldrb r0, [r0]
movs r1, 0xA
bl GetBgAttribute
adds r1, r0, 0
add r0, sp, 0x10
ldrh r0, [r0, 0x6]
adds r1, r0
lsls r1, 16
lsrs r1, 16
add r0, sp, 0x10
ldrb r0, [r0]
add r2, sp, 0x10
ldrb r2, [r2, 0x1]
add r3, sp, 0x10
ldrb r3, [r3, 0x2]
add r4, sp, 0x10
ldrb r4, [r4, 0x3]
str r4, [sp]
add r4, sp, 0x10
ldrb r4, [r4, 0x4]
str r4, [sp, 0x4]
add r4, sp, 0x10
ldrb r4, [r4, 0x5]
str r4, [sp, 0x8]
movs r4, 0x1
str r4, [sp, 0xC]
bl WriteSequenceToBgTilemapBuffer
add sp, 0x1C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08003FFC: .4byte gUnknown_20204B4
thumb_func_end PutWindowTilemap
thumb_func_start PutWindowRectTilemapOverridePalette
PutWindowRectTilemapOverridePalette: @ 8004000
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x24
ldr r4, [sp, 0x44]
ldr r5, [sp, 0x48]
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
mov r10, r1
lsls r2, 24
lsrs r2, 24
mov r9, r2
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x1C]
lsls r4, 24
lsrs r4, 24
mov r8, r4
lsls r5, 24
lsrs r5, 24
str r5, [sp, 0x20]
ldr r2, _080040B4 @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
add r0, sp, 0x10
adds r1, r2
ldm r1!, {r2-r4}
stm r0!, {r2-r4}
add r0, sp, 0x10
ldrb r0, [r0]
movs r1, 0xA
bl GetBgAttribute
add r2, sp, 0x10
adds r1, r2, 0
ldrb r1, [r1, 0x3]
mov r3, r9
muls r3, r1
adds r1, r3, 0
ldrh r2, [r2, 0x6]
adds r1, r2
add r1, r10
adds r0, r1
lsls r0, 16
lsrs r6, r0, 16
movs r5, 0
cmp r5, r8
bge _080040A2
add r4, sp, 0x10
movs r7, 0x1
_0800406E:
ldrb r0, [r4]
ldrb r2, [r4, 0x1]
add r2, r10
lsls r2, 24
lsrs r2, 24
ldrb r3, [r4, 0x2]
add r3, r9
adds r3, r5
lsls r3, 24
lsrs r3, 24
ldr r1, [sp, 0x1C]
str r1, [sp]
str r7, [sp, 0x4]
ldr r1, [sp, 0x20]
str r1, [sp, 0x8]
str r7, [sp, 0xC]
adds r1, r6, 0
bl WriteSequenceToBgTilemapBuffer
ldrb r0, [r4, 0x3]
adds r0, r6, r0
lsls r0, 16
lsrs r6, r0, 16
adds r5, 0x1
cmp r5, r8
blt _0800406E
_080040A2:
add sp, 0x24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080040B4: .4byte gUnknown_20204B4
thumb_func_end PutWindowRectTilemapOverridePalette
thumb_func_start ClearWindowTilemap
ClearWindowTilemap: @ 80040B8
push {r4,lr}
sub sp, 0x18
lsls r0, 24
lsrs r0, 24
ldr r2, _08004100 @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
add r0, sp, 0xC
adds r1, r2
ldm r1!, {r2-r4}
stm r0!, {r2-r4}
add r0, sp, 0xC
ldrb r0, [r0]
ldr r1, _08004104 @ =gUnknown_3003E30
ldrb r1, [r1]
add r2, sp, 0xC
ldrb r2, [r2, 0x1]
add r3, sp, 0xC
ldrb r3, [r3, 0x2]
add r4, sp, 0xC
ldrb r4, [r4, 0x3]
str r4, [sp]
add r4, sp, 0xC
ldrb r4, [r4, 0x4]
str r4, [sp, 0x4]
add r4, sp, 0xC
ldrb r4, [r4, 0x5]
str r4, [sp, 0x8]
bl FillBgTilemapBufferRect
add sp, 0x18
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08004100: .4byte gUnknown_20204B4
_08004104: .4byte gUnknown_3003E30
thumb_func_end ClearWindowTilemap
thumb_func_start PutWindowRectTilemap
PutWindowRectTilemap: @ 8004108
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
ldr r4, [sp, 0x40]
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
mov r10, r1
lsls r2, 24
lsrs r2, 24
mov r9, r2
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x1C]
lsls r4, 24
lsrs r4, 24
mov r8, r4
ldr r2, _080041B4 @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
add r0, sp, 0x10
adds r1, r2
ldm r1!, {r2-r4}
stm r0!, {r2-r4}
add r0, sp, 0x10
ldrb r0, [r0]
movs r1, 0xA
bl GetBgAttribute
add r2, sp, 0x10
adds r1, r2, 0
ldrb r1, [r1, 0x3]
mov r3, r9
muls r3, r1
adds r1, r3, 0
ldrh r2, [r2, 0x6]
adds r1, r2
add r1, r10
adds r0, r1
lsls r0, 16
lsrs r6, r0, 16
movs r5, 0
cmp r5, r8
bge _080041A2
add r4, sp, 0x10
movs r7, 0x1
_0800416E:
ldrb r0, [r4]
ldrb r2, [r4, 0x1]
add r2, r10
lsls r2, 24
lsrs r2, 24
ldrb r3, [r4, 0x2]
add r3, r9
adds r3, r5
lsls r3, 24
lsrs r3, 24
ldr r1, [sp, 0x1C]
str r1, [sp]
str r7, [sp, 0x4]
ldrb r1, [r4, 0x5]
str r1, [sp, 0x8]
str r7, [sp, 0xC]
adds r1, r6, 0
bl WriteSequenceToBgTilemapBuffer
ldrb r0, [r4, 0x3]
adds r0, r6, r0
lsls r0, 16
lsrs r6, r0, 16
adds r5, 0x1
cmp r5, r8
blt _0800416E
_080041A2:
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080041B4: .4byte gUnknown_20204B4
thumb_func_end PutWindowRectTilemap
thumb_func_start BlitBitmapToWindow
BlitBitmapToWindow: @ 80041B8
push {r4,r5,lr}
sub sp, 0x18
ldr r4, [sp, 0x24]
ldr r5, [sp, 0x28]
lsls r0, 24
lsrs r0, 24
lsls r2, 16
lsrs r2, 16
lsls r3, 16
lsrs r3, 16
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
str r4, [sp]
str r5, [sp, 0x4]
str r2, [sp, 0x8]
str r3, [sp, 0xC]
str r4, [sp, 0x10]
str r5, [sp, 0x14]
movs r2, 0
movs r3, 0
bl BlitBitmapRectToWindow
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end BlitBitmapToWindow
thumb_func_start BlitBitmapRectToWindow
BlitBitmapRectToWindow: @ 80041F0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x24
ldr r4, [sp, 0x44]
ldr r5, [sp, 0x48]
ldr r6, [sp, 0x4C]
mov r8, r6
ldr r6, [sp, 0x50]
mov r9, r6
ldr r6, [sp, 0x54]
mov r10, r6
ldr r6, [sp, 0x58]
mov r12, r6
lsls r0, 24
lsrs r0, 24
lsls r2, 16
lsrs r2, 16
lsls r3, 16
lsrs r3, 16
lsls r4, 16
mov r6, r8
lsls r6, 16
lsrs r6, 16
mov r8, r6
mov r6, r9
lsls r6, 16
lsrs r6, 16
mov r9, r6
mov r6, r10
lsls r6, 16
lsrs r6, 16
mov r10, r6
mov r6, r12
lsls r6, 16
lsrs r6, 16
mov r12, r6
str r1, [sp, 0x14]
ldr r7, _080042A4 @ =0xffff0000
lsls r5, 16
ldr r6, _080042A8 @ =0x0000ffff
lsrs r4, 16
orrs r4, r5
str r4, [sp, 0x18]
ldr r1, _080042AC @ =gUnknown_20204B4
lsls r5, r0, 1
adds r5, r0
lsls r5, 2
adds r0, r1, 0
adds r0, 0x8
adds r0, r5, r0
ldr r0, [r0]
str r0, [sp, 0x1C]
adds r5, r1
ldrb r0, [r5, 0x3]
lsls r0, 3
add r1, sp, 0x1C
ldr r4, [r1, 0x4]
ands r4, r7
orrs r4, r0
str r4, [r1, 0x4]
ldrb r0, [r5, 0x4]
lsls r0, 19
ands r6, r4
orrs r6, r0
str r6, [r1, 0x4]
mov r0, r8
str r0, [sp]
mov r6, r9
str r6, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
mov r6, r12
str r6, [sp, 0xC]
movs r0, 0
str r0, [sp, 0x10]
add r0, sp, 0x14
bl BlitBitmapRect4Bit
add sp, 0x24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080042A4: .4byte 0xffff0000
_080042A8: .4byte 0x0000ffff
_080042AC: .4byte gUnknown_20204B4
thumb_func_end BlitBitmapRectToWindow
thumb_func_start BlitBitmapRectToWindowWithColorKey
BlitBitmapRectToWindowWithColorKey: @ 80042B0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
ldr r4, [sp, 0x48]
ldr r5, [sp, 0x4C]
ldr r6, [sp, 0x50]
mov r8, r6
ldr r7, [sp, 0x54]
mov r9, r7
ldr r6, [sp, 0x58]
mov r10, r6
ldr r7, [sp, 0x5C]
mov r12, r7
ldr r6, [sp, 0x60]
lsls r0, 24
lsrs r0, 24
lsls r2, 16
lsrs r2, 16
lsls r3, 16
lsrs r3, 16
lsls r4, 16
mov r7, r8
lsls r7, 16
lsrs r7, 16
mov r8, r7
mov r7, r9
lsls r7, 16
lsrs r7, 16
mov r9, r7
mov r7, r10
lsls r7, 16
lsrs r7, 16
mov r10, r7
mov r7, r12
lsls r7, 16
lsrs r7, 16
mov r12, r7
lsls r6, 24
lsrs r6, 24
str r6, [sp, 0x24]
str r1, [sp, 0x14]
lsls r5, 16
ldr r6, _0800436C @ =0x0000ffff
lsrs r4, 16
orrs r4, r5
str r4, [sp, 0x18]
ldr r1, _08004370 @ =gUnknown_20204B4
lsls r5, r0, 1
adds r5, r0
lsls r5, 2
adds r0, r1, 0
adds r0, 0x8
adds r0, r5, r0
ldr r0, [r0]
str r0, [sp, 0x1C]
adds r5, r1
ldrb r0, [r5, 0x3]
lsls r0, 3
add r1, sp, 0x1C
ldr r4, [r1, 0x4]
ldr r7, _08004374 @ =0xffff0000
ands r4, r7
orrs r4, r0
str r4, [r1, 0x4]
ldrb r0, [r5, 0x4]
lsls r0, 19
ands r6, r4
orrs r6, r0
str r6, [r1, 0x4]
mov r0, r8
str r0, [sp]
mov r6, r9
str r6, [sp, 0x4]
mov r7, r10
str r7, [sp, 0x8]
mov r0, r12
str r0, [sp, 0xC]
ldr r6, [sp, 0x24]
str r6, [sp, 0x10]
add r0, sp, 0x14
bl BlitBitmapRect4Bit
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800436C: .4byte 0x0000ffff
_08004370: .4byte gUnknown_20204B4
_08004374: .4byte 0xffff0000
thumb_func_end BlitBitmapRectToWindowWithColorKey
thumb_func_start FillWindowPixelRect
FillWindowPixelRect: @ 8004378
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x10
mov r9, r3
ldr r3, [sp, 0x28]
ldr r4, [sp, 0x2C]
mov r8, r4
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
lsls r2, 16
lsrs r2, 16
mov r4, r9
lsls r4, 16
lsrs r4, 16
mov r9, r4
lsls r3, 16
lsrs r3, 16
mov r4, r8
lsls r4, 16
lsrs r4, 16
mov r8, r4
ldr r5, _080043F8 @ =gUnknown_20204B4
lsls r4, r0, 1
adds r4, r0
lsls r4, 2
adds r0, r5, 0
adds r0, 0x8
adds r0, r4, r0
ldr r0, [r0]
str r0, [sp, 0x8]
adds r4, r5
ldrb r0, [r4, 0x3]
lsls r0, 3
ldr r6, _080043FC @ =0xffff0000
ldr r5, [sp, 0xC]
ands r5, r6
orrs r5, r0
str r5, [sp, 0xC]
ldrb r4, [r4, 0x4]
lsls r4, 19
ldr r0, _08004400 @ =0x0000ffff
ands r0, r5
orrs r0, r4
str r0, [sp, 0xC]
mov r0, r8
str r0, [sp]
str r1, [sp, 0x4]
add r0, sp, 0x8
adds r1, r2, 0
mov r2, r9
bl FillBitmapRect4Bit
add sp, 0x10
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080043F8: .4byte gUnknown_20204B4
_080043FC: .4byte 0xffff0000
_08004400: .4byte 0x0000ffff
thumb_func_end FillWindowPixelRect
thumb_func_start CopyToWindowPixelBuffer
CopyToWindowPixelBuffer: @ 8004404
push {r4-r6,lr}
adds r6, r1, 0
lsls r0, 24
lsrs r4, r0, 24
lsls r5, r2, 16
lsls r3, 16
lsrs r2, r3, 16
cmp r5, 0
beq _08004438
ldr r1, _08004434 @ =gUnknown_20204B4
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
adds r1, 0x8
adds r0, r1
lsls r2, 5
ldr r1, [r0]
adds r1, r2
lsrs r2, r5, 17
adds r0, r6, 0
bl CpuSet
b _08004450
.align 2, 0
_08004434: .4byte gUnknown_20204B4
_08004438:
ldr r1, _08004458 @ =gUnknown_20204B4
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
adds r1, 0x8
adds r0, r1
lsls r2, 5
ldr r1, [r0]
adds r1, r2
adds r0, r6, 0
bl LZ77UnCompWram
_08004450:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08004458: .4byte gUnknown_20204B4
thumb_func_end CopyToWindowPixelBuffer
thumb_func_start FillWindowPixelBuffer
FillWindowPixelBuffer: @ 800445C
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
ldr r5, _080044A4 @ =gUnknown_20204B4
lsls r4, r0, 1
adds r4, r0
lsls r4, 2
adds r0, r4, r5
ldrb r2, [r0, 0x3]
ldrb r0, [r0, 0x4]
muls r2, r0
lsls r0, r1, 24
lsls r3, r1, 16
orrs r0, r3
lsls r3, r1, 8
orrs r0, r3
orrs r0, r1
str r0, [sp]
adds r5, 0x8
adds r4, r5
ldr r1, [r4]
lsls r2, 3
movs r0, 0x80
lsls r0, 17
orrs r2, r0
mov r0, sp
bl CpuFastSet
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080044A4: .4byte gUnknown_20204B4
thumb_func_end FillWindowPixelBuffer
thumb_func_start ScrollWindow
ScrollWindow: @ 80044A8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r2, 24
lsrs r2, 24
str r2, [sp]
lsls r3, 24
lsrs r3, 24
ldr r2, _08004544 @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r4, r1, r2
adds r2, 0x8
adds r1, r2
ldr r5, [r1]
lsls r7, r3, 24
lsls r0, r3, 16
orrs r7, r0
lsls r0, r3, 8
orrs r7, r0
orrs r7, r3
ldr r1, [r4]
ldr r2, [r4, 0x4]
ldrb r3, [r4, 0x4]
lsrs r0, r1, 24
muls r0, r3
lsls r6, r0, 5
lsrs r1, 24
mov r12, r1
mov r0, r8
cmp r0, 0x1
bne _080044FC
b _080046B2
_080044FC:
cmp r0, 0x1
ble _08004502
b _0800485A
_08004502:
cmp r0, 0
beq _08004508
b _0800485A
_08004508:
movs r4, 0
cmp r4, r6
blt _08004510
b _0800485A
_08004510:
movs r1, 0x8
negs r1, r1
mov r9, r1
movs r2, 0x7
mov r8, r2
mov r10, r5
_0800451C:
ldr r3, [sp]
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
adds r0, r3, 0
mov r2, r8
ands r0, r2
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004548
adds r0, r5, r1
ldr r0, [r0]
mov r1, r10
str r0, [r1]
b _0800454C
.align 2, 0
_08004544: .4byte gUnknown_20204B4
_08004548:
mov r2, r10
str r7, [r2]
_0800454C:
adds r3, 0x1
adds r2, r4, 0x4
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004578
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _0800457C
_08004578:
adds r0, r5, r2
str r7, [r0]
_0800457C:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x8
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _080045AA
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _080045AE
_080045AA:
adds r0, r5, r2
str r7, [r0]
_080045AE:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0xC
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _080045DC
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _080045E0
_080045DC:
adds r0, r5, r2
str r7, [r0]
_080045E0:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x10
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _0800460E
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _08004612
_0800460E:
adds r0, r5, r2
str r7, [r0]
_08004612:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x14
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004640
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _08004644
_08004640:
adds r0, r5, r2
str r7, [r0]
_08004644:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x18
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004672
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _08004676
_08004672:
adds r0, r5, r2
str r7, [r0]
_08004676:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x1C
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
adds r0, r1, 0
mov r1, r8
ands r3, r1
orrs r0, r3
lsls r0, 2
adds r1, r4, r0
cmp r1, r6
bge _080046A0
adds r0, r5, r2
adds r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _080046A4
_080046A0:
adds r0, r5, r2
str r7, [r0]
_080046A4:
movs r2, 0x20
add r10, r2
adds r4, 0x20
cmp r4, r6
bge _080046B0
b _0800451C
_080046B0:
b _0800485A
_080046B2:
subs r0, r6, 0x4
adds r5, r0
movs r4, 0
cmp r4, r6
blt _080046BE
b _0800485A
_080046BE:
movs r0, 0x8
negs r0, r0
mov r9, r0
movs r1, 0x7
mov r8, r1
mov r10, r5
_080046CA:
ldr r3, [sp]
adds r0, r3, 0
mov r2, r9
ands r0, r2
mov r1, r12
muls r1, r0
adds r0, r3, 0
mov r2, r8
ands r0, r2
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _080046F0
subs r0, r5, r1
ldr r0, [r0]
mov r1, r10
str r0, [r1]
b _080046F4
_080046F0:
mov r2, r10
str r7, [r2]
_080046F4:
adds r3, 0x1
adds r2, r4, 0x4
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004720
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _08004724
_08004720:
subs r0, r5, r2
str r7, [r0]
_08004724:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x8
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004752
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _08004756
_08004752:
subs r0, r5, r2
str r7, [r0]
_08004756:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0xC
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _08004784
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _08004788
_08004784:
subs r0, r5, r2
str r7, [r0]
_08004788:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x10
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _080047B6
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _080047BA
_080047B6:
subs r0, r5, r2
str r7, [r0]
_080047BA:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x14
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _080047E8
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _080047EC
_080047E8:
subs r0, r5, r2
str r7, [r0]
_080047EC:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x18
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
str r1, [sp, 0x4]
adds r0, r3, 0
mov r1, r8
ands r0, r1
ldr r1, [sp, 0x4]
orrs r1, r0
lsls r1, 2
adds r1, r4, r1
cmp r1, r6
bge _0800481A
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _0800481E
_0800481A:
subs r0, r5, r2
str r7, [r0]
_0800481E:
adds r3, 0x1
adds r2, r4, 0
adds r2, 0x1C
adds r0, r3, 0
mov r1, r9
ands r0, r1
mov r1, r12
muls r1, r0
adds r0, r1, 0
mov r1, r8
ands r3, r1
orrs r0, r3
lsls r0, 2
adds r1, r4, r0
cmp r1, r6
bge _08004848
subs r0, r5, r2
subs r1, r5, r1
ldr r1, [r1]
str r1, [r0]
b _0800484C
_08004848:
subs r0, r5, r2
str r7, [r0]
_0800484C:
movs r2, 0x20
negs r2, r2
add r10, r2
adds r4, 0x20
cmp r4, r6
bge _0800485A
b _080046CA
_0800485A:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end ScrollWindow
thumb_func_start CallWindowFunction
CallWindowFunction: @ 800486C
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x8
mov r8, r1
lsls r0, 24
lsrs r0, 24
ldr r2, _080048B8 @ =gUnknown_20204B4
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldr r5, [r1]
ldr r6, [r1, 0x4]
ldrb r0, [r1]
lsrs r1, r5, 8
lsls r1, 24
lsrs r1, 24
lsrs r2, r5, 16
lsls r2, 24
lsrs r2, 24
lsrs r3, r5, 24
lsls r4, r6, 24
lsrs r4, 24
str r4, [sp]
lsrs r4, r6, 8
lsls r4, 24
lsrs r4, 24
str r4, [sp, 0x4]
bl _call_via_r8
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080048B8: .4byte gUnknown_20204B4
thumb_func_end CallWindowFunction
thumb_func_start sub_80048BC
sub_80048BC: @ 80048BC
push {lr}
lsls r0, 24
lsrs r3, r0, 24
lsls r1, 24
lsrs r0, r1, 24
cmp r0, 0x7
bhi _08004948
lsls r0, 2
ldr r1, _080048D4 @ =_080048D8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080048D4: .4byte _080048D8
.align 2, 0
_080048D8:
.4byte _08004948
.4byte _080048F8
.4byte _0800490C
.4byte _08004948
.4byte _08004948
.4byte _08004920
.4byte _08004934
.4byte _08004948
_080048F8:
ldr r1, _08004908 @ =gUnknown_20204B4
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
strb r2, [r0, 0x1]
movs r0, 0
b _0800494A
.align 2, 0
_08004908: .4byte gUnknown_20204B4
_0800490C:
ldr r1, _0800491C @ =gUnknown_20204B4
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
strb r2, [r0, 0x2]
movs r0, 0
b _0800494A
.align 2, 0
_0800491C: .4byte gUnknown_20204B4
_08004920:
ldr r1, _08004930 @ =gUnknown_20204B4
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
strb r2, [r0, 0x5]
movs r0, 0
b _0800494A
.align 2, 0
_08004930: .4byte gUnknown_20204B4
_08004934:
ldr r1, _08004944 @ =gUnknown_20204B4
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
strh r2, [r0, 0x6]
movs r0, 0
b _0800494A
.align 2, 0
_08004944: .4byte gUnknown_20204B4
_08004948:
movs r0, 0x1
_0800494A:
pop {r1}
bx r1
thumb_func_end sub_80048BC
thumb_func_start sub_8004950
sub_8004950: @ 8004950
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r0, r1, 24
cmp r0, 0x7
bhi _08004A2C
lsls r0, 2
ldr r1, _08004968 @ =_0800496C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08004968: .4byte _0800496C
.align 2, 0
_0800496C:
.4byte _0800498C
.4byte _080049A0
.4byte _080049B4
.4byte _080049C8
.4byte _080049DC
.4byte _080049F0
.4byte _08004A04
.4byte _08004A18
_0800498C:
ldr r0, _0800499C @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1]
b _08004A2E
.align 2, 0
_0800499C: .4byte gUnknown_20204B4
_080049A0:
ldr r0, _080049B0 @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x1]
b _08004A2E
.align 2, 0
_080049B0: .4byte gUnknown_20204B4
_080049B4:
ldr r0, _080049C4 @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x2]
b _08004A2E
.align 2, 0
_080049C4: .4byte gUnknown_20204B4
_080049C8:
ldr r0, _080049D8 @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x3]
b _08004A2E
.align 2, 0
_080049D8: .4byte gUnknown_20204B4
_080049DC:
ldr r0, _080049EC @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x4]
b _08004A2E
.align 2, 0
_080049EC: .4byte gUnknown_20204B4
_080049F0:
ldr r0, _08004A00 @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0x5]
b _08004A2E
.align 2, 0
_08004A00: .4byte gUnknown_20204B4
_08004A04:
ldr r0, _08004A14 @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0x6]
b _08004A2E
.align 2, 0
_08004A14: .4byte gUnknown_20204B4
_08004A18:
ldr r0, _08004A28 @ =gUnknown_20204B4
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r0, 0x8
adds r1, r0
ldr r0, [r1]
b _08004A2E
.align 2, 0
_08004A28: .4byte gUnknown_20204B4
_08004A2C:
movs r0, 0
_08004A2E:
pop {r1}
bx r1
thumb_func_end sub_8004950
thumb_func_start sub_8004A34
sub_8004A34: @ 8004A34
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r3, 0
ldr r2, _08004A5C @ =gUnknown_20204B4
movs r1, 0x1F
_08004A40:
ldrb r0, [r2]
cmp r0, r4
bne _08004A4C
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
_08004A4C:
adds r2, 0xC
subs r1, 0x1
cmp r1, 0
bge _08004A40
adds r0, r3, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08004A5C: .4byte gUnknown_20204B4
thumb_func_end sub_8004A34
.align 2, 0 @ Don't pad with nop.