pokefirered/asm/text_printer.s
2017-12-19 15:19:41 -08:00

1518 lines
22 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start CopyGlyphToWindow
CopyGlyphToWindow: @ 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 @ =gWindows
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 @ =gGlyphInfo
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 gWindows
_08003088: .4byte gGlyphInfo
_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 @ =gWindows
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 gWindows
_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 @ =gWindows
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 @ =gWindows
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 @ =gGlyphInfo + 0x20
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 @ =gWindows
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 gWindows
_08003264: .4byte gGlyphInfo + 0x20
_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 @ =gWindows
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 @ =gGlyphInfo + 0x40
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 @ =gWindows
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 gWindows
_0800339C: .4byte gGlyphInfo + 0x40
_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 @ =gWindows
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 @ =gWindows
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 @ =gGlyphInfo + 0x20
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 @ =gWindows
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 @ =gGlyphInfo + 0x40
movs r2, 0
ldrb r0, [r6, 0x9]
adds r1, r0, 0
adds r1, 0x8
b _08003556
.align 2, 0
_080034D0: .4byte gWindows
_080034D4: .4byte gGlyphInfo + 0x20
_080034D8: .4byte gGlyphInfo + 0x40
_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 @ =gWindows
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 @ =gWindows
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 @ =gGlyphInfo + 0x60
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 @ =gWindows
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 gWindows
_08003610: .4byte gGlyphInfo + 0x60
thumb_func_end CopyGlyphToWindow
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 @ =gGlyphInfo
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 gGlyphInfo
_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 @ =gGlyphInfo + 0x20
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 gGlyphInfo + 0x20
_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 @ =gGlyphInfo + 0x40
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 gGlyphInfo + 0x40
_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 @ =gGlyphInfo + 0x20
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 @ =gGlyphInfo + 0x40
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 @ =gGlyphInfo + 0x60
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 gGlyphInfo + 0x20
_08003B14: .4byte gGlyphInfo + 0x40
_08003B18: .4byte gGlyphInfo + 0x60
thumb_func_end sub_8003614
thumb_func_start ClearTextSpan
ClearTextSpan: @ 8003B1C
bx lr
thumb_func_end ClearTextSpan
.align 2, 0 @ Don't pad with nop.