pokefirered/asm/text_printer.s
2017-12-17 03:12:04 -08:00

2071 lines
32 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start SetFontsPointer
SetFontsPointer: @ 8002C1C
ldr r1, _08002C24 @ =gUnknown_3003D90
str r0, [r1]
bx lr
.align 2, 0
_08002C24: .4byte gUnknown_3003D90
thumb_func_end SetFontsPointer
thumb_func_start DeactivateAllTextPrinters
DeactivateAllTextPrinters: @ 8002C28
push {lr}
ldr r1, _08002C40 @ =gUnknown_2020034
movs r2, 0
ldr r3, _08002C44 @ =0x0000045c
adds r0, r1, r3
_08002C32:
strb r2, [r0, 0x1B]
subs r0, 0x24
cmp r0, r1
bge _08002C32
pop {r0}
bx r0
.align 2, 0
_08002C40: .4byte gUnknown_2020034
_08002C44: .4byte 0x0000045c
thumb_func_end DeactivateAllTextPrinters
thumb_func_start PrintTextOnWindow
PrintTextOnWindow: @ 8002C48
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
ldr r4, [sp, 0x28]
ldr r5, [sp, 0x2C]
ldr r7, [sp, 0x30]
lsls r1, 24
lsrs r1, 24
lsls r3, 24
lsrs r3, 24
lsls r4, 24
lsrs r4, 24
lsls r5, 24
lsrs r5, 24
mov r8, r5
str r2, [sp]
mov r2, sp
strb r0, [r2, 0x4]
mov r0, sp
strb r1, [r0, 0x5]
strb r3, [r0, 0x6]
strb r4, [r0, 0x7]
strb r3, [r0, 0x8]
strb r4, [r0, 0x9]
ldr r0, _08002CF0 @ =gUnknown_3003D90
ldr r0, [r0]
lsls r3, r1, 1
adds r3, r1
lsls r3, 2
adds r3, r0
ldrb r0, [r3, 0x6]
strb r0, [r2, 0xA]
mov r1, sp
ldrb r0, [r3, 0x7]
strb r0, [r1, 0xB]
mov r5, sp
ldrb r1, [r3, 0x8]
lsls r1, 28
movs r6, 0xF
lsrs r1, 28
ldrb r4, [r5, 0xC]
movs r2, 0x10
negs r2, r2
adds r0, r2, 0
ands r0, r4
orrs r0, r1
strb r0, [r5, 0xC]
mov r4, sp
ldrb r1, [r3, 0x8]
lsrs r1, 4
lsls r1, 4
ands r0, r6
orrs r0, r1
strb r0, [r4, 0xC]
ldrb r0, [r3, 0x9]
lsls r0, 28
lsrs r0, 28
adds r1, r6, 0
ands r1, r0
ldrb r0, [r4, 0xD]
ands r2, r0
orrs r2, r1
strb r2, [r4, 0xD]
mov r1, sp
ldrb r0, [r3, 0x9]
lsrs r0, 4
lsls r0, 4
ands r2, r6
orrs r2, r0
strb r2, [r1, 0xD]
mov r0, sp
mov r1, r8
adds r2, r7, 0
bl AddTextPrinter
lsls r0, 16
lsrs r0, 16
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08002CF0: .4byte gUnknown_3003D90
thumb_func_end PrintTextOnWindow
thumb_func_start AddTextPrinter
AddTextPrinter: @ 8002CF4
push {r4-r7,lr}
adds r6, r0, 0
mov r12, r2
lsls r1, 24
lsrs r5, r1, 24
ldr r0, _08002D0C @ =gUnknown_3003D90
ldr r0, [r0]
cmp r0, 0
bne _08002D10
movs r0, 0
b _08002DD8
.align 2, 0
_08002D0C: .4byte gUnknown_3003D90
_08002D10:
ldr r0, _08002D88 @ =gUnknown_2020010
movs r2, 0
movs r1, 0x1
strb r1, [r0, 0x1B]
strb r2, [r0, 0x1C]
strb r5, [r0, 0x1D]
strb r2, [r0, 0x1E]
strb r2, [r0, 0x1F]
adds r4, r0, 0
movs r1, 0x6
adds r0, 0x1A
_08002D26:
strb r2, [r0]
subs r0, 0x1
subs r1, 0x1
cmp r1, 0
bge _08002D26
adds r1, r4, 0
adds r0, r6, 0
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r0, [r0]
str r0, [r1]
mov r0, r12
str r0, [r4, 0x10]
adds r0, r4, 0
adds r0, 0x20
movs r1, 0
strb r1, [r0]
adds r0, 0x1
strb r1, [r0]
ldrb r0, [r6, 0xC]
lsrs r0, 4
ldrb r2, [r6, 0xD]
lsls r1, r2, 28
lsrs r1, 28
lsrs r2, 4
bl sub_8002EA8
cmp r5, 0xFF
beq _08002D90
cmp r5, 0
beq _08002D90
ldrb r0, [r4, 0x1D]
subs r0, 0x1
strb r0, [r4, 0x1D]
ldr r2, _08002D8C @ =gUnknown_2020034
ldrb r0, [r6, 0x4]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r2
adds r0, r4, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r4,r7}
stm r1!, {r2,r4,r7}
b _08002DD6
.align 2, 0
_08002D88: .4byte gUnknown_2020010
_08002D8C: .4byte gUnknown_2020034
_08002D90:
ldr r1, _08002D9C @ =gUnknown_2020010
movs r0, 0
strb r0, [r1, 0x1D]
movs r4, 0
ldr r7, _08002DA0 @ =0x000003ff
b _08002DAA
.align 2, 0
_08002D9C: .4byte gUnknown_2020010
_08002DA0: .4byte 0x000003ff
_08002DA4:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
_08002DAA:
cmp r4, r7
bhi _08002DB8
ldr r0, _08002DE0 @ =gUnknown_2020010
bl RenderFont
cmp r0, 0x1
bne _08002DA4
_08002DB8:
cmp r5, 0xFF
beq _08002DC6
ldr r0, _08002DE0 @ =gUnknown_2020010
ldrb r0, [r0, 0x4]
movs r1, 0x2
bl CopyWindowToVram
_08002DC6:
ldr r2, _08002DE4 @ =gUnknown_2020034
ldrb r1, [r6, 0x4]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x1B]
_08002DD6:
movs r0, 0x1
_08002DD8:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08002DE0: .4byte gUnknown_2020010
_08002DE4: .4byte gUnknown_2020034
thumb_func_end AddTextPrinter
thumb_func_start sub_8002DE8
sub_8002DE8: @ 8002DE8
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _08002E18 @ =gUnknown_2020034
movs r6, 0
adds r5, r0, 0x4
mov r8, r0
movs r7, 0x1F
_08002DF8:
ldrb r0, [r5, 0x17]
cmp r0, 0
beq _08002E4C
mov r0, r8
bl RenderFont
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x1
beq _08002E48
cmp r4, 0x1
bgt _08002E1C
cmp r4, 0
beq _08002E22
b _08002E4C
.align 2, 0
_08002E18: .4byte gUnknown_2020034
_08002E1C:
cmp r4, 0x3
beq _08002E2A
b _08002E4C
_08002E22:
ldrb r0, [r5]
movs r1, 0x2
bl CopyWindowToVram
_08002E2A:
ldr r1, _08002E44 @ =gUnknown_2020034
adds r0, r1, 0
adds r0, 0x10
adds r0, r6, r0
ldr r2, [r0]
cmp r2, 0
beq _08002E4C
adds r0, r6, r1
adds r1, r4, 0
bl _call_via_r2
b _08002E4C
.align 2, 0
_08002E44: .4byte gUnknown_2020034
_08002E48:
movs r0, 0
strb r0, [r5, 0x17]
_08002E4C:
adds r6, 0x24
adds r5, 0x24
movs r0, 0x24
add r8, r0
subs r7, 0x1
cmp r7, 0
bge _08002DF8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8002DE8
thumb_func_start IsTextPrinterActive
IsTextPrinterActive: @ 8002E64
lsls r0, 24
lsrs r0, 24
ldr r2, _08002E78 @ =gUnknown_2020034
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x1B]
bx lr
.align 2, 0
_08002E78: .4byte gUnknown_2020034
thumb_func_end IsTextPrinterActive
thumb_func_start RenderFont
RenderFont: @ 8002E7C
push {r4,lr}
adds r4, r0, 0
_08002E80:
ldrb r1, [r4, 0x5]
ldr r0, _08002EA4 @ =gUnknown_3003D90
ldr r2, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
beq _08002E80
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08002EA4: .4byte gUnknown_3003D90
thumb_func_end RenderFont
thumb_func_start sub_8002EA8
sub_8002EA8: @ 8002EA8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
str r1, [sp]
str r0, [sp, 0x4]
str r2, [sp, 0x8]
ldr r3, _08002F4C @ =gUnknown_3000AE2
strh r1, [r3]
ldr r1, _08002F50 @ =gUnknown_3000AE4
strh r0, [r1]
ldr r0, _08002F54 @ =gUnknown_3000AE6
strh r2, [r0]
movs r0, 0
mov r12, r0
movs r1, 0
_08002ED8:
movs r2, 0
lsls r0, r1, 2
adds r1, 0x1
mov r10, r1
add r0, sp
mov r8, r0
_08002EE4:
movs r1, 0
lsls r0, r2, 2
adds r2, 0x1
mov r9, r2
add r0, sp
str r0, [sp, 0xC]
_08002EF0:
lsls r0, r1, 2
adds r6, r1, 0x1
mov r1, sp
adds r4, r1, r0
mov r5, sp
mov r7, r12
lsls r0, r7, 1
ldr r1, _08002F58 @ =gUnknown_3000A40
adds r2, r0, r1
movs r3, 0x2
_08002F04:
ldm r5!, {r1}
lsls r1, 12
ldr r0, [r4]
lsls r0, 8
orrs r1, r0
ldr r7, [sp, 0xC]
ldr r0, [r7]
lsls r0, 4
orrs r1, r0
mov r7, r8
ldr r0, [r7]
orrs r0, r1
strh r0, [r2]
adds r2, 0x2
movs r0, 0x1
add r12, r0
subs r3, 0x1
cmp r3, 0
bge _08002F04
adds r1, r6, 0
cmp r1, 0x2
ble _08002EF0
mov r2, r9
cmp r2, 0x2
ble _08002EE4
mov r1, r10
cmp r1, 0x2
ble _08002ED8
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08002F4C: .4byte gUnknown_3000AE2
_08002F50: .4byte gUnknown_3000AE4
_08002F54: .4byte gUnknown_3000AE6
_08002F58: .4byte gUnknown_3000A40
thumb_func_end sub_8002EA8
thumb_func_start SaveTextColors
SaveTextColors: @ 8002F5C
ldr r3, _08002F70 @ =gUnknown_3000AE2
ldrh r3, [r3]
strb r3, [r1]
ldr r1, _08002F74 @ =gUnknown_3000AE4
ldrh r1, [r1]
strb r1, [r0]
ldr r0, _08002F78 @ =gUnknown_3000AE6
ldrh r0, [r0]
strb r0, [r2]
bx lr
.align 2, 0
_08002F70: .4byte gUnknown_3000AE2
_08002F74: .4byte gUnknown_3000AE4
_08002F78: .4byte gUnknown_3000AE6
thumb_func_end SaveTextColors
thumb_func_start RestoreTextColors
RestoreTextColors: @ 8002F7C
push {lr}
ldrb r0, [r0]
ldrb r1, [r1]
ldrb r2, [r2]
bl sub_8002EA8
pop {r0}
bx r0
thumb_func_end RestoreTextColors
thumb_func_start sub_8002F8C
sub_8002F8C: @ 8002F8C
push {r4,r5,lr}
adds r2, r0, 0
movs r3, 0
ldr r5, _08002FA4 @ =gUnknown_3000A40
ldr r4, _08002FA8 @ =gUnknown_81EA044
_08002F96:
lsls r0, r3, 31
cmp r0, 0
beq _08002FAC
ldrb r0, [r2]
adds r2, 0x2
b _08002FB0
.align 2, 0
_08002FA4: .4byte gUnknown_3000A40
_08002FA8: .4byte gUnknown_81EA044
_08002FAC:
ldrh r0, [r2]
lsrs r0, 8
_08002FB0:
adds r0, r4
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x2
adds r3, 0x1
cmp r3, 0xF
ble _08002F96
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8002F8C
thumb_func_start sub_8002FCC
sub_8002FCC: @ 8002FCC
push {lr}
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
cmp r0, 0x1
beq _08003000
cmp r0, 0x1
bgt _08002FE2
cmp r0, 0
beq _08002FE8
b _0800300C
_08002FE2:
cmp r1, 0x2
beq _08002FF4
b _0800300C
_08002FE8:
ldr r0, _08002FF0 @ =gUnknown_3000AE4
ldrb r0, [r0]
b _0800300E
.align 2, 0
_08002FF0: .4byte gUnknown_3000AE4
_08002FF4:
ldr r0, _08002FFC @ =gUnknown_3000AE2
ldrb r0, [r0]
b _0800300E
.align 2, 0
_08002FFC: .4byte gUnknown_3000AE2
_08003000:
ldr r0, _08003008 @ =gUnknown_3000AE6
ldrb r0, [r0]
b _0800300E
.align 2, 0
_08003008: .4byte gUnknown_3000AE6
_0800300C:
movs r0, 0
_0800300E:
pop {r1}
bx r1
thumb_func_end sub_8002FCC
thumb_func_start sub_8003014
sub_8003014: @ 8003014
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x6C
adds r6, r0, 0
ldr r0, _08003084 @ =gUnknown_20204B4
mov r9, r0
ldrb r1, [r6, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
mov r1, r9
adds r2, r0, r1
ldrb r0, [r2, 0x3]
lsls r0, 3
ldrb r1, [r6, 0x8]
subs r1, r0, r1
ldr r3, _08003088 @ =gUnknown_3003DA0
mov r8, r3
mov r0, r8
adds r0, 0x80
ldrb r7, [r0]
cmp r1, r7
bge _0800304A
adds r7, r1, 0
_0800304A:
ldrb r0, [r2, 0x4]
lsls r0, 3
ldrb r4, [r6, 0x9]
subs r0, r4
adds r1, r3, 0
adds r1, 0x81
ldrb r1, [r1]
mov r10, r1
adds r5, r4, 0
cmp r0, r10
bge _08003062
mov r10, r0
_08003062:
movs r1, 0
cmp r7, 0x8
ble _0800306A
movs r1, 0x1
_0800306A:
mov r0, r10
cmp r0, 0x8
ble _08003074
movs r0, 0x2
orrs r1, r0
_08003074:
cmp r1, 0x1
beq _08003134
cmp r1, 0x1
bgt _0800308C
cmp r1, 0
beq _0800309A
b _080035FC
.align 2, 0
_08003084: .4byte gUnknown_20204B4
_08003088: .4byte gUnknown_3003DA0
_0800308C:
cmp r1, 0x2
bne _08003092
b _08003268
_08003092:
cmp r1, 0x3
bne _08003098
b _080033A0
_08003098:
b _080035FC
_0800309A:
adds r2, r3, 0
movs r1, 0
adds r0, r5, 0
cmp r1, r10
blt _080030A6
b _080035FC
_080030A6:
ldm r2!, {r3}
str r3, [sp]
movs r5, 0
ldrb r4, [r6, 0x8]
str r2, [sp, 0x28]
adds r1, 0x1
str r1, [sp, 0x20]
adds r1, r0, 0x1
str r1, [sp, 0x24]
cmp r5, r7
bge _08003124
ldr r2, _08003130 @ =gUnknown_20204B4
mov r12, r2
asrs r3, r0, 3
mov r9, r3
lsls r0, 29
lsrs r0, 27
mov r8, r0
_080030CA:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
mov r1, r12
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
add r3, r12
ldrb r0, [r3, 0x3]
mov r2, r9
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
ldr r2, [sp]
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _0800311C
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_0800311C:
adds r5, 0x1
adds r4, 0x1
cmp r5, r7
blt _080030CA
_08003124:
ldr r2, [sp, 0x28]
ldr r1, [sp, 0x20]
ldr r0, [sp, 0x24]
cmp r1, r10
blt _080030A6
b _080035FC
.align 2, 0
_08003130: .4byte gUnknown_20204B4
_08003134:
movs r2, 0
adds r1, r5, 0
cmp r2, r10
bge _080031BE
_0800313C:
ldm r3!, {r0}
mov r9, r0
movs r5, 0
ldrb r4, [r6, 0x8]
lsls r0, r1, 29
str r3, [sp, 0x38]
adds r2, 0x1
str r2, [sp, 0x30]
adds r2, r1, 0x1
str r2, [sp, 0x34]
asrs r1, 3
mov r12, r1
lsrs r0, 27
mov r8, r0
_08003158:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
ldr r1, _08003260 @ =gUnknown_20204B4
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
ldr r0, _08003260 @ =gUnknown_20204B4
adds r3, r0
ldrb r0, [r3, 0x3]
mov r2, r12
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
mov r2, r9
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _080031AC
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_080031AC:
adds r5, 0x1
adds r4, 0x1
cmp r5, 0x7
ble _08003158
ldr r3, [sp, 0x38]
ldr r2, [sp, 0x30]
ldr r1, [sp, 0x34]
cmp r2, r10
blt _0800313C
_080031BE:
ldr r3, _08003264 @ =gUnknown_3003DC0
movs r2, 0
ldrb r1, [r6, 0x9]
cmp r2, r10
blt _080031CA
b _080035FC
_080031CA:
subs r7, 0x8
str r7, [sp, 0x64]
str r7, [sp, 0x4]
_080031D0:
ldm r3!, {r0}
mov r12, r0
movs r5, 0
ldrb r0, [r6, 0x8]
adds r4, r0, 0
adds r4, 0x8
str r3, [sp, 0x50]
adds r2, 0x1
str r2, [sp, 0x48]
adds r2, r1, 0x1
str r2, [sp, 0x4C]
ldr r3, [sp, 0x4]
cmp r5, r3
bge _08003254
ldr r7, _08003260 @ =gUnknown_20204B4
asrs r0, r1, 3
mov r9, r0
lsls r0, r1, 29
lsrs r0, 27
mov r8, r0
_080031F8:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
adds r1, r7, 0
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
adds r3, r7
ldrb r0, [r3, 0x3]
mov r2, r9
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
mov r2, r12
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _0800324A
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_0800324A:
adds r5, 0x1
adds r4, 0x1
ldr r1, [sp, 0x64]
cmp r5, r1
blt _080031F8
_08003254:
ldr r3, [sp, 0x50]
ldr r2, [sp, 0x48]
ldr r1, [sp, 0x4C]
cmp r2, r10
blt _080031D0
b _080035FC
.align 2, 0
_08003260: .4byte gUnknown_20204B4
_08003264: .4byte gUnknown_3003DC0
_08003268:
adds r1, r3, 0
movs r2, 0
adds r0, r5, 0
mov r3, r10
subs r3, 0x8
str r3, [sp, 0x68]
_08003274:
ldm r1!, {r3}
mov r10, r3
movs r5, 0
ldrb r4, [r6, 0x8]
str r1, [sp, 0x60]
adds r2, 0x1
str r2, [sp, 0x58]
adds r1, r0, 0x1
str r1, [sp, 0x5C]
cmp r5, r7
bge _080032F2
ldr r2, _08003398 @ =gUnknown_20204B4
mov r12, r2
asrs r3, r0, 3
mov r9, r3
lsls r0, 29
lsrs r0, 27
mov r8, r0
_08003298:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
mov r1, r12
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
add r3, r12
ldrb r0, [r3, 0x3]
mov r2, r9
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
mov r2, r10
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _080032EA
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_080032EA:
adds r5, 0x1
adds r4, 0x1
cmp r5, r7
blt _08003298
_080032F2:
ldr r1, [sp, 0x60]
ldr r2, [sp, 0x58]
ldr r0, [sp, 0x5C]
cmp r2, 0x7
ble _08003274
ldr r2, _0800339C @ =gUnknown_3003DE0
movs r1, 0
ldrb r0, [r6, 0x9]
adds r0, 0x8
ldr r3, [sp, 0x68]
cmp r1, r3
blt _0800330C
b _080035FC
_0800330C:
ldm r2!, {r3}
mov r10, r3
movs r5, 0
ldrb r4, [r6, 0x8]
str r2, [sp, 0x1C]
adds r1, 0x1
str r1, [sp, 0x14]
adds r1, r0, 0x1
str r1, [sp, 0x18]
cmp r5, r7
bge _0800338A
ldr r2, _08003398 @ =gUnknown_20204B4
mov r12, r2
asrs r3, r0, 3
mov r9, r3
lsls r0, 29
lsrs r0, 27
mov r8, r0
_08003330:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
mov r1, r12
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
add r3, r12
ldrb r0, [r3, 0x3]
mov r2, r9
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
mov r2, r10
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003382
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_08003382:
adds r5, 0x1
adds r4, 0x1
cmp r5, r7
blt _08003330
_0800338A:
ldr r2, [sp, 0x1C]
ldr r1, [sp, 0x14]
ldr r0, [sp, 0x18]
ldr r3, [sp, 0x68]
cmp r1, r3
blt _0800330C
b _080035FC
.align 2, 0
_08003398: .4byte gUnknown_20204B4
_0800339C: .4byte gUnknown_3003DE0
_080033A0:
mov r2, r8
movs r3, 0
adds r1, r4, 0
subs r7, 0x8
str r7, [sp, 0x64]
mov r0, r10
subs r0, 0x8
str r0, [sp, 0x68]
_080033B0:
ldm r2!, {r0}
mov r9, r0
movs r5, 0
ldrb r4, [r6, 0x8]
lsls r0, r1, 29
str r2, [sp, 0x2C]
adds r3, 0x1
mov r10, r3
adds r2, r1, 0x1
mov r12, r2
asrs r1, 3
mov r8, r1
lsrs r7, r0, 27
_080033CA:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
ldr r1, _080034D0 @ =gUnknown_20204B4
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
ldr r0, _080034D0 @ =gUnknown_20204B4
adds r3, r0
ldrb r0, [r3, 0x3]
mov r2, r8
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
adds r3, r1, r7
lsls r0, r5, 2
mov r2, r9
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _0800341C
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_0800341C:
adds r5, 0x1
adds r4, 0x1
cmp r5, 0x7
ble _080033CA
ldr r2, [sp, 0x2C]
mov r3, r10
mov r1, r12
cmp r3, 0x7
ble _080033B0
ldr r3, _080034D4 @ =gUnknown_3003DC0
movs r2, 0
ldrb r1, [r6, 0x9]
ldr r0, [sp, 0x64]
mov r12, r0
_08003438:
ldm r3!, {r0}
mov r10, r0
movs r5, 0
ldrb r0, [r6, 0x8]
adds r4, r0, 0
adds r4, 0x8
str r3, [sp, 0x44]
adds r2, 0x1
str r2, [sp, 0x3C]
adds r2, r1, 0x1
str r2, [sp, 0x40]
cmp r5, r12
bge _080034B8
ldr r7, _080034D0 @ =gUnknown_20204B4
asrs r3, r1, 3
mov r9, r3
lsls r0, r1, 29
lsrs r0, 27
mov r8, r0
_0800345E:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
adds r1, r7, 0
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
adds r3, r7
ldrb r0, [r3, 0x3]
mov r2, r9
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
mov r2, r10
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _080034B0
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_080034B0:
adds r5, 0x1
adds r4, 0x1
cmp r5, r12
blt _0800345E
_080034B8:
ldr r3, [sp, 0x44]
ldr r2, [sp, 0x3C]
ldr r1, [sp, 0x40]
cmp r2, 0x7
ble _08003438
ldr r3, _080034D8 @ =gUnknown_3003DE0
movs r2, 0
ldrb r0, [r6, 0x9]
adds r1, r0, 0
adds r1, 0x8
b _08003556
.align 2, 0
_080034D0: .4byte gUnknown_20204B4
_080034D4: .4byte gUnknown_3003DC0
_080034D8: .4byte gUnknown_3003DE0
_080034DC:
ldm r3!, {r0}
mov r9, r0
movs r5, 0
ldrb r4, [r6, 0x8]
lsls r0, r1, 29
str r3, [sp, 0x54]
adds r2, 0x1
mov r10, r2
adds r2, r1, 0x1
mov r12, r2
asrs r1, 3
mov r8, r1
lsrs r7, r0, 27
_080034F6:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
ldr r1, _0800360C @ =gUnknown_20204B4
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
ldr r0, _0800360C @ =gUnknown_20204B4
adds r3, r0
ldrb r0, [r3, 0x3]
mov r2, r8
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
adds r3, r1, r7
lsls r0, r5, 2
mov r2, r9
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003548
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_08003548:
adds r5, 0x1
adds r4, 0x1
cmp r5, 0x7
ble _080034F6
ldr r3, [sp, 0x54]
mov r2, r10
mov r1, r12
_08003556:
ldr r0, [sp, 0x68]
cmp r2, r0
blt _080034DC
ldr r3, _08003610 @ =gUnknown_3003E00
movs r2, 0
ldrb r0, [r6, 0x9]
adds r1, r0, 0
adds r1, 0x8
ldr r0, [sp, 0x68]
cmp r2, r0
bge _080035FC
ldr r0, [sp, 0x64]
mov r10, r0
_08003570:
ldm r3!, {r0}
mov r12, r0
movs r5, 0
ldrb r0, [r6, 0x8]
adds r4, r0, 0
adds r4, 0x8
str r3, [sp, 0x10]
adds r2, 0x1
str r2, [sp, 0x8]
adds r2, r1, 0x1
str r2, [sp, 0xC]
cmp r5, r10
bge _080035F0
ldr r7, _0800360C @ =gUnknown_20204B4
asrs r3, r1, 3
mov r9, r3
lsls r0, r1, 29
lsrs r0, 27
mov r8, r0
_08003596:
ldrb r0, [r6, 0x4]
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
adds r1, r7, 0
adds r1, 0x8
adds r1, r3, r1
asrs r2, r4, 1
movs r0, 0x3
ands r2, r0
ldr r1, [r1]
adds r1, r2
asrs r0, r4, 3
lsls r0, 5
adds r1, r0
adds r3, r7
ldrb r0, [r3, 0x3]
mov r2, r9
muls r2, r0
adds r0, r2, 0
lsls r0, 5
adds r1, r0
mov r0, r8
adds r3, r1, r0
lsls r0, r5, 2
mov r2, r12
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _080035E8
movs r0, 0x1
ands r0, r4
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r3]
ands r1, r0
orrs r2, r1
strb r2, [r3]
_080035E8:
adds r5, 0x1
adds r4, 0x1
cmp r5, r10
blt _08003596
_080035F0:
ldr r3, [sp, 0x10]
ldr r2, [sp, 0x8]
ldr r1, [sp, 0xC]
ldr r0, [sp, 0x68]
cmp r2, r0
blt _08003570
_080035FC:
add sp, 0x6C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800360C: .4byte gUnknown_20204B4
_08003610: .4byte gUnknown_3003E00
thumb_func_end sub_8003014
thumb_func_start sub_8003614
sub_8003614: @ 8003614
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x40
str r0, [sp]
ldr r0, [sp, 0x60]
lsls r1, 16
lsrs r1, 16
str r1, [sp, 0x4]
lsls r2, 16
lsrs r2, 16
str r2, [sp, 0x8]
lsls r3, 16
lsrs r3, 16
lsls r0, 16
lsrs r4, r0, 16
subs r1, r3, r1
ldr r5, _08003688 @ =gUnknown_3003DA0
adds r0, r5, 0
adds r0, 0x80
ldrb r7, [r0]
adds r2, r5, 0
cmp r1, r7
bge _0800364A
adds r7, r1, 0
_0800364A:
ldr r1, [sp, 0x8]
subs r0, r4, r1
adds r1, r2, 0
adds r1, 0x81
ldrb r1, [r1]
str r1, [sp, 0xC]
cmp r0, r1
bge _0800365C
str r0, [sp, 0xC]
_0800365C:
movs r1, 0
movs r0, 0x7
ands r0, r3
adds r0, r3, r0
lsrs r0, 3
str r0, [sp, 0x10]
cmp r7, 0x8
ble _0800366E
movs r1, 0x1
_0800366E:
ldr r3, [sp, 0xC]
cmp r3, 0x8
ble _08003678
movs r0, 0x2
orrs r1, r0
_08003678:
cmp r1, 0x1
beq _08003718
cmp r1, 0x1
bgt _0800368C
cmp r1, 0
beq _0800369A
b _08003B00
.align 2, 0
_08003688: .4byte gUnknown_3003DA0
_0800368C:
cmp r1, 0x2
bne _08003692
b _0800381C
_08003692:
cmp r1, 0x3
bne _08003698
b _0800391C
_08003698:
b _08003B00
_0800369A:
adds r1, r2, 0
movs r0, 0
ldr r2, [sp, 0x8]
ldr r3, [sp, 0xC]
cmp r0, r3
blt _080036A8
b _08003B00
_080036A8:
ldm r1!, {r3}
mov r8, r3
movs r5, 0
ldr r3, [sp, 0x4]
str r1, [sp, 0x28]
adds r0, 0x1
mov r9, r0
adds r0, r2, 0x1
mov r10, r0
cmp r5, r7
bge _0800370A
asrs r0, r2, 3
ldr r1, [sp, 0x10]
muls r0, r1
lsls r0, 5
mov r12, r0
lsls r0, r2, 29
lsrs r6, r0, 27
_080036CC:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r2, [sp]
adds r1, r2, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
add r1, r12
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003702
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_08003702:
adds r5, 0x1
adds r3, 0x1
cmp r5, r7
blt _080036CC
_0800370A:
ldr r1, [sp, 0x28]
mov r0, r9
mov r2, r10
ldr r3, [sp, 0xC]
cmp r0, r3
blt _080036A8
b _08003B00
_08003718:
adds r5, r2, 0
movs r4, 0
ldr r2, [sp, 0x8]
ldr r0, [sp, 0xC]
cmp r4, r0
bge _0800378E
_08003724:
ldm r5!, {r1}
mov r8, r1
movs r6, 0
ldr r3, [sp, 0x4]
asrs r0, r2, 3
lsls r1, r2, 29
str r5, [sp, 0x2C]
adds r4, 0x1
mov r9, r4
adds r2, 0x1
mov r10, r2
ldr r2, [sp, 0x10]
muls r0, r2
lsls r0, 5
mov r12, r0
lsrs r5, r1, 27
_08003744:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r0, [sp]
adds r1, r0, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
add r1, r12
adds r4, r1, r5
lsls r0, r6, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _0800377A
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_0800377A:
adds r6, 0x1
adds r3, 0x1
cmp r6, 0x7
ble _08003744
ldr r5, [sp, 0x2C]
mov r4, r9
mov r2, r10
ldr r1, [sp, 0xC]
cmp r4, r1
blt _08003724
_0800378E:
ldr r1, _08003818 @ =gUnknown_3003DC0
movs r0, 0
ldr r2, [sp, 0x8]
ldr r3, [sp, 0xC]
cmp r0, r3
blt _0800379C
b _08003B00
_0800379C:
subs r7, 0x8
str r7, [sp, 0x18]
str r7, [sp, 0x14]
_080037A2:
ldm r1!, {r3}
mov r8, r3
movs r5, 0
ldr r3, [sp, 0x4]
adds r3, 0x8
mov r12, r1
adds r0, 0x1
mov r9, r0
adds r0, r2, 0x1
mov r10, r0
ldr r1, [sp, 0x14]
cmp r5, r1
bge _08003808
asrs r0, r2, 3
ldr r1, [sp, 0x10]
muls r0, r1
lsls r7, r0, 5
lsls r0, r2, 29
lsrs r6, r0, 27
_080037C8:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r2, [sp]
adds r1, r2, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
adds r1, r7
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _080037FE
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_080037FE:
adds r5, 0x1
adds r3, 0x1
ldr r0, [sp, 0x18]
cmp r5, r0
blt _080037C8
_08003808:
mov r1, r12
mov r0, r9
mov r2, r10
ldr r3, [sp, 0xC]
cmp r0, r3
blt _080037A2
b _08003B00
.align 2, 0
_08003818: .4byte gUnknown_3003DC0
_0800381C:
adds r0, r2, 0
movs r1, 0
ldr r2, [sp, 0x8]
adds r3, r2, 0
adds r3, 0x8
str r3, [sp, 0x1C]
ldr r3, [sp, 0xC]
subs r3, 0x8
str r3, [sp, 0x20]
_0800382E:
ldm r0!, {r3}
mov r8, r3
movs r5, 0
ldr r3, [sp, 0x4]
str r0, [sp, 0x34]
adds r1, 0x1
mov r9, r1
adds r0, r2, 0x1
mov r10, r0
cmp r5, r7
bge _08003890
asrs r0, r2, 3
ldr r1, [sp, 0x10]
muls r0, r1
lsls r0, 5
mov r12, r0
lsls r0, r2, 29
lsrs r6, r0, 27
_08003852:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r2, [sp]
adds r1, r2, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
add r1, r12
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003888
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_08003888:
adds r5, 0x1
adds r3, 0x1
cmp r5, r7
blt _08003852
_08003890:
ldr r0, [sp, 0x34]
mov r1, r9
mov r2, r10
cmp r1, 0x7
ble _0800382E
ldr r2, _08003918 @ =gUnknown_3003DE0
movs r0, 0
ldr r1, [sp, 0x1C]
ldr r3, [sp, 0x20]
cmp r0, r3
blt _080038A8
b _08003B00
_080038A8:
ldm r2!, {r3}
mov r8, r3
movs r5, 0
ldr r3, [sp, 0x4]
str r2, [sp, 0x38]
adds r0, 0x1
mov r9, r0
adds r0, r1, 0x1
mov r10, r0
cmp r5, r7
bge _0800390A
asrs r0, r1, 3
ldr r2, [sp, 0x10]
muls r0, r2
lsls r0, 5
mov r12, r0
lsls r0, r1, 29
lsrs r6, r0, 27
_080038CC:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r0, [sp]
adds r1, r0, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
add r1, r12
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003902
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_08003902:
adds r5, 0x1
adds r3, 0x1
cmp r5, r7
blt _080038CC
_0800390A:
ldr r2, [sp, 0x38]
mov r0, r9
mov r1, r10
ldr r3, [sp, 0x20]
cmp r0, r3
blt _080038A8
b _08003B00
.align 2, 0
_08003918: .4byte gUnknown_3003DE0
_0800391C:
movs r2, 0
ldr r4, [sp, 0x8]
ldr r0, [sp, 0x4]
adds r0, 0x8
str r0, [sp, 0x3C]
subs r7, 0x8
str r7, [sp, 0x18]
adds r1, r4, 0
adds r1, 0x8
str r1, [sp, 0x1C]
ldr r3, [sp, 0xC]
subs r3, 0x8
str r3, [sp, 0x20]
_08003936:
ldm r5!, {r0}
mov r8, r0
movs r6, 0
ldr r3, [sp, 0x4]
asrs r0, r4, 3
lsls r1, r4, 29
mov r10, r5
adds r2, 0x1
mov r12, r2
adds r4, 0x1
mov r9, r4
ldr r2, [sp, 0x10]
muls r0, r2
lsls r7, r0, 5
lsrs r5, r1, 27
_08003954:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r0, [sp]
adds r1, r0, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
adds r1, r7
adds r4, r1, r5
lsls r0, r6, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _0800398A
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_0800398A:
adds r6, 0x1
adds r3, 0x1
cmp r6, 0x7
ble _08003954
mov r5, r10
mov r2, r12
mov r4, r9
cmp r2, 0x7
ble _08003936
ldr r1, _08003B10 @ =gUnknown_3003DC0
movs r0, 0
ldr r2, [sp, 0x8]
ldr r3, [sp, 0x18]
mov r12, r3
_080039A6:
ldm r1!, {r3}
mov r8, r3
movs r5, 0
ldr r3, [sp, 0x3C]
str r1, [sp, 0x24]
adds r0, 0x1
mov r9, r0
adds r0, r2, 0x1
mov r10, r0
cmp r5, r12
bge _08003A06
asrs r0, r2, 3
ldr r1, [sp, 0x10]
muls r0, r1
lsls r7, r0, 5
lsls r0, r2, 29
lsrs r6, r0, 27
_080039C8:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r2, [sp]
adds r1, r2, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
adds r1, r7
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _080039FE
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_080039FE:
adds r5, 0x1
adds r3, 0x1
cmp r5, r12
blt _080039C8
_08003A06:
ldr r1, [sp, 0x24]
mov r0, r9
mov r2, r10
cmp r0, 0x7
ble _080039A6
ldr r6, _08003B14 @ =gUnknown_3003DE0
movs r4, 0
ldr r2, [sp, 0x1C]
ldr r3, [sp, 0x20]
cmp r4, r3
bge _08003A84
_08003A1C:
ldm r6!, {r0}
mov r8, r0
movs r5, 0
ldr r3, [sp, 0x4]
asrs r0, r2, 3
lsls r1, r2, 29
mov r12, r6
adds r4, 0x1
mov r9, r4
adds r2, 0x1
mov r10, r2
ldr r2, [sp, 0x10]
muls r0, r2
lsls r7, r0, 5
lsrs r6, r1, 27
_08003A3A:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r0, [sp]
adds r1, r0, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
adds r1, r7
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003A70
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_08003A70:
adds r5, 0x1
adds r3, 0x1
cmp r5, 0x7
ble _08003A3A
mov r6, r12
mov r4, r9
mov r2, r10
ldr r1, [sp, 0x20]
cmp r4, r1
blt _08003A1C
_08003A84:
ldr r2, _08003B18 @ =gUnknown_3003E00
movs r0, 0
ldr r1, [sp, 0x1C]
ldr r3, [sp, 0x20]
cmp r0, r3
bge _08003B00
ldr r3, [sp, 0x18]
mov r12, r3
_08003A94:
ldm r2!, {r3}
mov r8, r3
movs r5, 0
ldr r3, [sp, 0x3C]
str r2, [sp, 0x30]
adds r0, 0x1
mov r9, r0
adds r0, r1, 0x1
mov r10, r0
cmp r5, r12
bge _08003AF4
asrs r0, r1, 3
ldr r2, [sp, 0x10]
muls r0, r2
lsls r7, r0, 5
lsls r0, r1, 29
lsrs r6, r0, 27
_08003AB6:
asrs r1, r3, 1
movs r0, 0x3
ands r1, r0
ldr r0, [sp]
adds r1, r0, r1
asrs r0, r3, 3
lsls r0, 5
adds r1, r0
adds r1, r7
adds r4, r1, r6
lsls r0, r5, 2
mov r2, r8
lsrs r2, r0
movs r0, 0xF
ands r2, r0
cmp r2, 0
beq _08003AEC
movs r0, 0x1
ands r0, r3
lsls r0, 2
lsls r2, r0
movs r1, 0xF0
asrs r1, r0
ldrb r0, [r4]
ands r1, r0
orrs r2, r1
strb r2, [r4]
_08003AEC:
adds r5, 0x1
adds r3, 0x1
cmp r5, r12
blt _08003AB6
_08003AF4:
ldr r2, [sp, 0x30]
mov r0, r9
mov r1, r10
ldr r3, [sp, 0x20]
cmp r0, r3
blt _08003A94
_08003B00:
add sp, 0x40
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08003B10: .4byte gUnknown_3003DC0
_08003B14: .4byte gUnknown_3003DE0
_08003B18: .4byte gUnknown_3003E00
thumb_func_end sub_8003614
thumb_func_start nullsub_5
nullsub_5: @ 8003B1C
bx lr
thumb_func_end nullsub_5
.align 2, 0 @ Don't pad with nop.